{"version":3,"file":"analytics-schema-trekkie-storefront-page-view.mjs","sources":["../../src/analytics-schema-trekkie-storefront-page-view.ts"],"sourcesContent":["import {\n  ShopifyPageViewPayload,\n  ShopifyMonorailPayload,\n  ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {ShopifyAppId} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'trekkie_storefront_page_view/1.4';\nconst OXYGEN_DOMAIN = 'myshopify.dev';\n\nexport function pageView(\n  payload: ShopifyPageViewPayload,\n): ShopifyMonorailEvent[] {\n  const pageViewPayload = payload;\n  const {id, resource} = parseGid(pageViewPayload.resourceId);\n  const resourceType = resource ? resource.toLowerCase() : undefined;\n  return [\n    schemaWrapper(\n      SCHEMA_ID,\n      addDataIf(\n        {\n          pageType: pageViewPayload.pageType,\n          customerId: parseInt(parseGid(pageViewPayload.customerId).id || '0'),\n          resourceType,\n          resourceId: parseInt(id),\n        },\n        formatPayload(pageViewPayload),\n      ),\n    ),\n  ];\n}\n\nfunction formatPayload(\n  payload: ShopifyPageViewPayload,\n): ShopifyMonorailPayload {\n  return {\n    appClientId: payload.shopifySalesChannel\n      ? ShopifyAppId[payload.shopifySalesChannel]\n      : ShopifyAppId.headless,\n    isMerchantRequest: isMerchantRequest(payload.url),\n    hydrogenSubchannelId:\n      payload.storefrontId || payload.hydrogenSubchannelId || '0',\n\n    isPersistentCookie: payload.hasUserConsent,\n    uniqToken: payload.uniqueToken,\n    visitToken: payload.visitToken,\n    microSessionId: buildUUID(),\n    microSessionCount: 1,\n\n    url: payload.url,\n    path: payload.path,\n    search: payload.search,\n    referrer: payload.referrer,\n    title: payload.title,\n\n    shopId: parseInt(parseGid(payload.shopId).id),\n    currency: payload.currency,\n    contentLanguage: payload.acceptedLanguage || 'en',\n  };\n}\n\nfunction isMerchantRequest(url: string): boolean {\n  if (typeof url !== 'string') {\n    return false;\n  }\n  const hostname = new URL(url).hostname;\n  if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === 'localhost') {\n    return true;\n  }\n  return false;\n}\n"],"names":[],"mappings":";;;AASA,MAAM,YAAY;AAClB,MAAM,gBAAgB;AAEf,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,EAAC,IAAI,SAAA,IAAY,SAAS,gBAAgB,UAAU;AAC1D,QAAM,eAAe,WAAW,SAAS,YAAA,IAAgB;AACzD,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,UAAU,gBAAgB;AAAA,UAC1B,YAAY,SAAS,SAAS,gBAAgB,UAAU,EAAE,MAAM,GAAG;AAAA,UACnE;AAAA,UACA,YAAY,SAAS,EAAE;AAAA,QAAA;AAAA,QAEzB,cAAc,eAAe;AAAA,MAAA;AAAA,IAC/B;AAAA,EACF;AAEJ;AAEA,SAAS,cACP,SACwB;AACxB,SAAO;AAAA,IACL,aAAa,QAAQ,sBACjB,aAAa,QAAQ,mBAAmB,IACxC,aAAa;AAAA,IACjB,mBAAmB,kBAAkB,QAAQ,GAAG;AAAA,IAChD,sBACE,QAAQ,gBAAgB,QAAQ,wBAAwB;AAAA,IAE1D,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,gBAAgB,UAAA;AAAA,IAChB,mBAAmB;AAAA,IAEnB,KAAK,QAAQ;AAAA,IACb,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,IAEf,QAAQ,SAAS,SAAS,QAAQ,MAAM,EAAE,EAAE;AAAA,IAC5C,UAAU,QAAQ;AAAA,IAClB,iBAAiB,QAAQ,oBAAoB;AAAA,EAAA;AAEjD;AAEA,SAAS,kBAAkB,KAAsB;AAC/C,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,WAAW,IAAI,IAAI,GAAG,EAAE;AAC9B,MAAI,SAAS,QAAQ,aAAa,MAAM,MAAM,aAAa,aAAa;AACtE,WAAO;AAAA,EACT;AACA,SAAO;AACT;"}