@brandlab-digital/site-next 1.0.0-rc.24 → 1.0.0-rc.26
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/contact/client.d.ts +7 -43
- package/dist/contact/client.d.ts.map +1 -1
- package/dist/contact/client.js +103 -258
- package/dist/contact/client.js.map +1 -1
- package/dist/contact/contract.d.ts +1 -1
- package/dist/contact/contract.d.ts.map +1 -1
- package/dist/contact/image-sanitizer.d.ts +1 -1
- package/dist/contact/image-sanitizer.js +1 -1
- package/dist/contact/index.d.ts +1 -1
- package/dist/contact/index.d.ts.map +1 -1
- package/dist/contact/index.js +1 -1
- package/dist/contact/index.js.map +1 -1
- package/dist/contact/resend.d.ts +1 -1
- package/dist/contact/resend.d.ts.map +1 -1
- package/dist/contact/resend.js +6 -6
- package/dist/contact/resend.js.map +1 -1
- package/dist/contact/server-entry.d.ts +1 -11
- package/dist/contact/server-entry.d.ts.map +1 -1
- package/dist/contact/server-entry.js +1 -11
- package/dist/contact/server-entry.js.map +1 -1
- package/dist/contact/server.d.ts +28 -18
- package/dist/contact/server.d.ts.map +1 -1
- package/dist/contact/server.js +458 -722
- package/dist/contact/server.js.map +1 -1
- package/dist/contact/shared.d.ts +13 -124
- package/dist/contact/shared.d.ts.map +1 -1
- package/dist/contact/shared.js +9 -3
- package/dist/contact/shared.js.map +1 -1
- package/dist/contact/testing.d.ts +0 -60
- package/dist/contact/testing.d.ts.map +1 -1
- package/dist/contact/testing.js +0 -86
- package/dist/contact/testing.js.map +1 -1
- package/dist/google-reviews-server.d.ts +5 -19
- package/dist/google-reviews-server.d.ts.map +1 -1
- package/dist/google-reviews-server.js +26 -76
- package/dist/google-reviews-server.js.map +1 -1
- package/package.json +2 -2
- package/dist/contact/context.d.ts +0 -30
- package/dist/contact/context.d.ts.map +0 -1
- package/dist/contact/context.js +0 -315
- package/dist/contact/context.js.map +0 -1
- package/dist/contact/durable.d.ts +0 -31
- package/dist/contact/durable.d.ts.map +0 -1
- package/dist/contact/durable.js +0 -331
- package/dist/contact/durable.js.map +0 -1
- package/dist/contact/production.d.ts +0 -50
- package/dist/contact/production.d.ts.map +0 -1
- package/dist/contact/production.js +0 -328
- package/dist/contact/production.js.map +0 -1
- package/dist/contact/request.d.ts +0 -19
- package/dist/contact/request.d.ts.map +0 -1
- package/dist/contact/request.js +0 -116
- package/dist/contact/request.js.map +0 -1
- package/dist/contact/route.d.ts +0 -15
- package/dist/contact/route.d.ts.map +0 -1
- package/dist/contact/route.js +0 -128
- package/dist/contact/route.js.map +0 -1
- package/dist/google-reviews-durable.d.ts +0 -22
- package/dist/google-reviews-durable.d.ts.map +0 -1
- package/dist/google-reviews-durable.js +0 -81
- package/dist/google-reviews-durable.js.map +0 -1
- package/dist/redis-rest.d.ts +0 -12
- package/dist/redis-rest.d.ts.map +0 -1
- package/dist/redis-rest.js +0 -83
- package/dist/redis-rest.js.map +0 -1
package/dist/contact/client.d.ts
CHANGED
|
@@ -3,65 +3,31 @@ import { type ContactActionResult } from '@brandlab-digital/site-core/contact';
|
|
|
3
3
|
import { type SafeContactAdsParams, type SafeContactAnalyticsParams } from '../analytics.js';
|
|
4
4
|
import { createContactSubmissionId, type BrandlabContactDefinition } from './shared.js';
|
|
5
5
|
export { createContactSubmissionId };
|
|
6
|
-
/**
|
|
7
|
-
* Restores the reviewed filename and MIME contract after a browser image
|
|
8
|
-
* processor returns an anonymous Blob. The server still validates the file's
|
|
9
|
-
* extension, declared type and magic bytes before delivery.
|
|
10
|
-
*/
|
|
11
6
|
export declare function normalizeContactUploadFile(original: File, processed: Blob): File;
|
|
12
|
-
/** Parses the untrusted HTTP/Server Action result before UI or analytics use it. */
|
|
13
7
|
export declare function parseContactActionResult(value: unknown): ContactActionResult | undefined;
|
|
14
|
-
export interface ContactClientSubmissionContext {
|
|
15
|
-
clientSubmissionId: string;
|
|
16
|
-
signedContext: string;
|
|
17
|
-
}
|
|
18
8
|
export type ContactSubmissionPhase = 'idle' | 'submitting' | 'accepted' | 'accepted-silently' | 'error';
|
|
19
9
|
export interface ContactSubmissionState {
|
|
20
10
|
phase: ContactSubmissionPhase;
|
|
21
11
|
pending: boolean;
|
|
22
12
|
canRetry: boolean;
|
|
23
|
-
contextReady: boolean;
|
|
24
13
|
result?: ContactActionResult;
|
|
25
14
|
}
|
|
26
|
-
export interface
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/** Uses only the shared privacy-safe analytics adapter after acceptance. */
|
|
15
|
+
export interface ContactHttpSubmissionControllerOptions {
|
|
16
|
+
pagePath: string;
|
|
17
|
+
pageLabel?: string;
|
|
18
|
+
contactEndpoint?: string;
|
|
19
|
+
fetcher?: typeof fetch;
|
|
20
|
+
now?: () => Date;
|
|
33
21
|
analytics?: Omit<Parameters<typeof trackDeliveredContactResult>[1], 'formData'>;
|
|
34
22
|
onStateChange?: (state: ContactSubmissionState) => void;
|
|
35
23
|
}
|
|
36
24
|
export interface ContactSubmissionController {
|
|
37
25
|
getState(): ContactSubmissionState;
|
|
38
|
-
prepare(): Promise<void>;
|
|
39
26
|
submit(formData: FormData): Promise<ContactActionResult>;
|
|
40
27
|
retry(): Promise<ContactActionResult>;
|
|
41
|
-
reset():
|
|
28
|
+
reset(): void;
|
|
42
29
|
}
|
|
43
|
-
export interface ContactHttpSubmissionControllerOptions extends Omit<ContactSubmissionControllerOptions, 'issueContext' | 'submitForm'> {
|
|
44
|
-
pagePath: string;
|
|
45
|
-
pageLabel?: string;
|
|
46
|
-
contactEndpoint?: string;
|
|
47
|
-
contextEndpoint?: string;
|
|
48
|
-
fetcher?: typeof fetch;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Owns one browser submission at a time. A network retry reuses the exact
|
|
52
|
-
* context/UUID; any terminal success rotates both before another submission.
|
|
53
|
-
*/
|
|
54
|
-
export declare function createContactSubmissionController(options: ContactSubmissionControllerOptions): ContactSubmissionController;
|
|
55
|
-
/** Canonical same-origin HTTP adapter for the shared context and contact routes. */
|
|
56
30
|
export declare function createContactHttpSubmissionController(options: ContactHttpSubmissionControllerOptions): ContactSubmissionController;
|
|
57
|
-
/** Adds the stable ID and server-signed context issued for this form instance. */
|
|
58
|
-
export declare function addContactSubmissionContext(formData: FormData, options: {
|
|
59
|
-
clientSubmissionId: string;
|
|
60
|
-
signedContext: string;
|
|
61
|
-
}): {
|
|
62
|
-
formData: FormData;
|
|
63
|
-
clientSubmissionId: string;
|
|
64
|
-
};
|
|
65
31
|
export declare function shouldTrackContactResult(result: ContactActionResult): result is Extract<ContactActionResult, {
|
|
66
32
|
ok: true;
|
|
67
33
|
accepted: true;
|
|
@@ -71,9 +37,7 @@ export declare function trackDeliveredContactResult(result: ContactActionResult,
|
|
|
71
37
|
definition: BrandlabContactDefinition;
|
|
72
38
|
formData: FormData;
|
|
73
39
|
enabled: boolean;
|
|
74
|
-
/** Explicit project opt-in for Enhanced Conversions. */
|
|
75
40
|
enhancedConversionsEnabled?: boolean;
|
|
76
|
-
/** Live Consent Mode decision for ad_user_data; absence must be deny. */
|
|
77
41
|
adUserDataConsent: boolean;
|
|
78
42
|
measurementId?: string | null;
|
|
79
43
|
googleAdsConversionId?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/contact/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAA;AAG5C,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAGL,yBAAyB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,yBAAyB,EAAE,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/contact/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAA;AAG5C,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAGL,yBAAyB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,yBAAyB,EAAE,CAAA;AAEpC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,CAgBhF;AA8CD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CA+CxF;AAED,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,YAAY,GACZ,UAAU,GACV,mBAAmB,GACnB,OAAO,CAAA;AAEX,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CACd,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,EACjD,UAAU,CACX,CAAA;IACD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACxD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI,sBAAsB,CAAA;IAClC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACxD,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrC,KAAK,IAAI,IAAI,CAAA;CACd;AAkFD,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,sCAAsC,GAC9C,2BAA2B,CAwH7B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,GAC1B,MAAM,IAAI,OAAO,CAAC,mBAAmB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC,CAEtE;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,yBAAyB,CAAA;IACrC,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,SAAS,CAAC,EAAE,oBAAoB,CAAA;CACjC,+EAmBF"}
|
package/dist/contact/client.js
CHANGED
|
@@ -3,13 +3,8 @@ import { resolveContactAttachmentType, } from '@brandlab-digital/site-core/conta
|
|
|
3
3
|
import { normalizeBrandlabRoutePath } from '@brandlab-digital/site-core/routes';
|
|
4
4
|
import { getInitialContactAttribution } from '../instrumentation-client.js';
|
|
5
5
|
import { trackDeliveredContactWithEnhancedConversions, } from '../analytics.js';
|
|
6
|
-
import {
|
|
6
|
+
import { CONTACT_CONFIRMATION_ID_PATTERN, CONTACT_FORM_FIELDS, createContactSubmissionId, } from './shared.js';
|
|
7
7
|
export { createContactSubmissionId };
|
|
8
|
-
/**
|
|
9
|
-
* Restores the reviewed filename and MIME contract after a browser image
|
|
10
|
-
* processor returns an anonymous Blob. The server still validates the file's
|
|
11
|
-
* extension, declared type and magic bytes before delivery.
|
|
12
|
-
*/
|
|
13
8
|
export function normalizeContactUploadFile(original, processed) {
|
|
14
9
|
if (!(original instanceof File) || !(processed instanceof Blob)) {
|
|
15
10
|
throw new TypeError('Contact image normalisation requires browser File and Blob values.');
|
|
@@ -27,11 +22,9 @@ export function normalizeContactUploadFile(original, processed) {
|
|
|
27
22
|
lastModified: original.lastModified,
|
|
28
23
|
});
|
|
29
24
|
}
|
|
30
|
-
const CONTACT_CONFIRMATION_ID_PATTERN = /^[0-9a-f]{64}$/;
|
|
31
25
|
const CONTACT_FIELD_ERROR_KEY_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/;
|
|
32
26
|
const CONTACT_ERROR_CODES = new Set([
|
|
33
27
|
'validation',
|
|
34
|
-
'rate_limited',
|
|
35
28
|
'attachment_rejected',
|
|
36
29
|
'delivery_unavailable',
|
|
37
30
|
]);
|
|
@@ -66,7 +59,6 @@ function parseFieldErrors(value) {
|
|
|
66
59
|
}
|
|
67
60
|
return result;
|
|
68
61
|
}
|
|
69
|
-
/** Parses the untrusted HTTP/Server Action result before UI or analytics use it. */
|
|
70
62
|
export function parseContactActionResult(value) {
|
|
71
63
|
const record = objectRecord(value);
|
|
72
64
|
if (!record || typeof record.ok !== 'boolean')
|
|
@@ -111,23 +103,6 @@ export function parseContactActionResult(value) {
|
|
|
111
103
|
...(fieldErrors ? { fieldErrors } : {}),
|
|
112
104
|
};
|
|
113
105
|
}
|
|
114
|
-
function parseClientContext(value) {
|
|
115
|
-
const record = objectRecord(value);
|
|
116
|
-
if (!record ||
|
|
117
|
-
!hasOnlyKeys(record, ['clientSubmissionId', 'signedContext']) ||
|
|
118
|
-
typeof record.clientSubmissionId !== 'string' ||
|
|
119
|
-
typeof record.signedContext !== 'string') {
|
|
120
|
-
return undefined;
|
|
121
|
-
}
|
|
122
|
-
const clientSubmissionId = record.clientSubmissionId.trim().toLowerCase();
|
|
123
|
-
const signedContext = record.signedContext.trim();
|
|
124
|
-
if (!CONTACT_CLIENT_SUBMISSION_ID_PATTERN.test(clientSubmissionId) ||
|
|
125
|
-
!signedContext ||
|
|
126
|
-
new TextEncoder().encode(signedContext).byteLength > 4_096) {
|
|
127
|
-
return undefined;
|
|
128
|
-
}
|
|
129
|
-
return { clientSubmissionId, signedContext };
|
|
130
|
-
}
|
|
131
106
|
function copyFormData(formData) {
|
|
132
107
|
if (!formData || typeof formData.entries !== 'function') {
|
|
133
108
|
throw new TypeError('A FormData submission is required.');
|
|
@@ -137,66 +112,95 @@ function copyFormData(formData) {
|
|
|
137
112
|
copy.append(name, value);
|
|
138
113
|
return copy;
|
|
139
114
|
}
|
|
115
|
+
function rootRelativeEndpoint(value, fallback) {
|
|
116
|
+
const endpoint = value ?? fallback;
|
|
117
|
+
if (!/^\/[a-z0-9/_-]+$/.test(endpoint) ||
|
|
118
|
+
endpoint.includes('//') ||
|
|
119
|
+
endpoint.endsWith('/')) {
|
|
120
|
+
throw new TypeError('Contact endpoints must be canonical root-relative paths.');
|
|
121
|
+
}
|
|
122
|
+
return endpoint;
|
|
123
|
+
}
|
|
124
|
+
async function boundedJson(response, maximumBytes) {
|
|
125
|
+
const contentType = response.headers
|
|
126
|
+
.get('content-type')
|
|
127
|
+
?.split(';', 1)[0]
|
|
128
|
+
?.trim()
|
|
129
|
+
.toLowerCase();
|
|
130
|
+
if (contentType !== 'application/json') {
|
|
131
|
+
throw new Error('The contact response did not use the required JSON media type.');
|
|
132
|
+
}
|
|
133
|
+
const text = await response.text();
|
|
134
|
+
if (new TextEncoder().encode(text).byteLength > maximumBytes) {
|
|
135
|
+
throw new Error('The contact response exceeded its safe bound.');
|
|
136
|
+
}
|
|
137
|
+
return JSON.parse(text);
|
|
138
|
+
}
|
|
140
139
|
const RETRYABLE_CLIENT_FAILURE = {
|
|
141
140
|
ok: false,
|
|
142
141
|
code: 'delivery_unavailable',
|
|
143
142
|
retryable: true,
|
|
144
143
|
};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (typeof options.issueContext !== 'function' || typeof options.submitForm !== 'function') {
|
|
151
|
-
throw new TypeError('Contact submission controller dependencies are invalid.');
|
|
144
|
+
function reviewedPageLabel(value) {
|
|
145
|
+
const label = value?.trim();
|
|
146
|
+
if (label !== undefined &&
|
|
147
|
+
(!label || label.length > 160 || /[\u0000-\u001f\u007f]/.test(label))) {
|
|
148
|
+
throw new TypeError('pageLabel must be bounded reviewed text.');
|
|
152
149
|
}
|
|
150
|
+
return label;
|
|
151
|
+
}
|
|
152
|
+
function addSubmissionMetadata(formData, options) {
|
|
153
|
+
const attribution = typeof window === 'undefined'
|
|
154
|
+
? { initialLandingPath: options.pagePath, visitSource: 'direct-or-unknown' }
|
|
155
|
+
: getInitialContactAttribution(window);
|
|
156
|
+
formData.set(CONTACT_FORM_FIELDS.clientSubmissionId, createContactSubmissionId());
|
|
157
|
+
formData.set(CONTACT_FORM_FIELDS.submittedAt, options.now.toISOString());
|
|
158
|
+
formData.set(CONTACT_FORM_FIELDS.pagePath, options.pagePath);
|
|
159
|
+
if (options.pageLabel) {
|
|
160
|
+
formData.set(CONTACT_FORM_FIELDS.pageLabel, options.pageLabel);
|
|
161
|
+
}
|
|
162
|
+
formData.set(CONTACT_FORM_FIELDS.initialLandingPath, attribution.initialLandingPath);
|
|
163
|
+
formData.set(CONTACT_FORM_FIELDS.visitSource, attribution.visitSource);
|
|
164
|
+
if (attribution.visitSourceDetail) {
|
|
165
|
+
formData.set(CONTACT_FORM_FIELDS.visitSourceDetail, attribution.visitSourceDetail);
|
|
166
|
+
}
|
|
167
|
+
return formData;
|
|
168
|
+
}
|
|
169
|
+
export function createContactHttpSubmissionController(options) {
|
|
170
|
+
const contactEndpoint = rootRelativeEndpoint(options.contactEndpoint, '/api/contact');
|
|
171
|
+
const pagePath = normalizeBrandlabRoutePath(options.pagePath);
|
|
172
|
+
const pageLabel = reviewedPageLabel(options.pageLabel);
|
|
173
|
+
const fetcher = options.fetcher ?? fetch;
|
|
174
|
+
if (typeof fetcher !== 'function')
|
|
175
|
+
throw new TypeError('A fetch implementation is required.');
|
|
153
176
|
if (options.onStateChange !== undefined && typeof options.onStateChange !== 'function') {
|
|
154
177
|
throw new TypeError('onStateChange must be a function.');
|
|
155
178
|
}
|
|
156
|
-
let context = options.initialContext
|
|
157
|
-
? parseClientContext(options.initialContext)
|
|
158
|
-
: undefined;
|
|
159
|
-
if (options.initialContext && !context) {
|
|
160
|
-
throw new TypeError('The initial contact submission context is invalid.');
|
|
161
|
-
}
|
|
162
|
-
const issuedIds = new Set(context ? [context.clientSubmissionId] : []);
|
|
163
179
|
const trackedConfirmations = new Set();
|
|
164
180
|
let attempt;
|
|
165
|
-
let retryFormData;
|
|
166
181
|
let inFlight;
|
|
167
182
|
let state = {
|
|
168
183
|
phase: 'idle',
|
|
169
184
|
pending: false,
|
|
170
185
|
canRetry: false,
|
|
171
|
-
contextReady: Boolean(context),
|
|
172
186
|
};
|
|
173
187
|
const publish = (next) => {
|
|
174
188
|
state = Object.freeze({ ...next });
|
|
175
189
|
options.onStateChange?.(state);
|
|
176
190
|
};
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
if (!issued || issuedIds.has(issued.clientSubmissionId)) {
|
|
180
|
-
throw new Error('The contact context issuer did not return a fresh valid context.');
|
|
181
|
-
}
|
|
182
|
-
issuedIds.add(issued.clientSubmissionId);
|
|
183
|
-
context = issued;
|
|
184
|
-
};
|
|
185
|
-
const prepare = async () => {
|
|
186
|
-
if (!context)
|
|
187
|
-
await issueFreshContext();
|
|
188
|
-
publish({
|
|
189
|
-
...state,
|
|
190
|
-
contextReady: true,
|
|
191
|
-
});
|
|
192
|
-
};
|
|
193
|
-
const execute = async (currentAttempt) => {
|
|
194
|
-
publish({ phase: 'submitting', pending: true, canRetry: false, contextReady: true });
|
|
191
|
+
const post = async (formData) => {
|
|
192
|
+
publish({ phase: 'submitting', pending: true, canRetry: false });
|
|
195
193
|
let result;
|
|
196
194
|
try {
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
195
|
+
const response = await fetcher(contactEndpoint, {
|
|
196
|
+
method: 'POST',
|
|
197
|
+
credentials: 'same-origin',
|
|
198
|
+
cache: 'no-store',
|
|
199
|
+
body: copyFormData(formData),
|
|
200
|
+
});
|
|
201
|
+
result =
|
|
202
|
+
parseContactActionResult(await boundedJson(response, 64 * 1_024)) ??
|
|
203
|
+
RETRYABLE_CLIENT_FAILURE;
|
|
200
204
|
}
|
|
201
205
|
catch {
|
|
202
206
|
result = RETRYABLE_CLIENT_FAILURE;
|
|
@@ -206,241 +210,82 @@ export function createContactSubmissionController(options) {
|
|
|
206
210
|
phase: 'error',
|
|
207
211
|
pending: false,
|
|
208
212
|
canRetry: result.retryable,
|
|
209
|
-
contextReady: true,
|
|
210
213
|
result,
|
|
211
214
|
});
|
|
212
215
|
return result;
|
|
213
216
|
}
|
|
214
|
-
if (result.accepted &&
|
|
215
|
-
!trackedConfirmations.has(result.confirmationId)) {
|
|
217
|
+
if (result.accepted && !trackedConfirmations.has(result.confirmationId)) {
|
|
216
218
|
trackedConfirmations.add(result.confirmationId);
|
|
217
219
|
try {
|
|
218
220
|
if (options.analytics) {
|
|
219
221
|
trackDeliveredContactResult(result, {
|
|
220
222
|
...options.analytics,
|
|
221
|
-
formData: copyFormData(
|
|
223
|
+
formData: copyFormData(formData),
|
|
222
224
|
});
|
|
223
225
|
}
|
|
224
226
|
}
|
|
225
227
|
catch {
|
|
226
|
-
//
|
|
228
|
+
// Delivery has already succeeded; analytics cannot change that result.
|
|
227
229
|
}
|
|
228
230
|
}
|
|
229
231
|
attempt = undefined;
|
|
230
|
-
retryFormData = undefined;
|
|
231
|
-
context = undefined;
|
|
232
|
-
try {
|
|
233
|
-
await issueFreshContext();
|
|
234
|
-
}
|
|
235
|
-
catch {
|
|
236
|
-
context = undefined;
|
|
237
|
-
}
|
|
238
232
|
publish({
|
|
239
233
|
phase: result.accepted ? 'accepted' : 'accepted-silently',
|
|
240
234
|
pending: false,
|
|
241
235
|
canRetry: false,
|
|
242
|
-
contextReady: Boolean(context),
|
|
243
236
|
result,
|
|
244
237
|
});
|
|
245
238
|
return result;
|
|
246
239
|
};
|
|
247
|
-
const run = (
|
|
240
|
+
const run = (formData) => {
|
|
248
241
|
if (inFlight)
|
|
249
242
|
return inFlight;
|
|
250
243
|
let wrapped;
|
|
251
|
-
wrapped =
|
|
244
|
+
wrapped = post(formData).finally(() => {
|
|
252
245
|
if (inFlight === wrapped)
|
|
253
246
|
inFlight = undefined;
|
|
254
247
|
});
|
|
255
248
|
inFlight = wrapped;
|
|
256
249
|
return wrapped;
|
|
257
250
|
};
|
|
258
|
-
const submit = (formData) => {
|
|
259
|
-
if (inFlight)
|
|
260
|
-
return inFlight;
|
|
261
|
-
const source = copyFormData(formData);
|
|
262
|
-
retryFormData = source;
|
|
263
|
-
const start = async () => {
|
|
264
|
-
if (!context) {
|
|
265
|
-
try {
|
|
266
|
-
await issueFreshContext();
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
publish({
|
|
270
|
-
phase: 'error',
|
|
271
|
-
pending: false,
|
|
272
|
-
canRetry: true,
|
|
273
|
-
contextReady: false,
|
|
274
|
-
result: RETRYABLE_CLIENT_FAILURE,
|
|
275
|
-
});
|
|
276
|
-
return RETRYABLE_CLIENT_FAILURE;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
attempt = { formData: copyFormData(source), context: context };
|
|
280
|
-
return execute(attempt);
|
|
281
|
-
};
|
|
282
|
-
const promise = start();
|
|
283
|
-
let wrapped;
|
|
284
|
-
wrapped = promise.finally(() => {
|
|
285
|
-
if (inFlight === wrapped)
|
|
286
|
-
inFlight = undefined;
|
|
287
|
-
});
|
|
288
|
-
inFlight = wrapped;
|
|
289
|
-
return wrapped;
|
|
290
|
-
};
|
|
291
|
-
const retry = () => {
|
|
292
|
-
if (inFlight)
|
|
293
|
-
return inFlight;
|
|
294
|
-
if (!attempt && retryFormData && state.phase === 'error' && state.canRetry) {
|
|
295
|
-
return submit(retryFormData);
|
|
296
|
-
}
|
|
297
|
-
if (!attempt || state.phase !== 'error' || !state.canRetry) {
|
|
298
|
-
return Promise.reject(new Error('No retryable contact submission is available.'));
|
|
299
|
-
}
|
|
300
|
-
return run(attempt);
|
|
301
|
-
};
|
|
302
|
-
const reset = async () => {
|
|
303
|
-
if (inFlight)
|
|
304
|
-
throw new Error('A pending contact submission cannot be reset.');
|
|
305
|
-
attempt = undefined;
|
|
306
|
-
retryFormData = undefined;
|
|
307
|
-
context = undefined;
|
|
308
|
-
await issueFreshContext();
|
|
309
|
-
publish({ phase: 'idle', pending: false, canRetry: false, contextReady: true });
|
|
310
|
-
};
|
|
311
251
|
return {
|
|
312
252
|
getState: () => ({ ...state }),
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
return endpoint;
|
|
327
|
-
}
|
|
328
|
-
async function boundedJson(response, maximumBytes) {
|
|
329
|
-
const contentType = response.headers
|
|
330
|
-
.get('content-type')
|
|
331
|
-
?.split(';', 1)[0]
|
|
332
|
-
?.trim()
|
|
333
|
-
.toLowerCase();
|
|
334
|
-
if (contentType !== 'application/json') {
|
|
335
|
-
throw new Error('The contact response did not use the required JSON media type.');
|
|
336
|
-
}
|
|
337
|
-
const declaredLength = response.headers.get('content-length');
|
|
338
|
-
if (declaredLength !== null &&
|
|
339
|
-
(!/^\d{1,10}$/.test(declaredLength) || Number(declaredLength) > maximumBytes)) {
|
|
340
|
-
throw new Error('The contact response exceeded its safe bound.');
|
|
341
|
-
}
|
|
342
|
-
if (!response.body)
|
|
343
|
-
throw new Error('The contact response body is unavailable.');
|
|
344
|
-
const reader = response.body.getReader();
|
|
345
|
-
const chunks = [];
|
|
346
|
-
let totalBytes = 0;
|
|
347
|
-
try {
|
|
348
|
-
while (true) {
|
|
349
|
-
const { done, value } = await reader.read();
|
|
350
|
-
if (done)
|
|
351
|
-
break;
|
|
352
|
-
if (!(value instanceof Uint8Array)) {
|
|
353
|
-
throw new Error('The contact response body is invalid.');
|
|
354
|
-
}
|
|
355
|
-
totalBytes += value.byteLength;
|
|
356
|
-
if (totalBytes > maximumBytes) {
|
|
357
|
-
throw new Error('The contact response exceeded its safe bound.');
|
|
253
|
+
submit(formData) {
|
|
254
|
+
if (inFlight)
|
|
255
|
+
return inFlight;
|
|
256
|
+
const now = options.now?.() ?? new Date();
|
|
257
|
+
if (!Number.isFinite(now.getTime())) {
|
|
258
|
+
attempt = undefined;
|
|
259
|
+
publish({
|
|
260
|
+
phase: 'error',
|
|
261
|
+
pending: false,
|
|
262
|
+
canRetry: false,
|
|
263
|
+
result: RETRYABLE_CLIENT_FAILURE,
|
|
264
|
+
});
|
|
265
|
+
return Promise.resolve(RETRYABLE_CLIENT_FAILURE);
|
|
358
266
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
await reader.cancel().catch(() => undefined);
|
|
364
|
-
throw error;
|
|
365
|
-
}
|
|
366
|
-
finally {
|
|
367
|
-
reader.releaseLock();
|
|
368
|
-
}
|
|
369
|
-
const bytes = new Uint8Array(totalBytes);
|
|
370
|
-
let offset = 0;
|
|
371
|
-
for (const chunk of chunks) {
|
|
372
|
-
bytes.set(chunk, offset);
|
|
373
|
-
offset += chunk.byteLength;
|
|
374
|
-
}
|
|
375
|
-
const text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
376
|
-
return JSON.parse(text);
|
|
377
|
-
}
|
|
378
|
-
/** Canonical same-origin HTTP adapter for the shared context and contact routes. */
|
|
379
|
-
export function createContactHttpSubmissionController(options) {
|
|
380
|
-
const contactEndpoint = rootRelativeEndpoint(options.contactEndpoint, '/api/contact');
|
|
381
|
-
const contextEndpoint = rootRelativeEndpoint(options.contextEndpoint, '/api/contact/context');
|
|
382
|
-
const pagePath = normalizeBrandlabRoutePath(options.pagePath);
|
|
383
|
-
const pageLabel = options.pageLabel?.trim();
|
|
384
|
-
if (pageLabel !== undefined &&
|
|
385
|
-
(!pageLabel || pageLabel.length > 160 || /[\u0000-\u001f\u007f]/.test(pageLabel))) {
|
|
386
|
-
throw new TypeError('pageLabel must be bounded reviewed text.');
|
|
387
|
-
}
|
|
388
|
-
const fetcher = options.fetcher ?? fetch;
|
|
389
|
-
if (typeof fetcher !== 'function')
|
|
390
|
-
throw new TypeError('A fetch implementation is required.');
|
|
391
|
-
return createContactSubmissionController({
|
|
392
|
-
...(options.initialContext ? { initialContext: options.initialContext } : {}),
|
|
393
|
-
...(options.analytics ? { analytics: options.analytics } : {}),
|
|
394
|
-
...(options.onStateChange ? { onStateChange: options.onStateChange } : {}),
|
|
395
|
-
async issueContext() {
|
|
396
|
-
const attribution = typeof window === 'undefined'
|
|
397
|
-
? { initialLandingPath: pagePath, visitSource: 'direct-or-unknown' }
|
|
398
|
-
: getInitialContactAttribution(window);
|
|
399
|
-
const response = await fetcher(contextEndpoint, {
|
|
400
|
-
method: 'POST',
|
|
401
|
-
credentials: 'same-origin',
|
|
402
|
-
cache: 'no-store',
|
|
403
|
-
headers: { 'content-type': 'application/json' },
|
|
404
|
-
body: JSON.stringify({
|
|
405
|
-
pagePath,
|
|
406
|
-
...(pageLabel ? { pageLabel } : {}),
|
|
407
|
-
...attribution,
|
|
408
|
-
}),
|
|
267
|
+
attempt = addSubmissionMetadata(copyFormData(formData), {
|
|
268
|
+
pagePath,
|
|
269
|
+
...(pageLabel ? { pageLabel } : {}),
|
|
270
|
+
now,
|
|
409
271
|
});
|
|
410
|
-
|
|
411
|
-
throw new Error('The contact context endpoint is unavailable.');
|
|
412
|
-
return boundedJson(response, 8_192);
|
|
272
|
+
return run(attempt);
|
|
413
273
|
},
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
274
|
+
retry() {
|
|
275
|
+
if (inFlight)
|
|
276
|
+
return inFlight;
|
|
277
|
+
if (!attempt || state.phase !== 'error' || !state.canRetry) {
|
|
278
|
+
return Promise.reject(new Error('No retryable contact submission is available.'));
|
|
279
|
+
}
|
|
280
|
+
return run(attempt);
|
|
281
|
+
},
|
|
282
|
+
reset() {
|
|
283
|
+
if (inFlight)
|
|
284
|
+
throw new Error('A pending contact submission cannot be reset.');
|
|
285
|
+
attempt = undefined;
|
|
286
|
+
publish({ phase: 'idle', pending: false, canRetry: false });
|
|
422
287
|
},
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
/** Adds the stable ID and server-signed context issued for this form instance. */
|
|
426
|
-
export function addContactSubmissionContext(formData, options) {
|
|
427
|
-
const clientSubmissionId = options.clientSubmissionId.trim().toLowerCase();
|
|
428
|
-
if (!CONTACT_CLIENT_SUBMISSION_ID_PATTERN.test(clientSubmissionId)) {
|
|
429
|
-
throw new Error('clientSubmissionId must be a valid UUID v4.');
|
|
430
|
-
}
|
|
431
|
-
const signedContext = options.signedContext.trim();
|
|
432
|
-
if (!signedContext || new TextEncoder().encode(signedContext).byteLength > 4_096) {
|
|
433
|
-
throw new Error('signedContext must be a bounded non-empty token.');
|
|
434
|
-
}
|
|
435
|
-
const entries = {
|
|
436
|
-
[CONTACT_CONTEXT_FIELD_NAMES.clientSubmissionId]: clientSubmissionId,
|
|
437
|
-
[CONTACT_CONTEXT_FIELD_NAMES.signedContext]: signedContext,
|
|
438
288
|
};
|
|
439
|
-
for (const [name, value] of Object.entries(entries)) {
|
|
440
|
-
if (value)
|
|
441
|
-
formData.set(name, value);
|
|
442
|
-
}
|
|
443
|
-
return { formData, clientSubmissionId };
|
|
444
289
|
}
|
|
445
290
|
export function shouldTrackContactResult(result) {
|
|
446
291
|
return result.ok && result.accepted && result.trackConversion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/contact/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/contact/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type BrandlabContactContract, type ContactAttachmentPolicy } from '@brandlab-digital/site-core/contact';
|
|
2
2
|
import { type BrandlabContactDefinition } from './shared.js';
|
|
3
|
-
export type ContactRuntimeDefinitionOptions = Pick<BrandlabContactDefinition, 'brandName' | 'siteUrl' | '
|
|
3
|
+
export type ContactRuntimeDefinitionOptions = Pick<BrandlabContactDefinition, 'brandName' | 'siteUrl' | 'deploymentMode'> & {
|
|
4
4
|
labels: Readonly<Record<string, string>>;
|
|
5
5
|
attachment?: Partial<ContactAttachmentPolicy> & {
|
|
6
6
|
fieldPrefix?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE7B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,yBAAyB,EACzB,WAAW,GAAG,SAAS,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE7B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,yBAAyB,EACzB,WAAW,GAAG,SAAS,GAAG,gBAAgB,CAC3C,GAAG;IACF,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,KAAK,CAAC,EAAE,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAA;CACxD,CAAA;AAuBD,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,+BAA+B,qCAgDzC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
import type { ContactAttachmentProcessor } from './shared.js';
|
|
3
3
|
/**
|
|
4
|
-
* The production image boundary for Contact Contract
|
|
4
|
+
* The production image boundary for Contact Contract v4. Every accepted image
|
|
5
5
|
* is fully decoded, bounded, auto-oriented and re-encoded without source
|
|
6
6
|
* metadata. Project code cannot replace this processor in production.
|
|
7
7
|
*/
|