@beamimpact/web-sdk 1.56.3 → 1.57.0
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/dist/chunks/_share-dialog-dependencies-U9953n3E.esm.js +2 -0
- package/dist/chunks/{_share-dialog-dependencies-Bk60ibnw.esm.js.map → _share-dialog-dependencies-U9953n3E.esm.js.map} +1 -1
- package/dist/chunks/{order-page-CSEjG6ma.esm.d.ts → cart-ChovPXmM.esm.d.ts} +5 -28
- package/dist/chunks/css-card-grid-BUidQqf0.esm.js +21 -0
- package/dist/chunks/css-card-grid-BUidQqf0.esm.js.map +1 -0
- package/dist/chunks/handlebars-B_i-to-h.esm.js +23 -0
- package/dist/chunks/handlebars-B_i-to-h.esm.js.map +1 -0
- package/dist/chunks/index--PfL-_nX.esm.js +2 -0
- package/dist/chunks/index--PfL-_nX.esm.js.map +1 -0
- package/dist/chunks/index-B4xKTDaF.esm.js +2 -0
- package/dist/chunks/index-B4xKTDaF.esm.js.map +1 -0
- package/dist/chunks/{index-DDCtGN21.esm.d.ts → index-BG4XJXUa.esm.d.ts} +1 -5
- package/dist/chunks/index-BHglsF5j.esm.js +2 -0
- package/dist/chunks/index-BHglsF5j.esm.js.map +1 -0
- package/dist/chunks/{index-hghrT7Z_.esm.d.ts → index-BoIHE1tC.esm.d.ts} +3 -0
- package/dist/chunks/index-CTsxQr7R.esm.js +32 -0
- package/dist/chunks/index-CTsxQr7R.esm.js.map +1 -0
- package/dist/chunks/{index-UMeAzKTG.esm.js → index-CVmIOuEY.esm.js} +6 -6
- package/dist/chunks/{index-BEEmYYxP.esm.js.map → index-CVmIOuEY.esm.js.map} +1 -1
- package/dist/chunks/{index-BLlSL37B.esm.d.ts → index-CdinWvYu.esm.d.ts} +1 -1
- package/dist/chunks/index-DBKUxzAl.esm.js +32 -0
- package/dist/chunks/index-DBKUxzAl.esm.js.map +1 -0
- package/dist/chunks/{index-BEEmYYxP.esm.js → index-DTw-q6W4.esm.js} +6 -6
- package/dist/chunks/{index-UMeAzKTG.esm.js.map → index-DTw-q6W4.esm.js.map} +1 -1
- package/dist/chunks/index-DhHhFTBE.esm.js +31 -0
- package/dist/chunks/index-DhHhFTBE.esm.js.map +1 -0
- package/dist/chunks/{index-C_u1FXtO.esm.d.ts → index-IQOpw0qx.esm.d.ts} +1 -10
- package/dist/chunks/{index-DyUuvdr3.esm.d.ts → index-_0XeyyF9.esm.d.ts} +1 -1
- package/dist/chunks/index-cb5vYQx0.esm.js +2 -0
- package/dist/chunks/index-cb5vYQx0.esm.js.map +1 -0
- package/dist/chunks/{lit-JRlupCB5.esm.js → lit-BEag9MFp.esm.js} +2 -2
- package/dist/chunks/{lit-JRlupCB5.esm.js.map → lit-BEag9MFp.esm.js.map} +1 -1
- package/dist/chunks/{lodash-BSs6Il-c.esm.js → lodash-CrMU6wKg.esm.js} +2 -2
- package/dist/chunks/{lodash-BSs6Il-c.esm.js.map → lodash-CrMU6wKg.esm.js.map} +1 -1
- package/dist/chunks/{promo-pill-label-D_4zJ7uy.esm.js → promo-pill-label-BdTmmg_U.esm.js} +2 -2
- package/dist/chunks/{promo-pill-label-D_4zJ7uy.esm.js.map → promo-pill-label-BdTmmg_U.esm.js.map} +1 -1
- package/dist/chunks/{responsive-CIV4sFdH.esm.js → responsive-aN8P5PqD.esm.js} +2 -2
- package/dist/chunks/{responsive-CIV4sFdH.esm.js.map → responsive-aN8P5PqD.esm.js.map} +1 -1
- package/dist/chunks/{routes-OxC3Ah30.esm.d.ts → routes-D6Gtw6kZ.esm.d.ts} +1 -1
- package/dist/chunks/share-button-7sI6zg-x.esm.js +54 -0
- package/dist/chunks/share-button-7sI6zg-x.esm.js.map +1 -0
- package/dist/chunks/{share-button-Dzc7loia.esm.js → share-button-BaIbuJOl.esm.js} +3 -3
- package/dist/chunks/{share-button-DkTpGZk1.esm.js.map → share-button-BaIbuJOl.esm.js.map} +1 -1
- package/dist/chunks/{update-cart-DWgFuC7U.esm.d.ts → update-cart-CcgzHTEm.esm.d.ts} +1 -2
- package/dist/chunks/utils-BjhsDvuU.esm.js +2 -0
- package/dist/chunks/utils-BjhsDvuU.esm.js.map +1 -0
- package/dist/chunks/{openapi-spec-B4z4_CMq.esm.d.ts → utils-D8HO_RIu.esm.d.ts} +597 -11
- package/dist/chunks/{vendor-ckSdd6aH.esm.js → vendor-DUOg5fL-.esm.js} +2 -2
- package/dist/chunks/{vendor-ckSdd6aH.esm.js.map → vendor-DUOg5fL-.esm.js.map} +1 -1
- package/dist/components/beam-partner-logos.d.ts +3 -1
- package/dist/components/beam-partner-logos.esm.js +1 -1
- package/dist/components/beam-partner-logos.js +1 -1
- package/dist/components/community-impact.d.ts +3 -2
- package/dist/components/community-impact.esm.js +6 -6
- package/dist/components/community-impact.esm.js.map +1 -1
- package/dist/components/community-impact.js +6 -6
- package/dist/components/community-impact.js.map +1 -1
- package/dist/components/cumulative-impact.d.ts +3 -2
- package/dist/components/cumulative-impact.esm.js +11 -11
- package/dist/components/cumulative-impact.esm.js.map +1 -1
- package/dist/components/cumulative-impact.js +11 -11
- package/dist/components/cumulative-impact.js.map +1 -1
- package/dist/components/impact-overview.d.ts +3 -2
- package/dist/components/impact-overview.esm.js +5 -5
- package/dist/components/impact-overview.esm.js.map +1 -1
- package/dist/components/impact-overview.js +5 -5
- package/dist/components/impact-overview.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +3 -4
- package/dist/components/post-purchase.esm.js +1 -31
- package/dist/components/post-purchase.esm.js.map +1 -1
- package/dist/components/post-purchase.js +1 -31
- package/dist/components/post-purchase.js.map +1 -1
- package/dist/components/product-details-page.d.ts +4 -2
- package/dist/components/product-details-page.esm.js +4 -4
- package/dist/components/product-details-page.esm.js.map +1 -1
- package/dist/components/product-details-page.js +4 -4
- package/dist/components/product-details-page.js.map +1 -1
- package/dist/components/redeem-transaction.d.ts +3 -4
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.d.ts +3 -4
- package/dist/components/select-nonprofit.esm.js +6 -6
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +6 -6
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.d.ts +3 -2
- package/dist/components/select-subscription-nonprofit.esm.js +5 -5
- package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.js +5 -5
- package/dist/components/select-subscription-nonprofit.js.map +1 -1
- package/dist/components/shopify.d.ts +9 -12
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.esm.js.map +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/shopify.js.map +1 -1
- package/dist/components/social-share.d.ts +3 -2
- package/dist/components/social-share.esm.js +2 -2
- package/dist/components/social-share.esm.js.map +1 -1
- package/dist/components/social-share.js +2 -2
- package/dist/components/social-share.js.map +1 -1
- package/dist/components/subscriber-select-nonprofit.d.ts +59 -0
- package/dist/components/subscriber-select-nonprofit.esm.js +137 -0
- package/dist/components/subscriber-select-nonprofit.esm.js.map +1 -0
- package/dist/components/subscriber-select-nonprofit.js +137 -0
- package/dist/components/subscriber-select-nonprofit.js.map +1 -0
- package/dist/components/subscription-impact.d.ts +3 -2
- package/dist/components/subscription-impact.esm.js +6 -6
- package/dist/components/subscription-impact.esm.js.map +1 -1
- package/dist/components/subscription-impact.js +6 -6
- package/dist/components/subscription-impact.js.map +1 -1
- package/dist/components/subscription-management.d.ts +4 -5
- package/dist/components/subscription-management.esm.js +4 -4
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +4 -4
- package/dist/components/subscription-management.js.map +1 -1
- package/dist/index.d.ts +39 -38
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.d.ts +3 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.esm.js.map +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/beam.js.map +1 -1
- package/dist/integrations/cart.d.ts +4 -4
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/logs.d.ts +4 -2
- package/dist/integrations/logs.esm.js +1 -1
- package/dist/integrations/logs.js +1 -1
- package/dist/integrations/promoManager.d.ts +3 -1
- package/dist/integrations/promoManager.esm.js +1 -1
- package/dist/integrations/promoManager.esm.js.map +1 -1
- package/dist/integrations/promoManager.js +1 -1
- package/dist/integrations/promoManager.js.map +1 -1
- package/dist/integrations/session.esm.js +1 -1
- package/dist/integrations/session.js +1 -1
- package/dist/integrations/shopify-order.d.ts +38 -0
- package/dist/integrations/shopify-order.esm.js +2 -0
- package/dist/integrations/shopify-order.esm.js.map +1 -0
- package/dist/integrations/shopify-order.js +2 -0
- package/dist/integrations/shopify-order.js.map +1 -0
- package/dist/integrations/shopify.d.ts +5 -12
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.d.ts +3 -1
- package/dist/integrations/statsig.esm.js +2 -2
- package/dist/integrations/statsig.esm.js.map +1 -1
- package/dist/integrations/statsig.js +2 -2
- package/dist/integrations/statsig.js.map +1 -1
- package/dist/integrations/utils.d.ts +1 -14
- package/dist/integrations/utils.esm.js +1 -1
- package/dist/integrations/utils.js +1 -1
- package/dist/react/beam-partner-logos.d.ts +3 -1
- package/dist/react/beam-partner-logos.esm.js +1 -1
- package/dist/react/beam-partner-logos.js +1 -1
- package/dist/react/community-impact.d.ts +3 -2
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.esm.js.map +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/community-impact.js.map +1 -1
- package/dist/react/cumulative-impact.d.ts +3 -2
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.esm.js.map +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/cumulative-impact.js.map +1 -1
- package/dist/react/impact-overview.d.ts +3 -2
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.esm.js.map +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/impact-overview.js.map +1 -1
- package/dist/react/index.d.ts +6 -7
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +3 -4
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.esm.js.map +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/post-purchase.js.map +1 -1
- package/dist/react/product-details-page.d.ts +4 -2
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.esm.js.map +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/product-details-page.js.map +1 -1
- package/dist/react/redeem-transaction.d.ts +3 -6
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.esm.js.map +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/redeem-transaction.js.map +1 -1
- package/dist/react/select-nonprofit.d.ts +3 -6
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.esm.js.map +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-nonprofit.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.d.ts +3 -6
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/select-subscription-nonprofit.js.map +1 -1
- package/dist/react/shopify.d.ts +2 -2
- package/dist/react/shopify.esm.js +1 -1
- package/dist/react/shopify.esm.js.map +1 -1
- package/dist/react/shopify.js +1 -1
- package/dist/react/shopify.js.map +1 -1
- package/dist/react/social-share.d.ts +3 -2
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.esm.js.map +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/social-share.js.map +1 -1
- package/dist/react/subscriber-select-nonprofit.d.ts +14 -0
- package/dist/react/subscriber-select-nonprofit.esm.js +2 -0
- package/dist/react/subscriber-select-nonprofit.esm.js.map +1 -0
- package/dist/react/subscriber-select-nonprofit.js +2 -0
- package/dist/react/subscriber-select-nonprofit.js.map +1 -0
- package/dist/react/subscription-impact.d.ts +3 -2
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.esm.js.map +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-impact.js.map +1 -1
- package/dist/react/subscription-management.d.ts +4 -5
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.esm.js.map +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/react/subscription-management.js.map +1 -1
- package/dist/utils/beam-errors.d.ts +3 -1
- package/dist/utils/beam-errors.esm.js +1 -1
- package/dist/utils/beam-errors.js +1 -1
- package/dist/utils/cart.d.ts +3 -18
- package/dist/utils/cart.esm.js +1 -1
- package/dist/utils/cart.esm.js.map +1 -1
- package/dist/utils/cart.js +1 -1
- package/dist/utils/cart.js.map +1 -1
- package/dist/utils/cookies.d.ts +3 -18
- package/dist/utils/cookies.esm.js +1 -1
- package/dist/utils/cookies.esm.js.map +1 -1
- package/dist/utils/cookies.js +1 -1
- package/dist/utils/cookies.js.map +1 -1
- package/dist/utils/debounce.esm.js +1 -1
- package/dist/utils/debounce.js +1 -1
- package/dist/utils/events.d.ts +3 -5
- package/dist/utils/events.esm.js +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/is-equal.esm.js +1 -1
- package/dist/utils/is-equal.js +1 -1
- package/dist/utils/local-storage.d.ts +3 -19
- package/dist/utils/local-storage.esm.js +1 -1
- package/dist/utils/local-storage.esm.js.map +1 -1
- package/dist/utils/local-storage.js +1 -1
- package/dist/utils/local-storage.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -8
- package/dist/utils/logger.esm.js +1 -1
- package/dist/utils/logger.esm.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/makeApiKeyHeader.d.ts +3 -5
- package/dist/utils/makeApiKeyHeader.esm.js +1 -1
- package/dist/utils/makeApiKeyHeader.esm.js.map +1 -1
- package/dist/utils/makeApiKeyHeader.js +1 -1
- package/dist/utils/makeApiKeyHeader.js.map +1 -1
- package/dist/utils/memoize-last.d.ts +3 -17
- package/dist/utils/memoize-last.esm.js +1 -1
- package/dist/utils/memoize-last.esm.js.map +1 -1
- package/dist/utils/memoize-last.js +1 -1
- package/dist/utils/memoize-last.js.map +1 -1
- package/dist/utils/network-listeners.d.ts +3 -3
- package/dist/utils/network-listeners.esm.js +1 -1
- package/dist/utils/network-listeners.esm.js.map +1 -1
- package/dist/utils/network-listeners.js +1 -1
- package/dist/utils/network-listeners.js.map +1 -1
- package/dist/utils/promoManager.d.ts +3 -111
- package/dist/utils/promoManager.esm.js +1 -1
- package/dist/utils/promoManager.esm.js.map +1 -1
- package/dist/utils/promoManager.js +1 -1
- package/dist/utils/promoManager.js.map +1 -1
- package/dist/utils/remote-session.d.ts +3 -9
- package/dist/utils/remote-session.esm.js +1 -1
- package/dist/utils/remote-session.esm.js.map +1 -1
- package/dist/utils/remote-session.js +1 -1
- package/dist/utils/remote-session.js.map +1 -1
- package/dist/utils/wait-for-element.d.ts +3 -5
- package/dist/utils/wait-for-element.esm.js +1 -1
- package/dist/utils/wait-for-element.esm.js.map +1 -1
- package/dist/utils/wait-for-element.js +1 -1
- package/dist/utils/wait-for-element.js.map +1 -1
- package/package.json +9 -6
- package/dist/chunks/_share-dialog-dependencies-Bk60ibnw.esm.js +0 -2
- package/dist/chunks/_share-dialog-dependencies-D6vA_2f6.esm.js +0 -2
- package/dist/chunks/_share-dialog-dependencies-D6vA_2f6.esm.js.map +0 -1
- package/dist/chunks/beam-errors-Ci0d3926.esm.js +0 -2
- package/dist/chunks/beam-errors-Ci0d3926.esm.js.map +0 -1
- package/dist/chunks/beam-errors-DUQ9pK2V.esm.d.ts +0 -46
- package/dist/chunks/cart-contents-CEoSx3y4.esm.d.ts +0 -18
- package/dist/chunks/cart-contents-DkoytiZh.esm.js +0 -2
- package/dist/chunks/cart-contents-DkoytiZh.esm.js.map +0 -1
- package/dist/chunks/css-card-grid-DixMt6ek.esm.js +0 -20
- package/dist/chunks/css-card-grid-DixMt6ek.esm.js.map +0 -1
- package/dist/chunks/enforce-config-DHnpgqSK.esm.js +0 -3
- package/dist/chunks/enforce-config-DHnpgqSK.esm.js.map +0 -1
- package/dist/chunks/enforce-config-DUbQnaLO.esm.js +0 -3
- package/dist/chunks/enforce-config-DUbQnaLO.esm.js.map +0 -1
- package/dist/chunks/events-COWOQoLW.esm.js +0 -2
- package/dist/chunks/events-COWOQoLW.esm.js.map +0 -1
- package/dist/chunks/events-Dwqfqbij.esm.d.ts +0 -214
- package/dist/chunks/index-8rOpG9kf.esm.js +0 -2
- package/dist/chunks/index-8rOpG9kf.esm.js.map +0 -1
- package/dist/chunks/index-B1GmdVT3.esm.js +0 -2
- package/dist/chunks/index-B1GmdVT3.esm.js.map +0 -1
- package/dist/chunks/index-B2dxbh1d.esm.js +0 -2
- package/dist/chunks/index-B2dxbh1d.esm.js.map +0 -1
- package/dist/chunks/index-BIEV1MH0.esm.js +0 -2
- package/dist/chunks/index-BIEV1MH0.esm.js.map +0 -1
- package/dist/chunks/index-BaWMWAyt.esm.js +0 -2
- package/dist/chunks/index-BaWMWAyt.esm.js.map +0 -1
- package/dist/chunks/index-BeX4QeUu.esm.js +0 -2
- package/dist/chunks/index-BeX4QeUu.esm.js.map +0 -1
- package/dist/chunks/index-C3hpHWh1.esm.js +0 -2
- package/dist/chunks/index-C3hpHWh1.esm.js.map +0 -1
- package/dist/chunks/index-C3v-y56g.esm.js +0 -2
- package/dist/chunks/index-C3v-y56g.esm.js.map +0 -1
- package/dist/chunks/index-CqqF1sQo.esm.js +0 -2
- package/dist/chunks/index-CqqF1sQo.esm.js.map +0 -1
- package/dist/chunks/index-Cs4Kp9X4.esm.js +0 -2
- package/dist/chunks/index-Cs4Kp9X4.esm.js.map +0 -1
- package/dist/chunks/index-D20ifskY.esm.d.ts +0 -21
- package/dist/chunks/index-D3hxLDQF.esm.js +0 -2
- package/dist/chunks/index-D3hxLDQF.esm.js.map +0 -1
- package/dist/chunks/index-D5TZB-zM.esm.js +0 -2
- package/dist/chunks/index-D5TZB-zM.esm.js.map +0 -1
- package/dist/chunks/index-D6qJfs7_.esm.js +0 -2
- package/dist/chunks/index-D6qJfs7_.esm.js.map +0 -1
- package/dist/chunks/index-DSJACB_p.esm.js +0 -2
- package/dist/chunks/index-DSJACB_p.esm.js.map +0 -1
- package/dist/chunks/index-DmjZnpod.esm.js +0 -2
- package/dist/chunks/index-DmjZnpod.esm.js.map +0 -1
- package/dist/chunks/index-EJRmgmQu.esm.d.ts +0 -74
- package/dist/chunks/index-mppXVWCH.esm.js +0 -2
- package/dist/chunks/index-mppXVWCH.esm.js.map +0 -1
- package/dist/chunks/index-n62IxH5D.esm.js +0 -2
- package/dist/chunks/index-n62IxH5D.esm.js.map +0 -1
- package/dist/chunks/index-nAPzvUWE.esm.js +0 -2
- package/dist/chunks/index-nAPzvUWE.esm.js.map +0 -1
- package/dist/chunks/index-xcGPhpiO.esm.d.ts +0 -44
- package/dist/chunks/is-all-html-elements-fcB7UUA1.esm.js +0 -2
- package/dist/chunks/is-all-html-elements-fcB7UUA1.esm.js.map +0 -1
- package/dist/chunks/loading-template-BFvXaTlD.esm.js +0 -2
- package/dist/chunks/loading-template-BFvXaTlD.esm.js.map +0 -1
- package/dist/chunks/localize-Dg7NgKIP.esm.js +0 -31
- package/dist/chunks/localize-Dg7NgKIP.esm.js.map +0 -1
- package/dist/chunks/localize-DkAbsh05.esm.js +0 -31
- package/dist/chunks/localize-DkAbsh05.esm.js.map +0 -1
- package/dist/chunks/order-page-B0WbVrvh.esm.js +0 -2
- package/dist/chunks/order-page-B0WbVrvh.esm.js.map +0 -1
- package/dist/chunks/order-page-CT3hnhzf.esm.js +0 -2
- package/dist/chunks/order-page-CT3hnhzf.esm.js.map +0 -1
- package/dist/chunks/progress-bar-B82FOT8n.esm.js +0 -54
- package/dist/chunks/progress-bar-B82FOT8n.esm.js.map +0 -1
- package/dist/chunks/promo-pill-label-DcsiJS_N.esm.js +0 -16
- package/dist/chunks/promo-pill-label-DcsiJS_N.esm.js.map +0 -1
- package/dist/chunks/promo-types-CmZzhkpN.esm.d.ts +0 -15
- package/dist/chunks/promo-types-DKAOFHJr.esm.js +0 -2
- package/dist/chunks/promo-types-DKAOFHJr.esm.js.map +0 -1
- package/dist/chunks/routes-BIMwJ8u9.esm.js +0 -2
- package/dist/chunks/routes-BIMwJ8u9.esm.js.map +0 -1
- package/dist/chunks/routes-DSu5s3K7.esm.js +0 -2
- package/dist/chunks/routes-DSu5s3K7.esm.js.map +0 -1
- package/dist/chunks/share-button-CLMw49f5.esm.js +0 -2
- package/dist/chunks/share-button-CLMw49f5.esm.js.map +0 -1
- package/dist/chunks/share-button-DXS3zbJz.esm.js +0 -2
- package/dist/chunks/share-button-DXS3zbJz.esm.js.map +0 -1
- package/dist/chunks/share-button-DkTpGZk1.esm.js +0 -172
- package/dist/chunks/share-button-Dzc7loia.esm.js.map +0 -1
- package/dist/chunks/types-D_PLq1pj.esm.d.ts +0 -28
- package/dist/chunks/types-DfRc36jU.esm.d.ts +0 -15
- package/dist/chunks/update-cart-ByUvNLyZ.esm.js +0 -2
- package/dist/chunks/update-cart-ByUvNLyZ.esm.js.map +0 -1
- package/dist/chunks/update-cart-yj_9VGHp.esm.js +0 -2
- package/dist/chunks/update-cart-yj_9VGHp.esm.js.map +0 -1
- package/dist/integrations/index.d.ts +0 -31
- package/dist/integrations/index.esm.js +0 -2
- package/dist/integrations/index.esm.js.map +0 -1
- package/dist/integrations/index.js +0 -2
- package/dist/integrations/index.js.map +0 -1
- package/dist/utils/index.d.ts +0 -16
- package/dist/utils/index.esm.js +0 -2
- package/dist/utils/index.esm.js.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import"../chunks/lodash-CrMU6wKg.esm.js";import{J as r}from"../chunks/utils-BjhsDvuU.esm.js";export{r as memoizeLast};
|
|
2
2
|
//# sourceMappingURL=memoize-last.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize-last.esm.js","sources":[
|
|
1
|
+
{"version":3,"file":"memoize-last.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import"../chunks/lodash-CrMU6wKg.esm.js";import{J as r}from"../chunks/utils-BjhsDvuU.esm.js";export{r as memoizeLast};
|
|
2
2
|
//# sourceMappingURL=memoize-last.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize-last.js","sources":[
|
|
1
|
+
{"version":3,"file":"memoize-last.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export { i as initNetworkListeners } from '../chunks/utils-D8HO_RIu.esm.js';
|
|
2
|
+
import 'lodash-es/debounce';
|
|
3
|
+
import 'lodash-es/isEqual';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as i}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{i as initNetworkListeners};
|
|
2
2
|
//# sourceMappingURL=network-listeners.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-listeners.esm.js","sources":[
|
|
1
|
+
{"version":3,"file":"network-listeners.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as i}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{i as initNetworkListeners};
|
|
2
2
|
//# sourceMappingURL=network-listeners.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-listeners.js","sources":[
|
|
1
|
+
{"version":3,"file":"network-listeners.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,111 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import '
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Retrieves all validated promo codes stored in the "beam_promo_codes" cookie and parses it
|
|
7
|
-
*
|
|
8
|
-
* @returns {TPromoCodeResponse | undefined} An array of `ValidatedPromoCode` objects if found and parsed successfully, otherwise `undefined`
|
|
9
|
-
*/
|
|
10
|
-
declare const getAllPromoCodesFromCookie: () => TPromoCodeResponse | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* Stores the validated promo codes in the "beam_promo_codes" cookie, replaces and does not merge
|
|
13
|
-
*
|
|
14
|
-
* @param {TValidatedPromoResponse} validatedPromoCodes
|
|
15
|
-
* @param {string} domain
|
|
16
|
-
*/
|
|
17
|
-
declare const setPromoCodeInCookie: ({ validatedPromoCodes, domain, }: {
|
|
18
|
-
validatedPromoCodes: TValidatedPromoResponse;
|
|
19
|
-
domain?: string;
|
|
20
|
-
}) => void;
|
|
21
|
-
/**
|
|
22
|
-
* Retrieves promo codes from localStorage, scoped by API key
|
|
23
|
-
* @param {string} apiKey API key used for storage scoping
|
|
24
|
-
* @returns {TPromoCodeRequest | null} - Returns stored promo codes object containing both
|
|
25
|
-
* validated and unvalidated codes
|
|
26
|
-
* - If no codes exist, returns a fresh object with empty arrays
|
|
27
|
-
*
|
|
28
|
-
*/
|
|
29
|
-
declare const getPromoCodesLocalStorage: ({ apiKey }: {
|
|
30
|
-
apiKey: string;
|
|
31
|
-
}) => TPromoCodeRequest | null;
|
|
32
|
-
/**
|
|
33
|
-
* Sets promo codes in localStorage
|
|
34
|
-
* @param {TPromoCodeRequest} promoCodes New promo codes to add
|
|
35
|
-
* @param {string} apiKey API key for storage scoping
|
|
36
|
-
*/
|
|
37
|
-
declare const setPromoCodesInLocalStorage: ({ apiKey, promoCodes, }: {
|
|
38
|
-
apiKey?: string;
|
|
39
|
-
promoCodes: Partial<TPromoCodeRequest>;
|
|
40
|
-
}) => void;
|
|
41
|
-
/**
|
|
42
|
-
* Merges new promo codes with existing ones and returns the combined result
|
|
43
|
-
* @param {Partial<TPromoCodeRequest>} newPromos New promo codes to add
|
|
44
|
-
* @param {string} apiKey API key for storage scoping
|
|
45
|
-
* @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes
|
|
46
|
-
* @example
|
|
47
|
-
* const result = mergePromoCodes({
|
|
48
|
-
* apiKey: 'beam_123',
|
|
49
|
-
* newPromos: {
|
|
50
|
-
* unvalidatedPromoCodes: [
|
|
51
|
-
* { type: 'manual', attributes: { value: 'WINTER20' } },
|
|
52
|
-
* { type: 'url', attributes: { url: 'www.example.com/?promo=HOLIDAY25' } }
|
|
53
|
-
* ]
|
|
54
|
-
* }
|
|
55
|
-
* });
|
|
56
|
-
*/
|
|
57
|
-
declare const mergeStoreAndReturnPromos: ({ newPromos, apiKey, }: {
|
|
58
|
-
newPromos: Partial<TPromoCodeRequest>;
|
|
59
|
-
apiKey: string;
|
|
60
|
-
}) => TPromoCodeRequest;
|
|
61
|
-
/**
|
|
62
|
-
* Formats unvalidated promo codes by determining their source and attributes
|
|
63
|
-
* The function will assign `QueryParam` as the source if a `url` exists,
|
|
64
|
-
* otherwise, it will assign `Manual` as the source
|
|
65
|
-
*
|
|
66
|
-
* @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted
|
|
67
|
-
* @returns {TUnvalidatedPromoRequest} - An array of UnvalidatedPromoCode objects,
|
|
68
|
-
* each with a source and attributes object
|
|
69
|
-
*/
|
|
70
|
-
declare const mapToUnvalidatedPromoCodes: (promoAttributes: TPromoCodeAttribute[]) => TUnvalidatedPromoRequest;
|
|
71
|
-
/**
|
|
72
|
-
* @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted
|
|
73
|
-
* @param {string} apiKey API key for storage scoping
|
|
74
|
-
* @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes
|
|
75
|
-
*/
|
|
76
|
-
declare const formatStoreAndReturnPromoCodes: (promoAttributes: TPromoCodeAttribute[], apiKey: string) => TPromoCodeRequest;
|
|
77
|
-
/**
|
|
78
|
-
* Extracts applicable promo codes from the cart object
|
|
79
|
-
* This function retrieves discounts stored in the cart's `content.discounts` array,
|
|
80
|
-
* filters out only the applicable promo codes, and returns them as an array of strings
|
|
81
|
-
*
|
|
82
|
-
* @param {TBeamCartLocalStorage} cart The cart object retrieved from local storage
|
|
83
|
-
* @returns {string[]} An array of applicable promo codes
|
|
84
|
-
*/
|
|
85
|
-
declare const getPromoCodesFromCart: (cart: TBeamCartLocalStorage) => string[];
|
|
86
|
-
/**
|
|
87
|
-
* Gets promo code exclusively from Shopify discount cookie
|
|
88
|
-
* @returns {string | null} Single discount code or null if not found
|
|
89
|
-
*/
|
|
90
|
-
declare const getPromoCodeFromShopifyCookie: () => string | null;
|
|
91
|
-
/**
|
|
92
|
-
* Safely parses a JSON string into an array of strings
|
|
93
|
-
* If parsing fails or the input is not a valid JSON array, it returns an empty array
|
|
94
|
-
*
|
|
95
|
-
* @param {string | undefined | null} jsonString The JSON string to parse
|
|
96
|
-
* @returns {string[]} The parsed array of strings or an empty array if parsing fails
|
|
97
|
-
*/
|
|
98
|
-
declare const parseJsonStringArray: (jsonString: string | undefined | null) => string[];
|
|
99
|
-
/**
|
|
100
|
-
* Retrieves and sanitizes the current URL for storage, preserving only safe query parameters
|
|
101
|
-
*
|
|
102
|
-
* @returns {TPromoCodeAttribute} Returns an object with only the `url` property set
|
|
103
|
-
*/
|
|
104
|
-
declare const getSanitizedUrlForStorage: () => TPromoCodeAttribute | undefined;
|
|
105
|
-
declare const promoCodesAreEqual: (a: TPromoCodeRequest, b: TPromoCodeRequest) => boolean;
|
|
106
|
-
declare const isEmptyPromoData: (promos: {
|
|
107
|
-
unvalidatedPromoCodes?: unknown[];
|
|
108
|
-
validatedPromoCodes?: unknown[];
|
|
109
|
-
}) => boolean;
|
|
110
|
-
|
|
111
|
-
export { formatStoreAndReturnPromoCodes, getAllPromoCodesFromCookie, getPromoCodeFromShopifyCookie, getPromoCodesFromCart, getPromoCodesLocalStorage, getSanitizedUrlForStorage, isEmptyPromoData, mapToUnvalidatedPromoCodes, mergeStoreAndReturnPromos, parseJsonStringArray, promoCodesAreEqual, setPromoCodeInCookie, setPromoCodesInLocalStorage };
|
|
1
|
+
export { m as formatStoreAndReturnPromoCodes, n as getAllPromoCodesFromCookie, q as getPromoCodeFromShopifyCookie, r as getPromoCodesFromCart, s as getPromoCodesLocalStorage, u as getSanitizedUrlForStorage, v as isEmptyPromoData, y as mapToUnvalidatedPromoCodes, A as mergeStoreAndReturnPromos, C as parseJsonStringArray, D as promoCodesAreEqual, G as setPromoCodeInCookie, H as setPromoCodesInLocalStorage } from '../chunks/utils-D8HO_RIu.esm.js';
|
|
2
|
+
import 'lodash-es/debounce';
|
|
3
|
+
import 'lodash-es/isEqual';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as a,P as s,j as t,A as m,d,h as C,x as P,Q as g,R as i,z as n,p,D as S,C as l}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{a as formatStoreAndReturnPromoCodes,s as getAllPromoCodesFromCookie,t as getPromoCodeFromShopifyCookie,m as getPromoCodesFromCart,d as getPromoCodesLocalStorage,C as getSanitizedUrlForStorage,P as isEmptyPromoData,g as mapToUnvalidatedPromoCodes,i as mergeStoreAndReturnPromos,n as parseJsonStringArray,p as promoCodesAreEqual,S as setPromoCodeInCookie,l as setPromoCodesInLocalStorage};
|
|
2
2
|
//# sourceMappingURL=promoManager.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promoManager.esm.js","sources":["../../src/utils/promoManager.ts"],"sourcesContent":["import { Discount, TBeamCartLocalStorage } from \"../shared/cart-contents\";\nimport {\n TPromoCodeAttribute,\n PromoCodeSource,\n TPromoCodeRequest,\n TPromoCodeResponse,\n TValidatedPromoResponse,\n TUnvalidatedPromoRequest,\n PROMO_LOCAL_STORAGE_KEY,\n PROMO_CODES_COOKIE_NAME,\n TUnvalidatedPromoCode,\n} from \"../shared/promo-types\";\nimport { LocalStorageError } from \"./beam-errors\";\nimport { getCookieValue, setCookieValue } from \"./cookies\";\nimport { createScopedLocalStorage } from \"./local-storage\";\nimport { logger } from \"./logger\";\n\nconst URL_QUERY_PARAM_CHAR_LIMIT = 100;\nconst ALLOWED_URL_PREFIX = \"utm_\";\n// Standard name for Shopify's discount tracking cookie\nconst DISCOUNT_CODE_COOKIE_NAME = \"discount_code\";\n// < --------- Cookie ------- >\n\n/**\n * Retrieves all validated promo codes stored in the \"beam_promo_codes\" cookie and parses it\n *\n * @returns {TPromoCodeResponse | undefined} An array of `ValidatedPromoCode` objects if found and parsed successfully, otherwise `undefined`\n */\nexport const getAllPromoCodesFromCookie = (): TPromoCodeResponse | undefined => {\n const promoCodesString = getCookieValue(PROMO_CODES_COOKIE_NAME);\n\n if (!promoCodesString) return undefined;\n\n try {\n const promoCodes: TPromoCodeResponse = JSON.parse(promoCodesString);\n return promoCodes;\n } catch (error) {\n logger.error(\"Failed to parse beam_promo_codes cookie:\", error);\n return undefined;\n }\n};\n\n/**\n * Stores the validated promo codes in the \"beam_promo_codes\" cookie, replaces and does not merge\n *\n * @param {TValidatedPromoResponse} validatedPromoCodes\n * @param {string} domain\n */\nexport const setPromoCodeInCookie = ({\n validatedPromoCodes,\n domain,\n}: {\n validatedPromoCodes: TValidatedPromoResponse;\n domain?: string;\n}) => {\n const promoCodeData = {\n validatedPromoCodes: validatedPromoCodes,\n };\n const threeMonthsFromNow = Date.now() + 1000 * 60 * 60 * 24 * 90;\n\n setCookieValue({\n name: PROMO_CODES_COOKIE_NAME,\n value: JSON.stringify(promoCodeData),\n path: \"/\",\n domain,\n // If we don't set an expiration, the cookie will be cleared when the tab is closed\n expires: threeMonthsFromNow,\n });\n};\n\n// < --------- Local Storage ------- >\n/**\n * Retrieves promo codes from localStorage, scoped by API key\n * @param {string} apiKey API key used for storage scoping\n * @returns {TPromoCodeRequest | null} - Returns stored promo codes object containing both\n * validated and unvalidated codes\n * - If no codes exist, returns a fresh object with empty arrays\n *\n */\nexport const getPromoCodesLocalStorage = ({ apiKey }: { apiKey: string }): TPromoCodeRequest | null => {\n if (!apiKey) {\n logger.error(new LocalStorageError(\"API key is required to get promo codes\"));\n return null;\n }\n\n const storage = createScopedLocalStorage({ apiKey });\n const allPromos = storage.getItemJson<TPromoCodeRequest>(PROMO_LOCAL_STORAGE_KEY) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n return allPromos;\n};\n\n/**\n * Sets promo codes in localStorage\n * @param {TPromoCodeRequest} promoCodes New promo codes to add\n * @param {string} apiKey API key for storage scoping\n */\nexport const setPromoCodesInLocalStorage = ({\n apiKey,\n promoCodes,\n}: {\n apiKey?: string;\n promoCodes: Partial<TPromoCodeRequest>;\n}): void => {\n if (!apiKey) {\n logger.error(new LocalStorageError(\"API key is required to set promo codes\"));\n return;\n }\n const storage = createScopedLocalStorage({ apiKey });\n const completePromoCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: promoCodes?.unvalidatedPromoCodes || [],\n validatedPromoCodes: promoCodes?.validatedPromoCodes || [],\n };\n storage.setItemJson(PROMO_LOCAL_STORAGE_KEY, completePromoCodes);\n};\n\n/**\n * Merges new promo codes with existing ones and returns the combined result\n * @param {Partial<TPromoCodeRequest>} newPromos New promo codes to add\n * @param {string} apiKey API key for storage scoping\n * @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes\n * @example\n * const result = mergePromoCodes({\n * apiKey: 'beam_123',\n * newPromos: {\n * unvalidatedPromoCodes: [\n * { type: 'manual', attributes: { value: 'WINTER20' } },\n * { type: 'url', attributes: { url: 'www.example.com/?promo=HOLIDAY25' } }\n * ]\n * }\n * });\n */\nexport const mergeStoreAndReturnPromos = ({\n newPromos,\n apiKey,\n}: {\n newPromos: Partial<TPromoCodeRequest>;\n apiKey: string;\n}): TPromoCodeRequest => {\n const existing = getPromoCodesLocalStorage({ apiKey }) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n const uniqueNewUnvalidatedPromos = (newPromos?.unvalidatedPromoCodes || []).filter((newPromo) => {\n const isDuplicate = existing.unvalidatedPromoCodes.some((existingPromo) => {\n return JSON.stringify(existingPromo) === JSON.stringify(newPromo);\n });\n return !isDuplicate;\n });\n\n const mergedCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: [...existing.unvalidatedPromoCodes, ...uniqueNewUnvalidatedPromos],\n validatedPromoCodes: [...existing.validatedPromoCodes, ...(newPromos?.validatedPromoCodes || [])],\n };\n\n const shouldStore = mergedCodes.unvalidatedPromoCodes.length > 0 || mergedCodes.validatedPromoCodes.length > 0;\n\n if (shouldStore) {\n setPromoCodesInLocalStorage({ apiKey, promoCodes: mergedCodes });\n }\n return {\n ...mergedCodes,\n };\n};\n\n/**\n * Formats unvalidated promo codes by determining their source and attributes\n * The function will assign `QueryParam` as the source if a `url` exists,\n * otherwise, it will assign `Manual` as the source\n *\n * @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted\n * @returns {TUnvalidatedPromoRequest} - An array of UnvalidatedPromoCode objects,\n * each with a source and attributes object\n */\nexport const mapToUnvalidatedPromoCodes = (promoAttributes: TPromoCodeAttribute[]): TUnvalidatedPromoRequest => {\n return promoAttributes.reduce<TUnvalidatedPromoRequest>((acc, attr) => {\n const result: TUnvalidatedPromoRequest = acc || [];\n if (attr.url) {\n result.push({\n type: PromoCodeSource.Url,\n attributes: { url: attr.url },\n });\n } else if (attr.value) {\n result.push({\n type: PromoCodeSource.Manual,\n attributes: { value: attr.value },\n });\n } else {\n logger.error(\"Invalid PromoAttribute - must contain either 'url' or 'value'\", { attr });\n }\n return result;\n }, []);\n};\n\n/**\n * @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted\n * @param {string} apiKey API key for storage scoping\n * @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes\n */\nexport const formatStoreAndReturnPromoCodes = (\n promoAttributes: TPromoCodeAttribute[],\n apiKey: string,\n): TPromoCodeRequest => {\n const unvalidatedPromoCodes = mapToUnvalidatedPromoCodes(promoAttributes);\n return mergeStoreAndReturnPromos({ newPromos: { unvalidatedPromoCodes }, apiKey });\n};\n\n/**\n * Extracts applicable promo codes from the cart object\n * This function retrieves discounts stored in the cart's `content.discounts` array,\n * filters out only the applicable promo codes, and returns them as an array of strings\n *\n * @param {TBeamCartLocalStorage} cart The cart object retrieved from local storage\n * @returns {string[]} An array of applicable promo codes\n */\nexport const getPromoCodesFromCart = (cart: TBeamCartLocalStorage): string[] => {\n if (!cart?.content) return [];\n\n const cartLevelCodes = cart.content.discounts?.filter((d) => d.applicable)?.map((d) => d.code) || [];\n\n const itemLevelCodes =\n cart.content.items?.flatMap(\n (item) => item.discounts?.filter((d: Discount) => d.applicable)?.map((d: Discount) => d.code) || [],\n ) || [];\n\n const allCodes = [...cartLevelCodes, ...itemLevelCodes];\n\n return [...new Set(allCodes)];\n};\n\n/**\n * Gets promo code exclusively from Shopify discount cookie\n * @returns {string | null} Single discount code or null if not found\n */\nexport const getPromoCodeFromShopifyCookie = (): string | null => {\n return getCookieValue(DISCOUNT_CODE_COOKIE_NAME) ?? null;\n};\n\n/**\n * Safely parses a JSON string into an array of strings\n * If parsing fails or the input is not a valid JSON array, it returns an empty array\n *\n * @param {string | undefined | null} jsonString The JSON string to parse\n * @returns {string[]} The parsed array of strings or an empty array if parsing fails\n */\nexport const parseJsonStringArray = (jsonString: string | undefined | null): string[] => {\n if (!jsonString) return [];\n try {\n const parsed = JSON.parse(jsonString);\n if (Array.isArray(parsed) && parsed.every((item) => typeof item === \"string\")) {\n return parsed;\n }\n return [];\n } catch (error) {\n logger.error(\"Failed to parse JSON:\", error);\n return [];\n }\n};\n\n/**\n * Retrieves and sanitizes the current URL for storage, preserving only safe query parameters\n *\n * @returns {TPromoCodeAttribute} Returns an object with only the `url` property set\n */\nexport const getSanitizedUrlForStorage = (): TPromoCodeAttribute | undefined => {\n try {\n const url = new URL(window.location.href);\n\n if (!url.search) return undefined;\n\n // Create NEW URL instead of modifying existing one\n const cleanUrl = new URL(url.origin + url.pathname);\n let hasValidParams = false;\n\n // Process all parameters\n url.searchParams.forEach((value, key) => {\n const isAllowed = key.startsWith(ALLOWED_URL_PREFIX);\n const isValidLength = value.length <= URL_QUERY_PARAM_CHAR_LIMIT;\n\n if (isAllowed && isValidLength) {\n cleanUrl.searchParams.append(key, value);\n hasValidParams = true;\n }\n });\n\n const finalUrl = cleanUrl.toString();\n return hasValidParams ? { url: finalUrl } : undefined;\n } catch (error) {\n return undefined;\n }\n};\n\nexport const promoCodesAreEqual = (a: TPromoCodeRequest, b: TPromoCodeRequest): boolean => {\n const extract = (codes: unknown): string => {\n const validCodes = (Array.isArray(codes) ? codes : []) as TUnvalidatedPromoCode[];\n\n const flattened = validCodes\n .map((c) => {\n if (c.type === \"manual\") {\n return c.attributes?.value;\n }\n if (c.type === \"url\") {\n return c.attributes?.url;\n }\n return \"\";\n })\n .filter(Boolean)\n .sort()\n .join(\",\");\n return flattened;\n };\n\n return extract(a?.unvalidatedPromoCodes) === extract(b?.unvalidatedPromoCodes);\n};\n\nexport const isEmptyPromoData = (promos: {\n unvalidatedPromoCodes?: unknown[];\n validatedPromoCodes?: unknown[];\n}): boolean => {\n return (\n (!promos.unvalidatedPromoCodes || promos.unvalidatedPromoCodes.length === 0) &&\n (!promos.validatedPromoCodes || promos.validatedPromoCodes.length === 0)\n );\n};\n"],"names":["URL_QUERY_PARAM_CHAR_LIMIT","ALLOWED_URL_PREFIX","DISCOUNT_CODE_COOKIE_NAME","getAllPromoCodesFromCookie","promoCodesString","getCookieValue","PROMO_CODES_COOKIE_NAME","error","logger","setPromoCodeInCookie","validatedPromoCodes","domain","promoCodeData","threeMonthsFromNow","setCookieValue","getPromoCodesLocalStorage","apiKey","createScopedLocalStorage","PROMO_LOCAL_STORAGE_KEY","LocalStorageError","setPromoCodesInLocalStorage","promoCodes","storage","completePromoCodes","mergeStoreAndReturnPromos","newPromos","existing","uniqueNewUnvalidatedPromos","newPromo","existingPromo","mergedCodes","mapToUnvalidatedPromoCodes","promoAttributes","acc","attr","result","PromoCodeSource","formatStoreAndReturnPromoCodes","unvalidatedPromoCodes","getPromoCodesFromCart","cart","cartLevelCodes","d","itemLevelCodes","item","allCodes","getPromoCodeFromShopifyCookie","parseJsonStringArray","jsonString","parsed","getSanitizedUrlForStorage","url","cleanUrl","hasValidParams","value","key","isAllowed","isValidLength","finalUrl","promoCodesAreEqual","a","b","extract","codes","c","isEmptyPromoData","promos"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"promoManager.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as a,P as s,j as t,A as m,d,h as C,x as P,Q as g,R as i,z as n,p,D as S,C as l}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{a as formatStoreAndReturnPromoCodes,s as getAllPromoCodesFromCookie,t as getPromoCodeFromShopifyCookie,m as getPromoCodesFromCart,d as getPromoCodesLocalStorage,C as getSanitizedUrlForStorage,P as isEmptyPromoData,g as mapToUnvalidatedPromoCodes,i as mergeStoreAndReturnPromos,n as parseJsonStringArray,p as promoCodesAreEqual,S as setPromoCodeInCookie,l as setPromoCodesInLocalStorage};
|
|
2
2
|
//# sourceMappingURL=promoManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promoManager.js","sources":["../../src/utils/promoManager.ts"],"sourcesContent":["import { Discount, TBeamCartLocalStorage } from \"../shared/cart-contents\";\nimport {\n TPromoCodeAttribute,\n PromoCodeSource,\n TPromoCodeRequest,\n TPromoCodeResponse,\n TValidatedPromoResponse,\n TUnvalidatedPromoRequest,\n PROMO_LOCAL_STORAGE_KEY,\n PROMO_CODES_COOKIE_NAME,\n TUnvalidatedPromoCode,\n} from \"../shared/promo-types\";\nimport { LocalStorageError } from \"./beam-errors\";\nimport { getCookieValue, setCookieValue } from \"./cookies\";\nimport { createScopedLocalStorage } from \"./local-storage\";\nimport { logger } from \"./logger\";\n\nconst URL_QUERY_PARAM_CHAR_LIMIT = 100;\nconst ALLOWED_URL_PREFIX = \"utm_\";\n// Standard name for Shopify's discount tracking cookie\nconst DISCOUNT_CODE_COOKIE_NAME = \"discount_code\";\n// < --------- Cookie ------- >\n\n/**\n * Retrieves all validated promo codes stored in the \"beam_promo_codes\" cookie and parses it\n *\n * @returns {TPromoCodeResponse | undefined} An array of `ValidatedPromoCode` objects if found and parsed successfully, otherwise `undefined`\n */\nexport const getAllPromoCodesFromCookie = (): TPromoCodeResponse | undefined => {\n const promoCodesString = getCookieValue(PROMO_CODES_COOKIE_NAME);\n\n if (!promoCodesString) return undefined;\n\n try {\n const promoCodes: TPromoCodeResponse = JSON.parse(promoCodesString);\n return promoCodes;\n } catch (error) {\n logger.error(\"Failed to parse beam_promo_codes cookie:\", error);\n return undefined;\n }\n};\n\n/**\n * Stores the validated promo codes in the \"beam_promo_codes\" cookie, replaces and does not merge\n *\n * @param {TValidatedPromoResponse} validatedPromoCodes\n * @param {string} domain\n */\nexport const setPromoCodeInCookie = ({\n validatedPromoCodes,\n domain,\n}: {\n validatedPromoCodes: TValidatedPromoResponse;\n domain?: string;\n}) => {\n const promoCodeData = {\n validatedPromoCodes: validatedPromoCodes,\n };\n const threeMonthsFromNow = Date.now() + 1000 * 60 * 60 * 24 * 90;\n\n setCookieValue({\n name: PROMO_CODES_COOKIE_NAME,\n value: JSON.stringify(promoCodeData),\n path: \"/\",\n domain,\n // If we don't set an expiration, the cookie will be cleared when the tab is closed\n expires: threeMonthsFromNow,\n });\n};\n\n// < --------- Local Storage ------- >\n/**\n * Retrieves promo codes from localStorage, scoped by API key\n * @param {string} apiKey API key used for storage scoping\n * @returns {TPromoCodeRequest | null} - Returns stored promo codes object containing both\n * validated and unvalidated codes\n * - If no codes exist, returns a fresh object with empty arrays\n *\n */\nexport const getPromoCodesLocalStorage = ({ apiKey }: { apiKey: string }): TPromoCodeRequest | null => {\n if (!apiKey) {\n logger.error(new LocalStorageError(\"API key is required to get promo codes\"));\n return null;\n }\n\n const storage = createScopedLocalStorage({ apiKey });\n const allPromos = storage.getItemJson<TPromoCodeRequest>(PROMO_LOCAL_STORAGE_KEY) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n return allPromos;\n};\n\n/**\n * Sets promo codes in localStorage\n * @param {TPromoCodeRequest} promoCodes New promo codes to add\n * @param {string} apiKey API key for storage scoping\n */\nexport const setPromoCodesInLocalStorage = ({\n apiKey,\n promoCodes,\n}: {\n apiKey?: string;\n promoCodes: Partial<TPromoCodeRequest>;\n}): void => {\n if (!apiKey) {\n logger.error(new LocalStorageError(\"API key is required to set promo codes\"));\n return;\n }\n const storage = createScopedLocalStorage({ apiKey });\n const completePromoCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: promoCodes?.unvalidatedPromoCodes || [],\n validatedPromoCodes: promoCodes?.validatedPromoCodes || [],\n };\n storage.setItemJson(PROMO_LOCAL_STORAGE_KEY, completePromoCodes);\n};\n\n/**\n * Merges new promo codes with existing ones and returns the combined result\n * @param {Partial<TPromoCodeRequest>} newPromos New promo codes to add\n * @param {string} apiKey API key for storage scoping\n * @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes\n * @example\n * const result = mergePromoCodes({\n * apiKey: 'beam_123',\n * newPromos: {\n * unvalidatedPromoCodes: [\n * { type: 'manual', attributes: { value: 'WINTER20' } },\n * { type: 'url', attributes: { url: 'www.example.com/?promo=HOLIDAY25' } }\n * ]\n * }\n * });\n */\nexport const mergeStoreAndReturnPromos = ({\n newPromos,\n apiKey,\n}: {\n newPromos: Partial<TPromoCodeRequest>;\n apiKey: string;\n}): TPromoCodeRequest => {\n const existing = getPromoCodesLocalStorage({ apiKey }) ?? {\n unvalidatedPromoCodes: [],\n validatedPromoCodes: [],\n };\n\n const uniqueNewUnvalidatedPromos = (newPromos?.unvalidatedPromoCodes || []).filter((newPromo) => {\n const isDuplicate = existing.unvalidatedPromoCodes.some((existingPromo) => {\n return JSON.stringify(existingPromo) === JSON.stringify(newPromo);\n });\n return !isDuplicate;\n });\n\n const mergedCodes: TPromoCodeRequest = {\n unvalidatedPromoCodes: [...existing.unvalidatedPromoCodes, ...uniqueNewUnvalidatedPromos],\n validatedPromoCodes: [...existing.validatedPromoCodes, ...(newPromos?.validatedPromoCodes || [])],\n };\n\n const shouldStore = mergedCodes.unvalidatedPromoCodes.length > 0 || mergedCodes.validatedPromoCodes.length > 0;\n\n if (shouldStore) {\n setPromoCodesInLocalStorage({ apiKey, promoCodes: mergedCodes });\n }\n return {\n ...mergedCodes,\n };\n};\n\n/**\n * Formats unvalidated promo codes by determining their source and attributes\n * The function will assign `QueryParam` as the source if a `url` exists,\n * otherwise, it will assign `Manual` as the source\n *\n * @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted\n * @returns {TUnvalidatedPromoRequest} - An array of UnvalidatedPromoCode objects,\n * each with a source and attributes object\n */\nexport const mapToUnvalidatedPromoCodes = (promoAttributes: TPromoCodeAttribute[]): TUnvalidatedPromoRequest => {\n return promoAttributes.reduce<TUnvalidatedPromoRequest>((acc, attr) => {\n const result: TUnvalidatedPromoRequest = acc || [];\n if (attr.url) {\n result.push({\n type: PromoCodeSource.Url,\n attributes: { url: attr.url },\n });\n } else if (attr.value) {\n result.push({\n type: PromoCodeSource.Manual,\n attributes: { value: attr.value },\n });\n } else {\n logger.error(\"Invalid PromoAttribute - must contain either 'url' or 'value'\", { attr });\n }\n return result;\n }, []);\n};\n\n/**\n * @param {TPromoCodeAttribute[]} promoAttributes An array of promo attributes to be formatted\n * @param {string} apiKey API key for storage scoping\n * @returns {TPromoCodeRequest} An object containing both validated and unvalidated promo codes\n */\nexport const formatStoreAndReturnPromoCodes = (\n promoAttributes: TPromoCodeAttribute[],\n apiKey: string,\n): TPromoCodeRequest => {\n const unvalidatedPromoCodes = mapToUnvalidatedPromoCodes(promoAttributes);\n return mergeStoreAndReturnPromos({ newPromos: { unvalidatedPromoCodes }, apiKey });\n};\n\n/**\n * Extracts applicable promo codes from the cart object\n * This function retrieves discounts stored in the cart's `content.discounts` array,\n * filters out only the applicable promo codes, and returns them as an array of strings\n *\n * @param {TBeamCartLocalStorage} cart The cart object retrieved from local storage\n * @returns {string[]} An array of applicable promo codes\n */\nexport const getPromoCodesFromCart = (cart: TBeamCartLocalStorage): string[] => {\n if (!cart?.content) return [];\n\n const cartLevelCodes = cart.content.discounts?.filter((d) => d.applicable)?.map((d) => d.code) || [];\n\n const itemLevelCodes =\n cart.content.items?.flatMap(\n (item) => item.discounts?.filter((d: Discount) => d.applicable)?.map((d: Discount) => d.code) || [],\n ) || [];\n\n const allCodes = [...cartLevelCodes, ...itemLevelCodes];\n\n return [...new Set(allCodes)];\n};\n\n/**\n * Gets promo code exclusively from Shopify discount cookie\n * @returns {string | null} Single discount code or null if not found\n */\nexport const getPromoCodeFromShopifyCookie = (): string | null => {\n return getCookieValue(DISCOUNT_CODE_COOKIE_NAME) ?? null;\n};\n\n/**\n * Safely parses a JSON string into an array of strings\n * If parsing fails or the input is not a valid JSON array, it returns an empty array\n *\n * @param {string | undefined | null} jsonString The JSON string to parse\n * @returns {string[]} The parsed array of strings or an empty array if parsing fails\n */\nexport const parseJsonStringArray = (jsonString: string | undefined | null): string[] => {\n if (!jsonString) return [];\n try {\n const parsed = JSON.parse(jsonString);\n if (Array.isArray(parsed) && parsed.every((item) => typeof item === \"string\")) {\n return parsed;\n }\n return [];\n } catch (error) {\n logger.error(\"Failed to parse JSON:\", error);\n return [];\n }\n};\n\n/**\n * Retrieves and sanitizes the current URL for storage, preserving only safe query parameters\n *\n * @returns {TPromoCodeAttribute} Returns an object with only the `url` property set\n */\nexport const getSanitizedUrlForStorage = (): TPromoCodeAttribute | undefined => {\n try {\n const url = new URL(window.location.href);\n\n if (!url.search) return undefined;\n\n // Create NEW URL instead of modifying existing one\n const cleanUrl = new URL(url.origin + url.pathname);\n let hasValidParams = false;\n\n // Process all parameters\n url.searchParams.forEach((value, key) => {\n const isAllowed = key.startsWith(ALLOWED_URL_PREFIX);\n const isValidLength = value.length <= URL_QUERY_PARAM_CHAR_LIMIT;\n\n if (isAllowed && isValidLength) {\n cleanUrl.searchParams.append(key, value);\n hasValidParams = true;\n }\n });\n\n const finalUrl = cleanUrl.toString();\n return hasValidParams ? { url: finalUrl } : undefined;\n } catch (error) {\n return undefined;\n }\n};\n\nexport const promoCodesAreEqual = (a: TPromoCodeRequest, b: TPromoCodeRequest): boolean => {\n const extract = (codes: unknown): string => {\n const validCodes = (Array.isArray(codes) ? codes : []) as TUnvalidatedPromoCode[];\n\n const flattened = validCodes\n .map((c) => {\n if (c.type === \"manual\") {\n return c.attributes?.value;\n }\n if (c.type === \"url\") {\n return c.attributes?.url;\n }\n return \"\";\n })\n .filter(Boolean)\n .sort()\n .join(\",\");\n return flattened;\n };\n\n return extract(a?.unvalidatedPromoCodes) === extract(b?.unvalidatedPromoCodes);\n};\n\nexport const isEmptyPromoData = (promos: {\n unvalidatedPromoCodes?: unknown[];\n validatedPromoCodes?: unknown[];\n}): boolean => {\n return (\n (!promos.unvalidatedPromoCodes || promos.unvalidatedPromoCodes.length === 0) &&\n (!promos.validatedPromoCodes || promos.validatedPromoCodes.length === 0)\n );\n};\n"],"names":["URL_QUERY_PARAM_CHAR_LIMIT","ALLOWED_URL_PREFIX","DISCOUNT_CODE_COOKIE_NAME","getAllPromoCodesFromCookie","promoCodesString","getCookieValue","PROMO_CODES_COOKIE_NAME","error","logger","setPromoCodeInCookie","validatedPromoCodes","domain","promoCodeData","threeMonthsFromNow","setCookieValue","getPromoCodesLocalStorage","apiKey","createScopedLocalStorage","PROMO_LOCAL_STORAGE_KEY","LocalStorageError","setPromoCodesInLocalStorage","promoCodes","storage","completePromoCodes","mergeStoreAndReturnPromos","newPromos","existing","uniqueNewUnvalidatedPromos","newPromo","existingPromo","mergedCodes","mapToUnvalidatedPromoCodes","promoAttributes","acc","attr","result","PromoCodeSource","formatStoreAndReturnPromoCodes","unvalidatedPromoCodes","getPromoCodesFromCart","cart","cartLevelCodes","d","itemLevelCodes","item","allCodes","getPromoCodeFromShopifyCookie","parseJsonStringArray","jsonString","parsed","getSanitizedUrlForStorage","url","cleanUrl","hasValidParams","value","key","isAllowed","isValidLength","finalUrl","promoCodesAreEqual","a","b","extract","codes","c","isEmptyPromoData","promos"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"promoManager.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}): void;
|
|
5
|
-
declare function getRemoteSession({ apiKey }: {
|
|
6
|
-
apiKey?: string;
|
|
7
|
-
}): string | null;
|
|
8
|
-
|
|
9
|
-
export { getRemoteSession, saveRemoteSession };
|
|
1
|
+
export { t as getRemoteSession, E as saveRemoteSession } from '../chunks/utils-D8HO_RIu.esm.js';
|
|
2
|
+
import 'lodash-es/debounce';
|
|
3
|
+
import 'lodash-es/isEqual';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{K as t,s as m}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{t as getRemoteSession,m as saveRemoteSession};
|
|
2
2
|
//# sourceMappingURL=remote-session.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-session.esm.js","sources":[
|
|
1
|
+
{"version":3,"file":"remote-session.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{K as t,s as m}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{t as getRemoteSession,m as saveRemoteSession};
|
|
2
2
|
//# sourceMappingURL=remote-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-session.js","sources":[
|
|
1
|
+
{"version":3,"file":"remote-session.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { waitForElement };
|
|
1
|
+
export { w as waitForElement } from '../chunks/utils-D8HO_RIu.esm.js';
|
|
2
|
+
import 'lodash-es/debounce';
|
|
3
|
+
import 'lodash-es/isEqual';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{w as e}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{e as waitForElement};
|
|
2
2
|
//# sourceMappingURL=wait-for-element.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait-for-element.esm.js","sources":[
|
|
1
|
+
{"version":3,"file":"wait-for-element.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{w as e}from"../chunks/utils-BjhsDvuU.esm.js";import"../chunks/lodash-CrMU6wKg.esm.js";export{e as waitForElement};
|
|
2
2
|
//# sourceMappingURL=wait-for-element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait-for-element.js","sources":[
|
|
1
|
+
{"version":3,"file":"wait-for-element.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beamimpact/web-sdk",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.57.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": "
|
|
9
|
+
"node": "18.x || 20.x || 22.x || 24.x"
|
|
10
10
|
},
|
|
11
11
|
"packageManager": "npm@11.0.0",
|
|
12
12
|
"browserslist": [
|
|
@@ -56,18 +56,21 @@
|
|
|
56
56
|
"@lit/react": "1.0.8",
|
|
57
57
|
"@lukeed/uuid": "2.0.1",
|
|
58
58
|
"@shoelace-style/shoelace": "2.20.1",
|
|
59
|
+
"dayjs": "1.11.21",
|
|
60
|
+
"handlebars": "4.7.9",
|
|
59
61
|
"lit": "3.3.2",
|
|
60
62
|
"lodash-es": "4.18.1",
|
|
61
63
|
"lucide-static": "0.292.0"
|
|
62
64
|
},
|
|
63
65
|
"devDependencies": {
|
|
64
|
-
"@cypress/vite-dev-server": "7.3.
|
|
66
|
+
"@cypress/vite-dev-server": "7.3.3",
|
|
65
67
|
"@devcontainers/cli": "0.86.0",
|
|
66
68
|
"@eslint/eslintrc": "3.3.5",
|
|
67
69
|
"@eslint/js": "9.39.4",
|
|
68
70
|
"@fastify/compress": "8.3.1",
|
|
69
71
|
"@fastify/cors": "11.2.0",
|
|
70
72
|
"@fastify/static": "9.1.3",
|
|
73
|
+
"@rollup/plugin-commonjs": "29.0.3",
|
|
71
74
|
"@rollup/plugin-json": "6.1.0",
|
|
72
75
|
"@rollup/plugin-node-resolve": "16.0.3",
|
|
73
76
|
"@types/lodash-es": "4.17.12",
|
|
@@ -75,8 +78,8 @@
|
|
|
75
78
|
"@typescript-eslint/parser": "8.59.0",
|
|
76
79
|
"@web-types/lit": "2.0.0-3",
|
|
77
80
|
"browserslist": "4.28.4",
|
|
78
|
-
"commitizen": "4.3.
|
|
79
|
-
"cypress": "15.
|
|
81
|
+
"commitizen": "4.3.2",
|
|
82
|
+
"cypress": "15.18.1",
|
|
80
83
|
"cz-conventional-changelog": "3.3.0",
|
|
81
84
|
"esbuild": "0.28.1",
|
|
82
85
|
"eslint": "9.39.4",
|
|
@@ -93,7 +96,7 @@
|
|
|
93
96
|
"npm-run-all": "4.1.5",
|
|
94
97
|
"prettier": "3.8.3",
|
|
95
98
|
"react": "18.2.0",
|
|
96
|
-
"rollup": "4.
|
|
99
|
+
"rollup": "4.61.1",
|
|
97
100
|
"rollup-plugin-copy": "3.5.0",
|
|
98
101
|
"rollup-plugin-dts": "6.4.1",
|
|
99
102
|
"rollup-plugin-esbuild": "6.2.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as a,s as c}from"./vendor-ckSdd6aH.esm.js";import{k as t}from"./routes-DSu5s3K7.esm.js";import"./lit-JRlupCB5.esm.js";import"./promo-types-DKAOFHJr.esm.js";import"./beam-errors-Ci0d3926.esm.js";import"../utils/logger.esm.js";import"./events-COWOQoLW.esm.js";import"../utils/memoize-last.esm.js";import"./lodash-BSs6Il-c.esm.js";const i="https://sdk.beamimpact.com",s=`${i}/lib/shoelace/v${t["@shoelace-style/shoelace"]}`,o=`${i}/lib/lucide-static/v${t["lucide-static"]}`;if(a("lucide",{resolver:e=>`${o}/icons/${e}.svg`}),c(s),document&&!document.querySelector("link[data-beam-impact]")){const e=document.createElement("link");e.href=`${s}/themes/light.css`,e.rel="stylesheet",e.setAttribute("data-beam-impact","true"),document.head.appendChild(e)}
|
|
2
|
-
//# sourceMappingURL=_share-dialog-dependencies-Bk60ibnw.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as a,s as c}from"./vendor-ckSdd6aH.esm.js";import{k as t}from"./routes-BIMwJ8u9.esm.js";import"./lit-JRlupCB5.esm.js";import"./promo-types-DKAOFHJr.esm.js";import"./beam-errors-Ci0d3926.esm.js";import"../utils/logger.js";import"./events-COWOQoLW.esm.js";import"../utils/memoize-last.js";import"./lodash-BSs6Il-c.esm.js";const i="https://sdk.beamimpact.com",s=`${i}/lib/shoelace/v${t["@shoelace-style/shoelace"]}`,o=`${i}/lib/lucide-static/v${t["lucide-static"]}`;if(a("lucide",{resolver:e=>`${o}/icons/${e}.svg`}),c(s),document&&!document.querySelector("link[data-beam-impact]")){const e=document.createElement("link");e.href=`${s}/themes/light.css`,e.rel="stylesheet",e.setAttribute("data-beam-impact","true"),document.head.appendChild(e)}
|
|
2
|
-
//# sourceMappingURL=_share-dialog-dependencies-D6vA_2f6.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_share-dialog-dependencies-D6vA_2f6.esm.js","sources":["../../src/shared/shoelace-components.ts"],"sourcesContent":["/**\n * Shoelace is a utility library for web components like icons, dialogs, buttons, etc.\n * https://shoelace.style/\n */\n\nimport { setBasePath } from \"@shoelace-style/shoelace/dist/utilities/base-path.js\";\nimport { registerIconLibrary } from \"@shoelace-style/shoelace/dist/utilities/icon-library.js\";\nimport { dependencies } from \"../../package.json\";\n\nconst CDN_BASE = \"https://sdk.beamimpact.com\";\nconst SHOELACE_BASE = `${CDN_BASE}/lib/shoelace/v${dependencies[\"@shoelace-style/shoelace\"]}`;\nconst ICON_BASE = `${CDN_BASE}/lib/lucide-static/v${dependencies[\"lucide-static\"]}`;\n\nregisterIconLibrary(\"lucide\", {\n resolver: (name: string) => `${ICON_BASE}/icons/${name}.svg`,\n});\n\nsetBasePath(SHOELACE_BASE);\n\nif (document && !document.querySelector(\"link[data-beam-impact]\")) {\n const stylesheet = document.createElement(\"link\");\n stylesheet.href = `${SHOELACE_BASE}/themes/light.css`;\n stylesheet.rel = \"stylesheet\";\n stylesheet.setAttribute(\"data-beam-impact\", \"true\");\n document.head.appendChild(stylesheet);\n}\n"],"names":["CDN_BASE","SHOELACE_BASE","dependencies","ICON_BASE","registerIconLibrary","name","setBasePath","stylesheet"],"mappings":"yUASA,MAAMA,EAAW,6BACXC,EAAgB,GAAGD,CAAQ,kBAAkBE,EAAa,0BAA0B,CAAC,GACrFC,EAAY,GAAGH,CAAQ,uBAAuBE,EAAa,eAAe,CAAC,GAQjF,GANAE,EAAoB,SAAU,CAC5B,SAAWC,GAAiB,GAAGF,CAAS,UAAUE,CAAI,MACxD,CAAC,EAEDC,EAAYL,CAAa,EAErB,UAAY,CAAC,SAAS,cAAc,wBAAwB,EAAG,CACjE,MAAMM,EAAa,SAAS,cAAc,MAAM,EAChDA,EAAW,KAAO,GAAGN,CAAa,oBAClCM,EAAW,IAAM,aACjBA,EAAW,aAAa,mBAAoB,MAAM,EAClD,SAAS,KAAK,YAAYA,CAAU,CACtC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
class s extends Error{constructor(r,{cause:e,name:a="BeamError"}={}){super(r,{cause:e}),this.name=a,this.supportUrl="https://beamimpact.com"}}class t extends s{constructor(r,e,a){super(a,{name:"BeamNetworkError"}),this.response=r,this.body=e}}class n extends s{constructor(r=[],e){super(e,{name:"BeamMissingConfig"}),this.missingConfigKeyNames=r}}class c extends s{constructor(r){super(r,{name:"BeamLocalStorageError"})}}class m extends s{constructor(r){super(r,{name:"BeamSetupError"})}}var i=Object.freeze({__proto__:null,BeamError:s,LocalStorageError:c,MissingConfig:n,NetworkError:t,SetupError:m});export{s as B,c as L,n as M,t as N,m as S,i as b};
|
|
2
|
-
//# sourceMappingURL=beam-errors-Ci0d3926.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"beam-errors-Ci0d3926.esm.js","sources":["../../src/utils/beam-errors.ts"],"sourcesContent":["export class BeamError extends Error {\n supportUrl: string;\n constructor(msg?: string, { cause, name = \"BeamError\" }: { cause?: any; name?: string } = {}) {\n super(msg, { cause });\n this.name = name;\n this.supportUrl = \"https://beamimpact.com\";\n }\n}\n\nexport class NetworkError extends BeamError {\n /** Fetch Response object with .ok, .status, etc.*/\n response: Response;\n /** If network response included JSON payload, it is parsed and available here */\n body?: Record<string, string>;\n constructor(response: Response, body?: Record<string, string>, msg?: string) {\n super(msg, { name: \"BeamNetworkError\" });\n this.response = response;\n this.body = body;\n }\n}\n\nexport class MissingConfig extends BeamError {\n missingConfigKeyNames: string[];\n constructor(missingConfigKeyNames: string[] = [], msg?: string) {\n super(msg, { name: \"BeamMissingConfig\" });\n this.missingConfigKeyNames = missingConfigKeyNames;\n }\n}\n\nexport class LocalStorageError extends BeamError {\n constructor(msg?: string) {\n super(msg, { name: \"BeamLocalStorageError\" });\n }\n}\n\nexport class SetupError extends BeamError {\n constructor(msg?: string) {\n super(msg, { name: \"BeamSetupError\" });\n }\n}\n"],"names":["BeamError","msg","cause","name","NetworkError","response","body","MissingConfig","missingConfigKeyNames","LocalStorageError","SetupError"],"mappings":"AAAO,MAAMA,UAAkB,KAAM,CAEnC,YAAYC,EAAc,CAAE,MAAAC,EAAO,KAAAC,EAAO,WAAY,EAAoC,GAAI,CAC5F,MAAMF,EAAK,CAAE,MAAAC,CAAM,CAAC,EACpB,KAAK,KAAOC,EACZ,KAAK,WAAa,wBACpB,CACF,CAEO,MAAMC,UAAqBJ,CAAU,CAK1C,YAAYK,EAAoBC,EAA+BL,EAAc,CAC3E,MAAMA,EAAK,CAAE,KAAM,kBAAmB,CAAC,EACvC,KAAK,SAAWI,EAChB,KAAK,KAAOC,CACd,CACF,CAEO,MAAMC,UAAsBP,CAAU,CAE3C,YAAYQ,EAAkC,CAAA,EAAIP,EAAc,CAC9D,MAAMA,EAAK,CAAE,KAAM,mBAAoB,CAAC,EACxC,KAAK,sBAAwBO,CAC/B,CACF,CAEO,MAAMC,UAA0BT,CAAU,CAC/C,YAAYC,EAAc,CACxB,MAAMA,EAAK,CAAE,KAAM,uBAAwB,CAAC,CAC9C,CACF,CAEO,MAAMS,UAAmBV,CAAU,CACxC,YAAYC,EAAc,CACxB,MAAMA,EAAK,CAAE,KAAM,gBAAiB,CAAC,CACvC,CACF"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
declare class BeamError extends Error {
|
|
2
|
-
supportUrl: string;
|
|
3
|
-
constructor(msg?: string, { cause, name }?: {
|
|
4
|
-
cause?: any;
|
|
5
|
-
name?: string;
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
declare class NetworkError extends BeamError {
|
|
9
|
-
/** Fetch Response object with .ok, .status, etc.*/
|
|
10
|
-
response: Response;
|
|
11
|
-
/** If network response included JSON payload, it is parsed and available here */
|
|
12
|
-
body?: Record<string, string>;
|
|
13
|
-
constructor(response: Response, body?: Record<string, string>, msg?: string);
|
|
14
|
-
}
|
|
15
|
-
declare class MissingConfig extends BeamError {
|
|
16
|
-
missingConfigKeyNames: string[];
|
|
17
|
-
constructor(missingConfigKeyNames?: string[], msg?: string);
|
|
18
|
-
}
|
|
19
|
-
declare class LocalStorageError extends BeamError {
|
|
20
|
-
constructor(msg?: string);
|
|
21
|
-
}
|
|
22
|
-
declare class SetupError extends BeamError {
|
|
23
|
-
constructor(msg?: string);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
type beamErrors_BeamError = BeamError;
|
|
27
|
-
declare const beamErrors_BeamError: typeof BeamError;
|
|
28
|
-
type beamErrors_LocalStorageError = LocalStorageError;
|
|
29
|
-
declare const beamErrors_LocalStorageError: typeof LocalStorageError;
|
|
30
|
-
type beamErrors_MissingConfig = MissingConfig;
|
|
31
|
-
declare const beamErrors_MissingConfig: typeof MissingConfig;
|
|
32
|
-
type beamErrors_NetworkError = NetworkError;
|
|
33
|
-
declare const beamErrors_NetworkError: typeof NetworkError;
|
|
34
|
-
type beamErrors_SetupError = SetupError;
|
|
35
|
-
declare const beamErrors_SetupError: typeof SetupError;
|
|
36
|
-
declare namespace beamErrors {
|
|
37
|
-
export {
|
|
38
|
-
beamErrors_BeamError as BeamError,
|
|
39
|
-
beamErrors_LocalStorageError as LocalStorageError,
|
|
40
|
-
beamErrors_MissingConfig as MissingConfig,
|
|
41
|
-
beamErrors_NetworkError as NetworkError,
|
|
42
|
-
beamErrors_SetupError as SetupError,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export { BeamError as B, LocalStorageError as L, MissingConfig as M, NetworkError as N, SetupError as S, beamErrors as b };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { p as paths } from './openapi-spec-B4z4_CMq.esm.js';
|
|
2
|
-
|
|
3
|
-
type TCartApi = paths["/chain/findEligibleNonprofitsForCart"]["post"]["requestBody"]["content"]["application/json"]["cart"];
|
|
4
|
-
type TCart = TCartApi & {
|
|
5
|
-
content: {
|
|
6
|
-
items: Record<string, any>[];
|
|
7
|
-
discounts?: Record<string, any>[] | undefined | null;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
type TBeamCartLocalStorage = {
|
|
11
|
-
cartId: string;
|
|
12
|
-
beamCartId?: string;
|
|
13
|
-
subtotal: number;
|
|
14
|
-
itemCount: number;
|
|
15
|
-
currencyCode: string;
|
|
16
|
-
} & TCart;
|
|
17
|
-
|
|
18
|
-
export type { TCart as T, TCartApi as a, TBeamCartLocalStorage as b };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cart-contents-DkoytiZh.esm.js","sources":["../../src/shared/cart-contents.ts"],"sourcesContent":["import { paths } from \"../api-sdk/openapi-spec\";\nexport type TCartApi =\n paths[\"/chain/findEligibleNonprofitsForCart\"][\"post\"][\"requestBody\"][\"content\"][\"application/json\"][\"cart\"];\n\n// Same as type from API but with non-optional fields, so we can use where Shopify guarantees values\nexport type TCart = TCartApi & {\n content: {\n items: Record<string, any>[];\n discounts?: Record<string, any>[] | undefined | null;\n };\n};\n\nexport type TCartItems = TCart[\"content\"][\"items\"];\n\nexport type TCartDiscounts = TCart[\"content\"][\"discounts\"];\n\nexport type TBeamCartLocalStorage = {\n cartId: string;\n beamCartId?: string;\n subtotal: number;\n itemCount: number;\n currencyCode: string;\n} & TCart;\n\nexport const BEAM_CART_COOKIE_NAME = \"beam_cart\";\n\nexport type Discount = {\n code: string;\n applicable: boolean;\n};\n"],"names":["BEAM_CART_COOKIE_NAME"],"mappings":"AAwBO,MAAMA,EAAwB"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{g as a,i as g}from"./lit-JRlupCB5.esm.js";const o=({className:i="cardGrid",gap:t="30px",columnCount:r=2,itemMinWidth:d="300px"}={})=>g`
|
|
2
|
-
.${a(i)} {
|
|
3
|
-
--grid-layout-gap: ${a(t)};
|
|
4
|
-
--grid-column-count: ${a(r)};
|
|
5
|
-
--grid-item--min-width: ${a(d)};
|
|
6
|
-
|
|
7
|
-
--gap-count: calc(var(--grid-column-count) - 1);
|
|
8
|
-
--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));
|
|
9
|
-
--grid-item--max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));
|
|
10
|
-
|
|
11
|
-
display: grid;
|
|
12
|
-
grid-template-columns: repeat(
|
|
13
|
-
auto-fill,
|
|
14
|
-
minmax(max(var(--grid-item--min-width), var(--grid-item--max-width)), 1fr)
|
|
15
|
-
);
|
|
16
|
-
grid-gap: var(--grid-layout-gap);
|
|
17
|
-
grid-auto-rows: 1fr; /* make all the rows the same height */
|
|
18
|
-
}
|
|
19
|
-
`;export{o as c};
|
|
20
|
-
//# sourceMappingURL=css-card-grid-DixMt6ek.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"css-card-grid-DixMt6ek.esm.js","sources":["../../src/shared/fragments/css-card-grid.ts"],"sourcesContent":["import { css, unsafeCSS } from \"lit\";\n\nexport const cssCardGrid = ({\n className = \"cardGrid\",\n gap = \"30px\",\n columnCount = 2,\n itemMinWidth = \"300px\",\n}: { className?: string; gap?: string; columnCount?: number | string; itemMinWidth?: string } = {}) => css`\n .${unsafeCSS(className)} {\n --grid-layout-gap: ${unsafeCSS(gap)};\n --grid-column-count: ${unsafeCSS(columnCount)};\n --grid-item--min-width: ${unsafeCSS(itemMinWidth)};\n\n --gap-count: calc(var(--grid-column-count) - 1);\n --total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));\n --grid-item--max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));\n\n display: grid;\n grid-template-columns: repeat(\n auto-fill,\n minmax(max(var(--grid-item--min-width), var(--grid-item--max-width)), 1fr)\n );\n grid-gap: var(--grid-layout-gap);\n grid-auto-rows: 1fr; /* make all the rows the same height */\n }\n`;\n"],"names":["cssCardGrid","className","gap","columnCount","itemMinWidth","css","unsafeCSS"],"mappings":"iDAEO,MAAMA,EAAc,CAAC,CAC1B,UAAAC,EAAY,WACZ,IAAAC,EAAM,OACN,YAAAC,EAAc,EACd,aAAAC,EAAe,OACjB,EAAgG,CAAA,IAAOC;AAAAA,KAClGC,EAAUL,CAAS,CAAC;AAAA,yBACAK,EAAUJ,CAAG,CAAC;AAAA,2BACZI,EAAUH,CAAW,CAAC;AAAA,8BACnBG,EAAUF,CAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{i as n}from"./lit-JRlupCB5.esm.js";import{M as s}from"./beam-errors-Ci0d3926.esm.js";import{logger as l}from"../utils/logger.esm.js";const a=n`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{/*height:auto;*/max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}`;function d(i,e=i.tagName){customElements.get(e)||customElements.define(e,i)}function f(i,e){const t=[],r=e;for(const o of i)r[o]==null&&t.push(o);if(t.length>0)throw l.error(`Beam Impact - Missing Required Config Values:
|
|
2
|
-
`,t.join(", "),e),new s(t);return!0}function h(i,e){return i.every(t=>t in e&&e[t]!=null)}export{h as a,a as c,d,f as e};
|
|
3
|
-
//# sourceMappingURL=enforce-config-DHnpgqSK.esm.js.map
|