@tearleads/client-sdk 0.1.69 → 0.1.72
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/data/shared/userTiming.js +42 -0
- package/data/shared/userTiming.js.map +1 -0
- package/data/sqlite/sqlExec.js +27 -3
- package/data/sqlite/sqlExec.js.map +1 -1
- package/data/sync/coordinatorLaneRun.js +29 -6
- package/data/sync/coordinatorLaneRun.js.map +1 -1
- package/data/sync/coordinatorState.d.ts +3 -1
- package/data/sync/coordinatorState.js +1 -0
- package/data/sync/coordinatorState.js.map +1 -1
- package/data/sync/syncTelemetry.d.ts +15 -0
- package/data/sync/syncTelemetry.js +10 -0
- package/data/sync/syncTelemetry.js.map +1 -1
- package/data/sync/uploadLane.js +20 -3
- package/data/sync/uploadLane.js.map +1 -1
- package/internal/api-client/ApiClient.d.ts +73 -3
- package/internal/api-client/apiRequestMetrics.d.ts +18 -4
- package/internal/api-client/apiRequestMetrics.js +55 -5
- package/internal/api-client/apiRequestMetrics.js.map +1 -1
- package/internal/api-client/durationSampleWindow.d.ts +26 -0
- package/internal/api-client/durationSampleWindow.js +42 -0
- package/internal/api-client/durationSampleWindow.js.map +1 -0
- package/internal/api-client/measureApiRequest.js +9 -4
- package/internal/api-client/measureApiRequest.js.map +1 -1
- package/internal/api-client/serverTiming.d.ts +12 -0
- package/internal/api-client/serverTiming.js +49 -0
- package/internal/api-client/serverTiming.js.map +1 -0
- package/internal/validators/documentCreateSeedRefinements.js +9 -0
- package/internal/validators/documentCreateSeedRefinements.js.map +1 -0
- package/internal/validators/operation/auth.d.ts +120 -0
- package/internal/validators/operation/containerMutations.d.ts +355 -0
- package/internal/validators/operation/containerMutations.js +7 -1
- package/internal/validators/operation/containerMutations.js.map +1 -1
- package/internal/validators/operation/documentMutations.d.ts +356 -0
- package/internal/validators/operation/documentMutations.js +6 -1
- package/internal/validators/operation/documentMutations.js.map +1 -1
- package/internal/validators/operation/documentSync.d.ts +9 -9
- package/internal/validators/operation/organizations.d.ts +120 -0
- package/internal/validators/request/containerMetadata.d.ts +313 -0
- package/internal/validators/request/containerMetadata.js +20 -3
- package/internal/validators/request/containerMetadata.js.map +1 -1
- package/internal/validators/request/document.d.ts +571 -0
- package/internal/validators/request/document.js +19 -1
- package/internal/validators/request/document.js.map +1 -1
- package/internal/validators/request/documentCreateSeed.js +35 -0
- package/internal/validators/request/documentCreateSeed.js.map +1 -0
- package/internal/validators/request/organizationProvisioning.js +9 -22
- package/internal/validators/request/organizationProvisioning.js.map +1 -1
- package/internal/validators/response/containerMetadata.d.ts +20 -0
- package/internal/validators/response/documentMutation.d.ts +43 -0
- package/internal/validators/response/documentMutation.js +12 -1
- package/internal/validators/response/documentMutation.js.map +1 -1
- package/internal/validators/response/documentSyncSchema.d.ts +13 -9
- package/internal/validators/response/documentSyncSchema.js +23 -18
- package/internal/validators/response/documentSyncSchema.js.map +1 -1
- package/internal/validators/response/index.d.ts +1 -1
- package/internal/validators/response/index.js.map +1 -1
- package/internal/validators/response/organizationProvisioning.d.ts +350 -0
- package/internal/validators/response/registration.d.ts +120 -0
- package/package.json +1 -1
- package/stores/container-contents/containerState/containerStatePersistence.js +2 -0
- package/stores/container-contents/containerState/containerStatePersistence.js.map +1 -1
- package/stores/container-contents/remoteEvents/remoteEventSync.js +1 -1
- package/stores/container-contents/remoteEvents/remoteEventSync.js.map +1 -1
- package/stores/container-contents/state.js +2 -0
- package/stores/container-contents/state.js.map +1 -1
- package/stores/container-contents/syncAgent/syncAgentTypes.d.ts +5 -0
- package/stores/container-contents/syncAgent/syncAgentTypes.js.map +1 -1
- package/stores/documents/documentStore/sync/createdDocumentPersistence.js +71 -0
- package/stores/documents/documentStore/sync/createdDocumentPersistence.js.map +1 -0
- package/stores/documents/documentStore/sync/index.js +13 -2
- package/stores/documents/documentStore/sync/index.js.map +1 -1
- package/stores/documents/documentStore/sync/syncRemoteSignals.js +21 -3
- package/stores/documents/documentStore/sync/syncRemoteSignals.js.map +1 -1
- package/stores/documents/documentStore/sync/syncSeededCreate.js +50 -0
- package/stores/documents/documentStore/sync/syncSeededCreate.js.map +1 -0
- package/stores/documents/documentStore/sync/syncShared.js +16 -8
- package/stores/documents/documentStore/sync/syncShared.js.map +1 -1
- package/workflows/container-contents/container-state/create/createIntentSeed.js +60 -0
- package/workflows/container-contents/container-state/create/createIntentSeed.js.map +1 -0
- package/workflows/container-contents/container-state/create/createIntentSync.js +18 -19
- package/workflows/container-contents/container-state/create/createIntentSync.js.map +1 -1
- package/workflows/container-contents/container-state/create/createWithMetadata.js +43 -6
- package/workflows/container-contents/container-state/create/createWithMetadata.js.map +1 -1
- package/workflows/container-contents/container-state/create/createWithMetadataPlan.js +5 -1
- package/workflows/container-contents/container-state/create/createWithMetadataPlan.js.map +1 -1
- package/workflows/container-contents/container-state/remote.js +15 -0
- package/workflows/container-contents/container-state/remote.js.map +1 -1
- package/workflows/container-contents/container-state/types.js.map +1 -1
- package/workflows/container-contents/metadata/metadataEvents.d.ts +7 -1
- package/workflows/container-contents/metadata/metadataEvents.js +8 -2
- package/workflows/container-contents/metadata/metadataEvents.js.map +1 -1
- package/workflows/container-contents/remoteHydration/types.d.ts +3 -0
- package/workflows/container-contents/remoteHydration/types.js.map +1 -1
- package/workflows/documents/create/index.d.ts +7 -0
- package/workflows/documents/create/index.js +40 -2
- package/workflows/documents/create/index.js.map +1 -1
- package/workflows/documents/index.d.ts +1 -0
- package/workflows/documents/index.js +1 -0
- package/workflows/documents/index.js.map +1 -1
- package/workflows/documents/sync/initialSync.d.ts +39 -0
- package/workflows/documents/sync/initialSync.js +39 -6
- package/workflows/documents/sync/initialSync.js.map +1 -1
|
@@ -145,6 +145,269 @@ export declare const documentCreateRequestShape: {
|
|
|
145
145
|
manifestHash: string;
|
|
146
146
|
}[]>>;
|
|
147
147
|
};
|
|
148
|
+
/** A document create with no seed: a container's metadata document. */
|
|
149
|
+
export declare const DocumentCreateBaseRequestSchema: z.ZodType<{
|
|
150
|
+
body: unknown;
|
|
151
|
+
contentKeyBundle: {
|
|
152
|
+
contentKeyEpoch: number;
|
|
153
|
+
linkSetManifestHash: string;
|
|
154
|
+
targetHash: string;
|
|
155
|
+
targets: {
|
|
156
|
+
containerId: string;
|
|
157
|
+
containerKeyEpoch: number;
|
|
158
|
+
containerKeyEpochId: string;
|
|
159
|
+
containerManifestHash: string;
|
|
160
|
+
wrappedKey: string;
|
|
161
|
+
wrappingMetadata: Record<string, unknown>;
|
|
162
|
+
}[];
|
|
163
|
+
};
|
|
164
|
+
event: Record<string, unknown>;
|
|
165
|
+
expectedManifestHash: string;
|
|
166
|
+
manifest: Record<string, unknown>;
|
|
167
|
+
authorizingContainerPathRefs?: {
|
|
168
|
+
containerId: string;
|
|
169
|
+
manifestHash: string;
|
|
170
|
+
}[][] | undefined;
|
|
171
|
+
containerRekeys?: {
|
|
172
|
+
body: unknown;
|
|
173
|
+
event: Record<string, unknown>;
|
|
174
|
+
expectedManifestHash: string;
|
|
175
|
+
keyEpoch: Record<string, unknown>;
|
|
176
|
+
keyring: Record<string, unknown> | null;
|
|
177
|
+
manifest: Record<string, unknown>;
|
|
178
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
179
|
+
principalPolicyRefs: {
|
|
180
|
+
principalType: "group" | "organization";
|
|
181
|
+
principalId: string;
|
|
182
|
+
version: number;
|
|
183
|
+
stateHash: string;
|
|
184
|
+
}[];
|
|
185
|
+
wraps: Record<string, unknown>[];
|
|
186
|
+
containerManifestHistoryRefs?: {
|
|
187
|
+
containerId: string;
|
|
188
|
+
manifestHash: string;
|
|
189
|
+
}[] | undefined;
|
|
190
|
+
destinationParentContainerPathRefs?: {
|
|
191
|
+
containerId: string;
|
|
192
|
+
manifestHash: string;
|
|
193
|
+
}[] | undefined;
|
|
194
|
+
parentContainerPathRefs?: {
|
|
195
|
+
containerId: string;
|
|
196
|
+
manifestHash: string;
|
|
197
|
+
}[] | undefined;
|
|
198
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
199
|
+
previousContainerPathRefs?: {
|
|
200
|
+
containerId: string;
|
|
201
|
+
manifestHash: string;
|
|
202
|
+
}[] | undefined;
|
|
203
|
+
previousManifestRef?: {
|
|
204
|
+
containerId: string;
|
|
205
|
+
manifestHash: string;
|
|
206
|
+
} | null | undefined;
|
|
207
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
208
|
+
}[] | undefined;
|
|
209
|
+
targetContainerPathRefs?: {
|
|
210
|
+
containerId: string;
|
|
211
|
+
manifestHash: string;
|
|
212
|
+
}[] | undefined;
|
|
213
|
+
}, {
|
|
214
|
+
body: unknown;
|
|
215
|
+
contentKeyBundle: {
|
|
216
|
+
contentKeyEpoch: number;
|
|
217
|
+
linkSetManifestHash: string;
|
|
218
|
+
targetHash: string;
|
|
219
|
+
targets: {
|
|
220
|
+
containerId: string;
|
|
221
|
+
containerKeyEpoch: number;
|
|
222
|
+
containerKeyEpochId: string;
|
|
223
|
+
containerManifestHash: string;
|
|
224
|
+
wrappedKey: string;
|
|
225
|
+
wrappingMetadata: Record<string, unknown>;
|
|
226
|
+
}[];
|
|
227
|
+
};
|
|
228
|
+
event: Record<string, unknown>;
|
|
229
|
+
expectedManifestHash: string;
|
|
230
|
+
manifest: Record<string, unknown>;
|
|
231
|
+
authorizingContainerPathRefs?: {
|
|
232
|
+
containerId: string;
|
|
233
|
+
manifestHash: string;
|
|
234
|
+
}[][] | undefined;
|
|
235
|
+
containerRekeys?: {
|
|
236
|
+
body: unknown;
|
|
237
|
+
event: Record<string, unknown>;
|
|
238
|
+
expectedManifestHash: string;
|
|
239
|
+
keyEpoch: Record<string, unknown>;
|
|
240
|
+
keyring: Record<string, unknown> | null;
|
|
241
|
+
manifest: Record<string, unknown>;
|
|
242
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
243
|
+
principalPolicyRefs: {
|
|
244
|
+
principalType: "group" | "organization";
|
|
245
|
+
principalId: string;
|
|
246
|
+
version: number;
|
|
247
|
+
stateHash: string;
|
|
248
|
+
}[];
|
|
249
|
+
wraps: Record<string, unknown>[];
|
|
250
|
+
containerManifestHistoryRefs?: {
|
|
251
|
+
containerId: string;
|
|
252
|
+
manifestHash: string;
|
|
253
|
+
}[] | undefined;
|
|
254
|
+
destinationParentContainerPathRefs?: {
|
|
255
|
+
containerId: string;
|
|
256
|
+
manifestHash: string;
|
|
257
|
+
}[] | undefined;
|
|
258
|
+
parentContainerPathRefs?: {
|
|
259
|
+
containerId: string;
|
|
260
|
+
manifestHash: string;
|
|
261
|
+
}[] | undefined;
|
|
262
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
263
|
+
previousContainerPathRefs?: {
|
|
264
|
+
containerId: string;
|
|
265
|
+
manifestHash: string;
|
|
266
|
+
}[] | undefined;
|
|
267
|
+
previousManifestRef?: {
|
|
268
|
+
containerId: string;
|
|
269
|
+
manifestHash: string;
|
|
270
|
+
} | null | undefined;
|
|
271
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
272
|
+
}[] | undefined;
|
|
273
|
+
targetContainerPathRefs?: {
|
|
274
|
+
containerId: string;
|
|
275
|
+
manifestHash: string;
|
|
276
|
+
}[] | undefined;
|
|
277
|
+
}, z.core.$ZodTypeInternals<{
|
|
278
|
+
body: unknown;
|
|
279
|
+
contentKeyBundle: {
|
|
280
|
+
contentKeyEpoch: number;
|
|
281
|
+
linkSetManifestHash: string;
|
|
282
|
+
targetHash: string;
|
|
283
|
+
targets: {
|
|
284
|
+
containerId: string;
|
|
285
|
+
containerKeyEpoch: number;
|
|
286
|
+
containerKeyEpochId: string;
|
|
287
|
+
containerManifestHash: string;
|
|
288
|
+
wrappedKey: string;
|
|
289
|
+
wrappingMetadata: Record<string, unknown>;
|
|
290
|
+
}[];
|
|
291
|
+
};
|
|
292
|
+
event: Record<string, unknown>;
|
|
293
|
+
expectedManifestHash: string;
|
|
294
|
+
manifest: Record<string, unknown>;
|
|
295
|
+
authorizingContainerPathRefs?: {
|
|
296
|
+
containerId: string;
|
|
297
|
+
manifestHash: string;
|
|
298
|
+
}[][] | undefined;
|
|
299
|
+
containerRekeys?: {
|
|
300
|
+
body: unknown;
|
|
301
|
+
event: Record<string, unknown>;
|
|
302
|
+
expectedManifestHash: string;
|
|
303
|
+
keyEpoch: Record<string, unknown>;
|
|
304
|
+
keyring: Record<string, unknown> | null;
|
|
305
|
+
manifest: Record<string, unknown>;
|
|
306
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
307
|
+
principalPolicyRefs: {
|
|
308
|
+
principalType: "group" | "organization";
|
|
309
|
+
principalId: string;
|
|
310
|
+
version: number;
|
|
311
|
+
stateHash: string;
|
|
312
|
+
}[];
|
|
313
|
+
wraps: Record<string, unknown>[];
|
|
314
|
+
containerManifestHistoryRefs?: {
|
|
315
|
+
containerId: string;
|
|
316
|
+
manifestHash: string;
|
|
317
|
+
}[] | undefined;
|
|
318
|
+
destinationParentContainerPathRefs?: {
|
|
319
|
+
containerId: string;
|
|
320
|
+
manifestHash: string;
|
|
321
|
+
}[] | undefined;
|
|
322
|
+
parentContainerPathRefs?: {
|
|
323
|
+
containerId: string;
|
|
324
|
+
manifestHash: string;
|
|
325
|
+
}[] | undefined;
|
|
326
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
327
|
+
previousContainerPathRefs?: {
|
|
328
|
+
containerId: string;
|
|
329
|
+
manifestHash: string;
|
|
330
|
+
}[] | undefined;
|
|
331
|
+
previousManifestRef?: {
|
|
332
|
+
containerId: string;
|
|
333
|
+
manifestHash: string;
|
|
334
|
+
} | null | undefined;
|
|
335
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
336
|
+
}[] | undefined;
|
|
337
|
+
targetContainerPathRefs?: {
|
|
338
|
+
containerId: string;
|
|
339
|
+
manifestHash: string;
|
|
340
|
+
}[] | undefined;
|
|
341
|
+
}, {
|
|
342
|
+
body: unknown;
|
|
343
|
+
contentKeyBundle: {
|
|
344
|
+
contentKeyEpoch: number;
|
|
345
|
+
linkSetManifestHash: string;
|
|
346
|
+
targetHash: string;
|
|
347
|
+
targets: {
|
|
348
|
+
containerId: string;
|
|
349
|
+
containerKeyEpoch: number;
|
|
350
|
+
containerKeyEpochId: string;
|
|
351
|
+
containerManifestHash: string;
|
|
352
|
+
wrappedKey: string;
|
|
353
|
+
wrappingMetadata: Record<string, unknown>;
|
|
354
|
+
}[];
|
|
355
|
+
};
|
|
356
|
+
event: Record<string, unknown>;
|
|
357
|
+
expectedManifestHash: string;
|
|
358
|
+
manifest: Record<string, unknown>;
|
|
359
|
+
authorizingContainerPathRefs?: {
|
|
360
|
+
containerId: string;
|
|
361
|
+
manifestHash: string;
|
|
362
|
+
}[][] | undefined;
|
|
363
|
+
containerRekeys?: {
|
|
364
|
+
body: unknown;
|
|
365
|
+
event: Record<string, unknown>;
|
|
366
|
+
expectedManifestHash: string;
|
|
367
|
+
keyEpoch: Record<string, unknown>;
|
|
368
|
+
keyring: Record<string, unknown> | null;
|
|
369
|
+
manifest: Record<string, unknown>;
|
|
370
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
371
|
+
principalPolicyRefs: {
|
|
372
|
+
principalType: "group" | "organization";
|
|
373
|
+
principalId: string;
|
|
374
|
+
version: number;
|
|
375
|
+
stateHash: string;
|
|
376
|
+
}[];
|
|
377
|
+
wraps: Record<string, unknown>[];
|
|
378
|
+
containerManifestHistoryRefs?: {
|
|
379
|
+
containerId: string;
|
|
380
|
+
manifestHash: string;
|
|
381
|
+
}[] | undefined;
|
|
382
|
+
destinationParentContainerPathRefs?: {
|
|
383
|
+
containerId: string;
|
|
384
|
+
manifestHash: string;
|
|
385
|
+
}[] | undefined;
|
|
386
|
+
parentContainerPathRefs?: {
|
|
387
|
+
containerId: string;
|
|
388
|
+
manifestHash: string;
|
|
389
|
+
}[] | undefined;
|
|
390
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
391
|
+
previousContainerPathRefs?: {
|
|
392
|
+
containerId: string;
|
|
393
|
+
manifestHash: string;
|
|
394
|
+
}[] | undefined;
|
|
395
|
+
previousManifestRef?: {
|
|
396
|
+
containerId: string;
|
|
397
|
+
manifestHash: string;
|
|
398
|
+
} | null | undefined;
|
|
399
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
400
|
+
}[] | undefined;
|
|
401
|
+
targetContainerPathRefs?: {
|
|
402
|
+
containerId: string;
|
|
403
|
+
manifestHash: string;
|
|
404
|
+
}[] | undefined;
|
|
405
|
+
}>>;
|
|
406
|
+
/**
|
|
407
|
+
* `POST /documents`. The optional seed is the create's first queued update,
|
|
408
|
+
* committed in the create transaction under the same checks as a standalone
|
|
409
|
+
* sync, so a new document needs no follow-up sync round trip.
|
|
410
|
+
*/
|
|
148
411
|
export declare const DocumentCreateRequestSchema: z.ZodType<{
|
|
149
412
|
body: unknown;
|
|
150
413
|
contentKeyBundle: {
|
|
@@ -163,6 +426,83 @@ export declare const DocumentCreateRequestSchema: z.ZodType<{
|
|
|
163
426
|
event: Record<string, unknown>;
|
|
164
427
|
expectedManifestHash: string;
|
|
165
428
|
manifest: Record<string, unknown>;
|
|
429
|
+
initialSync?: {
|
|
430
|
+
contentKeyEpoch: number;
|
|
431
|
+
expectedLinkSetManifestHash: string;
|
|
432
|
+
expectedTargetHash: string;
|
|
433
|
+
localVersionVector: string | null;
|
|
434
|
+
outgoingUpdates: {
|
|
435
|
+
encryptedData: string;
|
|
436
|
+
id: string;
|
|
437
|
+
partialEndVersionVector: string;
|
|
438
|
+
partialStartVersionVector: string;
|
|
439
|
+
plaintextHash: string;
|
|
440
|
+
writeHeader: Record<string, unknown>;
|
|
441
|
+
checkpointKind?: "rotate_baseline" | undefined;
|
|
442
|
+
checkpointPayloadKind?: "full_history_snapshot" | undefined;
|
|
443
|
+
sourceVersionVector?: string | undefined;
|
|
444
|
+
}[];
|
|
445
|
+
supportsPullPagination: true;
|
|
446
|
+
authorizingContainerPathRefs?: {
|
|
447
|
+
containerId: string;
|
|
448
|
+
manifestHash: string;
|
|
449
|
+
}[][] | undefined;
|
|
450
|
+
containerRekeys?: {
|
|
451
|
+
body: unknown;
|
|
452
|
+
event: Record<string, unknown>;
|
|
453
|
+
expectedManifestHash: string;
|
|
454
|
+
keyEpoch: Record<string, unknown>;
|
|
455
|
+
keyring: Record<string, unknown> | null;
|
|
456
|
+
manifest: Record<string, unknown>;
|
|
457
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
458
|
+
principalPolicyRefs: {
|
|
459
|
+
principalType: "group" | "organization";
|
|
460
|
+
principalId: string;
|
|
461
|
+
version: number;
|
|
462
|
+
stateHash: string;
|
|
463
|
+
}[];
|
|
464
|
+
wraps: Record<string, unknown>[];
|
|
465
|
+
containerManifestHistoryRefs?: {
|
|
466
|
+
containerId: string;
|
|
467
|
+
manifestHash: string;
|
|
468
|
+
}[] | undefined;
|
|
469
|
+
destinationParentContainerPathRefs?: {
|
|
470
|
+
containerId: string;
|
|
471
|
+
manifestHash: string;
|
|
472
|
+
}[] | undefined;
|
|
473
|
+
parentContainerPathRefs?: {
|
|
474
|
+
containerId: string;
|
|
475
|
+
manifestHash: string;
|
|
476
|
+
}[] | undefined;
|
|
477
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
478
|
+
previousContainerPathRefs?: {
|
|
479
|
+
containerId: string;
|
|
480
|
+
manifestHash: string;
|
|
481
|
+
}[] | undefined;
|
|
482
|
+
previousManifestRef?: {
|
|
483
|
+
containerId: string;
|
|
484
|
+
manifestHash: string;
|
|
485
|
+
} | null | undefined;
|
|
486
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
487
|
+
}[] | undefined;
|
|
488
|
+
contentKeyBundle?: {
|
|
489
|
+
contentKeyEpoch: number;
|
|
490
|
+
linkSetManifestHash: string;
|
|
491
|
+
targetHash: string;
|
|
492
|
+
targets: {
|
|
493
|
+
containerId: string;
|
|
494
|
+
containerKeyEpoch: number;
|
|
495
|
+
containerKeyEpochId: string;
|
|
496
|
+
containerManifestHash: string;
|
|
497
|
+
wrappedKey: string;
|
|
498
|
+
wrappingMetadata: Record<string, unknown>;
|
|
499
|
+
}[];
|
|
500
|
+
} | undefined;
|
|
501
|
+
historyMode?: "raw" | undefined;
|
|
502
|
+
inlineRekeyCommitId?: string | undefined;
|
|
503
|
+
minLsn?: string | undefined;
|
|
504
|
+
pullCursor?: string | undefined;
|
|
505
|
+
} | undefined;
|
|
166
506
|
authorizingContainerPathRefs?: {
|
|
167
507
|
containerId: string;
|
|
168
508
|
manifestHash: string;
|
|
@@ -227,6 +567,83 @@ export declare const DocumentCreateRequestSchema: z.ZodType<{
|
|
|
227
567
|
event: Record<string, unknown>;
|
|
228
568
|
expectedManifestHash: string;
|
|
229
569
|
manifest: Record<string, unknown>;
|
|
570
|
+
initialSync?: {
|
|
571
|
+
contentKeyEpoch: number;
|
|
572
|
+
expectedLinkSetManifestHash: string;
|
|
573
|
+
expectedTargetHash: string;
|
|
574
|
+
localVersionVector: string | null;
|
|
575
|
+
outgoingUpdates: {
|
|
576
|
+
encryptedData: string;
|
|
577
|
+
id: string;
|
|
578
|
+
partialEndVersionVector: string;
|
|
579
|
+
partialStartVersionVector: string;
|
|
580
|
+
plaintextHash: string;
|
|
581
|
+
writeHeader: Record<string, unknown>;
|
|
582
|
+
checkpointKind?: "rotate_baseline" | undefined;
|
|
583
|
+
checkpointPayloadKind?: "full_history_snapshot" | undefined;
|
|
584
|
+
sourceVersionVector?: string | undefined;
|
|
585
|
+
}[];
|
|
586
|
+
supportsPullPagination: true;
|
|
587
|
+
authorizingContainerPathRefs?: {
|
|
588
|
+
containerId: string;
|
|
589
|
+
manifestHash: string;
|
|
590
|
+
}[][] | undefined;
|
|
591
|
+
containerRekeys?: {
|
|
592
|
+
body: unknown;
|
|
593
|
+
event: Record<string, unknown>;
|
|
594
|
+
expectedManifestHash: string;
|
|
595
|
+
keyEpoch: Record<string, unknown>;
|
|
596
|
+
keyring: Record<string, unknown> | null;
|
|
597
|
+
manifest: Record<string, unknown>;
|
|
598
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
599
|
+
principalPolicyRefs: {
|
|
600
|
+
principalType: "group" | "organization";
|
|
601
|
+
principalId: string;
|
|
602
|
+
version: number;
|
|
603
|
+
stateHash: string;
|
|
604
|
+
}[];
|
|
605
|
+
wraps: Record<string, unknown>[];
|
|
606
|
+
containerManifestHistoryRefs?: {
|
|
607
|
+
containerId: string;
|
|
608
|
+
manifestHash: string;
|
|
609
|
+
}[] | undefined;
|
|
610
|
+
destinationParentContainerPathRefs?: {
|
|
611
|
+
containerId: string;
|
|
612
|
+
manifestHash: string;
|
|
613
|
+
}[] | undefined;
|
|
614
|
+
parentContainerPathRefs?: {
|
|
615
|
+
containerId: string;
|
|
616
|
+
manifestHash: string;
|
|
617
|
+
}[] | undefined;
|
|
618
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
619
|
+
previousContainerPathRefs?: {
|
|
620
|
+
containerId: string;
|
|
621
|
+
manifestHash: string;
|
|
622
|
+
}[] | undefined;
|
|
623
|
+
previousManifestRef?: {
|
|
624
|
+
containerId: string;
|
|
625
|
+
manifestHash: string;
|
|
626
|
+
} | null | undefined;
|
|
627
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
628
|
+
}[] | undefined;
|
|
629
|
+
contentKeyBundle?: {
|
|
630
|
+
contentKeyEpoch: number;
|
|
631
|
+
linkSetManifestHash: string;
|
|
632
|
+
targetHash: string;
|
|
633
|
+
targets: {
|
|
634
|
+
containerId: string;
|
|
635
|
+
containerKeyEpoch: number;
|
|
636
|
+
containerKeyEpochId: string;
|
|
637
|
+
containerManifestHash: string;
|
|
638
|
+
wrappedKey: string;
|
|
639
|
+
wrappingMetadata: Record<string, unknown>;
|
|
640
|
+
}[];
|
|
641
|
+
} | undefined;
|
|
642
|
+
historyMode?: "raw" | undefined;
|
|
643
|
+
inlineRekeyCommitId?: string | undefined;
|
|
644
|
+
minLsn?: string | undefined;
|
|
645
|
+
pullCursor?: string | undefined;
|
|
646
|
+
} | undefined;
|
|
230
647
|
authorizingContainerPathRefs?: {
|
|
231
648
|
containerId: string;
|
|
232
649
|
manifestHash: string;
|
|
@@ -291,6 +708,83 @@ export declare const DocumentCreateRequestSchema: z.ZodType<{
|
|
|
291
708
|
event: Record<string, unknown>;
|
|
292
709
|
expectedManifestHash: string;
|
|
293
710
|
manifest: Record<string, unknown>;
|
|
711
|
+
initialSync?: {
|
|
712
|
+
contentKeyEpoch: number;
|
|
713
|
+
expectedLinkSetManifestHash: string;
|
|
714
|
+
expectedTargetHash: string;
|
|
715
|
+
localVersionVector: string | null;
|
|
716
|
+
outgoingUpdates: {
|
|
717
|
+
encryptedData: string;
|
|
718
|
+
id: string;
|
|
719
|
+
partialEndVersionVector: string;
|
|
720
|
+
partialStartVersionVector: string;
|
|
721
|
+
plaintextHash: string;
|
|
722
|
+
writeHeader: Record<string, unknown>;
|
|
723
|
+
checkpointKind?: "rotate_baseline" | undefined;
|
|
724
|
+
checkpointPayloadKind?: "full_history_snapshot" | undefined;
|
|
725
|
+
sourceVersionVector?: string | undefined;
|
|
726
|
+
}[];
|
|
727
|
+
supportsPullPagination: true;
|
|
728
|
+
authorizingContainerPathRefs?: {
|
|
729
|
+
containerId: string;
|
|
730
|
+
manifestHash: string;
|
|
731
|
+
}[][] | undefined;
|
|
732
|
+
containerRekeys?: {
|
|
733
|
+
body: unknown;
|
|
734
|
+
event: Record<string, unknown>;
|
|
735
|
+
expectedManifestHash: string;
|
|
736
|
+
keyEpoch: Record<string, unknown>;
|
|
737
|
+
keyring: Record<string, unknown> | null;
|
|
738
|
+
manifest: Record<string, unknown>;
|
|
739
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
740
|
+
principalPolicyRefs: {
|
|
741
|
+
principalType: "group" | "organization";
|
|
742
|
+
principalId: string;
|
|
743
|
+
version: number;
|
|
744
|
+
stateHash: string;
|
|
745
|
+
}[];
|
|
746
|
+
wraps: Record<string, unknown>[];
|
|
747
|
+
containerManifestHistoryRefs?: {
|
|
748
|
+
containerId: string;
|
|
749
|
+
manifestHash: string;
|
|
750
|
+
}[] | undefined;
|
|
751
|
+
destinationParentContainerPathRefs?: {
|
|
752
|
+
containerId: string;
|
|
753
|
+
manifestHash: string;
|
|
754
|
+
}[] | undefined;
|
|
755
|
+
parentContainerPathRefs?: {
|
|
756
|
+
containerId: string;
|
|
757
|
+
manifestHash: string;
|
|
758
|
+
}[] | undefined;
|
|
759
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
760
|
+
previousContainerPathRefs?: {
|
|
761
|
+
containerId: string;
|
|
762
|
+
manifestHash: string;
|
|
763
|
+
}[] | undefined;
|
|
764
|
+
previousManifestRef?: {
|
|
765
|
+
containerId: string;
|
|
766
|
+
manifestHash: string;
|
|
767
|
+
} | null | undefined;
|
|
768
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
769
|
+
}[] | undefined;
|
|
770
|
+
contentKeyBundle?: {
|
|
771
|
+
contentKeyEpoch: number;
|
|
772
|
+
linkSetManifestHash: string;
|
|
773
|
+
targetHash: string;
|
|
774
|
+
targets: {
|
|
775
|
+
containerId: string;
|
|
776
|
+
containerKeyEpoch: number;
|
|
777
|
+
containerKeyEpochId: string;
|
|
778
|
+
containerManifestHash: string;
|
|
779
|
+
wrappedKey: string;
|
|
780
|
+
wrappingMetadata: Record<string, unknown>;
|
|
781
|
+
}[];
|
|
782
|
+
} | undefined;
|
|
783
|
+
historyMode?: "raw" | undefined;
|
|
784
|
+
inlineRekeyCommitId?: string | undefined;
|
|
785
|
+
minLsn?: string | undefined;
|
|
786
|
+
pullCursor?: string | undefined;
|
|
787
|
+
} | undefined;
|
|
294
788
|
authorizingContainerPathRefs?: {
|
|
295
789
|
containerId: string;
|
|
296
790
|
manifestHash: string;
|
|
@@ -355,6 +849,83 @@ export declare const DocumentCreateRequestSchema: z.ZodType<{
|
|
|
355
849
|
event: Record<string, unknown>;
|
|
356
850
|
expectedManifestHash: string;
|
|
357
851
|
manifest: Record<string, unknown>;
|
|
852
|
+
initialSync?: {
|
|
853
|
+
contentKeyEpoch: number;
|
|
854
|
+
expectedLinkSetManifestHash: string;
|
|
855
|
+
expectedTargetHash: string;
|
|
856
|
+
localVersionVector: string | null;
|
|
857
|
+
outgoingUpdates: {
|
|
858
|
+
encryptedData: string;
|
|
859
|
+
id: string;
|
|
860
|
+
partialEndVersionVector: string;
|
|
861
|
+
partialStartVersionVector: string;
|
|
862
|
+
plaintextHash: string;
|
|
863
|
+
writeHeader: Record<string, unknown>;
|
|
864
|
+
checkpointKind?: "rotate_baseline" | undefined;
|
|
865
|
+
checkpointPayloadKind?: "full_history_snapshot" | undefined;
|
|
866
|
+
sourceVersionVector?: string | undefined;
|
|
867
|
+
}[];
|
|
868
|
+
supportsPullPagination: true;
|
|
869
|
+
authorizingContainerPathRefs?: {
|
|
870
|
+
containerId: string;
|
|
871
|
+
manifestHash: string;
|
|
872
|
+
}[][] | undefined;
|
|
873
|
+
containerRekeys?: {
|
|
874
|
+
body: unknown;
|
|
875
|
+
event: Record<string, unknown>;
|
|
876
|
+
expectedManifestHash: string;
|
|
877
|
+
keyEpoch: Record<string, unknown>;
|
|
878
|
+
keyring: Record<string, unknown> | null;
|
|
879
|
+
manifest: Record<string, unknown>;
|
|
880
|
+
predecessorBridge: Record<string, unknown> | null;
|
|
881
|
+
principalPolicyRefs: {
|
|
882
|
+
principalType: "group" | "organization";
|
|
883
|
+
principalId: string;
|
|
884
|
+
version: number;
|
|
885
|
+
stateHash: string;
|
|
886
|
+
}[];
|
|
887
|
+
wraps: Record<string, unknown>[];
|
|
888
|
+
containerManifestHistoryRefs?: {
|
|
889
|
+
containerId: string;
|
|
890
|
+
manifestHash: string;
|
|
891
|
+
}[] | undefined;
|
|
892
|
+
destinationParentContainerPathRefs?: {
|
|
893
|
+
containerId: string;
|
|
894
|
+
manifestHash: string;
|
|
895
|
+
}[] | undefined;
|
|
896
|
+
parentContainerPathRefs?: {
|
|
897
|
+
containerId: string;
|
|
898
|
+
manifestHash: string;
|
|
899
|
+
}[] | undefined;
|
|
900
|
+
parentKekState?: Record<string, unknown> | null | undefined;
|
|
901
|
+
previousContainerPathRefs?: {
|
|
902
|
+
containerId: string;
|
|
903
|
+
manifestHash: string;
|
|
904
|
+
}[] | undefined;
|
|
905
|
+
previousManifestRef?: {
|
|
906
|
+
containerId: string;
|
|
907
|
+
manifestHash: string;
|
|
908
|
+
} | null | undefined;
|
|
909
|
+
userRecipientKeys?: Record<string, unknown>[] | undefined;
|
|
910
|
+
}[] | undefined;
|
|
911
|
+
contentKeyBundle?: {
|
|
912
|
+
contentKeyEpoch: number;
|
|
913
|
+
linkSetManifestHash: string;
|
|
914
|
+
targetHash: string;
|
|
915
|
+
targets: {
|
|
916
|
+
containerId: string;
|
|
917
|
+
containerKeyEpoch: number;
|
|
918
|
+
containerKeyEpochId: string;
|
|
919
|
+
containerManifestHash: string;
|
|
920
|
+
wrappedKey: string;
|
|
921
|
+
wrappingMetadata: Record<string, unknown>;
|
|
922
|
+
}[];
|
|
923
|
+
} | undefined;
|
|
924
|
+
historyMode?: "raw" | undefined;
|
|
925
|
+
inlineRekeyCommitId?: string | undefined;
|
|
926
|
+
minLsn?: string | undefined;
|
|
927
|
+
pullCursor?: string | undefined;
|
|
928
|
+
} | undefined;
|
|
358
929
|
authorizingContainerPathRefs?: {
|
|
359
930
|
containerId: string;
|
|
360
931
|
manifestHash: string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { documentCreateSeedRefinement } from "../documentCreateSeedRefinements.js";
|
|
1
2
|
import { documentLinkSetPathRefinement } from "../documentSyncRefinements.js";
|
|
2
3
|
import { registerJsonSchemaRuntimeRefinements } from "../jsonSchema.js";
|
|
3
4
|
import { arraySchema, loosePlainObject, nonEmptyStringSchema, plainObjectSchema, requiredUnknownSchema, } from "../schema.js";
|
|
4
5
|
import { MAX_CONTAINER_PATH_LENGTH, MAX_DOCUMENT_SYNC_AUTHORIZATION_PATH_REFS, MAX_DOCUMENT_SYNC_AUTHORIZATION_PATHS, MAX_INLINE_CONTAINER_REKEYS, } from "../util/index.js";
|
|
5
6
|
import { ContainerMutationRequestSchema } from "./container.js";
|
|
7
|
+
import { refineSeedWithinSyncRequestLimit, refineSingleUpdateSeed, } from "./documentCreateSeed.js";
|
|
6
8
|
import { ContainerManifestPathSchema, ContainerManifestRefArrayArraySchema, DocumentContentKeyBundleRequestSchema, DocumentOutgoingUpdateSchema, DocumentSyncRequestSchema, } from "./documentSyncSchema.js";
|
|
7
9
|
export { ContainerManifestRefArrayArraySchema, ContainerManifestRefSchema, DocumentContentKeyBundleRequestSchema, DocumentContentKeyTargetEnvelopeSchema, DocumentOutgoingUpdateSchema, DocumentSyncRequestSchema, } from "./documentSyncSchema.js";
|
|
8
10
|
export const documentCreateRequestShape = {
|
|
@@ -15,7 +17,23 @@ export const documentCreateRequestShape = {
|
|
|
15
17
|
manifest: plainObjectSchema,
|
|
16
18
|
targetContainerPathRefs: ContainerManifestPathSchema.optional(),
|
|
17
19
|
};
|
|
18
|
-
|
|
20
|
+
/** A document create with no seed: a container's metadata document. */
|
|
21
|
+
export const DocumentCreateBaseRequestSchema = loosePlainObject(documentCreateRequestShape);
|
|
22
|
+
/**
|
|
23
|
+
* `POST /documents`. The optional seed is the create's first queued update,
|
|
24
|
+
* committed in the create transaction under the same checks as a standalone
|
|
25
|
+
* sync, so a new document needs no follow-up sync round trip.
|
|
26
|
+
*/
|
|
27
|
+
export const DocumentCreateRequestSchema = registerJsonSchemaRuntimeRefinements(loosePlainObject({
|
|
28
|
+
...documentCreateRequestShape,
|
|
29
|
+
initialSync: DocumentSyncRequestSchema.optional(),
|
|
30
|
+
}).superRefine((value, context) => {
|
|
31
|
+
refineSingleUpdateSeed(value.initialSync, context, {
|
|
32
|
+
message: "document create seed requires one update and no container rekeys",
|
|
33
|
+
path: "initialSync",
|
|
34
|
+
});
|
|
35
|
+
refineSeedWithinSyncRequestLimit(value.initialSync, context, "initialSync");
|
|
36
|
+
}), [documentCreateSeedRefinement]);
|
|
19
37
|
// The prior link-set manifest is the document's current head. The server
|
|
20
38
|
// resolves it from its own store, while the signed event's previous manifest
|
|
21
39
|
// hash pins freshness, so the writer does not echo the bundle back.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["document.ts"],"names":[],"mappings":"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","sourcesContent":["import type { z } from \"zod\";\nimport { documentLinkSetPathRefinement } from \"../documentSyncRefinements\";\nimport { registerJsonSchemaRuntimeRefinements } from \"../jsonSchema\";\nimport {\n arraySchema,\n loosePlainObject,\n nonEmptyStringSchema,\n plainObjectSchema,\n requiredUnknownSchema,\n} from \"../schema\";\nimport {\n MAX_CONTAINER_PATH_LENGTH,\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATH_REFS,\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATHS,\n MAX_INLINE_CONTAINER_REKEYS,\n} from \"../util\";\nimport { ContainerMutationRequestSchema } from \"./container\";\nimport {\n ContainerManifestPathSchema,\n type ContainerManifestRef,\n ContainerManifestRefArrayArraySchema,\n type DocumentContentKeyBundleRequest,\n DocumentContentKeyBundleRequestSchema,\n DocumentOutgoingUpdateSchema,\n type DocumentSyncRequest,\n DocumentSyncRequestSchema,\n} from \"./documentSyncSchema\";\n\nexport {\n type ContainerManifestRef,\n ContainerManifestRefArrayArraySchema,\n ContainerManifestRefSchema,\n type DocumentContentKeyBundleRequest,\n DocumentContentKeyBundleRequestSchema,\n type DocumentContentKeyTargetEnvelope,\n DocumentContentKeyTargetEnvelopeSchema,\n type DocumentOutgoingUpdate,\n DocumentOutgoingUpdateSchema,\n type DocumentSyncRequest,\n DocumentSyncRequestSchema,\n} from \"./documentSyncSchema\";\n\nexport const documentCreateRequestShape = {\n authorizingContainerPathRefs: ContainerManifestRefArrayArraySchema.optional(),\n body: requiredUnknownSchema,\n containerRekeys: arraySchema(\n ContainerMutationRequestSchema,\n MAX_INLINE_CONTAINER_REKEYS,\n ).optional(),\n contentKeyBundle: DocumentContentKeyBundleRequestSchema,\n event: plainObjectSchema,\n expectedManifestHash: nonEmptyStringSchema,\n manifest: plainObjectSchema,\n targetContainerPathRefs: ContainerManifestPathSchema.optional(),\n} satisfies z.ZodRawShape;\n\nexport const DocumentCreateRequestSchema = loosePlainObject(\n documentCreateRequestShape,\n);\n\nexport type DocumentCreateRequest = z.infer<typeof DocumentCreateRequestSchema>;\n\n// The prior link-set manifest is the document's current head. The server\n// resolves it from its own store, while the signed event's previous manifest\n// hash pins freshness, so the writer does not echo the bundle back.\nexport const DocumentLinkSetMutationRequestSchema =\n registerJsonSchemaRuntimeRefinements(\n loosePlainObject({\n authorizingContainerPathRefs: ContainerManifestRefArrayArraySchema,\n body: requiredUnknownSchema,\n containerRekeys: arraySchema(\n ContainerMutationRequestSchema,\n MAX_INLINE_CONTAINER_REKEYS,\n ).optional(),\n contentKeyBundle: DocumentContentKeyBundleRequestSchema,\n event: plainObjectSchema,\n expectedManifestHash: nonEmptyStringSchema,\n manifest: plainObjectSchema,\n rotationBaseline: DocumentOutgoingUpdateSchema.optional(),\n // A container path (root→leaf chain) must carry at least one manifest\n // reference; an empty path authorizes nothing and is never legitimately built.\n targetContainerPathRefs: ContainerManifestPathSchema,\n }).superRefine((request, context) => {\n if (\n !Array.isArray(request.authorizingContainerPathRefs) ||\n !Array.isArray(request.targetContainerPathRefs)\n ) {\n return;\n }\n // The nested schemas have already reported their shape/cardinality\n // errors. Keep this aggregate refinement bounded and never dereference a\n // malformed path after those continuable issues have been replayed.\n if (\n request.authorizingContainerPathRefs.length >\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATHS ||\n request.targetContainerPathRefs.length > MAX_CONTAINER_PATH_LENGTH ||\n request.authorizingContainerPathRefs.some(\n (path) =>\n !Array.isArray(path) || path.length > MAX_CONTAINER_PATH_LENGTH,\n )\n ) {\n return;\n }\n const totalReferences = request.authorizingContainerPathRefs.reduce(\n (total, path) => total + path.length,\n request.targetContainerPathRefs.length,\n );\n if (totalReferences > MAX_DOCUMENT_SYNC_AUTHORIZATION_PATH_REFS) {\n context.addIssue({\n code: \"custom\",\n message: documentLinkSetPathRefinement.description,\n path: [\"authorizingContainerPathRefs\"],\n });\n }\n }),\n [documentLinkSetPathRefinement],\n );\n\nexport type DocumentLinkSetMutationRequest = z.infer<\n typeof DocumentLinkSetMutationRequestSchema\n>;\n\nexport const DocumentPurgeRequestSchema = loosePlainObject({\n authorizingContainerPathRefs: ContainerManifestPathSchema,\n body: requiredUnknownSchema,\n event: plainObjectSchema,\n});\n\nexport type DocumentPurgeRequest = z.infer<typeof DocumentPurgeRequestSchema>;\n\nexport function isContainerManifestRefArrayArray(\n value: unknown,\n): value is ContainerManifestRef[][] {\n return ContainerManifestRefArrayArraySchema.safeParse(value).success;\n}\n\nexport function isDocumentContentKeyBundleRequest(\n value: unknown,\n): value is DocumentContentKeyBundleRequest {\n return DocumentContentKeyBundleRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentCreateRequest(\n value: unknown,\n): value is DocumentCreateRequest {\n return DocumentCreateRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentLinkSetMutationRequest(\n value: unknown,\n): value is DocumentLinkSetMutationRequest {\n return DocumentLinkSetMutationRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentPurgeRequest(\n value: unknown,\n): value is DocumentPurgeRequest {\n return DocumentPurgeRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentSyncRequest(\n value: unknown,\n): value is DocumentSyncRequest {\n return DocumentSyncRequestSchema.safeParse(value).success;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["document.ts"],"names":[],"mappings":"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","sourcesContent":["import type { z } from \"zod\";\nimport { documentCreateSeedRefinement } from \"../documentCreateSeedRefinements\";\nimport { documentLinkSetPathRefinement } from \"../documentSyncRefinements\";\nimport { registerJsonSchemaRuntimeRefinements } from \"../jsonSchema\";\nimport {\n arraySchema,\n loosePlainObject,\n nonEmptyStringSchema,\n plainObjectSchema,\n requiredUnknownSchema,\n} from \"../schema\";\nimport {\n MAX_CONTAINER_PATH_LENGTH,\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATH_REFS,\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATHS,\n MAX_INLINE_CONTAINER_REKEYS,\n} from \"../util\";\nimport { ContainerMutationRequestSchema } from \"./container\";\nimport {\n refineSeedWithinSyncRequestLimit,\n refineSingleUpdateSeed,\n} from \"./documentCreateSeed\";\nimport {\n ContainerManifestPathSchema,\n type ContainerManifestRef,\n ContainerManifestRefArrayArraySchema,\n type DocumentContentKeyBundleRequest,\n DocumentContentKeyBundleRequestSchema,\n DocumentOutgoingUpdateSchema,\n type DocumentSyncRequest,\n DocumentSyncRequestSchema,\n} from \"./documentSyncSchema\";\n\nexport {\n type ContainerManifestRef,\n ContainerManifestRefArrayArraySchema,\n ContainerManifestRefSchema,\n type DocumentContentKeyBundleRequest,\n DocumentContentKeyBundleRequestSchema,\n type DocumentContentKeyTargetEnvelope,\n DocumentContentKeyTargetEnvelopeSchema,\n type DocumentOutgoingUpdate,\n DocumentOutgoingUpdateSchema,\n type DocumentSyncRequest,\n DocumentSyncRequestSchema,\n} from \"./documentSyncSchema\";\n\nexport const documentCreateRequestShape = {\n authorizingContainerPathRefs: ContainerManifestRefArrayArraySchema.optional(),\n body: requiredUnknownSchema,\n containerRekeys: arraySchema(\n ContainerMutationRequestSchema,\n MAX_INLINE_CONTAINER_REKEYS,\n ).optional(),\n contentKeyBundle: DocumentContentKeyBundleRequestSchema,\n event: plainObjectSchema,\n expectedManifestHash: nonEmptyStringSchema,\n manifest: plainObjectSchema,\n targetContainerPathRefs: ContainerManifestPathSchema.optional(),\n} satisfies z.ZodRawShape;\n\n/** A document create with no seed: a container's metadata document. */\nexport const DocumentCreateBaseRequestSchema = loosePlainObject(\n documentCreateRequestShape,\n);\n\n/**\n * `POST /documents`. The optional seed is the create's first queued update,\n * committed in the create transaction under the same checks as a standalone\n * sync, so a new document needs no follow-up sync round trip.\n */\nexport const DocumentCreateRequestSchema = registerJsonSchemaRuntimeRefinements(\n loosePlainObject({\n ...documentCreateRequestShape,\n initialSync: DocumentSyncRequestSchema.optional(),\n }).superRefine((value, context) => {\n refineSingleUpdateSeed(value.initialSync, context, {\n message:\n \"document create seed requires one update and no container rekeys\",\n path: \"initialSync\",\n });\n refineSeedWithinSyncRequestLimit(value.initialSync, context, \"initialSync\");\n }),\n [documentCreateSeedRefinement],\n);\n\nexport type DocumentCreateRequest = z.infer<typeof DocumentCreateRequestSchema>;\n\n// The prior link-set manifest is the document's current head. The server\n// resolves it from its own store, while the signed event's previous manifest\n// hash pins freshness, so the writer does not echo the bundle back.\nexport const DocumentLinkSetMutationRequestSchema =\n registerJsonSchemaRuntimeRefinements(\n loosePlainObject({\n authorizingContainerPathRefs: ContainerManifestRefArrayArraySchema,\n body: requiredUnknownSchema,\n containerRekeys: arraySchema(\n ContainerMutationRequestSchema,\n MAX_INLINE_CONTAINER_REKEYS,\n ).optional(),\n contentKeyBundle: DocumentContentKeyBundleRequestSchema,\n event: plainObjectSchema,\n expectedManifestHash: nonEmptyStringSchema,\n manifest: plainObjectSchema,\n rotationBaseline: DocumentOutgoingUpdateSchema.optional(),\n // A container path (root→leaf chain) must carry at least one manifest\n // reference; an empty path authorizes nothing and is never legitimately built.\n targetContainerPathRefs: ContainerManifestPathSchema,\n }).superRefine((request, context) => {\n if (\n !Array.isArray(request.authorizingContainerPathRefs) ||\n !Array.isArray(request.targetContainerPathRefs)\n ) {\n return;\n }\n // The nested schemas have already reported their shape/cardinality\n // errors. Keep this aggregate refinement bounded and never dereference a\n // malformed path after those continuable issues have been replayed.\n if (\n request.authorizingContainerPathRefs.length >\n MAX_DOCUMENT_SYNC_AUTHORIZATION_PATHS ||\n request.targetContainerPathRefs.length > MAX_CONTAINER_PATH_LENGTH ||\n request.authorizingContainerPathRefs.some(\n (path) =>\n !Array.isArray(path) || path.length > MAX_CONTAINER_PATH_LENGTH,\n )\n ) {\n return;\n }\n const totalReferences = request.authorizingContainerPathRefs.reduce(\n (total, path) => total + path.length,\n request.targetContainerPathRefs.length,\n );\n if (totalReferences > MAX_DOCUMENT_SYNC_AUTHORIZATION_PATH_REFS) {\n context.addIssue({\n code: \"custom\",\n message: documentLinkSetPathRefinement.description,\n path: [\"authorizingContainerPathRefs\"],\n });\n }\n }),\n [documentLinkSetPathRefinement],\n );\n\nexport type DocumentLinkSetMutationRequest = z.infer<\n typeof DocumentLinkSetMutationRequestSchema\n>;\n\nexport const DocumentPurgeRequestSchema = loosePlainObject({\n authorizingContainerPathRefs: ContainerManifestPathSchema,\n body: requiredUnknownSchema,\n event: plainObjectSchema,\n});\n\nexport type DocumentPurgeRequest = z.infer<typeof DocumentPurgeRequestSchema>;\n\nexport function isContainerManifestRefArrayArray(\n value: unknown,\n): value is ContainerManifestRef[][] {\n return ContainerManifestRefArrayArraySchema.safeParse(value).success;\n}\n\nexport function isDocumentContentKeyBundleRequest(\n value: unknown,\n): value is DocumentContentKeyBundleRequest {\n return DocumentContentKeyBundleRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentCreateRequest(\n value: unknown,\n): value is DocumentCreateRequest {\n return DocumentCreateRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentLinkSetMutationRequest(\n value: unknown,\n): value is DocumentLinkSetMutationRequest {\n return DocumentLinkSetMutationRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentPurgeRequest(\n value: unknown,\n): value is DocumentPurgeRequest {\n return DocumentPurgeRequestSchema.safeParse(value).success;\n}\n\nexport function isDocumentSyncRequest(\n value: unknown,\n): value is DocumentSyncRequest {\n return DocumentSyncRequestSchema.safeParse(value).success;\n}\n"]}
|