jamdesk 1.1.201 → 1.1.203

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 (29) hide show
  1. package/dist/__tests__/unit/migrate-risky-expression-warning.test.d.ts +2 -0
  2. package/dist/__tests__/unit/migrate-risky-expression-warning.test.d.ts.map +1 -0
  3. package/dist/__tests__/unit/migrate-risky-expression-warning.test.js +47 -0
  4. package/dist/__tests__/unit/migrate-risky-expression-warning.test.js.map +1 -0
  5. package/dist/commands/migrate/convert-mdx.d.ts.map +1 -1
  6. package/dist/commands/migrate/convert-mdx.js +5 -1
  7. package/dist/commands/migrate/convert-mdx.js.map +1 -1
  8. package/dist/commands/validate.d.ts.map +1 -1
  9. package/dist/commands/validate.js +7 -1
  10. package/dist/commands/validate.js.map +1 -1
  11. package/dist/lib/risky-expression-scanner.d.ts.map +1 -1
  12. package/dist/lib/risky-expression-scanner.js +53 -0
  13. package/dist/lib/risky-expression-scanner.js.map +1 -1
  14. package/dist/lib/validate-risky-expressions.d.ts +6 -0
  15. package/dist/lib/validate-risky-expressions.d.ts.map +1 -1
  16. package/dist/lib/validate-risky-expressions.js +5 -1
  17. package/dist/lib/validate-risky-expressions.js.map +1 -1
  18. package/package.json +1 -1
  19. package/vendored/app/globals.css +57 -0
  20. package/vendored/components/theme/ThemeToggle.tsx +4 -1
  21. package/vendored/lib/mdx-inline-components.ts +4 -0
  22. package/vendored/lib/preprocess-mdx.ts +19 -1
  23. package/vendored/lib/render-doc-page.tsx +24 -3
  24. package/vendored/lib/risky-expression-scanner.ts +60 -0
  25. package/vendored/lib/snippet-compiler-isr.ts +11 -1
  26. package/vendored/lib/snippet-loader-isr.ts +95 -2
  27. package/vendored/lib/strip-event-handlers.ts +250 -0
  28. package/vendored/lib/user-utility-css.ts +250 -0
  29. package/vendored/workspace-package-lock.json +49 -49
