jamdesk 1.1.140 → 1.1.142
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.
- package/dist/__tests__/unit/dev-workspace-symlinks.test.d.ts +2 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.d.ts.map +1 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.js +112 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.js.map +1 -0
- package/dist/__tests__/unit/language-filter.test.d.ts +2 -0
- package/dist/__tests__/unit/language-filter.test.d.ts.map +1 -0
- package/dist/__tests__/unit/language-filter.test.js +166 -0
- package/dist/__tests__/unit/language-filter.test.js.map +1 -0
- package/dist/lib/deprecated-components.d.ts +1 -0
- package/dist/lib/deprecated-components.d.ts.map +1 -1
- package/dist/lib/deprecated-components.js +1 -0
- package/dist/lib/deprecated-components.js.map +1 -1
- package/dist/lib/language-filter.d.ts +31 -0
- package/dist/lib/language-filter.d.ts.map +1 -0
- package/dist/lib/language-filter.js +14 -0
- package/dist/lib/language-filter.js.map +1 -0
- package/package.json +1 -1
- package/vendored/components/chat/ChatMessage.tsx +49 -15
- package/vendored/components/layout/EmbedLinkInterceptor.tsx +2 -4
- package/vendored/components/mdx/MermaidInner.tsx +96 -5
- package/vendored/components/search/SearchModal.tsx +19 -1
- package/vendored/lib/deprecated-components.ts +1 -0
- package/vendored/lib/firestore-helpers.ts +20 -0
- package/vendored/lib/is-modified-click.ts +11 -0
- package/vendored/lib/middleware-helpers.ts +4 -0
- package/vendored/lib/preprocess-mdx.ts +20 -12
- package/vendored/lib/redis.ts +32 -0
- package/vendored/lib/render-doc-page.tsx +35 -23
- package/vendored/lib/scanner-blocklist.ts +26 -1
- package/vendored/lib/sitemap-xsl.ts +121 -0
- package/vendored/lib/static-file-route.ts +7 -2
- package/vendored/lib/vector-store.ts +153 -69
- package/vendored/workspace-package-lock.json +90 -90
|
@@ -52,15 +52,88 @@ const MIN_SCORE = 0.3;
|
|
|
52
52
|
/** Max chunks per page — raised from 3 to 4 to match broader topK retrieval budget */
|
|
53
53
|
const MAX_CHUNKS_PER_PAGE = 4;
|
|
54
54
|
|
|
55
|
-
/**
|
|
56
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Hard deadline for the build-time embedding write (reset + all upsert batches
|
|
57
|
+
* combined). A transient Upstash stall must fail this step FAST — it is
|
|
58
|
+
* non-fatal to the build (build.ts swallows it) — instead of hanging the single
|
|
59
|
+
* Cloud Run build instance until the 21-minute stale-build watchdog reaps it as
|
|
60
|
+
* a false "timed out" failure (kapptivate, 2026-06-11). Healthy writes finish in
|
|
61
|
+
* <15s; 90s tolerates a slow-but-alive Upstash while still failing ~14× faster
|
|
62
|
+
* than the watchdog.
|
|
63
|
+
*/
|
|
64
|
+
const UPSERT_TIMEOUT_MS = 90_000;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Hard deadline for a live chat/search retrieval. Queries normally finish in
|
|
68
|
+
* <500ms; bound them so a stalled Upstash cannot hang the chat SSE request. The
|
|
69
|
+
* chat/search routes already treat a rejected query gracefully (rewrite path
|
|
70
|
+
* resolves to [], original-query reject → 503 chat / 502 docs-search), so a fast
|
|
71
|
+
* reject is preferable to an open-ended hang.
|
|
72
|
+
*/
|
|
73
|
+
const QUERY_TIMEOUT_MS = 10_000;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Create a namespaced Upstash Vector index for a project.
|
|
77
|
+
*
|
|
78
|
+
* `signal` is REQUIRED on purpose: it must come from a withDeadline() wrapper.
|
|
79
|
+
* A bare getNamespace() would issue UNBOUNDED reset/upsert/query requests — the
|
|
80
|
+
* exact hang this module guards against (kapptivate, 2026-06-11) — so making the
|
|
81
|
+
* param non-optional forces every (current and future) caller through a deadline
|
|
82
|
+
* at compile time rather than by remembering a comment. The signal is forwarded
|
|
83
|
+
* to the SDK so an aborted deadline closes the underlying socket.
|
|
84
|
+
*/
|
|
85
|
+
function getNamespace(projectId: string, signal: AbortSignal) {
|
|
57
86
|
const index = new Index({
|
|
58
87
|
url: process.env.UPSTASH_VECTOR_REST_URL!,
|
|
59
88
|
token: process.env.UPSTASH_VECTOR_REST_TOKEN!,
|
|
89
|
+
signal,
|
|
60
90
|
});
|
|
61
91
|
return index.namespace(projectId);
|
|
62
92
|
}
|
|
63
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Run an Upstash operation under a hard deadline.
|
|
96
|
+
*
|
|
97
|
+
* The Promise.race timer is the GUARANTEE: it rejects the caller at `ms` no
|
|
98
|
+
* matter what the SDK does. The AbortSignal handed to `op` is best-effort —
|
|
99
|
+
* @upstash/vector 1.2.3 does NOT propagate an aborted fetch as a rejection; its
|
|
100
|
+
* request loop catches the AbortError and synthesizes a 200 "success". What the
|
|
101
|
+
* signal still buys us is closing the underlying socket so a hung connection
|
|
102
|
+
* does not linger past the deadline. So: timer = correctness, signal = resource
|
|
103
|
+
* hygiene — do NOT remove the timer believing the signal suffices.
|
|
104
|
+
*
|
|
105
|
+
* On timeout this REJECTS — callers decide whether that is fatal. A genuine
|
|
106
|
+
* pre-deadline rejection (e.g. the SDK exhausting its retries on a flapping
|
|
107
|
+
* endpoint) propagates as-is so the real Upstash error is logged rather than a
|
|
108
|
+
* generic timeout.
|
|
109
|
+
*/
|
|
110
|
+
async function withDeadline<T>(
|
|
111
|
+
ms: number,
|
|
112
|
+
operation: string,
|
|
113
|
+
op: (signal: AbortSignal) => Promise<T>,
|
|
114
|
+
): Promise<T> {
|
|
115
|
+
const controller = new AbortController();
|
|
116
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
117
|
+
const deadline = new Promise<never>((_, reject) => {
|
|
118
|
+
timer = setTimeout(() => {
|
|
119
|
+
controller.abort();
|
|
120
|
+
reject(new Error(`Upstash ${operation} timed out after ${ms}ms`));
|
|
121
|
+
}, ms);
|
|
122
|
+
});
|
|
123
|
+
const work = op(controller.signal);
|
|
124
|
+
// Swallow the late settlement of the losing promise so it cannot bubble as an
|
|
125
|
+
// unhandledRejection after the deadline already won the race. (Load-bearing in
|
|
126
|
+
// prod for the genuine-error case; on an abort the SDK resolves `work` with a
|
|
127
|
+
// synthetic 200, so this no-ops.) The genuine error still reaches the caller
|
|
128
|
+
// via the race below.
|
|
129
|
+
work.catch(() => {});
|
|
130
|
+
try {
|
|
131
|
+
return await Promise.race([work, deadline]);
|
|
132
|
+
} finally {
|
|
133
|
+
clearTimeout(timer);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
64
137
|
/**
|
|
65
138
|
* Replace all vectors for a project with fresh chunks.
|
|
66
139
|
*
|
|
@@ -76,33 +149,35 @@ export async function upsertChunks(
|
|
|
76
149
|
projectId: string,
|
|
77
150
|
chunks: EmbeddingChunk[],
|
|
78
151
|
): Promise<void> {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
152
|
+
await withDeadline(UPSERT_TIMEOUT_MS, 'upsert', async signal => {
|
|
153
|
+
const ns = getNamespace(projectId, signal);
|
|
154
|
+
|
|
155
|
+
await ns.reset();
|
|
156
|
+
|
|
157
|
+
for (let i = 0; i < chunks.length; i += BATCH_SIZE) {
|
|
158
|
+
const batch = chunks.slice(i, i + BATCH_SIZE);
|
|
159
|
+
await ns.upsert(
|
|
160
|
+
batch.map(c => {
|
|
161
|
+
const metadata: ChunkMetadata = {
|
|
162
|
+
pageSlug: c.pageSlug,
|
|
163
|
+
sectionHeading: c.sectionHeading,
|
|
164
|
+
pageTitle: c.pageTitle,
|
|
165
|
+
content: c.content.length > MAX_METADATA_CONTENT_CHARS
|
|
166
|
+
? c.content.slice(0, MAX_METADATA_CONTENT_CHARS) + '...'
|
|
167
|
+
: c.content,
|
|
168
|
+
};
|
|
169
|
+
if (c.locale) metadata.locale = c.locale; // omit when null
|
|
170
|
+
return {
|
|
171
|
+
id: c.id,
|
|
172
|
+
// Prefix + body goes to Upstash for embedding/BM25; metadata.content
|
|
173
|
+
// stays prefix-free so consumers display clean body text.
|
|
174
|
+
data: c.prefix + c.content,
|
|
175
|
+
metadata,
|
|
176
|
+
};
|
|
177
|
+
}),
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
106
181
|
}
|
|
107
182
|
|
|
108
183
|
/**
|
|
@@ -205,48 +280,50 @@ export async function querySimilarChunks(
|
|
|
205
280
|
topK = 5,
|
|
206
281
|
options: { locale?: string } = {},
|
|
207
282
|
): Promise<Array<ChunkMetadata & { score: number }>> {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
283
|
+
return withDeadline(QUERY_TIMEOUT_MS, 'query', async signal => {
|
|
284
|
+
const ns = getNamespace(projectId, signal);
|
|
285
|
+
const locale = options.locale ? normalizeLocaleForFilter(options.locale) : undefined;
|
|
286
|
+
// Defense-in-depth: A5 rejects malformed locales at the API boundary. If a
|
|
287
|
+
// truthy locale here normalizes to empty, A5's guard was bypassed (test or
|
|
288
|
+
// internal caller) — surface it loudly rather than silently dropping the filter.
|
|
289
|
+
if (options.locale && !locale) {
|
|
290
|
+
logger.warn('vector-store: locale normalized to empty — filter skipped', { rawLocale: options.locale });
|
|
291
|
+
}
|
|
292
|
+
const filter = locale ? buildLocaleFilter(locale) : undefined;
|
|
293
|
+
// When filtering, raise effective topK by ~33% so we still get ~topK chunks
|
|
294
|
+
// back from a mixed-language namespace where filtering cuts the candidate set.
|
|
295
|
+
const effectiveTopK = filter ? Math.ceil(topK * 1.33) : topK;
|
|
296
|
+
const queryParams = { topK: effectiveTopK, includeMetadata: true as const, filter };
|
|
297
|
+
|
|
298
|
+
const topicQuery = extractTopicQuery(queryText);
|
|
299
|
+
|
|
300
|
+
// Dual-query: topic query is the PRIMARY source (better topical relevance);
|
|
301
|
+
// the full query fills remaining slots with unique results only.
|
|
302
|
+
let merged: Array<ChunkMetadata & { score: number }>;
|
|
303
|
+
if (topicQuery) {
|
|
304
|
+
const [fullResults, topicResults] = await Promise.all([
|
|
305
|
+
queryWithFallback(ns, { data: queryText, ...queryParams }),
|
|
306
|
+
queryWithFallback(ns, { data: topicQuery, ...queryParams }),
|
|
307
|
+
]);
|
|
308
|
+
merged = filterAndMerge([topicResults, fullResults], topK);
|
|
309
|
+
} else {
|
|
310
|
+
const results = await queryWithFallback(ns, { data: queryText, ...queryParams });
|
|
311
|
+
merged = filterAndMerge([results], topK);
|
|
312
|
+
}
|
|
237
313
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
314
|
+
// Telemetry: a filtered query that returns materially fewer chunks than
|
|
315
|
+
// requested signals the locale filter is hurting recall (project skewed away
|
|
316
|
+
// from the requested locale, or filter syntax matched a near-empty subset).
|
|
317
|
+
// Surface it so we can decide whether to widen the carve-out, increase the
|
|
318
|
+
// 1.33× boost, or rebuild the project's index.
|
|
319
|
+
if (filter && merged.length < Math.ceil(topK / 2)) {
|
|
320
|
+
logger.warn('vector-store: locale filter under-fills topK', {
|
|
321
|
+
projectId, locale, returned: merged.length, requested: topK,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
248
324
|
|
|
249
|
-
|
|
325
|
+
return merged;
|
|
326
|
+
});
|
|
250
327
|
}
|
|
251
328
|
|
|
252
329
|
/**
|
|
@@ -309,6 +386,13 @@ export async function deleteProjectNamespace(slug: string): Promise<boolean> {
|
|
|
309
386
|
// Ctor failures (e.g., a future SDK adding URL-format validation) are
|
|
310
387
|
// misconfiguration, not transient errors — let them propagate so ops see
|
|
311
388
|
// a 500 instead of a silent `vector_orphan_on_delete`.
|
|
389
|
+
//
|
|
390
|
+
// Deliberately UNBOUNDED (unlike upsertChunks/querySimilarChunks, which go
|
|
391
|
+
// through withDeadline + getNamespace): this is a single best-effort delete on
|
|
392
|
+
// the request-scoped dashboard delete handler — NOT the shared Cloud Run build
|
|
393
|
+
// instance — so a stall here cannot wedge other builds or trip the stale-build
|
|
394
|
+
// watchdog. A hung delete is bounded by the platform request timeout. Don't
|
|
395
|
+
// "fix" the asymmetry by reflex; bounding it would need its own deadline wiring.
|
|
312
396
|
const index = new Index({ url, token });
|
|
313
397
|
try {
|
|
314
398
|
await index.deleteNamespace(slug);
|
|
@@ -1252,47 +1252,47 @@
|
|
|
1252
1252
|
}
|
|
1253
1253
|
},
|
|
1254
1254
|
"node_modules/@tailwindcss/node": {
|
|
1255
|
-
"version": "4.3.
|
|
1256
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.
|
|
1257
|
-
"integrity": "sha512-
|
|
1255
|
+
"version": "4.3.1",
|
|
1256
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.1.tgz",
|
|
1257
|
+
"integrity": "sha512-6NDaqRoAMSXD1mr/RXu0HBvNE9a2n5tHPsxu9XHLws8o4Twes5rBM2205SUUiJ9goAtadrN6xTGX0UDEwp/N4A==",
|
|
1258
1258
|
"license": "MIT",
|
|
1259
1259
|
"dependencies": {
|
|
1260
1260
|
"@jridgewell/remapping": "^2.3.5",
|
|
1261
|
-
"enhanced-resolve": "
|
|
1262
|
-
"jiti": "^2.
|
|
1261
|
+
"enhanced-resolve": "5.21.6",
|
|
1262
|
+
"jiti": "^2.7.0",
|
|
1263
1263
|
"lightningcss": "1.32.0",
|
|
1264
1264
|
"magic-string": "^0.30.21",
|
|
1265
1265
|
"source-map-js": "^1.2.1",
|
|
1266
|
-
"tailwindcss": "4.3.
|
|
1266
|
+
"tailwindcss": "4.3.1"
|
|
1267
1267
|
}
|
|
1268
1268
|
},
|
|
1269
1269
|
"node_modules/@tailwindcss/oxide": {
|
|
1270
|
-
"version": "4.3.
|
|
1271
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.
|
|
1272
|
-
"integrity": "sha512-
|
|
1270
|
+
"version": "4.3.1",
|
|
1271
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.1.tgz",
|
|
1272
|
+
"integrity": "sha512-yVPyo8RNkabVr3O2EhHEE0Rewu7YKzc1DhIqfL46LKveFrmu9XbDazNOJY7/GRuvw1h6u3utWnR29H/p5JPlgA==",
|
|
1273
1273
|
"license": "MIT",
|
|
1274
1274
|
"engines": {
|
|
1275
1275
|
"node": ">= 20"
|
|
1276
1276
|
},
|
|
1277
1277
|
"optionalDependencies": {
|
|
1278
|
-
"@tailwindcss/oxide-android-arm64": "4.3.
|
|
1279
|
-
"@tailwindcss/oxide-darwin-arm64": "4.3.
|
|
1280
|
-
"@tailwindcss/oxide-darwin-x64": "4.3.
|
|
1281
|
-
"@tailwindcss/oxide-freebsd-x64": "4.3.
|
|
1282
|
-
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.
|
|
1283
|
-
"@tailwindcss/oxide-linux-arm64-gnu": "4.3.
|
|
1284
|
-
"@tailwindcss/oxide-linux-arm64-musl": "4.3.
|
|
1285
|
-
"@tailwindcss/oxide-linux-x64-gnu": "4.3.
|
|
1286
|
-
"@tailwindcss/oxide-linux-x64-musl": "4.3.
|
|
1287
|
-
"@tailwindcss/oxide-wasm32-wasi": "4.3.
|
|
1288
|
-
"@tailwindcss/oxide-win32-arm64-msvc": "4.3.
|
|
1289
|
-
"@tailwindcss/oxide-win32-x64-msvc": "4.3.
|
|
1278
|
+
"@tailwindcss/oxide-android-arm64": "4.3.1",
|
|
1279
|
+
"@tailwindcss/oxide-darwin-arm64": "4.3.1",
|
|
1280
|
+
"@tailwindcss/oxide-darwin-x64": "4.3.1",
|
|
1281
|
+
"@tailwindcss/oxide-freebsd-x64": "4.3.1",
|
|
1282
|
+
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.1",
|
|
1283
|
+
"@tailwindcss/oxide-linux-arm64-gnu": "4.3.1",
|
|
1284
|
+
"@tailwindcss/oxide-linux-arm64-musl": "4.3.1",
|
|
1285
|
+
"@tailwindcss/oxide-linux-x64-gnu": "4.3.1",
|
|
1286
|
+
"@tailwindcss/oxide-linux-x64-musl": "4.3.1",
|
|
1287
|
+
"@tailwindcss/oxide-wasm32-wasi": "4.3.1",
|
|
1288
|
+
"@tailwindcss/oxide-win32-arm64-msvc": "4.3.1",
|
|
1289
|
+
"@tailwindcss/oxide-win32-x64-msvc": "4.3.1"
|
|
1290
1290
|
}
|
|
1291
1291
|
},
|
|
1292
1292
|
"node_modules/@tailwindcss/oxide-android-arm64": {
|
|
1293
|
-
"version": "4.3.
|
|
1294
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.
|
|
1295
|
-
"integrity": "sha512-
|
|
1293
|
+
"version": "4.3.1",
|
|
1294
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.1.tgz",
|
|
1295
|
+
"integrity": "sha512-SVlyf61g374l5cHyg8x9kf5xmLcOaxvOTsbsqDnSsDJaKOEFZ7GCvi84VAVGpxojYOs1+3K6M0UjXfqPU8vmOQ==",
|
|
1296
1296
|
"cpu": [
|
|
1297
1297
|
"arm64"
|
|
1298
1298
|
],
|
|
@@ -1306,9 +1306,9 @@
|
|
|
1306
1306
|
}
|
|
1307
1307
|
},
|
|
1308
1308
|
"node_modules/@tailwindcss/oxide-darwin-arm64": {
|
|
1309
|
-
"version": "4.3.
|
|
1310
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.
|
|
1311
|
-
"integrity": "sha512-
|
|
1309
|
+
"version": "4.3.1",
|
|
1310
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.1.tgz",
|
|
1311
|
+
"integrity": "sha512-hVnWLwv+e/l7c4WKyVtHVrIPvYdqWHjRB3MDIqARynzFtnQg85kmQEFCbV9Ja0VVx4xXTIiDWY60Y7iz/iNoDA==",
|
|
1312
1312
|
"cpu": [
|
|
1313
1313
|
"arm64"
|
|
1314
1314
|
],
|
|
@@ -1322,9 +1322,9 @@
|
|
|
1322
1322
|
}
|
|
1323
1323
|
},
|
|
1324
1324
|
"node_modules/@tailwindcss/oxide-darwin-x64": {
|
|
1325
|
-
"version": "4.3.
|
|
1326
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.
|
|
1327
|
-
"integrity": "sha512-
|
|
1325
|
+
"version": "4.3.1",
|
|
1326
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.1.tgz",
|
|
1327
|
+
"integrity": "sha512-Cf7abu0WVgbhU7ANgPUnSAvm7nCvMweusHb8FnaHlLfv/Caq4GYaEZg7ZImzzmjx4lIAfuS8q+eLIS7A7IzxIg==",
|
|
1328
1328
|
"cpu": [
|
|
1329
1329
|
"x64"
|
|
1330
1330
|
],
|
|
@@ -1338,9 +1338,9 @@
|
|
|
1338
1338
|
}
|
|
1339
1339
|
},
|
|
1340
1340
|
"node_modules/@tailwindcss/oxide-freebsd-x64": {
|
|
1341
|
-
"version": "4.3.
|
|
1342
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.
|
|
1343
|
-
"integrity": "sha512-
|
|
1341
|
+
"version": "4.3.1",
|
|
1342
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.1.tgz",
|
|
1343
|
+
"integrity": "sha512-ZZqzX2Y+GXtXXfqSfpJhDm60OoZfvLHLCgm+J7NVqgHHJjG/m9ugZI77RwTsVd4fnBJuCFP6Ae6kTJb71UdS8g==",
|
|
1344
1344
|
"cpu": [
|
|
1345
1345
|
"x64"
|
|
1346
1346
|
],
|
|
@@ -1354,9 +1354,9 @@
|
|
|
1354
1354
|
}
|
|
1355
1355
|
},
|
|
1356
1356
|
"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
|
|
1357
|
-
"version": "4.3.
|
|
1358
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.
|
|
1359
|
-
"integrity": "sha512
|
|
1357
|
+
"version": "4.3.1",
|
|
1358
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.1.tgz",
|
|
1359
|
+
"integrity": "sha512-/Ah/xik0LaMYfv9DZ0S/t4pBlBNYOcqtRwusjgovHkvT8ixueWCLyJjsaF5kQIckjb4IT8Q6K6p/iPmZMixYgg==",
|
|
1360
1360
|
"cpu": [
|
|
1361
1361
|
"arm"
|
|
1362
1362
|
],
|
|
@@ -1370,9 +1370,9 @@
|
|
|
1370
1370
|
}
|
|
1371
1371
|
},
|
|
1372
1372
|
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
|
|
1373
|
-
"version": "4.3.
|
|
1374
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.
|
|
1375
|
-
"integrity": "sha512-
|
|
1373
|
+
"version": "4.3.1",
|
|
1374
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.1.tgz",
|
|
1375
|
+
"integrity": "sha512-gqdFoVJlw444GvpnheZLHmvTzSxI/cOUUh2KSNejQjTcYkW062SVD+En0rUgD+QV91bz1XGIGtt1HJd48xUGbQ==",
|
|
1376
1376
|
"cpu": [
|
|
1377
1377
|
"arm64"
|
|
1378
1378
|
],
|
|
@@ -1389,9 +1389,9 @@
|
|
|
1389
1389
|
}
|
|
1390
1390
|
},
|
|
1391
1391
|
"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
|
|
1392
|
-
"version": "4.3.
|
|
1393
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.
|
|
1394
|
-
"integrity": "sha512-
|
|
1392
|
+
"version": "4.3.1",
|
|
1393
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.1.tgz",
|
|
1394
|
+
"integrity": "sha512-Bwv9KwOvE0VKa86xPFif9b9c3Y1NxOV1P0gLti/IYaWEsQYZXDlxfGEtA8mdDZ7SG3wyNXAWYT5SIn3giL57oA==",
|
|
1395
1395
|
"cpu": [
|
|
1396
1396
|
"arm64"
|
|
1397
1397
|
],
|
|
@@ -1408,9 +1408,9 @@
|
|
|
1408
1408
|
}
|
|
1409
1409
|
},
|
|
1410
1410
|
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
|
|
1411
|
-
"version": "4.3.
|
|
1412
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.
|
|
1413
|
-
"integrity": "sha512-
|
|
1411
|
+
"version": "4.3.1",
|
|
1412
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.1.tgz",
|
|
1413
|
+
"integrity": "sha512-Ymi8O8T15HYQdOUWUtTI6ldN0neHP85FC+Qz32xTcZ7iJXtem/x8ITev0o1e9e5rkqj4lONZfTRLvkmin1+tKg==",
|
|
1414
1414
|
"cpu": [
|
|
1415
1415
|
"x64"
|
|
1416
1416
|
],
|
|
@@ -1427,9 +1427,9 @@
|
|
|
1427
1427
|
}
|
|
1428
1428
|
},
|
|
1429
1429
|
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
|
|
1430
|
-
"version": "4.3.
|
|
1431
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.
|
|
1432
|
-
"integrity": "sha512-
|
|
1430
|
+
"version": "4.3.1",
|
|
1431
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.1.tgz",
|
|
1432
|
+
"integrity": "sha512-M+P/91qJ6uILLw4k2G93GMDRAXj61SMvFQYt39AqvUqYgExXpLL5aepfns7sj4HiAQeolirQF9E0lzRvdf4zPQ==",
|
|
1433
1433
|
"cpu": [
|
|
1434
1434
|
"x64"
|
|
1435
1435
|
],
|
|
@@ -1446,9 +1446,9 @@
|
|
|
1446
1446
|
}
|
|
1447
1447
|
},
|
|
1448
1448
|
"node_modules/@tailwindcss/oxide-wasm32-wasi": {
|
|
1449
|
-
"version": "4.3.
|
|
1450
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.
|
|
1451
|
-
"integrity": "sha512-
|
|
1449
|
+
"version": "4.3.1",
|
|
1450
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.1.tgz",
|
|
1451
|
+
"integrity": "sha512-zsM8uOeqvVGHsAXsJxsT28ttosFahLJKCLOTUBqRAtKnVgGSRitds9T432QiT8b77Yga7JIBkulIRRlJPtYhRA==",
|
|
1452
1452
|
"bundleDependencies": [
|
|
1453
1453
|
"@napi-rs/wasm-runtime",
|
|
1454
1454
|
"@emnapi/core",
|
|
@@ -1467,7 +1467,7 @@
|
|
|
1467
1467
|
"@emnapi/runtime": "^1.10.0",
|
|
1468
1468
|
"@emnapi/wasi-threads": "^1.2.1",
|
|
1469
1469
|
"@napi-rs/wasm-runtime": "^1.1.4",
|
|
1470
|
-
"@tybys/wasm-util": "^0.10.
|
|
1470
|
+
"@tybys/wasm-util": "^0.10.2",
|
|
1471
1471
|
"tslib": "^2.8.1"
|
|
1472
1472
|
},
|
|
1473
1473
|
"engines": {
|
|
@@ -1520,7 +1520,7 @@
|
|
|
1520
1520
|
}
|
|
1521
1521
|
},
|
|
1522
1522
|
"node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": {
|
|
1523
|
-
"version": "0.10.
|
|
1523
|
+
"version": "0.10.2",
|
|
1524
1524
|
"inBundle": true,
|
|
1525
1525
|
"license": "MIT",
|
|
1526
1526
|
"optional": true,
|
|
@@ -1535,9 +1535,9 @@
|
|
|
1535
1535
|
"optional": true
|
|
1536
1536
|
},
|
|
1537
1537
|
"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
|
|
1538
|
-
"version": "4.3.
|
|
1539
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.
|
|
1540
|
-
"integrity": "sha512-
|
|
1538
|
+
"version": "4.3.1",
|
|
1539
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.1.tgz",
|
|
1540
|
+
"integrity": "sha512-aiNvSq9BsVk8V513lDKlrCFAgf8qBMPZTpgEhInL+NwQqs97mYmupVMrPrgBBSL8Pv/0zXu9MrMF9rMun1ZeNg==",
|
|
1541
1541
|
"cpu": [
|
|
1542
1542
|
"arm64"
|
|
1543
1543
|
],
|
|
@@ -1551,9 +1551,9 @@
|
|
|
1551
1551
|
}
|
|
1552
1552
|
},
|
|
1553
1553
|
"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
|
|
1554
|
-
"version": "4.3.
|
|
1555
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.
|
|
1556
|
-
"integrity": "sha512-
|
|
1554
|
+
"version": "4.3.1",
|
|
1555
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.1.tgz",
|
|
1556
|
+
"integrity": "sha512-xDEyu1rg290472FEGaKHnzyDyh5QH+AlWvsU5hMoMtPpzmKlRI0jaYKCgSHDYtaQWZOYbMaduSyCwFwY4n1HmA==",
|
|
1557
1557
|
"cpu": [
|
|
1558
1558
|
"x64"
|
|
1559
1559
|
],
|
|
@@ -1567,16 +1567,16 @@
|
|
|
1567
1567
|
}
|
|
1568
1568
|
},
|
|
1569
1569
|
"node_modules/@tailwindcss/postcss": {
|
|
1570
|
-
"version": "4.3.
|
|
1571
|
-
"resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.
|
|
1572
|
-
"integrity": "sha512-
|
|
1570
|
+
"version": "4.3.1",
|
|
1571
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.1.tgz",
|
|
1572
|
+
"integrity": "sha512-dNJuNbdEJT/SWRuXTYP1WSamelsz3ztkUsdtWQPjrexysrTpaEPM40P/71knXiXLYEojqPOEGitVLLpPMS5T6A==",
|
|
1573
1573
|
"license": "MIT",
|
|
1574
1574
|
"dependencies": {
|
|
1575
1575
|
"@alloc/quick-lru": "^5.2.0",
|
|
1576
|
-
"@tailwindcss/node": "4.3.
|
|
1577
|
-
"@tailwindcss/oxide": "4.3.
|
|
1578
|
-
"postcss": "
|
|
1579
|
-
"tailwindcss": "4.3.
|
|
1576
|
+
"@tailwindcss/node": "4.3.1",
|
|
1577
|
+
"@tailwindcss/oxide": "4.3.1",
|
|
1578
|
+
"postcss": "8.5.15",
|
|
1579
|
+
"tailwindcss": "4.3.1"
|
|
1580
1580
|
}
|
|
1581
1581
|
},
|
|
1582
1582
|
"node_modules/@tailwindcss/typography": {
|
|
@@ -1997,9 +1997,9 @@
|
|
|
1997
1997
|
}
|
|
1998
1998
|
},
|
|
1999
1999
|
"node_modules/acorn": {
|
|
2000
|
-
"version": "8.
|
|
2001
|
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.
|
|
2002
|
-
"integrity": "sha512-
|
|
2000
|
+
"version": "8.17.0",
|
|
2001
|
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
|
|
2002
|
+
"integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
|
|
2003
2003
|
"license": "MIT",
|
|
2004
2004
|
"bin": {
|
|
2005
2005
|
"acorn": "bin/acorn"
|
|
@@ -2145,9 +2145,9 @@
|
|
|
2145
2145
|
}
|
|
2146
2146
|
},
|
|
2147
2147
|
"node_modules/baseline-browser-mapping": {
|
|
2148
|
-
"version": "2.10.
|
|
2149
|
-
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.
|
|
2150
|
-
"integrity": "sha512-
|
|
2148
|
+
"version": "2.10.37",
|
|
2149
|
+
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz",
|
|
2150
|
+
"integrity": "sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==",
|
|
2151
2151
|
"license": "Apache-2.0",
|
|
2152
2152
|
"bin": {
|
|
2153
2153
|
"baseline-browser-mapping": "dist/cli.cjs"
|
|
@@ -2208,9 +2208,9 @@
|
|
|
2208
2208
|
"license": "MIT"
|
|
2209
2209
|
},
|
|
2210
2210
|
"node_modules/caniuse-lite": {
|
|
2211
|
-
"version": "1.0.
|
|
2212
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
2213
|
-
"integrity": "sha512-
|
|
2211
|
+
"version": "1.0.30001799",
|
|
2212
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz",
|
|
2213
|
+
"integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==",
|
|
2214
2214
|
"funding": [
|
|
2215
2215
|
{
|
|
2216
2216
|
"type": "opencollective",
|
|
@@ -2924,9 +2924,9 @@
|
|
|
2924
2924
|
}
|
|
2925
2925
|
},
|
|
2926
2926
|
"node_modules/dompurify": {
|
|
2927
|
-
"version": "3.4.
|
|
2928
|
-
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.
|
|
2929
|
-
"integrity": "sha512-
|
|
2927
|
+
"version": "3.4.10",
|
|
2928
|
+
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.10.tgz",
|
|
2929
|
+
"integrity": "sha512-0xzNv0e7oYC6yyuOGZIABPM4qtg3QxLFniDNPP4ZP90wR8Yq3zgwpRbrNiT4N3IKqDbbYFEJLV+JWEs19aZ//w==",
|
|
2930
2930
|
"license": "(MPL-2.0 OR Apache-2.0)",
|
|
2931
2931
|
"optionalDependencies": {
|
|
2932
2932
|
"@types/trusted-types": "^2.0.7"
|
|
@@ -2939,15 +2939,15 @@
|
|
|
2939
2939
|
"license": "MIT"
|
|
2940
2940
|
},
|
|
2941
2941
|
"node_modules/electron-to-chromium": {
|
|
2942
|
-
"version": "1.5.
|
|
2943
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.
|
|
2944
|
-
"integrity": "sha512-
|
|
2942
|
+
"version": "1.5.372",
|
|
2943
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz",
|
|
2944
|
+
"integrity": "sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA==",
|
|
2945
2945
|
"license": "ISC"
|
|
2946
2946
|
},
|
|
2947
2947
|
"node_modules/enhanced-resolve": {
|
|
2948
|
-
"version": "5.
|
|
2949
|
-
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.
|
|
2950
|
-
"integrity": "sha512-
|
|
2948
|
+
"version": "5.21.6",
|
|
2949
|
+
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz",
|
|
2950
|
+
"integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==",
|
|
2951
2951
|
"license": "MIT",
|
|
2952
2952
|
"dependencies": {
|
|
2953
2953
|
"graceful-fs": "^4.2.4",
|
|
@@ -2970,9 +2970,9 @@
|
|
|
2970
2970
|
}
|
|
2971
2971
|
},
|
|
2972
2972
|
"node_modules/es-toolkit": {
|
|
2973
|
-
"version": "1.47.
|
|
2974
|
-
"resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.47.
|
|
2975
|
-
"integrity": "sha512-
|
|
2973
|
+
"version": "1.47.1",
|
|
2974
|
+
"resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.47.1.tgz",
|
|
2975
|
+
"integrity": "sha512-5RAqEwf4P4E17p+W75KLOWw/nOvKZzSQpxM32IpI2KZLaVonjTrZ0Ai5ghMaVI9eKC2p8eoQgcBdkEDgzFk6+Q==",
|
|
2976
2976
|
"license": "MIT",
|
|
2977
2977
|
"workspaces": [
|
|
2978
2978
|
"docs",
|
|
@@ -6269,9 +6269,9 @@
|
|
|
6269
6269
|
"license": "MIT"
|
|
6270
6270
|
},
|
|
6271
6271
|
"node_modules/tailwindcss": {
|
|
6272
|
-
"version": "4.3.
|
|
6273
|
-
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.
|
|
6274
|
-
"integrity": "sha512-
|
|
6272
|
+
"version": "4.3.1",
|
|
6273
|
+
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.1.tgz",
|
|
6274
|
+
"integrity": "sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q==",
|
|
6275
6275
|
"license": "MIT"
|
|
6276
6276
|
},
|
|
6277
6277
|
"node_modules/tapable": {
|