@shopify/hydrogen-react 0.0.0-next-ea3959b → 0.0.0-next-dada720
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -21
- package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
- package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
- package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-dev/CartCost.mjs +25 -0
- package/dist/browser-dev/CartCost.mjs.map +1 -0
- package/dist/browser-dev/CartLinePrice.mjs +18 -0
- package/dist/browser-dev/CartLinePrice.mjs.map +1 -0
- package/dist/browser-dev/CartLineProvider.mjs +19 -0
- package/dist/browser-dev/CartLineProvider.mjs.map +1 -0
- package/dist/browser-dev/CartProvider.mjs.map +1 -1
- package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
- package/dist/browser-dev/Image.mjs.map +1 -1
- package/dist/browser-dev/MediaFile.mjs.map +1 -1
- package/dist/browser-dev/ModelViewer.mjs.map +1 -1
- package/dist/browser-dev/ProductPrice.mjs.map +1 -1
- package/dist/browser-dev/ProductProvider.mjs.map +1 -1
- package/dist/browser-dev/ShopPayButton.mjs +10 -10
- package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
- package/dist/browser-dev/ShopifyProvider.mjs +9 -21
- package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-dev/analytics-constants.mjs +43 -0
- package/dist/browser-dev/analytics-constants.mjs.map +1 -0
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
- package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
- package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
- package/dist/browser-dev/analytics-utils.mjs +49 -0
- package/dist/browser-dev/analytics-utils.mjs.map +1 -0
- package/dist/browser-dev/analytics.mjs +159 -0
- package/dist/browser-dev/analytics.mjs.map +1 -0
- package/dist/browser-dev/cart-hooks.mjs +5 -7
- package/dist/browser-dev/cart-hooks.mjs.map +1 -1
- package/dist/browser-dev/cookies-utils.mjs +50 -0
- package/dist/browser-dev/cookies-utils.mjs.map +1 -0
- package/dist/browser-dev/index.mjs +20 -2
- package/dist/browser-dev/index.mjs.map +1 -1
- package/dist/browser-dev/parse-metafield.mjs.map +1 -1
- package/dist/browser-dev/storefront-client.mjs +13 -12
- package/dist/browser-dev/storefront-client.mjs.map +1 -1
- package/dist/browser-dev/useMoney.mjs +2 -1
- package/dist/browser-dev/useMoney.mjs.map +1 -1
- package/dist/browser-dev/useShopifyCookies.mjs +41 -0
- package/dist/browser-dev/useShopifyCookies.mjs.map +1 -0
- package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
- package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
- package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-prod/CartCost.mjs +25 -0
- package/dist/browser-prod/CartCost.mjs.map +1 -0
- package/dist/browser-prod/CartLinePrice.mjs +18 -0
- package/dist/browser-prod/CartLinePrice.mjs.map +1 -0
- package/dist/browser-prod/CartLineProvider.mjs +19 -0
- package/dist/browser-prod/CartLineProvider.mjs.map +1 -0
- package/dist/browser-prod/CartProvider.mjs.map +1 -1
- package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
- package/dist/browser-prod/Image.mjs.map +1 -1
- package/dist/browser-prod/MediaFile.mjs.map +1 -1
- package/dist/browser-prod/ModelViewer.mjs.map +1 -1
- package/dist/browser-prod/ProductPrice.mjs.map +1 -1
- package/dist/browser-prod/ProductProvider.mjs.map +1 -1
- package/dist/browser-prod/ShopPayButton.mjs +10 -10
- package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
- package/dist/browser-prod/ShopifyProvider.mjs +9 -16
- package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-prod/analytics-constants.mjs +43 -0
- package/dist/browser-prod/analytics-constants.mjs.map +1 -0
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
- package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
- package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
- package/dist/browser-prod/analytics-utils.mjs +49 -0
- package/dist/browser-prod/analytics-utils.mjs.map +1 -0
- package/dist/browser-prod/analytics.mjs +158 -0
- package/dist/browser-prod/analytics.mjs.map +1 -0
- package/dist/browser-prod/cart-hooks.mjs +5 -7
- package/dist/browser-prod/cart-hooks.mjs.map +1 -1
- package/dist/browser-prod/cookies-utils.mjs +50 -0
- package/dist/browser-prod/cookies-utils.mjs.map +1 -0
- package/dist/browser-prod/index.mjs +20 -2
- package/dist/browser-prod/index.mjs.map +1 -1
- package/dist/browser-prod/parse-metafield.mjs.map +1 -1
- package/dist/browser-prod/storefront-client.mjs +13 -12
- package/dist/browser-prod/storefront-client.mjs.map +1 -1
- package/dist/browser-prod/useMoney.mjs +2 -1
- package/dist/browser-prod/useMoney.mjs.map +1 -1
- package/dist/browser-prod/useShopifyCookies.mjs +41 -0
- package/dist/browser-prod/useShopifyCookies.mjs.map +1 -0
- package/dist/node-dev/AddToCartButton.js.map +1 -1
- package/dist/node-dev/AddToCartButton.mjs.map +1 -1
- package/dist/node-dev/BuyNowButton.js.map +1 -1
- package/dist/node-dev/BuyNowButton.mjs.map +1 -1
- package/dist/node-dev/CartCheckoutButton.js.map +1 -1
- package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-dev/CartCost.js +25 -0
- package/dist/node-dev/CartCost.js.map +1 -0
- package/dist/node-dev/CartCost.mjs +25 -0
- package/dist/node-dev/CartCost.mjs.map +1 -0
- package/dist/node-dev/CartLinePrice.js +18 -0
- package/dist/node-dev/CartLinePrice.js.map +1 -0
- package/dist/node-dev/CartLinePrice.mjs +18 -0
- package/dist/node-dev/CartLinePrice.mjs.map +1 -0
- package/dist/node-dev/CartLineProvider.js +19 -0
- package/dist/node-dev/CartLineProvider.js.map +1 -0
- package/dist/node-dev/CartLineProvider.mjs +19 -0
- package/dist/node-dev/CartLineProvider.mjs.map +1 -0
- package/dist/node-dev/CartProvider.js.map +1 -1
- package/dist/node-dev/CartProvider.mjs.map +1 -1
- package/dist/node-dev/ExternalVideo.js.map +1 -1
- package/dist/node-dev/ExternalVideo.mjs.map +1 -1
- package/dist/node-dev/Image.js.map +1 -1
- package/dist/node-dev/Image.mjs.map +1 -1
- package/dist/node-dev/MediaFile.js.map +1 -1
- package/dist/node-dev/MediaFile.mjs.map +1 -1
- package/dist/node-dev/ModelViewer.js.map +1 -1
- package/dist/node-dev/ModelViewer.mjs.map +1 -1
- package/dist/node-dev/ProductPrice.js.map +1 -1
- package/dist/node-dev/ProductPrice.mjs.map +1 -1
- package/dist/node-dev/ProductProvider.js.map +1 -1
- package/dist/node-dev/ProductProvider.mjs.map +1 -1
- package/dist/node-dev/ShopPayButton.js +9 -9
- package/dist/node-dev/ShopPayButton.js.map +1 -1
- package/dist/node-dev/ShopPayButton.mjs +10 -10
- package/dist/node-dev/ShopPayButton.mjs.map +1 -1
- package/dist/node-dev/ShopifyProvider.js +9 -21
- package/dist/node-dev/ShopifyProvider.js.map +1 -1
- package/dist/node-dev/ShopifyProvider.mjs +9 -21
- package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/node-dev/analytics-constants.js +43 -0
- package/dist/node-dev/analytics-constants.js.map +1 -0
- package/dist/node-dev/analytics-constants.mjs +43 -0
- package/dist/node-dev/analytics-constants.mjs.map +1 -0
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +145 -0
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +58 -0
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
- package/dist/node-dev/analytics-utils.js +49 -0
- package/dist/node-dev/analytics-utils.js.map +1 -0
- package/dist/node-dev/analytics-utils.mjs +49 -0
- package/dist/node-dev/analytics-utils.mjs.map +1 -0
- package/dist/node-dev/analytics.js +159 -0
- package/dist/node-dev/analytics.js.map +1 -0
- package/dist/node-dev/analytics.mjs +159 -0
- package/dist/node-dev/analytics.mjs.map +1 -0
- package/dist/node-dev/cart-hooks.js +4 -6
- package/dist/node-dev/cart-hooks.js.map +1 -1
- package/dist/node-dev/cart-hooks.mjs +5 -7
- package/dist/node-dev/cart-hooks.mjs.map +1 -1
- package/dist/node-dev/cookies-utils.js +50 -0
- package/dist/node-dev/cookies-utils.js.map +1 -0
- package/dist/node-dev/cookies-utils.mjs +50 -0
- package/dist/node-dev/cookies-utils.mjs.map +1 -0
- package/dist/node-dev/index.js +20 -2
- package/dist/node-dev/index.js.map +1 -1
- package/dist/node-dev/index.mjs +20 -2
- package/dist/node-dev/index.mjs.map +1 -1
- package/dist/node-dev/parse-metafield.js.map +1 -1
- package/dist/node-dev/parse-metafield.mjs.map +1 -1
- package/dist/node-dev/storefront-client.js +13 -12
- package/dist/node-dev/storefront-client.js.map +1 -1
- package/dist/node-dev/storefront-client.mjs +13 -12
- package/dist/node-dev/storefront-client.mjs.map +1 -1
- package/dist/node-dev/useMoney.js +2 -1
- package/dist/node-dev/useMoney.js.map +1 -1
- package/dist/node-dev/useMoney.mjs +2 -1
- package/dist/node-dev/useMoney.mjs.map +1 -1
- package/dist/node-dev/useShopifyCookies.js +41 -0
- package/dist/node-dev/useShopifyCookies.js.map +1 -0
- package/dist/node-dev/useShopifyCookies.mjs +41 -0
- package/dist/node-dev/useShopifyCookies.mjs.map +1 -0
- package/dist/node-prod/AddToCartButton.js.map +1 -1
- package/dist/node-prod/AddToCartButton.mjs.map +1 -1
- package/dist/node-prod/BuyNowButton.js.map +1 -1
- package/dist/node-prod/BuyNowButton.mjs.map +1 -1
- package/dist/node-prod/CartCheckoutButton.js.map +1 -1
- package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-prod/CartCost.js +25 -0
- package/dist/node-prod/CartCost.js.map +1 -0
- package/dist/node-prod/CartCost.mjs +25 -0
- package/dist/node-prod/CartCost.mjs.map +1 -0
- package/dist/node-prod/CartLinePrice.js +18 -0
- package/dist/node-prod/CartLinePrice.js.map +1 -0
- package/dist/node-prod/CartLinePrice.mjs +18 -0
- package/dist/node-prod/CartLinePrice.mjs.map +1 -0
- package/dist/node-prod/CartLineProvider.js +19 -0
- package/dist/node-prod/CartLineProvider.js.map +1 -0
- package/dist/node-prod/CartLineProvider.mjs +19 -0
- package/dist/node-prod/CartLineProvider.mjs.map +1 -0
- package/dist/node-prod/CartProvider.js.map +1 -1
- package/dist/node-prod/CartProvider.mjs.map +1 -1
- package/dist/node-prod/ExternalVideo.js.map +1 -1
- package/dist/node-prod/ExternalVideo.mjs.map +1 -1
- package/dist/node-prod/Image.js.map +1 -1
- package/dist/node-prod/Image.mjs.map +1 -1
- package/dist/node-prod/MediaFile.js.map +1 -1
- package/dist/node-prod/MediaFile.mjs.map +1 -1
- package/dist/node-prod/ModelViewer.js.map +1 -1
- package/dist/node-prod/ModelViewer.mjs.map +1 -1
- package/dist/node-prod/ProductPrice.js.map +1 -1
- package/dist/node-prod/ProductPrice.mjs.map +1 -1
- package/dist/node-prod/ProductProvider.js.map +1 -1
- package/dist/node-prod/ProductProvider.mjs.map +1 -1
- package/dist/node-prod/ShopPayButton.js +9 -9
- package/dist/node-prod/ShopPayButton.js.map +1 -1
- package/dist/node-prod/ShopPayButton.mjs +10 -10
- package/dist/node-prod/ShopPayButton.mjs.map +1 -1
- package/dist/node-prod/ShopifyProvider.js +9 -16
- package/dist/node-prod/ShopifyProvider.js.map +1 -1
- package/dist/node-prod/ShopifyProvider.mjs +9 -16
- package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/node-prod/analytics-constants.js +43 -0
- package/dist/node-prod/analytics-constants.js.map +1 -0
- package/dist/node-prod/analytics-constants.mjs +43 -0
- package/dist/node-prod/analytics-constants.mjs.map +1 -0
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +145 -0
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +58 -0
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
- package/dist/node-prod/analytics-utils.js +49 -0
- package/dist/node-prod/analytics-utils.js.map +1 -0
- package/dist/node-prod/analytics-utils.mjs +49 -0
- package/dist/node-prod/analytics-utils.mjs.map +1 -0
- package/dist/node-prod/analytics.js +158 -0
- package/dist/node-prod/analytics.js.map +1 -0
- package/dist/node-prod/analytics.mjs +158 -0
- package/dist/node-prod/analytics.mjs.map +1 -0
- package/dist/node-prod/cart-hooks.js +4 -6
- package/dist/node-prod/cart-hooks.js.map +1 -1
- package/dist/node-prod/cart-hooks.mjs +5 -7
- package/dist/node-prod/cart-hooks.mjs.map +1 -1
- package/dist/node-prod/cookies-utils.js +50 -0
- package/dist/node-prod/cookies-utils.js.map +1 -0
- package/dist/node-prod/cookies-utils.mjs +50 -0
- package/dist/node-prod/cookies-utils.mjs.map +1 -0
- package/dist/node-prod/index.js +20 -2
- package/dist/node-prod/index.js.map +1 -1
- package/dist/node-prod/index.mjs +20 -2
- package/dist/node-prod/index.mjs.map +1 -1
- package/dist/node-prod/parse-metafield.js.map +1 -1
- package/dist/node-prod/parse-metafield.mjs.map +1 -1
- package/dist/node-prod/storefront-client.js +13 -12
- package/dist/node-prod/storefront-client.js.map +1 -1
- package/dist/node-prod/storefront-client.mjs +13 -12
- package/dist/node-prod/storefront-client.mjs.map +1 -1
- package/dist/node-prod/useMoney.js +2 -1
- package/dist/node-prod/useMoney.js.map +1 -1
- package/dist/node-prod/useMoney.mjs +2 -1
- package/dist/node-prod/useMoney.mjs.map +1 -1
- package/dist/node-prod/useShopifyCookies.js +41 -0
- package/dist/node-prod/useShopifyCookies.js.map +1 -0
- package/dist/node-prod/useShopifyCookies.mjs +41 -0
- package/dist/node-prod/useShopifyCookies.mjs.map +1 -0
- package/dist/types/AddToCartButton.d.ts +3 -2
- package/dist/types/BuyNowButton.d.ts +7 -3
- package/dist/types/CartCheckoutButton.d.ts +6 -5
- package/dist/types/CartCost.d.ts +7 -5
- package/dist/types/CartLinePrice.d.ts +4 -4
- package/dist/types/CartLineProvider.d.ts +8 -6
- package/dist/types/CartProvider.d.ts +12 -2
- package/dist/types/ExternalVideo.d.ts +1 -2
- package/dist/types/Image.d.ts +5 -3
- package/dist/types/MediaFile.d.ts +12 -11
- package/dist/types/ModelViewer.d.ts +2 -2
- package/dist/types/ProductPrice.d.ts +1 -1
- package/dist/types/ProductProvider.d.ts +1 -1
- package/dist/types/ShopPayButton.d.ts +10 -10
- package/dist/types/ShopifyProvider.d.ts +35 -39
- package/dist/types/analytics-constants.d.ts +48 -0
- package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -0
- package/dist/types/analytics-schema-trekkie-storefront-page-view.d.ts +2 -0
- package/dist/types/analytics-types.d.ts +108 -0
- package/dist/types/analytics-utils.d.ts +36 -0
- package/dist/types/analytics.d.ts +9 -0
- package/dist/types/cookies-utils.d.ts +4 -0
- package/dist/types/index.d.cts +11 -3
- package/dist/types/index.d.ts +11 -3
- package/dist/types/parse-metafield.d.ts +1 -3
- package/dist/types/storefront-client.d.ts +14 -14
- package/dist/types/useShopifyCookies.d.ts +14 -0
- package/dist/umd/hydrogen-react.dev.js +704 -172
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +18 -16
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +12 -7
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const AnalyticsEventName = {
|
|
2
|
+
PAGE_VIEW: "PAGE_VIEW",
|
|
3
|
+
ADD_TO_CART: "ADD_TO_CART"
|
|
4
|
+
};
|
|
5
|
+
const AnalyticsPageType = {
|
|
6
|
+
article: "article",
|
|
7
|
+
blog: "blog",
|
|
8
|
+
captcha: "captcha",
|
|
9
|
+
cart: "cart",
|
|
10
|
+
collection: "collection",
|
|
11
|
+
customersAccount: "customers/account",
|
|
12
|
+
customersActivateAccount: "customers/activate_account",
|
|
13
|
+
customersAddresses: "customers/addresses",
|
|
14
|
+
customersLogin: "customers/login",
|
|
15
|
+
customersOrder: "customers/order",
|
|
16
|
+
customersRegister: "customers/register",
|
|
17
|
+
customersResetPassword: "customers/reset_password",
|
|
18
|
+
giftCard: "gift_card",
|
|
19
|
+
home: "index",
|
|
20
|
+
listCollections: "list-collections",
|
|
21
|
+
forbidden: "403",
|
|
22
|
+
notFound: "404",
|
|
23
|
+
page: "page",
|
|
24
|
+
password: "password",
|
|
25
|
+
product: "product",
|
|
26
|
+
policy: "policy",
|
|
27
|
+
search: "search"
|
|
28
|
+
};
|
|
29
|
+
const ShopifySalesChannel = {
|
|
30
|
+
hydrogen: "hydrogen",
|
|
31
|
+
headless: "headless"
|
|
32
|
+
};
|
|
33
|
+
const ShopifyAppId = {
|
|
34
|
+
hydrogen: "6167201",
|
|
35
|
+
headless: "12875497473"
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
AnalyticsEventName,
|
|
39
|
+
AnalyticsPageType,
|
|
40
|
+
ShopifyAppId,
|
|
41
|
+
ShopifySalesChannel
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=analytics-constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-constants.mjs","sources":["../../src/analytics-constants.ts"],"sourcesContent":["export const AnalyticsEventName: AnalyticsEventName = {\n PAGE_VIEW: 'PAGE_VIEW',\n ADD_TO_CART: 'ADD_TO_CART',\n} as const;\n\nexport const AnalyticsPageType: AnalyticsPageType = {\n article: 'article',\n blog: 'blog',\n captcha: 'captcha',\n cart: 'cart',\n collection: 'collection',\n customersAccount: 'customers/account',\n customersActivateAccount: 'customers/activate_account',\n customersAddresses: 'customers/addresses',\n customersLogin: 'customers/login',\n customersOrder: 'customers/order',\n customersRegister: 'customers/register',\n customersResetPassword: 'customers/reset_password',\n giftCard: 'gift_card',\n home: 'index',\n listCollections: 'list-collections',\n forbidden: '403',\n notFound: '404',\n page: 'page',\n password: 'password',\n product: 'product',\n policy: 'policy',\n search: 'search',\n} as const;\n\nexport const ShopifySalesChannel: ShopifySalesChannel = {\n hydrogen: 'hydrogen',\n headless: 'headless',\n} as const;\n\nexport const ShopifyAppId = {\n hydrogen: '6167201',\n headless: '12875497473',\n} as const;\n\n/**\n * These duplicated interface declaration is so that we can generate proper documentation\n * for these public facing constants\n */\ninterface AnalyticsEventName {\n /** Page view */\n PAGE_VIEW: 'PAGE_VIEW';\n /** Add to cart */\n ADD_TO_CART: 'ADD_TO_CART';\n}\n\ninterface AnalyticsPageType {\n article: 'article';\n blog: 'blog';\n captcha: 'captcha';\n cart: 'cart';\n collection: 'collection';\n customersAccount: 'customers/account';\n customersActivateAccount: 'customers/activate_account';\n customersAddresses: 'customers/addresses';\n customersLogin: 'customers/login';\n customersOrder: 'customers/order';\n customersRegister: 'customers/register';\n customersResetPassword: 'customers/reset_password';\n giftCard: 'gift_card';\n home: 'index';\n listCollections: 'list-collections';\n forbidden: '403';\n notFound: '404';\n page: 'page';\n password: 'password';\n product: 'product';\n policy: 'policy';\n search: 'search';\n}\n\ninterface ShopifySalesChannel {\n /** Shopify Hydrogen sales channel */\n hydrogen: 'hydrogen';\n /** Shopify Headless sales channel */\n headless: 'headless';\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAyC;AAAA,EACpD,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,oBAAuC;AAAA,EAClD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,MAAM,sBAA2C;AAAA,EACtD,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,UAAU;AACZ;"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const analyticsConstants = require("./analytics-constants.js");
|
|
4
|
+
const analyticsUtils = require("./analytics-utils.js");
|
|
5
|
+
const cookiesUtils = require("./cookies-utils.js");
|
|
6
|
+
const SCHEMA_ID = "custom_storefront_customer_tracking/1.0";
|
|
7
|
+
const PAGE_RENDERED_EVENT_NAME = "page_rendered";
|
|
8
|
+
const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
|
|
9
|
+
const PRODUCT_PAGE_RENDERED_EVENT_NAME = "product_page_rendered";
|
|
10
|
+
const PRODUCT_ADDED_TO_CART_EVENT_NAME = "product_added_to_cart";
|
|
11
|
+
const SEARCH_SUBMITTED_EVENT_NAME = "search_submitted";
|
|
12
|
+
function pageView(payload) {
|
|
13
|
+
const pageViewPayload = payload;
|
|
14
|
+
const additionalPayload = {
|
|
15
|
+
canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,
|
|
16
|
+
customer_id: pageViewPayload.customerId
|
|
17
|
+
};
|
|
18
|
+
const pageType = pageViewPayload.pageType;
|
|
19
|
+
const pageViewEvents = [];
|
|
20
|
+
pageViewEvents.push(
|
|
21
|
+
analyticsUtils.schemaWrapper(
|
|
22
|
+
SCHEMA_ID,
|
|
23
|
+
analyticsUtils.addDataIf(
|
|
24
|
+
{
|
|
25
|
+
event_name: PAGE_RENDERED_EVENT_NAME,
|
|
26
|
+
...additionalPayload
|
|
27
|
+
},
|
|
28
|
+
formatPayload(pageViewPayload)
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
switch (pageType) {
|
|
33
|
+
case analyticsConstants.AnalyticsPageType.collection:
|
|
34
|
+
pageViewEvents.push(
|
|
35
|
+
analyticsUtils.schemaWrapper(
|
|
36
|
+
SCHEMA_ID,
|
|
37
|
+
analyticsUtils.addDataIf(
|
|
38
|
+
{
|
|
39
|
+
event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,
|
|
40
|
+
...additionalPayload,
|
|
41
|
+
collection_name: pageViewPayload.collectionHandle
|
|
42
|
+
},
|
|
43
|
+
formatPayload(pageViewPayload)
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
);
|
|
47
|
+
break;
|
|
48
|
+
case analyticsConstants.AnalyticsPageType.product:
|
|
49
|
+
pageViewEvents.push(
|
|
50
|
+
analyticsUtils.schemaWrapper(
|
|
51
|
+
SCHEMA_ID,
|
|
52
|
+
analyticsUtils.addDataIf(
|
|
53
|
+
{
|
|
54
|
+
event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,
|
|
55
|
+
...additionalPayload,
|
|
56
|
+
products: formatProductPayload(pageViewPayload.products),
|
|
57
|
+
total_value: pageViewPayload.totalValue
|
|
58
|
+
},
|
|
59
|
+
formatPayload(pageViewPayload)
|
|
60
|
+
)
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
break;
|
|
64
|
+
case analyticsConstants.AnalyticsPageType.search:
|
|
65
|
+
pageViewEvents.push(
|
|
66
|
+
analyticsUtils.schemaWrapper(
|
|
67
|
+
SCHEMA_ID,
|
|
68
|
+
analyticsUtils.addDataIf(
|
|
69
|
+
{
|
|
70
|
+
event_name: SEARCH_SUBMITTED_EVENT_NAME,
|
|
71
|
+
...additionalPayload,
|
|
72
|
+
search_string: pageViewPayload.searchString
|
|
73
|
+
},
|
|
74
|
+
formatPayload(pageViewPayload)
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
return pageViewEvents;
|
|
81
|
+
}
|
|
82
|
+
function addToCart(payload) {
|
|
83
|
+
const addToCartPayload = payload;
|
|
84
|
+
const cartToken = analyticsUtils.parseGid(addToCartPayload.cartId);
|
|
85
|
+
const cart_token = (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null;
|
|
86
|
+
return [
|
|
87
|
+
analyticsUtils.schemaWrapper(
|
|
88
|
+
SCHEMA_ID,
|
|
89
|
+
analyticsUtils.addDataIf(
|
|
90
|
+
{
|
|
91
|
+
event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,
|
|
92
|
+
customerId: addToCartPayload.customerId,
|
|
93
|
+
cart_token,
|
|
94
|
+
total_value: addToCartPayload.totalValue,
|
|
95
|
+
products: formatProductPayload(addToCartPayload.products)
|
|
96
|
+
},
|
|
97
|
+
formatPayload(addToCartPayload)
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
function formatPayload(payload) {
|
|
103
|
+
return {
|
|
104
|
+
source: payload.shopifySalesChannel || analyticsConstants.ShopifySalesChannel.headless,
|
|
105
|
+
hydrogenSubchannelId: payload.storefrontId || "0",
|
|
106
|
+
is_persistent_cookie: payload.hasUserConsent,
|
|
107
|
+
ccpa_enforced: false,
|
|
108
|
+
gdpr_enforced: false,
|
|
109
|
+
unique_token: payload.uniqueToken,
|
|
110
|
+
event_time: Date.now(),
|
|
111
|
+
event_id: cookiesUtils.buildUUID(),
|
|
112
|
+
event_source_url: payload.url,
|
|
113
|
+
referrer: payload.referrer,
|
|
114
|
+
user_agent: payload.userAgent,
|
|
115
|
+
navigation_type: payload.navigationType,
|
|
116
|
+
navigation_api: payload.navigationApi,
|
|
117
|
+
shop_id: parseInt(analyticsUtils.parseGid(payload.shopId).id),
|
|
118
|
+
currency: payload.currency
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function formatProductPayload(products) {
|
|
122
|
+
return products ? products.map((p) => {
|
|
123
|
+
const product = analyticsUtils.addDataIf(
|
|
124
|
+
{
|
|
125
|
+
variant_gid: p.variantGid,
|
|
126
|
+
category: p.category,
|
|
127
|
+
sku: p.sku,
|
|
128
|
+
product_id: parseInt(analyticsUtils.parseGid(p.productGid).id),
|
|
129
|
+
variant_id: parseInt(analyticsUtils.parseGid(p.variantGid).id)
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
product_gid: p.productGid,
|
|
133
|
+
name: p.name,
|
|
134
|
+
variant: p.variantName || "",
|
|
135
|
+
brand: p.brand,
|
|
136
|
+
price: p.price,
|
|
137
|
+
quantity: Number(p.quantity || 0)
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
return JSON.stringify(product);
|
|
141
|
+
}) : [];
|
|
142
|
+
}
|
|
143
|
+
exports.addToCart = addToCart;
|
|
144
|
+
exports.pageView = pageView;
|
|
145
|
+
//# sourceMappingURL=analytics-schema-custom-storefront-customer-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-schema-custom-storefront-customer-tracking.js","sources":["../../src/analytics-schema-custom-storefront-customer-tracking.ts"],"sourcesContent":["import {\n ShopifyAnalyticsPayload,\n ShopifyPageViewPayload,\n ShopifyAddToCartPayload,\n ShopifyMonorailPayload,\n ShopifyAnalyticsProduct,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {AnalyticsPageType, ShopifySalesChannel} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'custom_storefront_customer_tracking/1.0';\nconst PAGE_RENDERED_EVENT_NAME = 'page_rendered';\nconst COLLECTION_PAGE_RENDERED_EVENT_NAME = 'collection_page_rendered';\nconst PRODUCT_PAGE_RENDERED_EVENT_NAME = 'product_page_rendered';\nconst PRODUCT_ADDED_TO_CART_EVENT_NAME = 'product_added_to_cart';\nconst SEARCH_SUBMITTED_EVENT_NAME = 'search_submitted';\n\nexport function pageView(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailEvent[] {\n const pageViewPayload = payload;\n const additionalPayload = {\n canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,\n customer_id: pageViewPayload.customerId,\n };\n const pageType = pageViewPayload.pageType;\n const pageViewEvents = [];\n\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n\n switch (pageType) {\n case AnalyticsPageType.collection:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n collection_name: pageViewPayload.collectionHandle,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.product:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n products: formatProductPayload(pageViewPayload.products),\n total_value: pageViewPayload.totalValue,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.search:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: SEARCH_SUBMITTED_EVENT_NAME,\n ...additionalPayload,\n search_string: pageViewPayload.searchString,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n }\n\n return pageViewEvents;\n}\n\nexport function addToCart(\n payload: ShopifyAddToCartPayload\n): ShopifyMonorailEvent[] {\n const addToCartPayload = payload;\n const cartToken = parseGid(addToCartPayload.cartId);\n const cart_token = cartToken?.id ? `${cartToken.id}` : null;\n return [\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,\n customerId: addToCartPayload.customerId,\n cart_token,\n total_value: addToCartPayload.totalValue,\n products: formatProductPayload(addToCartPayload.products),\n },\n formatPayload(addToCartPayload)\n )\n ),\n ];\n}\n\nfunction formatPayload(\n payload: ShopifyAnalyticsPayload\n): ShopifyMonorailPayload {\n return {\n source: payload.shopifySalesChannel || ShopifySalesChannel.headless,\n hydrogenSubchannelId: payload.storefrontId || '0',\n\n is_persistent_cookie: payload.hasUserConsent,\n ccpa_enforced: false,\n gdpr_enforced: false,\n unique_token: payload.uniqueToken,\n event_time: Date.now(),\n event_id: buildUUID(),\n\n event_source_url: payload.url,\n referrer: payload.referrer,\n user_agent: payload.userAgent,\n navigation_type: payload.navigationType,\n navigation_api: payload.navigationApi,\n\n shop_id: parseInt(parseGid(payload.shopId).id),\n currency: payload.currency,\n };\n}\n\nfunction formatProductPayload(products?: ShopifyAnalyticsProduct[]): string[] {\n return products\n ? products.map((p: ShopifyAnalyticsProduct) => {\n const product = addDataIf(\n {\n variant_gid: p.variantGid,\n category: p.category,\n sku: p.sku,\n product_id: parseInt(parseGid(p.productGid).id),\n variant_id: parseInt(parseGid(p.variantGid).id),\n },\n {\n product_gid: p.productGid,\n name: p.name,\n variant: p.variantName || '',\n brand: p.brand,\n price: p.price,\n quantity: Number(p.quantity || 0),\n }\n );\n return JSON.stringify(product);\n })\n : [];\n}\n"],"names":["schemaWrapper","addDataIf","AnalyticsPageType","parseGid","ShopifySalesChannel","buildUUID"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { AnalyticsPageType, ShopifySalesChannel } from "./analytics-constants.mjs";
|
|
2
|
+
import { schemaWrapper, addDataIf, parseGid } from "./analytics-utils.mjs";
|
|
3
|
+
import { buildUUID } from "./cookies-utils.mjs";
|
|
4
|
+
const SCHEMA_ID = "custom_storefront_customer_tracking/1.0";
|
|
5
|
+
const PAGE_RENDERED_EVENT_NAME = "page_rendered";
|
|
6
|
+
const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
|
|
7
|
+
const PRODUCT_PAGE_RENDERED_EVENT_NAME = "product_page_rendered";
|
|
8
|
+
const PRODUCT_ADDED_TO_CART_EVENT_NAME = "product_added_to_cart";
|
|
9
|
+
const SEARCH_SUBMITTED_EVENT_NAME = "search_submitted";
|
|
10
|
+
function pageView(payload) {
|
|
11
|
+
const pageViewPayload = payload;
|
|
12
|
+
const additionalPayload = {
|
|
13
|
+
canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,
|
|
14
|
+
customer_id: pageViewPayload.customerId
|
|
15
|
+
};
|
|
16
|
+
const pageType = pageViewPayload.pageType;
|
|
17
|
+
const pageViewEvents = [];
|
|
18
|
+
pageViewEvents.push(
|
|
19
|
+
schemaWrapper(
|
|
20
|
+
SCHEMA_ID,
|
|
21
|
+
addDataIf(
|
|
22
|
+
{
|
|
23
|
+
event_name: PAGE_RENDERED_EVENT_NAME,
|
|
24
|
+
...additionalPayload
|
|
25
|
+
},
|
|
26
|
+
formatPayload(pageViewPayload)
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
);
|
|
30
|
+
switch (pageType) {
|
|
31
|
+
case AnalyticsPageType.collection:
|
|
32
|
+
pageViewEvents.push(
|
|
33
|
+
schemaWrapper(
|
|
34
|
+
SCHEMA_ID,
|
|
35
|
+
addDataIf(
|
|
36
|
+
{
|
|
37
|
+
event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,
|
|
38
|
+
...additionalPayload,
|
|
39
|
+
collection_name: pageViewPayload.collectionHandle
|
|
40
|
+
},
|
|
41
|
+
formatPayload(pageViewPayload)
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
break;
|
|
46
|
+
case AnalyticsPageType.product:
|
|
47
|
+
pageViewEvents.push(
|
|
48
|
+
schemaWrapper(
|
|
49
|
+
SCHEMA_ID,
|
|
50
|
+
addDataIf(
|
|
51
|
+
{
|
|
52
|
+
event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,
|
|
53
|
+
...additionalPayload,
|
|
54
|
+
products: formatProductPayload(pageViewPayload.products),
|
|
55
|
+
total_value: pageViewPayload.totalValue
|
|
56
|
+
},
|
|
57
|
+
formatPayload(pageViewPayload)
|
|
58
|
+
)
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
break;
|
|
62
|
+
case AnalyticsPageType.search:
|
|
63
|
+
pageViewEvents.push(
|
|
64
|
+
schemaWrapper(
|
|
65
|
+
SCHEMA_ID,
|
|
66
|
+
addDataIf(
|
|
67
|
+
{
|
|
68
|
+
event_name: SEARCH_SUBMITTED_EVENT_NAME,
|
|
69
|
+
...additionalPayload,
|
|
70
|
+
search_string: pageViewPayload.searchString
|
|
71
|
+
},
|
|
72
|
+
formatPayload(pageViewPayload)
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return pageViewEvents;
|
|
79
|
+
}
|
|
80
|
+
function addToCart(payload) {
|
|
81
|
+
const addToCartPayload = payload;
|
|
82
|
+
const cartToken = parseGid(addToCartPayload.cartId);
|
|
83
|
+
const cart_token = (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null;
|
|
84
|
+
return [
|
|
85
|
+
schemaWrapper(
|
|
86
|
+
SCHEMA_ID,
|
|
87
|
+
addDataIf(
|
|
88
|
+
{
|
|
89
|
+
event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,
|
|
90
|
+
customerId: addToCartPayload.customerId,
|
|
91
|
+
cart_token,
|
|
92
|
+
total_value: addToCartPayload.totalValue,
|
|
93
|
+
products: formatProductPayload(addToCartPayload.products)
|
|
94
|
+
},
|
|
95
|
+
formatPayload(addToCartPayload)
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
function formatPayload(payload) {
|
|
101
|
+
return {
|
|
102
|
+
source: payload.shopifySalesChannel || ShopifySalesChannel.headless,
|
|
103
|
+
hydrogenSubchannelId: payload.storefrontId || "0",
|
|
104
|
+
is_persistent_cookie: payload.hasUserConsent,
|
|
105
|
+
ccpa_enforced: false,
|
|
106
|
+
gdpr_enforced: false,
|
|
107
|
+
unique_token: payload.uniqueToken,
|
|
108
|
+
event_time: Date.now(),
|
|
109
|
+
event_id: buildUUID(),
|
|
110
|
+
event_source_url: payload.url,
|
|
111
|
+
referrer: payload.referrer,
|
|
112
|
+
user_agent: payload.userAgent,
|
|
113
|
+
navigation_type: payload.navigationType,
|
|
114
|
+
navigation_api: payload.navigationApi,
|
|
115
|
+
shop_id: parseInt(parseGid(payload.shopId).id),
|
|
116
|
+
currency: payload.currency
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function formatProductPayload(products) {
|
|
120
|
+
return products ? products.map((p) => {
|
|
121
|
+
const product = addDataIf(
|
|
122
|
+
{
|
|
123
|
+
variant_gid: p.variantGid,
|
|
124
|
+
category: p.category,
|
|
125
|
+
sku: p.sku,
|
|
126
|
+
product_id: parseInt(parseGid(p.productGid).id),
|
|
127
|
+
variant_id: parseInt(parseGid(p.variantGid).id)
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
product_gid: p.productGid,
|
|
131
|
+
name: p.name,
|
|
132
|
+
variant: p.variantName || "",
|
|
133
|
+
brand: p.brand,
|
|
134
|
+
price: p.price,
|
|
135
|
+
quantity: Number(p.quantity || 0)
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
return JSON.stringify(product);
|
|
139
|
+
}) : [];
|
|
140
|
+
}
|
|
141
|
+
export {
|
|
142
|
+
addToCart,
|
|
143
|
+
pageView
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=analytics-schema-custom-storefront-customer-tracking.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-schema-custom-storefront-customer-tracking.mjs","sources":["../../src/analytics-schema-custom-storefront-customer-tracking.ts"],"sourcesContent":["import {\n ShopifyAnalyticsPayload,\n ShopifyPageViewPayload,\n ShopifyAddToCartPayload,\n ShopifyMonorailPayload,\n ShopifyAnalyticsProduct,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {AnalyticsPageType, ShopifySalesChannel} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'custom_storefront_customer_tracking/1.0';\nconst PAGE_RENDERED_EVENT_NAME = 'page_rendered';\nconst COLLECTION_PAGE_RENDERED_EVENT_NAME = 'collection_page_rendered';\nconst PRODUCT_PAGE_RENDERED_EVENT_NAME = 'product_page_rendered';\nconst PRODUCT_ADDED_TO_CART_EVENT_NAME = 'product_added_to_cart';\nconst SEARCH_SUBMITTED_EVENT_NAME = 'search_submitted';\n\nexport function pageView(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailEvent[] {\n const pageViewPayload = payload;\n const additionalPayload = {\n canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,\n customer_id: pageViewPayload.customerId,\n };\n const pageType = pageViewPayload.pageType;\n const pageViewEvents = [];\n\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n\n switch (pageType) {\n case AnalyticsPageType.collection:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n collection_name: pageViewPayload.collectionHandle,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.product:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n products: formatProductPayload(pageViewPayload.products),\n total_value: pageViewPayload.totalValue,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.search:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: SEARCH_SUBMITTED_EVENT_NAME,\n ...additionalPayload,\n search_string: pageViewPayload.searchString,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n }\n\n return pageViewEvents;\n}\n\nexport function addToCart(\n payload: ShopifyAddToCartPayload\n): ShopifyMonorailEvent[] {\n const addToCartPayload = payload;\n const cartToken = parseGid(addToCartPayload.cartId);\n const cart_token = cartToken?.id ? `${cartToken.id}` : null;\n return [\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,\n customerId: addToCartPayload.customerId,\n cart_token,\n total_value: addToCartPayload.totalValue,\n products: formatProductPayload(addToCartPayload.products),\n },\n formatPayload(addToCartPayload)\n )\n ),\n ];\n}\n\nfunction formatPayload(\n payload: ShopifyAnalyticsPayload\n): ShopifyMonorailPayload {\n return {\n source: payload.shopifySalesChannel || ShopifySalesChannel.headless,\n hydrogenSubchannelId: payload.storefrontId || '0',\n\n is_persistent_cookie: payload.hasUserConsent,\n ccpa_enforced: false,\n gdpr_enforced: false,\n unique_token: payload.uniqueToken,\n event_time: Date.now(),\n event_id: buildUUID(),\n\n event_source_url: payload.url,\n referrer: payload.referrer,\n user_agent: payload.userAgent,\n navigation_type: payload.navigationType,\n navigation_api: payload.navigationApi,\n\n shop_id: parseInt(parseGid(payload.shopId).id),\n currency: payload.currency,\n };\n}\n\nfunction formatProductPayload(products?: ShopifyAnalyticsProduct[]): string[] {\n return products\n ? products.map((p: ShopifyAnalyticsProduct) => {\n const product = addDataIf(\n {\n variant_gid: p.variantGid,\n category: p.category,\n sku: p.sku,\n product_id: parseInt(parseGid(p.productGid).id),\n variant_id: parseInt(parseGid(p.variantGid).id),\n },\n {\n product_gid: p.productGid,\n name: p.name,\n variant: p.variantName || '',\n brand: p.brand,\n price: p.price,\n quantity: Number(p.quantity || 0),\n }\n );\n return JSON.stringify(product);\n })\n : [];\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const analyticsConstants = require("./analytics-constants.js");
|
|
4
|
+
const analyticsUtils = require("./analytics-utils.js");
|
|
5
|
+
const cookiesUtils = require("./cookies-utils.js");
|
|
6
|
+
const SCHEMA_ID = "trekkie_storefront_page_view/1.4";
|
|
7
|
+
const OXYGEN_DOMAIN = "myshopify.dev";
|
|
8
|
+
function pageView(payload) {
|
|
9
|
+
const pageViewPayload = payload;
|
|
10
|
+
const { id, resource } = analyticsUtils.parseGid(pageViewPayload.resourceId);
|
|
11
|
+
const resourceType = resource ? resource.toLowerCase() : void 0;
|
|
12
|
+
return [
|
|
13
|
+
analyticsUtils.schemaWrapper(
|
|
14
|
+
SCHEMA_ID,
|
|
15
|
+
analyticsUtils.addDataIf(
|
|
16
|
+
{
|
|
17
|
+
pageType: pageViewPayload.pageType,
|
|
18
|
+
customerId: pageViewPayload.customerId,
|
|
19
|
+
resourceType,
|
|
20
|
+
resourceId: parseInt(id)
|
|
21
|
+
},
|
|
22
|
+
formatPayload(pageViewPayload)
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
function formatPayload(payload) {
|
|
28
|
+
return {
|
|
29
|
+
appClientId: payload.shopifySalesChannel ? analyticsConstants.ShopifyAppId[payload.shopifySalesChannel] : analyticsConstants.ShopifyAppId.headless,
|
|
30
|
+
isMerchantRequest: isMerchantRequest(payload.url),
|
|
31
|
+
hydrogenSubchannelId: payload.storefrontId || "0",
|
|
32
|
+
isPersistentCookie: payload.hasUserConsent,
|
|
33
|
+
uniqToken: payload.uniqueToken,
|
|
34
|
+
visitToken: payload.visitToken,
|
|
35
|
+
microSessionId: cookiesUtils.buildUUID(),
|
|
36
|
+
microSessionCount: 1,
|
|
37
|
+
url: payload.url,
|
|
38
|
+
path: payload.path,
|
|
39
|
+
search: payload.search,
|
|
40
|
+
referrer: payload.referrer,
|
|
41
|
+
title: payload.title,
|
|
42
|
+
shopId: parseInt(analyticsUtils.parseGid(payload.shopId).id),
|
|
43
|
+
currency: payload.currency,
|
|
44
|
+
contentLanguage: payload.acceptedLanguage || "en"
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function isMerchantRequest(url) {
|
|
48
|
+
if (typeof url !== "string") {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const hostname = new URL(url).hostname;
|
|
52
|
+
if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === "localhost") {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
exports.pageView = pageView;
|
|
58
|
+
//# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-schema-trekkie-storefront-page-view.js","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: pageViewPayload.customerId,\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: payload.storefrontId || '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":["parseGid","schemaWrapper","addDataIf","ShopifyAppId","buildUUID"],"mappings":";;;;;AASA,MAAM,YAAY;AAClB,MAAM,gBAAgB;AAEf,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,EAAC,IAAI,SAAA,IAAYA,eAAAA,SAAS,gBAAgB,UAAU;AAC1D,QAAM,eAAe,WAAW,SAAS,YAAgB,IAAA;AAClD,SAAA;AAAA,IACLC,eAAA;AAAA,MACE;AAAA,MACAC,eAAA;AAAA,QACE;AAAA,UACE,UAAU,gBAAgB;AAAA,UAC1B,YAAY,gBAAgB;AAAA,UAC5B;AAAA,UACA,YAAY,SAAS,EAAE;AAAA,QACzB;AAAA,QACA,cAAc,eAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EAAA;AAEJ;AAEA,SAAS,cACP,SACwB;AACjB,SAAA;AAAA,IACL,aAAa,QAAQ,sBACjBC,mBAAAA,aAAa,QAAQ,mBAAmB,IACxCA,mBAAAA,aAAa;AAAA,IACjB,mBAAmB,kBAAkB,QAAQ,GAAG;AAAA,IAChD,sBAAsB,QAAQ,gBAAgB;AAAA,IAE9C,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,gBAAgBC,aAAAA,UAAU;AAAA,IAC1B,mBAAmB;AAAA,IAEnB,KAAK,QAAQ;AAAA,IACb,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,IAEf,QAAQ,SAASJ,eAAA,SAAS,QAAQ,MAAM,EAAE,EAAE;AAAA,IAC5C,UAAU,QAAQ;AAAA,IAClB,iBAAiB,QAAQ,oBAAoB;AAAA,EAAA;AAEjD;AAEA,SAAS,kBAAkB,KAAsB;AAC3C,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AACA,QAAM,WAAW,IAAI,IAAI,GAAG,EAAE;AAC9B,MAAI,SAAS,QAAQ,aAAa,MAAM,MAAM,aAAa,aAAa;AAC/D,WAAA;AAAA,EACT;AACO,SAAA;AACT;;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ShopifyAppId } from "./analytics-constants.mjs";
|
|
2
|
+
import { parseGid, schemaWrapper, addDataIf } from "./analytics-utils.mjs";
|
|
3
|
+
import { buildUUID } from "./cookies-utils.mjs";
|
|
4
|
+
const SCHEMA_ID = "trekkie_storefront_page_view/1.4";
|
|
5
|
+
const OXYGEN_DOMAIN = "myshopify.dev";
|
|
6
|
+
function pageView(payload) {
|
|
7
|
+
const pageViewPayload = payload;
|
|
8
|
+
const { id, resource } = parseGid(pageViewPayload.resourceId);
|
|
9
|
+
const resourceType = resource ? resource.toLowerCase() : void 0;
|
|
10
|
+
return [
|
|
11
|
+
schemaWrapper(
|
|
12
|
+
SCHEMA_ID,
|
|
13
|
+
addDataIf(
|
|
14
|
+
{
|
|
15
|
+
pageType: pageViewPayload.pageType,
|
|
16
|
+
customerId: pageViewPayload.customerId,
|
|
17
|
+
resourceType,
|
|
18
|
+
resourceId: parseInt(id)
|
|
19
|
+
},
|
|
20
|
+
formatPayload(pageViewPayload)
|
|
21
|
+
)
|
|
22
|
+
)
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
function formatPayload(payload) {
|
|
26
|
+
return {
|
|
27
|
+
appClientId: payload.shopifySalesChannel ? ShopifyAppId[payload.shopifySalesChannel] : ShopifyAppId.headless,
|
|
28
|
+
isMerchantRequest: isMerchantRequest(payload.url),
|
|
29
|
+
hydrogenSubchannelId: payload.storefrontId || "0",
|
|
30
|
+
isPersistentCookie: payload.hasUserConsent,
|
|
31
|
+
uniqToken: payload.uniqueToken,
|
|
32
|
+
visitToken: payload.visitToken,
|
|
33
|
+
microSessionId: buildUUID(),
|
|
34
|
+
microSessionCount: 1,
|
|
35
|
+
url: payload.url,
|
|
36
|
+
path: payload.path,
|
|
37
|
+
search: payload.search,
|
|
38
|
+
referrer: payload.referrer,
|
|
39
|
+
title: payload.title,
|
|
40
|
+
shopId: parseInt(parseGid(payload.shopId).id),
|
|
41
|
+
currency: payload.currency,
|
|
42
|
+
contentLanguage: payload.acceptedLanguage || "en"
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function isMerchantRequest(url) {
|
|
46
|
+
if (typeof url !== "string") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const hostname = new URL(url).hostname;
|
|
50
|
+
if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === "localhost") {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
pageView
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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: pageViewPayload.customerId,\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: payload.storefrontId || '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,YAAgB,IAAA;AAClD,SAAA;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,UAAU,gBAAgB;AAAA,UAC1B,YAAY,gBAAgB;AAAA,UAC5B;AAAA,UACA,YAAY,SAAS,EAAE;AAAA,QACzB;AAAA,QACA,cAAc,eAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EAAA;AAEJ;AAEA,SAAS,cACP,SACwB;AACjB,SAAA;AAAA,IACL,aAAa,QAAQ,sBACjB,aAAa,QAAQ,mBAAmB,IACxC,aAAa;AAAA,IACjB,mBAAmB,kBAAkB,QAAQ,GAAG;AAAA,IAChD,sBAAsB,QAAQ,gBAAgB;AAAA,IAE9C,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,gBAAgB,UAAU;AAAA,IAC1B,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;AAC3C,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AACA,QAAM,WAAW,IAAI,IAAI,GAAG,EAAE;AAC9B,MAAI,SAAS,QAAQ,aAAa,MAAM,MAAM,aAAa,aAAa;AAC/D,WAAA;AAAA,EACT;AACO,SAAA;AACT;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function schemaWrapper(schemaId, payload) {
|
|
4
|
+
return {
|
|
5
|
+
schema_id: schemaId,
|
|
6
|
+
payload,
|
|
7
|
+
metadata: {
|
|
8
|
+
event_created_at_ms: Date.now()
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function parseGid(gid) {
|
|
13
|
+
const defaultReturn = { id: "", resource: null };
|
|
14
|
+
if (typeof gid !== "string") {
|
|
15
|
+
return defaultReturn;
|
|
16
|
+
}
|
|
17
|
+
const matches = gid.match(/^gid:\/\/shopify\/(\w+)\/([a-z0-9]+)/);
|
|
18
|
+
if (!matches || matches.length === 1) {
|
|
19
|
+
return defaultReturn;
|
|
20
|
+
}
|
|
21
|
+
const id = matches[2] ?? null;
|
|
22
|
+
const resource = matches[1] ?? null;
|
|
23
|
+
return { id, resource };
|
|
24
|
+
}
|
|
25
|
+
function addDataIf(keyValuePairs, formattedData) {
|
|
26
|
+
if (typeof keyValuePairs !== "object") {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
Object.entries(keyValuePairs).forEach(([key, value]) => {
|
|
30
|
+
if (value) {
|
|
31
|
+
formattedData[key] = value;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return formattedData;
|
|
35
|
+
}
|
|
36
|
+
function errorIfServer(fnName) {
|
|
37
|
+
if (typeof document === "undefined") {
|
|
38
|
+
console.error(
|
|
39
|
+
`${fnName} should only be used within the useEffect callback or event handlers`
|
|
40
|
+
);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
exports.addDataIf = addDataIf;
|
|
46
|
+
exports.errorIfServer = errorIfServer;
|
|
47
|
+
exports.parseGid = parseGid;
|
|
48
|
+
exports.schemaWrapper = schemaWrapper;
|
|
49
|
+
//# sourceMappingURL=analytics-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-utils.js","sources":["../../src/analytics-utils.ts"],"sourcesContent":["import type {\n ShopifyMonorailPayload,\n ShopifyMonorailEvent,\n ShopifyGId,\n} from './analytics-types.js';\n\n/**\n * Builds a Shopify Monorail event from a Shopify Monorail payload and a schema ID.\n * @param payload - The Monorail payload\n * @param schemaId - The schema ID to use\n * @returns The formatted payload\n **/\nexport function schemaWrapper(\n schemaId: string,\n payload: ShopifyMonorailPayload\n): ShopifyMonorailEvent {\n return {\n schema_id: schemaId,\n payload,\n metadata: {\n event_created_at_ms: Date.now(),\n },\n };\n}\n\n/**\n * Parses global id (gid) and returns the resource type and id.\n * @see https://shopify.dev/api/usage/gids\n * @param gid - A shopify GID (string)\n *\n * @example\n * ```ts\n * const {id, resource} = parseGid('gid://shopify/Order/123')\n * // => id = \"123\", resource = 'Order'\n *\n * * const {id, resource} = parseGid('gid://shopify/Cart/abc123')\n * // => id = \"abc123\", resource = 'Cart'\n * ```\n **/\nexport function parseGid(gid: string | undefined): ShopifyGId {\n const defaultReturn = {id: '', resource: null};\n\n if (typeof gid !== 'string') {\n return defaultReturn;\n }\n\n // TODO: add support for parsing query parameters on complex gids\n // Reference: https://shopify.dev/api/usage/gids\n const matches = gid.match(/^gid:\\/\\/shopify\\/(\\w+)\\/([a-z0-9]+)/);\n\n if (!matches || matches.length === 1) {\n return defaultReturn;\n }\n const id = matches[2] ?? null;\n const resource = matches[1] ?? null;\n\n return {id, resource};\n}\n\n/**\n * Filters properties from an object and returns a new object with only the properties that have a truthy value.\n * @param keyValuePairs - An object of key-value pairs\n * @param formattedData - An object which will hold the truthy values\n * @returns The formatted object\n **/\nexport function addDataIf(\n keyValuePairs: ShopifyMonorailPayload,\n formattedData: ShopifyMonorailPayload\n): ShopifyMonorailPayload {\n if (typeof keyValuePairs !== 'object') {\n return {};\n }\n Object.entries(keyValuePairs).forEach(([key, value]) => {\n if (value) {\n formattedData[key] = value;\n }\n });\n return formattedData;\n}\n\n/**\n * Utility that errors if a function is called on the server.\n * @param fnName - The name of the function\n * @returns A boolean\n **/\nexport function errorIfServer(fnName: string): boolean {\n if (typeof document === 'undefined') {\n console.error(\n `${fnName} should only be used within the useEffect callback or event handlers`\n );\n return true;\n }\n return false;\n}\n"],"names":[],"mappings":";;AAYgB,SAAA,cACd,UACA,SACsB;AACf,SAAA;AAAA,IACL,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,qBAAqB,KAAK,IAAI;AAAA,IAChC;AAAA,EAAA;AAEJ;AAgBO,SAAS,SAAS,KAAqC;AAC5D,QAAM,gBAAgB,EAAC,IAAI,IAAI,UAAU,KAAI;AAEzC,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AAIM,QAAA,UAAU,IAAI,MAAM,sCAAsC;AAEhE,MAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AAC7B,WAAA;AAAA,EACT;AACM,QAAA,KAAK,QAAQ,CAAC,KAAK;AACnB,QAAA,WAAW,QAAQ,CAAC,KAAK;AAExB,SAAA,EAAC,IAAI;AACd;AAQgB,SAAA,UACd,eACA,eACwB;AACpB,MAAA,OAAO,kBAAkB,UAAU;AACrC,WAAO;EACT;AACO,SAAA,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,QAAI,OAAO;AACT,oBAAc,GAAG,IAAI;AAAA,IACvB;AAAA,EAAA,CACD;AACM,SAAA;AACT;AAOO,SAAS,cAAc,QAAyB;AACjD,MAAA,OAAO,aAAa,aAAa;AAC3B,YAAA;AAAA,MACN,GAAG;AAAA,IAAA;AAEE,WAAA;AAAA,EACT;AACO,SAAA;AACT;;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
function schemaWrapper(schemaId, payload) {
|
|
2
|
+
return {
|
|
3
|
+
schema_id: schemaId,
|
|
4
|
+
payload,
|
|
5
|
+
metadata: {
|
|
6
|
+
event_created_at_ms: Date.now()
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function parseGid(gid) {
|
|
11
|
+
const defaultReturn = { id: "", resource: null };
|
|
12
|
+
if (typeof gid !== "string") {
|
|
13
|
+
return defaultReturn;
|
|
14
|
+
}
|
|
15
|
+
const matches = gid.match(/^gid:\/\/shopify\/(\w+)\/([a-z0-9]+)/);
|
|
16
|
+
if (!matches || matches.length === 1) {
|
|
17
|
+
return defaultReturn;
|
|
18
|
+
}
|
|
19
|
+
const id = matches[2] ?? null;
|
|
20
|
+
const resource = matches[1] ?? null;
|
|
21
|
+
return { id, resource };
|
|
22
|
+
}
|
|
23
|
+
function addDataIf(keyValuePairs, formattedData) {
|
|
24
|
+
if (typeof keyValuePairs !== "object") {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
Object.entries(keyValuePairs).forEach(([key, value]) => {
|
|
28
|
+
if (value) {
|
|
29
|
+
formattedData[key] = value;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return formattedData;
|
|
33
|
+
}
|
|
34
|
+
function errorIfServer(fnName) {
|
|
35
|
+
if (typeof document === "undefined") {
|
|
36
|
+
console.error(
|
|
37
|
+
`${fnName} should only be used within the useEffect callback or event handlers`
|
|
38
|
+
);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
addDataIf,
|
|
45
|
+
errorIfServer,
|
|
46
|
+
parseGid,
|
|
47
|
+
schemaWrapper
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=analytics-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-utils.mjs","sources":["../../src/analytics-utils.ts"],"sourcesContent":["import type {\n ShopifyMonorailPayload,\n ShopifyMonorailEvent,\n ShopifyGId,\n} from './analytics-types.js';\n\n/**\n * Builds a Shopify Monorail event from a Shopify Monorail payload and a schema ID.\n * @param payload - The Monorail payload\n * @param schemaId - The schema ID to use\n * @returns The formatted payload\n **/\nexport function schemaWrapper(\n schemaId: string,\n payload: ShopifyMonorailPayload\n): ShopifyMonorailEvent {\n return {\n schema_id: schemaId,\n payload,\n metadata: {\n event_created_at_ms: Date.now(),\n },\n };\n}\n\n/**\n * Parses global id (gid) and returns the resource type and id.\n * @see https://shopify.dev/api/usage/gids\n * @param gid - A shopify GID (string)\n *\n * @example\n * ```ts\n * const {id, resource} = parseGid('gid://shopify/Order/123')\n * // => id = \"123\", resource = 'Order'\n *\n * * const {id, resource} = parseGid('gid://shopify/Cart/abc123')\n * // => id = \"abc123\", resource = 'Cart'\n * ```\n **/\nexport function parseGid(gid: string | undefined): ShopifyGId {\n const defaultReturn = {id: '', resource: null};\n\n if (typeof gid !== 'string') {\n return defaultReturn;\n }\n\n // TODO: add support for parsing query parameters on complex gids\n // Reference: https://shopify.dev/api/usage/gids\n const matches = gid.match(/^gid:\\/\\/shopify\\/(\\w+)\\/([a-z0-9]+)/);\n\n if (!matches || matches.length === 1) {\n return defaultReturn;\n }\n const id = matches[2] ?? null;\n const resource = matches[1] ?? null;\n\n return {id, resource};\n}\n\n/**\n * Filters properties from an object and returns a new object with only the properties that have a truthy value.\n * @param keyValuePairs - An object of key-value pairs\n * @param formattedData - An object which will hold the truthy values\n * @returns The formatted object\n **/\nexport function addDataIf(\n keyValuePairs: ShopifyMonorailPayload,\n formattedData: ShopifyMonorailPayload\n): ShopifyMonorailPayload {\n if (typeof keyValuePairs !== 'object') {\n return {};\n }\n Object.entries(keyValuePairs).forEach(([key, value]) => {\n if (value) {\n formattedData[key] = value;\n }\n });\n return formattedData;\n}\n\n/**\n * Utility that errors if a function is called on the server.\n * @param fnName - The name of the function\n * @returns A boolean\n **/\nexport function errorIfServer(fnName: string): boolean {\n if (typeof document === 'undefined') {\n console.error(\n `${fnName} should only be used within the useEffect callback or event handlers`\n );\n return true;\n }\n return false;\n}\n"],"names":[],"mappings":"AAYgB,SAAA,cACd,UACA,SACsB;AACf,SAAA;AAAA,IACL,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,qBAAqB,KAAK,IAAI;AAAA,IAChC;AAAA,EAAA;AAEJ;AAgBO,SAAS,SAAS,KAAqC;AAC5D,QAAM,gBAAgB,EAAC,IAAI,IAAI,UAAU,KAAI;AAEzC,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AAIM,QAAA,UAAU,IAAI,MAAM,sCAAsC;AAEhE,MAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AAC7B,WAAA;AAAA,EACT;AACM,QAAA,KAAK,QAAQ,CAAC,KAAK;AACnB,QAAA,WAAW,QAAQ,CAAC,KAAK;AAExB,SAAA,EAAC,IAAI;AACd;AAQgB,SAAA,UACd,eACA,eACwB;AACpB,MAAA,OAAO,kBAAkB,UAAU;AACrC,WAAO;EACT;AACO,SAAA,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,QAAI,OAAO;AACT,oBAAc,GAAG,IAAI;AAAA,IACvB;AAAA,EAAA,CACD;AACM,SAAA;AACT;AAOO,SAAS,cAAc,QAAyB;AACjD,MAAA,OAAO,aAAa,aAAa;AAC3B,YAAA;AAAA,MACN,GAAG;AAAA,IAAA;AAEE,WAAA;AAAA,EACT;AACO,SAAA;AACT;"}
|