@superbee/server 0.1.6 → 0.2.0-pre.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/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy-router.d.ts +11 -2
- package/dist/legacy-router.d.ts.map +1 -1
- package/dist/legacy-router.js +8 -5
- package/dist/legacy-router.js.map +1 -1
- package/dist/operation-outcomes.d.ts +91 -0
- package/dist/operation-outcomes.d.ts.map +1 -0
- package/dist/operation-outcomes.js +122 -0
- package/dist/operation-outcomes.js.map +1 -0
- package/dist/router.d.ts +16 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +185 -6
- package/dist/router.js.map +1 -1
- package/dist/serve.d.ts +3 -0
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +1 -1
- package/dist/serve.js.map +1 -1
- package/package.json +7 -3
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
10
|
export { createRouter, createRouterForBackend } from "./legacy-router.js";
|
|
11
|
+
export type { LegacyRouterOptions } from "./legacy-router.js";
|
|
12
|
+
export { MemoryOperationOutcomeStore } from "./operation-outcomes.js";
|
|
13
|
+
export type { MemoryOperationOutcomeStoreOptions, OperationClaim, OperationOutcomeStore, RecordedOperation, RecordedOutcome, RecordedResponse, } from "./operation-outcomes.js";
|
|
11
14
|
export { WIRE_ENDPOINTS } from "./router.js";
|
|
12
15
|
export { RequestBodyTooLargeError, serve, requestFromIncomingMessage, writeResponseToServerResponse, } from "./serve.js";
|
|
13
16
|
export type { RequestAdapterOptions, ServeOptions, ServerHandle, } from "./serve.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EACV,kCAAkC,EAClC,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
10
|
export { createRouter, createRouterForBackend } from "./legacy-router.js";
|
|
11
|
+
export { MemoryOperationOutcomeStore } from "./operation-outcomes.js";
|
|
11
12
|
export { WIRE_ENDPOINTS } from "./router.js";
|
|
12
13
|
export { RequestBodyTooLargeError, serve, requestFromIncomingMessage, writeResponseToServerResponse, } from "./serve.js";
|
|
13
14
|
//# 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;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAStE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
|
package/dist/legacy-router.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
/** Node-specific compatibility adapter for the historical single-backend package root. */
|
|
2
2
|
import { type Bundle, type StorageBackend } from "@superbee/core";
|
|
3
|
+
import { type OperationOutcomeStore } from "./operation-outcomes.js";
|
|
4
|
+
export interface LegacyRouterOptions {
|
|
5
|
+
/**
|
|
6
|
+
* The store behind identified document writes. Omitted, the reference router gets a fresh
|
|
7
|
+
* in-memory store so identity works out of the box; `null` builds a router without one, which
|
|
8
|
+
* refuses identity and reports `operations: false`.
|
|
9
|
+
*/
|
|
10
|
+
outcomes?: OperationOutcomeStore | null;
|
|
11
|
+
}
|
|
3
12
|
/** Historical explicit-backend entry point retained at the Node package root. */
|
|
4
|
-
export declare function createRouterForBackend(backend: StorageBackend): (request: Request) => Promise<Response>;
|
|
13
|
+
export declare function createRouterForBackend(backend: StorageBackend, options?: LegacyRouterOptions): (request: Request) => Promise<Response>;
|
|
5
14
|
/** Historical Bundle entry point retained at the Node package root, including `/bundles/default`. */
|
|
6
|
-
export declare function createRouter(bundle: Bundle): (request: Request) => Promise<Response>;
|
|
15
|
+
export declare function createRouter(bundle: Bundle, options?: LegacyRouterOptions): (request: Request) => Promise<Response>;
|
|
7
16
|
//# sourceMappingURL=legacy-router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-router.d.ts","sourceRoot":"","sources":["../src/legacy-router.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"legacy-router.d.ts","sourceRoot":"","sources":["../src/legacy-router.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACzC;AA4CD,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,mBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAE1I;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAEvH"}
|
package/dist/legacy-router.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Node-specific compatibility adapter for the historical single-backend package root. */
|
|
2
2
|
import { FilesystemBackend, MemoryBackend, } from "@superbee/core";
|
|
3
|
+
import { MemoryOperationOutcomeStore } from "./operation-outcomes.js";
|
|
3
4
|
import { createRouter as createWorkerRouter, } from "./router.js";
|
|
4
5
|
const LEGACY_INTERNAL_BUNDLE_ID = "bnd_00000000000000000000000000000000";
|
|
5
6
|
function capabilitiesForBackend(backend) {
|
|
@@ -30,19 +31,21 @@ function canonicalizeLegacyBundleRoute(request) {
|
|
|
30
31
|
url.pathname = `/v0/bundles/${LEGACY_INTERNAL_BUNDLE_ID}/${match[2]}`;
|
|
31
32
|
return new Request(url, request);
|
|
32
33
|
}
|
|
33
|
-
function buildLegacyRouter(backend) {
|
|
34
|
+
function buildLegacyRouter(backend, options) {
|
|
35
|
+
const outcomes = options.outcomes === undefined ? new MemoryOperationOutcomeStore() : options.outcomes;
|
|
34
36
|
const workerRouter = createWorkerRouter({
|
|
35
37
|
capabilities: capabilitiesForBackend(backend),
|
|
38
|
+
...(outcomes === null ? {} : { outcomes }),
|
|
36
39
|
resolveContext: (request) => ({ backend, attribution: legacyAttribution(request) }),
|
|
37
40
|
});
|
|
38
41
|
return (request) => workerRouter(canonicalizeLegacyBundleRoute(request));
|
|
39
42
|
}
|
|
40
43
|
/** Historical explicit-backend entry point retained at the Node package root. */
|
|
41
|
-
export function createRouterForBackend(backend) {
|
|
42
|
-
return buildLegacyRouter(backend);
|
|
44
|
+
export function createRouterForBackend(backend, options = {}) {
|
|
45
|
+
return buildLegacyRouter(backend, options);
|
|
43
46
|
}
|
|
44
47
|
/** Historical Bundle entry point retained at the Node package root, including `/bundles/default`. */
|
|
45
|
-
export function createRouter(bundle) {
|
|
46
|
-
return buildLegacyRouter(bundle.backend ?? new FilesystemBackend(bundle.root));
|
|
48
|
+
export function createRouter(bundle, options = {}) {
|
|
49
|
+
return buildLegacyRouter(bundle.backend ?? new FilesystemBackend(bundle.root), options);
|
|
47
50
|
}
|
|
48
51
|
//# sourceMappingURL=legacy-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-router.js","sourceRoot":"","sources":["../src/legacy-router.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EACL,iBAAiB,EACjB,aAAa,GAId,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,IAAI,kBAAkB,GAEnC,MAAM,aAAa,CAAC;AAErB,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"legacy-router.js","sourceRoot":"","sources":["../src/legacy-router.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EACL,iBAAiB,EACjB,aAAa,GAId,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,2BAA2B,EAA8B,MAAM,yBAAyB,CAAC;AAClG,OAAO,EACL,YAAY,IAAI,kBAAkB,GAEnC,MAAM,aAAa,CAAC;AAErB,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;AAWzE,SAAS,sBAAsB,CAAC,OAAuB;IACrD,OAAO,CACL,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI;QAC1B,YAAY,EAAE,OAAO,YAAY,aAAa;QAC9C,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,KAAK;KACjB,CACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACrD,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CAAC,OAAgB;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,GAAG,CAAC,QAAQ,GAAG,eAAe,yBAAyB,IAAI,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC;IACvE,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB,EAAE,OAA4B;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvG,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC;QAC7C,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC1C,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;KACpF,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CAAC,OAAuB,EAAE,UAA+B,EAAE;IAC/F,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,UAA+B,EAAE;IAC5E,OAAO,iBAAiB,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recorded outcomes of identified writes: the store behind the wire's `Idempotency-Key` header
|
|
3
|
+
* and `GET /operations/{key}` route (`docs/WIRE-PROTOCOL.md`, "Identified writes").
|
|
4
|
+
*
|
|
5
|
+
* A key is claimed before its write is applied. The claim answers in one of three ways: the
|
|
6
|
+
* key already has a recorded operation, so the caller replays it; another application of the
|
|
7
|
+
* same key is in progress, so the caller waits for it; or the key is now the caller's, who
|
|
8
|
+
* either records the response it produced or releases the claim when the application threw
|
|
9
|
+
* before any response existed. Recording binds the outcome to the method and document id it
|
|
10
|
+
* was produced for, so a resubmission under the same key that names a different operation can
|
|
11
|
+
* be refused instead of replayed.
|
|
12
|
+
*
|
|
13
|
+
* Keys are scoped: the reference router scopes by canonical bundle id, so two bundles cannot
|
|
14
|
+
* share or collide on a key. The memory store keeps each record for a retention window and
|
|
15
|
+
* forgets it lazily on access, pruning on every record so the map stays bounded by what was
|
|
16
|
+
* written inside one window. The module imports no Node builtin: the Worker-safe router
|
|
17
|
+
* subpath consumes it unchanged.
|
|
18
|
+
*/
|
|
19
|
+
import type { Outcome } from "@superbee/core/storage";
|
|
20
|
+
/** The outcome kinds an authority can record; `unknown` is the client's word, never the store's. */
|
|
21
|
+
export type RecordedOutcome = Exclude<Outcome, {
|
|
22
|
+
kind: "unknown";
|
|
23
|
+
}>;
|
|
24
|
+
/** The parts of a response that replay verbatim to a duplicate submission. */
|
|
25
|
+
export interface RecordedResponse {
|
|
26
|
+
status: number;
|
|
27
|
+
headers: Array<[string, string]>;
|
|
28
|
+
body: string;
|
|
29
|
+
}
|
|
30
|
+
/** One identified write the authority applied, as recorded under its key. */
|
|
31
|
+
export interface RecordedOperation {
|
|
32
|
+
/** The HTTP method the outcome was recorded for. */
|
|
33
|
+
method: string;
|
|
34
|
+
/** The decoded document id the outcome was recorded for. */
|
|
35
|
+
id: string;
|
|
36
|
+
response: RecordedResponse;
|
|
37
|
+
outcome: RecordedOutcome;
|
|
38
|
+
/** Milliseconds since the epoch on the store's clock; retention counts from here. */
|
|
39
|
+
recordedAt: number;
|
|
40
|
+
}
|
|
41
|
+
/** What a caller learns when it claims a key. */
|
|
42
|
+
export type OperationClaim = {
|
|
43
|
+
kind: "recorded";
|
|
44
|
+
operation: RecordedOperation;
|
|
45
|
+
} | {
|
|
46
|
+
kind: "in_progress";
|
|
47
|
+
/** Resolves with the record once the other application records, or `null` if it released instead. */
|
|
48
|
+
settled: Promise<RecordedOperation | null>;
|
|
49
|
+
} | {
|
|
50
|
+
kind: "claimed";
|
|
51
|
+
/** Record the application's response under the key; the key stays claimed until this or `release` runs. */
|
|
52
|
+
record(operation: Omit<RecordedOperation, "recordedAt">): RecordedOperation;
|
|
53
|
+
/** Give the key back with nothing recorded, so a later submission applies fresh. */
|
|
54
|
+
release(): void;
|
|
55
|
+
};
|
|
56
|
+
export interface OperationOutcomeStore {
|
|
57
|
+
/** Claim `key` within `scope` ahead of applying the write it identifies. */
|
|
58
|
+
claim(scope: string, key: string): Promise<OperationClaim>;
|
|
59
|
+
/** The record under `key` within `scope`, or `null` when nothing is recorded (never, or no longer). */
|
|
60
|
+
lookup(scope: string, key: string): Promise<RecordedOperation | null>;
|
|
61
|
+
}
|
|
62
|
+
export interface MemoryOperationOutcomeStoreOptions {
|
|
63
|
+
/** How long a record stays answerable after it is recorded. Default 24 hours. */
|
|
64
|
+
retentionMs?: number;
|
|
65
|
+
/** The clock retention is measured on; injectable so a test can expire records deterministically. */
|
|
66
|
+
now?: () => number;
|
|
67
|
+
}
|
|
68
|
+
/** The reference store: one map per process, bounded by the retention window. */
|
|
69
|
+
export declare class MemoryOperationOutcomeStore implements OperationOutcomeStore {
|
|
70
|
+
private readonly recorded;
|
|
71
|
+
private readonly inProgress;
|
|
72
|
+
private readonly retentionMs;
|
|
73
|
+
private readonly now;
|
|
74
|
+
constructor(options?: MemoryOperationOutcomeStoreOptions);
|
|
75
|
+
/** Records currently held, expired ones included until they are next touched. */
|
|
76
|
+
get size(): number;
|
|
77
|
+
claim(scope: string, key: string): Promise<OperationClaim>;
|
|
78
|
+
lookup(scope: string, key: string): Promise<RecordedOperation | null>;
|
|
79
|
+
/** The record at `slot` if it is inside the window; an expired record is dropped on the way. */
|
|
80
|
+
private live;
|
|
81
|
+
private expired;
|
|
82
|
+
/**
|
|
83
|
+
* Drop expired records from the front of the map. Records are inserted in clock order (a
|
|
84
|
+
* record always lands as a fresh key, since `live` removes an expired one before a new claim
|
|
85
|
+
* can be handed out), so the scan stops at the first live record and each record is visited
|
|
86
|
+
* once over its life. A clock that moves backwards can leave an expired record behind a live
|
|
87
|
+
* one; `live` still drops it on its next touch, so correctness never depends on this scan.
|
|
88
|
+
*/
|
|
89
|
+
private prune;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=operation-outcomes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-outcomes.d.ts","sourceRoot":"","sources":["../src/operation-outcomes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,oGAAoG;AACpG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,GAClD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,qGAAqG;IACrG,OAAO,EAAE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CAC5C,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,2GAA2G;IAC3G,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,iBAAiB,CAAC;IAC5E,oFAAoF;IACpF,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,uGAAuG;IACvG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,kCAAkC;IACjD,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AASD,iFAAiF;AACjF,qBAAa,2BAA4B,YAAW,qBAAqB;IACvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,GAAE,kCAAuC;IAK5D,iFAAiF;IACjF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgD1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI3E,gGAAgG;IAChG,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,OAAO;IAIf;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;CAMd"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recorded outcomes of identified writes: the store behind the wire's `Idempotency-Key` header
|
|
3
|
+
* and `GET /operations/{key}` route (`docs/WIRE-PROTOCOL.md`, "Identified writes").
|
|
4
|
+
*
|
|
5
|
+
* A key is claimed before its write is applied. The claim answers in one of three ways: the
|
|
6
|
+
* key already has a recorded operation, so the caller replays it; another application of the
|
|
7
|
+
* same key is in progress, so the caller waits for it; or the key is now the caller's, who
|
|
8
|
+
* either records the response it produced or releases the claim when the application threw
|
|
9
|
+
* before any response existed. Recording binds the outcome to the method and document id it
|
|
10
|
+
* was produced for, so a resubmission under the same key that names a different operation can
|
|
11
|
+
* be refused instead of replayed.
|
|
12
|
+
*
|
|
13
|
+
* Keys are scoped: the reference router scopes by canonical bundle id, so two bundles cannot
|
|
14
|
+
* share or collide on a key. The memory store keeps each record for a retention window and
|
|
15
|
+
* forgets it lazily on access, pruning on every record so the map stays bounded by what was
|
|
16
|
+
* written inside one window. The module imports no Node builtin: the Worker-safe router
|
|
17
|
+
* subpath consumes it unchanged.
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_RETENTION_MS = 24 * 60 * 60 * 1000;
|
|
20
|
+
/** The reference store: one map per process, bounded by the retention window. */
|
|
21
|
+
export class MemoryOperationOutcomeStore {
|
|
22
|
+
recorded = new Map();
|
|
23
|
+
inProgress = new Map();
|
|
24
|
+
retentionMs;
|
|
25
|
+
now;
|
|
26
|
+
constructor(options = {}) {
|
|
27
|
+
this.retentionMs = options.retentionMs ?? DEFAULT_RETENTION_MS;
|
|
28
|
+
this.now = options.now ?? (() => Date.now());
|
|
29
|
+
}
|
|
30
|
+
/** Records currently held, expired ones included until they are next touched. */
|
|
31
|
+
get size() {
|
|
32
|
+
return this.recorded.size;
|
|
33
|
+
}
|
|
34
|
+
async claim(scope, key) {
|
|
35
|
+
// No await precedes the map reads and writes below, so a claim is atomic against every
|
|
36
|
+
// other claim in this process: two concurrent submissions cannot both be handed the key.
|
|
37
|
+
const slot = slotKey(scope, key);
|
|
38
|
+
const existing = this.live(slot);
|
|
39
|
+
if (existing)
|
|
40
|
+
return { kind: "recorded", operation: existing };
|
|
41
|
+
const running = this.inProgress.get(slot);
|
|
42
|
+
if (running)
|
|
43
|
+
return { kind: "in_progress", settled: running.settled };
|
|
44
|
+
let resolve;
|
|
45
|
+
const settled = new Promise((done) => {
|
|
46
|
+
resolve = done;
|
|
47
|
+
});
|
|
48
|
+
const entry = { settled, resolve };
|
|
49
|
+
this.inProgress.set(slot, entry);
|
|
50
|
+
let open = true;
|
|
51
|
+
const assertOpen = () => {
|
|
52
|
+
if (!open)
|
|
53
|
+
throw new Error(`operation outcome for '${key}' was already recorded or released`);
|
|
54
|
+
};
|
|
55
|
+
const finish = (value) => {
|
|
56
|
+
assertOpen();
|
|
57
|
+
open = false;
|
|
58
|
+
if (this.inProgress.get(slot) === entry)
|
|
59
|
+
this.inProgress.delete(slot);
|
|
60
|
+
entry.resolve(value);
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
kind: "claimed",
|
|
64
|
+
record: (operation) => {
|
|
65
|
+
// A settled claim is refused before any map is touched, so a second record cannot land
|
|
66
|
+
// a row the caller was told was rejected. The clock is injected, so it can throw; a
|
|
67
|
+
// record that never lands still gives the key back, or every waiter on this claim would
|
|
68
|
+
// hang and the key would stay unusable until the process restarts.
|
|
69
|
+
assertOpen();
|
|
70
|
+
try {
|
|
71
|
+
const record = { ...operation, recordedAt: this.now() };
|
|
72
|
+
this.prune();
|
|
73
|
+
this.recorded.set(slot, record);
|
|
74
|
+
finish(record);
|
|
75
|
+
return record;
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
if (open)
|
|
79
|
+
finish(null);
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
release: () => finish(null),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async lookup(scope, key) {
|
|
87
|
+
return this.live(slotKey(scope, key));
|
|
88
|
+
}
|
|
89
|
+
/** The record at `slot` if it is inside the window; an expired record is dropped on the way. */
|
|
90
|
+
live(slot) {
|
|
91
|
+
const record = this.recorded.get(slot);
|
|
92
|
+
if (!record)
|
|
93
|
+
return null;
|
|
94
|
+
if (this.expired(record)) {
|
|
95
|
+
this.recorded.delete(slot);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return record;
|
|
99
|
+
}
|
|
100
|
+
expired(record) {
|
|
101
|
+
return this.now() - record.recordedAt >= this.retentionMs;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Drop expired records from the front of the map. Records are inserted in clock order (a
|
|
105
|
+
* record always lands as a fresh key, since `live` removes an expired one before a new claim
|
|
106
|
+
* can be handed out), so the scan stops at the first live record and each record is visited
|
|
107
|
+
* once over its life. A clock that moves backwards can leave an expired record behind a live
|
|
108
|
+
* one; `live` still drops it on its next touch, so correctness never depends on this scan.
|
|
109
|
+
*/
|
|
110
|
+
prune() {
|
|
111
|
+
for (const [slot, record] of this.recorded) {
|
|
112
|
+
if (!this.expired(record))
|
|
113
|
+
break;
|
|
114
|
+
this.recorded.delete(slot);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Scope and key joined on a separator no key can contain (keys are printable ASCII, so no NUL). */
|
|
119
|
+
function slotKey(scope, key) {
|
|
120
|
+
return `${scope}\u0000${key}`;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=operation-outcomes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-outcomes.js","sourceRoot":"","sources":["../src/operation-outcomes.ts"],"names":[],"mappings":"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"}
|
package/dist/router.d.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* endpoint set and any recorded deviations from the draft.
|
|
18
18
|
*/
|
|
19
19
|
import { type BlobKey, type ConceptId, type ReservedFilename, type StorageBackend, type StorageCapabilities } from "@superbee/core/storage";
|
|
20
|
+
import type { OperationOutcomeStore } from "./operation-outcomes.js";
|
|
20
21
|
/** Canonical remote bundle id: 16 random bytes rendered as lowercase hexadecimal. */
|
|
21
22
|
export type BundleId = `bnd_${string}`;
|
|
22
23
|
/** Access needed before a registered endpoint may dispatch. */
|
|
@@ -116,6 +117,12 @@ export declare const WIRE_ENDPOINTS: readonly [{
|
|
|
116
117
|
readonly method: "DELETE";
|
|
117
118
|
readonly path: "/v0/bundles/{bundle}/blobs/{key...}";
|
|
118
119
|
readonly accessClass: "write";
|
|
120
|
+
}, {
|
|
121
|
+
readonly id: "operation-lookup";
|
|
122
|
+
readonly resource: "operation";
|
|
123
|
+
readonly method: "GET";
|
|
124
|
+
readonly path: "/v0/bundles/{bundle}/operations/{key}";
|
|
125
|
+
readonly accessClass: "write";
|
|
119
126
|
}];
|
|
120
127
|
export type WireEndpointId = (typeof WIRE_ENDPOINTS)[number]["id"];
|
|
121
128
|
export type ResolvedWireResource = {
|
|
@@ -139,6 +146,9 @@ export type ResolvedWireResource = {
|
|
|
139
146
|
} | {
|
|
140
147
|
kind: "blob";
|
|
141
148
|
key: BlobKey;
|
|
149
|
+
} | {
|
|
150
|
+
kind: "operation";
|
|
151
|
+
key: string;
|
|
142
152
|
};
|
|
143
153
|
interface ResolvedWireRouteBase {
|
|
144
154
|
endpointId: WireEndpointId;
|
|
@@ -174,6 +184,12 @@ export interface TrustedRouterContext {
|
|
|
174
184
|
}
|
|
175
185
|
export interface RouterOptions {
|
|
176
186
|
capabilities: StorageCapabilities;
|
|
187
|
+
/**
|
|
188
|
+
* Where identified document writes record their outcomes, scoped by canonical bundle id.
|
|
189
|
+
* Without one the router refuses every request that carries `Idempotency-Key` and the lookup
|
|
190
|
+
* route with `400 USAGE`, and `GET /v0/capabilities` reports `operations: false`.
|
|
191
|
+
*/
|
|
192
|
+
outcomes?: OperationOutcomeStore;
|
|
177
193
|
resolveContext(request: Request, route: ResolvedBundleWireRoute): TrustedRouterContext | Response | Promise<TrustedRouterContext | Response>;
|
|
178
194
|
}
|
|
179
195
|
/** Typed resolution failure retained as a stable host-side rejection seam. */
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAUL,KAAK,OAAO,EACZ,KAAK,SAAS,EAGd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAGzB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EACV,qBAAqB,EAItB,MAAM,yBAAyB,CAAC;AA0MjC,qFAAqF;AACrF,MAAM,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiHjB,CAAC;AAGX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAKnE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,SAAS,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,UAAU,qBAAqB;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,4EAA4E;AAC5E,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,QAAQ,CAAC;IACtB,QAAQ,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;CACpC;AAED,iGAAiG;AACjG,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,2BAA2B,GAAG,uBAAuB,CAAC;AAEtF,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uGAAuG;AACvG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,cAAc,CACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,uBAAuB,GAC7B,oBAAoB,GAAG,QAAQ,GAAG,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,CAAC;CAC/E;AAED,8EAA8E;AAC9E,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;gBAEzB,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,MAAM;CAM5E;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAEpE;AAgJD,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAUtE;AAiFD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAExF"}
|
package/dist/router.js
CHANGED
|
@@ -16,10 +16,75 @@
|
|
|
16
16
|
* See `docs/WIRE-PROTOCOL.md` "Implemented by reference" section for the exact
|
|
17
17
|
* endpoint set and any recorded deviations from the draft.
|
|
18
18
|
*/
|
|
19
|
-
import { InvalidInputError, VersionConflict, assertSafeBlobKey, assertSafeConceptId, assertSafeReservedDir, isReservedFile, pathFromConceptId, stripETagWrapper, } from "@superbee/core/storage";
|
|
19
|
+
import { InvalidInputError, VersionConflict, assertSafeBlobKey, assertSafeConceptId, assertSafeReservedDir, isReservedFile, isContentVersion, pathFromConceptId, stripETagWrapper, } from "@superbee/core/storage";
|
|
20
20
|
import { queryHeads, writeDocVersioned } from "@superbee/core/engine";
|
|
21
|
+
import { isRequestIdentity } from "@superbee/core/storage";
|
|
21
22
|
/** Default page size for `GET /docs` when `limit` is not supplied. */
|
|
22
23
|
const DEFAULT_LIST_LIMIT = 50;
|
|
24
|
+
/** The header that carries a document write's durable request identity (`docs/WIRE-PROTOCOL.md`, "Identified writes"). */
|
|
25
|
+
const IDENTITY_HEADER = "Idempotency-Key";
|
|
26
|
+
/** The only endpoints that accept {@link IDENTITY_HEADER}; every other endpoint refuses it as `400 USAGE`. */
|
|
27
|
+
const IDENTIFIED_ENDPOINTS = new Set(["doc-write", "doc-delete"]);
|
|
28
|
+
/** The one answer for identity on a host that records no outcomes; a client must never mistake it for silent acceptance. */
|
|
29
|
+
const IDENTITY_UNSUPPORTED = "request identity is not supported by this host";
|
|
30
|
+
/** A request identity from an `operations/{key}` path segment: decoded once, then held to the wire's key rule. */
|
|
31
|
+
function decodeOperationKey(rawSegment) {
|
|
32
|
+
let key;
|
|
33
|
+
try {
|
|
34
|
+
key = decodeURIComponent(rawSegment);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new InvalidInputError(`invalid percent-encoding in operation key '${rawSegment}'`);
|
|
38
|
+
}
|
|
39
|
+
assertRequestIdentity(key);
|
|
40
|
+
return key;
|
|
41
|
+
}
|
|
42
|
+
function assertRequestIdentity(key) {
|
|
43
|
+
if (!isRequestIdentity(key)) {
|
|
44
|
+
throw new InvalidInputError("Idempotency-Key must be 1 to 128 printable ASCII characters with no space");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Capture a response so it can be recorded and replayed verbatim to a duplicate submission. */
|
|
48
|
+
async function recordableResponse(response) {
|
|
49
|
+
const headers = [];
|
|
50
|
+
response.headers.forEach((value, name) => headers.push([name, value]));
|
|
51
|
+
return { status: response.status, headers, body: await response.text() };
|
|
52
|
+
}
|
|
53
|
+
function replayResponse(recorded) {
|
|
54
|
+
return new Response(recorded.body, { status: recorded.status, headers: recorded.headers });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The outcome a recorded response reports through the lookup route: a success is `committed`
|
|
58
|
+
* at the version the response carried, a `412` is `conflict` at the envelope's `actual`, and
|
|
59
|
+
* anything else is `refused` with the envelope's code. The same mapping a client applies to a
|
|
60
|
+
* live response, so a looked-up outcome and a replayed response never disagree.
|
|
61
|
+
*/
|
|
62
|
+
function outcomeOf(recorded) {
|
|
63
|
+
let payload = {};
|
|
64
|
+
try {
|
|
65
|
+
payload = JSON.parse(recorded.body);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
payload = {};
|
|
69
|
+
}
|
|
70
|
+
if (recorded.status === 200 || recorded.status === 201) {
|
|
71
|
+
const version = recorded.headers.find(([name]) => name.toLowerCase() === "x-version")?.[1];
|
|
72
|
+
if (!version)
|
|
73
|
+
throw new Error("an identified write produced a success response that carries no version");
|
|
74
|
+
return { kind: "committed", version };
|
|
75
|
+
}
|
|
76
|
+
if (recorded.status === 412) {
|
|
77
|
+
const actual = payload.error?.details?.actual;
|
|
78
|
+
return { kind: "conflict", actual: typeof actual === "string" ? actual : null };
|
|
79
|
+
}
|
|
80
|
+
const code = payload.error?.code;
|
|
81
|
+
const message = payload.error?.message;
|
|
82
|
+
return {
|
|
83
|
+
kind: "refused",
|
|
84
|
+
code: typeof code === "string" ? code : "RUNTIME",
|
|
85
|
+
message: typeof message === "string" ? message : `status ${recorded.status}`,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
23
88
|
/** True when `err` carries the `ENOENT`-shaped `.code` the seam's adapters use for "absent". */
|
|
24
89
|
function isEnoent(err) {
|
|
25
90
|
return typeof err === "object" && err !== null && err.code === "ENOENT";
|
|
@@ -254,6 +319,13 @@ export const WIRE_ENDPOINTS = [
|
|
|
254
319
|
path: "/v0/bundles/{bundle}/blobs/{key...}",
|
|
255
320
|
accessClass: "write",
|
|
256
321
|
},
|
|
322
|
+
{
|
|
323
|
+
id: "operation-lookup",
|
|
324
|
+
resource: "operation",
|
|
325
|
+
method: "GET",
|
|
326
|
+
path: "/v0/bundles/{bundle}/operations/{key}",
|
|
327
|
+
accessClass: "write",
|
|
328
|
+
},
|
|
257
329
|
];
|
|
258
330
|
/** Typed resolution failure retained as a stable host-side rejection seam. */
|
|
259
331
|
export class WireRequestResolutionError extends Error {
|
|
@@ -338,6 +410,8 @@ function resourceFromMatch(resource, params, searchParams) {
|
|
|
338
410
|
assertSafeBlobKey(key);
|
|
339
411
|
return { kind: "blob", key };
|
|
340
412
|
}
|
|
413
|
+
case "operation":
|
|
414
|
+
return { kind: "operation", key: decodeOperationKey(params.key) };
|
|
341
415
|
}
|
|
342
416
|
}
|
|
343
417
|
function invalidBundleFromPath(pathname) {
|
|
@@ -436,6 +510,9 @@ function routeLabel(resource) {
|
|
|
436
510
|
case "blob":
|
|
437
511
|
label = "a blob route";
|
|
438
512
|
break;
|
|
513
|
+
case "operation":
|
|
514
|
+
label = "an operation route";
|
|
515
|
+
break;
|
|
439
516
|
case "capabilities":
|
|
440
517
|
label = "/v0/capabilities";
|
|
441
518
|
break;
|
|
@@ -551,12 +628,89 @@ function buildRouter(options) {
|
|
|
551
628
|
* catch-all (`VersionConflict` -> `412` via `errorFromCaught`, same as a write). `200
|
|
552
629
|
* { deleted }` unconditionally — never a `404`, matching the wire's absence-is-success
|
|
553
630
|
* contract (AXI P6).
|
|
631
|
+
*
|
|
632
|
+
* A delete that carried `If-Match` answers with the version headers naming that token: the
|
|
633
|
+
* revision the delete acted on, and the version an identified delete's recorded outcome is
|
|
634
|
+
* committed at. When the target was already absent the delete is still the idempotent success
|
|
635
|
+
* the wire promises, and the token the client supplied is still the revision its outcome
|
|
636
|
+
* names. An unconditional delete has no revision to name and sends no version headers.
|
|
554
637
|
*/
|
|
555
638
|
async function handleDeleteDoc(backend, id, req) {
|
|
556
639
|
assertValidDocId(id);
|
|
557
640
|
const options = deleteOptionsFromHeaders(req);
|
|
558
641
|
const deleted = await backend.delete(id, options);
|
|
559
|
-
|
|
642
|
+
const headers = options.expectedVersion === undefined ? {} : versionHeaders(options.expectedVersion);
|
|
643
|
+
return jsonResponse(200, { deleted }, headers);
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Apply one identified write at most once under `key`. The key is claimed before `apply`
|
|
647
|
+
* runs; a duplicate that finds the key recorded replays the recorded response, and one that
|
|
648
|
+
* finds the first application still in progress waits for it. A typed rejection thrown by the
|
|
649
|
+
* engine (`412`, `400`, `404`) is the write's answer and is recorded like a returned response;
|
|
650
|
+
* a runtime failure produced no answer, so the claim is released with nothing recorded and a
|
|
651
|
+
* later submission applies fresh. A recorded outcome is bound to its method and document id,
|
|
652
|
+
* so the same key resubmitted for a different operation is refused, never replayed.
|
|
653
|
+
*/
|
|
654
|
+
async function applyIdentified(scope, key, method, id, apply) {
|
|
655
|
+
try {
|
|
656
|
+
assertRequestIdentity(key);
|
|
657
|
+
}
|
|
658
|
+
catch (err) {
|
|
659
|
+
return errorFromCaught(err);
|
|
660
|
+
}
|
|
661
|
+
const store = options.outcomes;
|
|
662
|
+
if (!store)
|
|
663
|
+
return errorResponse(400, "USAGE", IDENTITY_UNSUPPORTED);
|
|
664
|
+
for (;;) {
|
|
665
|
+
const claim = await store.claim(scope, key);
|
|
666
|
+
if (claim.kind === "recorded")
|
|
667
|
+
return replayRecorded(claim.operation, method, id);
|
|
668
|
+
if (claim.kind === "in_progress") {
|
|
669
|
+
const settled = await claim.settled;
|
|
670
|
+
if (settled === null)
|
|
671
|
+
continue;
|
|
672
|
+
return replayRecorded(settled, method, id);
|
|
673
|
+
}
|
|
674
|
+
let response;
|
|
675
|
+
try {
|
|
676
|
+
response = await apply();
|
|
677
|
+
}
|
|
678
|
+
catch (err) {
|
|
679
|
+
if (!(err instanceof VersionConflict || err instanceof InvalidInputError || isEnoent(err))) {
|
|
680
|
+
claim.release();
|
|
681
|
+
throw err;
|
|
682
|
+
}
|
|
683
|
+
response = errorFromCaught(err);
|
|
684
|
+
}
|
|
685
|
+
let recorded;
|
|
686
|
+
let outcome;
|
|
687
|
+
try {
|
|
688
|
+
recorded = await recordableResponse(response);
|
|
689
|
+
outcome = outcomeOf(recorded);
|
|
690
|
+
}
|
|
691
|
+
catch (err) {
|
|
692
|
+
claim.release();
|
|
693
|
+
throw err;
|
|
694
|
+
}
|
|
695
|
+
claim.record({ method, id, response: recorded, outcome });
|
|
696
|
+
return replayResponse(recorded);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
function replayRecorded(operation, method, id) {
|
|
700
|
+
if (operation.method !== method || operation.id !== id) {
|
|
701
|
+
return errorResponse(400, "USAGE", `Idempotency-Key was recorded for ${operation.method} '${operation.id}', not ${method} '${id}'`, { recorded: { method: operation.method, id: operation.id } });
|
|
702
|
+
}
|
|
703
|
+
return replayResponse(operation.response);
|
|
704
|
+
}
|
|
705
|
+
/** `GET /operations/{key}`: the recorded outcome, or `404` when the store holds nothing under the key. */
|
|
706
|
+
async function handleOperationLookup(scope, key) {
|
|
707
|
+
const store = options.outcomes;
|
|
708
|
+
if (!store)
|
|
709
|
+
return errorResponse(400, "USAGE", IDENTITY_UNSUPPORTED);
|
|
710
|
+
const operation = await store.lookup(scope, key);
|
|
711
|
+
if (!operation)
|
|
712
|
+
return errorResponse(404, "NOT_FOUND", `no recorded outcome for '${key}'`);
|
|
713
|
+
return jsonResponse(200, operation.outcome);
|
|
560
714
|
}
|
|
561
715
|
async function handleVersions(backend, id) {
|
|
562
716
|
assertValidDocId(id);
|
|
@@ -748,9 +902,17 @@ function buildRouter(options) {
|
|
|
748
902
|
projections: caps.projections ?? true,
|
|
749
903
|
backlinks: caps.backlinks ?? false,
|
|
750
904
|
blobs: caps.blobs,
|
|
905
|
+
operations: options.outcomes !== undefined,
|
|
751
906
|
});
|
|
752
907
|
}
|
|
753
908
|
return registeredWireRouter(async (req, { resolved }) => {
|
|
909
|
+
// Identity is refused wherever it is not honored, so a client never believes an
|
|
910
|
+
// unsupported write was identified. The refusal precedes context resolution the way route
|
|
911
|
+
// resolution does; on the two identified endpoints the host's own answer comes first.
|
|
912
|
+
const identity = req.headers.get(IDENTITY_HEADER);
|
|
913
|
+
if (identity !== null && !IDENTIFIED_ENDPOINTS.has(resolved.endpointId)) {
|
|
914
|
+
return errorResponse(400, "USAGE", "Idempotency-Key is accepted only on document PUT and DELETE");
|
|
915
|
+
}
|
|
754
916
|
if (resolved.scope === "deployment")
|
|
755
917
|
return handleCapabilities();
|
|
756
918
|
const context = await options.resolveContext(req, resolved);
|
|
@@ -768,12 +930,29 @@ function buildRouter(options) {
|
|
|
768
930
|
return await handleVersions(backend, resolved.resource.id);
|
|
769
931
|
case "doc-read":
|
|
770
932
|
return await handleReadDoc(backend, resolved.resource.id);
|
|
771
|
-
case "doc-write":
|
|
772
|
-
|
|
933
|
+
case "doc-write": {
|
|
934
|
+
const { id } = resolved.resource;
|
|
935
|
+
const write = () => handleWriteDoc(backend, attribution, id, req);
|
|
936
|
+
return identity === null ? await write() : await applyIdentified(resolved.bundleId, identity, "PUT", id, write);
|
|
937
|
+
}
|
|
773
938
|
case "doc-head":
|
|
774
939
|
return await handleHeadDoc(backend, resolved.resource.id);
|
|
775
|
-
case "doc-delete":
|
|
776
|
-
|
|
940
|
+
case "doc-delete": {
|
|
941
|
+
const { id } = resolved.resource;
|
|
942
|
+
if (identity !== null) {
|
|
943
|
+
// The token becomes the version the recorded outcome is committed at and the version
|
|
944
|
+
// headers the answer carries, so it must be a real content-addressed version, checked
|
|
945
|
+
// before the key is claimed: an absent, empty or malformed premise records nothing.
|
|
946
|
+
const premise = req.headers.get("If-Match");
|
|
947
|
+
if (premise === null || !isContentVersion(stripETagWrapper(premise))) {
|
|
948
|
+
return errorResponse(400, "USAGE", "an identified delete must carry a well-formed If-Match token");
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
const remove = () => handleDeleteDoc(backend, id, req);
|
|
952
|
+
return identity === null ? await remove() : await applyIdentified(resolved.bundleId, identity, "DELETE", id, remove);
|
|
953
|
+
}
|
|
954
|
+
case "operation-lookup":
|
|
955
|
+
return await handleOperationLookup(resolved.bundleId, resolved.resource.key);
|
|
777
956
|
case "reserved-read": {
|
|
778
957
|
const resource = resolved.resource;
|
|
779
958
|
return await handleReadReserved(backend, resource.dir, resource.name);
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/serve.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* implementation for proving the protocol end-to-end, not a production deployment.
|
|
11
11
|
*/
|
|
12
12
|
import { type IncomingMessage, type ServerResponse } from "node:http";
|
|
13
|
+
import type { OperationOutcomeStore } from "./operation-outcomes.js";
|
|
13
14
|
import type { Bundle } from "@superbee/core";
|
|
14
15
|
/** Options for {@link serve}. */
|
|
15
16
|
export interface ServeOptions {
|
|
@@ -19,6 +20,8 @@ export interface ServeOptions {
|
|
|
19
20
|
host?: string;
|
|
20
21
|
/** Port to bind. `0` (the default) picks an ephemeral port — read it back via {@link ServerHandle.port}. */
|
|
21
22
|
port?: number;
|
|
23
|
+
/** The store behind identified writes; a fresh in-memory store when omitted, none when `null`. */
|
|
24
|
+
outcomes?: OperationOutcomeStore | null;
|
|
22
25
|
}
|
|
23
26
|
/** A running server, returned by {@link serve}. */
|
|
24
27
|
export interface ServerHandle {
|
package/dist/serve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACzC;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM;CAK/B;AAuCD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,4HAA4H;AAC5H,wBAAsB,6BAA6B,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1G;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAgClE"}
|
package/dist/serve.js
CHANGED
|
@@ -98,7 +98,7 @@ export async function writeResponseToServerResponse(res, response) {
|
|
|
98
98
|
* listening. See the module doc for the no-auth / loopback-only caveat.
|
|
99
99
|
*/
|
|
100
100
|
export function serve(options) {
|
|
101
|
-
const router = createRouter(options.bundle);
|
|
101
|
+
const router = createRouter(options.bundle, { outcomes: options.outcomes });
|
|
102
102
|
const host = options.host ?? "127.0.0.1";
|
|
103
103
|
return new Promise((resolve, reject) => {
|
|
104
104
|
const server = createServer((req, res) => {
|
package/dist/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superbee/server",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.0-pre.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Wire-protocol v0 REFERENCE server: a Web-standard fetch(Request)->Response router over the OKF engine (docs/WIRE-PROTOCOL.md), plus a thin node:http bootstrap. Local-first, no auth (loopback-only default). A reference implementation, not a production deployment.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,13 +20,17 @@
|
|
|
20
20
|
"./router": {
|
|
21
21
|
"types": "./dist/router.d.ts",
|
|
22
22
|
"default": "./dist/router.js"
|
|
23
|
+
},
|
|
24
|
+
"./operation-outcomes": {
|
|
25
|
+
"types": "./dist/operation-outcomes.d.ts",
|
|
26
|
+
"default": "./dist/operation-outcomes.js"
|
|
23
27
|
}
|
|
24
28
|
},
|
|
25
29
|
"files": [
|
|
26
30
|
"dist"
|
|
27
31
|
],
|
|
28
32
|
"publishConfig": {
|
|
29
|
-
"access": "
|
|
33
|
+
"access": "public",
|
|
30
34
|
"registry": "https://registry.npmjs.org/"
|
|
31
35
|
},
|
|
32
36
|
"scripts": {
|
|
@@ -36,6 +40,6 @@
|
|
|
36
40
|
"prepublishOnly": "node -e \"console.error('@superbee/server is released by .github/workflows/release-libraries.yml; do not run npm publish here'); process.exit(1)\""
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
|
-
"@superbee/core": "0.1
|
|
43
|
+
"@superbee/core": "0.2.0-pre.1"
|
|
40
44
|
}
|
|
41
45
|
}
|