{"version":3,"file":"analytics-schema-trekkie-storefront-page-view.mjs","names":[],"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"],"mappings":";;;;AASA,IAAM,YAAY;AAClB,IAAM,gBAAgB;AAEtB,SAAgB,SACd,SACwB;CACxB,MAAM,kBAAkB;CACxB,MAAM,EAAC,IAAI,aAAY,SAAS,gBAAgB,WAAW;CAC3D,MAAM,eAAe,WAAW,SAAS,aAAa,GAAG,KAAA;AACzD,QAAO,CACL,cACE,WACA,UACE;EACE,UAAU,gBAAgB;EAC1B,YAAY,SAAS,SAAS,gBAAgB,WAAW,CAAC,MAAM,IAAI;EACpE;EACA,YAAY,SAAS,GAAG;EACzB,EACD,cAAc,gBAAgB,CAC/B,CACF,CACF;;AAGH,SAAS,cACP,SACwB;AACxB,QAAO;EACL,aAAa,QAAQ,sBACjB,aAAa,QAAQ,uBACrB,aAAa;EACjB,mBAAmB,kBAAkB,QAAQ,IAAI;EACjD,sBACE,QAAQ,gBAAgB,QAAQ,wBAAwB;EAE1D,oBAAoB,QAAQ;EAC5B,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB,gBAAgB,WAAW;EAC3B,mBAAmB;EAEnB,KAAK,QAAQ;EACb,MAAM,QAAQ;EACd,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,OAAO,QAAQ;EAEf,QAAQ,SAAS,SAAS,QAAQ,OAAO,CAAC,GAAG;EAC7C,UAAU,QAAQ;EAClB,iBAAiB,QAAQ,oBAAoB;EAC9C;;AAGH,SAAS,kBAAkB,KAAsB;AAC/C,KAAI,OAAO,QAAQ,SACjB,QAAO;CAET,MAAM,WAAW,IAAI,IAAI,IAAI,CAAC;AAC9B,KAAI,SAAS,QAAQ,cAAc,KAAK,MAAM,aAAa,YACzD,QAAO;AAET,QAAO"}