@onlyne/lib 3.0.0 → 3.2.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.
Files changed (121) hide show
  1. package/README.md +6 -3
  2. package/dist/awaited.d.ts +43 -0
  3. package/dist/awaited.d.ts.map +1 -0
  4. package/dist/awaited.js +82 -0
  5. package/dist/awaited.js.map +1 -0
  6. package/dist/client.d.ts +140 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +1772 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/core.d.ts +36 -0
  11. package/dist/core.d.ts.map +1 -0
  12. package/dist/core.js +122 -0
  13. package/dist/core.js.map +1 -0
  14. package/dist/delivery.d.ts +120 -0
  15. package/dist/delivery.d.ts.map +1 -0
  16. package/dist/delivery.js +117 -0
  17. package/dist/delivery.js.map +1 -0
  18. package/dist/discovery.d.ts +35 -0
  19. package/dist/discovery.d.ts.map +1 -0
  20. package/dist/discovery.js +306 -0
  21. package/dist/discovery.js.map +1 -0
  22. package/dist/domains.d.ts +29 -0
  23. package/dist/domains.d.ts.map +1 -0
  24. package/dist/domains.js +267 -0
  25. package/dist/domains.js.map +1 -0
  26. package/dist/history.d.ts +13 -0
  27. package/dist/history.d.ts.map +1 -0
  28. package/dist/history.js +143 -0
  29. package/dist/history.js.map +1 -0
  30. package/dist/http.d.ts +20 -0
  31. package/dist/http.d.ts.map +1 -0
  32. package/dist/http.js +88 -0
  33. package/dist/http.js.map +1 -0
  34. package/dist/index.d.ts +20 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +15 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/keys.d.ts +97 -0
  39. package/dist/keys.d.ts.map +1 -0
  40. package/dist/keys.js +679 -0
  41. package/dist/keys.js.map +1 -0
  42. package/dist/memory.d.ts +9 -0
  43. package/dist/memory.d.ts.map +1 -0
  44. package/dist/memory.js +35 -0
  45. package/dist/memory.js.map +1 -0
  46. package/dist/messages.d.ts +64 -0
  47. package/dist/messages.d.ts.map +1 -0
  48. package/dist/messages.js +480 -0
  49. package/dist/messages.js.map +1 -0
  50. package/dist/node.d.ts +26 -0
  51. package/dist/node.d.ts.map +1 -0
  52. package/dist/node.js +59 -0
  53. package/dist/node.js.map +1 -0
  54. package/dist/resolve.d.ts +18 -0
  55. package/dist/resolve.d.ts.map +1 -0
  56. package/dist/resolve.js +37 -0
  57. package/dist/resolve.js.map +1 -0
  58. package/dist/resources.d.ts +25 -0
  59. package/dist/resources.d.ts.map +1 -0
  60. package/dist/resources.js +782 -0
  61. package/dist/resources.js.map +1 -0
  62. package/dist/routes/domains.d.ts +4 -0
  63. package/dist/routes/domains.d.ts.map +1 -0
  64. package/dist/routes/domains.js +42 -0
  65. package/dist/routes/domains.js.map +1 -0
  66. package/dist/routes/grants.d.ts +8 -0
  67. package/dist/routes/grants.d.ts.map +1 -0
  68. package/dist/routes/grants.js +32 -0
  69. package/dist/routes/grants.js.map +1 -0
  70. package/dist/routes/public.d.ts +4 -0
  71. package/dist/routes/public.d.ts.map +1 -0
  72. package/dist/routes/public.js +62 -0
  73. package/dist/routes/public.js.map +1 -0
  74. package/dist/routes/resources.d.ts +8 -0
  75. package/dist/routes/resources.d.ts.map +1 -0
  76. package/dist/routes/resources.js +87 -0
  77. package/dist/routes/resources.js.map +1 -0
  78. package/dist/routes/shared.d.ts +77 -0
  79. package/dist/routes/shared.d.ts.map +1 -0
  80. package/dist/routes/shared.js +349 -0
  81. package/dist/routes/shared.js.map +1 -0
  82. package/dist/routes/threads.d.ts +8 -0
  83. package/dist/routes/threads.d.ts.map +1 -0
  84. package/dist/routes/threads.js +113 -0
  85. package/dist/routes/threads.js.map +1 -0
  86. package/dist/routes/trust.d.ts +4 -0
  87. package/dist/routes/trust.d.ts.map +1 -0
  88. package/dist/routes/trust.js +36 -0
  89. package/dist/routes/trust.js.map +1 -0
  90. package/dist/stream.d.ts +20 -0
  91. package/dist/stream.d.ts.map +1 -0
  92. package/dist/stream.js +141 -0
  93. package/dist/stream.js.map +1 -0
  94. package/dist/threads.d.ts +79 -0
  95. package/dist/threads.d.ts.map +1 -0
  96. package/dist/threads.js +480 -0
  97. package/dist/threads.js.map +1 -0
  98. package/dist/transport.d.ts +45 -0
  99. package/dist/transport.d.ts.map +1 -0
  100. package/dist/transport.js +175 -0
  101. package/dist/transport.js.map +1 -0
  102. package/dist/types.d.ts +809 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +9 -0
  105. package/dist/types.js.map +1 -0
  106. package/package.json +16 -8
  107. package/src/client.ts +0 -1549
  108. package/src/core.ts +0 -114
  109. package/src/discovery.ts +0 -267
  110. package/src/domains.ts +0 -210
  111. package/src/history.ts +0 -129
  112. package/src/http.ts +0 -841
  113. package/src/index.ts +0 -18
  114. package/src/keys.ts +0 -632
  115. package/src/memory.ts +0 -34
  116. package/src/messages.ts +0 -398
  117. package/src/node.ts +0 -56
  118. package/src/resources.ts +0 -745
  119. package/src/threads.ts +0 -350
  120. package/src/transport.ts +0 -204
  121. package/src/types.ts +0 -383
