@uniformdev/canvas-next-rsc 19.69.0 → 19.73.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 (156) hide show
  1. package/dist/UniformComposition-38e22896.d.ts +61 -0
  2. package/dist/component.d.mts +76 -0
  3. package/dist/component.d.ts +76 -0
  4. package/dist/component.js +218 -0
  5. package/dist/component.mjs +182 -0
  6. package/dist/config.d.mts +6 -0
  7. package/dist/config.d.ts +6 -1
  8. package/dist/config.js +56 -29
  9. package/dist/config.mjs +41 -0
  10. package/dist/handler.d.mts +12 -0
  11. package/dist/handler.d.ts +12 -2
  12. package/dist/handler.js +703 -2
  13. package/dist/handler.mjs +682 -0
  14. package/dist/{client/manifestClient.d.ts → index.d.mts} +100 -18
  15. package/dist/index.d.ts +243 -23
  16. package/dist/index.esm.js +977 -0
  17. package/dist/index.js +1013 -29
  18. package/dist/index.mjs +977 -0
  19. package/package.json +23 -15
  20. package/dist/actions/updateContext.d.ts +0 -2
  21. package/dist/actions/updateContext.js +0 -17
  22. package/dist/client/canvasClient.d.ts +0 -5
  23. package/dist/client/canvasClient.js +0 -53
  24. package/dist/client/manifestClient.js +0 -33
  25. package/dist/client/projectMapClient.d.ts +0 -5
  26. package/dist/client/projectMapClient.js +0 -17
  27. package/dist/client/routeClient.d.ts +0 -5
  28. package/dist/client/routeClient.js +0 -68
  29. package/dist/components/DefaultNotImplementedComponent.d.ts +0 -2
  30. package/dist/components/DefaultNotImplementedComponent.js +0 -45
  31. package/dist/components/GoogleTagManagerAnalytics.d.ts +0 -3
  32. package/dist/components/GoogleTagManagerAnalytics.js +0 -44
  33. package/dist/components/UniformComponent.d.ts +0 -25
  34. package/dist/components/UniformComponent.js +0 -14
  35. package/dist/components/UniformComposition.d.ts +0 -40
  36. package/dist/components/UniformComposition.js +0 -35
  37. package/dist/components/UniformContext.d.ts +0 -8
  38. package/dist/components/UniformContext.js +0 -19
  39. package/dist/components/UniformRichText.d.ts +0 -38
  40. package/dist/components/UniformRichText.js +0 -15
  41. package/dist/components/UniformRichTextNode.d.ts +0 -10
  42. package/dist/components/UniformRichTextNode.js +0 -49
  43. package/dist/components/UniformScript.d.ts +0 -3
  44. package/dist/components/UniformScript.js +0 -49
  45. package/dist/components/UniformSlot.d.ts +0 -40
  46. package/dist/components/UniformSlot.js +0 -38
  47. package/dist/components/UniformText.d.ts +0 -6
  48. package/dist/components/UniformText.js +0 -5
  49. package/dist/components/__tests__/evaluateComposition.spec.d.ts +0 -1
  50. package/dist/components/__tests__/evaluateComposition.spec.js +0 -80
  51. package/dist/components/convertComponentToProps.d.ts +0 -14
  52. package/dist/components/convertComponentToProps.js +0 -22
  53. package/dist/components/evaluateComposition.d.ts +0 -22
  54. package/dist/components/evaluateComposition.js +0 -183
  55. package/dist/components/getEnrichmentTags.d.ts +0 -3
  56. package/dist/components/getEnrichmentTags.js +0 -13
  57. package/dist/components/getUniformContext.d.ts +0 -6
  58. package/dist/components/getUniformContext.js +0 -17
  59. package/dist/components/nodes/HeadingRichTextNode.d.ts +0 -2
  60. package/dist/components/nodes/HeadingRichTextNode.js +0 -6
  61. package/dist/components/nodes/LinebreakRichTextNode.d.ts +0 -2
  62. package/dist/components/nodes/LinebreakRichTextNode.js +0 -4
  63. package/dist/components/nodes/LinkRichTextNode.d.ts +0 -2
  64. package/dist/components/nodes/LinkRichTextNode.js +0 -6
  65. package/dist/components/nodes/ListItemRichTextNode.d.ts +0 -2
  66. package/dist/components/nodes/ListItemRichTextNode.js +0 -5
  67. package/dist/components/nodes/ListRichTextNode.d.ts +0 -2
  68. package/dist/components/nodes/ListRichTextNode.js +0 -6
  69. package/dist/components/nodes/ParagraphRichTextNode.d.ts +0 -2
  70. package/dist/components/nodes/ParagraphRichTextNode.js +0 -6
  71. package/dist/components/nodes/TabRichTextNode.d.ts +0 -2
  72. package/dist/components/nodes/TabRichTextNode.js +0 -4
  73. package/dist/components/nodes/TextRichTextNode.d.ts +0 -2
  74. package/dist/components/nodes/TextRichTextNode.js +0 -9
  75. package/dist/components/renderComponent.d.ts +0 -15
  76. package/dist/components/renderComponent.js +0 -52
  77. package/dist/components/resolvePath.d.ts +0 -5
  78. package/dist/components/resolvePath.js +0 -34
  79. package/dist/components/retrieveRoute.d.ts +0 -141
  80. package/dist/components/retrieveRoute.js +0 -146
  81. package/dist/components/types.d.ts +0 -11
  82. package/dist/components/types.js +0 -1
  83. package/dist/config/helpers.d.ts +0 -17
  84. package/dist/config/helpers.js +0 -34
  85. package/dist/config/models.d.ts +0 -51
  86. package/dist/config/models.js +0 -1
  87. package/dist/cookie/index.d.ts +0 -12
  88. package/dist/cookie/index.js +0 -21
  89. package/dist/handler/createPreviewGETRouteHandler.d.ts +0 -1
  90. package/dist/handler/createPreviewGETRouteHandler.js +0 -43
  91. package/dist/handler/createPreviewPOSTRouteHandler.d.ts +0 -1
  92. package/dist/handler/createPreviewPOSTRouteHandler.js +0 -88
  93. package/dist/handler/createUniformRouteHandler.d.ts +0 -4
  94. package/dist/handler/createUniformRouteHandler.js +0 -10
  95. package/dist/handler/helpers.d.ts +0 -19
  96. package/dist/handler/helpers.js +0 -148
  97. package/dist/handler/messages/handleCompositionChanged.d.ts +0 -2
  98. package/dist/handler/messages/handleCompositionChanged.js +0 -9
  99. package/dist/handler/messages/handleCompositionDeleted.d.ts +0 -2
  100. package/dist/handler/messages/handleCompositionDeleted.js +0 -9
  101. package/dist/handler/messages/handleCompositionPublished.d.ts +0 -2
  102. package/dist/handler/messages/handleCompositionPublished.js +0 -9
  103. package/dist/handler/messages/handleManifestPublished.d.ts +0 -2
  104. package/dist/handler/messages/handleManifestPublished.js +0 -10
  105. package/dist/handler/messages/handleProjectMapNodeDelete.d.ts +0 -2
  106. package/dist/handler/messages/handleProjectMapNodeDelete.js +0 -21
  107. package/dist/handler/messages/handleProjectMapNodeInsert.d.ts +0 -2
  108. package/dist/handler/messages/handleProjectMapNodeInsert.js +0 -21
  109. package/dist/handler/messages/handleProjectMapNodeUpdate.d.ts +0 -2
  110. package/dist/handler/messages/handleProjectMapNodeUpdate.js +0 -22
  111. package/dist/handler/messages/handleRedirectDelete.d.ts +0 -2
  112. package/dist/handler/messages/handleRedirectDelete.js +0 -15
  113. package/dist/handler/messages/handleRedirectInsert.d.ts +0 -2
  114. package/dist/handler/messages/handleRedirectInsert.js +0 -15
  115. package/dist/handler/messages/handleRedirectUpdate.d.ts +0 -2
  116. package/dist/handler/messages/handleRedirectUpdate.js +0 -15
  117. package/dist/hooks/useForgetMe.d.ts +0 -4
  118. package/dist/hooks/useForgetMe.js +0 -10
  119. package/dist/hooks/useToggleConsent.d.ts +0 -7
  120. package/dist/hooks/useToggleConsent.js +0 -22
  121. package/dist/hooks/useUniformContext.d.ts +0 -1
  122. package/dist/hooks/useUniformContext.js +0 -3
  123. package/dist/models/index.d.ts +0 -30
  124. package/dist/models/index.js +0 -1
  125. package/dist/register/componentStore.d.ts +0 -1
  126. package/dist/register/componentStore.js +0 -2
  127. package/dist/register/componentStoreResolver.d.ts +0 -2
  128. package/dist/register/componentStoreResolver.js +0 -5
  129. package/dist/register/createComponentStore.d.ts +0 -12
  130. package/dist/register/createComponentStore.js +0 -13
  131. package/dist/register/createComponentStoreResolver.d.ts +0 -9
  132. package/dist/register/createComponentStoreResolver.js +0 -9
  133. package/dist/register/getTypeWithVariant.d.ts +0 -1
  134. package/dist/register/getTypeWithVariant.js +0 -1
  135. package/dist/register/registerUniformComponent.d.ts +0 -6
  136. package/dist/register/registerUniformComponent.js +0 -8
  137. package/dist/resolve/resolveChildren.d.ts +0 -10
  138. package/dist/resolve/resolveChildren.js +0 -20
  139. package/dist/score/index.d.ts +0 -3
  140. package/dist/score/index.js +0 -114
  141. package/dist/utils/__tests__/apply.spec.d.ts +0 -1
  142. package/dist/utils/__tests__/apply.spec.js +0 -358
  143. package/dist/utils/__tests__/diff.spec.d.ts +0 -1
  144. package/dist/utils/__tests__/diff.spec.js +0 -394
  145. package/dist/utils/apply.d.ts +0 -6
  146. package/dist/utils/apply.js +0 -124
  147. package/dist/utils/comp.d.ts +0 -16
  148. package/dist/utils/comp.js +0 -65
  149. package/dist/utils/diff.d.ts +0 -44
  150. package/dist/utils/diff.js +0 -144
  151. package/dist/utils/draft.d.ts +0 -12
  152. package/dist/utils/draft.js +0 -22
  153. package/dist/utils/tag.d.ts +0 -2
  154. package/dist/utils/tag.js +0 -7
  155. package/dist/utils/url.d.ts +0 -1
  156. package/dist/utils/url.js +0 -10
