@fjall/payload 0.87.20 → 0.88.1
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/adapters/secrets.d.ts.map +1 -1
- package/dist/adapters/secrets.js +3 -1
- package/dist/adapters/secrets.js.map +1 -1
- package/dist/cache/invalidate.d.ts +28 -0
- package/dist/cache/invalidate.d.ts.map +1 -0
- package/dist/cache/invalidate.js +59 -0
- package/dist/cache/invalidate.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/adapters/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/adapters/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuC7B"}
|
package/dist/adapters/secrets.js
CHANGED
|
@@ -42,8 +42,10 @@ export async function fetchSecretField(envKey) {
|
|
|
42
42
|
const data = (await response.json());
|
|
43
43
|
if (!data.SecretString)
|
|
44
44
|
return undefined;
|
|
45
|
+
if (!secretField)
|
|
46
|
+
return data.SecretString;
|
|
45
47
|
const parsed = JSON.parse(data.SecretString);
|
|
46
|
-
return
|
|
48
|
+
return parsed[secretField];
|
|
47
49
|
}
|
|
48
50
|
catch (err) {
|
|
49
51
|
console.error(`Error fetching secret ${envKey}:`, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/adapters/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,CAAC,CAAC;IAE1D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,+EAA+E;QAC/E,OAAO,CAAC,KAAK,CACX,sEAAsE,CACvE,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,qDAAqD,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,gCAAgC,EAAE,YAAY;aAC/C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAEzC,
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/adapters/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,CAAC,CAAC;IAE1D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,+EAA+E;QAC/E,OAAO,CAAC,KAAK,CACX,sEAAsE,CACvE,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,qDAAqD,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE;gBACP,gCAAgC,EAAE,YAAY;aAC/C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAEzC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAA2B,CAAC;QACvE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S3 ISR cache invalidation for OpenNext deployments.
|
|
3
|
+
*
|
|
4
|
+
* Next.js standalone mode does not expose `x-next-cache-tags` via response
|
|
5
|
+
* headers (Vercel-only). OpenNext's DynamoDB tag cache never receives
|
|
6
|
+
* tag-to-path mappings for ISR page routes. When Payload calls
|
|
7
|
+
* `revalidatePath('/about')`, there's nothing to invalidate in DynamoDB,
|
|
8
|
+
* so stale S3 cache persists indefinitely.
|
|
9
|
+
*
|
|
10
|
+
* This utility deletes the stale S3 cache entry directly, forcing Lambda
|
|
11
|
+
* to re-render from the database on next request.
|
|
12
|
+
*/
|
|
13
|
+
interface Logger {
|
|
14
|
+
info: (message: string) => void;
|
|
15
|
+
warn?: (message: string) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Delete the stale S3 ISR cache entry for a page path.
|
|
19
|
+
*
|
|
20
|
+
* - No-op when `CACHE_BUCKET_NAME` or `AWS_LAMBDA_FUNCTION_NAME` is not set
|
|
21
|
+
* - Best-effort: catches all errors, logs via optional logger, never rejects
|
|
22
|
+
*
|
|
23
|
+
* @param pagePath - The page path as passed to `revalidatePath()`, e.g. `/about`
|
|
24
|
+
* @param logger - Optional logger (`payload.logger` satisfies this)
|
|
25
|
+
*/
|
|
26
|
+
export declare function invalidateS3Cache(pagePath: string, logger?: Logger): Promise<void>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=invalidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidate.d.ts","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S3 ISR cache invalidation for OpenNext deployments.
|
|
3
|
+
*
|
|
4
|
+
* Next.js standalone mode does not expose `x-next-cache-tags` via response
|
|
5
|
+
* headers (Vercel-only). OpenNext's DynamoDB tag cache never receives
|
|
6
|
+
* tag-to-path mappings for ISR page routes. When Payload calls
|
|
7
|
+
* `revalidatePath('/about')`, there's nothing to invalidate in DynamoDB,
|
|
8
|
+
* so stale S3 cache persists indefinitely.
|
|
9
|
+
*
|
|
10
|
+
* This utility deletes the stale S3 cache entry directly, forcing Lambda
|
|
11
|
+
* to re-render from the database on next request.
|
|
12
|
+
*/
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
// Module-level caches: Lambda reuses modules across invocations,
|
|
15
|
+
// so caching avoids repeated file reads and client construction.
|
|
16
|
+
let cachedBuildId = null;
|
|
17
|
+
let cachedS3Client = null;
|
|
18
|
+
function getBuildId() {
|
|
19
|
+
if (cachedBuildId !== null)
|
|
20
|
+
return cachedBuildId;
|
|
21
|
+
cachedBuildId = readFileSync("/var/task/.next/BUILD_ID", "utf8").trim();
|
|
22
|
+
return cachedBuildId;
|
|
23
|
+
}
|
|
24
|
+
function pageToCacheKey(buildId, pagePath) {
|
|
25
|
+
const normalised = pagePath === "/" ? "/index" : pagePath;
|
|
26
|
+
return `${buildId}${normalised}.cache`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Delete the stale S3 ISR cache entry for a page path.
|
|
30
|
+
*
|
|
31
|
+
* - No-op when `CACHE_BUCKET_NAME` or `AWS_LAMBDA_FUNCTION_NAME` is not set
|
|
32
|
+
* - Best-effort: catches all errors, logs via optional logger, never rejects
|
|
33
|
+
*
|
|
34
|
+
* @param pagePath - The page path as passed to `revalidatePath()`, e.g. `/about`
|
|
35
|
+
* @param logger - Optional logger (`payload.logger` satisfies this)
|
|
36
|
+
*/
|
|
37
|
+
export async function invalidateS3Cache(pagePath, logger) {
|
|
38
|
+
try {
|
|
39
|
+
const bucket = process.env.CACHE_BUCKET_NAME;
|
|
40
|
+
const isLambda = process.env.AWS_LAMBDA_FUNCTION_NAME;
|
|
41
|
+
if (!bucket || !isLambda)
|
|
42
|
+
return;
|
|
43
|
+
const buildId = getBuildId();
|
|
44
|
+
const key = pageToCacheKey(buildId, pagePath);
|
|
45
|
+
if (!cachedS3Client) {
|
|
46
|
+
const { S3Client } = await import("@aws-sdk/client-s3");
|
|
47
|
+
cachedS3Client = new S3Client({});
|
|
48
|
+
}
|
|
49
|
+
const { DeleteObjectCommand } = await import("@aws-sdk/client-s3");
|
|
50
|
+
const command = new DeleteObjectCommand({ Bucket: bucket, Key: key });
|
|
51
|
+
await cachedS3Client.send(command);
|
|
52
|
+
logger?.info(`[fjall] Invalidated S3 cache: ${key}`);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
56
|
+
logger?.warn?.(`[fjall] S3 cache invalidation failed for ${pagePath}: ${message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=invalidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../src/cache/invalidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,iEAAiE;AACjE,iEAAiE;AACjE,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,SAAS,UAAU;IACjB,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC;IACjD,aAAa,GAAG,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,QAAgB;IACvD,MAAM,UAAU,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,OAAO,GAAG,OAAO,GAAG,UAAU,QAAQ,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,MAAe;IAEf,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAEtD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEjC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxD,cAAc,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,EAAE,IAAI,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,MAAM,EAAE,IAAI,EAAE,CACZ,4CAA4C,QAAQ,KAAK,OAAO,EAAE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -34,4 +34,5 @@ export { fjallPostgresAdapter, type FjallPostgresAdapterOptions, } from "./adapt
|
|
|
34
34
|
export { fetchSecretField } from "./adapters/secrets.js";
|
|
35
35
|
export { awsS3Storage, type AwsS3StorageOptions } from "./storage/s3.js";
|
|
36
36
|
export { fjallDefaults, isProduction, isLambda, isBuildTime, conditionalStaticDir, } from "./config/defaults.js";
|
|
37
|
+
export { invalidateS3Cache } from "./cache/invalidate.js";
|
|
37
38
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -38,4 +38,6 @@ export { fetchSecretField } from "./adapters/secrets.js";
|
|
|
38
38
|
export { awsS3Storage } from "./storage/s3.js";
|
|
39
39
|
// Configuration helpers
|
|
40
40
|
export { fjallDefaults, isProduction, isLambda, isBuildTime, conditionalStaticDir, } from "./config/defaults.js";
|
|
41
|
+
// S3 ISR cache invalidation
|
|
42
|
+
export { invalidateS3Cache } from "./cache/invalidate.js";
|
|
41
43
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,mBAAmB;AACnB,OAAO,EACL,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAEhC,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AAEzE,wBAAwB;AACxB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,mBAAmB;AACnB,OAAO,EACL,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAEhC,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AAEzE,wBAAwB;AACxB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjall/payload",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.88.1",
|
|
4
4
|
"description": "Fjall AWS adapters and utilities for Payload CMS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -31,11 +31,15 @@
|
|
|
31
31
|
"author": "",
|
|
32
32
|
"license": "ISC",
|
|
33
33
|
"peerDependencies": {
|
|
34
|
+
"@aws-sdk/client-s3": "^3.0.0",
|
|
34
35
|
"@payloadcms/db-postgres": "^3.0.0",
|
|
35
36
|
"@payloadcms/storage-s3": "^3.0.0",
|
|
36
37
|
"payload": "^3.0.0"
|
|
37
38
|
},
|
|
38
39
|
"peerDependenciesMeta": {
|
|
40
|
+
"@aws-sdk/client-s3": {
|
|
41
|
+
"optional": true
|
|
42
|
+
},
|
|
39
43
|
"@payloadcms/db-postgres": {
|
|
40
44
|
"optional": false
|
|
41
45
|
},
|
|
@@ -44,6 +48,7 @@
|
|
|
44
48
|
}
|
|
45
49
|
},
|
|
46
50
|
"devDependencies": {
|
|
51
|
+
"@aws-sdk/client-s3": "^3.985.0",
|
|
47
52
|
"@payloadcms/db-postgres": "^3.73.0",
|
|
48
53
|
"@payloadcms/storage-s3": "^3.73.0",
|
|
49
54
|
"@types/node": "^22.0.0",
|
|
@@ -51,5 +56,5 @@
|
|
|
51
56
|
"typescript": "^5.8.2",
|
|
52
57
|
"vitest": "^3.2.3"
|
|
53
58
|
},
|
|
54
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "0c0785e2908bff823b0630a4fa896748384c265f"
|
|
55
60
|
}
|