package/dist/keys.d.ts ADDED
@@ -0,0 +1,97 @@
1
+ import type { Context } from './core.ts';
2
+ import type { Auth, KeyIdentity, KeyMaterial, KeyExchange, NodeId, TrustEntry, TrustStatement } from './types.ts';
3
+ export declare const SIGNATURE_HEADER = "Onlyne-Sig";
4
+ export declare const CLOCK_SKEW_MS = 300000;
5
+ /** How long a failed exchange send waits before the maintenance loop tries it again. */
6
+ export declare const EXCHANGE_RETRY_MS = 60000;
7
+ /** How long a refused statement waits before the loop tries again (unverified refusal). */
8
+ export declare const REFUSED_RETRY_MS = 600000;
9
+ export declare function keyFingerprint(raw: Uint8Array): Promise<string>;
10
+ export declare function generateKeyMaterial(): KeyMaterial;
11
+ export declare class KeyService {
12
+ #private;
13
+ constructor(ctx: Context);
14
+ get enabled(): boolean;
15
+ keyId(): NodeId;
16
+ freshTimestamp(): {
17
+ timestamp: string;
18
+ nonce: string;
19
+ };
20
+ material(): Promise<KeyMaterial>;
21
+ describe(): Promise<KeyIdentity | undefined>;
22
+ sign(payload: string): Promise<string>;
23
+ generate(auth: Auth): Promise<KeyIdentity>;
24
+ replace(material: KeyMaterial): Promise<void>;
25
+ }
26
+ export declare function requestPayload(request: Request, target: NodeId, digest: string, timestamp: string, nonce: string): string;
27
+ export declare function bodyDigest(body: Uint8Array | string): string;
28
+ export declare class TrustService {
29
+ #private;
30
+ constructor(ctx: Context, keys: KeyService);
31
+ /** @internal Called by OnlyneNode so trust commits reach the maintenance loop. */
32
+ bindLoop(waker: {
33
+ wakeLoop(): void;
34
+ }): void;
35
+ private owner;
36
+ list(auth: Auth): Promise<TrustEntry[]>;
37
+ entry(node: NodeId): Promise<TrustEntry | undefined>;
38
+ /**
39
+ * RFC 0017 §3: stage one of one exchange. Reads the peer's live `/keys`, so the
40
+ * fingerprint the host shows is one the peer proved. Committing is a separate
41
+ * explicit step on the returned session; nothing is recorded or sent here.
42
+ */
43
+ begin(auth: Auth, node: NodeId): Promise<KeyExchange>;
44
+ private identity;
45
+ private address;
46
+ inspect(node: NodeId): Promise<KeyIdentity>;
47
+ /**
48
+ * The peer's address. Discovery answers for every peer this node has observed; a peer that
49
+ * introduced itself before discovery ever saw it has no record at all, and the address its own
50
+ * signed statement carried is then the only one there is. Without that fallback an inbound
51
+ * invitation can never be accepted: the confirmation resolves the peer before it may answer,
52
+ * so the row would sit at `invited` forever while both holders had approved.
53
+ */
54
+ private peerBase;
55
+ private statement;
56
+ /**
57
+ * Sends one statement and settles the matching obligation only on a reply that proves
58
+ * it answered this attempt (RFC 0017 §3.5). A missing, unsigned or mismatched reply
59
+ * leaves the obligation owed, so the maintenance loop re-sends with a fresh nonce.
60
+ */
61
+ private send;
62
+ /** Clears the obligation an answered attempt created; a newer attempt keeps its own. */
63
+ private settle;
64
+ /** The rotation window closes when its last statement is gone. */
65
+ private closeWindow;
66
+ /**
67
+ * Rewrites or deletes one obligation only if the row is still the attempt this pass read.
68
+ * `rotate` can replace an approval obligation with a rotation one mid-pass; a whole-row
69
+ * write-back from the stale snapshot would drop the old-key proof it just stored.
70
+ */
71
+ private compareObligation;
72
+ private rotationWindow;
73
+ /** Backs off an obligation after a refusal this node cannot authenticate. */
74
+ private park;
75
+ /** The swap never completed: drop the window and every statement prepared under it. */
76
+ private abandonRotation;
77
+ request(auth: Auth, node: NodeId, fingerprint: string): Promise<TrustEntry>;
78
+ private notify;
79
+ accept(auth: Auth, node: NodeId, fingerprint: string): Promise<TrustEntry>;
80
+ receive(value: TrustStatement): Promise<TrustEntry>;
81
+ introduce(value: TrustStatement): Promise<TrustStatement>;
82
+ revoke(auth: Auth, node: NodeId): Promise<void>;
83
+ /**
84
+ * RFC 0017 §3.5: re-drives every owed statement whose reply has not arrived. The stage
85
+ * of the row is irrelevant — an `exchanged` row still owes the delivery when its reply
86
+ * was lost. Each attempt uses a fresh nonce, so the peer's nonce cache cannot mistake
87
+ * a re-send for a replay. The maintenance loop calls this; the host never does.
88
+ */
89
+ redrive(signal?: AbortSignal): Promise<void>;
90
+ rotate(auth: Auth): Promise<KeyIdentity>;
91
+ private consumeNonce;
92
+ signRequest(request: Request, target: NodeId, raw: Uint8Array | string): Promise<void>;
93
+ authenticate(request: Request, digest: string): Promise<Auth>;
94
+ signResponse(request: Request, response: Response, body: string): Promise<void>;
95
+ verifyResponse(target: NodeId, request: Request, response: Response, body: string): Promise<void>;
96
+ }
97
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}