@mj-biz-apps/orders-ng 5.36.0 → 5.37.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/checkout-element/main.js +491 -154
- package/dist/lib/checkout-widget/checkout-complete.d.ts +53 -0
- package/dist/lib/checkout-widget/checkout-complete.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-complete.js +92 -0
- package/dist/lib/checkout-widget/checkout-complete.js.map +1 -0
- package/dist/lib/checkout-widget/checkout-draft-line.d.ts +7 -1
- package/dist/lib/checkout-widget/checkout-draft-line.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-draft-line.js +18 -0
- package/dist/lib/checkout-widget/checkout-draft-line.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +56 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.js +245 -113
- package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts +35 -2
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.js +145 -45
- package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +7 -0
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +23 -22
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
- package/dist/lib/data/orders-queries.d.ts +3 -1
- package/dist/lib/data/orders-queries.d.ts.map +1 -1
- package/dist/lib/data/orders-queries.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completing a checkout the buyer has already paid for. Pure, so it is testable without the host
|
|
3
|
+
* component.
|
|
4
|
+
*
|
|
5
|
+
* `/complete` books the order in one call. When it runs past the CDN or proxy timeout in front of
|
|
6
|
+
* the server, the browser gets the gateway's HTML error page (a 504), or no reply at all, while
|
|
7
|
+
* the server goes on and confirms the order. The card has been charged by then, so the checkout
|
|
8
|
+
* must not report a failure: it asks again. `/complete` is replay-safe: while the first call is
|
|
9
|
+
* still running it answers `Status: 'Processing'`, and once the session is Confirmed it returns the
|
|
10
|
+
* existing order without booking a second one.
|
|
11
|
+
*/
|
|
12
|
+
type CheckoutReply = Record<string, unknown>;
|
|
13
|
+
/** How often the checkout asks again, and for how long, before it stops waiting. */
|
|
14
|
+
export declare const COMPLETE_RETRY_INTERVAL_MS = 3000;
|
|
15
|
+
export declare const COMPLETE_RETRY_TIMEOUT_MS = 120000;
|
|
16
|
+
/** Shown while the checkout asks again. */
|
|
17
|
+
export declare const COMPLETE_FINISHING_MESSAGE = "Payment received. Finishing your order\u2026";
|
|
18
|
+
/** Shown when the wait runs out with the order still unconfirmed. Never asks the buyer to pay again. */
|
|
19
|
+
export declare const COMPLETE_DELAYED_MESSAGE: string;
|
|
20
|
+
/** Shown for any other call whose reply was not the server's JSON. */
|
|
21
|
+
export declare const CHECKOUT_UNREACHABLE_MESSAGE = "Checkout could not reach the server. Please try again.";
|
|
22
|
+
/**
|
|
23
|
+
* A reply that was not the checkout server's JSON: a gateway or proxy error page, or no reply at
|
|
24
|
+
* all (`HttpStatus` null). Its message is written for the buyer, never a parser error.
|
|
25
|
+
*/
|
|
26
|
+
export declare class CheckoutTransportError extends Error {
|
|
27
|
+
readonly HttpStatus: number | null;
|
|
28
|
+
constructor(HttpStatus: number | null);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The reply's JSON body, with its HTTP status as `_httpStatus`. Throws {@link CheckoutTransportError}
|
|
32
|
+
* for a body that is not a JSON object, such as a gateway's HTML error page.
|
|
33
|
+
*/
|
|
34
|
+
export declare function ReadCheckoutReply(res: Response): Promise<CheckoutReply>;
|
|
35
|
+
/** True when `/complete` answered that an earlier call for the same session is still booking it. */
|
|
36
|
+
export declare function CompleteStillProcessing(reply: CheckoutReply | null | undefined): boolean;
|
|
37
|
+
export interface CompleteRetryOptions {
|
|
38
|
+
intervalMs?: number;
|
|
39
|
+
timeoutMs?: number;
|
|
40
|
+
/** Called once, the first time the checkout has to wait. */
|
|
41
|
+
onWaiting?: () => void;
|
|
42
|
+
now?: () => number;
|
|
43
|
+
sleep?: (ms: number) => Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sends `/complete` until it gives a final answer: the order (`Success: true`) or a refusal from
|
|
47
|
+
* the server, both returned as they are. A reply that was not the server's JSON, or a session still
|
|
48
|
+
* Processing, means the server may still be finishing, so it asks again. Resolves null when the wait
|
|
49
|
+
* runs out with no final answer. Any other error (a failed human verification) is thrown.
|
|
50
|
+
*/
|
|
51
|
+
export declare function CompleteWithRetry(send: () => Promise<CheckoutReply>, options?: CompleteRetryOptions): Promise<CheckoutReply | null>;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=checkout-complete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-complete.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-complete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAEhD,2CAA2C;AAC3C,eAAO,MAAM,0BAA0B,iDAA4C,CAAC;AAEpF,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,QAEqB,CAAC;AAE3D,sEAAsE;AACtE,eAAO,MAAM,4BAA4B,2DAA2D,CAAC;AAErG;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aACjB,UAAU,EAAE,MAAM,GAAG,IAAI;gBAAzB,UAAU,EAAE,MAAM,GAAG,IAAI;CAIxD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAa7E;AAED,oGAAoG;AACpG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAExF;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EAClC,OAAO,GAAE,oBAAyB,GACnC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2B/B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completing a checkout the buyer has already paid for. Pure, so it is testable without the host
|
|
3
|
+
* component.
|
|
4
|
+
*
|
|
5
|
+
* `/complete` books the order in one call. When it runs past the CDN or proxy timeout in front of
|
|
6
|
+
* the server, the browser gets the gateway's HTML error page (a 504), or no reply at all, while
|
|
7
|
+
* the server goes on and confirms the order. The card has been charged by then, so the checkout
|
|
8
|
+
* must not report a failure: it asks again. `/complete` is replay-safe: while the first call is
|
|
9
|
+
* still running it answers `Status: 'Processing'`, and once the session is Confirmed it returns the
|
|
10
|
+
* existing order without booking a second one.
|
|
11
|
+
*/
|
|
12
|
+
/** How often the checkout asks again, and for how long, before it stops waiting. */
|
|
13
|
+
export const COMPLETE_RETRY_INTERVAL_MS = 3000;
|
|
14
|
+
export const COMPLETE_RETRY_TIMEOUT_MS = 120000;
|
|
15
|
+
/** Shown while the checkout asks again. */
|
|
16
|
+
export const COMPLETE_FINISHING_MESSAGE = 'Payment received. Finishing your order…';
|
|
17
|
+
/** Shown when the wait runs out with the order still unconfirmed. Never asks the buyer to pay again. */
|
|
18
|
+
export const COMPLETE_DELAYED_MESSAGE = 'Your payment went through, but confirming your order is taking longer than usual. Please do not pay again. ' +
|
|
19
|
+
'Contact support if you need your order confirmation.';
|
|
20
|
+
/** Shown for any other call whose reply was not the server's JSON. */
|
|
21
|
+
export const CHECKOUT_UNREACHABLE_MESSAGE = 'Checkout could not reach the server. Please try again.';
|
|
22
|
+
/**
|
|
23
|
+
* A reply that was not the checkout server's JSON: a gateway or proxy error page, or no reply at
|
|
24
|
+
* all (`HttpStatus` null). Its message is written for the buyer, never a parser error.
|
|
25
|
+
*/
|
|
26
|
+
export class CheckoutTransportError extends Error {
|
|
27
|
+
HttpStatus;
|
|
28
|
+
constructor(HttpStatus) {
|
|
29
|
+
super(CHECKOUT_UNREACHABLE_MESSAGE);
|
|
30
|
+
this.HttpStatus = HttpStatus;
|
|
31
|
+
this.name = 'CheckoutTransportError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The reply's JSON body, with its HTTP status as `_httpStatus`. Throws {@link CheckoutTransportError}
|
|
36
|
+
* for a body that is not a JSON object, such as a gateway's HTML error page.
|
|
37
|
+
*/
|
|
38
|
+
export async function ReadCheckoutReply(res) {
|
|
39
|
+
let json;
|
|
40
|
+
try {
|
|
41
|
+
json = await res.json();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw new CheckoutTransportError(res.status);
|
|
45
|
+
}
|
|
46
|
+
if (!json || typeof json !== 'object' || Array.isArray(json)) {
|
|
47
|
+
throw new CheckoutTransportError(res.status);
|
|
48
|
+
}
|
|
49
|
+
const reply = json;
|
|
50
|
+
reply._httpStatus = res.status;
|
|
51
|
+
return reply;
|
|
52
|
+
}
|
|
53
|
+
/** True when `/complete` answered that an earlier call for the same session is still booking it. */
|
|
54
|
+
export function CompleteStillProcessing(reply) {
|
|
55
|
+
return !!reply && reply.Success !== true && reply.Status === 'Processing';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sends `/complete` until it gives a final answer: the order (`Success: true`) or a refusal from
|
|
59
|
+
* the server, both returned as they are. A reply that was not the server's JSON, or a session still
|
|
60
|
+
* Processing, means the server may still be finishing, so it asks again. Resolves null when the wait
|
|
61
|
+
* runs out with no final answer. Any other error (a failed human verification) is thrown.
|
|
62
|
+
*/
|
|
63
|
+
export async function CompleteWithRetry(send, options = {}) {
|
|
64
|
+
const interval = options.intervalMs ?? COMPLETE_RETRY_INTERVAL_MS;
|
|
65
|
+
const now = options.now ?? (() => Date.now());
|
|
66
|
+
const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
67
|
+
const deadline = now() + (options.timeoutMs ?? COMPLETE_RETRY_TIMEOUT_MS);
|
|
68
|
+
let waiting = false;
|
|
69
|
+
for (;;) {
|
|
70
|
+
let reply = null;
|
|
71
|
+
try {
|
|
72
|
+
reply = await send();
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (!(err instanceof CheckoutTransportError)) {
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (reply && !CompleteStillProcessing(reply)) {
|
|
80
|
+
return reply;
|
|
81
|
+
}
|
|
82
|
+
if (!waiting) {
|
|
83
|
+
waiting = true;
|
|
84
|
+
options.onWaiting?.();
|
|
85
|
+
}
|
|
86
|
+
if (now() >= deadline) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
await sleep(interval);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=checkout-complete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-complete.js","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CheckoutSubmissionEvent } from './checkout-widget.component.js';
|
|
1
|
+
import type { CheckoutAppliedPromotion, CheckoutSubmissionEvent } from './checkout-widget.component.js';
|
|
2
2
|
/**
|
|
3
3
|
* Maps a widget submission onto the anonymous draft line.
|
|
4
4
|
* Extension payloads are the introspected field maps from ProductType.OrderLineExtensionEntity
|
|
@@ -46,4 +46,10 @@ export declare function alreadySubscribedDetail(response: Record<string, unknown
|
|
|
46
46
|
* A buyer with no token, or whose discount applied, never stops here.
|
|
47
47
|
*/
|
|
48
48
|
export declare function memberDiscountNotice(draft: Record<string, unknown> | null | undefined, alreadyShown: boolean): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* The member discount a draft was priced with (#919), for the widget's discount line and total, or
|
|
51
|
+
* null when the draft failed or the token earned nothing. The code is the one the server applied
|
|
52
|
+
* (empty when it named none); the discount and total are in major units, at the quantity priced.
|
|
53
|
+
*/
|
|
54
|
+
export declare function memberDiscountFromDraft(draft: Record<string, unknown> | null | undefined, quantity: number): CheckoutAppliedPromotion | null;
|
|
49
55
|
//# sourceMappingURL=checkout-draft-line.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-draft-line.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-draft-line.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout-draft-line.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-draft-line.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAErG;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,uBAAuB,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAO3I;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAExF;AAED;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,+BAA+B,GAAG,IAAI,CAapI;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ5H;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACjD,QAAQ,EAAE,MAAM,GACjB,wBAAwB,GAAG,IAAI,CAYjC"}
|
|
@@ -78,4 +78,22 @@ export function memberDiscountNotice(draft, alreadyShown) {
|
|
|
78
78
|
const typedCodePriced = Array.isArray(applied) && applied.length > 0;
|
|
79
79
|
return typedCodePriced ? `${message} Submit again to continue.` : `${message} Submit again to continue at the standard rate.`;
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* The member discount a draft was priced with (#919), for the widget's discount line and total, or
|
|
83
|
+
* null when the draft failed or the token earned nothing. The code is the one the server applied
|
|
84
|
+
* (empty when it named none); the discount and total are in major units, at the quantity priced.
|
|
85
|
+
*/
|
|
86
|
+
export function memberDiscountFromDraft(draft, quantity) {
|
|
87
|
+
if (!draft?.['Success'] || draft['MemberDiscountApplied'] !== true) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const applied = draft['AppliedPromotionCodes'];
|
|
91
|
+
const code = Array.isArray(applied) && typeof applied[0] === 'string' ? applied[0] : '';
|
|
92
|
+
return {
|
|
93
|
+
code,
|
|
94
|
+
discount: Number(draft['Discount'] ?? 0),
|
|
95
|
+
total: Number(draft['TotalGross'] ?? 0),
|
|
96
|
+
quantity,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
81
99
|
//# sourceMappingURL=checkout-draft-line.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-draft-line.js","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-draft-line.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkout-draft-line.js","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-draft-line.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,24 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
|
|
|
92
92
|
/** The server's total and tax for the details last drafted — shown before the buyer is charged. */
|
|
93
93
|
quotedTotal: number | null;
|
|
94
94
|
quotedTax: number | null;
|
|
95
|
+
/** The verified member's discount the server last priced, shown before Pay (#919). */
|
|
96
|
+
memberDiscount: CheckoutAppliedPromotion | null;
|
|
97
|
+
/** How long the form must be still before a member's price is asked for. A field so a test can shorten it. */
|
|
98
|
+
quoteDebounceMs: number;
|
|
99
|
+
private quoteTimer;
|
|
100
|
+
/** Bumped by every price change; a background answer for an older generation is dropped. */
|
|
101
|
+
private quoteGeneration;
|
|
102
|
+
/**
|
|
103
|
+
* Every background draft still in flight. Pay and Apply wait for all of them, not only the latest: an older
|
|
104
|
+
* one that lands after Pay's own draft would replace it on the session, and `/payment-intent` charges the
|
|
105
|
+
* total the session's last draft saved.
|
|
106
|
+
*/
|
|
107
|
+
private readonly backgroundQuotes;
|
|
108
|
+
/**
|
|
109
|
+
* The e-mail is locked while a member token is attached and the host supplied the address (#919):
|
|
110
|
+
* the discount is bound to it. Without a prefilled address the buyer must still be able to type one.
|
|
111
|
+
*/
|
|
112
|
+
get emailLocked(): boolean;
|
|
95
113
|
/** The post-payment account step, when the host registered one (#292). */
|
|
96
114
|
account: CheckoutAccountView | null;
|
|
97
115
|
password: string;
|
|
@@ -112,6 +130,14 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
|
|
|
112
130
|
accessPollTimeoutMs: number;
|
|
113
131
|
/** True while access is being asked for; the redirect waits on it. */
|
|
114
132
|
private accessTracking;
|
|
133
|
+
/**
|
|
134
|
+
* Shown in place of the form once the buyer has paid and `/complete` has not given a final
|
|
135
|
+
* answer (the reply was a gateway error page, or the session is still Processing).
|
|
136
|
+
*/
|
|
137
|
+
finishingMessage: string | null;
|
|
138
|
+
/** How often, and for how long, `/complete` is asked again. Fields so a test can shorten them. */
|
|
139
|
+
completeRetryIntervalMs: number;
|
|
140
|
+
completeRetryTimeoutMs: number;
|
|
115
141
|
get accessMessage(): string | null;
|
|
116
142
|
private stripe;
|
|
117
143
|
/** Turnstile for a widget that sets `requireTurnstile` (#592); idle until the edge asks for it. */
|
|
@@ -168,6 +194,29 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
|
|
|
168
194
|
private resetForm;
|
|
169
195
|
/** A price input changed: every total the server priced for the old inputs is stale, tax included. */
|
|
170
196
|
onQuoteInvalidated(): void;
|
|
197
|
+
/**
|
|
198
|
+
* The widget's e-mail and billing location are complete and a price input changed (#919). With a
|
|
199
|
+
* member token, the form is drafted in the background once it has been still for
|
|
200
|
+
* `quoteDebounceMs`, so a verified member sees the discount, the total and the Pay button at the
|
|
201
|
+
* member price before pressing Pay, and one press pays. Without a token nothing is sent.
|
|
202
|
+
*/
|
|
203
|
+
onQuoteRequested(event: CheckoutSubmissionEvent): void;
|
|
204
|
+
/**
|
|
205
|
+
* Drafts the form with the member token and no typed code. Never blocks the form and never
|
|
206
|
+
* reports an error: on any failure the price stays as it is, and Pay drafts it again. An answer
|
|
207
|
+
* for an older generation, or one that arrives while Pay is being processed, is dropped. A token
|
|
208
|
+
* that earned nothing changes nothing here; Pay shows its notice as before.
|
|
209
|
+
*/
|
|
210
|
+
private priceInBackground;
|
|
211
|
+
/** Drops a pending background draft and makes any answer already on its way stale. */
|
|
212
|
+
private cancelBackgroundQuote;
|
|
213
|
+
/**
|
|
214
|
+
* Before Pay or Apply drafts: no background draft may start after it, and every one already sent is
|
|
215
|
+
* waited for, so the server's session holds the buyer's draft rather than a background one.
|
|
216
|
+
*/
|
|
217
|
+
private settleBackgroundQuote;
|
|
218
|
+
/** The `/draft` body for a widget submission, priced with the given typed codes. */
|
|
219
|
+
private draftBody;
|
|
171
220
|
onSubmitted(event: CheckoutSubmissionEvent): Promise<void>;
|
|
172
221
|
/**
|
|
173
222
|
* Pay the open renewal order (#289): an intent for its balance, confirmed with the card entered
|
|
@@ -233,6 +282,13 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
|
|
|
233
282
|
private rememberCompleting;
|
|
234
283
|
private forgetCompleting;
|
|
235
284
|
private completingSession;
|
|
285
|
+
/**
|
|
286
|
+
* Sends `/complete` for a checkout the buyer has paid for, asking again while the server may
|
|
287
|
+
* still be finishing. Returns the server's final answer, or null when the wait ran out; the
|
|
288
|
+
* buyer then sees that the payment went through, never a failure.
|
|
289
|
+
*/
|
|
290
|
+
private completeAfterPayment;
|
|
291
|
+
/** Throws {@link CheckoutTransportError}, whose message is written for the buyer, when no JSON reply arrives. */
|
|
236
292
|
private post;
|
|
237
293
|
/** `/initialize` and `/complete`: sends a Turnstile token when the widget requires one. */
|
|
238
294
|
private postGated;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACH,gBAAgB,EAIhB,YAAY,EAEZ,SAAS,EACT,MAAM,EAGT,MAAM,eAAe,CAAC;AAGvB,OAAO,EAQH,KAAK,mBAAmB,EAC3B,MAAM,oBAAoB,CAAC;AAa5B,OAAO,EAOH,KAAK,mBAAmB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAIH,KAAK,+BAA+B,
|
|
1
|
+
{"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"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"}
|