@@ -0,0 +1,250 @@
1
+ import { stripFencedBlocks } from './preprocess-mdx';
2
+ import { logger } from '../shared/logger';
3
+
4
+ /**
5
+ * user-utility-css — generates CSS at render time for the Tailwind
6
+ * ARBITRARY-VALUE classes an author writes in their own MDX.
7
+ *
8
+ * WHY this is needed, and why only arbitrary values:
9
+ * Tailwind generates CSS for the class names it can see when the ISR app is
10
+ * BUILT. Customer MDX lives in R2 and is rendered long afterwards, so Tailwind
11
+ * never sees it. Standard utilities survive that gap by luck — `px-4`,
12
+ * `rounded-md`, `text-black` and friends are already in the bundle because a
13
+ * platform component happens to use them, and every standard class in the
14
+ * production customer page that prompted this was in fact present. Arbitrary
15
+ * values can NEVER survive it: `bg-[#ED8200]` has an infinite value space, so
16
+ * nothing can pre-generate it. That page rendered a `<button>` with padding and
17
+ * rounded corners and no background — it read as plain text.
18
+ *
19
+ * So this deliberately handles arbitrary values ONLY. That is not a shortcut:
20
+ * the utilities-only compiler entry used here provably CANNOT emit theme-backed
21
+ * utilities (`px-4` needs `--spacing`, `text-red-500` needs the color palette),
22
+ * and feeding it those candidates would burn work to produce nothing. Closing
23
+ * the standard-utility half is a different job — a build-time safelist — and is
24
+ * not needed while the bundle already covers them.
25
+ *
26
+ * WHY the output is safe to inject:
27
+ * Tailwind wraps its own output in `@layer utilities`, so a generated rule lands
28
+ * in exactly the layer it would have occupied had the build seen it. That
29
+ * matters here specifically: `app/globals.css` imports `themes/base.css`
30
+ * UNLAYERED, and unlayered rules beat layered ones regardless of specificity
31
+ * (see `components/mdx/markdown-classes.ts`). Emitting these rules unlayered
32
+ * would let an author's class silently outrank theme CSS. It does not.
33
+ */
34
+
35
+ /**
36
+ * The whole stylesheet this compiles. Deliberately a literal with no `@import`:
37
+ * the compiler then never touches the filesystem, so nothing depends on
38
+ * Next.js tracing `node_modules/tailwindcss/*.css` into the serverless bundle
39
+ * (it traces JS imports, and a runtime `fs.readFile` is invisible to it — this
40
+ * would have failed in production and worked locally).
41
+ *
42
+ * The `@layer utilities` wrapper is ours rather than Tailwind's, and it is
43
+ * load-bearing — see the note on cascade layers in the file header.
44
+ *
45
+ * The `@theme` block declares ONLY breakpoints. Without it a responsive
46
+ * arbitrary value (`md:bg-[#ED8200]`) compiles to nothing and renders unstyled —
47
+ * failing exactly as silently as the bug this file exists to fix, since the
48
+ * variant needs `--breakpoint-*` to build its media query. Verified that adding
49
+ * it leaks no `:root` custom properties and no preflight into the output.
50
+ *
51
+ * These are Tailwind's defaults, duplicated here because the compiler gets no
52
+ * config. `tailwind.config.ts` does not override `screens`, and a test pins
53
+ * that — if it ever does, these must change with it.
54
+ *
55
+ * `@custom-variant dark` is the same problem, and it bites HARDER than the
56
+ * breakpoints did. `tailwind.config.ts` sets `darkMode: 'class'`, but the
57
+ * runtime compiler gets no config and so falls back to Tailwind's default
58
+ * `@media (prefers-color-scheme: dark)`. That does not merely fail to apply —
59
+ * it applies at the WRONG TIME: on the reader's OS preference rather than the
60
+ * site's theme toggle, so `dark:bg-[#0b0b0b]` would paint a dark background
61
+ * under light-theme text. Unlike every other gap in this file, that is worse
62
+ * than generating nothing. The selector below is byte-identical to what the
63
+ * build-time bundle emits (`dark\:hidden:is(.dark *)`), and a test pins the
64
+ * `darkMode` setting it mirrors.
65
+ *
66
+ * Nothing else from the theme is pulled in, which is why only arbitrary values
67
+ * can be generated.
68
+ */
69
+ const UTILITIES_ENTRY = [
70
+ '@custom-variant dark (&:is(.dark *));',
71
+ '@theme {',
72
+ ' --breakpoint-sm: 40rem;',
73
+ ' --breakpoint-md: 48rem;',
74
+ ' --breakpoint-lg: 64rem;',
75
+ ' --breakpoint-xl: 80rem;',
76
+ ' --breakpoint-2xl: 96rem;',
77
+ '}',
78
+ '@layer utilities { @tailwind utilities; }',
79
+ ].join('\n');
80
+
81
+ /**
82
+ * Class attributes in author MDX/JSX. Covers `class="…"`, `className="…"`,
83
+ * `className='…'` and `className={"…"}` / `{'…'}` / {`…`}. A className built
84
+ * from an expression is out of reach and is left alone — an author writing
85
+ * computed classes is already outside what a docs page can round-trip.
86
+ *
87
+ * Values deliberately allow newlines, because a formatted JSX `className`
88
+ * legitimately wraps across lines. The cost is that one unbalanced `class="` in
89
+ * prose would swallow everything up to the next quote anywhere in the document.
90
+ * That is bounded by truncating the captured VALUE (see MAX_ATTR_VALUE_LENGTH)
91
+ * rather than by bounding the regex: a bounded quantifier makes an over-long
92
+ * attribute fail to match AT ALL, so a page with a very long class list would
93
+ * silently get no styling instead of most of it.
94
+ */
95
+ const CLASS_ATTR =
96
+ /(?<![-\w])class(?:Name)?\s*=\s*(?:"([^"]*)"|'([^']*)'|\{\s*[`'"]([^`'"]*)[`'"]\s*\})/g;
97
+
98
+ /** Caps: a page far past these is pathological, not authored. */
99
+ export const MAX_UTILITY_CANDIDATES = 500;
100
+ const MAX_CANDIDATE_LENGTH = 120;
101
+ /**
102
+ * How much of one class attribute's value is scanned. Bounds a runaway match
103
+ * from an unbalanced quote while still letting a long-but-real class list
104
+ * contribute its leading classes — see the note on CLASS_ATTR.
105
+ */
106
+ const MAX_ATTR_VALUE_LENGTH = 2000;
107
+
108
+ /**
109
+ * A candidate must contain `[` to be worth compiling (see the file header), and
110
+ * must not carry characters that could break out of the `<style>` element it is
111
+ * injected into. Tailwind escapes its selectors and would reject these anyway,
112
+ * but rejecting them here means the guarantee does not depend on that.
113
+ */
114
+ function isCompilableCandidate(token: string): boolean {
115
+ if (token.length > MAX_CANDIDATE_LENGTH) return false;
116
+ if (!token.includes('[')) return false;
117
+ return !/[<>"'`\s]/.test(token);
118
+ }
119
+
120
+ /**
121
+ * Pull arbitrary-value Tailwind candidates out of raw author source.
122
+ * Returns them sorted and de-duplicated so the cache key is stable.
123
+ */
124
+ export function extractUtilityCandidates(source: string): string[] {
125
+ if (!source) return [];
126
+ const found = new Set<string>();
127
+
128
+ // A ```html fence demonstrating `class="bg-[#fff]"` is documentation, not
129
+ // markup to style. Uses the same strict fence regex the snippet-import
130
+ // scanner uses, so the two cannot disagree about what a code block is.
131
+ const scannable = stripFencedBlocks(source);
132
+
133
+ for (const match of scannable.matchAll(CLASS_ATTR)) {
134
+ const value = match[1] ?? match[2] ?? match[3];
135
+ if (!value) continue;
136
+ for (const token of value.slice(0, MAX_ATTR_VALUE_LENGTH).split(/\s+/)) {
137
+ if (isCompilableCandidate(token)) found.add(token);
138
+ if (found.size >= MAX_UTILITY_CANDIDATES) break;
139
+ }
140
+ if (found.size >= MAX_UTILITY_CANDIDATES) break;
141
+ }
142
+
143
+ return [...found].sort();
144
+ }
145
+
146
+ /**
147
+ * The entry above has no `@import`, `@plugin` or `@config`, so neither of the
148
+ * loaders Tailwind accepts is reachable. Both get this one, which throws rather
149
+ * than returning something empty so that a future edit which reintroduces a
150
+ * filesystem dependency fails loudly here instead of silently in production.
151
+ */
152
+ async function refuseFilesystemLoad(): Promise<never> {
153
+ throw new Error('user-utility-css: the utilities entry must not load from disk');
154
+ }
155
+
156
+ /**
157
+ * Compiled-CSS cache, keyed by the exact candidate set.
158
+ *
159
+ * A Tailwind compiler ACCUMULATES candidates across `build()` calls — a second
160
+ * call still emits the first call's rules. Reusing one compiler across renders
161
+ * would therefore grow without bound and leak one project's classes into
162
+ * another project's page. So each distinct candidate set gets a FRESH compiler
163
+ * (~3ms) and only the finished CSS is cached.
164
+ */
165
+ const cssCache = new Map<string, string>();
166
+ const MAX_CACHE_ENTRIES = 500;
167
+
168
+ /**
169
+ * Build the extra stylesheet for a page's arbitrary-value classes.
170
+ * Returns '' when there is nothing to generate.
171
+ */
172
+ export async function buildUserUtilityCss(
173
+ candidates: string[]
174
+ ): Promise<string> {
175
+ if (candidates.length === 0) return '';
176
+
177
+ const key = candidates.join(' ');
178
+ const cached = cssCache.get(key);
179
+ if (cached !== undefined) return cached;
180
+
181
+ let css = '';
182
+ try {
183
+ // Imported lazily on purpose. Docs routes are force-dynamic, so a static
184
+ // import would pay Tailwind's ~23ms module load on EVERY cold start —
185
+ // including the majority of pages that carry no arbitrary-value class at
186
+ // all. The empty-candidates early return above means reaching this line
187
+ // already means there is real work to do.
188
+ const { compile } = await import('tailwindcss');
189
+ const compiler = await compile(UTILITIES_ENTRY, {
190
+ // Only ever used to resolve relative @imports, of which the entry has
191
+ // none. Pinned rather than process.cwd() so this cannot acquire a
192
+ // dependency on where the server happens to be started from.
193
+ base: '/',
194
+ loadStylesheet: refuseFilesystemLoad,
195
+ loadModule: refuseFilesystemLoad,
196
+ });
197
+ css = compiler.build(candidates);
198
+ // When nothing matched, Tailwind still emits a banner plus a bare
199
+ // `@layer utilities;` DECLARATION (semicolon, no block). Testing for the
200
+ // string '@layer' would pass on that and ship an empty <style>; the brace
201
+ // is what distinguishes a real rule block.
202
+ if (!/@layer[^;{]*\{/.test(css)) {
203
+ // Candidates existed but Tailwind matched none of them. Logged because
204
+ // this is otherwise INDISTINGUISHABLE from a page that simply has no
205
+ // arbitrary classes — both are an empty string and no log line. That is
206
+ // precisely how the responsive-variant gap (`md:bg-[#ED8200]` emitting
207
+ // nothing without `--breakpoint-*`) hid: the failure state was an
208
+ // ABSENCE of output, so nothing could alert on it. A future Tailwind
209
+ // upgrade or a new variant form that stops compiling now says so.
210
+ logger.warn('[user-utility-css] candidates matched no utilities', {
211
+ count: candidates.length,
212
+ sample: candidates.slice(0, 5),
213
+ });
214
+ css = '';
215
+ }
216
+ // Defence in depth for the `<style>` element this is injected into.
217
+ // `isCompilableCandidate` already rejects `<`, `>` and quotes, and Tailwind
218
+ // escapes what it emits — so reaching this branch should be impossible.
219
+ // Dropping the whole sheet rather than patching it keeps that an assertion
220
+ // instead of a sanitizer: a cosmetic loss, never a broken page.
221
+ if (/<\/|<!/.test(css)) {
222
+ logger.error('[user-utility-css] generated CSS contained markup; discarding');
223
+ css = '';
224
+ }
225
+ } catch (error) {
226
+ // Never let author styling break a page render — a missing background is a
227
+ // cosmetic loss, a throw here would be a 500.
228
+ logger.error('[user-utility-css] failed to compile author utilities', {
229
+ error: error instanceof Error ? error.message : String(error),
230
+ });
231
+ // Deliberately NOT cached. A thrown compile is the one outcome here that
232
+ // can be transient, and caching it would pin this page unstyled for the
233
+ // life of the process — silently, because the cache is checked before the
234
+ // logger, so it would never complain again. The empty result from the
235
+ // brace test above IS cached: that one is deterministic.
236
+ return '';
237
+ }
238
+
239
+ if (cssCache.size >= MAX_CACHE_ENTRIES) {
240
+ const oldest = cssCache.keys().next().value;
241
+ if (oldest !== undefined) cssCache.delete(oldest);
242
+ }
243
+ cssCache.set(key, css);
244
+ return css;
245
+ }
246
+
247
+ /** Test seam — the cache is process-global and would otherwise leak between tests. */
248
+ export function __clearUserUtilityCssCache(): void {
249
+ cssCache.clear();
250
+ }
@@ -922,15 +922,15 @@
922
922
  }
923
923
  },
924
924
  "node_modules/@next/env": {
925
- "version": "16.3.3",
926
- "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.3.tgz",
927
- "integrity": "sha512-U2eYQRwXj+dsqxV79zFqExDdatnNY/ZWc2nsJU1p/OgT7fd3dXwlF6OjYaFQCfMoeTA19PWq+wVmYgimVA+V+g==",
925
+ "version": "16.3.4",
926
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.4.tgz",
927
+ "integrity": "sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q==",
928
928
  "license": "MIT"
929
929
  },
930
930
  "node_modules/@next/mdx": {
931
- "version": "16.3.3",
932
- "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-16.3.3.tgz",
933
- "integrity": "sha512-DR5rq7bLDntGu49rUBAYOEjDwXsMHJ/Q/qjF+7dxLZwq9RZOVm/YoaVfrf1Mal3zBf3expNVtn8oQp590bt/Gw==",
931
+ "version": "16.3.4",
932
+ "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-16.3.4.tgz",
933
+ "integrity": "sha512-XEmW3ccWWNybofVOmgIEVhXtmNXM0u423iqkVXwPf29fht/tdpUiMDuMHQ4hMerE1477nOJrv5kM/F6qMcEMwA==",
934
934
  "license": "MIT",
935
935
  "dependencies": {
936
936
  "source-map": "^0.7.0"
@@ -949,9 +949,9 @@
949
949
  }
950
950
  },
951
951
  "node_modules/@next/swc-darwin-arm64": {
952
- "version": "16.3.3",
953
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.3.tgz",
954
- "integrity": "sha512-8Hiv32QJPwdV6KYJ8meR9SBA061tQqnIKTJDocvOXlEQqib0xMFpzArosuffFUUc0sslbh7QQ8a3Yey1QV8EIw==",
952
+ "version": "16.3.4",
953
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.4.tgz",
954
+ "integrity": "sha512-iBr3I5LZNk5/bgl5//iTgD2tcym14MX0Xo7fD//u9dYAEgGzza1y9oywluPtf74YnOswVdH1908aK9xVz7zQTw==",
955
955
  "cpu": [
956
956
  "arm64"
957
957
  ],
@@ -965,9 +965,9 @@
965
965
  }
966
966
  },
967
967
  "node_modules/@next/swc-darwin-x64": {
968
- "version": "16.3.3",
969
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.3.tgz",
970
- "integrity": "sha512-A1lgKgwVchRYmSe467zdwhxT9040dd8lH+o65sL5Jet8fjB4kegw/rDyPIpYVRb6jAqwXFOJpjIXJLxQKLiE3A==",
968
+ "version": "16.3.4",
969
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.4.tgz",
970
+ "integrity": "sha512-2dpiSyl2Jw/NrBPaU2MAKGSa+2MR82pJIn4Sm5Rjr+gxAeuh0z158Su3Z2O8zn7UNNq+ej4bToed6RcRN/Lydg==",
971
971
  "cpu": [
972
972
  "x64"
973
973
  ],
@@ -981,9 +981,9 @@
981
981
  }
982
982
  },
983
983
  "node_modules/@next/swc-linux-arm64-gnu": {
984
- "version": "16.3.3",
985
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.3.tgz",
986
- "integrity": "sha512-bf0FIssMFueU2dm7vQEWWxk0c8UjKTdW0yzuh0sQsD8pf1+KCLDdaqhYZNMYGmXwEOiHAUzgBKudovIlcvvBjg==",
984
+ "version": "16.3.4",
985
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.4.tgz",
986
+ "integrity": "sha512-+t+U8HZT+fApePCS5h89CSH3datz29MkzyfCn+6fpsZBG/oiEOhINcb9rtkv6sdpToLGFn2e6146NzaKCXkqrA==",
987
987
  "cpu": [
988
988
  "arm64"
989
989
  ],
@@ -997,9 +997,9 @@
997
997
  }
998
998
  },
