cesr-ts 0.3.1 → 0.5.0
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 +3 -3
- package/esm/src/adapters/async-iterable.js +8 -0
- package/esm/src/adapters/effection.js +6 -0
- package/esm/src/annotate/annotator.js +16 -7
- package/esm/src/annotate/cli.js +12 -0
- package/esm/src/annotate/comments.js +6 -2
- package/esm/src/annotate/denot.js +6 -0
- package/esm/src/annotate/render.js +76 -76
- package/esm/src/core/bytes.js +56 -0
- package/esm/src/core/cbor.js +122 -0
- package/esm/src/core/errors.js +16 -0
- package/esm/src/core/parser-attachment-collector.js +1 -2
- package/esm/src/core/parser-engine.js +8 -8
- package/esm/src/core/parser-frame-parser.js +32 -35
- package/esm/src/core/vocabulary.js +47 -0
- package/esm/src/index.js +64 -33
- package/esm/src/parser/attachment-parser.js +5 -1
- package/esm/src/parser/cold-start.js +6 -0
- package/esm/src/parser/group-dispatch.js +28 -42
- package/esm/src/primitives/aggor.js +423 -36
- package/esm/src/primitives/bexter.js +59 -16
- package/esm/src/primitives/blinder.js +33 -20
- package/esm/src/primitives/byte-like.js +19 -0
- package/esm/src/primitives/cigar.js +39 -15
- package/esm/src/primitives/cipher.js +103 -0
- package/esm/src/primitives/codex.js +107 -0
- package/esm/src/primitives/compactor.js +308 -10
- package/esm/src/primitives/counter.js +207 -13
- package/esm/src/primitives/dater.js +30 -16
- package/esm/src/primitives/decimer.js +61 -0
- package/esm/src/primitives/decrypter.js +134 -0
- package/esm/src/primitives/diger.js +78 -18
- package/esm/src/primitives/disclosure.js +300 -0
- package/esm/src/primitives/encrypter.js +142 -0
- package/esm/src/primitives/hydrate.js +49 -0
- package/esm/src/primitives/ilker.js +22 -11
- package/esm/src/primitives/indexer.js +217 -8
- package/esm/src/primitives/labeler.js +73 -24
- package/esm/src/primitives/mapper.js +624 -68
- package/esm/src/primitives/matter.js +290 -6
- package/esm/src/primitives/mediar.js +33 -18
- package/esm/src/primitives/noncer.js +31 -14
- package/esm/src/primitives/number.js +27 -27
- package/esm/src/primitives/pather.js +128 -19
- package/esm/src/primitives/prefixer.js +22 -20
- package/esm/src/primitives/primitive.js +23 -0
- package/esm/src/primitives/registry.js +5 -3
- package/esm/src/primitives/saider.js +102 -19
- package/esm/src/primitives/salter.js +116 -0
- package/esm/src/primitives/sealed-box.js +41 -0
- package/esm/src/primitives/sealer.js +27 -32
- package/esm/src/primitives/seqner.js +27 -19
- package/esm/src/primitives/siger.js +84 -0
- package/esm/src/primitives/signer.js +257 -0
- package/esm/src/primitives/streamer.js +28 -0
- package/esm/src/primitives/structing.js +727 -0
- package/esm/src/primitives/structor.js +124 -0
- package/esm/src/primitives/tagger.js +43 -0
- package/esm/src/primitives/texter.js +23 -15
- package/esm/src/primitives/tholder.js +567 -22
- package/esm/src/primitives/traitor.js +21 -15
- package/esm/src/primitives/unknown.js +89 -0
- package/esm/src/primitives/verfer.js +69 -25
- package/esm/src/primitives/verser.js +63 -22
- package/esm/src/router/router-stub.js +1 -0
- package/esm/src/serder/native.js +1326 -0
- package/esm/src/serder/serder.js +1699 -20
- package/esm/src/serder/serdery.js +94 -9
- package/esm/src/serder/smell.js +26 -1
- package/esm/src/tables/codex-utils.js +11 -0
- package/esm/src/tables/counter-codex.js +3 -1
- package/esm/src/tables/counter-groups.js +52 -0
- package/esm/src/tables/counter-version-registry.js +1 -1
- package/esm/src/tables/indexer.codex.generated.js +64 -0
- package/esm/src/tables/indexer.tables.generated.js +72 -0
- package/esm/src/tables/matter.codex.generated.js +399 -0
- package/esm/src/tables/matter.tables.generated.js +112 -0
- package/esm/src/tables/trait.codex.generated.js +10 -0
- package/esm/src/tables/versions.js +4 -0
- package/esm/src/version.js +5 -2
- package/package.json +5 -2
- package/types/src/adapters/async-iterable.d.ts +9 -1
- package/types/src/adapters/async-iterable.d.ts.map +1 -1
- package/types/src/adapters/effection.d.ts +8 -1
- package/types/src/adapters/effection.d.ts.map +1 -1
- package/types/src/annotate/annotator.d.ts +12 -0
- package/types/src/annotate/annotator.d.ts.map +1 -1
- package/types/src/annotate/cli.d.ts +13 -0
- package/types/src/annotate/cli.d.ts.map +1 -1
- package/types/src/annotate/comments.d.ts +4 -0
- package/types/src/annotate/comments.d.ts.map +1 -1
- package/types/src/annotate/denot.d.ts +6 -0
- package/types/src/annotate/denot.d.ts.map +1 -1
- package/types/src/annotate/render.d.ts.map +1 -1
- package/types/src/annotate/types.d.ts +2 -0
- package/types/src/annotate/types.d.ts.map +1 -1
- package/types/src/bench/parser-benchmark.d.ts +3 -0
- package/types/src/bench/parser-benchmark.d.ts.map +1 -1
- package/types/src/core/bytes.d.ts +31 -0
- package/types/src/core/bytes.d.ts.map +1 -1
- package/types/src/core/cbor.d.ts +30 -0
- package/types/src/core/cbor.d.ts.map +1 -0
- package/types/src/core/errors.d.ts +16 -0
- package/types/src/core/errors.d.ts.map +1 -1
- package/types/src/core/parser-attachment-collector.d.ts.map +1 -1
- package/types/src/core/parser-engine.d.ts +5 -1
- package/types/src/core/parser-engine.d.ts.map +1 -1
- package/types/src/core/parser-frame-parser.d.ts +1 -1
- package/types/src/core/parser-frame-parser.d.ts.map +1 -1
- package/types/src/core/types.d.ts +9 -36
- package/types/src/core/types.d.ts.map +1 -1
- package/types/src/core/vocabulary.d.ts +48 -0
- package/types/src/core/vocabulary.d.ts.map +1 -0
- package/types/src/index.d.ts +64 -33
- package/types/src/index.d.ts.map +1 -1
- package/types/src/parser/attachment-fallback-policy.d.ts.map +1 -1
- package/types/src/parser/attachment-parser.d.ts +4 -0
- package/types/src/parser/attachment-parser.d.ts.map +1 -1
- package/types/src/parser/cold-start.d.ts +6 -0
- package/types/src/parser/cold-start.d.ts.map +1 -1
- package/types/src/parser/group-dispatch.d.ts +2 -2
- package/types/src/parser/group-dispatch.d.ts.map +1 -1
- package/types/src/primitives/aggor.d.ts +122 -9
- package/types/src/primitives/aggor.d.ts.map +1 -1
- package/types/src/primitives/bexter.d.ts +28 -6
- package/types/src/primitives/bexter.d.ts.map +1 -1
- package/types/src/primitives/blinder.d.ts +22 -8
- package/types/src/primitives/blinder.d.ts.map +1 -1
- package/types/src/primitives/byte-like.d.ts +7 -0
- package/types/src/primitives/byte-like.d.ts.map +1 -0
- package/types/src/primitives/cigar.d.ts +22 -7
- package/types/src/primitives/cigar.d.ts.map +1 -1
- package/types/src/primitives/cipher.d.ts +82 -0
- package/types/src/primitives/cipher.d.ts.map +1 -0
- package/types/src/primitives/codex.d.ts +84 -0
- package/types/src/primitives/codex.d.ts.map +1 -0
- package/types/src/primitives/compactor.d.ts +94 -2
- package/types/src/primitives/compactor.d.ts.map +1 -1
- package/types/src/primitives/counter.d.ts +63 -2
- package/types/src/primitives/counter.d.ts.map +1 -1
- package/types/src/primitives/dater.d.ts +12 -7
- package/types/src/primitives/dater.d.ts.map +1 -1
- package/types/src/primitives/decimer.d.ts +23 -0
- package/types/src/primitives/decimer.d.ts.map +1 -0
- package/types/src/primitives/decrypter.d.ts +72 -0
- package/types/src/primitives/decrypter.d.ts.map +1 -0
- package/types/src/primitives/diger.d.ts +32 -7
- package/types/src/primitives/diger.d.ts.map +1 -1
- package/types/src/primitives/disclosure.d.ts +201 -0
- package/types/src/primitives/disclosure.d.ts.map +1 -0
- package/types/src/primitives/encrypter.d.ts +74 -0
- package/types/src/primitives/encrypter.d.ts.map +1 -0
- package/types/src/primitives/hydrate.d.ts +20 -0
- package/types/src/primitives/hydrate.d.ts.map +1 -0
- package/types/src/primitives/ilker.d.ts +13 -6
- package/types/src/primitives/ilker.d.ts.map +1 -1
- package/types/src/primitives/indexer.d.ts +52 -1
- package/types/src/primitives/indexer.d.ts.map +1 -1
- package/types/src/primitives/labeler.d.ts +28 -11
- package/types/src/primitives/labeler.d.ts.map +1 -1
- package/types/src/primitives/mapper.d.ts +136 -17
- package/types/src/primitives/mapper.d.ts.map +1 -1
- package/types/src/primitives/matter.d.ts +76 -1
- package/types/src/primitives/matter.d.ts.map +1 -1
- package/types/src/primitives/mediar.d.ts +22 -8
- package/types/src/primitives/mediar.d.ts.map +1 -1
- package/types/src/primitives/noncer.d.ts +20 -6
- package/types/src/primitives/noncer.d.ts.map +1 -1
- package/types/src/primitives/number.d.ts +12 -7
- package/types/src/primitives/number.d.ts.map +1 -1
- package/types/src/primitives/pather.d.ts +33 -6
- package/types/src/primitives/pather.d.ts.map +1 -1
- package/types/src/primitives/prefixer.d.ts +12 -6
- package/types/src/primitives/prefixer.d.ts.map +1 -1
- package/types/src/primitives/primitive.d.ts +51 -0
- package/types/src/primitives/primitive.d.ts.map +1 -0
- package/types/src/primitives/registry.d.ts +3 -0
- package/types/src/primitives/registry.d.ts.map +1 -1
- package/types/src/primitives/saider.d.ts +53 -7
- package/types/src/primitives/saider.d.ts.map +1 -1
- package/types/src/primitives/salter.d.ts +68 -0
- package/types/src/primitives/salter.d.ts.map +1 -0
- package/types/src/primitives/sealed-box.d.ts +29 -0
- package/types/src/primitives/sealed-box.d.ts.map +1 -0
- package/types/src/primitives/sealer.d.ts +16 -8
- package/types/src/primitives/sealer.d.ts.map +1 -1
- package/types/src/primitives/seqner.d.ts +12 -7
- package/types/src/primitives/seqner.d.ts.map +1 -1
- package/types/src/primitives/siger.d.ts +30 -0
- package/types/src/primitives/siger.d.ts.map +1 -0
- package/types/src/primitives/signer.d.ts +90 -0
- package/types/src/primitives/signer.d.ts.map +1 -0
- package/types/src/primitives/streamer.d.ts +31 -0
- package/types/src/primitives/streamer.d.ts.map +1 -0
- package/types/src/primitives/structing.d.ts +4114 -0
- package/types/src/primitives/structing.d.ts.map +1 -0
- package/types/src/primitives/structor.d.ts +50 -0
- package/types/src/primitives/structor.d.ts.map +1 -0
- package/types/src/primitives/tagger.d.ts +17 -0
- package/types/src/primitives/tagger.d.ts.map +1 -0
- package/types/src/primitives/texter.d.ts +11 -6
- package/types/src/primitives/texter.d.ts.map +1 -1
- package/types/src/primitives/tholder.d.ts +156 -6
- package/types/src/primitives/tholder.d.ts.map +1 -1
- package/types/src/primitives/traitor.d.ts +13 -6
- package/types/src/primitives/traitor.d.ts.map +1 -1
- package/types/src/primitives/unknown.d.ts +32 -0
- package/types/src/primitives/unknown.d.ts.map +1 -0
- package/types/src/primitives/verfer.d.ts +24 -7
- package/types/src/primitives/verfer.d.ts.map +1 -1
- package/types/src/primitives/verser.d.ts +29 -8
- package/types/src/primitives/verser.d.ts.map +1 -1
- package/types/src/router/router-stub.d.ts +3 -0
- package/types/src/router/router-stub.d.ts.map +1 -1
- package/types/src/serder/native.d.ts +115 -0
- package/types/src/serder/native.d.ts.map +1 -0
- package/types/src/serder/serder.d.ts +247 -3
- package/types/src/serder/serder.d.ts.map +1 -1
- package/types/src/serder/serdery.d.ts +42 -0
- package/types/src/serder/serdery.d.ts.map +1 -1
- package/types/src/serder/smell.d.ts +22 -0
- package/types/src/serder/smell.d.ts.map +1 -1
- package/types/src/tables/codex-utils.d.ts +7 -0
- package/types/src/tables/codex-utils.d.ts.map +1 -0
- package/types/src/tables/counter-codex.d.ts +4 -0
- package/types/src/tables/counter-codex.d.ts.map +1 -1
- package/types/src/tables/counter-groups.d.ts +14 -0
- package/types/src/tables/counter-groups.d.ts.map +1 -0
- package/types/src/tables/counter.tables.generated.d.ts.map +1 -1
- package/types/src/tables/indexer.codex.generated.d.ts +127 -0
- package/types/src/tables/indexer.codex.generated.d.ts.map +1 -0
- package/types/src/tables/indexer.tables.generated.d.ts +46 -0
- package/types/src/tables/indexer.tables.generated.d.ts.map +1 -0
- package/types/src/tables/matter.codex.generated.d.ts +797 -0
- package/types/src/tables/matter.codex.generated.d.ts.map +1 -0
- package/types/src/tables/matter.tables.generated.d.ts +112 -0
- package/types/src/tables/matter.tables.generated.d.ts.map +1 -1
- package/types/src/tables/table-types.d.ts +13 -0
- package/types/src/tables/table-types.d.ts.map +1 -1
- package/types/src/tables/trait.codex.generated.d.ts +19 -0
- package/types/src/tables/trait.codex.generated.d.ts.map +1 -0
- package/types/src/tables/versions.d.ts +6 -0
- package/types/src/tables/versions.d.ts.map +1 -1
- package/types/src/version.d.ts +5 -2
- package/types/src/version.d.ts.map +1 -1
- package/esm/src/tables/indexer.tables.js +0 -30
- package/types/src/tables/indexer.tables.d.ts +0 -12
- package/types/src/tables/indexer.tables.d.ts.map +0 -1
|
@@ -34,8 +34,7 @@ export class AttachmentCollector {
|
|
|
34
34
|
value: void 0
|
|
35
35
|
});
|
|
36
36
|
this.frameBoundaryPolicy = options.frameBoundaryPolicy;
|
|
37
|
-
this.attachmentVersionFallbackPolicy =
|
|
38
|
-
options.attachmentVersionFallbackPolicy;
|
|
37
|
+
this.attachmentVersionFallbackPolicy = options.attachmentVersionFallbackPolicy;
|
|
39
38
|
this.recoveryDiagnosticObserver = options.recoveryDiagnosticObserver;
|
|
40
39
|
this.isFrameBoundaryAhead = options.isFrameBoundaryAhead;
|
|
41
40
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createAttachmentVersionFallbackPolicy, } from "../parser/group-dispatch.js";
|
|
2
2
|
import { ParserError, ShortageError } from "./errors.js";
|
|
3
|
+
import { AttachmentCollector } from "./parser-attachment-collector.js";
|
|
3
4
|
import { DEFAULT_VERSION } from "./parser-constants.js";
|
|
4
|
-
import { ParserStreamState } from "./parser-stream-state.js";
|
|
5
5
|
import { DeferredFrameLifecycle } from "./parser-deferred-frames.js";
|
|
6
6
|
import { FrameParser } from "./parser-frame-parser.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { composeRecoveryDiagnosticObserver
|
|
7
|
+
import { createFrameBoundaryPolicy } from "./parser-policy.js";
|
|
8
|
+
import { ParserStreamState } from "./parser-stream-state.js";
|
|
9
|
+
import { composeRecoveryDiagnosticObserver } from "./recovery-diagnostics.js";
|
|
10
10
|
/**
|
|
11
11
|
* Streaming CESR parser for message-domain and CESR-native body-group streams.
|
|
12
12
|
* Handles chunk boundaries, pending frames, and attachment continuation.
|
|
@@ -60,16 +60,16 @@ export class CesrParser {
|
|
|
60
60
|
writable: true,
|
|
61
61
|
value: void 0
|
|
62
62
|
});
|
|
63
|
-
this.frameBoundaryPolicy = options.frameBoundaryPolicy
|
|
64
|
-
createFrameBoundaryPolicy(options.framed ?? false);
|
|
63
|
+
this.frameBoundaryPolicy = options.frameBoundaryPolicy
|
|
64
|
+
?? createFrameBoundaryPolicy(options.framed ?? false);
|
|
65
65
|
this.recoveryDiagnosticObserver = composeRecoveryDiagnosticObserver({
|
|
66
66
|
onRecoveryDiagnostic: options.onRecoveryDiagnostic,
|
|
67
67
|
onAttachmentVersionFallback: options.attachmentVersionFallbackPolicy
|
|
68
68
|
? undefined
|
|
69
69
|
: options.onAttachmentVersionFallback,
|
|
70
70
|
});
|
|
71
|
-
const attachmentVersionFallbackPolicy = options.attachmentVersionFallbackPolicy
|
|
72
|
-
createAttachmentVersionFallbackPolicy({
|
|
71
|
+
const attachmentVersionFallbackPolicy = options.attachmentVersionFallbackPolicy
|
|
72
|
+
?? createAttachmentVersionFallbackPolicy({
|
|
73
73
|
mode: options.attachmentDispatchMode,
|
|
74
74
|
});
|
|
75
75
|
this.stream = new ParserStreamState(DEFAULT_VERSION);
|
|
@@ -3,8 +3,8 @@ import { sniff } from "../parser/cold-start.js";
|
|
|
3
3
|
import { parseCounter } from "../primitives/counter.js";
|
|
4
4
|
import { parseIlker } from "../primitives/ilker.js";
|
|
5
5
|
import { isLabelerCode, parseLabeler } from "../primitives/labeler.js";
|
|
6
|
+
import { interpretMapperBodySyntax, parseMapperBodySyntax } from "../primitives/mapper.js";
|
|
6
7
|
import { parseMatter } from "../primitives/matter.js";
|
|
7
|
-
import { interpretMapperBodySyntax, parseMapperBodySyntax, } from "../primitives/mapper.js";
|
|
8
8
|
import { parseVerser } from "../primitives/verser.js";
|
|
9
9
|
import { reapSerder } from "../serder/serdery.js";
|
|
10
10
|
import { Kinds, Protocols } from "../tables/versions.js";
|
|
@@ -46,8 +46,7 @@ export class FrameParser {
|
|
|
46
46
|
value: void 0
|
|
47
47
|
});
|
|
48
48
|
this.frameBoundaryPolicy = options.frameBoundaryPolicy;
|
|
49
|
-
this.attachmentVersionFallbackPolicy =
|
|
50
|
-
options.attachmentVersionFallbackPolicy;
|
|
49
|
+
this.attachmentVersionFallbackPolicy = options.attachmentVersionFallbackPolicy;
|
|
51
50
|
this.onEnclosedFrames = options.onEnclosedFrames;
|
|
52
51
|
this.recoveryDiagnosticObserver = options.recoveryDiagnosticObserver;
|
|
53
52
|
}
|
|
@@ -275,23 +274,26 @@ export class FrameParser {
|
|
|
275
274
|
const syntax = this.parseNativeBodySyntax(raw, cold, version);
|
|
276
275
|
const metadata = this.interpretNativeMetadataSyntax(syntax.metadata, version);
|
|
277
276
|
const fields = this.interpretNativeFieldSyntax(syntax.fields);
|
|
277
|
+
// KERIpy parity rule: once the frame parser has classified a top-level
|
|
278
|
+
// FixBodyGroup/MapBodyGroup as a native message body, the result must be a
|
|
279
|
+
// real Serder or a parse error. Arbitrary native map/list corpora still
|
|
280
|
+
// belong to lower-level CESR-native surfaces such as Mapper/Aggor.
|
|
281
|
+
const { serder } = reapSerder(raw);
|
|
282
|
+
if (serder.proto !== metadata.proto
|
|
283
|
+
|| serder.pvrsn.major !== metadata.pvrsn.major
|
|
284
|
+
|| serder.pvrsn.minor !== metadata.pvrsn.minor
|
|
285
|
+
|| (metadata.ilk !== null && serder.ilk !== metadata.ilk)
|
|
286
|
+
|| (metadata.said !== null && serder.said !== metadata.said)) {
|
|
287
|
+
throw new SemanticInterpretationError("Native body syntax pre-read disagreed with Serder hydration");
|
|
288
|
+
}
|
|
289
|
+
serder.native = {
|
|
290
|
+
bodyCode,
|
|
291
|
+
fields,
|
|
292
|
+
};
|
|
293
|
+
const body = serder;
|
|
278
294
|
return {
|
|
279
295
|
frame: {
|
|
280
|
-
body
|
|
281
|
-
raw,
|
|
282
|
-
ked: null,
|
|
283
|
-
proto: metadata.proto,
|
|
284
|
-
kind: Kinds.cesr,
|
|
285
|
-
size: raw.length,
|
|
286
|
-
pvrsn: metadata.pvrsn,
|
|
287
|
-
gvrsn: metadata.gvrsn,
|
|
288
|
-
ilk: metadata.ilk,
|
|
289
|
-
said: metadata.said,
|
|
290
|
-
native: {
|
|
291
|
-
bodyCode,
|
|
292
|
-
fields,
|
|
293
|
-
},
|
|
294
|
-
},
|
|
296
|
+
body,
|
|
295
297
|
attachments: [],
|
|
296
298
|
},
|
|
297
299
|
consumed: offset + total,
|
|
@@ -432,9 +434,9 @@ export class FrameParser {
|
|
|
432
434
|
};
|
|
433
435
|
}
|
|
434
436
|
catch (error) {
|
|
435
|
-
if (error instanceof ShortageError
|
|
436
|
-
error instanceof UnknownCodeError
|
|
437
|
-
error instanceof DeserializeError) {
|
|
437
|
+
if (error instanceof ShortageError
|
|
438
|
+
|| error instanceof UnknownCodeError
|
|
439
|
+
|| error instanceof DeserializeError) {
|
|
438
440
|
throw new SyntaxParseError(`Native body syntax parse failed: ${error.message}`, error);
|
|
439
441
|
}
|
|
440
442
|
throw error;
|
|
@@ -499,8 +501,7 @@ export class FrameParser {
|
|
|
499
501
|
const size = tokenSize(ctr, cold);
|
|
500
502
|
entries.push({
|
|
501
503
|
kind: "value",
|
|
502
|
-
|
|
503
|
-
qb64: ctr.qb64,
|
|
504
|
+
primitive: ctr,
|
|
504
505
|
});
|
|
505
506
|
offset += size;
|
|
506
507
|
continue;
|
|
@@ -512,15 +513,13 @@ export class FrameParser {
|
|
|
512
513
|
entries.push({
|
|
513
514
|
kind: "label",
|
|
514
515
|
label: parseLabeler(at, cold).label,
|
|
515
|
-
|
|
516
|
-
qb64: token.qb64,
|
|
516
|
+
primitive: token,
|
|
517
517
|
});
|
|
518
518
|
continue;
|
|
519
519
|
}
|
|
520
520
|
entries.push({
|
|
521
521
|
kind: "value",
|
|
522
|
-
|
|
523
|
-
qb64: token.qb64,
|
|
522
|
+
primitive: token,
|
|
524
523
|
});
|
|
525
524
|
}
|
|
526
525
|
if (offset !== end) {
|
|
@@ -534,8 +533,7 @@ export class FrameParser {
|
|
|
534
533
|
try {
|
|
535
534
|
return interpretMapperBodySyntax(syntax.mapper).map((field) => ({
|
|
536
535
|
label: field.label,
|
|
537
|
-
|
|
538
|
-
qb64: field.qb64,
|
|
536
|
+
primitive: field.primitive,
|
|
539
537
|
}));
|
|
540
538
|
}
|
|
541
539
|
catch (error) {
|
|
@@ -554,8 +552,7 @@ export class FrameParser {
|
|
|
554
552
|
}
|
|
555
553
|
out.push({
|
|
556
554
|
label: pendingLabel,
|
|
557
|
-
|
|
558
|
-
qb64: entry.qb64,
|
|
555
|
+
primitive: entry.primitive,
|
|
559
556
|
});
|
|
560
557
|
pendingLabel = null;
|
|
561
558
|
}
|
|
@@ -591,8 +588,8 @@ export class FrameParser {
|
|
|
591
588
|
if (error instanceof ShortageError) {
|
|
592
589
|
throw error;
|
|
593
590
|
}
|
|
594
|
-
if (error instanceof UnknownCodeError
|
|
595
|
-
error instanceof DeserializeError) {
|
|
591
|
+
if (error instanceof UnknownCodeError
|
|
592
|
+
|| error instanceof DeserializeError) {
|
|
596
593
|
continue;
|
|
597
594
|
}
|
|
598
595
|
throw error;
|
|
@@ -622,8 +619,8 @@ export class FrameParser {
|
|
|
622
619
|
if (error instanceof ShortageError) {
|
|
623
620
|
throw error;
|
|
624
621
|
}
|
|
625
|
-
if (error instanceof UnknownCodeError
|
|
626
|
-
error instanceof DeserializeError) {
|
|
622
|
+
if (error instanceof UnknownCodeError
|
|
623
|
+
|| error instanceof DeserializeError) {
|
|
627
624
|
if (!firstError) {
|
|
628
625
|
firstError = error;
|
|
629
626
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** KERI security tiers for deterministic secret derivation. */
|
|
2
|
+
export const Tiers = Object.freeze({
|
|
3
|
+
low: "low",
|
|
4
|
+
med: "med",
|
|
5
|
+
high: "high",
|
|
6
|
+
});
|
|
7
|
+
/** Return true when the value is one of the supported KERI security tiers. */
|
|
8
|
+
export function isTier(value) {
|
|
9
|
+
return Object.values(Tiers).includes(value);
|
|
10
|
+
}
|
|
11
|
+
/** KERI/ACDC message ilks mirrored from KERIpy's `kering.Ilks`. */
|
|
12
|
+
export const Ilks = Object.freeze({
|
|
13
|
+
icp: "icp",
|
|
14
|
+
rot: "rot",
|
|
15
|
+
ixn: "ixn",
|
|
16
|
+
dip: "dip",
|
|
17
|
+
drt: "drt",
|
|
18
|
+
rct: "rct",
|
|
19
|
+
qry: "qry",
|
|
20
|
+
rpy: "rpy",
|
|
21
|
+
xip: "xip",
|
|
22
|
+
exn: "exn",
|
|
23
|
+
pro: "pro",
|
|
24
|
+
bar: "bar",
|
|
25
|
+
vcp: "vcp",
|
|
26
|
+
vrt: "vrt",
|
|
27
|
+
iss: "iss",
|
|
28
|
+
rev: "rev",
|
|
29
|
+
bis: "bis",
|
|
30
|
+
brv: "brv",
|
|
31
|
+
rip: "rip",
|
|
32
|
+
bup: "bup",
|
|
33
|
+
upd: "upd",
|
|
34
|
+
acm: "acm",
|
|
35
|
+
act: "act",
|
|
36
|
+
acg: "acg",
|
|
37
|
+
ace: "ace",
|
|
38
|
+
sch: "sch",
|
|
39
|
+
att: "att",
|
|
40
|
+
agg: "agg",
|
|
41
|
+
edg: "edg",
|
|
42
|
+
rul: "rul",
|
|
43
|
+
});
|
|
44
|
+
/** Return true when the value is one of the known KERI/ACDC ilks. */
|
|
45
|
+
export function isIlk(value) {
|
|
46
|
+
return Object.values(Ilks).includes(value);
|
|
47
|
+
}
|
package/esm/src/index.js
CHANGED
|
@@ -1,50 +1,81 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./adapters/async-iterable.js";
|
|
2
|
+
export * from "./adapters/effection.js";
|
|
3
|
+
export * from "./annotate/annotator.js";
|
|
4
|
+
export * from "./annotate/comments.js";
|
|
5
|
+
export * from "./annotate/denot.js";
|
|
6
|
+
export * from "./annotate/render.js";
|
|
7
|
+
export * from "./annotate/types.js";
|
|
8
|
+
export * from "./bench/parser-benchmark.js";
|
|
9
|
+
export * from "./core/bytes.js";
|
|
10
|
+
export * from "./core/cbor.js";
|
|
2
11
|
export * from "./core/errors.js";
|
|
3
12
|
export * from "./core/parser-engine.js";
|
|
4
13
|
export * from "./core/parser-policy.js";
|
|
5
14
|
export * from "./core/recovery-diagnostics.js";
|
|
15
|
+
export * from "./core/types.js";
|
|
16
|
+
export * from "./core/vocabulary.js";
|
|
6
17
|
export * from "./parser/cold-start.js";
|
|
7
18
|
export * from "./parser/group-dispatch.js";
|
|
8
|
-
export * from "./
|
|
9
|
-
export * from "./
|
|
10
|
-
export * from "./
|
|
11
|
-
export * from "./primitives/
|
|
19
|
+
export * from "./primitives/aggor.js";
|
|
20
|
+
export * from "./primitives/bexter.js";
|
|
21
|
+
export * from "./primitives/blinder.js";
|
|
22
|
+
export * from "./primitives/cigar.js";
|
|
23
|
+
export * from "./primitives/cipher.js";
|
|
24
|
+
export * from "./primitives/codex.js";
|
|
25
|
+
export * from "./primitives/compactor.js";
|
|
12
26
|
export * from "./primitives/counter.js";
|
|
13
|
-
export * from "./primitives/
|
|
14
|
-
export * from "./primitives/
|
|
27
|
+
export * from "./primitives/dater.js";
|
|
28
|
+
export * from "./primitives/decimer.js";
|
|
29
|
+
export * from "./primitives/decrypter.js";
|
|
30
|
+
export * from "./primitives/diger.js";
|
|
31
|
+
export * from "./primitives/disclosure.js";
|
|
32
|
+
export * from "./primitives/encrypter.js";
|
|
33
|
+
export * from "./primitives/hydrate.js";
|
|
15
34
|
export * from "./primitives/ilker.js";
|
|
35
|
+
export * from "./primitives/indexer.js";
|
|
16
36
|
export * from "./primitives/labeler.js";
|
|
17
|
-
export * from "./primitives/texter.js";
|
|
18
|
-
export * from "./primitives/bexter.js";
|
|
19
|
-
export * from "./primitives/pather.js";
|
|
20
37
|
export * from "./primitives/mapper.js";
|
|
38
|
+
export * from "./primitives/matter.js";
|
|
39
|
+
export * from "./primitives/mediar.js";
|
|
40
|
+
export * from "./primitives/noncer.js";
|
|
21
41
|
export * from "./primitives/number.js";
|
|
22
|
-
export * from "./primitives/
|
|
23
|
-
export * from "./primitives/dater.js";
|
|
24
|
-
export * from "./primitives/diger.js";
|
|
42
|
+
export * from "./primitives/pather.js";
|
|
25
43
|
export * from "./primitives/prefixer.js";
|
|
26
|
-
export * from "./primitives/
|
|
44
|
+
export * from "./primitives/primitive.js";
|
|
45
|
+
export * from "./primitives/registry.js";
|
|
27
46
|
export * from "./primitives/saider.js";
|
|
28
|
-
export * from "./primitives/
|
|
29
|
-
export * from "./primitives/verfer.js";
|
|
30
|
-
export * from "./primitives/traitor.js";
|
|
31
|
-
export * from "./primitives/tholder.js";
|
|
47
|
+
export * from "./primitives/salter.js";
|
|
32
48
|
export * from "./primitives/sealer.js";
|
|
33
|
-
export * from "./primitives/
|
|
34
|
-
export * from "./primitives/
|
|
35
|
-
export * from "./primitives/
|
|
36
|
-
export * from "./primitives/
|
|
37
|
-
export * from "./primitives/
|
|
38
|
-
export * from "./
|
|
39
|
-
export * from "./
|
|
49
|
+
export * from "./primitives/seqner.js";
|
|
50
|
+
export * from "./primitives/siger.js";
|
|
51
|
+
export * from "./primitives/signer.js";
|
|
52
|
+
export * from "./primitives/streamer.js";
|
|
53
|
+
export * from "./primitives/structing.js";
|
|
54
|
+
export * from "./primitives/structor.js";
|
|
55
|
+
export * from "./primitives/tagger.js";
|
|
56
|
+
export * from "./primitives/texter.js";
|
|
57
|
+
export * from "./primitives/tholder.js";
|
|
58
|
+
export * from "./primitives/traitor.js";
|
|
59
|
+
export * from "./primitives/unknown.js";
|
|
60
|
+
export * from "./primitives/verfer.js";
|
|
61
|
+
export * from "./primitives/verser.js";
|
|
40
62
|
export * from "./router/router-stub.js";
|
|
41
|
-
export * from "./
|
|
42
|
-
export * from "./
|
|
63
|
+
export * from "./serder/serder.js";
|
|
64
|
+
export * from "./serder/serdery.js";
|
|
65
|
+
export * from "./serder/smell.js";
|
|
66
|
+
export * from "./tables/codex-utils.js";
|
|
43
67
|
export * from "./tables/counter-codex.js";
|
|
68
|
+
export * from "./tables/counter-groups.js";
|
|
44
69
|
export * from "./tables/counter-version-registry.js";
|
|
45
|
-
export * from "./
|
|
46
|
-
export * from "./
|
|
47
|
-
export * from "./
|
|
48
|
-
export * from "./
|
|
49
|
-
export * from "./
|
|
50
|
-
export * from "./
|
|
70
|
+
export * from "./tables/indexer.codex.generated.js";
|
|
71
|
+
export * from "./tables/indexer.tables.generated.js";
|
|
72
|
+
export * from "./tables/matter.codex.generated.js";
|
|
73
|
+
export * from "./tables/matter.tables.generated.js";
|
|
74
|
+
export * from "./tables/table-types.js";
|
|
75
|
+
export * from "./tables/trait.codex.generated.js";
|
|
76
|
+
export * from "./tables/versions.js";
|
|
77
|
+
export { bytesHex } from "./core/bytes.js";
|
|
78
|
+
export { bytesEqual } from "./core/bytes.js";
|
|
79
|
+
export { toBytes } from "./core/bytes.js";
|
|
80
|
+
export { t } from "./core/bytes.js";
|
|
81
|
+
export { b } from "./core/bytes.js";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { parseAttachmentDispatchCompat
|
|
1
|
+
import { parseAttachmentDispatchCompat } from "./group-dispatch.js";
|
|
2
|
+
/**
|
|
3
|
+
* Historical attachment-group entrypoint preserved as a thin wrapper around the
|
|
4
|
+
* newer dispatch-policy parser.
|
|
5
|
+
*/
|
|
2
6
|
export function parseAttachmentGroup(input, version, domain, options = {}) {
|
|
3
7
|
return parseAttachmentDispatchCompat(input, version, domain, options);
|
|
4
8
|
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { ColdStartError, ShortageError } from "../core/errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Classify the next unread stream bytes into CESR cold-start domains.
|
|
4
|
+
*
|
|
5
|
+
* This mirrors KERIpy's tritet probe: message-domain encodings, text CESR,
|
|
6
|
+
* binary CESR, or annotation separators all begin with distinct leading bits.
|
|
7
|
+
*/
|
|
2
8
|
export function sniff(ims) {
|
|
3
9
|
if (ims.length === 0) {
|
|
4
10
|
throw new ShortageError(1, 0);
|
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { b, b64ToInt, intToB64 } from "../core/bytes.js";
|
|
2
|
+
import { GroupSizeError, ShortageError, UnknownCodeError } from "../core/errors.js";
|
|
3
|
+
import { composeRecoveryDiagnosticObserver } from "../core/recovery-diagnostics.js";
|
|
4
|
+
import { CounterGroup, parseCounter } from "../primitives/counter.js";
|
|
3
5
|
import { parseIndexer } from "../primitives/indexer.js";
|
|
4
|
-
import {
|
|
6
|
+
import { parseMatter } from "../primitives/matter.js";
|
|
7
|
+
import { UnknownPrimitive } from "../primitives/unknown.js";
|
|
5
8
|
import { CtrDexV1, CtrDexV2 } from "../tables/counter-codex.js";
|
|
6
|
-
import { resolveVersionedRegistryValue
|
|
7
|
-
import { b64ToInt, intToB64 } from "../core/bytes.js";
|
|
8
|
-
import { composeRecoveryDiagnosticObserver, } from "../core/recovery-diagnostics.js";
|
|
9
|
+
import { resolveVersionedRegistryValue } from "../tables/counter-version-registry.js";
|
|
9
10
|
import { createAttachmentVersionFallbackPolicy, } from "./attachment-fallback-policy.js";
|
|
10
|
-
export { createAttachmentVersionFallbackPolicy
|
|
11
|
-
function qb64Item(qb64, opaque = false) {
|
|
12
|
-
return { kind: "qb64", qb64, opaque };
|
|
13
|
-
}
|
|
14
|
-
function qb2Item(qb2, opaque = false) {
|
|
15
|
-
return { kind: "qb2", qb2, opaque };
|
|
16
|
-
}
|
|
11
|
+
export { createAttachmentVersionFallbackPolicy } from "./attachment-fallback-policy.js";
|
|
17
12
|
function tupleItem(items) {
|
|
18
|
-
return
|
|
19
|
-
}
|
|
20
|
-
function nestedGroupItem(code, name, count) {
|
|
21
|
-
return { kind: "group", code, name, count };
|
|
13
|
+
return items;
|
|
22
14
|
}
|
|
23
15
|
/** Normalize unknown throwables to an `Error` for diagnostic emission. */
|
|
24
16
|
function asError(error) {
|
|
@@ -352,7 +344,7 @@ function parseTuple(input, kinds, domain) {
|
|
|
352
344
|
const part = kind === "indexer"
|
|
353
345
|
? parseIndexer(input.slice(offset), domain)
|
|
354
346
|
: parseMatter(input.slice(offset), domain);
|
|
355
|
-
items.push(
|
|
347
|
+
items.push(part);
|
|
356
348
|
offset += primitiveSize(part, domain);
|
|
357
349
|
}
|
|
358
350
|
return { items, consumed: offset };
|
|
@@ -369,16 +361,16 @@ function parseRepeated(input, count, kinds, domain) {
|
|
|
369
361
|
return { items, consumed: offset };
|
|
370
362
|
}
|
|
371
363
|
/** Split opaque counted payload into domain units (quadlets for text, triplets for binary). */
|
|
372
|
-
function splitOpaqueUnits(payload, domain, expectedCount
|
|
364
|
+
function splitOpaqueUnits(payload, domain, expectedCount) {
|
|
373
365
|
if (domain === "bny") {
|
|
374
366
|
const count = expectedCount ?? Math.floor(payload.length / 3);
|
|
375
|
-
return Array.from({ length: count }, (_v, i) =>
|
|
367
|
+
return Array.from({ length: count }, (_v, i) => UnknownPrimitive.fromPayload(payload.slice(i * 3, i * 3 + 3), domain));
|
|
376
368
|
}
|
|
377
369
|
const text = String.fromCharCode(...payload);
|
|
378
370
|
if (expectedCount !== undefined) {
|
|
379
|
-
return Array.from({ length: expectedCount }, (_v, i) =>
|
|
371
|
+
return Array.from({ length: expectedCount }, (_v, i) => UnknownPrimitive.fromPayload(b(text.slice(i * 4, i * 4 + 4)), domain));
|
|
380
372
|
}
|
|
381
|
-
return (text.match(/.{1,4}/g) ?? []).map((token) =>
|
|
373
|
+
return (text.match(/.{1,4}/g) ?? []).map((token) => UnknownPrimitive.fromPayload(b(token), domain));
|
|
382
374
|
}
|
|
383
375
|
/** Parse nested siger-list group headed by a version-appropriate siger counter. */
|
|
384
376
|
function parseSigerList(input, version, domain) {
|
|
@@ -391,7 +383,7 @@ function parseSigerList(input, version, domain) {
|
|
|
391
383
|
let offset = counterHeaderSize(counter, domain);
|
|
392
384
|
for (let i = 0; i < counter.count; i++) {
|
|
393
385
|
const part = parseIndexer(input.slice(offset), domain);
|
|
394
|
-
items.push(
|
|
386
|
+
items.push(part);
|
|
395
387
|
offset += primitiveSize(part, domain);
|
|
396
388
|
}
|
|
397
389
|
return { items, consumed: offset };
|
|
@@ -432,7 +424,7 @@ function parseQuadletGroup(input, counter, version, wrapperCodes, domain, contex
|
|
|
432
424
|
// Allow mixed-version nested groups inside wrapper payloads.
|
|
433
425
|
// Some real-world streams wrap v2 groups inside v1 wrappers.
|
|
434
426
|
payload.slice(offset), nestedVersion, domain, context);
|
|
435
|
-
items.push(
|
|
427
|
+
items.push(nested.group);
|
|
436
428
|
if (nested.consumed === 0) {
|
|
437
429
|
throw new GroupSizeError("Nested attachment parser consumed zero bytes");
|
|
438
430
|
}
|
|
@@ -440,8 +432,8 @@ function parseQuadletGroup(input, counter, version, wrapperCodes, domain, contex
|
|
|
440
432
|
}
|
|
441
433
|
catch (error) {
|
|
442
434
|
const normalized = asError(error);
|
|
443
|
-
if (normalized instanceof ShortageError
|
|
444
|
-
normalized instanceof GroupSizeError) {
|
|
435
|
+
if (normalized instanceof ShortageError
|
|
436
|
+
|| normalized instanceof GroupSizeError) {
|
|
445
437
|
throw normalized;
|
|
446
438
|
}
|
|
447
439
|
if (!context.versionFallbackPolicy.shouldPreserveWrapperRemainder(normalized)) {
|
|
@@ -449,7 +441,7 @@ function parseQuadletGroup(input, counter, version, wrapperCodes, domain, contex
|
|
|
449
441
|
}
|
|
450
442
|
// Intentional recovery point: keep unread wrapper tail as opaque units.
|
|
451
443
|
const remainder = payload.slice(offset);
|
|
452
|
-
const opaque = splitOpaqueUnits(remainder, domain
|
|
444
|
+
const opaque = splitOpaqueUnits(remainder, domain);
|
|
453
445
|
context.recoveryDiagnosticObserver?.({
|
|
454
446
|
type: "wrapper-opaque-tail-preserved",
|
|
455
447
|
version: nestedVersion,
|
|
@@ -519,8 +511,8 @@ function sadPathSigParser(input, counter, version, domain, context) {
|
|
|
519
511
|
const sigGroup = parseAttachmentDispatchCompat(input.slice(offset), version, domain, context);
|
|
520
512
|
offset += sigGroup.consumed;
|
|
521
513
|
items.push(tupleItem([
|
|
522
|
-
|
|
523
|
-
|
|
514
|
+
path,
|
|
515
|
+
sigGroup.group,
|
|
524
516
|
]));
|
|
525
517
|
}
|
|
526
518
|
return { items, consumed: offset };
|
|
@@ -531,15 +523,15 @@ function sadPathSigGroupParser(input, counter, version, domain, context) {
|
|
|
531
523
|
let offset = counterHeaderSize(counter, domain);
|
|
532
524
|
const root = parseMatter(input.slice(offset), domain);
|
|
533
525
|
offset += primitiveSize(root, domain);
|
|
534
|
-
items.push(
|
|
526
|
+
items.push(root);
|
|
535
527
|
for (let i = 0; i < counter.count; i++) {
|
|
536
528
|
const path = parseMatter(input.slice(offset), domain);
|
|
537
529
|
offset += primitiveSize(path, domain);
|
|
538
530
|
const sigGroup = parseAttachmentDispatchCompat(input.slice(offset), version, domain, context);
|
|
539
531
|
offset += sigGroup.consumed;
|
|
540
532
|
items.push(tupleItem([
|
|
541
|
-
|
|
542
|
-
|
|
533
|
+
path,
|
|
534
|
+
sigGroup.group,
|
|
543
535
|
]));
|
|
544
536
|
}
|
|
545
537
|
return { items, consumed: offset };
|
|
@@ -547,7 +539,7 @@ function sadPathSigGroupParser(input, counter, version, domain, context) {
|
|
|
547
539
|
/** Genus-version groups carry only the counter token itself as semantic payload. */
|
|
548
540
|
function genusVersionParser(_input, counter, _version, domain, _context) {
|
|
549
541
|
return {
|
|
550
|
-
items: [
|
|
542
|
+
items: [counter],
|
|
551
543
|
consumed: counterHeaderSize(counter, domain),
|
|
552
544
|
};
|
|
553
545
|
}
|
|
@@ -648,13 +640,7 @@ function parseAttachmentDispatchWithVersion(input, version, domain, context) {
|
|
|
648
640
|
throw new GroupSizeError(`Parsed beyond input boundary for ${counter.code}`);
|
|
649
641
|
}
|
|
650
642
|
return {
|
|
651
|
-
group:
|
|
652
|
-
code: counter.code,
|
|
653
|
-
name: counter.name,
|
|
654
|
-
count: counter.count,
|
|
655
|
-
raw: input.slice(0, parsed.consumed),
|
|
656
|
-
items: parsed.items,
|
|
657
|
-
},
|
|
643
|
+
group: new CounterGroup(counter, input.slice(0, parsed.consumed), parsed.items),
|
|
658
644
|
consumed: parsed.consumed,
|
|
659
645
|
};
|
|
660
646
|
}
|
|
@@ -702,8 +688,8 @@ function parseAttachmentDispatchWithPolicy(input, version, domain, context) {
|
|
|
702
688
|
* `options.versionFallbackPolicy`.
|
|
703
689
|
*/
|
|
704
690
|
export function parseAttachmentDispatchCompat(input, version, domain, options = {}) {
|
|
705
|
-
const versionFallbackPolicy = options.versionFallbackPolicy
|
|
706
|
-
createAttachmentVersionFallbackPolicy({
|
|
691
|
+
const versionFallbackPolicy = options.versionFallbackPolicy
|
|
692
|
+
?? createAttachmentVersionFallbackPolicy({
|
|
707
693
|
mode: options.mode,
|
|
708
694
|
});
|
|
709
695
|
const recoveryDiagnosticObserver = composeRecoveryDiagnosticObserver({
|