@superbee/core 0.2.0-pre.6 → 0.2.0-pre.9
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 +95 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/bundle-ops.d.ts +1 -1
- package/dist/bundle-ops.d.ts.map +1 -1
- package/dist/bundle-ops.js +2 -2
- package/dist/bundle-ops.js.map +1 -1
- package/dist/document-field-actions.d.ts +13 -0
- package/dist/document-field-actions.d.ts.map +1 -1
- package/dist/document-field-actions.js +44 -3
- package/dist/document-field-actions.js.map +1 -1
- package/dist/document-mutation.d.ts +11 -0
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +20 -2
- package/dist/document-mutation.js.map +1 -1
- package/dist/engine.d.ts +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +4 -3
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +19 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +10 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +162 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1113 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-lock.d.ts +10 -0
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +133 -8
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/governed-body-write.d.ts +8 -1
- package/dist/governed-body-write.d.ts.map +1 -1
- package/dist/governed-body-write.js +9 -2
- package/dist/governed-body-write.js.map +1 -1
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +216 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +396 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +142 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +241 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +250 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +557 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +411 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +6 -1
- package/dist/indexeddb-backend.d.ts.map +1 -1
- package/dist/indexeddb-backend.js +77 -6
- package/dist/indexeddb-backend.js.map +1 -1
- package/dist/journaled-backend.d.ts +73 -5
- package/dist/journaled-backend.d.ts.map +1 -1
- package/dist/journaled-backend.js +55 -1
- package/dist/journaled-backend.js.map +1 -1
- package/dist/kinds.d.ts +25 -1
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +52 -4
- package/dist/kinds.js.map +1 -1
- package/dist/links.d.ts +1 -1
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +5 -10
- package/dist/links.js.map +1 -1
- package/dist/platform.d.ts +9 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js.map +1 -1
- package/dist/query-filter.d.ts +7 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +24 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/remote-backend.d.ts +56 -11
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +154 -27
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-error.d.ts +17 -1
- package/dist/remote-error.d.ts.map +1 -1
- package/dist/remote-error.js +32 -2
- package/dist/remote-error.js.map +1 -1
- package/dist/remote-operations.d.ts +5 -4
- package/dist/remote-operations.d.ts.map +1 -1
- package/dist/remote-operations.js +16 -6
- package/dist/remote-operations.js.map +1 -1
- package/dist/remote-parsers.d.ts +1 -1
- package/dist/remote-parsers.js +1 -1
- package/dist/types.d.ts +26 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/uncertain-write.d.ts +45 -11
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +30 -9
- package/dist/uncertain-write.js.map +1 -1
- package/package.json +22 -2
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# @superbee/core
|
|
2
|
+
|
|
3
|
+
The Superbee knowledge engine reads and writes Open Knowledge Format bundles, with versioned
|
|
4
|
+
writes, cross-links and storage backends. It is a library; installing it does not install the
|
|
5
|
+
`superbee` executable.
|
|
6
|
+
|
|
7
|
+
Core and `@superbee/server` are released together, independently of the `superbee` CLI. A CLI
|
|
8
|
+
release bundles the engine source selected at build time; it does not load `@superbee/core@latest`.
|
|
9
|
+
|
|
10
|
+
## Document presentation values
|
|
11
|
+
|
|
12
|
+
The additive `@superbee/core/artifact-contract` subpath provides pure v1 document target,
|
|
13
|
+
observation, request, receipt and capability decoders. See the [contract reference](https://github.com/Holaxis-ai/superbee/blob/main/packages/core/ARTIFACT-CONTRACT.md)
|
|
14
|
+
for identity, provenance, lifecycle and host responsibilities.
|
|
15
|
+
|
|
16
|
+
## Filesystem platform migration
|
|
17
|
+
|
|
18
|
+
The Windows extraction changes the default Node.js filesystem backend. Its built-in host policy
|
|
19
|
+
supports macOS and Linux. On native Windows or another unsupported host, filesystem construction
|
|
20
|
+
requires an explicit `FilesystemHostPolicy`; there is no automatic Windows fallback.
|
|
21
|
+
|
|
22
|
+
| Entry point | Default on macOS/Linux | On other hosts |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `new FilesystemBackend(root)` | Uses the built-in policy | Pass `{ hostPolicy }` as the second argument |
|
|
25
|
+
| `initBundle(root, options)` | Uses the built-in policy | Pass `{ hostPolicy }` as the third argument |
|
|
26
|
+
| `createFilesystemRuntime()` | Captures the built-in policy | Pass a host policy as its argument |
|
|
27
|
+
| `withFilesystemMutationLock(target, body, options)` | Uses the built-in policy | Include `hostPolicy` in `options` |
|
|
28
|
+
| `filesystemMutationLockPath(target, portableRoot)` | Uses the built-in policy | Pass a host policy as the third argument |
|
|
29
|
+
|
|
30
|
+
Without that policy, these filesystem entry points throw `InvalidInputError` on unsupported hosts;
|
|
31
|
+
backend construction and bundle initialization refuse before creating or modifying the target.
|
|
32
|
+
The package has no npm `os` restriction: storage contracts and non-filesystem backends remain
|
|
33
|
+
available independently of the default filesystem policy. Choose a backend and imports appropriate
|
|
34
|
+
to your runtime; installing the library alone does not establish native filesystem support.
|
|
35
|
+
|
|
36
|
+
There is no Windows adapter on npm to install. The experimental first-party adapters are built
|
|
37
|
+
from source in a separate repository, https://github.com/Holaxis-ai/superbee-windows-cli.
|
|
38
|
+
Supplying a policy is an integration contract for an adapter owner, not a promise that arbitrary
|
|
39
|
+
policies make Windows supported.
|
|
40
|
+
|
|
41
|
+
## Keep the backend returned by initBundle
|
|
42
|
+
|
|
43
|
+
`initBundle` now returns `{ root, backend }`. Pass that returned bundle to engine operations so they
|
|
44
|
+
retain the backend and host policy selected during initialization:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { initBundle, readDoc, writeDoc } from '@superbee/core';
|
|
48
|
+
|
|
49
|
+
const bundle = await initBundle('./knowledge'); // Default filesystem: macOS/Linux.
|
|
50
|
+
await writeDoc(bundle, {
|
|
51
|
+
id: 'notes/example',
|
|
52
|
+
frontmatter: { type: 'Note', title: 'Example' },
|
|
53
|
+
body: 'Shared knowledge.\n',
|
|
54
|
+
});
|
|
55
|
+
const document = await readDoc(bundle, 'notes/example');
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Reading `bundle.root` still works. Code that assumes the return value has exactly one property,
|
|
59
|
+
serializes the whole return value, or uses backend presence as a synonym for a remote bundle must
|
|
60
|
+
be updated. A filesystem bundle now has a backend too. Serialize only the fields your application
|
|
61
|
+
intends to persist; do not reconstruct `{ root: bundle.root }` when continuing engine operations
|
|
62
|
+
that need the selected backend.
|
|
63
|
+
|
|
64
|
+
## Integrating an explicit filesystem policy
|
|
65
|
+
|
|
66
|
+
`@superbee/core/filesystem` exports `createFilesystemRuntime`, `FilesystemBackend`, and the
|
|
67
|
+
`FilesystemHostPolicy` type. An application that owns its host adapter can bind it once:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import { createFilesystemRuntime, type FilesystemHostPolicy } from '@superbee/core/filesystem';
|
|
71
|
+
|
|
72
|
+
export async function openFilesystemBundle(root: string, hostPolicy: FilesystemHostPolicy) {
|
|
73
|
+
const filesystem = createFilesystemRuntime(hostPolicy);
|
|
74
|
+
return filesystem.initBundle(root);
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The resulting runtime supplies `backend`, `initBundle`, `withMutationLock`, and `mutationLockPath`
|
|
79
|
+
with the same captured policy. Direct backend construction uses
|
|
80
|
+
`new FilesystemBackend(root, { hostPolicy })`. Lock helpers are also exported from `@superbee/core`.
|
|
81
|
+
|
|
82
|
+
A policy supplies the lock-parent directory, owner-namespace key, private-mode enforcement choice,
|
|
83
|
+
and host error classifications. Core still owns lock ownership, version checks, retry bounds and
|
|
84
|
+
cleanup. Policies are structural snapshots: public data and methods are captured, while callbacks
|
|
85
|
+
may continue to observe live operating-system facts. Do not use opaque private fields or methods
|
|
86
|
+
pre-bound to a mutable receiver.
|
|
87
|
+
|
|
88
|
+
## Release compatibility
|
|
89
|
+
|
|
90
|
+
This migration describes the source after the Windows extraction. Previously published versions
|
|
91
|
+
are unchanged. Consult the release notes for the first affected version before upgrading a pinned
|
|
92
|
+
consumer. CLI and engine version numbers are independent; do not infer matching embedded code from
|
|
93
|
+
package names or version labels.
|
|
94
|
+
|
|
95
|
+
[Source and contribution guide](https://github.com/Holaxis-ai/superbee)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** Portable document identity and presentation evidence. No host selection or effects. */
|
|
2
|
+
import type { ConceptId, Version } from "./types.js";
|
|
3
|
+
import type { Provenance } from "./platform.js";
|
|
4
|
+
export type ArtifactAuthorityV1 = {
|
|
5
|
+
mode: "local";
|
|
6
|
+
authorityKey: string;
|
|
7
|
+
} | {
|
|
8
|
+
mode: "hosted";
|
|
9
|
+
authorityKey: string;
|
|
10
|
+
workspaceKey: string;
|
|
11
|
+
};
|
|
12
|
+
export interface DocumentTargetV1 {
|
|
13
|
+
schemaVersion: "superbee.document-target.v1";
|
|
14
|
+
authority: ArtifactAuthorityV1;
|
|
15
|
+
bundleKey: string;
|
|
16
|
+
documentId: ConceptId;
|
|
17
|
+
}
|
|
18
|
+
export type ArtifactLifecycleV1 = {
|
|
19
|
+
state: "unverified";
|
|
20
|
+
} | {
|
|
21
|
+
state: "bound";
|
|
22
|
+
sourceToken: string;
|
|
23
|
+
documentToken: string;
|
|
24
|
+
};
|
|
25
|
+
export interface DocumentObservationV1 {
|
|
26
|
+
schemaVersion: "superbee.document-observation.v1";
|
|
27
|
+
target: DocumentTargetV1;
|
|
28
|
+
provenance: Provenance;
|
|
29
|
+
lifecycle: ArtifactLifecycleV1;
|
|
30
|
+
}
|
|
31
|
+
export interface PresentDocumentRequestV1 {
|
|
32
|
+
schemaVersion: "superbee.present-document.v1";
|
|
33
|
+
operation: "present_document";
|
|
34
|
+
invocationId: string;
|
|
35
|
+
target: DocumentTargetV1;
|
|
36
|
+
referenceVersion?: Version;
|
|
37
|
+
expectedLifecycle?: Extract<ArtifactLifecycleV1, {
|
|
38
|
+
state: "bound";
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
export type PresentationStateV1 = {
|
|
42
|
+
state: "open_requested";
|
|
43
|
+
observation?: DocumentObservationV1;
|
|
44
|
+
} | {
|
|
45
|
+
state: "payload_prepared";
|
|
46
|
+
observation: DocumentObservationV1;
|
|
47
|
+
} | {
|
|
48
|
+
state: "offered";
|
|
49
|
+
expiresAt: number;
|
|
50
|
+
observation?: DocumentObservationV1;
|
|
51
|
+
} | {
|
|
52
|
+
state: "navigated";
|
|
53
|
+
observation?: DocumentObservationV1;
|
|
54
|
+
};
|
|
55
|
+
export type PresentationErrorCodeV1 = "invalid_input" | "unsupported_version" | "unsupported_operation" | "unsupported_host" | "unavailable" | "unavailable_stale_target" | "context_changed" | "presentation_disabled" | "busy";
|
|
56
|
+
export type PresentDocumentReceiptV1 = {
|
|
57
|
+
schemaVersion: "superbee.present-document-receipt.v1";
|
|
58
|
+
operation: "present_document";
|
|
59
|
+
invocationId: string;
|
|
60
|
+
target: DocumentTargetV1;
|
|
61
|
+
} & ({
|
|
62
|
+
ok: true;
|
|
63
|
+
presentation: PresentationStateV1;
|
|
64
|
+
} | {
|
|
65
|
+
ok: false;
|
|
66
|
+
error: {
|
|
67
|
+
code: PresentationErrorCodeV1;
|
|
68
|
+
retryable: boolean;
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
export interface DocumentPresentationCapabilitiesV1 {
|
|
72
|
+
schemaVersion: "superbee.document-presentation-capabilities.v1";
|
|
73
|
+
states: Array<PresentationStateV1["state"]>;
|
|
74
|
+
}
|
|
75
|
+
export type ArtifactDecodeResult<T> = {
|
|
76
|
+
ok: true;
|
|
77
|
+
value: T;
|
|
78
|
+
} | {
|
|
79
|
+
ok: false;
|
|
80
|
+
code: "invalid_input" | "unsupported_version" | "receipt_mismatch";
|
|
81
|
+
};
|
|
82
|
+
export declare function decodeDocumentTargetV1(value: unknown): ArtifactDecodeResult<DocumentTargetV1>;
|
|
83
|
+
export declare function decodeDocumentObservationV1(value: unknown): ArtifactDecodeResult<DocumentObservationV1>;
|
|
84
|
+
export declare function decodePresentDocumentRequestV1(value: unknown): ArtifactDecodeResult<PresentDocumentRequestV1>;
|
|
85
|
+
/** expected is caller-owned decoded data or an equivalent trusted constructor value. */
|
|
86
|
+
export declare function decodePresentDocumentReceiptV1(value: unknown, expected: PresentDocumentRequestV1): ArtifactDecodeResult<PresentDocumentReceiptV1>;
|
|
87
|
+
export declare function decodeDocumentPresentationCapabilitiesV1(value: unknown): ArtifactDecodeResult<DocumentPresentationCapabilitiesV1>;
|
|
88
|
+
export declare function sameDocumentTargetV1(a: DocumentTargetV1, b: DocumentTargetV1): boolean;
|
|
89
|
+
export declare function compareAuthorityVersionV1(observed: DocumentObservationV1, reference: Version): "same" | "different" | "unconfirmed";
|
|
90
|
+
//# sourceMappingURL=artifact-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-contract.d.ts","sourceRoot":"","sources":["../src/artifact-contract.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,6BAA6B,CAAC;IAC7C,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC;CACvB;AACD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,kCAAkC,CAAC;IAClD,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,mBAAmB,CAAC;CAChC;AACD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,8BAA8B,CAAC;IAC9C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtE;AACD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CAAE,GAChE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,qBAAqB,CAAA;CAAE,GACjE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CAAE,GAC5E;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,uBAAuB,GAC/B,eAAe,GAAG,qBAAqB,GAAG,uBAAuB,GACjE,kBAAkB,GAAG,aAAa,GAAG,0BAA0B,GAC/D,iBAAiB,GAAG,uBAAuB,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,sCAAsC,CAAC;IACtD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GAAG,CACA;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,uBAAuB,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,CAC9E,CAAC;AACF,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,gDAAgD,CAAC;IAChE,MAAM,EAAE,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7C;AACD,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,eAAe,GAAG,qBAAqB,GAAG,kBAAkB,CAAA;CAAE,CAAC;AAsKtF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAkC;AAChI,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,CAAuC;AAC/I,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,CAAmC;AACjJ,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,wBAAwB,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,CAEjJ;AACD,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC,kCAAkC,CAAC,CAOjI;AACD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAItF;AACD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAEnI"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { assertSafeConceptId } from "./paths.js";
|
|
2
|
+
import { isContentVersion } from "./version-transport.js";
|
|
3
|
+
class DecodeFailure {
|
|
4
|
+
code;
|
|
5
|
+
constructor(code) { this.code = code; }
|
|
6
|
+
}
|
|
7
|
+
function requireValue(condition, code = "invalid_input") {
|
|
8
|
+
if (!condition)
|
|
9
|
+
throw new DecodeFailure(code);
|
|
10
|
+
}
|
|
11
|
+
/** Reflect first, before schema classification. Own accessors are never read. Reflection can
|
|
12
|
+
* invoke Proxy traps; failures are caught by the decoder, not treated as trusted data. */
|
|
13
|
+
function snapshot(value, ancestors = new Set()) {
|
|
14
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
15
|
+
return value;
|
|
16
|
+
if (typeof value === "number") {
|
|
17
|
+
requireValue(Number.isFinite(value));
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
requireValue(typeof value === "object");
|
|
21
|
+
requireValue(!ancestors.has(value));
|
|
22
|
+
const array = Array.isArray(value);
|
|
23
|
+
const prototype = Object.getPrototypeOf(value);
|
|
24
|
+
requireValue(array ? prototype === Array.prototype : prototype === null || prototype === Object.prototype);
|
|
25
|
+
ancestors.add(value);
|
|
26
|
+
try {
|
|
27
|
+
const copy = Object.create(null);
|
|
28
|
+
const keys = Reflect.ownKeys(value);
|
|
29
|
+
for (const key of keys) {
|
|
30
|
+
requireValue(typeof key === "string");
|
|
31
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
32
|
+
requireValue(descriptor && Object.hasOwn(descriptor, "value"));
|
|
33
|
+
copy[key] = snapshot(descriptor.value, ancestors);
|
|
34
|
+
}
|
|
35
|
+
if (!array)
|
|
36
|
+
return copy;
|
|
37
|
+
const length = copy.length;
|
|
38
|
+
requireValue(typeof length === "number" && Number.isSafeInteger(length) && length >= 0);
|
|
39
|
+
requireValue(keys.length === length + 1);
|
|
40
|
+
const items = [];
|
|
41
|
+
for (let i = 0; i < length; i++) {
|
|
42
|
+
requireValue(Object.hasOwn(copy, String(i)));
|
|
43
|
+
items.push(copy[String(i)]);
|
|
44
|
+
}
|
|
45
|
+
return items;
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
ancestors.delete(value);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function record(value) {
|
|
52
|
+
requireValue(value !== null && typeof value === "object" && !Array.isArray(value));
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
function fields(value, required, optional = []) {
|
|
56
|
+
requireValue(required.every(key => Object.hasOwn(value, key)));
|
|
57
|
+
requireValue(Object.keys(value).every(key => required.includes(key) || optional.includes(key)));
|
|
58
|
+
}
|
|
59
|
+
function envelope(value, schema) {
|
|
60
|
+
const data = record(value);
|
|
61
|
+
requireValue(typeof data.schemaVersion === "string");
|
|
62
|
+
requireValue(data.schemaVersion === schema, "unsupported_version");
|
|
63
|
+
return data;
|
|
64
|
+
}
|
|
65
|
+
function key(value) {
|
|
66
|
+
requireValue(typeof value === "string" && /^[\x21-\x7e]{1,256}$/.test(value) && !/[\\/]/.test(value));
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
function version(value) { requireValue(isContentVersion(value)); return value; }
|
|
70
|
+
function nullableVersion(value) { return value === null ? null : version(value); }
|
|
71
|
+
function target(value) {
|
|
72
|
+
const data = envelope(value, "superbee.document-target.v1");
|
|
73
|
+
fields(data, ["schemaVersion", "authority", "bundleKey", "documentId"]);
|
|
74
|
+
const authority = record(data.authority);
|
|
75
|
+
let parsedAuthority;
|
|
76
|
+
if (authority.mode === "local") {
|
|
77
|
+
fields(authority, ["mode", "authorityKey"]);
|
|
78
|
+
parsedAuthority = { mode: "local", authorityKey: key(authority.authorityKey) };
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
requireValue(authority.mode === "hosted");
|
|
82
|
+
fields(authority, ["mode", "authorityKey", "workspaceKey"]);
|
|
83
|
+
parsedAuthority = { mode: "hosted", authorityKey: key(authority.authorityKey), workspaceKey: key(authority.workspaceKey) };
|
|
84
|
+
}
|
|
85
|
+
requireValue(typeof data.documentId === "string");
|
|
86
|
+
assertSafeConceptId(data.documentId);
|
|
87
|
+
return { schemaVersion: "superbee.document-target.v1", authority: parsedAuthority, bundleKey: key(data.bundleKey), documentId: data.documentId };
|
|
88
|
+
}
|
|
89
|
+
function lifecycle(value) {
|
|
90
|
+
const data = record(value);
|
|
91
|
+
if (data.state === "unverified") {
|
|
92
|
+
fields(data, ["state"]);
|
|
93
|
+
return { state: "unverified" };
|
|
94
|
+
}
|
|
95
|
+
requireValue(data.state === "bound");
|
|
96
|
+
fields(data, ["state", "sourceToken", "documentToken"]);
|
|
97
|
+
return { state: "bound", sourceToken: key(data.sourceToken), documentToken: key(data.documentToken) };
|
|
98
|
+
}
|
|
99
|
+
function provenance(value) {
|
|
100
|
+
const data = record(value);
|
|
101
|
+
if (data.state === "shared-confirmed") {
|
|
102
|
+
fields(data, ["state", "version", "acknowledged"]);
|
|
103
|
+
return { state: "shared-confirmed", version: version(data.version), acknowledged: version(data.acknowledged) };
|
|
104
|
+
}
|
|
105
|
+
requireValue(data.state === "local-pending" || data.state === "local-conflict");
|
|
106
|
+
fields(data, ["state", "version", "base", "requestId", ...(data.state === "local-conflict" ? ["remote"] : [])]);
|
|
107
|
+
requireValue(typeof data.requestId === "string");
|
|
108
|
+
const common = { version: version(data.version), base: nullableVersion(data.base), requestId: data.requestId };
|
|
109
|
+
return data.state === "local-pending"
|
|
110
|
+
? { state: "local-pending", ...common }
|
|
111
|
+
: { state: "local-conflict", ...common, remote: nullableVersion(data.remote) };
|
|
112
|
+
}
|
|
113
|
+
function observation(value) {
|
|
114
|
+
const data = envelope(value, "superbee.document-observation.v1");
|
|
115
|
+
fields(data, ["schemaVersion", "target", "provenance", "lifecycle"]);
|
|
116
|
+
return { schemaVersion: "superbee.document-observation.v1", target: target(data.target), provenance: provenance(data.provenance), lifecycle: lifecycle(data.lifecycle) };
|
|
117
|
+
}
|
|
118
|
+
function request(value) {
|
|
119
|
+
const data = envelope(value, "superbee.present-document.v1");
|
|
120
|
+
fields(data, ["schemaVersion", "operation", "invocationId", "target"], ["referenceVersion", "expectedLifecycle"]);
|
|
121
|
+
requireValue(data.operation === "present_document");
|
|
122
|
+
const expectedLifecycle = Object.hasOwn(data, "expectedLifecycle") ? lifecycle(data.expectedLifecycle) : undefined;
|
|
123
|
+
requireValue(expectedLifecycle === undefined || expectedLifecycle.state === "bound");
|
|
124
|
+
return {
|
|
125
|
+
schemaVersion: "superbee.present-document.v1", operation: "present_document",
|
|
126
|
+
invocationId: key(data.invocationId), target: target(data.target),
|
|
127
|
+
...(Object.hasOwn(data, "referenceVersion") ? { referenceVersion: version(data.referenceVersion) } : {}),
|
|
128
|
+
...(expectedLifecycle?.state === "bound" ? { expectedLifecycle } : {}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const states = ["open_requested", "payload_prepared", "offered", "navigated"];
|
|
132
|
+
function presentation(value) {
|
|
133
|
+
const data = record(value);
|
|
134
|
+
requireValue(states.includes(data.state));
|
|
135
|
+
fields(data, ["state", ...(data.state === "offered" ? ["expiresAt"] : []), ...(data.state === "payload_prepared" ? ["observation"] : [])], ["observation"]);
|
|
136
|
+
const observed = Object.hasOwn(data, "observation") ? { observation: observation(data.observation) } : {};
|
|
137
|
+
switch (data.state) {
|
|
138
|
+
case "offered":
|
|
139
|
+
requireValue(typeof data.expiresAt === "number" && Number.isSafeInteger(data.expiresAt) && data.expiresAt >= 0);
|
|
140
|
+
return { state: "offered", expiresAt: data.expiresAt, ...observed };
|
|
141
|
+
case "payload_prepared": return { state: "payload_prepared", observation: observation(data.observation) };
|
|
142
|
+
case "open_requested": return { state: "open_requested", ...observed };
|
|
143
|
+
default: return { state: "navigated", ...observed };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const errors = ["invalid_input", "unsupported_version", "unsupported_operation", "unsupported_host", "unavailable", "unavailable_stale_target", "context_changed", "presentation_disabled", "busy"];
|
|
147
|
+
function receipt(value, expected) {
|
|
148
|
+
const data = envelope(value, "superbee.present-document-receipt.v1");
|
|
149
|
+
requireValue(typeof data.ok === "boolean");
|
|
150
|
+
fields(data, ["schemaVersion", "operation", "invocationId", "target", "ok", data.ok ? "presentation" : "error"]);
|
|
151
|
+
requireValue(data.operation === "present_document");
|
|
152
|
+
const common = { schemaVersion: "superbee.present-document-receipt.v1", operation: "present_document", invocationId: key(data.invocationId), target: target(data.target) };
|
|
153
|
+
let parsed;
|
|
154
|
+
if (data.ok)
|
|
155
|
+
parsed = { ...common, ok: true, presentation: presentation(data.presentation) };
|
|
156
|
+
else {
|
|
157
|
+
const error = record(data.error);
|
|
158
|
+
fields(error, ["code", "retryable"]);
|
|
159
|
+
requireValue(errors.includes(error.code) && typeof error.retryable === "boolean");
|
|
160
|
+
requireValue(!error.retryable || error.code === "busy" || error.code === "unavailable");
|
|
161
|
+
parsed = { ...common, ok: false, error: { code: error.code, retryable: error.retryable } };
|
|
162
|
+
}
|
|
163
|
+
requireValue(parsed.invocationId === expected.invocationId && sameDocumentTargetV1(parsed.target, expected.target), "receipt_mismatch");
|
|
164
|
+
if (parsed.ok) {
|
|
165
|
+
const observed = parsed.presentation.observation;
|
|
166
|
+
requireValue(!observed || sameDocumentTargetV1(observed.target, expected.target), "receipt_mismatch");
|
|
167
|
+
if (expected.expectedLifecycle) {
|
|
168
|
+
const actual = observed?.lifecycle;
|
|
169
|
+
requireValue(actual?.state === "bound" && actual.sourceToken === expected.expectedLifecycle.sourceToken && actual.documentToken === expected.expectedLifecycle.documentToken, "receipt_mismatch");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return parsed;
|
|
173
|
+
}
|
|
174
|
+
function decode(value, parse) {
|
|
175
|
+
try {
|
|
176
|
+
return { ok: true, value: parse(snapshot(value)) };
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
return { ok: false, code: error instanceof DecodeFailure ? error.code : "invalid_input" };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export function decodeDocumentTargetV1(value) { return decode(value, target); }
|
|
183
|
+
export function decodeDocumentObservationV1(value) { return decode(value, observation); }
|
|
184
|
+
export function decodePresentDocumentRequestV1(value) { return decode(value, request); }
|
|
185
|
+
/** expected is caller-owned decoded data or an equivalent trusted constructor value. */
|
|
186
|
+
export function decodePresentDocumentReceiptV1(value, expected) {
|
|
187
|
+
return decode(value, data => receipt(data, expected));
|
|
188
|
+
}
|
|
189
|
+
export function decodeDocumentPresentationCapabilitiesV1(value) {
|
|
190
|
+
return decode(value, value => {
|
|
191
|
+
const data = envelope(value, "superbee.document-presentation-capabilities.v1");
|
|
192
|
+
fields(data, ["schemaVersion", "states"]);
|
|
193
|
+
requireValue(Array.isArray(data.states) && data.states.every(state => states.includes(state)) && new Set(data.states).size === data.states.length);
|
|
194
|
+
return { schemaVersion: "superbee.document-presentation-capabilities.v1", states: [...data.states] };
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
export function sameDocumentTargetV1(a, b) {
|
|
198
|
+
return a.authority.mode === b.authority.mode && a.authority.authorityKey === b.authority.authorityKey
|
|
199
|
+
&& (a.authority.mode !== "hosted" || (b.authority.mode === "hosted" && a.authority.workspaceKey === b.authority.workspaceKey))
|
|
200
|
+
&& a.bundleKey === b.bundleKey && a.documentId === b.documentId;
|
|
201
|
+
}
|
|
202
|
+
export function compareAuthorityVersionV1(observed, reference) {
|
|
203
|
+
return observed.provenance.state !== "shared-confirmed" ? "unconfirmed" : observed.provenance.acknowledged === reference ? "same" : "different";
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=artifact-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-contract.js","sourceRoot":"","sources":["../src/artifact-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle-ops.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare function query(bundle: Bundle, filter?: QueryFilter, options?: en
|
|
|
32
32
|
export declare const list: typeof query;
|
|
33
33
|
export declare function queryHeads(bundle: Bundle, filter?: QueryFilter, options?: engine.QueryOptions): Promise<HeadResult[]>;
|
|
34
34
|
export declare function parseLinks(_bundle: Bundle, doc: OkfDocument): Link[];
|
|
35
|
-
export declare function queryEdges(bundle: Bundle, filter?: EdgeFilter): Promise<Link[]>;
|
|
35
|
+
export declare function queryEdges(bundle: Bundle, filter?: EdgeFilter, options?: engine.QueryOptions): Promise<Link[]>;
|
|
36
36
|
export declare function backlinks(bundle: Bundle, target: ConceptId): Promise<Link[]>;
|
|
37
37
|
export declare function readBlob(bundle: Bundle, key: BlobKey): Promise<ReadBlobResult | null>;
|
|
38
38
|
export declare function writeBlob(bundle: Bundle, key: BlobKey, bytes: Uint8Array, contentType?: string, options?: WriteOptions): Promise<Version>;
|
package/dist/bundle-ops.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-ops.d.ts","sourceRoot":"","sources":["../src/bundle-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;AAIrE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAEzF;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CASzD;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEtF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAE7B;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAE7B;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAEzF;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAEjF;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/E;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAEvF;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAExG;AAED,wBAAsB,KAAK,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,WAAgB,EACxB,OAAO,GAAE,MAAM,CAAC,YAAiB,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC,CAExB;AAED,eAAO,MAAM,IAAI,cAAQ,CAAC;AAE1B,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,WAAgB,EACxB,OAAO,GAAE,MAAM,CAAC,YAAiB,GAChC,OAAO,CAAC,UAAU,EAAE,CAAC,CAEvB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,EAAE,CAEpE;AAED,wBAAsB,UAAU,
|
|
1
|
+
{"version":3,"file":"bundle-ops.d.ts","sourceRoot":"","sources":["../src/bundle-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle-ops.js
CHANGED
|
@@ -64,8 +64,8 @@ export async function queryHeads(bundle, filter = {}, options = {}) {
|
|
|
64
64
|
export function parseLinks(_bundle, doc) {
|
|
65
65
|
return engine.parseLinks(doc);
|
|
66
66
|
}
|
|
67
|
-
export async function queryEdges(bundle, filter = {}) {
|
|
68
|
-
return engine.queryEdges(backendFor(bundle), filter);
|
|
67
|
+
export async function queryEdges(bundle, filter = {}, options = {}) {
|
|
68
|
+
return engine.queryEdges(backendFor(bundle), filter, options);
|
|
69
69
|
}
|
|
70
70
|
export async function backlinks(bundle, target) {
|
|
71
71
|
return engine.backlinks(backendFor(bundle), target);
|
package/dist/bundle-ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-ops.js","sourceRoot":"","sources":["../src/bundle-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bundle-ops.js","sourceRoot":"","sources":["../src/bundle-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,19 @@ export type FieldAction = {
|
|
|
59
59
|
field: "sources";
|
|
60
60
|
selector: SourceSelector;
|
|
61
61
|
patch: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Select the one entry whose (`resource`, `id`) pair equals the value's, by the shared
|
|
65
|
+
* `sources[]` identity rule, and merge the value's properties into it; append the value when
|
|
66
|
+
* no entry carries the pair. The ID must be nonempty because an upsert may mint it, and it
|
|
67
|
+
* may not already name an entry under another resource.
|
|
68
|
+
*/
|
|
69
|
+
| {
|
|
70
|
+
action: "upsert";
|
|
71
|
+
field: "sources";
|
|
72
|
+
value: SourceEntry & {
|
|
73
|
+
id: string;
|
|
74
|
+
};
|
|
62
75
|
} | {
|
|
63
76
|
action: "replace-all";
|
|
64
77
|
field: "tags";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-field-actions.d.ts","sourceRoot":"","sources":["../src/document-field-actions.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAmD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"document-field-actions.d.ts","sourceRoot":"","sources":["../src/document-field-actions.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAmD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhG,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AACzF,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACjG,MAAM,WAAW,uBAAuB;IAAG,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,kBAAkB,GAAG,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;IACzI,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,4FAA4F;AAC5F,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB;CAK9D;AACD,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAChG;;;;;GAKG;GACD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AACtE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;IACnE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AACD,MAAM,WAAW,kBAAkB;IAAG,QAAQ,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE;AAC7G,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAE5F;AAiBD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D;AACD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAOpG;AACD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CAItF;AAKD,+FAA+F;AAC/F,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,yBAAyB,CAOjI;AAkCD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,GAAG,2BAA2B,CAoI/I"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { InvalidInputError } from "./errors.js";
|
|
3
3
|
import { okfValuesEqual } from "./okf-authored-values.js";
|
|
4
4
|
import { kindInputFieldNames, resolveKindFieldCoordinate } from "./kinds.js";
|
|
5
|
+
import { matchesSourceIdentity } from "./query-filter.js";
|
|
5
6
|
/** Adapters can render corrective commands without parsing prose or repeating selection. */
|
|
6
7
|
export class FieldActionError extends InvalidInputError {
|
|
7
8
|
details;
|
|
@@ -153,7 +154,7 @@ export function prepareDocumentFieldAction(existing, action, context) {
|
|
|
153
154
|
}
|
|
154
155
|
if (action.field !== "tags" && action.field !== "sources")
|
|
155
156
|
throw new InvalidInputError("Collection actions support only tags and sources.");
|
|
156
|
-
if (!["add", "remove", "edit", "replace-all"].includes(action.action))
|
|
157
|
+
if (!["add", "remove", "edit", "replace-all", "upsert"].includes(action.action))
|
|
157
158
|
throw new InvalidInputError("Unknown field action.");
|
|
158
159
|
if (action.field === "sources" && context.okfVersion !== "0.2")
|
|
159
160
|
throw new InvalidInputError("sources actions require OKF v0.2.");
|
|
@@ -173,8 +174,8 @@ export function prepareDocumentFieldAction(existing, action, context) {
|
|
|
173
174
|
throw new InvalidInputError(`'${action.field}' is not a list; repair it with version-guarded replace-all.`);
|
|
174
175
|
rows = structuredClone(previous ?? []);
|
|
175
176
|
if (action.field === "tags") {
|
|
176
|
-
if (action.action
|
|
177
|
-
throw new InvalidInputError(
|
|
177
|
+
if (["edit", "upsert"].includes(action.action))
|
|
178
|
+
throw new InvalidInputError(`tags supports add/remove/replace-all, not ${action.action}.`);
|
|
178
179
|
if (typeof action.value !== "string")
|
|
179
180
|
throw new InvalidInputError("A tag must be a string.");
|
|
180
181
|
if (action.action === "add" && !rows.includes(action.value)) {
|
|
@@ -186,6 +187,46 @@ export function prepareDocumentFieldAction(existing, action, context) {
|
|
|
186
187
|
scope.outcome = "removed";
|
|
187
188
|
}
|
|
188
189
|
}
|
|
190
|
+
else if (action.action === "upsert") {
|
|
191
|
+
sourceRow(action.value);
|
|
192
|
+
const value = action.value;
|
|
193
|
+
if (typeof value.id !== "string" || value.id.trim() === "")
|
|
194
|
+
throw new InvalidInputError("A source upsert requires a nonempty id.");
|
|
195
|
+
for (const [property, entry] of Object.entries(value)) {
|
|
196
|
+
if (entry === undefined)
|
|
197
|
+
throw new InvalidInputError("Source upsert properties must have values.");
|
|
198
|
+
if (containsCollection(entry))
|
|
199
|
+
throw new InvalidInputError(`Cannot assign source property '${property}': the new subtree contains a list. Use sources replace-all with an observed version.`);
|
|
200
|
+
}
|
|
201
|
+
const identity = { resource: value.resource, id: value.id };
|
|
202
|
+
const matches = rows.flatMap((row, index) => matchesSourceIdentity(row, identity) ? [index] : []);
|
|
203
|
+
if (matches.length > 1)
|
|
204
|
+
throw new FieldActionError(`Source identity is ambiguous (${matches.length} matches); repair duplicates with version-guarded replace-all.`, {
|
|
205
|
+
reason: "ambiguous-source", field: "sources", selector: { id: value.id }, ...sourceCandidates(matches.map(index => rows[index])),
|
|
206
|
+
});
|
|
207
|
+
scope.affectedSourceIds = [value.id];
|
|
208
|
+
if (matches.length === 1) {
|
|
209
|
+
const old = rows[matches[0]];
|
|
210
|
+
for (const property of Object.keys(value)) {
|
|
211
|
+
if (containsCollection(old[property]))
|
|
212
|
+
throw new InvalidInputError(`Cannot assign source property '${property}': the old subtree contains a list. Use sources replace-all with an observed version.`);
|
|
213
|
+
}
|
|
214
|
+
const next = { ...old, ...structuredClone(value) };
|
|
215
|
+
if (!okfValuesEqual(old, next)) {
|
|
216
|
+
rows[matches[0]] = next;
|
|
217
|
+
scope.outcome = "edited";
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const sameId = rows.filter(row => record(row) && row.id === value.id);
|
|
222
|
+
if (sameId.length > 0)
|
|
223
|
+
throw new FieldActionError(`Source ID '${value.id}' already names an entry under another resource; a document-local ID is never minted twice.`, {
|
|
224
|
+
reason: "source-id-conflict", field: "sources", selector: { id: value.id }, recommendedSelector: { id: value.id }, ...sourceCandidates(sameId),
|
|
225
|
+
});
|
|
226
|
+
rows.push(structuredClone(value));
|
|
227
|
+
scope.outcome = "added";
|
|
228
|
+
}
|
|
229
|
+
}
|
|
189
230
|
else if (action.action === "add") {
|
|
190
231
|
sourceRow(action.value);
|
|
191
232
|
if (has(action.value, "id")) {
|