@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,349 @@
1
+ import { OnlyneError, fail } from "../core.js";
2
+ export const DEFAULT_BYTES = 1_048_576;
3
+ export function record(value, field) {
4
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
5
+ fail('invalid_request', `${field} must be a JSON object.`);
6
+ return value;
7
+ }
8
+ /** Rejects keys this endpoint does not route on, so a typo cannot silently change meaning. */
9
+ export function shape(value, field, keys) {
10
+ const object = record(value, field);
11
+ for (const name of Object.keys(object)) {
12
+ if (!keys.includes(name))
13
+ fail('invalid_request', `${field}.${name} is not a field this endpoint accepts.`);
14
+ }
15
+ return object;
16
+ }
17
+ export function string(value, field) {
18
+ if (typeof value !== 'string' || value.length === 0)
19
+ fail('invalid_request', `${field} must be a non-empty string.`);
20
+ return value;
21
+ }
22
+ export function optionalString(value, field) {
23
+ if (value === undefined)
24
+ return undefined;
25
+ return string(value, field);
26
+ }
27
+ export function list(value, field, item) {
28
+ if (!Array.isArray(value))
29
+ fail('invalid_request', `${field} must be an array.`);
30
+ return value.map((entry, index) => item(entry, `${field}[${index}]`));
31
+ }
32
+ export function threadRef(value, field) {
33
+ const raw = shape(value, field, ['owner', 'id']);
34
+ return { owner: string(raw.owner, `${field}.owner`), id: string(raw.id, `${field}.id`) };
35
+ }
36
+ export function messageRef(value, field) {
37
+ const raw = shape(value, field, ['sender', 'id']);
38
+ return { sender: string(raw.sender, `${field}.sender`), id: string(raw.id, `${field}.id`) };
39
+ }
40
+ export function resourceRef(value, field) {
41
+ const raw = shape(value, field, ['owner', 'id']);
42
+ return { owner: string(raw.owner, `${field}.owner`), id: string(raw.id, `${field}.id`) };
43
+ }
44
+ export function deliveryPlan(value, field) {
45
+ const raw = shape(value, field, ['response', 'execution', 'context']);
46
+ const response = string(raw.response, `${field}.response`);
47
+ if (response !== 'none' && response !== 'async' && response !== 'await')
48
+ fail('invalid_request', `${field}.response must be none, async or await.`);
49
+ const execution = string(raw.execution, `${field}.execution`);
50
+ if (execution !== 'existing' && execution !== 'new')
51
+ fail('invalid_request', `${field}.execution must be existing or new.`);
52
+ const context = optionalString(raw.context, `${field}.context`);
53
+ return { response, execution, ...(context === undefined ? {} : { context }) };
54
+ }
55
+ /** RFC 0003 §1: the work unit a message belongs to. A malformed ref is refused, never dropped. */
56
+ export function workRef(value, field) {
57
+ const raw = shape(value, field, ['unit', 'parent', 'attempt']);
58
+ const parent = raw.parent === null ? null : optionalString(raw.parent, `${field}.parent`);
59
+ const attempt = raw.attempt;
60
+ if (attempt !== undefined && (typeof attempt !== 'number' || !Number.isInteger(attempt) || attempt < 1)) {
61
+ fail('invalid_request', `${field}.attempt must be a positive integer.`);
62
+ }
63
+ return {
64
+ unit: string(raw.unit, `${field}.unit`),
65
+ ...(parent === undefined ? {} : { parent }),
66
+ ...(attempt === undefined ? {} : { attempt }),
67
+ };
68
+ }
69
+ export function readScope(value, field) {
70
+ const raw = shape(value, field, ['peers', 'since_seq', 'related_to']);
71
+ const since = optionalString(raw.since_seq, `${field}.since_seq`);
72
+ if (since !== undefined && !/^(0|[1-9][0-9]*)$/.test(since))
73
+ fail('invalid_request', `${field}.since_seq must be a decimal sequence string.`);
74
+ return {
75
+ ...(raw.peers === undefined ? {} : { peers: list(raw.peers, `${field}.peers`, (entry, at) => string(entry, at)) }),
76
+ ...(since === undefined ? {} : { since_seq: since }),
77
+ ...(raw.related_to === undefined ? {} : { related_to: messageRef(raw.related_to, `${field}.related_to`) }),
78
+ };
79
+ }
80
+ export function messageMeta(value, field) {
81
+ const raw = shape(value, field, ['work', 'thread', 'in_reply_to', 'relation', 'mentions', 'parts', 'data']);
82
+ const relation = optionalString(raw.relation, `${field}.relation`);
83
+ if (relation !== undefined && relation !== 'reply' && relation !== 'followup')
84
+ fail('invalid_request', `${field}.relation must be reply or followup.`);
85
+ return {
86
+ ...(raw.work === undefined ? {} : { work: workRef(raw.work, `${field}.work`) }),
87
+ ...(raw.thread === undefined ? {} : { thread: threadRef(raw.thread, `${field}.thread`) }),
88
+ ...(raw.in_reply_to === undefined ? {} : { in_reply_to: messageRef(raw.in_reply_to, `${field}.in_reply_to`) }),
89
+ ...(relation === undefined ? {} : { relation }),
90
+ ...(raw.mentions === undefined ? {} : { mentions: list(raw.mentions, `${field}.mentions`, (entry, at) => string(entry, at)) }),
91
+ ...(raw.parts === undefined ? {} : { parts: list(raw.parts, `${field}.parts`, entry => entry) }),
92
+ ...(raw.data === undefined ? {} : { data: record(raw.data, `${field}.data`) }),
93
+ };
94
+ }
95
+ export function message(value, field) {
96
+ const raw = shape(value, field, ['id', 'sender', 'delivery_kind', 'msg', 'meta']);
97
+ return {
98
+ id: string(raw.id, `${field}.id`),
99
+ sender: string(raw.sender, `${field}.sender`),
100
+ delivery_kind: string(raw.delivery_kind, `${field}.delivery_kind`),
101
+ msg: string(raw.msg, `${field}.msg`),
102
+ ...(raw.meta === undefined ? {} : { meta: messageMeta(raw.meta, `${field}.meta`) }),
103
+ };
104
+ }
105
+ export function memberPatch(value, field) {
106
+ const state = optionalString(value.state, `${field}.state`);
107
+ if (state !== undefined && state !== 'requested' && state !== 'active' && state !== 'revoked' && state !== 'denied') {
108
+ fail('invalid_request', `${field}.state must be requested, active, revoked or denied.`);
109
+ }
110
+ const access = value.access === undefined ? undefined : list(value.access, `${field}.access`, (entry, at) => {
111
+ const name = string(entry, at);
112
+ if (name !== 'read' && name !== 'post')
113
+ fail('invalid_request', `${at} must be read or post.`);
114
+ return name;
115
+ });
116
+ return {
117
+ ...(value.peer === undefined ? {} : { peer: string(value.peer, `${field}.peer`) }),
118
+ ...(state === undefined ? {} : { state: state }),
119
+ ...(access === undefined ? {} : { access: access }),
120
+ ...(value.read_scope === undefined ? {} : { read_scope: readScope(value.read_scope, `${field}.read_scope`) }),
121
+ };
122
+ }
123
+ export function pageOptions(params) {
124
+ const cursor = params.get('cursor');
125
+ const size = params.get('page_size');
126
+ if (size !== null && !/^([1-9][0-9]?|100)$/.test(size))
127
+ fail('invalid_request', 'page_size must be from 1 to 100.');
128
+ return { ...(cursor === null ? {} : { cursor }), ...(size === null ? {} : { page_size: Number(size) }) };
129
+ }
130
+ /** RFC 0006 §6: `since` and `limit` are the log's own query names; `cursor` pages past the last page. */
131
+ export function logQuery(params) {
132
+ const cursor = params.get('cursor');
133
+ const since = params.get('since');
134
+ const limit = params.get('limit');
135
+ if (since !== null && !/^(0|[1-9][0-9]*)$/.test(since))
136
+ fail('invalid_request', 'since must be a decimal sequence string.');
137
+ if (limit !== null && !/^([1-9][0-9]?|100)$/.test(limit))
138
+ fail('invalid_request', 'limit must be from 1 to 100.');
139
+ return {
140
+ ...(cursor === null ? {} : { cursor }),
141
+ ...(since === null ? {} : { since }),
142
+ ...(limit === null ? {} : { page_size: Number(limit) }),
143
+ };
144
+ }
145
+ export function messageQuery(params) {
146
+ const attention = params.get('attention');
147
+ if (attention !== null && attention !== 'inbox' && attention !== 'thread')
148
+ fail('invalid_request', 'attention must be inbox or thread.');
149
+ const since = params.get('since_seq');
150
+ if (since !== null && !/^(0|[1-9][0-9]*)$/.test(since))
151
+ fail('invalid_request', 'since_seq must be a decimal sequence string.');
152
+ const related = params.get('related_to');
153
+ let related_to;
154
+ if (related !== null) {
155
+ let parsed;
156
+ try {
157
+ parsed = JSON.parse(related);
158
+ }
159
+ catch {
160
+ fail('invalid_request', 'related_to must encode a MessageRef as JSON.');
161
+ }
162
+ try {
163
+ related_to = messageRef(parsed, 'related_to');
164
+ }
165
+ catch (error) {
166
+ if (error instanceof OnlyneError)
167
+ fail('invalid_request', 'related_to must encode a {sender, id} MessageRef.');
168
+ throw error;
169
+ }
170
+ }
171
+ return {
172
+ ...pageOptions(params),
173
+ ...(attention === null ? {} : { attention }),
174
+ ...(since === null ? {} : { since_seq: since }),
175
+ ...(params.get('peer') === null ? {} : { peer: string(params.get('peer'), 'peer') }),
176
+ ...(related_to === undefined ? {} : { related_to }),
177
+ };
178
+ }
179
+ export async function json(request, limit, rawBody) {
180
+ const declared = request.headers.get('content-length');
181
+ if (declared !== null && /^[0-9]+$/.test(declared) && Number(declared) > limit) {
182
+ fail('payload_too_large', `The request body exceeds ${limit} bytes.`);
183
+ }
184
+ const type = (request.headers.get('content-type') ?? '').split(';')[0].trim().toLowerCase();
185
+ if (type !== 'application/json')
186
+ fail('unsupported_media_type', 'Content-Type must be application/json.');
187
+ if (rawBody !== undefined) {
188
+ if (rawBody.length === 0)
189
+ fail('invalid_request', 'A JSON body is required.');
190
+ try {
191
+ return JSON.parse(rawBody);
192
+ }
193
+ catch {
194
+ fail('invalid_request', 'The request body is not valid UTF-8 JSON.');
195
+ }
196
+ }
197
+ if (request.body === null)
198
+ fail('invalid_request', 'A JSON body is required.');
199
+ const chunks = [];
200
+ let total = 0;
201
+ const reader = request.body.getReader();
202
+ while (true) {
203
+ const { done, value } = await reader.read();
204
+ if (done === true)
205
+ break;
206
+ total += value.byteLength;
207
+ if (total > limit)
208
+ fail('payload_too_large', `The request body exceeds ${limit} bytes.`);
209
+ chunks.push(value);
210
+ }
211
+ if (total === 0)
212
+ fail('invalid_request', 'A JSON body is required.');
213
+ const bytes = new Uint8Array(total);
214
+ let offset = 0;
215
+ for (const chunk of chunks) {
216
+ bytes.set(chunk, offset);
217
+ offset += chunk.byteLength;
218
+ }
219
+ try {
220
+ return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes));
221
+ }
222
+ catch {
223
+ fail('invalid_request', 'The request body is not valid UTF-8 JSON.');
224
+ }
225
+ }
226
+ export function mutation(request, raw) {
227
+ const header = request.headers.get('idempotency-key');
228
+ const field = optionalString(raw.idempotency_key, 'idempotency_key');
229
+ if (header !== null && field !== undefined && header !== field) {
230
+ fail('invalid_request', 'Idempotency-Key and idempotency_key disagree.');
231
+ }
232
+ const idempotency_key = header ?? field;
233
+ if (idempotency_key === undefined)
234
+ fail('invalid_request', 'An Idempotency-Key header is required.');
235
+ const headerDeadline = request.headers.get('x-onlyne-retry-until');
236
+ const fieldDeadline = optionalString(raw.retry_until, 'retry_until');
237
+ if (headerDeadline !== null && fieldDeadline !== undefined && headerDeadline !== fieldDeadline) {
238
+ fail('invalid_request', 'X-Onlyne-Retry-Until and retry_until disagree.');
239
+ }
240
+ return { idempotency_key, retry_until: string(headerDeadline ?? fieldDeadline, 'retry_until') };
241
+ }
242
+ /** DELETE carries no body, so its mutation comes from the headers and is checked the same way. */
243
+ export function headerMutation(request) {
244
+ return mutation(request, {});
245
+ }
246
+ export function sendRequest(request, value, at) {
247
+ const raw = shape(value, 'body', ['idempotency_key', 'retry_until', 'message', 'target_endpoint', 'plan']);
248
+ const content = message(raw.message, 'message');
249
+ if (at !== undefined) {
250
+ const declared = content.meta?.thread;
251
+ if (declared !== undefined && (declared.owner !== at.owner || declared.id !== at.id)) {
252
+ fail('invalid_request', 'The message thread must match the request path.');
253
+ }
254
+ content.meta = { ...content.meta, thread: at };
255
+ }
256
+ return {
257
+ ...mutation(request, raw),
258
+ message: content,
259
+ target_endpoint: string(raw.target_endpoint, 'target_endpoint'),
260
+ plan: deliveryPlan(raw.plan, 'plan'),
261
+ };
262
+ }
263
+ export function grant(value) {
264
+ const raw = shape(value, 'grant', ['id', 'recipient', 'thread_ref', 'revision', 'acked', 'previous_thread_ref']);
265
+ if (typeof raw.acked !== 'boolean')
266
+ fail('invalid_request', 'grant.acked must be a boolean.');
267
+ const previous = raw.previous_thread_ref === undefined
268
+ ? undefined
269
+ : threadRef(raw.previous_thread_ref, 'grant.previous_thread_ref');
270
+ return {
271
+ id: string(raw.id, 'grant.id'),
272
+ recipient: string(raw.recipient, 'grant.recipient'),
273
+ thread_ref: threadRef(raw.thread_ref, 'grant.thread_ref'),
274
+ revision: string(raw.revision, 'grant.revision'),
275
+ acked: raw.acked,
276
+ ...(previous === undefined ? {} : { previous_thread_ref: previous }),
277
+ };
278
+ }
279
+ export function resourceRecord(value) {
280
+ const raw = shape(value, 'resource', [
281
+ 'resource_ref', 'kind', 'operations', 'binding', 'log_readers', 'revision', 'event_seq', 'retention_ms', 'data',
282
+ ]);
283
+ const binding = shape(raw.binding, 'resource.binding', ['handler', 'cursor']);
284
+ const cursor = string(binding.cursor, 'resource.binding.cursor');
285
+ if (!/^(0|[1-9][0-9]*)$/.test(cursor))
286
+ fail('invalid_request', 'resource.binding.cursor must be a decimal sequence string.');
287
+ const nodes = (name) => list(raw[name] ?? [], `resource.${name}`, (entry, at) => string(entry, at));
288
+ const eventSeq = optionalString(raw.event_seq, 'resource.event_seq');
289
+ if (eventSeq !== undefined && !/^(0|[1-9][0-9]*)$/.test(eventSeq))
290
+ fail('invalid_request', 'resource.event_seq must be a decimal sequence string.');
291
+ if (raw.retention_ms !== undefined && (typeof raw.retention_ms !== 'number' || !Number.isInteger(raw.retention_ms) || raw.retention_ms < 0)) {
292
+ fail('invalid_request', 'resource.retention_ms must be a non-negative integer.');
293
+ }
294
+ return {
295
+ resource_ref: resourceRef(raw.resource_ref, 'resource.resource_ref'),
296
+ kind: string(raw.kind, 'resource.kind'),
297
+ operations: list(raw.operations ?? [], 'resource.operations', (entry, at) => string(entry, at)),
298
+ binding: { handler: string(binding.handler, 'resource.binding.handler'), cursor },
299
+ log_readers: nodes('log_readers'),
300
+ revision: string(raw.revision, 'resource.revision'),
301
+ event_seq: eventSeq ?? '0',
302
+ retention_ms: raw.retention_ms ?? 0,
303
+ ...(raw.data === undefined ? {} : { data: raw.data }),
304
+ };
305
+ }
306
+ export function probeBody(value) {
307
+ const raw = shape(value, 'body', ['operation_id', 'resource', 'kind', 'operations', 'metadata', 'initiator', 'cursor', 'deadline']);
308
+ return {
309
+ operation_id: string(raw.operation_id, 'operation_id'),
310
+ resource: resourceRef(raw.resource, 'resource'),
311
+ kind: string(raw.kind, 'kind'),
312
+ operations: list(raw.operations, 'operations', (entry, at) => string(entry, at)),
313
+ ...(raw.metadata === undefined ? {} : { metadata: raw.metadata }),
314
+ initiator: string(raw.initiator, 'initiator'),
315
+ cursor: string(raw.cursor, 'cursor'),
316
+ deadline: string(raw.deadline, 'deadline'),
317
+ };
318
+ }
319
+ export function operationRequest(request, value) {
320
+ const raw = shape(value, 'body', ['idempotency_key', 'retry_until', 'operation_id', 'operation', 'expected_revision', 'data']);
321
+ return {
322
+ ...mutation(request, raw),
323
+ operation_id: string(raw.operation_id, 'operation_id'),
324
+ operation: string(raw.operation, 'operation'),
325
+ ...(raw.expected_revision === undefined ? {} : { expected_revision: string(raw.expected_revision, 'expected_revision') }),
326
+ ...(raw.data === undefined ? {} : { data: raw.data }),
327
+ };
328
+ }
329
+ export function eventBody(value) {
330
+ const raw = shape(value, 'body', ['source_id', 'data', 'expires_at']);
331
+ if (!('data' in raw))
332
+ fail('invalid_request', 'data is required.');
333
+ return {
334
+ source_id: string(raw.source_id, 'source_id'),
335
+ data: raw.data,
336
+ ...(raw.expires_at === undefined ? {} : { expires_at: string(raw.expires_at, 'expires_at') }),
337
+ };
338
+ }
339
+ export function respond(value, status = 200) {
340
+ return new Response(JSON.stringify(value ?? null), {
341
+ status,
342
+ headers: { 'content-type': 'application/json', 'cache-control': 'no-store' },
343
+ });
344
+ }
345
+ export function expect(request, allowed) {
346
+ if (request.method !== allowed)
347
+ fail('not_found', `This endpoint does not accept ${request.method}.`);
348
+ }
349
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/routes/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type RouteRequest } from './shared.ts';
2
+ /**
3
+ * Threads and everything one thread holds: its record, memberships, entries, obligations,
4
+ * snapshots and event stream. The owner stores the thread, so every route here reads or
5
+ * answers for that owner through the caller's credential.
6
+ */
7
+ export declare function threadRoutes(deps: RouteRequest): Promise<Response | undefined>;
8
+ //# sourceMappingURL=threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AASrB;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAmGpF"}
@@ -0,0 +1,113 @@
1
+ import { fail } from "../core.js";
2
+ import { eventStream } from "../stream.js";
3
+ import { expect, headerMutation, json, memberPatch, messageQuery, mutation, pageOptions, respond, sendRequest, shape, string, } from "./shared.js";
4
+ /** Message admission at the reply-authority route: the receiver owns the landing. */
5
+ async function replyAuthority(deps) {
6
+ const { request, messages, auth, rawBody, limit } = deps;
7
+ expect(request, 'POST');
8
+ return respond(await messages.admit(auth, sendRequest(request, await json(request, limit, rawBody), undefined)), 201);
9
+ }
10
+ /**
11
+ * Threads and everything one thread holds: its record, memberships, entries, obligations,
12
+ * snapshots and event stream. The owner stores the thread, so every route here reads or
13
+ * answers for that owner through the caller's credential.
14
+ */
15
+ export async function threadRoutes(deps) {
16
+ const { request, path, params, ctx, threads, messages, keys, trust, auth, rawBody, limit } = deps;
17
+ if (path.length === 1 && path[0] === 'messages')
18
+ return replyAuthority(deps);
19
+ if (path.length === 1 && path[0] === 'threads') {
20
+ if (request.method === 'GET') {
21
+ const joined = params.get('joined');
22
+ if (joined !== null) {
23
+ if (joined !== '1')
24
+ fail('invalid_request', 'joined takes the value 1.');
25
+ return respond(await threads.joined(auth, pageOptions(params)));
26
+ }
27
+ return respond(await threads.list(auth, pageOptions(params)));
28
+ }
29
+ if (request.method === 'POST') {
30
+ const raw = shape(await json(request, limit, rawBody), 'body', ['idempotency_key', 'retry_until', 'title', 'id', 'default']);
31
+ if (raw.default !== undefined && typeof raw.default !== 'boolean')
32
+ fail('invalid_request', 'default must be a boolean.');
33
+ const id = raw.id === undefined ? undefined : string(raw.id, 'id');
34
+ const created = await threads.create(auth, {
35
+ ...mutation(request, raw),
36
+ title: string(raw.title, 'title'),
37
+ ...(id === undefined ? {} : { id }),
38
+ ...(raw.default === undefined ? {} : { default: raw.default }),
39
+ });
40
+ return respond(created, 201);
41
+ }
42
+ fail('not_found', 'Unknown route.');
43
+ }
44
+ if (path.length >= 3 && path[0] === 'threads') {
45
+ const ref = { owner: path[1], id: path[2] };
46
+ const tail = path[3];
47
+ if (tail === undefined) {
48
+ expect(request, 'GET');
49
+ return respond(await threads.describe(auth, ref));
50
+ }
51
+ if (tail === 'close') {
52
+ if (path.length !== 4)
53
+ fail('not_found', 'Unknown route.');
54
+ expect(request, 'POST');
55
+ const raw = shape(await json(request, limit, rawBody), 'body', ['idempotency_key', 'retry_until']);
56
+ return respond(await threads.close(auth, ref, mutation(request, raw)));
57
+ }
58
+ if (tail === 'memberships') {
59
+ if (path.length === 4) {
60
+ if (request.method === 'GET')
61
+ return respond(await threads.members(auth, ref, pageOptions(params)));
62
+ if (request.method === 'POST') {
63
+ const raw = shape(await json(request, limit, rawBody), 'body', ['idempotency_key', 'retry_until', 'peer', 'state', 'access', 'read_scope']);
64
+ return respond(await threads.member(auth, ref, string(raw.peer, 'peer'), memberPatch(raw, 'body'), mutation(request, raw)), 201);
65
+ }
66
+ fail('not_found', 'Unknown route.');
67
+ }
68
+ if (path.length === 5) {
69
+ expect(request, 'DELETE');
70
+ const peer = path[4] === 'self' ? auth.actor : path[4];
71
+ return respond(await threads.member(auth, ref, peer, { state: 'revoked' }, headerMutation(request)));
72
+ }
73
+ fail('not_found', 'Unknown route.');
74
+ }
75
+ if (tail === 'messages') {
76
+ if (path.length !== 4)
77
+ fail('not_found', 'Unknown route.');
78
+ if (request.method === 'GET')
79
+ return respond(await messages.list(auth, ref, messageQuery(params)));
80
+ if (request.method === 'POST')
81
+ return respond(await messages.admit(auth, sendRequest(request, await json(request, limit, rawBody), ref)), 201);
82
+ fail('not_found', 'Unknown route.');
83
+ }
84
+ if (tail === 'snapshot') {
85
+ if (path.length !== 4)
86
+ fail('not_found', 'Unknown route.');
87
+ expect(request, 'GET');
88
+ return respond(await messages.snapshot(auth, ref));
89
+ }
90
+ if (tail === 'attention') {
91
+ if (path.length === 4) {
92
+ expect(request, 'GET');
93
+ return respond(await messages.attention(auth, ref, pageOptions(params)));
94
+ }
95
+ if (path.length === 6 && path[5] === 'ack') {
96
+ expect(request, 'POST');
97
+ const raw = shape(await json(request, limit, rawBody), 'body', ['idempotency_key', 'retry_until']);
98
+ return respond(await messages.ack(auth, ref, path[4], mutation(request, raw)));
99
+ }
100
+ fail('not_found', 'Unknown route.');
101
+ }
102
+ if (tail === 'events') {
103
+ if (path.length !== 4)
104
+ fail('not_found', 'Unknown route.');
105
+ expect(request, 'GET');
106
+ // Awaited so an unauthorized or expired resume answers with a status, not a dead stream.
107
+ return await eventStream({ ctx, messages, keys, trust }, request, auth, ref);
108
+ }
109
+ fail('not_found', 'Unknown route.');
110
+ }
111
+ return undefined;
112
+ }
113
+ //# sourceMappingURL=threads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type RouteRequest } from './shared.ts';
2
+ /** The execution-context directory and the RFC 0017 trust transcript, both owner-scoped. */
3
+ export declare function trustRoutes(deps: RouteRequest): Promise<Response | undefined>;
4
+ //# sourceMappingURL=trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/routes/trust.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtF,4FAA4F;AAC5F,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAiCnF"}
@@ -0,0 +1,36 @@
1
+ import { fail } from "../core.js";
2
+ import { expect, json, respond, shape, string } from "./shared.js";
3
+ /** The execution-context directory and the RFC 0017 trust transcript, both owner-scoped. */
4
+ export async function trustRoutes(deps) {
5
+ const { request, path, ctx, trust, auth, rawBody, limit } = deps;
6
+ if (path.length === 1 && path[0] === 'contexts') {
7
+ expect(request, 'GET');
8
+ const contexts = ctx.options.plugins.executionContexts;
9
+ if (contexts === undefined)
10
+ fail('unsupported_delivery', 'The host provides no execution context directory.');
11
+ return respond(await contexts());
12
+ }
13
+ if (path.length >= 1 && path[0] === 'trust' && trust !== undefined) {
14
+ if (path.length === 1) {
15
+ expect(request, 'GET');
16
+ return respond(await trust.list(auth));
17
+ }
18
+ if (path.length === 2 && path[1] === 'requests') {
19
+ expect(request, 'POST');
20
+ const raw = shape(await json(request, limit, rawBody), 'body', ['node_id', 'fingerprint']);
21
+ return respond(await trust.request(auth, string(raw.node_id, 'node_id'), string(raw.fingerprint, 'fingerprint')), 201);
22
+ }
23
+ if (path.length === 2 && path[1] === 'rotate') {
24
+ expect(request, 'POST');
25
+ return respond(await trust.rotate(auth));
26
+ }
27
+ if (path.length === 3 && path[1] === 'revoke') {
28
+ expect(request, 'POST');
29
+ await trust.revoke(auth, path[2]);
30
+ return respond({ node_id: path[2], state: 'revoked' });
31
+ }
32
+ fail('not_found', 'Unknown route.');
33
+ }
34
+ return undefined;
35
+ }
36
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/routes/trust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AAEtF,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEjE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QAChD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACvD,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,sBAAsB,EAAE,mDAAmD,CAAC,CAAC;QAC9G,OAAO,OAAO,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;YAC3F,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;YACnC,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Context } from './core.ts';
2
+ import type { Auth, ThreadRef } from './types.ts';
3
+ import type { MessageService } from './messages.ts';
4
+ import type { KeyService, TrustService } from './keys.ts';
5
+ export interface StreamDeps {
6
+ ctx: Context;
7
+ messages: MessageService;
8
+ keys?: KeyService;
9
+ trust?: TrustService;
10
+ }
11
+ /**
12
+ * Polls the event page on a timer and writes SSE frames. Every frame carries its own `id:`: a
13
+ * cursor bound to this node, actor, ThreadRef and query scope, positioned after the event the
14
+ * frame delivered. A frame that reused one page cursor would replay the whole page on resume.
15
+ * The resume value is validated against that same scope before the response exists, the first
16
+ * page is fetched up front so a lost credential or expired cursor answers with an HTTP error
17
+ * instead of a 200 stream, and every later page re-checks the credential.
18
+ */
19
+ export declare function eventStream({ ctx, messages, keys, trust }: StreamDeps, request: Request, auth: Auth, ref: ThreadRef): Promise<Response>;
20
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAS,SAAS,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAc1D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyG7I"}