@onlyne/lib 3.1.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 +4 -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/{src/index.ts → dist/index.d.ts} +2 -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 -1745
  108. package/src/core.ts +0 -114
  109. package/src/discovery.ts +0 -275
  110. package/src/domains.ts +0 -213
  111. package/src/history.ts +0 -139
  112. package/src/http.ts +0 -852
  113. package/src/keys.ts +0 -642
  114. package/src/memory.ts +0 -34
  115. package/src/messages.ts +0 -409
  116. package/src/node.ts +0 -63
  117. package/src/resolve.ts +0 -39
  118. package/src/resources.ts +0 -745
  119. package/src/threads.ts +0 -409
  120. package/src/transport.ts +0 -211
  121. package/src/types.ts +0 -428
@@ -0,0 +1,18 @@
1
+ import type { NodeId, Target, TrustEntry } from './types.ts';
2
+ /**
3
+ * The one place an address is composed for the wire (RFC 0011 §4, RFC 0018 §5.1).
4
+ * The host resolver — usually the discovery catalog — answers first. When it reports
5
+ * `not_found` (never observed) or `unavailable` (recorded but no address answers), a
6
+ * trusted row's `base_url` is the authoritative fallback: probing it succeeds writes the
7
+ * address back into the discovery catalog, so a peer that moved stays reachable and the
8
+ * new address becomes visible to the model. A trusted row whose address also fails is
9
+ * `unavailable` — never degraded to `not_found`, which names an unknown identity.
10
+ */
11
+ export declare function composeResolver(deps: {
12
+ resolve: (node: NodeId) => Promise<Target>;
13
+ trust?: {
14
+ entry(node: NodeId): Promise<TrustEntry | undefined>;
15
+ };
16
+ observe?: (base_url: string, source: string, expectedNode?: NodeId) => Promise<unknown>;
17
+ }): (node: NodeId) => Promise<Target>;
18
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;KAAE,CAAC;IACjE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAsBpC"}
@@ -0,0 +1,37 @@
1
+ import { OnlyneError } from "./core.js";
2
+ /**
3
+ * The one place an address is composed for the wire (RFC 0011 §4, RFC 0018 §5.1).
4
+ * The host resolver — usually the discovery catalog — answers first. When it reports
5
+ * `not_found` (never observed) or `unavailable` (recorded but no address answers), a
6
+ * trusted row's `base_url` is the authoritative fallback: probing it succeeds writes the
7
+ * address back into the discovery catalog, so a peer that moved stays reachable and the
8
+ * new address becomes visible to the model. A trusted row whose address also fails is
9
+ * `unavailable` — never degraded to `not_found`, which names an unknown identity.
10
+ */
11
+ export function composeResolver(deps) {
12
+ return async (node) => {
13
+ try {
14
+ return await deps.resolve(node);
15
+ }
16
+ catch (error) {
17
+ const failure = error instanceof OnlyneError
18
+ ? error.error
19
+ : error?.error;
20
+ if (failure?.code !== 'not_found' && failure?.code !== 'unavailable')
21
+ throw error;
22
+ const entry = await deps.trust?.entry(node);
23
+ if (entry === undefined || entry.state !== 'trusted' || entry.base_url.length === 0)
24
+ throw error;
25
+ if (deps.observe !== undefined) {
26
+ try {
27
+ await deps.observe(entry.base_url, 'trust-row', node);
28
+ }
29
+ catch {
30
+ throw new OnlyneError('unavailable', `${node} holds a trusted row whose address is ${entry.base_url}, but no recorded address answered and that address did not verify either.`);
31
+ }
32
+ }
33
+ return { node_id: node, base_url: entry.base_url };
34
+ }
35
+ };
36
+ }
37
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAI/B;IACC,OAAO,KAAK,EAAC,IAAI,EAAC,EAAE;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAwB,KAAK,YAAY,WAAW;gBAC/D,CAAC,CAAC,KAAK,CAAC,KAAK;gBACb,CAAC,CAAE,KAAoC,EAAE,KAAK,CAAC;YACjD,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW,IAAI,OAAO,EAAE,IAAI,KAAK,aAAa;gBAAE,MAAM,KAAK,CAAC;YAClF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACjG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;gBACxD,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,WAAW,CAAC,aAAa,EACjC,GAAG,IAAI,yCAAyC,KAAK,CAAC,QAAQ,4EAA4E,CAAC,CAAC;gBAChJ,CAAC;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { AckReceipt, Auth, HandoverProbe, Json, LogQuery, Mutation, OperationRecord, OperationRequest, OperationResult, Page, PageOptions, ProbeAnswer, Resource, ResourceEvent, ResourceRef, Transport } from './types.ts';
2
+ import type { Context } from './core.ts';
3
+ export interface ResourceService {
4
+ register(auth: Auth, resource: Resource): Promise<Resource>;
5
+ list(auth: Auth, options?: PageOptions): Promise<Page<Resource>>;
6
+ describe(auth: Auth, ref: ResourceRef): Promise<Resource>;
7
+ operate(auth: Auth, ref: ResourceRef, request: OperationRequest, signal?: AbortSignal): Promise<OperationResult>;
8
+ operation(auth: Auth, ref: ResourceRef, id: string): Promise<OperationRecord>;
9
+ operations(auth: Auth, ref: ResourceRef, options?: PageOptions): Promise<Page<OperationRecord>>;
10
+ receive(auth: Auth, ref: ResourceRef, input: {
11
+ source_id: string;
12
+ data: Json;
13
+ expires_at?: string;
14
+ }): Promise<ResourceEvent>;
15
+ log(auth: Auth, ref: ResourceRef, options?: LogQuery): Promise<Page<ResourceEvent>>;
16
+ event(auth: Auth, ref: ResourceRef, id: string): Promise<ResourceEvent>;
17
+ ack(auth: Auth, ref: ResourceRef, id: string, mutation: Mutation): Promise<AckReceipt>;
18
+ /** Target side of a handover: record and answer the probe an endpoint sent (RFC 0006 §4.3). */
19
+ probe(auth: Auth, probe: HandoverProbe): Promise<ProbeAnswer>;
20
+ /** The answer this node already recorded for a probe, read back by the initiator after a crash. */
21
+ probeAnswer(auth: Auth, operationId: string): Promise<ProbeAnswer>;
22
+ recover(): Promise<void>;
23
+ }
24
+ export declare function createResourceService(ctx: Context, transport: Transport): ResourceService;
25
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAAE,IAAI,EAAW,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EACrG,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAkB,aAAa,EAAE,WAAW,EACrG,SAAS,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjH,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9E,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7H,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvF,+FAA+F;IAC/F,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,mGAAmG;IACnG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA6GD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe,CA+mBzF"}