@ticketlayer/live 0.2.0 → 0.4.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/README.md +13 -14
- package/dist/auto.d.ts +5 -0
- package/dist/auto.d.ts.map +1 -1
- package/dist/auto.js +7 -0
- package/dist/auto.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/core/cartTotals.d.ts +72 -0
- package/dist/core/cartTotals.d.ts.map +1 -0
- package/dist/core/cartTotals.js +110 -0
- package/dist/core/cartTotals.js.map +1 -0
- package/dist/createLiveClient.d.ts.map +1 -1
- package/dist/createLiveClient.js +7 -0
- package/dist/createLiveClient.js.map +1 -1
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +15 -6
- package/dist/elements.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/state/checkoutModal.d.ts +0 -18
- package/dist/state/checkoutModal.d.ts.map +1 -1
- package/dist/state/checkoutModal.js +33 -22
- package/dist/state/checkoutModal.js.map +1 -1
- package/dist/state/loadElements.d.ts +13 -1
- package/dist/state/loadElements.d.ts.map +1 -1
- package/dist/state/loadElements.js +90 -1
- package/dist/state/loadElements.js.map +1 -1
- package/dist/state/theme.d.ts +13 -13
- package/dist/state/theme.d.ts.map +1 -1
- package/dist/state/theme.js +18 -34
- package/dist/state/theme.js.map +1 -1
- package/dist/ticketlayer.js +3 -3
- package/dist/ticketlayer.js.map +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +22 -21
package/README.md
CHANGED
|
@@ -8,11 +8,8 @@ the server (`@ticketlayer/live/server`).
|
|
|
8
8
|
npm install @ticketlayer/live
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
apps use a `file:` link to this repository, and third-party pages load the
|
|
14
|
-
CDN build. The vault page `architecture/sdk-architecture.md` lists what is
|
|
15
|
-
on npm.
|
|
11
|
+
Third-party pages load the same client from the CDN build instead. The
|
|
12
|
+
vault page `architecture/sdk-architecture.md` lists what is on npm.
|
|
16
13
|
|
|
17
14
|
## Browser
|
|
18
15
|
|
|
@@ -28,7 +25,7 @@ const tl = await createLiveClient({
|
|
|
28
25
|
|
|
29
26
|
The CDN build (`dist/ticketlayer.js`, served at `/v1/ticketlayer.js`) boots
|
|
30
27
|
itself from `data-*` attributes on its script tag; see `src/auto.ts` and
|
|
31
|
-
`
|
|
28
|
+
`cdn/README.md` at the repository root. `CLAUDE.md` is the working agreement.
|
|
32
29
|
|
|
33
30
|
## React Native
|
|
34
31
|
|
|
@@ -179,19 +176,21 @@ overrides), so framework-specific fetch options pass straight through.
|
|
|
179
176
|
|
|
180
177
|
## Scripts
|
|
181
178
|
|
|
179
|
+
From the repository root, after `pnpm install`:
|
|
180
|
+
|
|
182
181
|
```bash
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
pnpm --filter @ticketlayer/live build # tsc -> dist/ (index.js, server.js, native/, types)
|
|
183
|
+
pnpm --filter @ticketlayer/live build:cdn # + esbuild IIFE -> dist/ticketlayer.js
|
|
184
|
+
pnpm --filter @ticketlayer/live test # builds, then node --test test/*.test.mjs
|
|
185
|
+
pnpm --filter @ticketlayer/live docs:gen # typedoc -> docs-output/
|
|
187
186
|
```
|
|
188
187
|
|
|
189
188
|
## Releasing
|
|
190
189
|
|
|
191
|
-
Versioning and publishing are driven by [changesets](
|
|
192
|
-
add a changeset with your change, and on merge to
|
|
193
|
-
keeps a "Release
|
|
194
|
-
publishes to npm with provenance. `src/client.ts` and `src/generated/` are
|
|
190
|
+
Versioning and publishing are driven by [changesets](../../.changeset/README.md)
|
|
191
|
+
for the whole workspace: add a changeset with your change, and on merge to
|
|
192
|
+
`main` the release workflow keeps a "Release Ticketlayer Live" pull request
|
|
193
|
+
up to date; merging that publishes to npm with provenance. `src/client.ts` and `src/generated/` are
|
|
195
194
|
generated by `backstage-sdk-tooling` (regeneration PRs arrive automatically
|
|
196
195
|
when backstage-api publishes a contract) and are shipped exactly as committed.
|
|
197
196
|
The `ticketlayer` block in `package.json` records the spec version, dated API
|
package/dist/auto.d.ts
CHANGED
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* data-api-url="https://live-api.ticketlayer.com"
|
|
9
9
|
* data-checkout-base="https://checkout.ticketlayer.com"></script>
|
|
10
10
|
*
|
|
11
|
+
* `data-elements-url` and `data-elements-integrity` travel together and are
|
|
12
|
+
* what an installed site is pinned with (the Webflow Integration Service
|
|
13
|
+
* writes both). An exact-version `data-elements-url` without the hash is
|
|
14
|
+
* refused rather than loaded unverified - see state/loadElements.ts.
|
|
15
|
+
*
|
|
11
16
|
* On load it boots a Live client from the script tag's data-* attributes:
|
|
12
17
|
* publishes `window.Ticketlayer` (so `@ticketlayer/elements` bind), injects the
|
|
13
18
|
* Elements bundle, and installs the hosted iframe checkout modal. Plain HTML
|
package/dist/auto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoC1E;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA2BtD;AAGD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/auto.js
CHANGED
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* data-api-url="https://live-api.ticketlayer.com"
|
|
9
9
|
* data-checkout-base="https://checkout.ticketlayer.com"></script>
|
|
10
10
|
*
|
|
11
|
+
* `data-elements-url` and `data-elements-integrity` travel together and are
|
|
12
|
+
* what an installed site is pinned with (the Webflow Integration Service
|
|
13
|
+
* writes both). An exact-version `data-elements-url` without the hash is
|
|
14
|
+
* refused rather than loaded unverified - see state/loadElements.ts.
|
|
15
|
+
*
|
|
11
16
|
* On load it boots a Live client from the script tag's data-* attributes:
|
|
12
17
|
* publishes `window.Ticketlayer` (so `@ticketlayer/elements` bind), injects the
|
|
13
18
|
* Elements bundle, and installs the hosted iframe checkout modal. Plain HTML
|
|
@@ -34,6 +39,7 @@ function readConfig() {
|
|
|
34
39
|
publishableKey: d.publishableKey,
|
|
35
40
|
apiUrl: d.apiUrl,
|
|
36
41
|
elementsUrl: d.elementsUrl,
|
|
42
|
+
elementsIntegrity: d.elementsIntegrity,
|
|
37
43
|
checkoutBase: d.checkoutBase,
|
|
38
44
|
// Inject @ticketlayer/elements unless explicitly opted out (data-elements="false").
|
|
39
45
|
autoElements: d.elements !== 'false',
|
|
@@ -63,6 +69,7 @@ export function boot() {
|
|
|
63
69
|
publishableKey: cfg.publishableKey,
|
|
64
70
|
elements: cfg.autoElements,
|
|
65
71
|
...(cfg.elementsUrl ? { elementsUrl: cfg.elementsUrl } : {}),
|
|
72
|
+
...(cfg.elementsIntegrity ? { elementsIntegrity: cfg.elementsIntegrity } : {}),
|
|
66
73
|
checkout: { mode: 'modal', ...(cfg.checkoutBase ? { embedBaseUrl: cfg.checkoutBase } : {}) },
|
|
67
74
|
}).catch((err) => {
|
|
68
75
|
console.error('[ticketlayer] Failed to initialise:', err);
|
package/dist/auto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiB1E,sEAAsE;AACtE,SAAS,UAAU;IACjB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,EAAE,GACL,QAAQ,CAAC,aAA0C;QACpD,QAAQ,CAAC,aAAa,CAAoB,8BAA8B,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACrB,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,oFAAoF;QACpF,YAAY,EAAE,CAAC,CAAC,QAAQ,KAAK,OAAO;KACrC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,MAA+B,CAAC;IAC1C,IAAI,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,cAAc;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;IACzF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,OAAO,EAAE,GAAG,CAAC,MAAM;QACnB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,GAAG,CAAC,YAAY;QAC1B,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC7F,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AAE7C,qBAAqB;AACrB,KAAK,IAAI,EAAE,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* GENERATED FILE - do not edit by hand.
|
|
3
3
|
* @ticketlayer/live client generated from the backstage sales surface
|
|
4
4
|
* (spec 1.0.0) + live-api (0.1.0)
|
|
5
|
-
* by backstage-sdk-tooling 0.1.0 on 2026-09-
|
|
5
|
+
* by backstage-sdk-tooling 0.1.0 on 2026-09-15T10:18:42.096Z.
|
|
6
6
|
* Regenerate with `tt sdk live`.
|
|
7
7
|
*/
|
|
8
8
|
import type { components } from './generated/types';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cart money, read from the response rather than assumed.
|
|
3
|
+
*
|
|
4
|
+
* The Elements connector used to publish `fees: 0` and `total = subtotal` on
|
|
5
|
+
* every cart, which is a claim the client had no business making: a channel
|
|
6
|
+
* with a fee profile charges a booking fee at checkout, so a cart that says
|
|
7
|
+
* "fees 0, total = subtotal" tells the buyer a total they will not be charged.
|
|
8
|
+
* This module reads whatever the sales surface reports and says plainly when
|
|
9
|
+
* it reports nothing.
|
|
10
|
+
*
|
|
11
|
+
* ## What the surface reports today
|
|
12
|
+
*
|
|
13
|
+
* `SalesCart` (backstage-api `src/domains/sales/http/views/index.ts`, mirrored
|
|
14
|
+
* byte for byte by live-api) is `{ id, status, currency, expiresAt, orderId,
|
|
15
|
+
* items[], itemsSubtotal }`. There is no fee field, no discount field and no
|
|
16
|
+
* total: fees are computed when the cart is checked out, from the channel's
|
|
17
|
+
* fee profile, and land on the ORDER (`totalFees` plus a `type: 'fee'` line
|
|
18
|
+
* item named after the profile's `serviceFeeLabel`). So on today's responses
|
|
19
|
+
* this returns `hasFees: false` and no fee line is rendered - which is correct,
|
|
20
|
+
* and unlike `fees: 0` it does not assert that the buyer pays no fee. The
|
|
21
|
+
* moment a cart response carries the fields, the cart shows the line with no
|
|
22
|
+
* further change here.
|
|
23
|
+
*
|
|
24
|
+
* ## Money
|
|
25
|
+
*
|
|
26
|
+
* Integer minor units everywhere on this platform (2500 = 25.00), so the
|
|
27
|
+
* arithmetic here is integer addition only. A value that is not an integer is
|
|
28
|
+
* not minor units, so it is treated as ABSENT rather than rounded or floated:
|
|
29
|
+
* money never goes through floating point in this module.
|
|
30
|
+
*/
|
|
31
|
+
/** Shown when the surface names no fee of its own. */
|
|
32
|
+
export declare const FEE_LABEL_FALLBACK = "Booking fee";
|
|
33
|
+
export interface CartTotals {
|
|
34
|
+
/** ISO currency code as the cart reports it, or null when it has none yet. */
|
|
35
|
+
currency: string | null;
|
|
36
|
+
/** Ticket lines, in minor units. */
|
|
37
|
+
subtotal: number;
|
|
38
|
+
/** Fees the surface reports, in minor units. 0 when it reports none. */
|
|
39
|
+
fees: number;
|
|
40
|
+
/** Discount the surface reports, as a positive magnitude in minor units. */
|
|
41
|
+
discount: number;
|
|
42
|
+
/** What the buyer pays: the server's figure whenever it gives one. */
|
|
43
|
+
total: number;
|
|
44
|
+
/**
|
|
45
|
+
* Whether to render a fee line. A fee of zero is not the same as no fee:
|
|
46
|
+
* see {@link expressesFee}.
|
|
47
|
+
*/
|
|
48
|
+
hasFees: boolean;
|
|
49
|
+
/** The fee's name as the surface gives it, or null when it names none. */
|
|
50
|
+
feeLabel: string | null;
|
|
51
|
+
/** True when the total came from the response rather than being derived. */
|
|
52
|
+
totalFromServer: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Minor units, or null when the value is not minor units. Integers and
|
|
56
|
+
* all-digit strings only: a decimal like 12.5 or "12.50" is a major-unit
|
|
57
|
+
* amount or a rounding error waiting to happen, and either way it is not
|
|
58
|
+
* something this module will do arithmetic on.
|
|
59
|
+
*/
|
|
60
|
+
export declare function minorUnits(value: unknown): number | null;
|
|
61
|
+
/**
|
|
62
|
+
* Read `subtotal`, `fees`, `discount` and `total` off a cart-shaped response.
|
|
63
|
+
*
|
|
64
|
+
* Field names are backstage-api's, because live-api never reshapes a body:
|
|
65
|
+
* `itemsSubtotal` is what the cart view calls its ticket subtotal today, and
|
|
66
|
+
* `totalFees` / `totalDiscounts` / `total` are what the order view calls the
|
|
67
|
+
* rest - the names a cart view would reuse when it starts carrying them.
|
|
68
|
+
* `fees`, `discount` and `subtotal` are accepted as aliases so a host that
|
|
69
|
+
* already massaged the shape keeps working.
|
|
70
|
+
*/
|
|
71
|
+
export declare function deriveCartTotals(cart: unknown): CartTotals;
|
|
72
|
+
//# sourceMappingURL=cartTotals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartTotals.d.ts","sourceRoot":"","sources":["../../src/core/cartTotals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,4EAA4E;IAC5E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIxD;AAsBD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CA4C1D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cart money, read from the response rather than assumed.
|
|
3
|
+
*
|
|
4
|
+
* The Elements connector used to publish `fees: 0` and `total = subtotal` on
|
|
5
|
+
* every cart, which is a claim the client had no business making: a channel
|
|
6
|
+
* with a fee profile charges a booking fee at checkout, so a cart that says
|
|
7
|
+
* "fees 0, total = subtotal" tells the buyer a total they will not be charged.
|
|
8
|
+
* This module reads whatever the sales surface reports and says plainly when
|
|
9
|
+
* it reports nothing.
|
|
10
|
+
*
|
|
11
|
+
* ## What the surface reports today
|
|
12
|
+
*
|
|
13
|
+
* `SalesCart` (backstage-api `src/domains/sales/http/views/index.ts`, mirrored
|
|
14
|
+
* byte for byte by live-api) is `{ id, status, currency, expiresAt, orderId,
|
|
15
|
+
* items[], itemsSubtotal }`. There is no fee field, no discount field and no
|
|
16
|
+
* total: fees are computed when the cart is checked out, from the channel's
|
|
17
|
+
* fee profile, and land on the ORDER (`totalFees` plus a `type: 'fee'` line
|
|
18
|
+
* item named after the profile's `serviceFeeLabel`). So on today's responses
|
|
19
|
+
* this returns `hasFees: false` and no fee line is rendered - which is correct,
|
|
20
|
+
* and unlike `fees: 0` it does not assert that the buyer pays no fee. The
|
|
21
|
+
* moment a cart response carries the fields, the cart shows the line with no
|
|
22
|
+
* further change here.
|
|
23
|
+
*
|
|
24
|
+
* ## Money
|
|
25
|
+
*
|
|
26
|
+
* Integer minor units everywhere on this platform (2500 = 25.00), so the
|
|
27
|
+
* arithmetic here is integer addition only. A value that is not an integer is
|
|
28
|
+
* not minor units, so it is treated as ABSENT rather than rounded or floated:
|
|
29
|
+
* money never goes through floating point in this module.
|
|
30
|
+
*/
|
|
31
|
+
/** Shown when the surface names no fee of its own. */
|
|
32
|
+
export const FEE_LABEL_FALLBACK = 'Booking fee';
|
|
33
|
+
const bag = (v) => (v && typeof v === 'object' ? v : {});
|
|
34
|
+
/**
|
|
35
|
+
* Minor units, or null when the value is not minor units. Integers and
|
|
36
|
+
* all-digit strings only: a decimal like 12.5 or "12.50" is a major-unit
|
|
37
|
+
* amount or a rounding error waiting to happen, and either way it is not
|
|
38
|
+
* something this module will do arithmetic on.
|
|
39
|
+
*/
|
|
40
|
+
export function minorUnits(value) {
|
|
41
|
+
if (typeof value === 'number')
|
|
42
|
+
return Number.isInteger(value) ? value : null;
|
|
43
|
+
if (typeof value === 'string' && /^-?\d+$/.test(value))
|
|
44
|
+
return Number(value);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const lineType = (line) => (typeof line.type === 'string' ? line.type : 'ticket');
|
|
48
|
+
/** Ticket lines: everything the surface has not typed as a fee, tax or discount. */
|
|
49
|
+
const isTicketLine = (line) => !['fee', 'tax', 'discount'].includes(lineType(line));
|
|
50
|
+
/**
|
|
51
|
+
* The rule, in one place.
|
|
52
|
+
*
|
|
53
|
+
* Render a fee line when the response EXPRESSES a fee: a fee figure above
|
|
54
|
+
* zero, or a fee the surface has named (a `type: 'fee'` line, or a fee label)
|
|
55
|
+
* even when it computes to zero. A response with no fee figure at all, or a
|
|
56
|
+
* bare zero nothing names, expresses no fee and renders no line - a channel
|
|
57
|
+
* with no fee profile looks exactly as it does today, and we never invent a
|
|
58
|
+
* "Booking fee 0.00" row the surface did not put there.
|
|
59
|
+
*/
|
|
60
|
+
function expressesFee(fees, named) {
|
|
61
|
+
if (fees === null)
|
|
62
|
+
return named;
|
|
63
|
+
return fees > 0 || named;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Read `subtotal`, `fees`, `discount` and `total` off a cart-shaped response.
|
|
67
|
+
*
|
|
68
|
+
* Field names are backstage-api's, because live-api never reshapes a body:
|
|
69
|
+
* `itemsSubtotal` is what the cart view calls its ticket subtotal today, and
|
|
70
|
+
* `totalFees` / `totalDiscounts` / `total` are what the order view calls the
|
|
71
|
+
* rest - the names a cart view would reuse when it starts carrying them.
|
|
72
|
+
* `fees`, `discount` and `subtotal` are accepted as aliases so a host that
|
|
73
|
+
* already massaged the shape keeps working.
|
|
74
|
+
*/
|
|
75
|
+
export function deriveCartTotals(cart) {
|
|
76
|
+
const c = bag(cart);
|
|
77
|
+
const lines = Array.isArray(c.items) ? c.items.map(bag) : [];
|
|
78
|
+
const subtotal = minorUnits(c.itemsSubtotal) ??
|
|
79
|
+
minorUnits(c.subtotal) ??
|
|
80
|
+
lines.filter(isTicketLine).reduce((sum, line) => sum + (minorUnits(line.subtotal) ?? 0), 0);
|
|
81
|
+
const feeLines = lines.filter((line) => lineType(line) === 'fee');
|
|
82
|
+
const feeLineTotal = feeLines.length
|
|
83
|
+
? feeLines.reduce((sum, line) => sum + (minorUnits(line.subtotal) ?? 0), 0)
|
|
84
|
+
: null;
|
|
85
|
+
const fees = minorUnits(c.totalFees) ?? minorUnits(c.fees) ?? feeLineTotal;
|
|
86
|
+
const labelled = typeof c.feeLabel === 'string' && c.feeLabel ? c.feeLabel : null;
|
|
87
|
+
const namedLine = feeLines.map((line) => line.name).find((n) => typeof n === 'string' && n);
|
|
88
|
+
const feeLabel = labelled ?? namedLine ?? null;
|
|
89
|
+
const discountLines = lines.filter((line) => lineType(line) === 'discount');
|
|
90
|
+
const discountLineTotal = discountLines.length
|
|
91
|
+
? discountLines.reduce((sum, line) => sum + Math.abs(minorUnits(line.subtotal) ?? 0), 0)
|
|
92
|
+
: null;
|
|
93
|
+
const discount = minorUnits(c.totalDiscounts) ?? minorUnits(c.discount) ?? discountLineTotal;
|
|
94
|
+
const tax = minorUnits(c.totalTax) ?? 0;
|
|
95
|
+
// The server's total is what the buyer is charged. Only derive one when the
|
|
96
|
+
// response carries none, and say which happened so a caller can tell.
|
|
97
|
+
const serverTotal = minorUnits(c.total);
|
|
98
|
+
const total = serverTotal ?? subtotal + (fees ?? 0) + tax - (discount ?? 0);
|
|
99
|
+
return {
|
|
100
|
+
currency: typeof c.currency === 'string' ? c.currency : null,
|
|
101
|
+
subtotal,
|
|
102
|
+
fees: fees ?? 0,
|
|
103
|
+
discount: discount ?? 0,
|
|
104
|
+
total,
|
|
105
|
+
hasFees: expressesFee(fees, feeLabel !== null || feeLines.length > 0),
|
|
106
|
+
feeLabel,
|
|
107
|
+
totalFromServer: serverTotal !== null,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=cartTotals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartTotals.js","sourceRoot":"","sources":["../../src/core/cartTotals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLiveClient.d.ts","sourceRoot":"","sources":["../src/createLiveClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAI3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB,EAAE,mBAAmB;IACpF,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,oBAAoB,CAAC;IACpD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"createLiveClient.d.ts","sourceRoot":"","sources":["../src/createLiveClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAI3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB,EAAE,mBAAmB;IACpF,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,oBAAoB,CAAC;IACpD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2EjG"}
|
package/dist/createLiveClient.js
CHANGED
|
@@ -66,6 +66,13 @@ export async function createLiveClient(options) {
|
|
|
66
66
|
if (options.buyModal !== false && options.publish !== false && typeof window !== 'undefined') {
|
|
67
67
|
installBuyModal(tl);
|
|
68
68
|
}
|
|
69
|
+
// loadElements REJECTS when the network or the bundle fails, which is
|
|
70
|
+
// logged and survivable, and THROWS synchronously when the options ask for
|
|
71
|
+
// something that cannot be verified (an exact-version elementsUrl with no
|
|
72
|
+
// elementsIntegrity, a hash with no URL). That throw is deliberately outside
|
|
73
|
+
// the catch: a host that pinned the bundle and lost the hash gets a failed
|
|
74
|
+
// createLiveClient, not a quietly unverified checkout. See
|
|
75
|
+
// state/loadElements.ts for the rule in full.
|
|
69
76
|
const elementsLoad = loadElements(options).catch((err) => {
|
|
70
77
|
console.error('[live] Elements auto-load failed', err);
|
|
71
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLiveClient.js","sourceRoot":"","sources":["../src/createLiveClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createLiveClient.js","sourceRoot":"","sources":["../src/createLiveClient.ts"],"names":[],"mappings":"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"}
|
package/dist/elements.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}
|
package/dist/elements.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { deriveCartTotals } from './core/cartTotals.js';
|
|
1
2
|
/**
|
|
2
3
|
* Adapt the sales-surface cart view to the shape Elements consume. The sales
|
|
3
4
|
* view exposes `itemsSubtotal` + per-item `subtotal`; the components (tl-cart,
|
|
4
5
|
* badges) were written against `subtotal`/`total`/`fees` + per-item
|
|
5
6
|
* `totalPrice`. Add those aliases (and itemCount) without dropping the
|
|
6
|
-
* originals - otherwise tl-cart formats undefined → £NaN.
|
|
7
|
-
*
|
|
7
|
+
* originals - otherwise tl-cart formats undefined → £NaN.
|
|
8
|
+
*
|
|
9
|
+
* The money comes from {@link deriveCartTotals}, which reads the response
|
|
10
|
+
* instead of asserting `fees: 0`: `fees`, `discount` and `feeLabel` are
|
|
11
|
+
* whatever the surface reports, `hasFees` is the render-a-fee-line rule, and
|
|
12
|
+
* `total` is the server's figure whenever the response carries one. Money
|
|
13
|
+
* stays minor units.
|
|
8
14
|
*/
|
|
9
15
|
const withCount = (cart) => {
|
|
10
16
|
if (!cart || typeof cart !== 'object')
|
|
@@ -17,14 +23,17 @@ const withCount = (cart) => {
|
|
|
17
23
|
return { ...it, totalPrice: it.totalPrice ?? line };
|
|
18
24
|
});
|
|
19
25
|
const itemCount = items.reduce((sum, i) => sum + (i.quantity ?? 0), 0);
|
|
20
|
-
const
|
|
26
|
+
const totals = deriveCartTotals(c);
|
|
21
27
|
return {
|
|
22
28
|
...c,
|
|
23
29
|
items,
|
|
24
30
|
itemCount,
|
|
25
|
-
subtotal,
|
|
26
|
-
fees:
|
|
27
|
-
|
|
31
|
+
subtotal: totals.subtotal,
|
|
32
|
+
fees: totals.fees,
|
|
33
|
+
discount: totals.discount,
|
|
34
|
+
total: totals.total,
|
|
35
|
+
hasFees: totals.hasFees,
|
|
36
|
+
feeLabel: totals.feeLabel,
|
|
28
37
|
};
|
|
29
38
|
};
|
|
30
39
|
export function createElementsConnector(tl) {
|
package/dist/elements.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements.js","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"elements.js","sourceRoot":"","sources":["../src/elements.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export { createLiveClient, TicketlayerLive, type CreateLiveClientOptions, type PresaleRedemption, } from './createLiveClient.js';
|
|
13
13
|
export type { LiveEvent } from './state/emitter.js';
|
|
14
|
+
export { ElementsIntegrityError, type LoadElementsOptions } from './state/loadElements.js';
|
|
14
15
|
export { createElementsConnector, type ElementsConnector, type ModalOptions, } from './elements.js';
|
|
16
|
+
export { deriveCartTotals, minorUnits, FEE_LABEL_FALLBACK, type CartTotals, } from './core/cartTotals.js';
|
|
15
17
|
export { getPublishedClient, TICKETLAYER_GLOBAL_KEY, TICKETLAYER_READY_EVENT, type TicketlayerGlobal, } from './state/registry.js';
|
|
16
18
|
export { installCheckoutModal, type CheckoutModalOptions } from './state/checkoutModal.js';
|
|
17
19
|
export { installBuyModal, type BuyModalOptions } from './state/buyModal.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,mBAAmB,sBAAsB,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,KAAK,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9C,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAChD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,KAAK,UAAU,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,mBAAmB,sBAAsB,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,KAAK,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9C,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAChD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* @ticketlayer/elements; native apps use the headless client + webview checkout.
|
|
11
11
|
*/
|
|
12
12
|
export { createLiveClient, TicketlayerLive, } from './createLiveClient.js';
|
|
13
|
+
export { ElementsIntegrityError } from './state/loadElements.js';
|
|
13
14
|
export { createElementsConnector, } from './elements.js';
|
|
15
|
+
export { deriveCartTotals, minorUnits, FEE_LABEL_FALLBACK, } from './core/cartTotals.js';
|
|
14
16
|
export { getPublishedClient, TICKETLAYER_GLOBAL_KEY, TICKETLAYER_READY_EVENT, } from './state/registry.js';
|
|
15
17
|
export { installCheckoutModal } from './state/checkoutModal.js';
|
|
16
18
|
export { installBuyModal } from './state/buyModal.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,GAGxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAA6B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAwB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,sBAAsB,EAA4B,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EACL,uBAAuB,GAGxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAA6B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAwB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,aAAa,CAAC"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checkout modal manager (third-party embeds).
|
|
3
|
-
*
|
|
4
|
-
* On a third-party site, Elements build the cart in-page and emit
|
|
5
|
-
* `ui:checkout-requested`. This opens the hosted checkout in an iframe overlay
|
|
6
|
-
* pointing at HBO's `/embed/checkout`, handing off the current session token so
|
|
7
|
-
* the iframe sees the same cart (and so card data stays on HBO's origin - PCI
|
|
8
|
-
* isolation). It bridges the `tl:*` postMessage protocol back to the caller's
|
|
9
|
-
* onComplete/onError/onClose callbacks (which rode in on the intent payload).
|
|
10
|
-
*
|
|
11
|
-
* The iframe URL carries `parent_origin=<this page's origin>` so HBO can pin
|
|
12
|
-
* its postMessage target to us (it never posts to '*'), and incoming messages
|
|
13
|
-
* are only accepted from the checkout's own origin. The message set is
|
|
14
|
-
* documented in HBO's docs/embed-checkout-contract.md.
|
|
15
|
-
*
|
|
16
|
-
* HBO itself does NOT use this - it handles `ui:checkout-requested` by
|
|
17
|
-
* navigating in-page to /checkout.
|
|
18
|
-
*/
|
|
19
1
|
import type { TicketlayerLive } from '../createLiveClient.js';
|
|
20
2
|
export interface CheckoutModalOptions {
|
|
21
3
|
/** Base URL of the HBO instance serving /embed/checkout. Defaults to origin. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkoutModal.d.ts","sourceRoot":"","sources":["../../src/state/checkoutModal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkoutModal.d.ts","sourceRoot":"","sources":["../../src/state/checkoutModal.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,eAAe,EACnB,IAAI,GAAE,oBAAyB,GAC9B,MAAM,IAAI,CAyHZ"}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checkout modal manager (third-party embeds).
|
|
3
|
+
*
|
|
4
|
+
* On a third-party site, Elements build the cart in-page and emit
|
|
5
|
+
* `ui:checkout-requested`. This opens the hosted checkout in an iframe overlay
|
|
6
|
+
* pointing at HBO's `/embed/checkout`, handing off the current session token so
|
|
7
|
+
* the iframe sees the same cart (and so card data stays on HBO's origin - PCI
|
|
8
|
+
* isolation). It bridges the `tl:*` postMessage protocol back to the caller's
|
|
9
|
+
* onComplete/onError/onClose callbacks (which rode in on the intent payload).
|
|
10
|
+
*
|
|
11
|
+
* The iframe URL carries `parent_origin=<this page's origin>` so HBO can pin
|
|
12
|
+
* its postMessage target to us (it never posts to '*'), and incoming messages
|
|
13
|
+
* are only accepted from the checkout's own origin. The message set is
|
|
14
|
+
* documented in HBO's docs/embed-checkout-contract.md.
|
|
15
|
+
*
|
|
16
|
+
* HBO itself does NOT use this - it handles `ui:checkout-requested` by
|
|
17
|
+
* navigating in-page to /checkout.
|
|
18
|
+
*/
|
|
19
|
+
import { TOKEN_DEFAULTS } from '@ticketlayer/theme';
|
|
1
20
|
const OVERLAY_ID = 'tl-checkout-overlay';
|
|
2
|
-
const PRIVACY_URL = 'https://ticketlayer.com/privacy';
|
|
3
|
-
const REPORT_URL = 'https://ticketlayer.com/report-abuse';
|
|
4
|
-
const SITE_URL = 'https://ticketlayer.com';
|
|
5
|
-
/** Floating-chrome markup: platform links (left) + Powered by Ticketlayer (right). */
|
|
6
|
-
function footerHtml() {
|
|
7
|
-
const logo = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="display:block;">' +
|
|
8
|
-
'<path d="M4 7.5A1.5 1.5 0 0 1 5.5 6h13A1.5 1.5 0 0 1 20 7.5v2a2 2 0 0 0 0 5v2a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 16.5v-2a2 2 0 0 0 0-5v-2Z" fill="currentColor"/>' +
|
|
9
|
-
'<path d="M13 7v10" stroke="rgba(255,255,255,0.5)" stroke-width="1.2" stroke-dasharray="1.5 1.8" stroke-linecap="round"/></svg>';
|
|
10
|
-
const link = (href, label) => `<a href="${href}" target="_blank" rel="noopener noreferrer" style="color:inherit;text-decoration:none;opacity:0.85;">${label}</a>`;
|
|
11
|
-
return (`<div style="display:flex;gap:16px;align-items:center;">${link(PRIVACY_URL, 'Privacy Policy')}${link(REPORT_URL, 'Report Abuse')}</div>` +
|
|
12
|
-
`<a href="${SITE_URL}" target="_blank" rel="noopener noreferrer" style="color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:6px;opacity:0.92;">` +
|
|
13
|
-
`<span style="opacity:0.7;">Powered by</span>${logo}<span style="font-weight:700;letter-spacing:0.01em;">Ticketlayer</span></a>`);
|
|
14
|
-
}
|
|
15
21
|
/** Wire the modal to the bus; returns an uninstall function. */
|
|
16
22
|
export function installCheckoutModal(tl, opts = {}) {
|
|
17
23
|
if (typeof window === 'undefined' || typeof document === 'undefined')
|
|
@@ -53,18 +59,23 @@ export function installCheckoutModal(tl, opts = {}) {
|
|
|
53
59
|
// Wide enough for the two-column checkout (form left, order summary right);
|
|
54
60
|
// the embedded page stacks to one column on narrow viewports. Subtle theme
|
|
55
61
|
// border (matches the buy-tickets modal) + a soft lift off the backdrop.
|
|
62
|
+
//
|
|
63
|
+
// This one keeps a fallback, unlike the Elements' stylesheets: the overlay
|
|
64
|
+
// is drawn on a host page that may have no Elements and therefore no token
|
|
65
|
+
// stylesheet at all. The fallback is still not a second source - it is read
|
|
66
|
+
// from the same token table.
|
|
56
67
|
frame.style.cssText =
|
|
57
|
-
|
|
68
|
+
`width:100%;height:88vh;max-height:760px;border:1px solid var(--tl-border, ${TOKEN_DEFAULTS.border});` +
|
|
58
69
|
'border-radius:16px;background:#fff;box-shadow:0 24px 64px rgba(0,0,0,0.45);';
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
// No chrome of our own around the iframe.
|
|
71
|
+
//
|
|
72
|
+
// The overlay is a transport: an iframe onto the hosted checkout plus the
|
|
73
|
+
// postMessage bridge. It used to draw a "Powered by Ticketlayer" footer
|
|
74
|
+
// beneath the frame, which put attribution at the wrong layer - duplicated
|
|
75
|
+
// by the page inside, and absent for anyone who opens /embed/checkout
|
|
76
|
+
// directly rather than through this overlay. The checkout page renders it
|
|
77
|
+
// now, where the buyer actually is.
|
|
66
78
|
wrapper.appendChild(frame);
|
|
67
|
-
wrapper.appendChild(footer);
|
|
68
79
|
overlay.appendChild(wrapper);
|
|
69
80
|
overlay.addEventListener('click', (e) => {
|
|
70
81
|
if (e.target === overlay || e.target === wrapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkoutModal.js","sourceRoot":"","sources":["../../src/state/checkoutModal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkoutModal.js","sourceRoot":"","sources":["../../src/state/checkoutModal.ts"],"names":[],"mappings":"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"}
|