@rhizomes/rhizomatic 0.1.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/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +54 -0
- package/dist/alias.d.ts +4 -0
- package/dist/alias.d.ts.map +1 -0
- package/dist/alias.js +34 -0
- package/dist/alias.js.map +1 -0
- package/dist/cbor.d.ts +24 -0
- package/dist/cbor.d.ts.map +1 -0
- package/dist/cbor.js +267 -0
- package/dist/cbor.js.map +1 -0
- package/dist/delta.d.ts +8 -0
- package/dist/delta.d.ts.map +1 -0
- package/dist/delta.js +92 -0
- package/dist/delta.js.map +1 -0
- package/dist/derivation.d.ts +29 -0
- package/dist/derivation.d.ts.map +1 -0
- package/dist/derivation.js +183 -0
- package/dist/derivation.js.map +1 -0
- package/dist/eval.d.ts +91 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +318 -0
- package/dist/eval.js.map +1 -0
- package/dist/hash.d.ts +4 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +17 -0
- package/dist/hash.js.map +1 -0
- package/dist/http.d.ts +21 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +110 -0
- package/dist/http.js.map +1 -0
- package/dist/hview.d.ts +15 -0
- package/dist/hview.d.ts.map +1 -0
- package/dist/hview.js +72 -0
- package/dist/hview.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/json-profile.d.ts +4 -0
- package/dist/json-profile.d.ts.map +1 -0
- package/dist/json-profile.js +97 -0
- package/dist/json-profile.js.map +1 -0
- package/dist/pack.d.ts +5 -0
- package/dist/pack.d.ts.map +1 -0
- package/dist/pack.js +227 -0
- package/dist/pack.js.map +1 -0
- package/dist/peer.d.ts +26 -0
- package/dist/peer.d.ts.map +1 -0
- package/dist/peer.js +111 -0
- package/dist/peer.js.map +1 -0
- package/dist/policy.d.ts +46 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +186 -0
- package/dist/policy.js.map +1 -0
- package/dist/pred.d.ts +78 -0
- package/dist/pred.d.ts.map +1 -0
- package/dist/pred.js +228 -0
- package/dist/pred.js.map +1 -0
- package/dist/reactor.d.ts +67 -0
- package/dist/reactor.d.ts.map +1 -0
- package/dist/reactor.js +433 -0
- package/dist/reactor.js.map +1 -0
- package/dist/schema-deltas.d.ts +14 -0
- package/dist/schema-deltas.d.ts.map +1 -0
- package/dist/schema-deltas.js +87 -0
- package/dist/schema-deltas.js.map +1 -0
- package/dist/schema.d.ts +17 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +102 -0
- package/dist/schema.js.map +1 -0
- package/dist/set.d.ts +18 -0
- package/dist/set.d.ts.map +1 -0
- package/dist/set.js +83 -0
- package/dist/set.js.map +1 -0
- package/dist/sign.d.ts +8 -0
- package/dist/sign.d.ts.map +1 -0
- package/dist/sign.js +44 -0
- package/dist/sign.js.map +1 -0
- package/dist/term-io.d.ts +13 -0
- package/dist/term-io.d.ts.map +1 -0
- package/dist/term-io.js +216 -0
- package/dist/term-io.js.map +1 -0
- package/dist/term-json.d.ts +7 -0
- package/dist/term-json.d.ts.map +1 -0
- package/dist/term-json.js +362 -0
- package/dist/term-json.js.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/vocab.d.ts +2 -0
- package/dist/vocab.d.ts.map +1 -0
- package/dist/vocab.js +4 -0
- package/dist/vocab.js.map +1 -0
- package/package.json +83 -0
- package/src/alias.ts +36 -0
- package/src/cbor.ts +280 -0
- package/src/delta.ts +89 -0
- package/src/derivation.ts +229 -0
- package/src/eval.ts +401 -0
- package/src/hash.ts +19 -0
- package/src/http.ts +124 -0
- package/src/hview.ts +91 -0
- package/src/index.ts +83 -0
- package/src/json-profile.ts +96 -0
- package/src/pack.ts +239 -0
- package/src/peer.ts +126 -0
- package/src/policy.ts +216 -0
- package/src/pred.ts +307 -0
- package/src/reactor.ts +490 -0
- package/src/schema-deltas.ts +100 -0
- package/src/schema.ts +111 -0
- package/src/set.ts +98 -0
- package/src/sign.ts +48 -0
- package/src/term-io.ts +228 -0
- package/src/term-json.ts +364 -0
- package/src/types.ts +38 -0
- package/src/vocab.ts +3 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type { Primitive, EntityRef, DeltaRef, Target, Pointer, Claims, Delta } from "./types.js";
|
|
2
|
+
export { encode, type CborValue, tstr, float, bool, array, map } from "./cbor.js";
|
|
3
|
+
export { contentAddress } from "./hash.js";
|
|
4
|
+
export { claimsToCbor, canonicalBytes, canonicalHex, computeId, assertValidClaims, } from "./delta.js";
|
|
5
|
+
export { claimsToJson, parseClaims } from "./json-profile.js";
|
|
6
|
+
export { AUTHOR_PREFIX, authorForSeed, publicKeyFromSeed, signClaims, verifyDelta, type Verification, } from "./sign.js";
|
|
7
|
+
export { DeltaSet, federate, fork, makeDelta, makeNegationClaims, merge } from "./set.js";
|
|
8
|
+
export { comparePrimitives, evalPred, strMatch, type Cmp, type PPred, type Pred, type StrMatch, type ValMatch, } from "./pred.js";
|
|
9
|
+
export { aliasClosure, evalTerm, expandAliased, resultCanonicalHex, type AliasedSpec, type EvalResult, type GroupKey, type MaskPolicy, type Term, } from "./eval.js";
|
|
10
|
+
export { relationSignature, relationSignatureCanonicalHex } from "./alias.js";
|
|
11
|
+
export { hviewCanonicalHex, type HVEntry, type HView } from "./hview.js";
|
|
12
|
+
export { SchemaRegistry, collectRefs, type HyperSchema } from "./schema.js";
|
|
13
|
+
export { resolveView, viewCanonicalHex, type MergeFn, type Order, type Policy, type PropPolicy, type View, } from "./policy.js";
|
|
14
|
+
export { parsePolicy, parsePred, parseTerm } from "./term-json.js";
|
|
15
|
+
export { cborToJson, jsonToCbor, policyToJson, predToJson, termCanonicalHex, termHash, termToJson, } from "./term-io.js";
|
|
16
|
+
export { SCHEMA_SCHEMA, VOCAB_PREFIX, loadSchema, publishSchemaClaims } from "./schema-deltas.js";
|
|
17
|
+
export { decode } from "./cbor.js";
|
|
18
|
+
export { packId, packSet, unpackSet } from "./pack.js";
|
|
19
|
+
export { Peer, syncBoth, type SyncReport } from "./peer.js";
|
|
20
|
+
export { offerFor, pullFromUrl, servePeer } from "./http.js";
|
|
21
|
+
export { DerivationHost, derivedClaims, verifyPureDerivation, type BindingSpec, type DerivedFn, } from "./derivation.js";
|
|
22
|
+
export { Reactor, isRootAnchored, makeManifestClaims, manifestMemberIds, type IngestResult, type MaterializationChange, } from "./reactor.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,IAAI,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,IAAI,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { encode, tstr, float, bool, array, map } from "./cbor.js";
|
|
2
|
+
export { contentAddress } from "./hash.js";
|
|
3
|
+
export { claimsToCbor, canonicalBytes, canonicalHex, computeId, assertValidClaims, } from "./delta.js";
|
|
4
|
+
export { claimsToJson, parseClaims } from "./json-profile.js";
|
|
5
|
+
export { AUTHOR_PREFIX, authorForSeed, publicKeyFromSeed, signClaims, verifyDelta, } from "./sign.js";
|
|
6
|
+
export { DeltaSet, federate, fork, makeDelta, makeNegationClaims, merge } from "./set.js";
|
|
7
|
+
export { comparePrimitives, evalPred, strMatch, } from "./pred.js";
|
|
8
|
+
export { aliasClosure, evalTerm, expandAliased, resultCanonicalHex, } from "./eval.js";
|
|
9
|
+
export { relationSignature, relationSignatureCanonicalHex } from "./alias.js";
|
|
10
|
+
export { hviewCanonicalHex } from "./hview.js";
|
|
11
|
+
export { SchemaRegistry, collectRefs } from "./schema.js";
|
|
12
|
+
export { resolveView, viewCanonicalHex, } from "./policy.js";
|
|
13
|
+
export { parsePolicy, parsePred, parseTerm } from "./term-json.js";
|
|
14
|
+
export { cborToJson, jsonToCbor, policyToJson, predToJson, termCanonicalHex, termHash, termToJson, } from "./term-io.js";
|
|
15
|
+
export { SCHEMA_SCHEMA, VOCAB_PREFIX, loadSchema, publishSchemaClaims } from "./schema-deltas.js";
|
|
16
|
+
export { decode } from "./cbor.js";
|
|
17
|
+
export { packId, packSet, unpackSet } from "./pack.js";
|
|
18
|
+
export { Peer, syncBoth } from "./peer.js";
|
|
19
|
+
export { offerFor, pullFromUrl, servePeer } from "./http.js";
|
|
20
|
+
export { DerivationHost, derivedClaims, verifyPureDerivation, } from "./derivation.js";
|
|
21
|
+
export { Reactor, isRootAnchored, makeManifestClaims, manifestMemberIds, } from "./reactor.js";
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAkB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,WAAW,GAEZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,QAAQ,GAMT,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,GAMnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAA4B,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,gBAAgB,GAMjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-profile.d.ts","sourceRoot":"","sources":["../src/json-profile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAA8B,MAAM,YAAY,CAAC;AAoDrE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA4BpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAUhD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Parse the JSON debug profile used by the vectors (SPEC-1 §4.1, ERRATA "JSON debug profile")
|
|
2
|
+
// into the logical delta model. The CBOR form is normative; this is for authoring/inspection.
|
|
3
|
+
function asObject(x, what) {
|
|
4
|
+
if (typeof x !== "object" || x === null || Array.isArray(x)) {
|
|
5
|
+
throw new Error(`expected object for ${what}`);
|
|
6
|
+
}
|
|
7
|
+
return x;
|
|
8
|
+
}
|
|
9
|
+
function parsePrimitive(v) {
|
|
10
|
+
if (typeof v === "string" || typeof v === "boolean")
|
|
11
|
+
return v;
|
|
12
|
+
if (typeof v === "number") {
|
|
13
|
+
if (!Number.isFinite(v))
|
|
14
|
+
throw new Error("numeric primitive must be finite");
|
|
15
|
+
return v;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("primitive must be string | number | boolean");
|
|
18
|
+
}
|
|
19
|
+
// The profile mirrors the canonical CBOR exactly: a primitive target is the bare value; an
|
|
20
|
+
// entity ref is {id, context?}; a delta ref is {delta, context?}. Discrimination is structural
|
|
21
|
+
// (SPEC-1 §2.1) — primitives are never objects, and the id/delta key names the ref kind.
|
|
22
|
+
function parseTarget(raw) {
|
|
23
|
+
if (typeof raw === "string" || typeof raw === "number" || typeof raw === "boolean") {
|
|
24
|
+
return { kind: "primitive", value: parsePrimitive(raw) };
|
|
25
|
+
}
|
|
26
|
+
const o = asObject(raw, "target");
|
|
27
|
+
if ("id" in o) {
|
|
28
|
+
const id = o["id"];
|
|
29
|
+
if (typeof id !== "string")
|
|
30
|
+
throw new Error("entity ref id must be a string");
|
|
31
|
+
const context = o["context"];
|
|
32
|
+
return context === undefined
|
|
33
|
+
? { kind: "entity", entity: { id } }
|
|
34
|
+
: { kind: "entity", entity: { id, context: String(context) } };
|
|
35
|
+
}
|
|
36
|
+
if ("delta" in o) {
|
|
37
|
+
const delta = o["delta"];
|
|
38
|
+
if (typeof delta !== "string")
|
|
39
|
+
throw new Error("delta ref delta must be a string");
|
|
40
|
+
const context = o["context"];
|
|
41
|
+
return context === undefined
|
|
42
|
+
? { kind: "delta", deltaRef: { delta } }
|
|
43
|
+
: { kind: "delta", deltaRef: { delta, context: String(context) } };
|
|
44
|
+
}
|
|
45
|
+
throw new Error("target must be a primitive, {id, context?}, or {delta, context?}");
|
|
46
|
+
}
|
|
47
|
+
function parsePointer(raw) {
|
|
48
|
+
const o = asObject(raw, "pointer");
|
|
49
|
+
if (typeof o["role"] !== "string")
|
|
50
|
+
throw new Error("pointer.role must be a string");
|
|
51
|
+
return { role: o["role"], target: parseTarget(o["target"]) };
|
|
52
|
+
}
|
|
53
|
+
// Serialize claims back to the JSON debug profile (the inverse of parseClaims).
|
|
54
|
+
export function claimsToJson(claims) {
|
|
55
|
+
return {
|
|
56
|
+
timestamp: claims.timestamp,
|
|
57
|
+
author: claims.author,
|
|
58
|
+
pointers: claims.pointers.map((p) => {
|
|
59
|
+
let target;
|
|
60
|
+
switch (p.target.kind) {
|
|
61
|
+
case "primitive":
|
|
62
|
+
target = p.target.value;
|
|
63
|
+
break;
|
|
64
|
+
case "entity":
|
|
65
|
+
target = {
|
|
66
|
+
id: p.target.entity.id,
|
|
67
|
+
...(p.target.entity.context === undefined ? {} : { context: p.target.entity.context }),
|
|
68
|
+
};
|
|
69
|
+
break;
|
|
70
|
+
case "delta":
|
|
71
|
+
target = {
|
|
72
|
+
delta: p.target.deltaRef.delta,
|
|
73
|
+
...(p.target.deltaRef.context === undefined
|
|
74
|
+
? {}
|
|
75
|
+
: { context: p.target.deltaRef.context }),
|
|
76
|
+
};
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
return { role: p.role, target };
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function parseClaims(raw) {
|
|
84
|
+
const o = asObject(raw, "claims");
|
|
85
|
+
if (typeof o["timestamp"] !== "number")
|
|
86
|
+
throw new Error("claims.timestamp must be a number");
|
|
87
|
+
if (typeof o["author"] !== "string")
|
|
88
|
+
throw new Error("claims.author must be a string");
|
|
89
|
+
if (!Array.isArray(o["pointers"]))
|
|
90
|
+
throw new Error("claims.pointers must be an array");
|
|
91
|
+
return {
|
|
92
|
+
timestamp: o["timestamp"],
|
|
93
|
+
author: o["author"],
|
|
94
|
+
pointers: o["pointers"].map(parsePointer),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=json-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-profile.js","sourceRoot":"","sources":["../src/json-profile.ts"],"names":[],"mappings":"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"}
|
package/dist/pack.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAqF/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,CAyCjD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhD;AAuED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CA8BrD"}
|
package/dist/pack.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// The pack format (SPEC-8, ERRATA-8): a content-addressed physical container whose logical form
|
|
2
|
+
// is invariant. Never hash the dehydrated form; rehydration is byte-exact by construction because
|
|
3
|
+
// unpacking rebuilds claims through the standard makeDelta path.
|
|
4
|
+
import { array, bool, decode, encode, float, map, tstr } from "./cbor.js";
|
|
5
|
+
import { contentAddress } from "./hash.js";
|
|
6
|
+
import { manifestMemberIds } from "./reactor.js";
|
|
7
|
+
import { DeltaSet, makeDelta } from "./set.js";
|
|
8
|
+
const PACK_VERSION = 1;
|
|
9
|
+
// --- string interning -------------------------------------------------------------------------------
|
|
10
|
+
function stringsOf(delta, out) {
|
|
11
|
+
out.add(delta.id); // stored ids make rehydration self-verifying (SPEC-8 §4)
|
|
12
|
+
out.add(delta.claims.author);
|
|
13
|
+
if (delta.sig !== undefined)
|
|
14
|
+
out.add(delta.sig);
|
|
15
|
+
for (const p of delta.claims.pointers) {
|
|
16
|
+
out.add(p.role);
|
|
17
|
+
switch (p.target.kind) {
|
|
18
|
+
case "entity":
|
|
19
|
+
out.add(p.target.entity.id);
|
|
20
|
+
if (p.target.entity.context !== undefined)
|
|
21
|
+
out.add(p.target.entity.context);
|
|
22
|
+
break;
|
|
23
|
+
case "delta":
|
|
24
|
+
out.add(p.target.deltaRef.delta);
|
|
25
|
+
if (p.target.deltaRef.context !== undefined)
|
|
26
|
+
out.add(p.target.deltaRef.context);
|
|
27
|
+
break;
|
|
28
|
+
case "primitive":
|
|
29
|
+
if (typeof p.target.value === "string")
|
|
30
|
+
out.add(p.target.value);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// --- packing ----------------------------------------------------------------------------------------
|
|
36
|
+
function ptrToCbor(p, idx) {
|
|
37
|
+
const entries = [["r", float(idx(p.role))]];
|
|
38
|
+
let context;
|
|
39
|
+
switch (p.target.kind) {
|
|
40
|
+
case "entity":
|
|
41
|
+
entries.push(["e", float(idx(p.target.entity.id))]);
|
|
42
|
+
context = p.target.entity.context;
|
|
43
|
+
break;
|
|
44
|
+
case "delta":
|
|
45
|
+
entries.push(["d", float(idx(p.target.deltaRef.delta))]);
|
|
46
|
+
context = p.target.deltaRef.context;
|
|
47
|
+
break;
|
|
48
|
+
case "primitive": {
|
|
49
|
+
const v = p.target.value;
|
|
50
|
+
if (typeof v === "string")
|
|
51
|
+
entries.push(["s", float(idx(v))]);
|
|
52
|
+
else if (typeof v === "number")
|
|
53
|
+
entries.push(["n", float(v)]);
|
|
54
|
+
else
|
|
55
|
+
entries.push(["b", bool(v)]);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (context !== undefined)
|
|
60
|
+
entries.push(["c", float(idx(context))]);
|
|
61
|
+
return map(entries);
|
|
62
|
+
}
|
|
63
|
+
function hydratedRecord(d, idx) {
|
|
64
|
+
const entries = [
|
|
65
|
+
["i", float(idx(d.id))],
|
|
66
|
+
["a", float(idx(d.claims.author))],
|
|
67
|
+
["t", float(d.claims.timestamp)],
|
|
68
|
+
["p", array(d.claims.pointers.map((p) => ptrToCbor(p, idx)))],
|
|
69
|
+
];
|
|
70
|
+
if (d.sig !== undefined)
|
|
71
|
+
entries.push(["s", float(idx(d.sig))]);
|
|
72
|
+
return map(entries);
|
|
73
|
+
}
|
|
74
|
+
function memberRecord(d, manifest, envelopeIdx, idx) {
|
|
75
|
+
const entries = [
|
|
76
|
+
["i", float(idx(d.id))],
|
|
77
|
+
["m", float(envelopeIdx)],
|
|
78
|
+
["p", array(d.claims.pointers.map((p) => ptrToCbor(p, idx)))],
|
|
79
|
+
];
|
|
80
|
+
// Dehydrate against the envelope (SPEC-8 §3.1); divergent fields stored explicitly (P2).
|
|
81
|
+
if (d.claims.author !== manifest.claims.author)
|
|
82
|
+
entries.push(["a", float(idx(d.claims.author))]);
|
|
83
|
+
const dt = d.claims.timestamp - manifest.claims.timestamp;
|
|
84
|
+
if (dt !== 0)
|
|
85
|
+
entries.push(["dt", float(dt)]);
|
|
86
|
+
if (d.sig !== undefined)
|
|
87
|
+
entries.push(["s", float(idx(d.sig))]);
|
|
88
|
+
return map(entries);
|
|
89
|
+
}
|
|
90
|
+
export function packSet(set) {
|
|
91
|
+
const deltas = [...set].sort((a, b) => (a.id < b.id ? -1 : 1));
|
|
92
|
+
// Manifests: deltas carrying rdb.txn.member pointers, sorted by id.
|
|
93
|
+
const manifests = deltas.filter((d) => manifestMemberIds(d).length > 0);
|
|
94
|
+
// Each member is dehydrated against the lexicographically FIRST claiming manifest (P1).
|
|
95
|
+
const memberToManifest = new Map();
|
|
96
|
+
manifests.forEach((m, i) => {
|
|
97
|
+
for (const id of manifestMemberIds(m)) {
|
|
98
|
+
if (set.has(id) && !memberToManifest.has(id))
|
|
99
|
+
memberToManifest.set(id, i);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
const manifestIds = new Set(manifests.map((m) => m.id));
|
|
103
|
+
const members = deltas.filter((d) => memberToManifest.has(d.id) && !manifestIds.has(d.id));
|
|
104
|
+
const loose = deltas.filter((d) => !memberToManifest.has(d.id) && !manifestIds.has(d.id));
|
|
105
|
+
const stringSet = new Set();
|
|
106
|
+
for (const d of deltas)
|
|
107
|
+
stringsOf(d, stringSet);
|
|
108
|
+
const strings = [...stringSet].sort();
|
|
109
|
+
const indexOf = new Map(strings.map((s, i) => [s, i]));
|
|
110
|
+
const idx = (s) => indexOf.get(s);
|
|
111
|
+
const packed = map([
|
|
112
|
+
["version", float(PACK_VERSION)],
|
|
113
|
+
["strings", array(strings.map(tstr))],
|
|
114
|
+
["envelopes", array(manifests.map((m) => hydratedRecord(m, idx)))],
|
|
115
|
+
[
|
|
116
|
+
"members",
|
|
117
|
+
array(members.map((d) => memberRecord(d, manifests[memberToManifest.get(d.id)], memberToManifest.get(d.id), idx))),
|
|
118
|
+
],
|
|
119
|
+
["loose", array(loose.map((d) => hydratedRecord(d, idx)))],
|
|
120
|
+
]);
|
|
121
|
+
return encode(packed);
|
|
122
|
+
}
|
|
123
|
+
export function packId(bytes) {
|
|
124
|
+
return contentAddress(bytes);
|
|
125
|
+
}
|
|
126
|
+
function asMap(v, what) {
|
|
127
|
+
if (v.t !== "map")
|
|
128
|
+
throw new Error(`pack: expected map for ${what}`);
|
|
129
|
+
return new Map(v.v);
|
|
130
|
+
}
|
|
131
|
+
function asArray(v, what) {
|
|
132
|
+
if (v === undefined || v.t !== "array")
|
|
133
|
+
throw new Error(`pack: expected array for ${what}`);
|
|
134
|
+
return v.v;
|
|
135
|
+
}
|
|
136
|
+
function asNum(v, what) {
|
|
137
|
+
if (v === undefined || v.t !== "float")
|
|
138
|
+
throw new Error(`pack: expected number for ${what}`);
|
|
139
|
+
return v.v;
|
|
140
|
+
}
|
|
141
|
+
function ptrFromCbor(v, strings) {
|
|
142
|
+
const o = asMap(v, "pointer");
|
|
143
|
+
const str = (key) => strings[asNum(o.get(key), key)];
|
|
144
|
+
const role = str("r");
|
|
145
|
+
const context = o.has("c") ? str("c") : undefined;
|
|
146
|
+
let target;
|
|
147
|
+
if (o.has("e")) {
|
|
148
|
+
target = {
|
|
149
|
+
kind: "entity",
|
|
150
|
+
entity: context === undefined ? { id: str("e") } : { id: str("e"), context },
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
else if (o.has("d")) {
|
|
154
|
+
target = {
|
|
155
|
+
kind: "delta",
|
|
156
|
+
deltaRef: context === undefined ? { delta: str("d") } : { delta: str("d"), context },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
else if (o.has("s")) {
|
|
160
|
+
target = { kind: "primitive", value: str("s") };
|
|
161
|
+
}
|
|
162
|
+
else if (o.has("n")) {
|
|
163
|
+
target = { kind: "primitive", value: asNum(o.get("n"), "n") };
|
|
164
|
+
}
|
|
165
|
+
else if (o.has("b")) {
|
|
166
|
+
const b = o.get("b");
|
|
167
|
+
if (b.t !== "bool")
|
|
168
|
+
throw new Error("pack: expected bool for b");
|
|
169
|
+
target = { kind: "primitive", value: b.v };
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
throw new Error("pack: pointer record has no target");
|
|
173
|
+
}
|
|
174
|
+
return { role, target };
|
|
175
|
+
}
|
|
176
|
+
function hydrateRecord(v, strings) {
|
|
177
|
+
const o = asMap(v, "record");
|
|
178
|
+
const claims = {
|
|
179
|
+
author: strings[asNum(o.get("a"), "a")],
|
|
180
|
+
timestamp: asNum(o.get("t"), "t"),
|
|
181
|
+
pointers: asArray(o.get("p"), "p").map((p) => ptrFromCbor(p, strings)),
|
|
182
|
+
};
|
|
183
|
+
const sig = o.has("s") ? strings[asNum(o.get("s"), "s")] : undefined;
|
|
184
|
+
return verifiedDelta(claims, sig, strings[asNum(o.get("i"), "i")]);
|
|
185
|
+
}
|
|
186
|
+
// SPEC-8 §4: hydrate -> canonical CBOR -> multihash MUST equal the stored id. Free fsck.
|
|
187
|
+
function verifiedDelta(claims, sig, storedId) {
|
|
188
|
+
const d = makeDelta(claims, sig);
|
|
189
|
+
if (d.id !== storedId) {
|
|
190
|
+
throw new Error(`pack: rehydrated delta ${d.id} does not match stored id ${storedId}`);
|
|
191
|
+
}
|
|
192
|
+
return d;
|
|
193
|
+
}
|
|
194
|
+
export function unpackSet(bytes) {
|
|
195
|
+
const top = asMap(decode(bytes), "pack");
|
|
196
|
+
if (asNum(top.get("version"), "version") !== PACK_VERSION) {
|
|
197
|
+
throw new Error("pack: unsupported version");
|
|
198
|
+
}
|
|
199
|
+
const strings = asArray(top.get("strings"), "strings").map((s) => {
|
|
200
|
+
if (s.t !== "tstr")
|
|
201
|
+
throw new Error("pack: string table entries must be text");
|
|
202
|
+
return s.v;
|
|
203
|
+
});
|
|
204
|
+
const out = new DeltaSet();
|
|
205
|
+
const envelopes = asArray(top.get("envelopes"), "envelopes").map((e) => hydrateRecord(e, strings));
|
|
206
|
+
for (const m of envelopes)
|
|
207
|
+
out.add(m);
|
|
208
|
+
for (const rec of asArray(top.get("members"), "members")) {
|
|
209
|
+
const o = asMap(rec, "member");
|
|
210
|
+
const manifest = envelopes[asNum(o.get("m"), "m")];
|
|
211
|
+
if (manifest === undefined)
|
|
212
|
+
throw new Error("pack: member references missing envelope");
|
|
213
|
+
const author = o.has("a") ? strings[asNum(o.get("a"), "a")] : manifest.claims.author;
|
|
214
|
+
const timestamp = manifest.claims.timestamp + (o.has("dt") ? asNum(o.get("dt"), "dt") : 0);
|
|
215
|
+
const claims = {
|
|
216
|
+
author,
|
|
217
|
+
timestamp,
|
|
218
|
+
pointers: asArray(o.get("p"), "p").map((p) => ptrFromCbor(p, strings)),
|
|
219
|
+
};
|
|
220
|
+
const sig = o.has("s") ? strings[asNum(o.get("s"), "s")] : undefined;
|
|
221
|
+
out.add(verifiedDelta(claims, sig, strings[asNum(o.get("i"), "i")]));
|
|
222
|
+
}
|
|
223
|
+
for (const rec of asArray(top.get("loose"), "loose"))
|
|
224
|
+
out.add(hydrateRecord(rec, strings));
|
|
225
|
+
return out;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=pack.js.map
|
package/dist/pack.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"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"}
|
package/dist/peer.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Term } from "./eval.js";
|
|
2
|
+
import { type Pred } from "./pred.js";
|
|
3
|
+
import { Reactor } from "./reactor.js";
|
|
4
|
+
import type { Claims, Delta } from "./types.js";
|
|
5
|
+
export interface SyncReport {
|
|
6
|
+
readonly offered: number;
|
|
7
|
+
readonly bundles: number;
|
|
8
|
+
readonly loose: number;
|
|
9
|
+
readonly withheld: number;
|
|
10
|
+
readonly accepted: number;
|
|
11
|
+
readonly rejected: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class Peer {
|
|
14
|
+
private readonly seedHex;
|
|
15
|
+
offeredLens: Term;
|
|
16
|
+
admission: Pred | undefined;
|
|
17
|
+
readonly reactor: Reactor;
|
|
18
|
+
readonly author: string;
|
|
19
|
+
constructor(seedHex: string, offeredLens?: Term, admission?: Pred | undefined);
|
|
20
|
+
authorClaims(claims: Omit<Claims, "author">): Delta;
|
|
21
|
+
admits(d: Delta): boolean;
|
|
22
|
+
offeredSet(): Delta[];
|
|
23
|
+
pullFrom(other: Peer): SyncReport;
|
|
24
|
+
}
|
|
25
|
+
export declare function syncBoth(a: Peer, b: Peer): void;
|
|
26
|
+
//# sourceMappingURL=peer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../src/peer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAwC,MAAM,cAAc,CAAC;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,qBAAa,IAAI;IAKb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAEjB,WAAW,EAAE,IAAI;IAEjB,SAAS,EAAE,IAAI,GAAG,SAAS;IARpC,QAAQ,CAAC,OAAO,UAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGL,OAAO,EAAE,MAAM,EAEzB,WAAW,GAAE,IAAU,EAEvB,SAAS,GAAE,IAAI,GAAG,SAAqB;IAMhD,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK;IAQnD,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO;IAKzB,UAAU,IAAI,KAAK,EAAE;IAOrB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU;CA4DlC;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAO/C"}
|
package/dist/peer.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Federation (SPEC-6, ERRATA-6): a peer is a reactor + keypair + offered lens + admission
|
|
2
|
+
// predicate. Merge is union; this layer is selection and trust. Coordination without conscription.
|
|
3
|
+
import { evalTerm } from "./eval.js";
|
|
4
|
+
import { evalPred } from "./pred.js";
|
|
5
|
+
import { Reactor, manifestMemberIds } from "./reactor.js";
|
|
6
|
+
import { authorForSeed, signClaims, verifyDelta } from "./sign.js";
|
|
7
|
+
const ALL = { kind: "input" };
|
|
8
|
+
export class Peer {
|
|
9
|
+
seedHex;
|
|
10
|
+
offeredLens;
|
|
11
|
+
admission;
|
|
12
|
+
reactor = new Reactor();
|
|
13
|
+
author;
|
|
14
|
+
constructor(seedHex,
|
|
15
|
+
// What this peer offers to others (F4). Default: everything.
|
|
16
|
+
offeredLens = ALL,
|
|
17
|
+
// What this peer accepts (SPEC-6 §5 step 3). Default: everything that verifies.
|
|
18
|
+
admission = undefined) {
|
|
19
|
+
this.seedHex = seedHex;
|
|
20
|
+
this.offeredLens = offeredLens;
|
|
21
|
+
this.admission = admission;
|
|
22
|
+
this.author = authorForSeed(seedHex);
|
|
23
|
+
}
|
|
24
|
+
// Author a claim as this peer: sign and ingest (read-your-writes).
|
|
25
|
+
authorClaims(claims) {
|
|
26
|
+
const signed = signClaims({ ...claims, author: this.author }, this.seedHex);
|
|
27
|
+
const result = this.reactor.ingest(signed);
|
|
28
|
+
if (result.status === "rejected")
|
|
29
|
+
throw new Error(`own claim rejected: ${result.reason}`);
|
|
30
|
+
return signed;
|
|
31
|
+
}
|
|
32
|
+
// The admission judgment (SPEC-6 §5 step 3), exposed for transport bindings (F5).
|
|
33
|
+
admits(d) {
|
|
34
|
+
return this.admission === undefined || evalPred(this.admission, d);
|
|
35
|
+
}
|
|
36
|
+
// The offered set: eval(lens, log) — lens fidelity is a tested invariant (F4).
|
|
37
|
+
offeredSet() {
|
|
38
|
+
const result = evalTerm(this.offeredLens, this.reactor.snapshot());
|
|
39
|
+
if (result.sort !== "dset")
|
|
40
|
+
throw new Error("a lens must be a DSet-sort term (F4)");
|
|
41
|
+
return [...result.set];
|
|
42
|
+
}
|
|
43
|
+
// Pull from another peer: WANT(my ids) -> OFFER/BUNDLE -> verify -> admission -> ingest (§5).
|
|
44
|
+
pullFrom(other) {
|
|
45
|
+
const have = new Set();
|
|
46
|
+
for (const d of this.reactor.arrivalLog())
|
|
47
|
+
have.add(d.id);
|
|
48
|
+
const offered = other.offeredSet().filter((d) => !have.has(d.id));
|
|
49
|
+
const offeredIds = new Set(offered.map((d) => d.id));
|
|
50
|
+
// Partition per the signature boundary (F3): signed manifests carry their present members
|
|
51
|
+
// as bundles; remaining signed deltas travel loose; unsigned uncovered are withheld.
|
|
52
|
+
const isSignedManifest = (d) => d.sig !== undefined && verifyDelta(d) === "verified" && manifestMemberIds(d).length > 0;
|
|
53
|
+
const bundles = [];
|
|
54
|
+
const covered = new Set();
|
|
55
|
+
for (const m of offered.filter(isSignedManifest)) {
|
|
56
|
+
const members = manifestMemberIds(m)
|
|
57
|
+
.filter((id) => offeredIds.has(id))
|
|
58
|
+
.map((id) => offered.find((d) => d.id === id))
|
|
59
|
+
.filter((d) => !isSignedManifest(d));
|
|
60
|
+
bundles.push({ manifest: m, members });
|
|
61
|
+
for (const mem of members)
|
|
62
|
+
covered.add(mem.id);
|
|
63
|
+
covered.add(m.id);
|
|
64
|
+
}
|
|
65
|
+
const loose = offered.filter((d) => !covered.has(d.id) && d.sig !== undefined && verifyDelta(d) === "verified");
|
|
66
|
+
const withheld = offered.length - covered.size - loose.length;
|
|
67
|
+
let accepted = 0;
|
|
68
|
+
let rejected = 0;
|
|
69
|
+
const admit = (d) => this.admits(d);
|
|
70
|
+
const count = (r) => {
|
|
71
|
+
if (r.status === "accepted")
|
|
72
|
+
accepted += 1;
|
|
73
|
+
else if (r.status === "rejected")
|
|
74
|
+
rejected += 1;
|
|
75
|
+
};
|
|
76
|
+
for (const { manifest, members } of bundles) {
|
|
77
|
+
// Admission applies to the act: if the manifest or any member fails, decline the bundle.
|
|
78
|
+
if (![manifest, ...members].every(admit)) {
|
|
79
|
+
rejected += 1 + members.length;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
count(this.reactor.ingestBundle(manifest, members));
|
|
83
|
+
}
|
|
84
|
+
for (const d of loose) {
|
|
85
|
+
if (!admit(d)) {
|
|
86
|
+
rejected += 1;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
count(this.reactor.ingest(d));
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
offered: offered.length,
|
|
93
|
+
bundles: bundles.length,
|
|
94
|
+
loose: loose.length,
|
|
95
|
+
withheld,
|
|
96
|
+
accepted,
|
|
97
|
+
rejected,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Anti-entropy both ways; repeat until quiescent (bounded — union is monotone).
|
|
102
|
+
export function syncBoth(a, b) {
|
|
103
|
+
for (let i = 0; i < 4; i++) {
|
|
104
|
+
const before = a.reactor.digest() + b.reactor.digest();
|
|
105
|
+
a.pullFrom(b);
|
|
106
|
+
b.pullFrom(a);
|
|
107
|
+
if (a.reactor.digest() + b.reactor.digest() === before)
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=peer.js.map
|
package/dist/peer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../src/peer.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type CborValue } from "./cbor.js";
|
|
2
|
+
import type { HView } from "./hview.js";
|
|
3
|
+
import { type Pred } from "./pred.js";
|
|
4
|
+
import type { Primitive } from "./types.js";
|
|
5
|
+
export type View = Primitive | readonly View[] | {
|
|
6
|
+
readonly [key: string]: View;
|
|
7
|
+
};
|
|
8
|
+
export type MergeFn = "max" | "min" | "sum" | "count" | "and" | "or" | "concatSorted";
|
|
9
|
+
export type Order = {
|
|
10
|
+
readonly kind: "byTimestamp";
|
|
11
|
+
readonly dir: "desc" | "asc";
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "byAuthorRank";
|
|
14
|
+
readonly authors: readonly string[];
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: "byPred";
|
|
17
|
+
readonly pred: Pred;
|
|
18
|
+
readonly then: Order;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "lexById";
|
|
21
|
+
};
|
|
22
|
+
export type PropPolicy = {
|
|
23
|
+
readonly kind: "pick";
|
|
24
|
+
readonly order: Order;
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: "all";
|
|
27
|
+
readonly order: Order;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: "merge";
|
|
30
|
+
readonly fn: MergeFn;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "conflicts";
|
|
33
|
+
readonly order: Order;
|
|
34
|
+
} | {
|
|
35
|
+
readonly kind: "absentAs";
|
|
36
|
+
readonly constant: Primitive;
|
|
37
|
+
readonly then: PropPolicy;
|
|
38
|
+
};
|
|
39
|
+
export interface Policy {
|
|
40
|
+
readonly props: ReadonlyMap<string, PropPolicy>;
|
|
41
|
+
readonly default: PropPolicy;
|
|
42
|
+
}
|
|
43
|
+
export declare function viewToCbor(v: View): CborValue;
|
|
44
|
+
export declare function viewCanonicalHex(v: View): string;
|
|
45
|
+
export declare function resolveView(policy: Policy, hview: HView): View;
|
|
46
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAyC,MAAM,WAAW,CAAC;AAElF,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAA+B,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAU,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,IAAI,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,cAAc,CAAC;AAEtF,MAAM,MAAM,KAAK,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3F,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAwED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAS7C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAEhD;AA2FD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAU9D"}
|