@peerbit/trusted-network 6.0.104 → 6.0.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/v2-policy-anchor.d.ts +75 -0
- package/dist/src/v2-policy-anchor.d.ts.map +1 -0
- package/dist/src/v2-policy-anchor.js +990 -0
- package/dist/src/v2-policy-anchor.js.map +1 -0
- package/dist/src/v2-policy-engine.d.ts +54 -11
- package/dist/src/v2-policy-engine.d.ts.map +1 -1
- package/dist/src/v2-policy-engine.js +431 -68
- package/dist/src/v2-policy-engine.js.map +1 -1
- package/dist/src/v2.d.ts +6 -0
- package/dist/src/v2.d.ts.map +1 -1
- package/dist/src/v2.js +6 -0
- package/dist/src/v2.js.map +1 -1
- package/package.json +4 -4
- package/src/v2-policy-anchor.ts +1152 -0
- package/src/v2-policy-engine.ts +621 -77
- package/src/v2.ts +7 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { PublicSignKey } from "@peerbit/crypto";
|
|
2
|
+
import type { PolicyAdmissionResultV2, PolicyForkEvidenceV2, PolicyHeadProjectionV2, PolicySnapshotResolverV2 } from "./v2-policy-engine.js";
|
|
3
|
+
import { NetworkDescriptorV2 } from "./v2.js";
|
|
4
|
+
/**
|
|
5
|
+
* Internal crash-safe policy-anchor storage format.
|
|
6
|
+
*
|
|
7
|
+
* This module is intentionally absent from the package entry point. Its store
|
|
8
|
+
* must already be open and scoped to this namespace and descriptor. Exactly
|
|
9
|
+
* one wrapper may write that scope: this append-only format deliberately does
|
|
10
|
+
* not pretend that get-then-put is a multi-process compare-and-swap.
|
|
11
|
+
*/
|
|
12
|
+
export declare const TRUSTED_NETWORK_V2_POLICY_ANCHOR_STORE_OWNER = "peerbit/trusted-network/v2/policy-anchor/v1";
|
|
13
|
+
export declare const TRUSTED_NETWORK_V2_MAX_POLICY_ANCHOR_GENERATION_BYTES: number;
|
|
14
|
+
type MaybePromiseV2<T> = T | Promise<T>;
|
|
15
|
+
export type CrashSafePolicyAnchorStoreV2 = {
|
|
16
|
+
get(key: string): MaybePromiseV2<Uint8Array | undefined>;
|
|
17
|
+
put(key: string, value: Uint8Array): MaybePromiseV2<void>;
|
|
18
|
+
iterator(): AsyncIterable<[string, Uint8Array]>;
|
|
19
|
+
readonly crashSafeDurability: {
|
|
20
|
+
readonly crashSafe: true;
|
|
21
|
+
barrier(): MaybePromiseV2<void>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
type DurableReducerOptionsV2 = {
|
|
25
|
+
descriptor: NetworkDescriptorV2;
|
|
26
|
+
resolvePolicyEntry: PolicySnapshotResolverV2;
|
|
27
|
+
resolveTimeoutMs?: number;
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
maxPending?: number;
|
|
30
|
+
maxPendingPolicyBytes?: number;
|
|
31
|
+
};
|
|
32
|
+
export type TrustedNetworkV2DurablePolicyReducerOptions = DurableReducerOptionsV2 & {
|
|
33
|
+
store: CrashSafePolicyAnchorStoreV2;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Crash-safe publication wrapper for the internal v2 reducer.
|
|
37
|
+
*
|
|
38
|
+
* The mutable reducer is never exposed. Authorization reads use only the last
|
|
39
|
+
* projection published after the store barrier. An admission places a
|
|
40
|
+
* fail-closed fence around both reducer mutation and durable publication.
|
|
41
|
+
*/
|
|
42
|
+
export declare class TrustedNetworkV2DurablePolicyReducer {
|
|
43
|
+
private readonly store;
|
|
44
|
+
private readonly durability;
|
|
45
|
+
private readonly descriptor;
|
|
46
|
+
private readonly descriptorHash;
|
|
47
|
+
private core;
|
|
48
|
+
private published;
|
|
49
|
+
private generation;
|
|
50
|
+
private previousGenerationChecksum;
|
|
51
|
+
private durableCoreBytes?;
|
|
52
|
+
private observedHashes;
|
|
53
|
+
private operationTail;
|
|
54
|
+
private authorizationFences;
|
|
55
|
+
private terminalError?;
|
|
56
|
+
private constructor();
|
|
57
|
+
static open(options: TrustedNetworkV2DurablePolicyReducerOptions): Promise<TrustedNetworkV2DurablePolicyReducer>;
|
|
58
|
+
get state(): "EMPTY" | "ACTIVE" | "UNAVAILABLE" | "FORKED" | "HALTED";
|
|
59
|
+
get head(): PolicyHeadProjectionV2 | undefined;
|
|
60
|
+
get forkEvidence(): PolicyForkEvidenceV2 | undefined;
|
|
61
|
+
get pendingCount(): number;
|
|
62
|
+
get pendingBytes(): number;
|
|
63
|
+
get pendingDigests(): Uint8Array[];
|
|
64
|
+
/** Projection query only; use isAuthorized() for the fail-closed gate. */
|
|
65
|
+
rolesFor(subject: PublicSignKey): number;
|
|
66
|
+
isAuthorized(subject: PublicSignKey, roles: number): boolean;
|
|
67
|
+
abort(): void;
|
|
68
|
+
ingest(entryBytes: Uint8Array): Promise<PolicyAdmissionResultV2>;
|
|
69
|
+
retryUnavailable(): Promise<PolicyAdmissionResultV2>;
|
|
70
|
+
private enqueue;
|
|
71
|
+
private halt;
|
|
72
|
+
private persistCorePublication;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=v2-policy-anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-policy-anchor.d.ts","sourceRoot":"","sources":["../../src/v2-policy-anchor.ts"],"names":[],"mappings":"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"}
|