999
999
  "node_modules/@next/swc-linux-arm64-musl": {
1000
- "version": "16.3.3",
1001
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.3.tgz",
1002
- "integrity": "sha512-W7viwCk9JY/cAkdz/A273rd5bb3RgT/IHwR7Upv90tunjBWNtAAhGhoecHh+teRNRSinuAFmE+l7fwZ4YKkrXg==",
1000
+ "version": "16.3.4",
1001
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.4.tgz",
1002
+ "integrity": "sha512-mx03GNs1ocQA5JQ4FxDMmIsNkdrZh8cuezKCrId28e5/gIPU/l7Kcy2+vmCCzdjnnmXJy+iOAu+7K0QppO6Urg==",
1003
1003
  "cpu": [
1004
1004
  "arm64"
1005
1005
  ],
@@ -1013,9 +1013,9 @@
1013
1013
  }
1014
1014
  },
1015
1015
  "node_modules/@next/swc-linux-x64-gnu": {
1016
- "version": "16.3.3",
1017
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.3.tgz",
1018
- "integrity": "sha512-0W46zw1N3ODpI6n0GeivHvvob1pooozgZVqy65k0mh4/7vr+FbY9+WpHzNVXjHipJf/A3FDheBG19H1s5A25rA==",
1016
+ "version": "16.3.4",
1017
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.4.tgz",
1018
+ "integrity": "sha512-YIhGY6fSMfha52bnVxnzc9zaVBzJg+cqQTOD8tXIBSx4fuv0pVMxQTE0PaS59YhnMOiYiG09IMwxJAf/CFm/Dw==",
1019
1019
  "cpu": [
1020
1020
  "x64"
1021
1021
  ],
@@ -1029,9 +1029,9 @@
1029
1029
  }
