@brandlab-digital/site-next 1.0.0-rc.8 → 1.0.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.
Files changed (99) hide show
  1. package/dist/analytics.d.ts +33 -1
  2. package/dist/analytics.d.ts.map +1 -1
  3. package/dist/analytics.js +65 -4
  4. package/dist/analytics.js.map +1 -1
  5. package/dist/blog.d.ts +1 -86
  6. package/dist/blog.d.ts.map +1 -1
  7. package/dist/blog.js +29 -54
  8. package/dist/blog.js.map +1 -1
  9. package/dist/breadcrumbs.d.ts +2 -10
  10. package/dist/breadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs.js +3 -6
  12. package/dist/breadcrumbs.js.map +1 -1
  13. package/dist/contact/client.d.ts +9 -39
  14. package/dist/contact/client.d.ts.map +1 -1
  15. package/dist/contact/client.js +121 -253
  16. package/dist/contact/client.js.map +1 -1
  17. package/dist/contact/contract.d.ts +1 -1
  18. package/dist/contact/contract.d.ts.map +1 -1
  19. package/dist/contact/email.d.ts.map +1 -1
  20. package/dist/contact/email.js +1 -27
  21. package/dist/contact/email.js.map +1 -1
  22. package/dist/contact/image-sanitizer.d.ts +1 -1
  23. package/dist/contact/image-sanitizer.js +1 -1
  24. package/dist/contact/index.d.ts +1 -0
  25. package/dist/contact/index.d.ts.map +1 -1
  26. package/dist/contact/index.js +1 -0
  27. package/dist/contact/index.js.map +1 -1
  28. package/dist/contact/resend.d.ts +10 -1
  29. package/dist/contact/resend.d.ts.map +1 -1
  30. package/dist/contact/resend.js +36 -6
  31. package/dist/contact/resend.js.map +1 -1
  32. package/dist/contact/server-entry.d.ts +3 -0
  33. package/dist/contact/server-entry.d.ts.map +1 -0
  34. package/dist/contact/server-entry.js +3 -0
  35. package/dist/contact/server-entry.js.map +1 -0
  36. package/dist/contact/server.d.ts +30 -18
  37. package/dist/contact/server.d.ts.map +1 -1
  38. package/dist/contact/server.js +468 -722
  39. package/dist/contact/server.js.map +1 -1
  40. package/dist/contact/shared.d.ts +13 -124
  41. package/dist/contact/shared.d.ts.map +1 -1
  42. package/dist/contact/shared.js +9 -3
  43. package/dist/contact/shared.js.map +1 -1
  44. package/dist/contact/testing.d.ts +1 -60
  45. package/dist/contact/testing.d.ts.map +1 -1
  46. package/dist/contact/testing.js +1 -86
  47. package/dist/contact/testing.js.map +1 -1
  48. package/dist/google-reviews-client.d.ts +22 -0
  49. package/dist/google-reviews-client.d.ts.map +1 -0
  50. package/dist/google-reviews-client.js +87 -0
  51. package/dist/google-reviews-client.js.map +1 -0
  52. package/dist/google-reviews-server.d.ts +43 -0
  53. package/dist/google-reviews-server.d.ts.map +1 -0
  54. package/dist/google-reviews-server.js +90 -0
  55. package/dist/google-reviews-server.js.map +1 -0
  56. package/dist/google-reviews-ui.d.ts +610 -0
  57. package/dist/google-reviews-ui.d.ts.map +1 -0
  58. package/dist/{google-reviews.js → google-reviews-ui.js} +50 -137
  59. package/dist/google-reviews-ui.js.map +1 -0
  60. package/dist/google-tag-plan.d.ts +19 -0
  61. package/dist/google-tag-plan.d.ts.map +1 -0
  62. package/dist/google-tag-plan.js +87 -0
  63. package/dist/google-tag-plan.js.map +1 -0
  64. package/dist/google-tag.d.ts +17 -0
  65. package/dist/google-tag.d.ts.map +1 -0
  66. package/dist/google-tag.js +18 -0
  67. package/dist/google-tag.js.map +1 -0
  68. package/dist/headers.d.ts +1 -1
  69. package/dist/headers.d.ts.map +1 -1
  70. package/dist/headers.js +6 -2
  71. package/dist/headers.js.map +1 -1
  72. package/dist/reviews.d.ts +1 -5
  73. package/dist/reviews.d.ts.map +1 -1
  74. package/dist/reviews.js +2 -6
  75. package/dist/reviews.js.map +1 -1
  76. package/package.json +25 -41
  77. package/dist/contact/context.d.ts +0 -30
  78. package/dist/contact/context.d.ts.map +0 -1
  79. package/dist/contact/context.js +0 -315
  80. package/dist/contact/context.js.map +0 -1
  81. package/dist/contact/durable.d.ts +0 -31
  82. package/dist/contact/durable.d.ts.map +0 -1
  83. package/dist/contact/durable.js +0 -331
  84. package/dist/contact/durable.js.map +0 -1
  85. package/dist/contact/production.d.ts +0 -50
  86. package/dist/contact/production.d.ts.map +0 -1
  87. package/dist/contact/production.js +0 -383
  88. package/dist/contact/production.js.map +0 -1
  89. package/dist/contact/request.d.ts +0 -19
  90. package/dist/contact/request.d.ts.map +0 -1
  91. package/dist/contact/request.js +0 -116
  92. package/dist/contact/request.js.map +0 -1
  93. package/dist/contact/route.d.ts +0 -15
  94. package/dist/contact/route.d.ts.map +0 -1
  95. package/dist/contact/route.js +0 -128
  96. package/dist/contact/route.js.map +0 -1
  97. package/dist/google-reviews.d.ts +0 -326
  98. package/dist/google-reviews.d.ts.map +0 -1
  99. package/dist/google-reviews.js.map +0 -1