package/dist/handler.js CHANGED
@@ -1,2 +1,703 @@
1
- export { createPreviewGETRouteHandler } from './handler/createPreviewGETRouteHandler';
2
- export { createPreviewPOSTRouteHandler } from './handler/createPreviewPOSTRouteHandler';
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/handler.ts
21
+ var handler_exports = {};
22
+ __export(handler_exports, {
23
+ createPreviewGETRouteHandler: () => createPreviewGETRouteHandler,
24
+ createPreviewOPTIONSRouteHandler: () => createPreviewOPTIONSRouteHandler,
25
+ createPreviewPOSTRouteHandler: () => createPreviewPOSTRouteHandler
26
+ });
27
+ module.exports = __toCommonJS(handler_exports);
28
+
29
+ // src/handler/createPreviewGETRouteHandler.ts
30
+ var import_canvas4 = require("@uniformdev/canvas");
31
+ var import_headers2 = require("next/headers");
32
+ var import_navigation = require("next/navigation");
33
+
34
+ // src/utils/route.ts
35
+ var import_canvas3 = require("@uniformdev/canvas");
36
+ var import_canvas_next_rsc_shared2 = require("@uniformdev/canvas-next-rsc-shared");
37
+ var import_redirect = require("@uniformdev/redirect");
38
+
39
+ // src/config/helpers.ts
40
+ var import_canvas_next_rsc_shared = require("@uniformdev/canvas-next-rsc-shared");
41
+
42
+ // src/utils/draft.ts
43
+ var import_canvas = require("@uniformdev/canvas");
44
+ var import_headers = require("next/headers");
45
+ var isDraftModeEnabled = ({
46
+ searchParams
47
+ }) => {
48
+ if (isDevelopmentEnvironment()) {
49
+ return isIncontextEditingEnabled({ searchParams });
50
+ }
51
+ let draftModeEnabled = false;
52
+ try {
53
+ draftModeEnabled = (0, import_headers.draftMode)().isEnabled;
54
+ } catch (e) {
55
+ }
56
+ return draftModeEnabled || isIncontextEditingEnabled({ searchParams });
57
+ };
58
+ var isIncontextEditingEnabled = ({
59
+ searchParams
60
+ }) => {
61
+ const containsKey = typeof (searchParams == null ? void 0 : searchParams[import_canvas.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM]) !== "undefined";
62
+ return containsKey;
63
+ };
64
+ var isOnVercelPreviewEnvironment = () => {
65
+ return process.env.VERCEL_ENV === "preview";
66
+ };
67
+ var isDevelopmentEnvironment = () => {
68
+ return process.env.NODE_ENV === "development" || process.env.NODE_ENV === "test";
69
+ };
70
+
71
+ // src/config/helpers.ts
72
+ var shouldCacheBeDisabled = (options) => {
73
+ if (isDraftModeEnabled(options)) {
74
+ return { disabled: true, reason: "DRAFT" };
75
+ }
76
+ if (isIncontextEditingEnabled(options)) {
77
+ return { disabled: true, reason: "INCONTEXT" };
78
+ }
79
+ if (isDevelopmentEnvironment()) {
80
+ return { disabled: true, reason: "DEV" };
81
+ }
82
+ return {
83
+ disabled: false,
84
+ reason: void 0
85
+ };
86
+ };
87
+ var getCanvasCacheStrategy = (options) => {
88
+ const { disabled, reason } = shouldCacheBeDisabled(options);
89
+ const config = (0, import_canvas_next_rsc_shared.getServerConfig)();
90
+ if (disabled) {
91
+ if (reason === "DEV" && config.canvasCache) {
92
+ console.warn("Canvas cache (disabled) has been overridden by canvasCache config.");
93
+ return config.canvasCache;
94
+ }
95
+ return {
96
+ type: "no-cache"
97
+ };
98
+ }
99
+ if (config.canvasCache) {
100
+ return config.canvasCache;
101
+ }
102
+ return {
103
+ type: "force-cache"
104
+ };
105
+ };
106
+
107
+ // src/env/index.ts
108
+ var env = {
109
+ getProjectId: () => {
110
+ return process.env.UNIFORM_PROJECT_ID;
111
+ },
112
+ getApiKey: () => {
113
+ return process.env.UNIFORM_API_KEY;
114
+ },
115
+ getApiHost: () => {
116
+ return process.env.UNIFORM_API_HOST || process.env.UNIFORM_CLI_BASE_URL;
117
+ },
118
+ getEdgeApiHost: () => {
119
+ return process.env.UNIFORM_EDGE_API_HOST || process.env.UNIFORM_CLI_BASE_EDGE_URL;
120
+ }
121
+ };
122
+
123
+ // src/utils/tag.ts
124
+ var buildPathTag = (path) => {
125
+ const actualPath = path.startsWith("/") ? path : `/${path}`;
126
+ return `path:${actualPath}`.toLowerCase();
127
+ };
128
+ var buildCompositionTag = (compositionId) => {
129
+ return `composition:${compositionId}`.toLowerCase();
130
+ };
131
+
132
+ // src/clients/shared.ts
133
+ var determineFetchCacheOptions = (mode) => {
134
+ let cache = void 0;
135
+ let revalidate = void 0;
136
+ if (mode.type === "revalidate") {
137
+ cache = void 0;
138
+ revalidate = mode.interval;
139
+ } else {
140
+ cache = mode.type;
141
+ }
142
+ return {
143
+ cache,
144
+ revalidate
145
+ };
146
+ };
147
+
148
+ // src/clients/routeClient.ts
149
+ var import_canvas2 = require("@uniformdev/canvas");
150
+ var getRouteClient = (options) => {
151
+ const client = new import_canvas2.RouteClient({
152
+ projectId: env.getProjectId(),
153
+ apiKey: env.getApiKey(),
154
+ edgeApiHost: env.getEdgeApiHost(),
155
+ fetch: (req, init) => {
156
+ let requestedUrl;
157
+ if (typeof req === "string") {
158
+ requestedUrl = new URL(req);
159
+ } else if (req instanceof URL) {
160
+ requestedUrl = req;
161
+ } else {
162
+ requestedUrl = new URL(req.url);
163
+ }
164
+ const tags = [];
165
+ if (requestedUrl) {
166
+ const pathKey = "path";
167
+ const path = requestedUrl.searchParams.get(pathKey);
168
+ if (path) {
169
+ const pieces = path.split("/");
170
+ for (let i = 0; i < pieces.length; i++) {
171
+ const segmentPieces = pieces.slice(0, i + 1);
172
+ const segment = segmentPieces.join("/");
173
+ tags.push(buildPathTag(segment));
174
+ }
175
+ }
176
+ }
177
+ const { cache, revalidate } = determineFetchCacheOptions(options.cache);
178
+ return fetch(req, {
179
+ ...init,
180
+ headers: {
181
+ ...init == null ? void 0 : init.headers,
182
+ "x-bypass-cache": "true"
183
+ },
184
+ cache,
185
+ next: {
186
+ revalidate,
187
+ tags: tags.length ? tags : void 0
188
+ }
189
+ });
190
+ }
191
+ });
192
+ return client;
193
+ };
194
+ var getDefaultRouteClient = ({ searchParams }) => {
195
+ return getRouteClient({
196
+ cache: getCanvasCacheStrategy({
197
+ searchParams
198
+ })
199
+ });
200
+ };
201
+
202
+ // src/utils/route.ts
203
+ var retrieveRouteByPath = async ({
204
+ path,
205
+ state,
206
+ searchParams
207
+ }) => {
208
+ var _a;
209
+ const client = getDefaultRouteClient({
210
+ searchParams
211
+ });
212
+ return await client.getRoute({
213
+ path,
214
+ state,
215
+ withComponentIDs: true,
216
+ withContentSourceMap: isOnVercelPreviewEnvironment() && ((_a = (0, import_canvas_next_rsc_shared2.getServerConfig)().experimental) == null ? void 0 : _a.vercelVisualEditing)
217
+ });
218
+ };
219
+ var resolveRedirectHref = (resolveResult, path) => {
220
+ let href;
221
+ if (resolveResult.redirect.targetProjectMapNodeId) {
222
+ const requestUrl = `${(0, import_canvas_next_rsc_shared2.getBaseUrl)()}${path}`;
223
+ const expandedUrl = (0, import_redirect.getTargetVariableExpandedUrl)(requestUrl, resolveResult.redirect);
224
+ const url = new URL(expandedUrl);
225
+ href = url.pathname;
226
+ } else {
227
+ href = resolveResult.redirect.targetUrl;
228
+ }
229
+ return href;
230
+ };
231
+
232
+ // src/handler/createPreviewGETRouteHandler.ts
233
+ var getQueryParam = (req, paramName) => {
234
+ const value = req.nextUrl.searchParams.get(paramName);
235
+ if (typeof value === "undefined") {
236
+ return void 0;
237
+ }
238
+ return Array.isArray(value) ? value[0] : value;
239
+ };
240
+ var createPreviewGETRouteHandler = (options) => {
241
+ return async (request) => {
242
+ const isConfigCheck = getQueryParam(request, "is_config_check") === "true";
243
+ if (isConfigCheck) {
244
+ return Response.json(
245
+ {
246
+ hasPlayground: Boolean(options == null ? void 0 : options.playgroundPath),
247
+ isUsingCustomFullPathResolver: false
248
+ },
249
+ {
250
+ headers: {
251
+ "Access-Control-Allow-Origin": process.env.UNIFORM_CLI_BASE_URL || "http://uniform.app"
252
+ }
253
+ }
254
+ );
255
+ }
256
+ if (request.headers.get("sec-fetch-mode") === "no-cors") {
257
+ return new Response(null, { status: 204 });
258
+ }
259
+ if (!process.env.UNIFORM_PREVIEW_SECRET) {
260
+ return new Response("No preview secret is configured", { status: 401 });
261
+ }
262
+ const { searchParams } = new URL(request.url);
263
+ const secret = searchParams.get("secret");
264
+ const path = searchParams.get("path");
265
+ const isPlayground = searchParams.get(import_canvas4.IN_CONTEXT_EDITOR_PLAYGROUND_QUERY_STRING_PARAM) === "true";
266
+ const id = searchParams.get("id");
267
+ if (secret !== process.env.UNIFORM_PREVIEW_SECRET) {
268
+ return new Response("Invalid preview secret", { status: 401 });
269
+ }
270
+ if (!isPlayground) {
271
+ if (!path) {
272
+ return new Response("Path not provided", { status: 401 });
273
+ }
274
+ const resolveResult = await retrieveRouteByPath({
275
+ path,
276
+ state: import_canvas4.CANVAS_DRAFT_STATE,
277
+ searchParams: {
278
+ // about to be in draft mode so pretend for now.
279
+ [import_canvas4.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM]: "true"
280
+ }
281
+ });
282
+ (0, import_headers2.draftMode)().enable();
283
+ if (resolveResult.type === "redirect") {
284
+ const href = resolveRedirectHref(resolveResult, path);
285
+ if (resolveResult.redirect.targetProjectMapNodeId) {
286
+ (0, import_navigation.redirect)(`${href}?${import_canvas4.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM}=true`);
287
+ } else {
288
+ (0, import_navigation.redirect)(href);
289
+ }
290
+ }
291
+ if (resolveResult.type === "notFound") {
292
+ return new Response("Invalid path", { status: 401 });
293
+ }
294
+ (0, import_navigation.redirect)(`${path}?${import_canvas4.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM}=true`);
295
+ } else {
296
+ if (!(options == null ? void 0 : options.playgroundPath)) {
297
+ return new Response("No playground path is configured", { status: 401 });
298
+ }
299
+ (0, import_headers2.draftMode)().enable();
300
+ (0, import_navigation.redirect)(`${options.playgroundPath}?id=${id}&${import_canvas4.IN_CONTEXT_EDITOR_QUERY_STRING_PARAM}=true`);
301
+ }
302
+ };
303
+ };
304
+
305
+ // src/handler/createPreviewOPTIONSRouteHandler.ts
306
+ var createPreviewOPTIONSRouteHandler = () => {
307
+ return async () => {
308
+ return new Response(null, {
309
+ headers: {
310
+ "Access-Control-Allow-Origin": process.env.UNIFORM_CLI_BASE_URL || "http://uniform.app",
311
+ "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
312
+ "Access-Control-Allow-Headers": "*"
313
+ }
314
+ });
315
+ };
316
+ };
317
+
318
+ // src/handler/createPreviewPOSTRouteHandler.ts
319
+ var import_cache = require("next/cache");
320
+
321
+ // src/handler/helpers.ts
322
+ var import_canvas_next_rsc_shared3 = require("@uniformdev/canvas-next-rsc-shared");
323
+ var import_edge_config = require("@vercel/edge-config");
324
+ var import_svix = require("svix");
325
+
326
+ // src/clients/projectMapClient.ts
327
+ var import_project_map = require("@uniformdev/project-map");
328
+ var getProjectMapClient = (options) => {
329
+ const manifestClient = new import_project_map.ProjectMapClient({
330
+ apiHost: env.getApiHost(),
331
+ apiKey: env.getApiKey(),
332
+ projectId: env.getProjectId(),
333
+ fetch: (req, init) => {
334
+ const { cache, revalidate } = determineFetchCacheOptions(options.cache);
335
+ return fetch(req, {
336
+ ...init,
337
+ headers: {
338
+ ...init == null ? void 0 : init.headers,
339
+ "x-bypass-cache": "true"
340
+ },
341
+ cache,
342
+ next: {
343
+ revalidate
344
+ }
345
+ });
346
+ }
347
+ });
348
+ return manifestClient;
349
+ };
350
+
351
+ // src/handler/helpers.ts
352
+ var isSvixMessage = async (request) => {
353
+ const requiredHeaders = ["svix-id", "svix-timestamp", "svix-signature"];
354
+ const hasAllRequiredHeaders = requiredHeaders.every((header) => request.headers.has(header));
355
+ if (!hasAllRequiredHeaders) {
356
+ return {
357
+ looksLikeMessage: false,
358
+ validation: false
359
+ };
360
+ }
361
+ if (typeof process.env.UNIFORM_WEBHOOK_SECRET !== "undefined") {
362
+ const payload = await request.clone().text();
363
+ const headers = Object.fromEntries(request.headers.entries());
364
+ const wh = new import_svix.Webhook(process.env.UNIFORM_WEBHOOK_SECRET);
365
+ try {
366
+ wh.verify(payload, headers);
367
+ } catch (err) {
368
+ return {
369
+ looksLikeMessage: true,
370
+ validation: false
371
+ };
372
+ }
373
+ }
374
+ return {
375
+ looksLikeMessage: true,
376
+ validation: true
377
+ };
378
+ };
379
+ var processCompositionChange = async (compositionId) => {
380
+ const projectMapClient = getProjectMapClient({
381
+ cache: {
382
+ type: "no-cache"
383
+ }
384
+ });
385
+ const { nodes } = await projectMapClient.getNodes({
386
+ compositionId
387
+ });
388
+ const tags = [];
389
+ if (nodes) {
390
+ for (let i = 0; i < nodes.length; i++) {
391
+ const node = nodes[i];
392
+ await processEdgeConfigChange({
393
+ source_url: node.path
394
+ });
395
+ tags.push(...buildProjectMapNodePaths(node.path));
396
+ }
397
+ }
398
+ tags.push(buildCompositionTag(compositionId));
399
+ return {
400
+ tags
401
+ };
402
+ };
403
+ var buildProjectMapNodePaths = (path) => {
404
+ const tags = [];
405
+ const isDynamic = path.includes(":");
406
+ if (!isDynamic) {
407
+ tags.push(buildPathTag(path));
408
+ } else {
409
+ const pieces = path.split("/");
410
+ const invalidatePieces = [];
411
+ for (let j = 0; j < pieces.length; j++) {
412
+ const piece = pieces[j];
413
+ if (piece.startsWith(":")) {
414
+ break;
415
+ }
416
+ invalidatePieces.push(piece);
417
+ }
418
+ const toInvalidate = invalidatePieces.join("/");
419
+ tags.push(buildPathTag(toInvalidate));
420
+ }
421
+ return tags;
422
+ };
423
+ var getPathName = (url) => {
424
+ try {
425
+ const { pathname } = new URL(url);
426
+ return pathname;
427
+ } catch (e) {
428
+ return url;
429
+ }
430
+ };
431
+ var processRedirectChange = async (sourceUrl) => {
432
+ const tags = [];
433
+ const pathName = getPathName(sourceUrl);
434
+ tags.push(buildPathTag(pathName));
435
+ return {
436
+ tags
437
+ };
438
+ };
439
+ var processEdgeConfigChange = async ({ source_url }) => {
440
+ var _a, _b;
441
+ if (!process.env.UNIFORM_VERCEL_EDGE_CONFIG_TOKEN) {
442
+ console.warn("UNIFORM_VERCEL_EDGE_CONFIG_TOKEN is not set, skipping edge redirect upsert");
443
+ return;
444
+ }
445
+ const config = (0, import_canvas_next_rsc_shared3.getServerConfig)();
446
+ const routeClient = getRouteClient({
447
+ cache: {
448
+ type: "no-cache"
449
+ }
450
+ });
451
+ const route = await routeClient.getRoute({
452
+ path: source_url
453
+ });
454
+ let valueToStore = void 0;
455
+ const shouldSaveRedirect = route.type === "redirect" && ((_a = config.experimental) == null ? void 0 : _a.edgeRedirects);
456
+ const shouldSaveComposition = route.type === "composition" && ((_b = config.experimental) == null ? void 0 : _b.edgeCompositions);
457
+ if (shouldSaveRedirect || shouldSaveComposition) {
458
+ valueToStore = route;
459
+ }
460
+ const sourcePath = getPathName(source_url);
461
+ const soucrcePathKey = buildPathTag(sourcePath);
462
+ const { id } = (0, import_edge_config.parseConnectionString)(process.env.EDGE_CONFIG) || {};
463
+ if (!id) {
464
+ console.warn("EDGE_CONFIG is not set or not a connection string, skipping edge redirect upsert");
465
+ return;
466
+ }
467
+ const url = new URL(`https://api.vercel.com/v1/edge-config/${id}/items`);
468
+ if (process.env.UNIFORM_VERCEL_EDGE_CONFIG_TEAM_ID) {
469
+ url.searchParams.set("teamId", process.env.UNIFORM_VERCEL_EDGE_CONFIG_TEAM_ID);
470
+ }
471
+ const response = await fetch(url.toString(), {
472
+ method: "PATCH",
473
+ headers: {
474
+ "Content-Type": "application/json",
475
+ Authorization: `Bearer ${process.env.UNIFORM_VERCEL_EDGE_CONFIG_TOKEN}`
476
+ },
477
+ body: JSON.stringify({
478
+ items: [
479
+ {
480
+ operation: valueToStore ? "upsert" : "delete",
481
+ key: soucrcePathKey.replace(/\W+/g, ""),
482
+ value: valueToStore != null ? valueToStore : null
483
+ }
484
+ ]
485
+ })
486
+ });
487
+ if (!response.ok) {
488
+ console.warn(`Failed to upsert edge redirect for ${source_url}`, await response.text());
489
+ }
490
+ };
491
+
492
+ // src/handler/messages/handleCompositionChanged.ts
493
+ var import_webhooks = require("@uniformdev/webhooks");
494
+ var handleCompositionChanged = async (body) => {
495
+ const parsed = import_webhooks.CompositionChangedDefinition.schema.safeParse(body);
496
+ if (!parsed.success) {
497
+ return void 0;
498
+ }
499
+ return processCompositionChange(parsed.data.id);
500
+ };
501
+
502
+ // src/handler/messages/handleCompositionDeleted.ts
503
+ var import_webhooks2 = require("@uniformdev/webhooks");
504
+ var handleCompositionDeleted = async (body) => {
505
+ const parsed = import_webhooks2.CompositionDeletedDefinition.schema.safeParse(body);
506
+ if (!parsed.success) {
507
+ return void 0;
508
+ }
509
+ return processCompositionChange(parsed.data.id);
510
+ };
511
+
512
+ // src/handler/messages/handleCompositionPublished.ts
513
+ var import_webhooks3 = require("@uniformdev/webhooks");
514
+ var handleCompositionPublished = async (body) => {
515
+ const parsed = import_webhooks3.CompositionPublishedDefinition.schema.safeParse(body);
516
+ if (!parsed.success) {
517
+ return void 0;
518
+ }
519
+ return processCompositionChange(parsed.data.id);
520
+ };
521
+
522
+ // src/handler/messages/handleManifestPublished.ts
523
+ var import_webhooks4 = require("@uniformdev/webhooks");
524
+ var handleManifestPublished = async (body) => {
525
+ const parsed = import_webhooks4.ManifestPublishedDefinition.schema.safeParse(body);
526
+ if (!parsed.success) {
527
+ return void 0;
528
+ }
529
+ return {
530
+ tags: ["manifest"]
531
+ };
532
+ };
533
+
534
+ // src/handler/messages/handleProjectMapNodeDelete.ts
535
+ var import_canvas_next_rsc_shared4 = require("@uniformdev/canvas-next-rsc-shared");
536
+ var import_webhooks5 = require("@uniformdev/webhooks");
537
+ var handleProjectMapNodeDelete = async (body) => {
538
+ var _a;
539
+ const parsed = import_webhooks5.ProjectMapNodeDeleteDefinition.schema.safeParse(body);
540
+ if (!parsed.success) {
541
+ return void 0;
542
+ }
543
+ const tags = [];
544
+ tags.push(...buildProjectMapNodePaths(parsed.data.path));
545
+ const config = (0, import_canvas_next_rsc_shared4.getServerConfig)();
546
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeCompositions) {
547
+ await processEdgeConfigChange({
548
+ source_url: parsed.data.path
549
+ });
550
+ }
551
+ return {
552
+ tags
553
+ };
554
+ };
555
+
556
+ // src/handler/messages/handleProjectMapNodeInsert.ts
557
+ var import_canvas_next_rsc_shared5 = require("@uniformdev/canvas-next-rsc-shared");
558
+ var import_webhooks6 = require("@uniformdev/webhooks");
559
+ var handleProjectMapNodeInsert = async (body) => {
560
+ var _a;
561
+ const parsed = import_webhooks6.ProjectMapNodeInsertDefinition.schema.safeParse(body);
562
+ if (!parsed.success) {
563
+ return void 0;
564
+ }
565
+ const tags = [];
566
+ tags.push(...buildProjectMapNodePaths(parsed.data.path));
567
+ const config = (0, import_canvas_next_rsc_shared5.getServerConfig)();
568
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeCompositions) {
569
+ await processEdgeConfigChange({
570
+ source_url: parsed.data.path
571
+ });
572
+ }
573
+ return {
574
+ tags
575
+ };
576
+ };
577
+
578
+ // src/handler/messages/handleProjectMapNodeUpdate.ts
579
+ var import_canvas_next_rsc_shared6 = require("@uniformdev/canvas-next-rsc-shared");
580
+ var import_webhooks7 = require("@uniformdev/webhooks");
581
+ var handleProjectMapNodeUpdate = async (body) => {
582
+ var _a;
583
+ const parsed = import_webhooks7.ProjectMapNodeUpdateDefinition.schema.safeParse(body);
584
+ if (!parsed.success) {
585
+ return void 0;
586
+ }
587
+ const tags = [];
588
+ tags.push(...buildProjectMapNodePaths(parsed.data.path));
589
+ tags.push(...buildProjectMapNodePaths(parsed.data.previous_path));
590
+ const config = (0, import_canvas_next_rsc_shared6.getServerConfig)();
591
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeCompositions) {
592
+ await processEdgeConfigChange({
593
+ source_url: parsed.data.path
594
+ });
595
+ }
596
+ return {
597
+ tags
598
+ };
599
+ };
600
+
601
+ // src/handler/messages/handleRedirectDelete.ts
602
+ var import_canvas_next_rsc_shared7 = require("@uniformdev/canvas-next-rsc-shared");
603
+ var import_webhooks8 = require("@uniformdev/webhooks");
604
+ var handleRedirectDelete = async (body) => {
605
+ var _a;
606
+ const parsed = import_webhooks8.RedirectDeleteDefinition.schema.safeParse(body);
607
+ if (!parsed.success) {
608
+ return void 0;
609
+ }
610
+ const config = (0, import_canvas_next_rsc_shared7.getServerConfig)();
611
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeRedirects) {
612
+ await processEdgeConfigChange(parsed.data);
613
+ }
614
+ return processRedirectChange(parsed.data.source_url);
615
+ };
616
+
617
+ // src/handler/messages/handleRedirectInsert.ts
618
+ var import_canvas_next_rsc_shared8 = require("@uniformdev/canvas-next-rsc-shared");
619
+ var import_webhooks9 = require("@uniformdev/webhooks");
620
+ var handleRedirectInsert = async (body) => {
621
+ var _a;
622
+ const parsed = import_webhooks9.RedirectInsertDefinition.schema.safeParse(body);
623
+ if (!parsed.success) {
624
+ return void 0;
625
+ }
626
+ const config = (0, import_canvas_next_rsc_shared8.getServerConfig)();
627
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeRedirects) {
628
+ await processEdgeConfigChange(parsed.data);
629
+ }
630
+ return processRedirectChange(parsed.data.source_url);
631
+ };
632
+
633
+ // src/handler/messages/handleRedirectUpdate.ts
634
+ var import_canvas_next_rsc_shared9 = require("@uniformdev/canvas-next-rsc-shared");
635
+ var import_webhooks10 = require("@uniformdev/webhooks");
636
+ var handleRedirectUpdate = async (body) => {
637
+ var _a;
638
+ const parsed = import_webhooks10.RedirectUpdateDefinition.schema.safeParse(body);
639
+ if (!parsed.success) {
640
+ return void 0;
641
+ }
642
+ const config = (0, import_canvas_next_rsc_shared9.getServerConfig)();
643
+ if ((_a = config.experimental) == null ? void 0 : _a.edgeRedirects) {
644
+ await processEdgeConfigChange(parsed.data);
645
+ }
646
+ return processRedirectChange(parsed.data.source_url);
647
+ };
648
+
649
+ // src/handler/createPreviewPOSTRouteHandler.ts
650
+ var createPreviewPOSTRouteHandler = () => {
651
+ return async (request) => {
652
+ const { looksLikeMessage, validation } = await isSvixMessage(request);
653
+ if (looksLikeMessage) {
654
+ if (!validation) {
655
+ return new Response("This looks like a webhook request but the validation failed.", { status: 401 });
656
+ }
657
+ return handleSvixMessage(request);
658
+ }
659
+ return new Response("This is not a webhook request.", { status: 401 });
660
+ };
661
+ };
662
+ var handleSvixMessage = async (request) => {
663
+ const handlers = [
664
+ handleProjectMapNodeUpdate,
665
+ handleProjectMapNodeInsert,
666
+ handleProjectMapNodeDelete,
667
+ handleCompositionDeleted,
668
+ handleCompositionChanged,
669
+ handleCompositionPublished,
670
+ handleRedirectInsert,
671
+ handleRedirectUpdate,
672
+ handleRedirectDelete,
673
+ handleManifestPublished
674
+ ];
675
+ let tags = void 0;
676
+ const jsonBody = await request.json();
677
+ for (let i = 0; i < handlers.length; i++) {
678
+ const handler = handlers[i];
679
+ const result = await handler(jsonBody);
680
+ if (result) {
681
+ tags = result.tags;
682
+ break;
683
+ }
684
+ }
685
+ if (tags == null ? void 0 : tags.length) {
686
+ for (let i = 0; i < tags.length; i++) {
687
+ const tag = tags[i];
688
+ (0, import_cache.revalidateTag)(tag);
689
+ }
690
+ }
691
+ return new Response(
692
+ JSON.stringify({
693
+ handled: typeof tags !== "undefined",
694
+ tags
695
+ })
696
+ );
697
+ };
698
+ // Annotate the CommonJS export names for ESM import in node:
699
+ 0 && (module.exports = {
700
+ createPreviewGETRouteHandler,
701
+ createPreviewOPTIONSRouteHandler,
702
+ createPreviewPOSTRouteHandler
703
+ });