Matchers are now exactly what @endo/patterns makes: tagged records as from pass-style's makeTagged (M.string() is match:string with payload [], M.any() is match:any with payload undefined). Structured clone drops their symbol-keyed and non-enumerable properties, so they cross DO storage and Workers RPC in marshal's smallcaps encoding (the subset patterns need). MapStoreDo is a MapStore as a DO of its own: its creator fixes label and (encoded) shapes once; its id is full authority, and readOnly() hands out the queries alone. Generated-by: Claude Opus 5.5
18 lines
638 B
TypeScript
18 lines
638 B
TypeScript
/** @file the tests' main module: a DO that hosts stores on its own storage. */
|
|
import { DurableObject } from "cloudflare:workers";
|
|
import { M } from "../src/patterns.js";
|
|
import { makeMapStore, type MapStore } from "../src/store.js";
|
|
|
|
export { MapStoreDo } from "../src/store-do.js";
|
|
|
|
/** hosts the store from the credential-rotation sketch: one key, `cookie` */
|
|
export class StoreHost extends DurableObject {
|
|
cookies(): MapStore<string> {
|
|
return makeMapStore<string>("cookie", { keyShape: "cookie", valueShape: M.string() }, this.ctx.storage.kv);
|
|
}
|
|
}
|
|
|
|
export default {
|
|
fetch: () => new Response("store tests", { status: 404 }),
|
|
};
|