1030
1030
  },
1031
1031
  "node_modules/@next/swc-linux-x64-musl": {
1032
- "version": "16.3.3",
1033
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.3.tgz",
1034
- "integrity": "sha512-H4mBso8ZTMBPtdT0PN0pBx2ayTvQuTuvS6qT13d77yVFJXAPCxkyIhLTmdMaGTJs0krQYI/qpzdHijCeihXhbg==",
1032
+ "version": "16.3.4",
1033
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.4.tgz",
1034
+ "integrity": "sha512-+eaaX6axpDb0yF1GCpiERe6njplvdC+nks/fKfcHu3XPGRrald8P3/X7yv7QLdjA51knnxwl9pxdIJsg+w1L+Q==",
1035
1035
  "cpu": [
1036
1036
  "x64"
1037
1037
  ],
@@ -1045,9 +1045,9 @@
1045
1045
  }
1046
1046
  },
1047
1047
  "node_modules/@next/swc-win32-arm64-msvc": {
1048
- "version": "16.3.3",
1049
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.3.tgz",
1050
- "integrity": "sha512-cTMUJpcEGmeywofCUfhR+rSsoE33+rVPnPEYNTNdLNlsOeEg/vktOsKUSTb28vUGqD2jkm4Zaskcwn7OCI6FQg==",
1048
+ "version": "16.3.4",
1049
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.4.tgz",
1050
+ "integrity": "sha512-0jcXW7Xs/uzICrmgV3MhDYDeRy++1CqnpDIerlPIqYO4bhzB4WNbX/aRnQclustsAyTkFKB0z6rbcjmNg5tR8A==",
1051
1051
  "cpu": [
1052
1052
  "arm64"
1053
1053
  ],
@@ -1061,9 +1061,9 @@
1061
1061
  }