@@ -1,61 +1,33 @@
1
1
  import type { GtagTransport } from '@brandlab-digital/site-core/analytics';
2
- import type { ContactActionResult } from '@brandlab-digital/site-core/contact';
2
+ 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
- /** Parses the untrusted HTTP/Server Action result before UI or analytics use it. */
6
+ export declare function normalizeContactUploadFile(original: File, processed: Blob): File;
7
7
  export declare function parseContactActionResult(value: unknown): ContactActionResult | undefined;
8
- export interface ContactClientSubmissionContext {
9
- clientSubmissionId: string;
10
- signedContext: string;
11
- }
12
8
  export type ContactSubmissionPhase = 'idle' | 'submitting' | 'accepted' | 'accepted-silently' | 'error';
13
9
  export interface ContactSubmissionState {
14
10
  phase: ContactSubmissionPhase;
15
11
  pending: boolean;
16
12
  canRetry: boolean;
17
- contextReady: boolean;
18
13
  result?: ContactActionResult;
19
14
  }
20
- export interface ContactSubmissionControllerOptions {
21
- initialContext?: ContactClientSubmissionContext;
22
- /** Issues a fresh server-signed context and UUID pair for one submission. */
23
- issueContext: () => Promise<unknown>;
24
- /** Posts the prepared form to the canonical contact route or Server Action. */
25
- submitForm: (formData: FormData) => Promise<unknown>;
26
- /** 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;
27
21
  analytics?: Omit<Parameters<typeof trackDeliveredContactResult>[1], 'formData'>;
28
22
  onStateChange?: (state: ContactSubmissionState) => void;
29
23
  }
30
24
  export interface ContactSubmissionController {
31
25
  getState(): ContactSubmissionState;
32
- prepare(): Promise<void>;
33
26
  submit(formData: FormData): Promise<ContactActionResult>;
34
27
  retry(): Promise<ContactActionResult>;
35
- reset(): Promise<void>;
28
+ reset(): void;
36
29
  }
37
- export interface ContactHttpSubmissionControllerOptions extends Omit<ContactSubmissionControllerOptions, 'issueContext' | 'submitForm'> {
38
- pagePath: string;
39
- pageLabel?: string;
40
- contactEndpoint?: string;
41
- contextEndpoint?: string;
42
- fetcher?: typeof fetch;
43
- }
44
- /**
45
- * Owns one browser submission at a time. A network retry reuses the exact
46
- * context/UUID; any terminal success rotates both before another submission.
47
- */
48
- export declare function createContactSubmissionController(options: ContactSubmissionControllerOptions): ContactSubmissionController;
49
- /** Canonical same-origin HTTP adapter for the shared context and contact routes. */
50
30
  export declare function createContactHttpSubmissionController(options: ContactHttpSubmissionControllerOptions): ContactSubmissionController;
51
- /** Adds the stable ID and server-signed context issued for this form instance. */
52
- export declare function addContactSubmissionContext(formData: FormData, options: {
53
- clientSubmissionId: string;
54
- signedContext: string;
55
- }): {
56
- formData: FormData;
57
- clientSubmissionId: string;
58
- };
59
31
  export declare function shouldTrackContactResult(result: ContactActionResult): result is Extract<ContactActionResult, {
60
32
  ok: true;
61
33
  accepted: true;
@@ -65,9 +37,7 @@ export declare function trackDeliveredContactResult(result: ContactActionResult,
65
37
  definition: BrandlabContactDefinition;
66
38
  formData: FormData;
67
39
  enabled: boolean;
68
- /** Explicit project opt-in for Enhanced Conversions. */
69
40
  enhancedConversionsEnabled?: boolean;
70
- /** Live Consent Mode decision for ad_user_data; absence must be deny. */
71
41
  adUserDataConsent: boolean;
72
42
  measurementId?: string | null;
73
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"}
@@ -1,14 +1,30 @@
1
1
  'use client';
2
+ import { resolveContactAttachmentType, } from '@brandlab-digital/site-core/contact';
2
3
  import { normalizeBrandlabRoutePath } from '@brandlab-digital/site-core/routes';
3
4
  import { getInitialContactAttribution } from '../instrumentation-client.js';
4
5
  import { trackDeliveredContactWithEnhancedConversions, } from '../analytics.js';
5
- 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';
6
7
  export { createContactSubmissionId };
7
- const CONTACT_CONFIRMATION_ID_PATTERN = /^[0-9a-f]{64}$/;
8
+ export function normalizeContactUploadFile(original, processed) {
9
+ if (!(original instanceof File) || !(processed instanceof Blob)) {
10
+ throw new TypeError('Contact image normalisation requires browser File and Blob values.');
11
+ }
12
+ const contentType = processed.type || original.type;
13
+ const filenameType = resolveContactAttachmentType(original.name);
14
+ const processedType = resolveContactAttachmentType('', contentType);
15
+ const normalizedFilenameType = filenameType === 'image/jpg' ? 'image/jpeg' : filenameType;
16
+ const normalizedProcessedType = processedType === 'image/jpg' ? 'image/jpeg' : processedType;
17
+ if (!normalizedFilenameType || normalizedFilenameType !== normalizedProcessedType) {
18
+ throw new TypeError('The processed contact image does not match its reviewed filename.');
19
+ }
20
+ return new File([processed], original.name, {
21
+ type: normalizedFilenameType,
22
+ lastModified: original.lastModified,
23
+ });
24
+ }
8
25
  const CONTACT_FIELD_ERROR_KEY_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/;
9
26
  const CONTACT_ERROR_CODES = new Set([
10
27
  'validation',
11
- 'rate_limited',
12
28
  'attachment_rejected',
13
29
  'delivery_unavailable',
14
30
  ]);
@@ -43,7 +59,6 @@ function parseFieldErrors(value) {
43
59
  }
44
60
  return result;
45
61
  }
46
- /** Parses the untrusted HTTP/Server Action result before UI or analytics use it. */
47
62
  export function parseContactActionResult(value) {
48
63
  const record = objectRecord(value);
49
64
  if (!record || typeof record.ok !== 'boolean')
@@ -88,23 +103,6 @@ export function parseContactActionResult(value) {
88
103
  ...(fieldErrors ? { fieldErrors } : {}),
89
104
  };
90
105
  }
91
- function parseClientContext(value) {
92
- const record = objectRecord(value);
93
- if (!record ||
94
- !hasOnlyKeys(record, ['clientSubmissionId', 'signedContext']) ||
95
- typeof record.clientSubmissionId !== 'string' ||
96
- typeof record.signedContext !== 'string') {
97
- return undefined;
98
- }
99
- const clientSubmissionId = record.clientSubmissionId.trim().toLowerCase();
100
- const signedContext = record.signedContext.trim();
101
- if (!CONTACT_CLIENT_SUBMISSION_ID_PATTERN.test(clientSubmissionId) ||
102
- !signedContext ||
103
- new TextEncoder().encode(signedContext).byteLength > 4_096) {
104
- return undefined;
105
- }
106
- return { clientSubmissionId, signedContext };
107
- }
108
106
  function copyFormData(formData) {
109
107
  if (!formData || typeof formData.entries !== 'function') {
110
108
  throw new TypeError('A FormData submission is required.');
@@ -114,66 +112,95 @@ function copyFormData(formData) {
114
112
  copy.append(name, value);
115
113
  return copy;
116
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
+ }
117
139
  const RETRYABLE_CLIENT_FAILURE = {
118
140
  ok: false,
119
141
  code: 'delivery_unavailable',
120
142
  retryable: true,
121
143
  };
122
- /**
123
- * Owns one browser submission at a time. A network retry reuses the exact
124
- * context/UUID; any terminal success rotates both before another submission.
125
- */
126
- export function createContactSubmissionController(options) {
127
- if (typeof options.issueContext !== 'function' || typeof options.submitForm !== 'function') {
128
- 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.');
129
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.');
130
176
  if (options.onStateChange !== undefined && typeof options.onStateChange !== 'function') {
131
177
  throw new TypeError('onStateChange must be a function.');
132
178
  }
133
- let context = options.initialContext
134
- ? parseClientContext(options.initialContext)
135
- : undefined;
136
- if (options.initialContext && !context) {
137
- throw new TypeError('The initial contact submission context is invalid.');
138
- }
139
- const issuedIds = new Set(context ? [context.clientSubmissionId] : []);
140
179
  const trackedConfirmations = new Set();
141
180
  let attempt;
142
- let retryFormData;
143
181
  let inFlight;
144
182
  let state = {
145
183
  phase: 'idle',
146
184
  pending: false,
147
185
  canRetry: false,
148
- contextReady: Boolean(context),
149
186
  };
150
187
  const publish = (next) => {
151
188
  state = Object.freeze({ ...next });
152
189
  options.onStateChange?.(state);
153
190
  };
154
- const issueFreshContext = async () => {
155
- const issued = parseClientContext(await options.issueContext());
156
- if (!issued || issuedIds.has(issued.clientSubmissionId)) {
157
- throw new Error('The contact context issuer did not return a fresh valid context.');
158
- }
159
- issuedIds.add(issued.clientSubmissionId);
160
- context = issued;
161
- };
162
- const prepare = async () => {
163
- if (!context)
164
- await issueFreshContext();
165
- publish({
166
- ...state,
167
- contextReady: true,
168
- });
169
- };
170
- const execute = async (currentAttempt) => {
171
- publish({ phase: 'submitting', pending: true, canRetry: false, contextReady: true });
191
+ const post = async (formData) => {
192
+ publish({ phase: 'submitting', pending: true, canRetry: false });
172
193
  let result;
173
194
  try {
174
- const outgoing = copyFormData(currentAttempt.formData);
175
- addContactSubmissionContext(outgoing, currentAttempt.context);
176
- 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;
177
204
  }
178
205
  catch {
179
206
  result = RETRYABLE_CLIENT_FAILURE;
@@ -183,241 +210,82 @@ export function createContactSubmissionController(options) {
183
210
  phase: 'error',
184
211
  pending: false,
185
212
  canRetry: result.retryable,
186
- contextReady: true,
187
213
  result,
188
214
  });
189
215
  return result;
190
216
  }
191
- if (result.accepted &&
192
- !trackedConfirmations.has(result.confirmationId)) {
217
+ if (result.accepted && !trackedConfirmations.has(result.confirmationId)) {
193
218
  trackedConfirmations.add(result.confirmationId);
194
219
  try {
195
220
  if (options.analytics) {
196
221
  trackDeliveredContactResult(result, {
197
222
  ...options.analytics,
198
- formData: copyFormData(currentAttempt.formData),
223
+ formData: copyFormData(formData),
199
224
  });
200
225
  }
201
226
  }
202
227
  catch {
203
- // Analytics failure must never change the accepted delivery result.
228
+ // Delivery has already succeeded; analytics cannot change that result.
204
229
  }
205
230
  }
206
231
  attempt = undefined;
207
- retryFormData = undefined;
208
- context = undefined;
209
- try {
210
- await issueFreshContext();
211
- }
212
- catch {
213
- context = undefined;
214
- }
215
232
  publish({
216
233
  phase: result.accepted ? 'accepted' : 'accepted-silently',
217
234
  pending: false,
218
235
  canRetry: false,
219
- contextReady: Boolean(context),
220
236
  result,
221
237
  });
222
238
  return result;
223
239
  };
224
- const run = (currentAttempt) => {
240
+ const run = (formData) => {
225
241
  if (inFlight)
226
242
  return inFlight;
227
243
  let wrapped;
228
- wrapped = execute(currentAttempt).finally(() => {
244
+ wrapped = post(formData).finally(() => {
229
245
  if (inFlight === wrapped)
230
246
  inFlight = undefined;
231
247
  });
232
248
  inFlight = wrapped;
233
249
  return wrapped;
234
250
  };
235
- const submit = (formData) => {
236
- if (inFlight)
237
- return inFlight;
238
- const source = copyFormData(formData);
239
- retryFormData = source;
240
- const start = async () => {
241
- if (!context) {
242
- try {
243
- await issueFreshContext();
244
- }
245
- catch {
246
- publish({
247
- phase: 'error',
248
- pending: false,
249
- canRetry: true,
250
- contextReady: false,
251
- result: RETRYABLE_CLIENT_FAILURE,
252
- });
253
- return RETRYABLE_CLIENT_FAILURE;
254
- }
255
- }
256
- attempt = { formData: copyFormData(source), context: context };
257
- return execute(attempt);
258
- };
259
- const promise = start();
260
- let wrapped;
261
- wrapped = promise.finally(() => {
262
- if (inFlight === wrapped)
263
- inFlight = undefined;
264
- });
265
- inFlight = wrapped;
266
- return wrapped;
267
- };
268
- const retry = () => {
269
- if (inFlight)
270
- return inFlight;
271
- if (!attempt && retryFormData && state.phase === 'error' && state.canRetry) {
272
- return submit(retryFormData);
273
- }
274
- if (!attempt || state.phase !== 'error' || !state.canRetry) {
275
- return Promise.reject(new Error('No retryable contact submission is available.'));
276
- }
277
- return run(attempt);
278
- };
279
- const reset = async () => {
280
- if (inFlight)
281
- throw new Error('A pending contact submission cannot be reset.');
282
- attempt = undefined;
283
- retryFormData = undefined;
284
- context = undefined;
285
- await issueFreshContext();
286
- publish({ phase: 'idle', pending: false, canRetry: false, contextReady: true });
287
- };
288
251
  return {
289
252
  getState: () => ({ ...state }),
290
- prepare,
291
- submit,
292
- retry,
293
- reset,
294
- };
295
- }
296
- function rootRelativeEndpoint(value, fallback) {
297
- const endpoint = value ?? fallback;
298
- if (!/^\/[a-z0-9/_-]+$/.test(endpoint) ||
299
- endpoint.includes('//') ||
300
- endpoint.endsWith('/')) {
301
- throw new TypeError('Contact endpoints must be canonical root-relative paths.');
302
- }
303
- return endpoint;
304
- }
305
- async function boundedJson(response, maximumBytes) {
306
- const contentType = response.headers
307
- .get('content-type')
308
- ?.split(';', 1)[0]
309
- ?.trim()
310
- .toLowerCase();
311
- if (contentType !== 'application/json') {
312
- throw new Error('The contact response did not use the required JSON media type.');
313
- }
314
- const declaredLength = response.headers.get('content-length');
315
- if (declaredLength !== null &&
316
- (!/^\d{1,10}$/.test(declaredLength) || Number(declaredLength) > maximumBytes)) {
317
- throw new Error('The contact response exceeded its safe bound.');
318
- }
319
- if (!response.body)
320
- throw new Error('The contact response body is unavailable.');
321
- const reader = response.body.getReader();
322
- const chunks = [];
323
- let totalBytes = 0;
324
- try {
325
- while (true) {
326
- const { done, value } = await reader.read();
327
- if (done)
328
- break;
329
- if (!(value instanceof Uint8Array)) {
330
- throw new Error('The contact response body is invalid.');
331
- }
332
- totalBytes += value.byteLength;
333
- if (totalBytes > maximumBytes) {
334
- 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);
335
266
  }
336
- chunks.push(value);
337
- }
338
- }
339
- catch (error) {
340
- await reader.cancel().catch(() => undefined);
341
- throw error;
342
- }
343
- finally {
344
- reader.releaseLock();
345
- }
346
- const bytes = new Uint8Array(totalBytes);
347
- let offset = 0;
348
- for (const chunk of chunks) {
349
- bytes.set(chunk, offset);
350
- offset += chunk.byteLength;
351
- }
352
- const text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
353
- return JSON.parse(text);
354
- }
355
- /** Canonical same-origin HTTP adapter for the shared context and contact routes. */
356
- export function createContactHttpSubmissionController(options) {
357
- const contactEndpoint = rootRelativeEndpoint(options.contactEndpoint, '/api/contact');
358
- const contextEndpoint = rootRelativeEndpoint(options.contextEndpoint, '/api/contact/context');
359
- const pagePath = normalizeBrandlabRoutePath(options.pagePath);
360
- const pageLabel = options.pageLabel?.trim();
361
- if (pageLabel !== undefined &&
362
- (!pageLabel || pageLabel.length > 160 || /[\u0000-\u001f\u007f]/.test(pageLabel))) {
363
- throw new TypeError('pageLabel must be bounded reviewed text.');
364
- }
365
- const fetcher = options.fetcher ?? fetch;
366
- if (typeof fetcher !== 'function')
367
- throw new TypeError('A fetch implementation is required.');
368
- return createContactSubmissionController({
369
- ...(options.initialContext ? { initialContext: options.initialContext } : {}),
370
- ...(options.analytics ? { analytics: options.analytics } : {}),
371
- ...(options.onStateChange ? { onStateChange: options.onStateChange } : {}),
372
- async issueContext() {
373
- const attribution = typeof window === 'undefined'
374
- ? { initialLandingPath: pagePath, visitSource: 'direct-or-unknown' }
375
- : getInitialContactAttribution(window);
376
- const response = await fetcher(contextEndpoint, {
377
- method: 'POST',
378
- credentials: 'same-origin',
379
- cache: 'no-store',
380
- headers: { 'content-type': 'application/json' },
381
- body: JSON.stringify({
382
- pagePath,
383
- ...(pageLabel ? { pageLabel } : {}),
384
- ...attribution,
385
- }),
267
+ attempt = addSubmissionMetadata(copyFormData(formData), {
268
+ pagePath,
269
+ ...(pageLabel ? { pageLabel } : {}),
270
+ now,
386
271
  });
387
- if (!response.ok)
388
- throw new Error('The contact context endpoint is unavailable.');
389
- return boundedJson(response, 8_192);
272
+ return run(attempt);
390
273
  },
391
- async submitForm(formData) {
392
- const response = await fetcher(contactEndpoint, {
393
- method: 'POST',
394
- credentials: 'same-origin',
395
- cache: 'no-store',
396
- body: formData,
397
- });
398
- 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 });
399
287
  },
400
- });
401
- }
402
- /** Adds the stable ID and server-signed context issued for this form instance. */
403
- export function addContactSubmissionContext(formData, options) {
404
- const clientSubmissionId = options.clientSubmissionId.trim().toLowerCase();
405
- if (!CONTACT_CLIENT_SUBMISSION_ID_PATTERN.test(clientSubmissionId)) {
406
- throw new Error('clientSubmissionId must be a valid UUID v4.');
407
- }
408
- const signedContext = options.signedContext.trim();
409
- if (!signedContext || new TextEncoder().encode(signedContext).byteLength > 4_096) {
410
- throw new Error('signedContext must be a bounded non-empty token.');
411
- }
412
- const entries = {
413
- [CONTACT_CONTEXT_FIELD_NAMES.clientSubmissionId]: clientSubmissionId,
414
- [CONTACT_CONTEXT_FIELD_NAMES.signedContext]: signedContext,
415
288
  };
416
- for (const [name, value] of Object.entries(entries)) {
417
- if (value)
418
- formData.set(name, value);
419
- }
420
- return { formData, clientSubmissionId };
421
289
  }
422
290
  export function shouldTrackContactResult(result) {
423
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 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,yBAAyB,CAAA;IACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,UAOpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,UAExD;AA4CD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,UAOtE;AAuFD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,oBAAoB,CAoFvF"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,yBAAyB,CAAA;IACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,UAOpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,UAExD;AAoCD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,UAOtE;AA4ED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,oBAAoB,CA4EvF"}