@brandlab-digital/site-next 1.0.0-rc.2 → 1.0.0-rc.21

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 (88) hide show
  1. package/dist/analytics.d.ts +23 -0
  2. package/dist/analytics.d.ts.map +1 -1
  3. package/dist/analytics.js +61 -0
  4. package/dist/analytics.js.map +1 -1
  5. package/dist/blog.d.ts.map +1 -1
  6. package/dist/blog.js +5 -2
  7. package/dist/blog.js.map +1 -1
  8. package/dist/contact/attribution.d.ts +11 -0
  9. package/dist/contact/attribution.d.ts.map +1 -0
  10. package/dist/contact/attribution.js +145 -0
  11. package/dist/contact/attribution.js.map +1 -0
  12. package/dist/contact/client.d.ts +7 -1
  13. package/dist/contact/client.d.ts.map +1 -1
  14. package/dist/contact/client.js +32 -1
  15. package/dist/contact/client.js.map +1 -1
  16. package/dist/contact/context.d.ts +4 -0
  17. package/dist/contact/context.d.ts.map +1 -1
  18. package/dist/contact/context.js +56 -7
  19. package/dist/contact/context.js.map +1 -1
  20. package/dist/contact/contract.d.ts +3 -4
  21. package/dist/contact/contract.d.ts.map +1 -1
  22. package/dist/contact/contract.js +3 -5
  23. package/dist/contact/contract.js.map +1 -1
  24. package/dist/contact/email.d.ts +1 -0
  25. package/dist/contact/email.d.ts.map +1 -1
  26. package/dist/contact/email.js +137 -54
  27. package/dist/contact/email.js.map +1 -1
  28. package/dist/contact/image-sanitizer.d.ts +1 -1
  29. package/dist/contact/image-sanitizer.d.ts.map +1 -1
  30. package/dist/contact/image-sanitizer.js +12 -17
  31. package/dist/contact/image-sanitizer.js.map +1 -1
  32. package/dist/contact/index.d.ts +1 -0
  33. package/dist/contact/index.d.ts.map +1 -1
  34. package/dist/contact/index.js +2 -0
  35. package/dist/contact/index.js.map +1 -1
  36. package/dist/contact/production.d.ts +3 -1
  37. package/dist/contact/production.d.ts.map +1 -1
  38. package/dist/contact/production.js +31 -60
  39. package/dist/contact/production.js.map +1 -1
  40. package/dist/contact/resend.d.ts +1 -1
  41. package/dist/contact/resend.js +1 -1
  42. package/dist/contact/server-entry.d.ts +13 -0
  43. package/dist/contact/server-entry.d.ts.map +1 -0
  44. package/dist/contact/server-entry.js +13 -0
  45. package/dist/contact/server-entry.js.map +1 -0
  46. package/dist/contact/server.d.ts.map +1 -1
  47. package/dist/contact/server.js +27 -28
  48. package/dist/contact/server.js.map +1 -1
  49. package/dist/contact/shared.d.ts +3 -6
  50. package/dist/contact/shared.d.ts.map +1 -1
  51. package/dist/contact/shared.js.map +1 -1
  52. package/dist/google-reviews-client.d.ts +20 -0
  53. package/dist/google-reviews-client.d.ts.map +1 -0
  54. package/dist/google-reviews-client.js +85 -0
  55. package/dist/google-reviews-client.js.map +1 -0
  56. package/dist/google-reviews-durable.d.ts +22 -0
  57. package/dist/google-reviews-durable.d.ts.map +1 -0
  58. package/dist/google-reviews-durable.js +81 -0
  59. package/dist/google-reviews-durable.js.map +1 -0
  60. package/dist/google-reviews-server.d.ts +58 -0
  61. package/dist/google-reviews-server.d.ts.map +1 -0
  62. package/dist/google-reviews-server.js +151 -0
  63. package/dist/google-reviews-server.js.map +1 -0
  64. package/dist/google-reviews-ui.d.ts +599 -0
  65. package/dist/google-reviews-ui.d.ts.map +1 -0
  66. package/dist/google-reviews-ui.js +188 -0
  67. package/dist/google-reviews-ui.js.map +1 -0
  68. package/dist/google-reviews.d.ts +4 -322
  69. package/dist/google-reviews.d.ts.map +1 -1
  70. package/dist/google-reviews.js +4 -252
  71. package/dist/google-reviews.js.map +1 -1
  72. package/dist/google-tag-plan.d.ts +19 -0
  73. package/dist/google-tag-plan.d.ts.map +1 -0
  74. package/dist/google-tag-plan.js +85 -0
  75. package/dist/google-tag-plan.js.map +1 -0
  76. package/dist/google-tag.d.ts +17 -0
  77. package/dist/google-tag.d.ts.map +1 -0
  78. package/dist/google-tag.js +18 -0
  79. package/dist/google-tag.js.map +1 -0
  80. package/dist/instrumentation-client.d.ts +2 -0
  81. package/dist/instrumentation-client.d.ts.map +1 -1
  82. package/dist/instrumentation-client.js +39 -3
  83. package/dist/instrumentation-client.js.map +1 -1
  84. package/dist/redis-rest.d.ts +12 -0
  85. package/dist/redis-rest.d.ts.map +1 -0
  86. package/dist/redis-rest.js +83 -0
  87. package/dist/redis-rest.js.map +1 -0
  88. package/package.json +29 -36
