{"version":3,"sources":["../src/index.ts","../src/types/index.ts"],"sourcesContent":["import type { Mapping, Destination, Env } from './types';\nimport { getMappingValue, isArray } from '@walkeros/core';\nimport { getEnv } from '@walkeros/web-core';\n\n// Types\nexport * as DestinationPiwikPro from './types';\n\nexport const destinationPiwikPro: Destination = {\n  type: 'piwikpro',\n\n  config: {},\n\n  init({ config, env, logger }) {\n    const { window } = getEnv<Env>(env);\n    const { settings, loadScript } = config;\n    const { appId, url } = settings || {};\n\n    // Required parameters\n    if (!appId) logger.throw('Config settings appId missing');\n    if (!url) logger.throw('Config settings url missing');\n\n    // Set up the Piwik Pro interface _paq\n    window._paq = window._paq || [];\n\n    const paq = (args: unknown[]) => window._paq!.push(args);\n    if (loadScript) {\n      // Load the JavaScript Tracking Client\n      addScript(url!, env);\n\n      // Register the tracker url only with script loading\n      paq(['setTrackerUrl', url + 'ppms.php']);\n\n      // Register app id\n      paq(['setSiteId', appId]);\n    }\n\n    // Enable download and outlink tracking if not disabled\n    if (settings?.linkTracking !== false) paq(['enableLinkTracking']);\n  },\n\n  async push(event, { rule = {}, data, env, collector }) {\n    const { window } = getEnv<Env>(env);\n    const paq = (args: unknown[]) => window._paq!.push(args);\n\n    // Send pageviews if not disabled\n    if (event.name === 'page view' && !rule.settings) {\n      paq([\n        'trackPageView',\n        await getMappingValue(event, 'data.title', { collector }),\n      ]);\n      return;\n    }\n\n    const eventMapping: Mapping = rule.settings || {};\n\n    const parameters = isArray(data) ? data : [data];\n\n    paq([event.name, ...parameters]);\n\n    if (eventMapping.goalId) {\n      const goalValue = eventMapping.goalValue\n        ? getMappingValue(event, eventMapping.goalValue, { collector })\n        : undefined;\n\n      paq([\n        'trackGoal',\n        eventMapping.goalId,\n        goalValue,\n        // @TODO dimensions\n      ]);\n    }\n  },\n};\n\nfunction addScript(url: string, env?: Env) {\n  const { document } = getEnv<Env>(env);\n  const script = document.createElement('script');\n  script.type = 'text/javascript';\n  script.src = url + 'ppms.js';\n  script.async = true;\n  script.defer = true;\n  document.head.appendChild(script);\n}\n\nexport default destinationPiwikPro;\n","import type {\n  Mapping as WalkerOSMapping,\n  Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { DestinationWeb } from '@walkeros/web-core';\n\ndeclare global {\n  interface Window {\n    _paq?: Array<unknown>;\n  }\n}\n\nexport interface Settings {\n  appId: string;\n  linkTracking?: boolean;\n  url: string;\n}\n\nexport type InitSettings = Partial<Settings>;\n\nexport interface Mapping {\n  goalId?: string;\n  goalValue?: string;\n}\n\nexport interface Env extends DestinationWeb.Env {\n  window: {\n    // Optional: the SDK queue may be absent until `init` installs it.\n    _paq?: Array<unknown>;\n  };\n  document: {\n    createElement: (tagName: string) => {\n      type: string;\n      src: string;\n      async?: boolean;\n      defer?: boolean;\n    };\n    head: {\n      appendChild: (node: unknown) => void;\n    };\n  };\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport type Destination = DestinationWeb.Destination<Types>;\nexport type Config = DestinationWeb.Config<Types>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n\nexport interface Dimensions {\n  [i: number]: string;\n}\n"],"mappings":";AACA,SAAS,iBAAiB,eAAe;AACzC,SAAS,cAAc;;;ACFvB;;;ADOO,IAAM,sBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,KAAK,EAAE,QAAQ,KAAK,OAAO,GAAG;AAC5B,UAAM,EAAE,OAAO,IAAI,OAAY,GAAG;AAClC,UAAM,EAAE,UAAU,WAAW,IAAI;AACjC,UAAM,EAAE,OAAO,IAAI,IAAI,YAAY,CAAC;AAGpC,QAAI,CAAC,MAAO,QAAO,MAAM,+BAA+B;AACxD,QAAI,CAAC,IAAK,QAAO,MAAM,6BAA6B;AAGpD,WAAO,OAAO,OAAO,QAAQ,CAAC;AAE9B,UAAM,MAAM,CAAC,SAAoB,OAAO,KAAM,KAAK,IAAI;AACvD,QAAI,YAAY;AAEd,gBAAU,KAAM,GAAG;AAGnB,UAAI,CAAC,iBAAiB,MAAM,UAAU,CAAC;AAGvC,UAAI,CAAC,aAAa,KAAK,CAAC;AAAA,IAC1B;AAGA,SAAI,qCAAU,kBAAiB,MAAO,KAAI,CAAC,oBAAoB,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,KAAK,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,KAAK,UAAU,GAAG;AACrD,UAAM,EAAE,OAAO,IAAI,OAAY,GAAG;AAClC,UAAM,MAAM,CAAC,SAAoB,OAAO,KAAM,KAAK,IAAI;AAGvD,QAAI,MAAM,SAAS,eAAe,CAAC,KAAK,UAAU;AAChD,UAAI;AAAA,QACF;AAAA,QACA,MAAM,gBAAgB,OAAO,cAAc,EAAE,UAAU,CAAC;AAAA,MAC1D,CAAC;AACD;AAAA,IACF;AAEA,UAAM,eAAwB,KAAK,YAAY,CAAC;AAEhD,UAAM,aAAa,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAE/C,QAAI,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AAE/B,QAAI,aAAa,QAAQ;AACvB,YAAM,YAAY,aAAa,YAC3B,gBAAgB,OAAO,aAAa,WAAW,EAAE,UAAU,CAAC,IAC5D;AAEJ,UAAI;AAAA,QACF;AAAA,QACA,aAAa;AAAA,QACb;AAAA;AAAA,MAEF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,UAAU,KAAa,KAAW;AACzC,QAAM,EAAE,SAAS,IAAI,OAAY,GAAG;AACpC,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,SAAO,OAAO;AACd,SAAO,MAAM,MAAM;AACnB,SAAO,QAAQ;AACf,SAAO,QAAQ;AACf,WAAS,KAAK,YAAY,MAAM;AAClC;AAEA,IAAO,gBAAQ;","names":[]}