@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.
Files changed (65) hide show
  1. package/dist/contact/client.d.ts +7 -43
  2. package/dist/contact/client.d.ts.map +1 -1
  3. package/dist/contact/client.js +103 -258
  4. package/dist/contact/client.js.map +1 -1
  5. package/dist/contact/contract.d.ts +1 -1
  6. package/dist/contact/contract.d.ts.map +1 -1
  7. package/dist/contact/image-sanitizer.d.ts +1 -1
  8. package/dist/contact/image-sanitizer.js +1 -1
  9. package/dist/contact/index.d.ts +1 -1
  10. package/dist/contact/index.d.ts.map +1 -1
  11. package/dist/contact/index.js +1 -1
  12. package/dist/contact/index.js.map +1 -1
  13. package/dist/contact/resend.d.ts +1 -1
  14. package/dist/contact/resend.d.ts.map +1 -1
  15. package/dist/contact/resend.js +6 -6
  16. package/dist/contact/resend.js.map +1 -1
  17. package/dist/contact/server-entry.d.ts +1 -11
  18. package/dist/contact/server-entry.d.ts.map +1 -1
  19. package/dist/contact/server-entry.js +1 -11
  20. package/dist/contact/server-entry.js.map +1 -1
  21. package/dist/contact/server.d.ts +28 -18
  22. package/dist/contact/server.d.ts.map +1 -1
  23. package/dist/contact/server.js +458 -722
  24. package/dist/contact/server.js.map +1 -1
  25. package/dist/contact/shared.d.ts +13 -124
  26. package/dist/contact/shared.d.ts.map +1 -1
  27. package/dist/contact/shared.js +9 -3
  28. package/dist/contact/shared.js.map +1 -1
  29. package/dist/contact/testing.d.ts +0 -60
  30. package/dist/contact/testing.d.ts.map +1 -1
  31. package/dist/contact/testing.js +0 -86
  32. package/dist/contact/testing.js.map +1 -1
  33. package/dist/google-reviews-server.d.ts +5 -19
  34. package/dist/google-reviews-server.d.ts.map +1 -1
  35. package/dist/google-reviews-server.js +26 -76
  36. package/dist/google-reviews-server.js.map +1 -1
  37. package/package.json +2 -2
  38. package/dist/contact/context.d.ts +0 -30
  39. package/dist/contact/context.d.ts.map +0 -1
  40. package/dist/contact/context.js +0 -315
  41. package/dist/contact/context.js.map +0 -1
  42. package/dist/contact/durable.d.ts +0 -31
  43. package/dist/contact/durable.d.ts.map +0 -1
  44. package/dist/contact/durable.js +0 -331
  45. package/dist/contact/durable.js.map +0 -1
  46. package/dist/contact/production.d.ts +0 -50
  47. package/dist/contact/production.d.ts.map +0 -1
  48. package/dist/contact/production.js +0 -328
  49. package/dist/contact/production.js.map +0 -1
  50. package/dist/contact/request.d.ts +0 -19
  51. package/dist/contact/request.d.ts.map +0 -1
  52. package/dist/contact/request.js +0 -116
  53. package/dist/contact/request.js.map +0 -1
  54. package/dist/contact/route.d.ts +0 -15
  55. package/dist/contact/route.d.ts.map +0 -1
  56. package/dist/contact/route.js +0 -128
  57. package/dist/contact/route.js.map +0 -1
  58. package/dist/google-reviews-durable.d.ts +0 -22
  59. package/dist/google-reviews-durable.d.ts.map +0 -1
  60. package/dist/google-reviews-durable.js +0 -81
  61. package/dist/google-reviews-durable.js.map +0 -1
  62. package/dist/redis-rest.d.ts +0 -12
  63. package/dist/redis-rest.d.ts.map +0 -1
  64. package/dist/redis-rest.js +0 -83
  65. package/dist/redis-rest.js.map +0 -1
@@ -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 ContactSubmissionControllerOptions {
27
- initialContext?: ContactClientSubmissionContext;
28
- /** Issues a fresh server-signed context and UUID pair for one submission. */
29
- issueContext: () => Promise<unknown>;
30
- /** Posts the prepared form to the canonical contact route or Server Action. */
31
- submitForm: (formData: FormData) => Promise<unknown>;
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(): Promise<void>;
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":"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"}
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"}
@@ -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 { CONTACT_CLIENT_SUBMISSION_ID_PATTERN, CONTACT_CONTEXT_FIELD_NAMES, createContactSubmissionId, } from './shared.js';
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
- * Owns one browser submission at a time. A network retry reuses the exact
147
- * context/UUID; any terminal success rotates both before another submission.
148
- */
149
- export function createContactSubmissionController(options) {
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 issueFreshContext = async () => {
178
- const issued = parseClientContext(await options.issueContext());
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 outgoing = copyFormData(currentAttempt.formData);
198
- addContactSubmissionContext(outgoing, currentAttempt.context);
199
- result = parseContactActionResult(await options.submitForm(outgoing)) ?? RETRYABLE_CLIENT_FAILURE;
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(currentAttempt.formData),
223
+ formData: copyFormData(formData),
222
224
  });
223
225
  }
224
226
  }
225
227
  catch {
226
- // Analytics failure must never change the accepted delivery result.
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 = (currentAttempt) => {
240
+ const run = (formData) => {
248
241
  if (inFlight)
249
242
  return inFlight;
250
243
  let wrapped;
251
- wrapped = execute(currentAttempt).finally(() => {
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
- prepare,
314
- submit,
315
- retry,
316
- reset,
317
- };
318
- }
319
- function rootRelativeEndpoint(value, fallback) {
320
- const endpoint = value ?? fallback;
321
- if (!/^\/[a-z0-9/_-]+$/.test(endpoint) ||
322
- endpoint.includes('//') ||
323
- endpoint.endsWith('/')) {
324
- throw new TypeError('Contact endpoints must be canonical root-relative paths.');
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
- chunks.push(value);
360
- }
361
- }
362
- catch (error) {
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
- if (!response.ok)
411
- throw new Error('The contact context endpoint is unavailable.');
412
- return boundedJson(response, 8_192);
272
+ return run(attempt);
413
273
  },
414
- async submitForm(formData) {
415
- const response = await fetcher(contactEndpoint, {
416
- method: 'POST',
417
- credentials: 'same-origin',
418
- cache: 'no-store',
419
- body: formData,
420
- });
421
- return boundedJson(response, 64 * 1_024);
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' | 'allowedOrigins' | 'deploymentMode'> & {
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,GAAG,gBAAgB,CAC9D,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
+ {"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 v3. Every accepted image
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
  */