{"version":3,"file":"ngx-matomo-client-testing.mjs","sources":["../../../projects/ngx-matomo-client/testing/matomo-testing-instance.ts","../../../projects/ngx-matomo-client/testing/matomo-testing-tracker.ts","../../../projects/ngx-matomo-client/testing/providers.ts","../../../projects/ngx-matomo-client/testing/matomo-testing.module.ts","../../../projects/ngx-matomo-client/testing/ngx-matomo-client-testing.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MatomoECommerceItem, MatomoInstance } from 'ngx-matomo-client/core';\n\nexport const MATOMO_TESTING_INSTANCE = new InjectionToken<MatomoInstance>(\n  'MATOMO_TESTING_INSTANCE',\n  {\n    factory: () => new MatomoTestingInstance(),\n  },\n);\n\n/**\n * No-op implementation of {@link MatomoInstance}\n */\nexport class MatomoTestingInstance implements MatomoInstance {\n  areCookiesEnabled(): boolean {\n    return false;\n  }\n\n  getAttributionCampaignKeyword(): string {\n    return '';\n  }\n\n  getAttributionCampaignName(): string {\n    return '';\n  }\n\n  getAttributionInfo(): string[] {\n    return [];\n  }\n\n  getAttributionReferrerTimestamp(): string {\n    return '';\n  }\n\n  getAttributionReferrerUrl(): string {\n    return '';\n  }\n\n  getCrossDomainLinkingUrlParameter(): string {\n    return '';\n  }\n\n  getCurrentUrl(): string {\n    return '';\n  }\n\n  getCustomDimension(_customDimensionId: number): string {\n    return '';\n  }\n\n  getCustomPagePerformanceTiming(): string {\n    return '';\n  }\n\n  getCustomVariable(_index: number, _scope: string): string {\n    return '';\n  }\n\n  getEcommerceItems(): MatomoECommerceItem[] {\n    return [];\n  }\n\n  getExcludedReferrers(): string[] {\n    return [];\n  }\n\n  getLinkTrackingTimer(): number {\n    return 0;\n  }\n\n  getMatomoUrl(): string {\n    return '';\n  }\n\n  getPageViewId(): string {\n    return '';\n  }\n\n  getCustomData(): unknown {\n    return undefined;\n  }\n\n  getPiwikUrl(): string {\n    return '';\n  }\n\n  getRememberedConsent(): number | string {\n    return '';\n  }\n\n  getRememberedCookieConsent(): number | string {\n    return '';\n  }\n\n  getUserId(): string {\n    return '';\n  }\n\n  getVisitorId(): string {\n    return '';\n  }\n\n  getVisitorInfo(): unknown[] {\n    return [];\n  }\n\n  hasCookies(): boolean {\n    return false;\n  }\n\n  hasRememberedConsent(): boolean {\n    return false;\n  }\n\n  isConsentRequired(): boolean {\n    return false;\n  }\n\n  isUserOptedOut(): boolean {\n    return false;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatomoInstance, MatomoTracker } from 'ngx-matomo-client/core';\nimport { MATOMO_TESTING_INSTANCE } from './matomo-testing-instance';\n\n/**\n * No-op implementation of {@link MatomoTracker}\n *\n * All commands are memoized and can later be retrieved using\n * {@link getAllCommands getAllCommands()} or {@link getCommand getCommand(index)}.\n *\n * All <i>getter</i> methods will immediately resolve to an <i>empty value</i>.\n * This can be customized by setting a custom Matomo instance with {@link setMatomoInstance setMatomoInstance()}.\n */\n@Injectable()\nexport class MatomoTestingTracker extends MatomoTracker {\n  #fakeInstance: MatomoInstance = inject(MATOMO_TESTING_INSTANCE);\n  #paq: unknown[][] = [];\n\n  /** Retrieve the current Matomo instance */\n  getMatomoInstance(): MatomoInstance {\n    return this.#fakeInstance;\n  }\n\n  /**\n   * Set the current matomo instance\n   *\n   * @deprecated will be removed in a future version and injected from DI token `MATOMO_TESTING_INSTANCE` instead\n   * @see MATOMO_TESTING_INSTANCE\n   */\n  setMatomoInstance(instance: MatomoInstance) {\n    this.#fakeInstance = instance;\n  }\n\n  /** Retrieve all memoized commands */\n  getAllCommands(): unknown[][] {\n    return [...this.#paq];\n  }\n\n  /** Retrieve nth memoized command */\n  getCommand(index: number): unknown[] | undefined {\n    return this.#paq[index];\n  }\n\n  /** Clear all memoized commands */\n  reset() {\n    this.#paq = [];\n  }\n\n  protected push(command: unknown[]): void {\n    this.#paq.push(command);\n  }\n\n  protected async pushFn<T>(fn: (matomo: MatomoInstance) => T): Promise<T> {\n    return fn(this.#fakeInstance);\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport {\n  MATOMO_CONFIGURATION,\n  MatomoConfiguration,\n  MatomoFeature,\n  MatomoTracker,\n  provideMatomo,\n  ɵprovideTestingTracker as provideTestingTracker,\n} from 'ngx-matomo-client/core';\nimport { MatomoTestingTracker } from './matomo-testing-tracker';\n\n/**\n * Set up a no-op Matomo tracker. Useful for testing scenario.\n *\n *\n * Testing tracker is available as both {@link MatomoTracker} and {@link MatomoTestingTracker} injection tokens,\n * the latter allowing to customize testing behavior (see {@link MatomoTestingTracker}).\n *\n * @see MatomoTestingTracker\n */\nexport function provideMatomoTesting(\n  config: Partial<MatomoConfiguration> | (() => Partial<MatomoConfiguration>) = {},\n  ...features: MatomoFeature[]\n): EnvironmentProviders {\n  const providers: (Provider | EnvironmentProviders)[] = [\n    provideMatomo(config as MatomoConfiguration | (() => MatomoConfiguration), ...features),\n    provideTestingTracker(),\n    MatomoTestingTracker,\n    {\n      provide: MatomoTracker,\n      useExisting: MatomoTestingTracker,\n    },\n  ];\n\n  // Allow to provide a configuration, because it can be useful for users depending on `MATOMO_CONFIGURATION` in their code.\n  if (typeof config === 'function') {\n    providers.push({\n      provide: MATOMO_CONFIGURATION,\n      useFactory: config,\n    });\n  } else {\n    providers.push({\n      provide: MATOMO_CONFIGURATION,\n      useValue: config,\n    });\n  }\n\n  return makeEnvironmentProviders(providers);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MATOMO_DIRECTIVES } from 'ngx-matomo-client/core';\nimport { provideMatomoTesting } from './providers';\n\n@NgModule({\n  imports: [...MATOMO_DIRECTIVES],\n  exports: [...MATOMO_DIRECTIVES],\n})\nexport class MatomoTestingModule {\n  static forRoot(): ModuleWithProviders<MatomoTestingModule> {\n    return {\n      ngModule: MatomoTestingModule,\n      providers: [provideMatomoTesting()],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["provideTestingTracker"],"mappings":"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"}