1062
1062
  },
1063
1063
  "node_modules/@next/swc-win32-x64-msvc": {
1064
- "version": "16.3.3",
1065
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.3.tgz",
1066
- "integrity": "sha512-2VR4cTBzHXaBjnGsuH6GyJjENzQOmHeAh11uY1iUhjm3j5dEUrVJuUj+VL78jaGi/Dik8xS76zEj18BsFhlVZQ==",
1064
+ "version": "16.3.4",
1065
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.4.tgz",
1066
+ "integrity": "sha512-vvBzwu1pYQCp92maZCFCIw/XgOTMR5tur9GjakwIo2cmwRTMKajRZZDS9+e4KsUZWKu1E007WUeAFXRRjZeuzw==",
1067
1067
  "cpu": [
1068
1068
  "x64"
1069
1069
  ],
@@ -1077,9 +1077,9 @@
1077
1077
  }
1078
1078
  },
1079
1079
  "node_modules/@next/third-parties": {
1080
- "version": "16.3.3",
1081
- "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-16.3.3.tgz",
1082
- "integrity": "sha512-a7zWBqivPou6cn9vQFcw3V7h7GNsZBKLwC1EOLexBDOwabQ0wO2O9Mi1G8HtCseYvD3z1zcVqN+Ld2gfaZxN1Q==",
1080
+ "version": "16.3.4",
1081
+ "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-16.3.4.tgz",
1082
+ "integrity": "sha512-DjyyOoBHPHYFgQ0l9VXJFWMeO5FvnFP+bXM9ZC0eGYluVwpNIvMjDPhDhM/VlhK+VK423G+8LMD+y/xwEKAi+w==",
1083
1083
  "license": "MIT",
1084
1084
  "dependencies": {
1085
1085
  "third-party-capital": "1.0.20"
@@ -2925,9 +2925,9 @@
2925
2925
  "license": "MIT"
2926
2926
  },
2927
2927
  "node_modules/electron-to-chromium": {
2928
- "version": "1.5.417",
2929
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.417.tgz",
2930
- "integrity": "sha512-4T+DTDWuMPM4aHlHwWdAVCVWwp7LDilnhzkj+c/Lbj91XSQrLuOmZSLtS9Q4iIqjlPUbPOnC624zDVVHCHaolQ==",
2928
+ "version": "1.5.418",
2929
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.418.tgz",
2930
+ "integrity": "sha512-UzS26r3AEbG5wSoGVpJKqwHIU9zwQN7LHdVIThDrJpS0I5KdlXFMEb8543fhc9dVnIIAST6ar8rhwa00AL5MlA==",
2931
2931
  "license": "ISC"
2932
2932
  },
2933
2933
  "node_modules/enhanced-resolve": {
@@ -5310,12 +5310,12 @@
5310
5310
  }
5311
5311
  },