@@ -25,15 +25,15 @@ function assertSingleImage(metadata, expectedFormat) {
25
25
  throw new Error('The uploaded file is not one supported still image.');
26
26
  }
27
27
  }
28
- function outputFilename(filename, extension) {
28
+ function outputFilename(filename) {
29
29
  const stem = filename.replace(/\.[a-z0-9]+$/i, '');
30
30
  if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(stem)) {
31
31
  throw new Error('The validated attachment filename is invalid.');
32
32
  }
33
- return `${stem}.${extension}`;
33
+ return `${stem}.jpg`;
34
34
  }
35
- function outputPipeline(image, hasAlpha) {
36
- const normalized = image
35
+ function outputPipeline(image) {
36
+ return image
37
37
  .autoOrient()
38
38
  .resize({
39
39
  width: MAX_OUTPUT_DIMENSION,
@@ -41,10 +41,9 @@ function outputPipeline(image, hasAlpha) {
41
41
  fit: 'inside',
42
42
  withoutEnlargement: true,
43
43
  })
44
- .timeout({ seconds: PROCESSING_TIMEOUT_SECONDS });
45
- return hasAlpha
46
- ? normalized.png({ compressionLevel: 9, adaptiveFiltering: true })
47
- : normalized.jpeg({ quality: 85, progressive: true, mozjpeg: true });
44
+ .flatten({ background: '#ffffff' })
45
+ .timeout({ seconds: PROCESSING_TIMEOUT_SECONDS })
46
+ .jpeg({ quality: 85, progressive: true, mozjpeg: true });
48
47
  }
49
48
  async function sanitizeOne(attachment) {
50
49
  const expectedFormat = expectedInputFormat(attachment.contentType);
@@ -56,7 +55,6 @@ async function sanitizeOne(attachment) {
56
55
  const image = sharp(input, {
57
56
  animated: false,
58
57
  failOn: 'warning',
59
- limitInputChannels: 4,
60
58
  limitInputPixels: MAX_INPUT_PIXELS,
61
59
  pages: 1,
62
60
  sequentialRead: true,
@@ -64,14 +62,11 @@ async function sanitizeOne(attachment) {
64
62
  });
65
63
  const metadata = await image.metadata();
66
64
  assertSingleImage(metadata, expectedFormat);
67
- const hasAlpha = metadata.hasAlpha === true;
68
- const { data, info } = await outputPipeline(image, hasAlpha).toBuffer({
65
+ const { data, info } = await outputPipeline(image).toBuffer({
69
66
  resolveWithObject: true,
70
67
  });
71
- const outputType = hasAlpha ? 'image/png' : 'image/jpeg';
72
- const extension = hasAlpha ? 'png' : 'jpg';
73
68
  if (data.byteLength < 1 ||
74
- info.format !== (hasAlpha ? 'png' : 'jpeg') ||
69
+ info.format !== 'jpeg' ||
75
70
  !Number.isSafeInteger(info.width) ||
76
71
  !Number.isSafeInteger(info.height) ||
77
72
  info.width < 1 ||
@@ -81,13 +76,13 @@ async function sanitizeOne(attachment) {
81
76
  throw new Error('The uploaded image could not be normalised safely.');
82
77
  }
83
78
  return Object.freeze({
84
- filename: outputFilename(attachment.filename, extension),
79
+ filename: outputFilename(attachment.filename),
85
80
  content: new Uint8Array(data),
86
- contentType: outputType,
81
+ contentType: 'image/jpeg',
87
82
  });
88
83
  }
89
84
  /**
90
- * The production image boundary for Contact Contract v2. Every accepted image
85
+ * The production image boundary for Contact Contract v3. Every accepted image
91
86
  * is fully decoded, bounded, auto-oriented and re-encoded without source
92
87
  * metadata. Project code cannot replace this processor in production.
93
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"image-sanitizer.js","sourceRoot":"","sources":["../../src/contact/image-sanitizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-sanitizer.js","sourceRoot":"","sources":["../../src/contact/image-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from './shared.js';
2
2
  export * from './contract.js';
3
+ export { addContactSubmissionContext, createContactHttpSubmissionController, createContactSubmissionController, normalizeContactUploadFile, parseContactActionResult, shouldTrackContactResult, trackDeliveredContactResult, type ContactClientSubmissionContext, type ContactHttpSubmissionControllerOptions, type ContactSubmissionController, type ContactSubmissionControllerOptions, type ContactSubmissionPhase, type ContactSubmissionState, } from './client.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contact/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contact/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,OAAO,EACL,2BAA2B,EAC3B,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,KAAK,sCAAsC,EAC3C,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAA"}
@@ -1,3 +1,5 @@
1
+ 'use client';
1
2
  export * from './shared.js';
2
3
  export * from './contract.js';
4
+ export { addContactSubmissionContext, createContactHttpSubmissionController, createContactSubmissionController, normalizeContactUploadFile, parseContactActionResult, shouldTrackContactResult, trackDeliveredContactResult, } from './client.js';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contact/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contact/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,OAAO,EACL,2BAA2B,EAC3B,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,GAO5B,MAAM,aAAa,CAAA"}
@@ -4,7 +4,9 @@ import { createContactDefinitionFromContract, type ContactRuntimeDefinitionOptio
4
4
  import { type ResendContactSend } from './resend.js';
5
5
  import { createContactRouteHandler } from './route.js';
6
6
  import { type ContactBotGuard } from './shared.js';
7
- export declare const BRANDLAB_PRODUCTION_CONTACT_RUNTIME: "brandlab-contact-production-v2";
7
+ export declare const BRANDLAB_PRODUCTION_CONTACT_RUNTIME: "brandlab-contact-production-v3";
8
+ export declare const BRANDLAB_VERCEL_FUNCTION_BODY_LIMIT_BYTES = 4500000;
9
+ export declare const BRANDLAB_VERCEL_CONTACT_ATTACHMENT_LIMIT_BYTES = 4000000;
8
10
  export interface BrandlabProductionContactEnvironmentNames {
9
11
  contextSecret: string;
10
12
  resendApiKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../src/contact/production.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,qCAAqC,CAAA;AAI5C,OAAO,EAAE,mCAAmC,EAAE,KAAK,+BAA+B,EAAE,MAAM,eAAe,CAAA;AAOzG,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,mCAAmC,EAAG,gCAAyC,CAAA;AAQ5F,MAAM,WAAW,yCAAyC;IACxD,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,6BAA6B,GACrC,YAAY,GACZ,SAAS,GACT,aAAa,GACb,MAAM,CAAA;AAEV,MAAM,MAAM,0CAA0C,GAAG,IAAI,CAC3D,+BAA+B,EAC/B,gBAAgB,GAAG,gBAAgB,CACpC,CAAA;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,EAAE,uBAAuB,CAAA;IACjC,OAAO,EAAE,0CAA0C,CAAA;IACnD,oFAAoF;IACpF,gBAAgB,EAAE,yCAAyC,CAAA;IAC3D,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IACzD,4DAA4D;IAC5D,cAAc,CAAC,EAAE,6BAA6B,CAAA;IAC9C,2EAA2E;IAC3E,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAA;IACvD,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,OAAO,mCAAmC,CAAA;IACvD,uEAAuE;IACvE,UAAU,EAAE,UAAU,CAAC,OAAO,mCAAmC,CAAC,CAAA;IAClE,mBAAmB,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAA;IACjE,8EAA8E;IAC9E,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC7D;AA+OD;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CA0JlC"}
1
+ {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../src/contact/production.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,qCAAqC,CAAA;AAI5C,OAAO,EAAE,mCAAmC,EAAE,KAAK,+BAA+B,EAAE,MAAM,eAAe,CAAA;AAMzG,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAA;AAMpB,eAAO,MAAM,mCAAmC,EAAG,gCAAyC,CAAA;AAC5F,eAAO,MAAM,yCAAyC,UAAY,CAAA;AAClE,eAAO,MAAM,8CAA8C,UAAY,CAAA;AAMvE,MAAM,WAAW,yCAAyC;IACxD,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,6BAA6B,GACrC,YAAY,GACZ,SAAS,GACT,aAAa,GACb,MAAM,CAAA;AAEV,MAAM,MAAM,0CAA0C,GAAG,IAAI,CAC3D,+BAA+B,EAC/B,gBAAgB,GAAG,gBAAgB,CACpC,CAAA;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,EAAE,uBAAuB,CAAA;IACjC,OAAO,EAAE,0CAA0C,CAAA;IACnD,oFAAoF;IACpF,gBAAgB,EAAE,yCAAyC,CAAA;IAC3D,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IACzD,4DAA4D;IAC5D,cAAc,CAAC,EAAE,6BAA6B,CAAA;IAC9C,2EAA2E;IAC3E,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAA;IACvD,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,OAAO,mCAAmC,CAAA;IACvD,uEAAuE;IACvE,UAAU,EAAE,UAAU,CAAC,OAAO,mCAAmC,CAAC,CAAA;IAClE,mBAAmB,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAA;IACjE,8EAA8E;IAC9E,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC7D;AAoMD;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAmKlC"}
@@ -9,11 +9,14 @@ import { createContractResendContactTransport } from './resend.js';
9
9
  import { createContactRouteHandler } from './route.js';
10
10
  import { createContactSubmissionId, } from './shared.js';
11
11
  import { createBrandlabContactImageSanitizer } from './image-sanitizer.js';
12
- export const BRANDLAB_PRODUCTION_CONTACT_RUNTIME = 'brandlab-contact-production-v2';
12
+ import { getContactRequestLimits } from './server.js';
13
+ import { normalizeContactAttributionSummary } from './attribution.js';
14
+ import { createBrandlabUpstashRedisEvalClient } from '../redis-rest.js';
15
+ export const BRANDLAB_PRODUCTION_CONTACT_RUNTIME = 'brandlab-contact-production-v3';
16
+ export const BRANDLAB_VERCEL_FUNCTION_BODY_LIMIT_BYTES = 4_500_000;
17
+ export const BRANDLAB_VERCEL_CONTACT_ATTACHMENT_LIMIT_BYTES = 4_000_000;
13
18
  const ENVIRONMENT_NAME_PATTERN = /^[A-Z][A-Z0-9_]*$/;
14
19
  const DEFAULT_CONTEXT_BODY_BYTES = 2_048;
15
- const REDIS_REQUEST_TIMEOUT_MS = 5_000;
16
- const REDIS_RESPONSE_MAXIMUM_BYTES = 64 * 1_024;
17
20
  const VERCEL_TRUSTED_IP_HEADER = 'x-vercel-forwarded-for';
18
21
  function assertEnvironmentName(value, field) {
19
22
  if (!value || !ENVIRONMENT_NAME_PATTERN.test(value)) {
@@ -76,60 +79,6 @@ function normalizeDeploymentOrigin(value, field, mode) {
76
79
  }
77
80
  return parsed.origin;
78
81
  }
79
- function createUpstashRedisEvalClient(options) {
80
- const endpoint = normalizeHttpsOrigin(options.url, 'Redis REST URL');
81
- if (options.token.length < 16 ||
82
- options.token.length > 8_192 ||
83
- /[\u0000-\u001f\u007f]/.test(options.token)) {
84
- throw new Error('Redis REST token is invalid.');
85
- }
86
- if (typeof options.fetcher !== 'function') {
87
- throw new Error('A Redis REST fetch implementation is required.');
88
- }
89
- return {
90
- async eval(script, keys, args) {
91
- const controller = new AbortController();
92
- const timeout = globalThis.setTimeout(() => controller.abort(), REDIS_REQUEST_TIMEOUT_MS);
93
- try {
94
- const response = await options.fetcher(endpoint, {
95
- method: 'POST',
96
- headers: {
97
- authorization: `Bearer ${options.token}`,
98
- 'content-type': 'application/json',
99
- },
100
- body: JSON.stringify(['EVAL', script, keys.length, ...keys, ...args]),
101
- cache: 'no-store',
102
- signal: controller.signal,
103
- });
104
- if (!response.ok)
105
- throw new Error('The durable contact store is unavailable.');
106
- const rawPayload = await response.text();
107
- if (new TextEncoder().encode(rawPayload).byteLength >
108
- REDIS_RESPONSE_MAXIMUM_BYTES) {
109
- throw new Error('The durable contact store returned an invalid result.');
110
- }
111
- let payload;
112
- try {
113
- payload = JSON.parse(rawPayload);
114
- }
115
- catch {
116
- throw new Error('The durable contact store returned an invalid result.');
117
- }
118
- if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
119
- throw new Error('The durable contact store returned an invalid result.');
120
- }
121
- const record = payload;
122
- if (record.error || !Object.prototype.hasOwnProperty.call(record, 'result')) {
123
- throw new Error('The durable contact store returned an invalid result.');
124
- }
125
- return record.result;
126
- }
127
- finally {
128
- globalThis.clearTimeout(timeout);
129
- }
130
- },
131
- };
132
- }
133
82
  function safeJsonResponse(body, status) {
134
83
  return Response.json(body, {
135
84
  status,
@@ -179,14 +128,30 @@ function createContextRouteHandler(options) {
179
128
  return safeJsonResponse({ ok: false }, 400);
180
129
  }
181
130
  const record = input;
182
- if (Object.keys(record).some((key) => !['pagePath', 'pageLabel'].includes(key)) ||
131
+ if (Object.keys(record).some((key) => ![
132
+ 'pagePath',
133
+ 'pageLabel',
134
+ 'initialLandingPath',
135
+ 'visitSource',
136
+ 'visitSourceDetail',
137
+ ].includes(key)) ||
183
138
  typeof record.pagePath !== 'string' ||
184
- (record.pageLabel !== undefined && typeof record.pageLabel !== 'string')) {
139
+ (record.pageLabel !== undefined && typeof record.pageLabel !== 'string') ||
140
+ typeof record.initialLandingPath !== 'string' ||
141
+ typeof record.visitSource !== 'string' ||
142
+ (record.visitSourceDetail !== undefined && typeof record.visitSourceDetail !== 'string')) {
185
143
  return safeJsonResponse({ ok: false }, 400);
186
144
  }
187
145
  try {
188
146
  const pagePath = normalizeBrandlabRoutePath(record.pagePath);
189
147
  const pageLabel = record.pageLabel?.trim();
148
+ const attribution = normalizeContactAttributionSummary({
149
+ initialLandingPath: record.initialLandingPath,
150
+ visitSource: record.visitSource,
151
+ ...(record.visitSourceDetail
152
+ ? { visitSourceDetail: record.visitSourceDetail }
153
+ : {}),
154
+ });
190
155
  if (pageLabel !== undefined &&
191
156
  (!pageLabel || pageLabel.length > 160 || /[\u0000-\u001f\u007f]/.test(pageLabel))) {
192
157
  return safeJsonResponse({ ok: false }, 400);
@@ -198,6 +163,7 @@ function createContextRouteHandler(options) {
198
163
  origin,
199
164
  pagePath,
200
165
  ...(pageLabel ? { pageLabel } : {}),
166
+ ...attribution,
201
167
  });
202
168
  return safeJsonResponse({ clientSubmissionId, signedContext }, 200);
203
169
  }
@@ -304,7 +270,12 @@ export function createBrandlabProductionContactRuntime(options) {
304
270
  : {}),
305
271
  };
306
272
  const definition = createContactDefinitionFromContract(contract, runtimeOptions);
307
- const redis = createUpstashRedisEvalClient({
273
+ if (contract.attachments.mode !== 'none' &&
274
+ getContactRequestLimits(definition).maxRequestBytes >
275
+ BRANDLAB_VERCEL_FUNCTION_BODY_LIMIT_BYTES) {
276
+ throw new Error(`The production contact request envelope must not exceed ${BRANDLAB_VERCEL_FUNCTION_BODY_LIMIT_BYTES} bytes.`);
277
+ }
278
+ const redis = createBrandlabUpstashRedisEvalClient({
308
279
  url: redisRestUrl,
309
280
  token: redisRestToken,
310
281
  fetcher: options.fetcher ?? fetch,
@@ -1 +1 @@
1
- {"version":3,"file":"production.js","sourceRoot":"","sources":["../../src/contact/production.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production.js","sourceRoot":"","sources":["../../src/contact/production.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,6 @@ export interface ContractResendContactTransportOptions {
44
44
  */
45
45
  export declare function encodeBrandlabEntityIdForResendTag(projectId: string): string;
46
46
  export declare function createResendContactTransport(options: ResendContactTransportOptions): ContactTransport;
47
- /** Resolves only the two reviewed environment keys declared by Contact Contract v2. */
47
+ /** Resolves only the two reviewed environment keys declared by Contact Contract v3. */
48
48
  export declare function createContractResendContactTransport(options: ContractResendContactTransportOptions): ContactTransport;
49
49
  //# sourceMappingURL=resend.d.ts.map
@@ -125,7 +125,7 @@ export function createResendContactTransport(options) {
125
125
  },
126
126
  };
127
127
  }
128
- /** Resolves only the two reviewed environment keys declared by Contact Contract v2. */
128
+ /** Resolves only the two reviewed environment keys declared by Contact Contract v3. */
129
129
  export function createContractResendContactTransport(options) {
130
130
  const contract = defineContactContract(options.contract);
131
131
  return createResendContactTransport({
@@ -0,0 +1,13 @@
1
+ import 'server-only';
2
+ export * from './shared.js';
3
+ export * from './contract.js';
4
+ export * from './attribution.js';
5
+ export * from './context.js';
6
+ export * from './request.js';
7
+ export * from './route.js';
8
+ export * from './durable.js';
9
+ export * from './email.js';
10
+ export * from './resend.js';
11
+ export * from './production.js';
12
+ export * from './server.js';
13
+ //# sourceMappingURL=server-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-entry.d.ts","sourceRoot":"","sources":["../../src/contact/server-entry.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,13 @@
1
+ import 'server-only';
2
+ export * from './shared.js';
3
+ export * from './contract.js';
4
+ export * from './attribution.js';
5
+ export * from './context.js';
6
+ export * from './request.js';
7
+ export * from './route.js';
8
+ export * from './durable.js';
9
+ export * from './email.js';
10
+ export * from './resend.js';
11
+ export * from './production.js';
12
+ export * from './server.js';
13
+ //# sourceMappingURL=server-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-entry.js","sourceRoot":"","sources":["../../src/contact/server-entry.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/contact/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAA;AAG5C,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAE/B,KAAK,eAAe,EAGpB,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE1B,KAAK,gCAAgC,EAErC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAA;AA+C1E,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,yBAAyB,CAAA;IACrC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,oFAAoF;IACpF,KAAK,EAAE,sBAAsB,CAAA;IAC7B,gFAAgF;IAChF,WAAW,EAAE,kBAAkB,CAAA;IAC/B,kFAAkF;IAClF,eAAe,EAAE,gCAAgC,CAAA;IACjD,+EAA+E;IAC/E,cAAc,EAAE,qBAAqB,CAAA;IACrC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,0BAA0B,CAAA;IAChD,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,iBAAiB,EAAE,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC/E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AA+aD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,yBAAyB;;;;EAY5E;AA2oBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,IAMzE,gBAAgB,mBAAmB,GAAG,IAAI,EAC1C,UAAU,QAAQ,KACjB,OAAO,CAAC,mBAAmB,CAAC,CAoBhC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/contact/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAA;AAG5C,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAE/B,KAAK,eAAe,EAGpB,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE1B,KAAK,gCAAgC,EAErC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAA;AA8C1E,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,yBAAyB,CAAA;IACrC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,oFAAoF;IACpF,KAAK,EAAE,sBAAsB,CAAA;IAC7B,gFAAgF;IAChF,WAAW,EAAE,kBAAkB,CAAA;IAC/B,kFAAkF;IAClF,eAAe,EAAE,gCAAgC,CAAA;IACjD,+EAA+E;IAC/E,cAAc,EAAE,qBAAqB,CAAA;IACrC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,0BAA0B,CAAA;IAChD,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,iBAAiB,EAAE,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC/E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AA6bD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,yBAAyB;;;;EAY5E;AAyoBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,IAMzE,gBAAgB,mBAAmB,GAAG,IAAI,EAC1C,UAAU,QAAQ,KACjB,OAAO,CAAC,mBAAmB,CAAC,CAoBhC"}
@@ -5,7 +5,6 @@ import { renderContactEmail } from './email.js';
5
5
  import { CONTACT_CLIENT_SUBMISSION_ID_PATTERN, CONTACT_CONTEXT_FIELD_NAMES, CONTACT_HASH_PATTERN, } from './shared.js';
6
6
  export { createBrandlabContactImageSanitizer } from './image-sanitizer.js';
7
7
  const FIELD_NAME_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/;
8
- const ATTACHMENT_FILENAME_PREFIX_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
9
8
  const SAFE_PROVIDER_MESSAGE_ID_PATTERN = /^[A-Za-z0-9._-]{1,256}$/;
10
9
  const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
11
10
  const EMAIL_COLOR_PATTERN = /^#[0-9a-fA-F]{6}$/;
@@ -112,6 +111,13 @@ function getFieldRole(field) {
112
111
  }
113
112
  return 'custom';
114
113
  }
114
+ function assertOnlyObjectKeys(value, allowedKeys, field) {
115
+ const allowed = new Set(allowedKeys);
116
+ const unsupported = Object.keys(value).filter((key) => !allowed.has(key));
117
+ if (unsupported.length > 0) {
118
+ throw new Error(`${field} contains unsupported keys: ${unsupported.join(', ')}.`);
119
+ }
120
+ }
115
121
  function validateDefinition(definition) {
116
122
  const deploymentMode = definition.deploymentMode ?? 'production';
117
123
  if (!['production', 'preview', 'development', 'test'].includes(deploymentMode)) {
@@ -216,6 +222,14 @@ function validateDefinition(definition) {
216
222
  Array.isArray(definition.attachments)) {
217
223
  throw new Error('The attachment configuration must be an object or false.');
218
224
  }
225
+ assertOnlyObjectKeys(definition.attachments, [
226
+ 'maxFiles',
227
+ 'maxFileSizeBytes',
228
+ 'maxTotalSizeBytes',
229
+ 'allowedTypes',
230
+ 'fieldPrefix',
231
+ 'required',
232
+ ], 'attachments');
219
233
  const fieldPrefix = definition.attachments?.fieldPrefix ?? 'attachments';
220
234
  if (!FIELD_NAME_PATTERN.test(fieldPrefix) ||
221
235
  names.has(fieldPrefix) ||
@@ -242,12 +256,6 @@ function validateDefinition(definition) {
242
256
  new Set(policy.allowedTypes).size !== policy.allowedTypes.length) {
243
257
  throw new Error('The attachment MIME allowlist is invalid.');
244
258
  }
245
- const filenamePrefix = policy.filenamePrefix ?? 'contact-photo';
246
- if (typeof filenamePrefix !== 'string' ||
247
- filenamePrefix.length > 48 ||
248
- !ATTACHMENT_FILENAME_PREFIX_PATTERN.test(filenamePrefix)) {
249
- throw new Error('The attachment filename prefix must be bounded lowercase kebab-case.');
250
- }
251
259
  if (definition.limits?.maxRequestBytes !== undefined &&
252
260
  definition.limits.maxRequestBytes < policy.maxTotalSizeBytes) {
253
261
  throw new Error('maxRequestBytes must cover the configured attachment total.');
@@ -259,21 +267,8 @@ function validateDefinition(definition) {
259
267
  Array.isArray(definition.email))) {
260
268
  throw new Error('The contact email configuration must be an object.');
261
269
  }
262
- if (definition.email?.subject !== undefined &&
263
- (typeof definition.email.subject !== 'string' ||
264
- !definition.email.subject.trim() ||
265
- definition.email.subject.trim() !== definition.email.subject ||
266
- definition.email.subject.length > 200 ||
267
- /[\u0000-\u001f\u007f]/.test(definition.email.subject))) {
268
- throw new Error('The contact email subject must be a bounded static string.');
269
- }
270
- if (definition.email?.heading !== undefined &&
271
- (typeof definition.email.heading !== 'string' ||
272
- !definition.email.heading.trim() ||
273
- definition.email.heading.trim() !== definition.email.heading ||
274
- definition.email.heading.length > 200 ||
275
- /[\u0000-\u001f\u007f]/.test(definition.email.heading))) {
276
- throw new Error('The contact email heading must be bounded reviewed text.');
270
+ if (definition.email) {
271
+ assertOnlyObjectKeys(definition.email, ['style', 'logo'], 'email');
277
272
  }
278
273
  if (definition.email?.style !== undefined) {
279
274
  if (!definition.email.style ||
@@ -282,8 +277,10 @@ function validateDefinition(definition) {
282
277
  Object.values(definition.email.style).some((value) => typeof value !== 'string' || !EMAIL_COLOR_PATTERN.test(value))) {
283
278
  throw new Error('Contact email colours must use six-digit hexadecimal values.');
284
279
  }
280
+ assertOnlyObjectKeys(definition.email.style, ['accentColor', 'backgroundColor', 'surfaceColor', 'textColor', 'mutedTextColor'], 'email.style');
285
281
  }
286
282
  if (definition.email?.logo !== undefined) {
283
+ assertOnlyObjectKeys(definition.email.logo, ['url', 'alt', 'width'], 'email.logo');
287
284
  const { alt, url, width } = definition.email.logo;
288
285
  let parsedUrl;
289
286
  try {
@@ -351,6 +348,11 @@ function getPageContext(definition, context) {
351
348
  ...(context.pageLabel ? { pageLabel: context.pageLabel } : {}),
352
349
  pagePath: context.pagePath,
353
350
  pageUrl: new URL(context.pagePath, definition.siteUrl).toString(),
351
+ initialLandingPath: context.initialLandingPath,
352
+ visitSource: context.visitSource,
353
+ ...(context.visitSourceDetail
354
+ ? { visitSourceDetail: context.visitSourceDetail }
355
+ : {}),
354
356
  };
355
357
  }
356
358
  function attachmentPolicy(definition) {
@@ -363,7 +365,6 @@ function attachmentPolicy(definition) {
363
365
  maxFileSizeBytes: configured.maxFileSizeBytes ?? DEFAULT_CONTACT_ATTACHMENT_POLICY.maxFileSizeBytes,
364
366
  maxTotalSizeBytes: configured.maxTotalSizeBytes ?? DEFAULT_CONTACT_ATTACHMENT_POLICY.maxTotalSizeBytes,
365
367
  allowedTypes: configured.allowedTypes ?? DEFAULT_CONTACT_ATTACHMENT_POLICY.allowedTypes,
366
- filenamePrefix: configured.filenamePrefix ?? DEFAULT_CONTACT_ATTACHMENT_POLICY.filenamePrefix,
367
368
  };
368
369
  }
369
370
  export function getContactRequestLimits(definition) {
@@ -586,8 +587,6 @@ async function readValidatedAttachments(definition, formData) {
586
587
  attachments.push({
587
588
  filename: createContactAttachmentFilename({
588
589
  index,
589
- contentType: extensionType,
590
- policy,
591
590
  }),
592
591
  contentType: extensionType,
593
592
  content,
@@ -599,12 +598,11 @@ function validateProcessedAttachments(definition, attachments) {
599
598
  if (!definition.attachments)
600
599
  return attachments.length === 0;
601
600
  const policy = attachmentPolicy(definition);
602
- const allowed = allowedNormalizedTypes(policy);
603
601
  const filenames = new Set();
604
602
  let totalBytes = 0;
605
603
  if (attachments.length > policy.maxFiles)
606
604
  return false;
607
- for (const attachment of attachments) {
605
+ for (const [index, attachment] of attachments.entries()) {
608
606
  if (!attachment ||
609
607
  typeof attachment.filename !== 'string' ||
610
608
  !(attachment.content instanceof Uint8Array) ||
@@ -620,7 +618,8 @@ function validateProcessedAttachments(definition, attachments) {
620
618
  filenames.has(attachment.filename) ||
621
619
  !extensionType ||
622
620
  normalizeMimeType(extensionType) !== type ||
623
- !allowed.has(type) ||
621
+ attachment.filename !== createContactAttachmentFilename({ index }) ||
622
+ type !== 'image/jpeg' ||
624
623
  attachment.content.byteLength < 1 ||
625
624
  attachment.content.byteLength > policy.maxFileSizeBytes ||
626
625
  totalBytes > policy.maxTotalSizeBytes ||