@demiurgejs/core 0.2.0-beta.4 → 0.2.0-beta.6
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/README.md +37 -0
- package/bin/demiurge.mjs +23 -1
- package/dist/adapter/index.d.ts +1 -1
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/browser/file-router.d.ts +1 -1
- package/dist/chunks/{document-shell-CpJnFtSC.js → document-shell-C0aPrkhd.js} +2 -2
- package/dist/chunks/{document-shell-CpJnFtSC.js.map → document-shell-C0aPrkhd.js.map} +1 -1
- package/dist/chunks/image-CRerJ5BY.js +145 -0
- package/dist/chunks/image-CRerJ5BY.js.map +1 -0
- package/dist/chunks/{image-codec-BmzWnH6W.js → image-codec-CQ8Cwxwb.js} +2 -2
- package/dist/chunks/{image-codec-BmzWnH6W.js.map → image-codec-CQ8Cwxwb.js.map} +1 -1
- package/dist/chunks/{images-BQ80950B.js → images-QgdmLyQ3.js} +11 -11
- package/dist/chunks/{images-BQ80950B.js.map → images-QgdmLyQ3.js.map} +1 -1
- package/dist/chunks/{index-BVk9zWbe.js → index-LYve1rQp.js} +287 -351
- package/dist/chunks/index-LYve1rQp.js.map +1 -0
- package/dist/chunks/links-iU22QkCE.js +68 -0
- package/dist/chunks/links-iU22QkCE.js.map +1 -0
- package/dist/chunks/plugin-bkP6WwrS.js +2311 -0
- package/dist/chunks/plugin-bkP6WwrS.js.map +1 -0
- package/dist/chunks/runtime-BH519j2t.js +294 -0
- package/dist/chunks/runtime-BH519j2t.js.map +1 -0
- package/dist/chunks/streaming-BlKlC3nw.js +427 -0
- package/dist/chunks/streaming-BlKlC3nw.js.map +1 -0
- package/dist/chunks/{testing-DueXbMo4.js → testing-BEW1nchS.js} +2161 -1562
- package/dist/chunks/testing-BEW1nchS.js.map +1 -0
- package/dist/chunks/{vite-DO70kZA6.js → vite-BADZA8Fl.js} +90 -87
- package/dist/chunks/vite-BADZA8Fl.js.map +1 -0
- package/dist/cli.d.ts +10 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +277 -87
- package/dist/cli.js.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/types.d.ts +14 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/data/cache.d.ts +5 -0
- package/dist/data/cache.d.ts.map +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/testing.d.ts.map +1 -1
- package/dist/data/testing.js +101 -67
- package/dist/data/testing.js.map +1 -1
- package/dist/data/tiered.d.ts.map +1 -1
- package/dist/edge/index.js +27 -26
- package/dist/edge/index.js.map +1 -1
- package/dist/edge/stores.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +158 -135
- package/dist/index.js.map +1 -1
- package/dist/inspect/command.d.ts +28 -0
- package/dist/inspect/command.d.ts.map +1 -0
- package/dist/inspect/index.d.ts +9 -0
- package/dist/inspect/index.d.ts.map +1 -0
- package/dist/inspect/redact.d.ts +35 -0
- package/dist/inspect/redact.d.ts.map +1 -0
- package/dist/inspect/report.d.ts +24 -0
- package/dist/inspect/report.d.ts.map +1 -0
- package/dist/inspect/types.d.ts +102 -0
- package/dist/inspect/types.d.ts.map +1 -0
- package/dist/internal/testing.js +12 -12
- package/dist/kv/index.js +7 -6
- package/dist/kv/index.js.map +1 -1
- package/dist/kv/store.d.ts.map +1 -1
- package/dist/node/http.d.ts +7 -0
- package/dist/node/http.d.ts.map +1 -1
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +31 -28
- package/dist/node/index.js.map +1 -1
- package/dist/node/serve.d.ts +4 -0
- package/dist/node/serve.d.ts.map +1 -1
- package/dist/redis/index.js +29 -28
- package/dist/redis/index.js.map +1 -1
- package/dist/redis/store.d.ts.map +1 -1
- package/dist/route/index.d.ts +1 -0
- package/dist/route/index.d.ts.map +1 -1
- package/dist/route/mutation.d.ts.map +1 -1
- package/dist/route/serialization.d.ts +24 -0
- package/dist/route/serialization.d.ts.map +1 -0
- package/dist/route/webhook.d.ts +6 -1
- package/dist/route/webhook.d.ts.map +1 -1
- package/dist/router/manifest.d.ts.map +1 -1
- package/dist/security/audit.d.ts +2 -1
- package/dist/security/audit.d.ts.map +1 -1
- package/dist/security/authorization.d.ts +36 -0
- package/dist/security/authorization.d.ts.map +1 -0
- package/dist/security/csrf.d.ts.map +1 -1
- package/dist/security/env-startup.d.ts +0 -2
- package/dist/security/env-startup.d.ts.map +1 -1
- package/dist/security/env.d.ts +27 -8
- package/dist/security/env.d.ts.map +1 -1
- package/dist/security/exceptions.d.ts +29 -0
- package/dist/security/exceptions.d.ts.map +1 -0
- package/dist/security/finding-codes.d.ts +56 -0
- package/dist/security/finding-codes.d.ts.map +1 -0
- package/dist/security/index.d.ts +5 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/policy.d.ts +2 -5
- package/dist/security/policy.d.ts.map +1 -1
- package/dist/security/report.d.ts +2 -1
- package/dist/security/report.d.ts.map +1 -1
- package/dist/security/request.d.ts +1 -0
- package/dist/security/request.d.ts.map +1 -1
- package/dist/security/types.d.ts +138 -5
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/upload.d.ts +3 -3
- package/dist/security/upload.d.ts.map +1 -1
- package/dist/security/verification.d.ts.map +1 -1
- package/dist/server/request-handler.d.ts +3 -2
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server-only/browser.d.ts +2 -0
- package/dist/server-only/browser.d.ts.map +1 -0
- package/dist/server-only/browser.js +4 -0
- package/dist/server-only/browser.js.map +1 -0
- package/dist/server-only/index.d.ts +2 -0
- package/dist/server-only/index.d.ts.map +1 -0
- package/dist/server-only/index.js +2 -0
- package/dist/server-only/index.js.map +1 -0
- package/dist/static/index.d.ts.map +1 -1
- package/dist/static/index.js +255 -255
- package/dist/static/index.js.map +1 -1
- package/dist/static/testing.d.ts +26 -0
- package/dist/static/testing.d.ts.map +1 -0
- package/dist/static/testing.js +76 -0
- package/dist/static/testing.js.map +1 -0
- package/dist/testing/index.d.ts +47 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +99 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/vercel/build.d.ts +31 -0
- package/dist/vercel/build.d.ts.map +1 -0
- package/dist/vercel/config.d.ts +15 -0
- package/dist/vercel/config.d.ts.map +1 -0
- package/dist/vercel/index.d.ts +7 -0
- package/dist/vercel/index.d.ts.map +1 -0
- package/dist/vercel/index.js +11 -0
- package/dist/vercel/index.js.map +1 -0
- package/dist/vercel/runtime.d.ts +29 -0
- package/dist/vercel/runtime.d.ts.map +1 -0
- package/dist/vite/index.d.ts +9 -4
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +28 -21
- package/dist/vite/plugin.d.ts +18 -2
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/vite/policy-verification.d.ts +33 -2
- package/dist/vite/policy-verification.d.ts.map +1 -1
- package/dist/vite/route-audit.d.ts +14 -2
- package/dist/vite/route-audit.d.ts.map +1 -1
- package/dist/vite/server-only-boundary.d.ts +8 -0
- package/dist/vite/server-only-boundary.d.ts.map +1 -0
- package/package.json +18 -1
- package/dist/chunks/env-startup-DOBYWlZD.js +0 -257
- package/dist/chunks/env-startup-DOBYWlZD.js.map +0 -1
- package/dist/chunks/index-BVk9zWbe.js.map +0 -1
- package/dist/chunks/plugin-BQgMiHxa.js +0 -1827
- package/dist/chunks/plugin-BQgMiHxa.js.map +0 -1
- package/dist/chunks/streaming-BEbPN7Uk.js +0 -469
- package/dist/chunks/streaming-BEbPN7Uk.js.map +0 -1
- package/dist/chunks/testing-DueXbMo4.js.map +0 -1
- package/dist/chunks/vite-DO70kZA6.js.map +0 -1
package/dist/config/types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { ImagePolicy } from "../platform/images";
|
|
|
4
4
|
import type { LocaleConfiguration } from "../routing";
|
|
5
5
|
import type { EnvSchema } from "../security/env";
|
|
6
6
|
import type { StaticFileHeaderPatternRule, VercelStaticDeployment } from "../static";
|
|
7
|
+
import type { VercelNodeDeployment } from "../vercel/config";
|
|
7
8
|
export type DemiurgeRoutingConfig<Locale extends string = string> = {
|
|
8
9
|
locales?: LocaleConfiguration<Locale>;
|
|
9
10
|
routesDir?: string;
|
|
@@ -26,8 +27,9 @@ export type DemiurgeAssetsConfig = {
|
|
|
26
27
|
images?: ImagePolicy;
|
|
27
28
|
};
|
|
28
29
|
export type DemiurgeServerDeploymentConfig = {
|
|
29
|
-
entry
|
|
30
|
+
entry?: string;
|
|
30
31
|
outDir?: string;
|
|
32
|
+
provider?: VercelNodeDeployment;
|
|
31
33
|
};
|
|
32
34
|
export type DemiurgeStaticDeploymentConfig = {
|
|
33
35
|
origin?: string;
|
|
@@ -55,7 +57,17 @@ export type DemiurgeConfig<Locale extends string = string> = {
|
|
|
55
57
|
routing?: DemiurgeRoutingConfig<Locale>;
|
|
56
58
|
security?: DemiurgeSecurityConfig;
|
|
57
59
|
vite?: DemiurgeViteExtension;
|
|
58
|
-
|
|
60
|
+
/**
|
|
61
|
+
* This callback is unsafe and unstable.
|
|
62
|
+
*
|
|
63
|
+
* It has no compatibility guarantee between Demiurge versions. It receives
|
|
64
|
+
* the resolved Vite configuration of the framework, after the framework
|
|
65
|
+
* adds its own build-time security plugins. Those plugins enforce the
|
|
66
|
+
* server-only module boundary and the client environment boundary. An
|
|
67
|
+
* application that removes or reorders a framework plugin in this callback
|
|
68
|
+
* loses that boundary. The application then owns the removed boundary.
|
|
69
|
+
*/
|
|
70
|
+
unsafe_unstable_viteConfig?: (config: ViteUserConfig) => ViteUserConfig | Promise<ViteUserConfig>;
|
|
59
71
|
};
|
|
60
72
|
export type ResolvedDemiurgeConfig = DemiurgeConfig & {
|
|
61
73
|
configFile: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/config/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AA2BD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,GACjB,cAAc,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/config/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AA2BD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,GACjB,cAAc,CA6IhB;AA4HD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,UAW3C"}
|
package/dist/data/cache.d.ts
CHANGED
|
@@ -46,7 +46,12 @@ export type CacheStoreEntry = {
|
|
|
46
46
|
tags: readonly string[];
|
|
47
47
|
value: unknown;
|
|
48
48
|
};
|
|
49
|
+
export type CacheStoreAtomicity = "best-effort" | "strong";
|
|
50
|
+
export type CacheStoreCapabilities = {
|
|
51
|
+
atomicity: CacheStoreAtomicity;
|
|
52
|
+
};
|
|
49
53
|
export type CacheStore = {
|
|
54
|
+
capabilities: CacheStoreCapabilities;
|
|
50
55
|
acquireRefreshLease?: (key: string, token: string, expiresAt: number) => MaybePromise<boolean>;
|
|
51
56
|
delete: (key: string) => MaybePromise<boolean>;
|
|
52
57
|
get: (key: string) => MaybePromise<CacheStoreEntry | undefined>;
|
package/dist/data/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/data/cache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/data/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { cacheNotFound, CacheNotFoundError, createCache, createInvalidation, createMemoryCache, createMemoryCacheStore, defineTags, isCacheNotFoundError, parseCacheDuration, query, serializeCacheKey, serializeCacheNamespace, serializeCacheTag, tag, } from "./cache";
|
|
2
2
|
export { createMemoryIdempotencyStore, runIdempotentMutation, } from "./idempotency";
|
|
3
3
|
export { createTieredCacheStore } from "./tiered";
|
|
4
|
-
export type { Cache, CacheDuration, CacheKey, CacheKeyPart, CacheRequest, CacheScope, CacheNamespace, CacheStore, CacheStoreEntry, CacheTag, CreateCacheOptions, Invalidation, InvalidationResult, Query, QueryDefinition, MemoryCacheOptions, MemoryCacheStoreOptions, } from "./cache";
|
|
4
|
+
export type { Cache, CacheDuration, CacheKey, CacheKeyPart, CacheRequest, CacheStoreAtomicity, CacheStoreCapabilities, CacheScope, CacheNamespace, CacheStore, CacheStoreEntry, CacheTag, CreateCacheOptions, Invalidation, InvalidationResult, Query, QueryDefinition, MemoryCacheOptions, MemoryCacheStoreOptions, } from "./cache";
|
|
5
5
|
export type { TieredCacheStoreOptions } from "./tiered";
|
|
6
6
|
export type { IdempotencyRequest, IdempotencyResult, IdempotencyStore, MemoryIdempotencyStoreOptions, } from "./idempotency";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/data/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,GAAG,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EACV,KAAK,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,GAAG,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EACV,KAAK,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/data/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAE3D,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;AAE/D,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/data/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAE3D,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;AAE/D,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,iBAAiB,iBAuI/B;AAED,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,iBAAiB,iBAqG/B"}
|
package/dist/data/testing.js
CHANGED
|
@@ -1,156 +1,190 @@
|
|
|
1
|
-
async function
|
|
2
|
-
const e = await
|
|
3
|
-
expiresAt:
|
|
4
|
-
staleUntil:
|
|
1
|
+
async function $(n) {
|
|
2
|
+
const e = await n(), s = `demiurge-contract:${Date.now()}:${Math.random()}`, a = `${s}:alpha`, u = `${s}:beta`, r = `${s}:gamma`, g = `${s}:delta`, o = `${s}:atomic`, l = `${s}:tag:alpha`, m = `${s}:tag:beta`, w = `${s}:tag:delta`, i = Date.now() + 6e4, h = {
|
|
3
|
+
expiresAt: i,
|
|
4
|
+
staleUntil: i + 5e3,
|
|
5
5
|
tags: [l],
|
|
6
6
|
value: { id: "alpha", revision: 1 }
|
|
7
7
|
};
|
|
8
8
|
try {
|
|
9
|
+
if (t(
|
|
10
|
+
e.capabilities.atomicity === "best-effort" || e.capabilities.atomicity === "strong",
|
|
11
|
+
"capabilities.atomicity must be `best-effort` or `strong`"
|
|
12
|
+
), e.capabilities.atomicity === "strong") {
|
|
13
|
+
const f = `${s}:tag:atomic`;
|
|
14
|
+
await e.set(o, {
|
|
15
|
+
expiresAt: i,
|
|
16
|
+
staleUntil: i,
|
|
17
|
+
tags: [f],
|
|
18
|
+
value: "atomic"
|
|
19
|
+
});
|
|
20
|
+
const y = await Promise.all([
|
|
21
|
+
e.invalidateTags([f]),
|
|
22
|
+
e.invalidateTags([f])
|
|
23
|
+
]);
|
|
24
|
+
t(
|
|
25
|
+
y.reduce((p, b) => p + b, 0) === 1,
|
|
26
|
+
"strong atomicity must count one concurrent tag invalidation exactly once"
|
|
27
|
+
), t(
|
|
28
|
+
await e.get(o) === void 0,
|
|
29
|
+
"strong atomicity must remove an entry during concurrent tag invalidation"
|
|
30
|
+
);
|
|
31
|
+
}
|
|
9
32
|
t(
|
|
10
33
|
await e.get(a) === void 0,
|
|
11
34
|
"get() must return undefined for a missing key"
|
|
12
|
-
), await e.set(a, h),
|
|
13
|
-
const
|
|
35
|
+
), await e.set(a, h), v(await e.get(a), h, "set() then get()");
|
|
36
|
+
const d = {
|
|
14
37
|
...h,
|
|
15
38
|
value: { id: "alpha", revision: 2 }
|
|
16
39
|
};
|
|
17
|
-
await e.set(a,
|
|
40
|
+
await e.set(a, d), v(
|
|
18
41
|
await e.get(a),
|
|
19
|
-
|
|
42
|
+
d,
|
|
20
43
|
"set() must replace an existing key"
|
|
21
|
-
), await e.set(
|
|
22
|
-
expiresAt:
|
|
23
|
-
staleUntil:
|
|
24
|
-
tags: [
|
|
44
|
+
), await e.set(u, {
|
|
45
|
+
expiresAt: i + 1e4,
|
|
46
|
+
staleUntil: i + 15e3,
|
|
47
|
+
tags: [m],
|
|
25
48
|
value: "beta"
|
|
26
|
-
}), await e.set(
|
|
27
|
-
expiresAt:
|
|
28
|
-
staleUntil:
|
|
29
|
-
tags: [l,
|
|
49
|
+
}), await e.set(r, {
|
|
50
|
+
expiresAt: i + 2e4,
|
|
51
|
+
staleUntil: i + 25e3,
|
|
52
|
+
tags: [l, m],
|
|
30
53
|
value: ["gamma"]
|
|
31
54
|
}), t(
|
|
32
55
|
await e.invalidateTags([l]) === 2,
|
|
33
56
|
"invalidateTags() must return the number of entries deleted, counting each entry once"
|
|
34
57
|
), t(
|
|
35
|
-
await e.get(a) === void 0 && await e.get(
|
|
58
|
+
await e.get(a) === void 0 && await e.get(r) === void 0,
|
|
36
59
|
"invalidateTags() must delete every entry carrying a matching tag"
|
|
37
60
|
), t(
|
|
38
|
-
(await e.get(
|
|
61
|
+
(await e.get(u))?.value === "beta",
|
|
39
62
|
"invalidateTags() must preserve entries with no matching tag"
|
|
40
63
|
), t(
|
|
41
|
-
await e.delete(
|
|
64
|
+
await e.delete(u) === !0,
|
|
42
65
|
"delete() must report an existing key"
|
|
43
66
|
), t(
|
|
44
|
-
await e.delete(
|
|
67
|
+
await e.delete(u) === !1,
|
|
45
68
|
"delete() must report a missing key"
|
|
46
69
|
);
|
|
47
|
-
const
|
|
48
|
-
expiresAt:
|
|
70
|
+
const c = {
|
|
71
|
+
expiresAt: i,
|
|
49
72
|
negative: !0,
|
|
50
|
-
staleUntil:
|
|
51
|
-
tags: [
|
|
73
|
+
staleUntil: i,
|
|
74
|
+
tags: [w],
|
|
52
75
|
value: "not found"
|
|
53
76
|
};
|
|
54
|
-
await e.set(
|
|
55
|
-
await e.get(
|
|
56
|
-
|
|
77
|
+
await e.set(g, c), v(
|
|
78
|
+
await e.get(g),
|
|
79
|
+
c,
|
|
57
80
|
"set() then get() for a negative entry"
|
|
58
81
|
), t(
|
|
59
|
-
await e.invalidateTags([
|
|
82
|
+
await e.invalidateTags([w]) === 1,
|
|
60
83
|
"invalidateTags() must delete a negative entry carrying a matching tag"
|
|
61
84
|
), t(
|
|
62
|
-
await e.get(
|
|
85
|
+
await e.get(g) === void 0,
|
|
63
86
|
"invalidateTags() must remove a negative entry the same as a positive one"
|
|
64
87
|
);
|
|
65
88
|
} finally {
|
|
66
89
|
await Promise.all([
|
|
67
90
|
e.delete(a),
|
|
68
|
-
e.delete(o),
|
|
69
91
|
e.delete(u),
|
|
70
|
-
e.delete(r)
|
|
92
|
+
e.delete(r),
|
|
93
|
+
e.delete(g),
|
|
94
|
+
e.delete(o)
|
|
71
95
|
]);
|
|
72
96
|
}
|
|
73
97
|
}
|
|
74
|
-
async function
|
|
75
|
-
const e = await
|
|
98
|
+
async function R(n) {
|
|
99
|
+
const e = await n(), s = `demiurge-refresh-contract:${Date.now()}:${Math.random()}`, a = `${s}:entry`, u = `${s}:tag`, r = `${s}:first`, g = `${s}:second`, o = Date.now() + 6e4;
|
|
76
100
|
t(
|
|
77
101
|
!!(e.acquireRefreshLease && e.publishRefresh && e.releaseRefreshLease),
|
|
78
102
|
"SWR support requires acquireRefreshLease(), publishRefresh(), and releaseRefreshLease()"
|
|
79
103
|
);
|
|
80
|
-
const
|
|
104
|
+
const l = e.acquireRefreshLease, m = e.publishRefresh, w = e.releaseRefreshLease, i = {
|
|
81
105
|
expiresAt: Date.now() - 1,
|
|
82
106
|
staleUntil: Date.now() + 12e4,
|
|
83
|
-
tags: [
|
|
107
|
+
tags: [u],
|
|
84
108
|
value: "original"
|
|
85
|
-
},
|
|
86
|
-
...
|
|
109
|
+
}, h = {
|
|
110
|
+
...i,
|
|
87
111
|
expiresAt: Date.now() + 6e4,
|
|
88
112
|
value: "refreshed"
|
|
89
113
|
};
|
|
90
114
|
try {
|
|
91
|
-
await e.set(a,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
115
|
+
await e.set(a, i);
|
|
116
|
+
let d, c;
|
|
117
|
+
if (e.capabilities.atomicity === "strong") {
|
|
118
|
+
const f = await Promise.all([
|
|
119
|
+
l(a, r, o),
|
|
120
|
+
l(a, g, o)
|
|
121
|
+
]);
|
|
122
|
+
t(
|
|
123
|
+
f.filter(Boolean).length === 1,
|
|
124
|
+
"strong atomicity must allow exactly one concurrent refresh lease owner"
|
|
125
|
+
), d = f[0] ? r : g, c = f[0] ? g : r;
|
|
126
|
+
} else
|
|
127
|
+
t(
|
|
128
|
+
await l(a, r, o),
|
|
129
|
+
"acquireRefreshLease() must acquire an unowned key"
|
|
130
|
+
), d = r, c = g;
|
|
131
|
+
t(
|
|
132
|
+
!await m(a, c, h),
|
|
99
133
|
"publishRefresh() must reject a non-owner token"
|
|
100
|
-
), await
|
|
101
|
-
!await
|
|
134
|
+
), await w(a, c), t(
|
|
135
|
+
!await l(a, c, o),
|
|
102
136
|
"releaseRefreshLease() must not release another owner's lease"
|
|
103
137
|
), t(
|
|
104
|
-
await
|
|
138
|
+
await m(a, d, h),
|
|
105
139
|
"publishRefresh() must atomically publish for the current owner"
|
|
106
|
-
),
|
|
140
|
+
), v(
|
|
107
141
|
await e.get(a),
|
|
108
|
-
|
|
142
|
+
h,
|
|
109
143
|
"publishRefresh() for the current owner"
|
|
110
144
|
), t(
|
|
111
|
-
await
|
|
145
|
+
await l(a, c, o),
|
|
112
146
|
"successful publication must release the refresh lease"
|
|
113
147
|
), t(await e.delete(a), "delete() must remove the refreshed entry"), t(
|
|
114
|
-
!await
|
|
148
|
+
!await m(a, c, i),
|
|
115
149
|
"delete() must cancel an in-flight refresh lease"
|
|
116
|
-
), await e.set(a,
|
|
117
|
-
await
|
|
150
|
+
), await e.set(a, i), t(
|
|
151
|
+
await l(a, r, o),
|
|
118
152
|
"a lease must be reusable after deletion"
|
|
119
153
|
), t(
|
|
120
|
-
await e.invalidateTags([
|
|
154
|
+
await e.invalidateTags([u]) === 1,
|
|
121
155
|
"invalidateTags() must remove the leased entry"
|
|
122
156
|
), t(
|
|
123
|
-
!await
|
|
157
|
+
!await m(a, r, h),
|
|
124
158
|
"tag invalidation must cancel an in-flight refresh lease"
|
|
125
159
|
);
|
|
126
160
|
} finally {
|
|
127
161
|
await e.delete(a);
|
|
128
162
|
}
|
|
129
163
|
}
|
|
130
|
-
function
|
|
131
|
-
t(!!
|
|
132
|
-
|
|
164
|
+
function v(n, e, s) {
|
|
165
|
+
t(!!n, `${s} must preserve the entry`), t(
|
|
166
|
+
n?.expiresAt === e.expiresAt,
|
|
133
167
|
`${s} must preserve expiresAt`
|
|
134
168
|
), t(
|
|
135
|
-
!!
|
|
169
|
+
!!n?.negative == !!e.negative,
|
|
136
170
|
`${s} must preserve the negative flag`
|
|
137
171
|
), t(
|
|
138
|
-
|
|
172
|
+
n?.staleUntil === e.staleUntil,
|
|
139
173
|
`${s} must preserve staleUntil`
|
|
140
174
|
), t(
|
|
141
|
-
JSON.stringify(
|
|
175
|
+
JSON.stringify(n?.tags) === JSON.stringify(e.tags),
|
|
142
176
|
`${s} must preserve tags`
|
|
143
177
|
), t(
|
|
144
|
-
JSON.stringify(
|
|
178
|
+
JSON.stringify(n?.value) === JSON.stringify(e.value),
|
|
145
179
|
`${s} must preserve JSON-compatible values`
|
|
146
180
|
);
|
|
147
181
|
}
|
|
148
|
-
function t(
|
|
149
|
-
if (!
|
|
182
|
+
function t(n, e) {
|
|
183
|
+
if (!n)
|
|
150
184
|
throw new Error(`Cache store contract failed: ${e}.`);
|
|
151
185
|
}
|
|
152
186
|
export {
|
|
153
|
-
|
|
154
|
-
|
|
187
|
+
$ as verifyCacheStoreContract,
|
|
188
|
+
R as verifyCacheStoreRefreshContract
|
|
155
189
|
};
|
|
156
190
|
//# sourceMappingURL=testing.js.map
|
package/dist/data/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sources":["../../src/data/testing.ts"],"sourcesContent":["import type { CacheStore, CacheStoreEntry } from \"./cache\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type CacheStoreFactory = () => MaybePromise<CacheStore>;\n\nexport async function verifyCacheStoreContract(\n createStore: CacheStoreFactory,\n) {\n const store = await createStore();\n const prefix = `demiurge-contract:${Date.now()}:${Math.random()}`;\n const alphaKey = `${prefix}:alpha`;\n const betaKey = `${prefix}:beta`;\n const gammaKey = `${prefix}:gamma`;\n const deltaKey = `${prefix}:delta`;\n const alphaTag = `${prefix}:tag:alpha`;\n const betaTag = `${prefix}:tag:beta`;\n const deltaTag = `${prefix}:tag:delta`;\n const future = Date.now() + 60_000;\n const alpha = {\n expiresAt: future,\n staleUntil: future + 5_000,\n tags: [alphaTag],\n value: { id: \"alpha\", revision: 1 },\n } satisfies CacheStoreEntry;\n\n try {\n assert(\n await store.get(alphaKey) === undefined,\n \"get() must return undefined for a missing key\",\n );\n\n await store.set(alphaKey, alpha);\n assertEntry(await store.get(alphaKey), alpha, \"set() then get()\");\n\n const updatedAlpha = {\n ...alpha,\n value: { id: \"alpha\", revision: 2 },\n } satisfies CacheStoreEntry;\n await store.set(alphaKey, updatedAlpha);\n assertEntry(\n await store.get(alphaKey),\n updatedAlpha,\n \"set() must replace an existing key\",\n );\n\n await store.set(betaKey, {\n expiresAt: future + 10_000,\n staleUntil: future + 15_000,\n tags: [betaTag],\n value: \"beta\",\n });\n await store.set(gammaKey, {\n expiresAt: future + 20_000,\n staleUntil: future + 25_000,\n tags: [alphaTag, betaTag],\n value: [\"gamma\"],\n });\n\n assert(\n await store.invalidateTags([alphaTag]) === 2,\n \"invalidateTags() must return the number of entries deleted, counting each entry once\",\n );\n assert(\n await store.get(alphaKey) === undefined &&\n await store.get(gammaKey) === undefined,\n \"invalidateTags() must delete every entry carrying a matching tag\",\n );\n assert(\n (await store.get(betaKey))?.value === \"beta\",\n \"invalidateTags() must preserve entries with no matching tag\",\n );\n assert(\n await store.delete(betaKey) === true,\n \"delete() must report an existing key\",\n );\n assert(\n await store.delete(betaKey) === false,\n \"delete() must report a missing key\",\n );\n\n // A negative entry (a loader's `cacheNotFound()` result) round-trips\n // like any other entry, and tag invalidation clears it the same way it\n // clears a positive result.\n const delta = {\n expiresAt: future,\n negative: true,\n staleUntil: future,\n tags: [deltaTag],\n value: \"not found\",\n } satisfies CacheStoreEntry;\n\n await store.set(deltaKey, delta);\n assertEntry(\n await store.get(deltaKey),\n delta,\n \"set() then get() for a negative entry\",\n );\n assert(\n await store.invalidateTags([deltaTag]) === 1,\n \"invalidateTags() must delete a negative entry carrying a matching tag\",\n );\n assert(\n await store.get(deltaKey) === undefined,\n \"invalidateTags() must remove a negative entry the same as a positive one\",\n );\n } finally {\n await Promise.all([\n store.delete(alphaKey),\n store.delete(betaKey),\n store.delete(gammaKey),\n store.delete(deltaKey),\n ]);\n }\n}\n\nexport async function verifyCacheStoreRefreshContract(\n createStore: CacheStoreFactory,\n) {\n const store = await createStore();\n const prefix = `demiurge-refresh-contract:${Date.now()}:${Math.random()}`;\n const key = `${prefix}:entry`;\n const tag = `${prefix}:tag`;\n const firstToken = `${prefix}:first`;\n const secondToken = `${prefix}:second`;\n const leaseExpiresAt = Date.now() + 60_000;\n\n assert(\n Boolean(\n store.acquireRefreshLease &&\n store.publishRefresh &&\n store.releaseRefreshLease,\n ),\n \"SWR support requires acquireRefreshLease(), publishRefresh(), and releaseRefreshLease()\",\n );\n\n const acquireRefreshLease = store.acquireRefreshLease!;\n const publishRefresh = store.publishRefresh!;\n const releaseRefreshLease = store.releaseRefreshLease!;\n const original = {\n expiresAt: Date.now() - 1,\n staleUntil: Date.now() + 120_000,\n tags: [tag],\n value: \"original\",\n } satisfies CacheStoreEntry;\n const refreshed = {\n ...original,\n expiresAt: Date.now() + 60_000,\n value: \"refreshed\",\n } satisfies CacheStoreEntry;\n\n try {\n await store.set(key, original);\n assert(\n await acquireRefreshLease(key, firstToken, leaseExpiresAt),\n \"acquireRefreshLease() must acquire an unowned key\",\n );\n assert(\n !await acquireRefreshLease(key, secondToken, leaseExpiresAt),\n \"acquireRefreshLease() must exclude a second owner\",\n );\n assert(\n !await publishRefresh(key, secondToken, refreshed),\n \"publishRefresh() must reject a non-owner token\",\n );\n await releaseRefreshLease(key, secondToken);\n assert(\n !await acquireRefreshLease(key, secondToken, leaseExpiresAt),\n \"releaseRefreshLease() must not release another owner's lease\",\n );\n assert(\n await publishRefresh(key, firstToken, refreshed),\n \"publishRefresh() must atomically publish for the current owner\",\n );\n assertEntry(\n await store.get(key),\n refreshed,\n \"publishRefresh() for the current owner\",\n );\n assert(\n await acquireRefreshLease(key, secondToken, leaseExpiresAt),\n \"successful publication must release the refresh lease\",\n );\n assert(await store.delete(key), \"delete() must remove the refreshed entry\");\n assert(\n !await publishRefresh(key, secondToken, original),\n \"delete() must cancel an in-flight refresh lease\",\n );\n\n await store.set(key, original);\n assert(\n await acquireRefreshLease(key, firstToken, leaseExpiresAt),\n \"a lease must be reusable after deletion\",\n );\n assert(\n await store.invalidateTags([tag]) === 1,\n \"invalidateTags() must remove the leased entry\",\n );\n assert(\n !await publishRefresh(key, firstToken, refreshed),\n \"tag invalidation must cancel an in-flight refresh lease\",\n );\n } finally {\n await store.delete(key);\n }\n}\n\nfunction assertEntry(\n actual: CacheStoreEntry | undefined,\n expected: CacheStoreEntry,\n operation: string,\n) {\n assert(Boolean(actual), `${operation} must preserve the entry`);\n assert(\n actual?.expiresAt === expected.expiresAt,\n `${operation} must preserve expiresAt`,\n );\n assert(\n Boolean(actual?.negative) === Boolean(expected.negative),\n `${operation} must preserve the negative flag`,\n );\n assert(\n actual?.staleUntil === expected.staleUntil,\n `${operation} must preserve staleUntil`,\n );\n assert(\n JSON.stringify(actual?.tags) === JSON.stringify(expected.tags),\n `${operation} must preserve tags`,\n );\n assert(\n JSON.stringify(actual?.value) === JSON.stringify(expected.value),\n `${operation} must preserve JSON-compatible values`,\n );\n}\n\nfunction assert(condition: boolean, requirement: string): asserts condition {\n if (!condition) {\n throw new Error(`Cache store contract failed: ${requirement}.`);\n }\n}\n"],"names":["verifyCacheStoreContract","createStore","store","prefix","alphaKey","betaKey","gammaKey","deltaKey","alphaTag","betaTag","deltaTag","future","alpha","assert","assertEntry","updatedAlpha","delta","verifyCacheStoreRefreshContract","key","tag","firstToken","secondToken","leaseExpiresAt","acquireRefreshLease","publishRefresh","releaseRefreshLease","original","refreshed","actual","expected","operation","condition","requirement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.js","sources":["../../src/data/testing.ts"],"sourcesContent":["import type { CacheStore, CacheStoreEntry } from \"./cache\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type CacheStoreFactory = () => MaybePromise<CacheStore>;\n\nexport async function verifyCacheStoreContract(\n createStore: CacheStoreFactory,\n) {\n const store = await createStore();\n const prefix = `demiurge-contract:${Date.now()}:${Math.random()}`;\n const alphaKey = `${prefix}:alpha`;\n const betaKey = `${prefix}:beta`;\n const gammaKey = `${prefix}:gamma`;\n const deltaKey = `${prefix}:delta`;\n const atomicKey = `${prefix}:atomic`;\n const alphaTag = `${prefix}:tag:alpha`;\n const betaTag = `${prefix}:tag:beta`;\n const deltaTag = `${prefix}:tag:delta`;\n const future = Date.now() + 60_000;\n const alpha = {\n expiresAt: future,\n staleUntil: future + 5_000,\n tags: [alphaTag],\n value: { id: \"alpha\", revision: 1 },\n } satisfies CacheStoreEntry;\n\n try {\n assert(\n store.capabilities.atomicity === \"best-effort\" ||\n store.capabilities.atomicity === \"strong\",\n \"capabilities.atomicity must be `best-effort` or `strong`\",\n );\n if (store.capabilities.atomicity === \"strong\") {\n const atomicTag = `${prefix}:tag:atomic`;\n await store.set(atomicKey, {\n expiresAt: future,\n staleUntil: future,\n tags: [atomicTag],\n value: \"atomic\",\n });\n const invalidations = await Promise.all([\n store.invalidateTags([atomicTag]),\n store.invalidateTags([atomicTag]),\n ]);\n assert(\n invalidations.reduce((total, count) => total + count, 0) === 1,\n \"strong atomicity must count one concurrent tag invalidation exactly once\",\n );\n assert(\n await store.get(atomicKey) === undefined,\n \"strong atomicity must remove an entry during concurrent tag invalidation\",\n );\n }\n assert(\n await store.get(alphaKey) === undefined,\n \"get() must return undefined for a missing key\",\n );\n\n await store.set(alphaKey, alpha);\n assertEntry(await store.get(alphaKey), alpha, \"set() then get()\");\n\n const updatedAlpha = {\n ...alpha,\n value: { id: \"alpha\", revision: 2 },\n } satisfies CacheStoreEntry;\n await store.set(alphaKey, updatedAlpha);\n assertEntry(\n await store.get(alphaKey),\n updatedAlpha,\n \"set() must replace an existing key\",\n );\n\n await store.set(betaKey, {\n expiresAt: future + 10_000,\n staleUntil: future + 15_000,\n tags: [betaTag],\n value: \"beta\",\n });\n await store.set(gammaKey, {\n expiresAt: future + 20_000,\n staleUntil: future + 25_000,\n tags: [alphaTag, betaTag],\n value: [\"gamma\"],\n });\n\n assert(\n await store.invalidateTags([alphaTag]) === 2,\n \"invalidateTags() must return the number of entries deleted, counting each entry once\",\n );\n assert(\n await store.get(alphaKey) === undefined &&\n await store.get(gammaKey) === undefined,\n \"invalidateTags() must delete every entry carrying a matching tag\",\n );\n assert(\n (await store.get(betaKey))?.value === \"beta\",\n \"invalidateTags() must preserve entries with no matching tag\",\n );\n assert(\n await store.delete(betaKey) === true,\n \"delete() must report an existing key\",\n );\n assert(\n await store.delete(betaKey) === false,\n \"delete() must report a missing key\",\n );\n\n // A negative entry (a loader's `cacheNotFound()` result) round-trips\n // like any other entry, and tag invalidation clears it the same way it\n // clears a positive result.\n const delta = {\n expiresAt: future,\n negative: true,\n staleUntil: future,\n tags: [deltaTag],\n value: \"not found\",\n } satisfies CacheStoreEntry;\n\n await store.set(deltaKey, delta);\n assertEntry(\n await store.get(deltaKey),\n delta,\n \"set() then get() for a negative entry\",\n );\n assert(\n await store.invalidateTags([deltaTag]) === 1,\n \"invalidateTags() must delete a negative entry carrying a matching tag\",\n );\n assert(\n await store.get(deltaKey) === undefined,\n \"invalidateTags() must remove a negative entry the same as a positive one\",\n );\n } finally {\n await Promise.all([\n store.delete(alphaKey),\n store.delete(betaKey),\n store.delete(gammaKey),\n store.delete(deltaKey),\n store.delete(atomicKey),\n ]);\n }\n}\n\nexport async function verifyCacheStoreRefreshContract(\n createStore: CacheStoreFactory,\n) {\n const store = await createStore();\n const prefix = `demiurge-refresh-contract:${Date.now()}:${Math.random()}`;\n const key = `${prefix}:entry`;\n const tag = `${prefix}:tag`;\n const firstToken = `${prefix}:first`;\n const secondToken = `${prefix}:second`;\n const leaseExpiresAt = Date.now() + 60_000;\n\n assert(\n Boolean(\n store.acquireRefreshLease &&\n store.publishRefresh &&\n store.releaseRefreshLease,\n ),\n \"SWR support requires acquireRefreshLease(), publishRefresh(), and releaseRefreshLease()\",\n );\n\n const acquireRefreshLease = store.acquireRefreshLease!;\n const publishRefresh = store.publishRefresh!;\n const releaseRefreshLease = store.releaseRefreshLease!;\n const original = {\n expiresAt: Date.now() - 1,\n staleUntil: Date.now() + 120_000,\n tags: [tag],\n value: \"original\",\n } satisfies CacheStoreEntry;\n const refreshed = {\n ...original,\n expiresAt: Date.now() + 60_000,\n value: \"refreshed\",\n } satisfies CacheStoreEntry;\n\n try {\n await store.set(key, original);\n let ownerToken: string;\n let otherToken: string;\n if (store.capabilities.atomicity === \"strong\") {\n const acquired = await Promise.all([\n acquireRefreshLease(key, firstToken, leaseExpiresAt),\n acquireRefreshLease(key, secondToken, leaseExpiresAt),\n ]);\n assert(\n acquired.filter(Boolean).length === 1,\n \"strong atomicity must allow exactly one concurrent refresh lease owner\",\n );\n ownerToken = acquired[0] ? firstToken : secondToken;\n otherToken = acquired[0] ? secondToken : firstToken;\n } else {\n assert(\n await acquireRefreshLease(key, firstToken, leaseExpiresAt),\n \"acquireRefreshLease() must acquire an unowned key\",\n );\n ownerToken = firstToken;\n otherToken = secondToken;\n }\n assert(\n !await publishRefresh(key, otherToken, refreshed),\n \"publishRefresh() must reject a non-owner token\",\n );\n await releaseRefreshLease(key, otherToken);\n assert(\n !await acquireRefreshLease(key, otherToken, leaseExpiresAt),\n \"releaseRefreshLease() must not release another owner's lease\",\n );\n assert(\n await publishRefresh(key, ownerToken, refreshed),\n \"publishRefresh() must atomically publish for the current owner\",\n );\n assertEntry(\n await store.get(key),\n refreshed,\n \"publishRefresh() for the current owner\",\n );\n assert(\n await acquireRefreshLease(key, otherToken, leaseExpiresAt),\n \"successful publication must release the refresh lease\",\n );\n assert(await store.delete(key), \"delete() must remove the refreshed entry\");\n assert(\n !await publishRefresh(key, otherToken, original),\n \"delete() must cancel an in-flight refresh lease\",\n );\n\n await store.set(key, original);\n assert(\n await acquireRefreshLease(key, firstToken, leaseExpiresAt),\n \"a lease must be reusable after deletion\",\n );\n assert(\n await store.invalidateTags([tag]) === 1,\n \"invalidateTags() must remove the leased entry\",\n );\n assert(\n !await publishRefresh(key, firstToken, refreshed),\n \"tag invalidation must cancel an in-flight refresh lease\",\n );\n } finally {\n await store.delete(key);\n }\n}\n\nfunction assertEntry(\n actual: CacheStoreEntry | undefined,\n expected: CacheStoreEntry,\n operation: string,\n) {\n assert(Boolean(actual), `${operation} must preserve the entry`);\n assert(\n actual?.expiresAt === expected.expiresAt,\n `${operation} must preserve expiresAt`,\n );\n assert(\n Boolean(actual?.negative) === Boolean(expected.negative),\n `${operation} must preserve the negative flag`,\n );\n assert(\n actual?.staleUntil === expected.staleUntil,\n `${operation} must preserve staleUntil`,\n );\n assert(\n JSON.stringify(actual?.tags) === JSON.stringify(expected.tags),\n `${operation} must preserve tags`,\n );\n assert(\n JSON.stringify(actual?.value) === JSON.stringify(expected.value),\n `${operation} must preserve JSON-compatible values`,\n );\n}\n\nfunction assert(condition: boolean, requirement: string): asserts condition {\n if (!condition) {\n throw new Error(`Cache store contract failed: ${requirement}.`);\n }\n}\n"],"names":["verifyCacheStoreContract","createStore","store","prefix","alphaKey","betaKey","gammaKey","deltaKey","atomicKey","alphaTag","betaTag","deltaTag","future","alpha","assert","atomicTag","invalidations","total","count","assertEntry","updatedAlpha","delta","verifyCacheStoreRefreshContract","key","tag","firstToken","secondToken","leaseExpiresAt","acquireRefreshLease","publishRefresh","releaseRefreshLease","original","refreshed","ownerToken","otherToken","acquired","actual","expected","operation","condition","requirement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiered.d.ts","sourceRoot":"","sources":["../../src/data/tiered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IAGpC,EAAE,EAAE,UAAU,CAAC;IAKf,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC;AAiBF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,UAAU,
|
|
1
|
+
{"version":3,"file":"tiered.d.ts","sourceRoot":"","sources":["../../src/data/tiered.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IAGpC,EAAE,EAAE,UAAU,CAAC;IAKf,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC;AAiBF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,UAAU,CAsEZ"}
|
package/dist/edge/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { a as E, c as p, b as y, d as w, s as
|
|
2
|
-
import { c as
|
|
1
|
+
import { a as E, c as p, b as y, d as w, s as b } from "../chunks/index-LYve1rQp.js";
|
|
2
|
+
import { c as S } from "../chunks/testing-BEW1nchS.js";
|
|
3
3
|
import { renderToReadableStream as R } from "react-dom/server";
|
|
4
4
|
import "react";
|
|
5
5
|
import "react/jsx-runtime";
|
|
6
6
|
import { i as L, I as v, R as A, c as T } from "../chunks/static-files-ehaD1kE7.js";
|
|
7
|
-
import { c as P } from "../chunks/document-shell-
|
|
7
|
+
import { c as P } from "../chunks/document-shell-C0aPrkhd.js";
|
|
8
8
|
const C = /* @__PURE__ */ new Set([
|
|
9
9
|
"/demiurge-manifest.json",
|
|
10
10
|
"/index.html"
|
|
11
11
|
]);
|
|
12
12
|
function O(e) {
|
|
13
|
-
const t = e.immutable ?? L, r = M(e.prefix),
|
|
13
|
+
const t = e.immutable ?? L, r = M(e.prefix), i = /* @__PURE__ */ new Map();
|
|
14
14
|
for (const [o, n] of Object.entries(e.assets)) {
|
|
15
|
-
const a =
|
|
15
|
+
const a = m(o);
|
|
16
16
|
if (C.has(a))
|
|
17
17
|
continue;
|
|
18
18
|
const s = x(n.body);
|
|
19
|
-
|
|
19
|
+
i.set(a, {
|
|
20
20
|
body: s,
|
|
21
|
-
cacheControl: n.immutable ?? t(
|
|
21
|
+
cacheControl: n.immutable ?? t(h(a)) ? v : A,
|
|
22
22
|
contentType: n.contentType ?? N(a),
|
|
23
23
|
etag: D(s)
|
|
24
24
|
});
|
|
@@ -26,10 +26,10 @@ function O(e) {
|
|
|
26
26
|
return async function(n) {
|
|
27
27
|
if (n.method !== "GET" && n.method !== "HEAD")
|
|
28
28
|
return null;
|
|
29
|
-
const a = I(r, new URL(n.url).pathname), s = a === null ? void 0 :
|
|
29
|
+
const a = I(r, new URL(n.url).pathname), s = a === null ? void 0 : i.get(a);
|
|
30
30
|
if (!s)
|
|
31
31
|
return null;
|
|
32
|
-
const
|
|
32
|
+
const c = new Headers({
|
|
33
33
|
"cache-control": s.cacheControl,
|
|
34
34
|
"content-length": String(s.body.byteLength),
|
|
35
35
|
"content-type": s.contentType,
|
|
@@ -37,7 +37,7 @@ function O(e) {
|
|
|
37
37
|
etag: s.etag,
|
|
38
38
|
"x-content-type-options": "nosniff"
|
|
39
39
|
});
|
|
40
|
-
return H(n, s.etag) ? (
|
|
40
|
+
return H(n, s.etag) ? (c.delete("content-length"), c.delete("content-type"), new Response(null, { headers: c, status: 304 })) : n.method === "HEAD" ? new Response(null, { headers: c }) : new Response(s.body, { headers: c });
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
function D(e) {
|
|
@@ -49,7 +49,7 @@ function D(e) {
|
|
|
49
49
|
function H(e, t) {
|
|
50
50
|
const r = e.headers.get("if-none-match");
|
|
51
51
|
return r === null ? !1 : r.trim() === "*" || r.split(",").some(
|
|
52
|
-
(
|
|
52
|
+
(i) => f(i) === f(t)
|
|
53
53
|
);
|
|
54
54
|
}
|
|
55
55
|
function f(e) {
|
|
@@ -67,9 +67,9 @@ function I(e, t) {
|
|
|
67
67
|
return null;
|
|
68
68
|
r = r.slice(e.length - 1);
|
|
69
69
|
}
|
|
70
|
-
return
|
|
70
|
+
return m(r);
|
|
71
71
|
}
|
|
72
|
-
function
|
|
72
|
+
function m(e) {
|
|
73
73
|
return e.startsWith("/") ? e : `/${e}`;
|
|
74
74
|
}
|
|
75
75
|
function M(e) {
|
|
@@ -81,12 +81,12 @@ function x(e) {
|
|
|
81
81
|
const t = ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : new Uint8Array(e), r = new Uint8Array(t.byteLength);
|
|
82
82
|
return r.set(t), r;
|
|
83
83
|
}
|
|
84
|
-
function
|
|
84
|
+
function h(e) {
|
|
85
85
|
return e.slice(e.lastIndexOf("/") + 1);
|
|
86
86
|
}
|
|
87
87
|
function N(e) {
|
|
88
|
-
const t =
|
|
89
|
-
return T(
|
|
88
|
+
const t = h(e), r = t.lastIndexOf("."), i = r === -1 ? "" : t.slice(r);
|
|
89
|
+
return T(i);
|
|
90
90
|
}
|
|
91
91
|
function U(e, t = {}) {
|
|
92
92
|
return e.render.mode === "streaming" ? _(e, t) : E(e, t);
|
|
@@ -94,7 +94,7 @@ function U(e, t = {}) {
|
|
|
94
94
|
async function _(e, t = {}) {
|
|
95
95
|
if (t.signal?.aborted)
|
|
96
96
|
throw t.signal.reason;
|
|
97
|
-
const r = p(e, t),
|
|
97
|
+
const r = p(e, t), i = y(e, r), o = new AbortController();
|
|
98
98
|
let n = !1;
|
|
99
99
|
const a = () => {
|
|
100
100
|
o.abort(
|
|
@@ -104,7 +104,7 @@ async function _(e, t = {}) {
|
|
|
104
104
|
t.signal?.addEventListener("abort", a, { once: !0 });
|
|
105
105
|
let s;
|
|
106
106
|
try {
|
|
107
|
-
s = await R(
|
|
107
|
+
s = await R(i, {
|
|
108
108
|
nonce: t.nonce,
|
|
109
109
|
onError(l) {
|
|
110
110
|
n && !o.signal.aborted && t.onStreamError?.(l);
|
|
@@ -115,21 +115,21 @@ async function _(e, t = {}) {
|
|
|
115
115
|
throw t.signal?.removeEventListener("abort", a), l;
|
|
116
116
|
}
|
|
117
117
|
s.allReady.catch(u);
|
|
118
|
-
let
|
|
118
|
+
let c;
|
|
119
119
|
try {
|
|
120
|
-
|
|
120
|
+
c = await P(e, {
|
|
121
121
|
...t,
|
|
122
122
|
scripts: r.scripts()
|
|
123
123
|
});
|
|
124
124
|
} catch (l) {
|
|
125
125
|
throw t.signal?.removeEventListener("abort", a), a(), await s.cancel().catch(u), l;
|
|
126
126
|
}
|
|
127
|
-
return r.flushHead(), n = !0, new Response(j(s,
|
|
127
|
+
return r.flushHead(), n = !0, new Response(j(s, c, a), {
|
|
128
128
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
function j(e, t, r) {
|
|
132
|
-
const
|
|
132
|
+
const i = new TextEncoder(), o = e.getReader();
|
|
133
133
|
return new ReadableStream({
|
|
134
134
|
async cancel(n) {
|
|
135
135
|
r(), await o.cancel(n).catch(u);
|
|
@@ -143,13 +143,13 @@ function j(e, t, r) {
|
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
if (a.done) {
|
|
146
|
-
n.enqueue(
|
|
146
|
+
n.enqueue(i.encode(t.suffix)), n.close();
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
n.enqueue(a.value);
|
|
150
150
|
},
|
|
151
151
|
start(n) {
|
|
152
|
-
n.enqueue(
|
|
152
|
+
n.enqueue(i.encode(t.prefix));
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
155
|
}
|
|
@@ -166,6 +166,7 @@ function q() {
|
|
|
166
166
|
throw new g(k);
|
|
167
167
|
};
|
|
168
168
|
return {
|
|
169
|
+
capabilities: { atomicity: "best-effort" },
|
|
169
170
|
acquireRefreshLease: e,
|
|
170
171
|
delete: e,
|
|
171
172
|
get: e,
|
|
@@ -205,7 +206,7 @@ const B = w({
|
|
|
205
206
|
function ne(e) {
|
|
206
207
|
const t = z(e.cacheStore), r = G(e.rateLimitStore);
|
|
207
208
|
e.rateLimitStore === d && e.routeModules && J(e.routeModules);
|
|
208
|
-
const
|
|
209
|
+
const i = K(e.assets), o = S({
|
|
209
210
|
adapter: B,
|
|
210
211
|
cacheStore: t,
|
|
211
212
|
onError: e.onError,
|
|
@@ -217,7 +218,7 @@ function ne(e) {
|
|
|
217
218
|
});
|
|
218
219
|
return async function(a) {
|
|
219
220
|
const s = e.clientIp?.(a);
|
|
220
|
-
return s &&
|
|
221
|
+
return s && b(a, { clientIp: s }), await i?.(a) ?? await o(a);
|
|
221
222
|
};
|
|
222
223
|
}
|
|
223
224
|
function z(e) {
|