5312
5312
  "node_modules/next": {
5313
- "version": "16.3.3",
5314
- "resolved": "https://registry.npmjs.org/next/-/next-16.3.3.tgz",
5315
- "integrity": "sha512-tuRTx1nQ/yVw83cwJBo9F+njGUgMn3UHQycreWHB8XsStvvAh1AthbI8/4IpKnFaF58F+iSiHejYOlMQ/eq83g==",
5313
+ "version": "16.3.4",
5314
+ "resolved": "https://registry.npmjs.org/next/-/next-16.3.4.tgz",
5315
+ "integrity": "sha512-/Ztf6CeRH+ejEXUrYtqI4gkS66eFIHuSwqi60RgcpWKodxFZx2/dqVCMKBwILfAHXQ+F1b1vAudgj3mnxqtoIA==",
5316
5316
  "license": "MIT",
5317
5317
  "dependencies": {
5318
- "@next/env": "16.3.3",
5318
+ "@next/env": "16.3.4",
5319
5319
  "@swc/helpers": "0.5.23",
5320
5320
  "baseline-browser-mapping": "^2.9.19",
5321
5321
  "caniuse-lite": "^1.0.30001579",
@@ -5329,15 +5329,15 @@
5329
5329
  "node": ">=20.9.0"
5330
5330
  },
5331
5331
  "optionalDependencies": {
5332
- "@next/swc-darwin-arm64": "16.3.3",
5333
- "@next/swc-darwin-x64": "16.3.3",
5334
- "@next/swc-linux-arm64-gnu": "16.3.3",
5335
- "@next/swc-linux-arm64-musl": "16.3.3",
5336
- "@next/swc-linux-x64-gnu": "16.3.3",
5337
- "@next/swc-linux-x64-musl": "16.3.3",
5338
- "@next/swc-win32-arm64-msvc": "16.3.3",
5339
- "@next/swc-win32-x64-msvc": "16.3.3",
5340
- "sharp": "^0.35.3"
5332
+ "@next/swc-darwin-arm64": "16.3.4",
5333
+ "@next/swc-darwin-x64": "16.3.4",
5334
+ "@next/swc-linux-arm64-gnu": "16.3.4",
5335
+ "@next/swc-linux-arm64-musl": "16.3.4",
5336
+ "@next/swc-linux-x64-gnu": "16.3.4",
5337
+ "@next/swc-linux-x64-musl": "16.3.4",
5338
+ "@next/swc-win32-arm64-msvc": "16.3.4",
5339
+ "@next/swc-win32-x64-msvc": "16.3.4",
5340
+ "sharp": "^0.35.4"
5341
5341
  },
5342
5342
  "peerDependencies": {
5343
5343
  "@opentelemetry/api": "^1.1.0",