@serve.zone/interfaces 27.3.0 → 27.4.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.
@@ -0,0 +1,428 @@
1
+ import * as plugins from './plugins.runtime.js';
2
+ import { canonicalizeStrictJson, deepFreezeValue, } from './private/canonicaljson.js';
3
+ import { corestoreDatabaseBackupRuntimeLimits, encodeCorestoreDatabaseBackupReceipt, normalizeCorestoreDatabaseAllocationReference, normalizeCorestoreDatabaseBackupReceipt, } from './runtime.corestore.js';
4
+ export const corestoreDatabaseExportPackageRuntimeLimits = Object.freeze({
5
+ maximumControlBytes: corestoreDatabaseBackupRuntimeLimits.maximumControlBytes,
6
+ maximumInputBytes: corestoreDatabaseBackupRuntimeLimits.maximumSnapshotOriginalBytes,
7
+ maximumClosureBytes: corestoreDatabaseBackupRuntimeLimits.maximumClosureBytes,
8
+ maximumPackageAttemptIdLength: 128,
9
+ });
10
+ export class CorestoreDatabaseExportPackageCodecError extends Error {
11
+ code;
12
+ path;
13
+ constructor(codeArg, pathArg) {
14
+ super(`${codeArg}:${pathArg}`);
15
+ this.name = 'CorestoreDatabaseExportPackageCodecError';
16
+ this.code = codeArg;
17
+ this.path = pathArg;
18
+ }
19
+ }
20
+ const inputIdentityKeys = [
21
+ 'format',
22
+ 'databaseName',
23
+ 'byteLength',
24
+ 'sha256',
25
+ 'lineFeedTerminator',
26
+ ];
27
+ const approvedBackupIdentityKeys = [
28
+ 'backupId',
29
+ 'sourceServiceId',
30
+ 'snapshotId',
31
+ 'backupReceiptSha256',
32
+ ];
33
+ const requestKeys = [
34
+ 'schemaVersion',
35
+ 'kind',
36
+ 'packageAttemptId',
37
+ 'packageBackupId',
38
+ 'input',
39
+ 'approvedSourceBackup',
40
+ 'completeOutputReceiptSha256',
41
+ 'allocationExpectation',
42
+ ];
43
+ const completionKeys = [
44
+ 'schemaVersion',
45
+ 'kind',
46
+ 'packageAttemptId',
47
+ 'requestSha256',
48
+ 'completedAt',
49
+ 'receipt',
50
+ 'receiptSha256',
51
+ 'closureByteLength',
52
+ 'closureSha256',
53
+ ];
54
+ const responseKeys = ['schemaVersion', 'kind', 'completion', 'replayed'];
55
+ const releaseRequestKeys = [
56
+ 'schemaVersion',
57
+ 'kind',
58
+ 'packageAttemptId',
59
+ 'requestSha256',
60
+ 'completionSha256',
61
+ 'callerFsyncedClosureByteLength',
62
+ 'callerFsyncedClosureSha256',
63
+ 'callerFsyncedReceiptByteLength',
64
+ 'callerFsyncedReceiptSha256',
65
+ 'callerFsyncedAt',
66
+ ];
67
+ const releaseCompletionKeys = [
68
+ 'schemaVersion',
69
+ 'kind',
70
+ 'packageAttemptId',
71
+ 'requestSha256',
72
+ 'completionSha256',
73
+ 'releaseRequestSha256',
74
+ 'releasedAt',
75
+ ];
76
+ const releaseResponseKeys = ['schemaVersion', 'kind', 'release', 'replayed'];
77
+ const identifierPattern = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$/;
78
+ const packageAttemptIdPattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
79
+ const sha256Pattern = /^[a-f0-9]{64}$/;
80
+ const fail = (codeArg, pathArg) => {
81
+ throw new CorestoreDatabaseExportPackageCodecError(codeArg, pathArg);
82
+ };
83
+ const normalizeAllocationReference = (valueArg, pathArg) => {
84
+ try {
85
+ return normalizeCorestoreDatabaseAllocationReference(valueArg);
86
+ }
87
+ catch {
88
+ return fail('INVALID_VALUE', pathArg);
89
+ }
90
+ };
91
+ const normalizeBackupReceipt = (valueArg, pathArg) => {
92
+ try {
93
+ return normalizeCorestoreDatabaseBackupReceipt(valueArg);
94
+ }
95
+ catch {
96
+ return fail('INVALID_VALUE', pathArg);
97
+ }
98
+ };
99
+ const readRecord = (valueArg, pathArg) => {
100
+ if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg)) {
101
+ return fail('INVALID_DATA', pathArg);
102
+ }
103
+ const prototype = Object.getPrototypeOf(valueArg);
104
+ if (prototype !== Object.prototype && prototype !== null) {
105
+ return fail('INVALID_DATA', pathArg);
106
+ }
107
+ const value = valueArg;
108
+ for (const key of Reflect.ownKeys(value)) {
109
+ if (typeof key !== 'string')
110
+ return fail('INVALID_DATA', pathArg);
111
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
112
+ if (!descriptor || !descriptor.enumerable || !Object.hasOwn(descriptor, 'value')) {
113
+ return fail('INVALID_DATA', pathArg);
114
+ }
115
+ }
116
+ return value;
117
+ };
118
+ const assertExactKeys = (valueArg, keysArg, pathArg) => {
119
+ const actual = Object.keys(valueArg).sort();
120
+ const expected = [...keysArg].sort();
121
+ if (actual.length !== expected.length
122
+ || actual.some((keyArg, indexArg) => keyArg !== expected[indexArg])) {
123
+ fail('INVALID_SCHEMA', pathArg);
124
+ }
125
+ };
126
+ const readIdentifier = (valueArg, pathArg) => {
127
+ if (typeof valueArg !== 'string' || !identifierPattern.test(valueArg)) {
128
+ return fail('INVALID_VALUE', pathArg);
129
+ }
130
+ return valueArg;
131
+ };
132
+ const readPackageAttemptId = (valueArg, pathArg) => {
133
+ if (typeof valueArg !== 'string' || !packageAttemptIdPattern.test(valueArg)) {
134
+ return fail('INVALID_VALUE', pathArg);
135
+ }
136
+ return valueArg;
137
+ };
138
+ const readSha256 = (valueArg, pathArg) => {
139
+ if (typeof valueArg !== 'string' || !sha256Pattern.test(valueArg)) {
140
+ return fail('INVALID_VALUE', pathArg);
141
+ }
142
+ return valueArg;
143
+ };
144
+ const readInteger = (valueArg, pathArg, minimumArg, maximumArg = Number.MAX_SAFE_INTEGER) => {
145
+ if (typeof valueArg !== 'number'
146
+ || !Number.isSafeInteger(valueArg)
147
+ || Object.is(valueArg, -0)
148
+ || valueArg < minimumArg
149
+ || valueArg > maximumArg) {
150
+ return fail('INVALID_VALUE', pathArg);
151
+ }
152
+ return valueArg;
153
+ };
154
+ const readBoolean = (valueArg, pathArg) => {
155
+ if (typeof valueArg !== 'boolean')
156
+ return fail('INVALID_VALUE', pathArg);
157
+ return valueArg;
158
+ };
159
+ const canonicalize = (valueArg, pathArg) => canonicalizeStrictJson(valueArg, () => fail('INVALID_DATA', pathArg), pathArg);
160
+ const finalize = (valueArg, pathArg) => {
161
+ const canonical = canonicalize(valueArg, pathArg);
162
+ if (Buffer.byteLength(canonical, 'utf8')
163
+ > corestoreDatabaseExportPackageRuntimeLimits.maximumControlBytes) {
164
+ return fail('LIMIT_EXCEEDED', pathArg);
165
+ }
166
+ return deepFreezeValue(valueArg);
167
+ };
168
+ const encodeNormalized = (valueArg, pathArg) => (Buffer.from(canonicalize(valueArg, pathArg), 'utf8'));
169
+ const digestBytes = (valueArg) => plugins.crypto
170
+ .createHash('sha256')
171
+ .update(new Uint8Array(valueArg))
172
+ .digest('hex');
173
+ const canonicalEqual = (leftArg, rightArg, pathArg) => (canonicalize(leftArg, `${pathArg}.left`) === canonicalize(rightArg, `${pathArg}.right`));
174
+ const normalizeInputIdentityInternal = (valueArg, pathArg) => {
175
+ const value = readRecord(valueArg, pathArg);
176
+ assertExactKeys(value, inputIdentityKeys, pathArg);
177
+ if (value.format !== 'smartdb.database.export.v1'
178
+ || value.lineFeedTerminator !== 'single-lf') {
179
+ fail('INVALID_VALUE', `${pathArg}.format`);
180
+ }
181
+ return {
182
+ format: 'smartdb.database.export.v1',
183
+ databaseName: readIdentifier(value.databaseName, `${pathArg}.databaseName`),
184
+ byteLength: readInteger(value.byteLength, `${pathArg}.byteLength`, 1, corestoreDatabaseExportPackageRuntimeLimits.maximumInputBytes),
185
+ sha256: readSha256(value.sha256, `${pathArg}.sha256`),
186
+ lineFeedTerminator: 'single-lf',
187
+ };
188
+ };
189
+ export const normalizeCorestoreDatabaseExportPackageInputIdentity = (valueArg) => finalize(normalizeInputIdentityInternal(valueArg, 'databaseExportPackageInput'), 'databaseExportPackageInput');
190
+ const normalizeApprovedBackupIdentityInternal = (valueArg, pathArg) => {
191
+ const value = readRecord(valueArg, pathArg);
192
+ assertExactKeys(value, approvedBackupIdentityKeys, pathArg);
193
+ return {
194
+ backupId: readIdentifier(value.backupId, `${pathArg}.backupId`),
195
+ sourceServiceId: readIdentifier(value.sourceServiceId, `${pathArg}.sourceServiceId`),
196
+ snapshotId: readIdentifier(value.snapshotId, `${pathArg}.snapshotId`),
197
+ backupReceiptSha256: readSha256(value.backupReceiptSha256, `${pathArg}.backupReceiptSha256`),
198
+ };
199
+ };
200
+ export const normalizeCorestoreDatabaseExportPackageApprovedBackupIdentity = (valueArg) => finalize(normalizeApprovedBackupIdentityInternal(valueArg, 'databaseExportPackageApprovedBackup'), 'databaseExportPackageApprovedBackup');
201
+ const normalizeAllocationExpectationInternal = (valueArg, pathArg) => {
202
+ const value = readRecord(valueArg, pathArg);
203
+ if (value.expectation === 'absent') {
204
+ assertExactKeys(value, ['expectation'], pathArg);
205
+ return { expectation: 'absent' };
206
+ }
207
+ if (value.expectation !== 'exact') {
208
+ fail('INVALID_VALUE', `${pathArg}.expectation`);
209
+ }
210
+ assertExactKeys(value, ['expectation', 'allocation'], pathArg);
211
+ return {
212
+ expectation: 'exact',
213
+ allocation: normalizeAllocationReference(value.allocation, `${pathArg}.allocation`),
214
+ };
215
+ };
216
+ export const normalizeCorestoreDatabaseExportPackageAllocationExpectation = (valueArg) => finalize(normalizeAllocationExpectationInternal(valueArg, 'databaseExportPackageAllocationExpectation'), 'databaseExportPackageAllocationExpectation');
217
+ export const normalizeCorestoreDatabaseExportPackageRequest = (valueArg) => {
218
+ const value = readRecord(valueArg, 'databaseExportPackageRequest');
219
+ assertExactKeys(value, requestKeys, 'databaseExportPackageRequest');
220
+ if (value.schemaVersion !== 1
221
+ || value.kind !== 'corestore-database-export-package-request') {
222
+ fail('INVALID_VALUE', 'databaseExportPackageRequest.kind');
223
+ }
224
+ return finalize({
225
+ schemaVersion: 1,
226
+ kind: 'corestore-database-export-package-request',
227
+ packageAttemptId: readPackageAttemptId(value.packageAttemptId, 'databaseExportPackageRequest.packageAttemptId'),
228
+ packageBackupId: readIdentifier(value.packageBackupId, 'databaseExportPackageRequest.packageBackupId'),
229
+ input: normalizeInputIdentityInternal(value.input, 'databaseExportPackageRequest.input'),
230
+ approvedSourceBackup: normalizeApprovedBackupIdentityInternal(value.approvedSourceBackup, 'databaseExportPackageRequest.approvedSourceBackup'),
231
+ completeOutputReceiptSha256: readSha256(value.completeOutputReceiptSha256, 'databaseExportPackageRequest.completeOutputReceiptSha256'),
232
+ allocationExpectation: normalizeAllocationExpectationInternal(value.allocationExpectation, 'databaseExportPackageRequest.allocationExpectation'),
233
+ }, 'databaseExportPackageRequest');
234
+ };
235
+ export const encodeCorestoreDatabaseExportPackageRequest = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageRequest(valueArg), 'databaseExportPackageRequest');
236
+ export const computeCorestoreDatabaseExportPackageRequestSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageRequest(valueArg));
237
+ const digestCorestoreDatabaseExportPackageRequest = (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageRequest(valueArg));
238
+ export const classifyCorestoreDatabaseExportPackageRequestReuse = (persistedRequestArg, candidateRequestArg) => {
239
+ const persisted = normalizeCorestoreDatabaseExportPackageRequest(persistedRequestArg);
240
+ const candidate = normalizeCorestoreDatabaseExportPackageRequest(candidateRequestArg);
241
+ if (persisted.packageAttemptId !== candidate.packageAttemptId)
242
+ return 'different-attempt';
243
+ if (!canonicalEqual(persisted, candidate, 'databaseExportPackageRequest.reuse')) {
244
+ fail('ATTEMPT_CONFLICT', 'databaseExportPackageRequest.packageAttemptId');
245
+ }
246
+ return 'exact-replay';
247
+ };
248
+ export const normalizeCorestoreDatabaseExportPackageCompletion = (valueArg) => {
249
+ const value = readRecord(valueArg, 'databaseExportPackageCompletion');
250
+ assertExactKeys(value, completionKeys, 'databaseExportPackageCompletion');
251
+ if (value.schemaVersion !== 1
252
+ || value.kind !== 'corestore-database-export-package-completion') {
253
+ fail('INVALID_VALUE', 'databaseExportPackageCompletion.kind');
254
+ }
255
+ const receipt = normalizeBackupReceipt(value.receipt, 'databaseExportPackageCompletion.receipt');
256
+ const receiptSha256 = readSha256(value.receiptSha256, 'databaseExportPackageCompletion.receiptSha256');
257
+ const closureByteLength = readInteger(value.closureByteLength, 'databaseExportPackageCompletion.closureByteLength', 1, corestoreDatabaseExportPackageRuntimeLimits.maximumClosureBytes);
258
+ const closureSha256 = readSha256(value.closureSha256, 'databaseExportPackageCompletion.closureSha256');
259
+ if (receiptSha256 !== digestBytes(encodeCorestoreDatabaseBackupReceipt(receipt))
260
+ || closureByteLength !== receipt.closure.archiveBytes
261
+ || closureSha256 !== receipt.closure.sha256) {
262
+ fail('CROSS_FIELD_MISMATCH', 'databaseExportPackageCompletion.receipt');
263
+ }
264
+ const completedAt = readInteger(value.completedAt, 'databaseExportPackageCompletion.completedAt', receipt.createdAt);
265
+ return finalize({
266
+ schemaVersion: 1,
267
+ kind: 'corestore-database-export-package-completion',
268
+ packageAttemptId: readPackageAttemptId(value.packageAttemptId, 'databaseExportPackageCompletion.packageAttemptId'),
269
+ requestSha256: readSha256(value.requestSha256, 'databaseExportPackageCompletion.requestSha256'),
270
+ completedAt,
271
+ receipt,
272
+ receiptSha256,
273
+ closureByteLength,
274
+ closureSha256,
275
+ }, 'databaseExportPackageCompletion');
276
+ };
277
+ export const normalizeCorestoreDatabaseExportPackageCompletionForRequest = (completionArg, requestArg) => {
278
+ const request = normalizeCorestoreDatabaseExportPackageRequest(requestArg);
279
+ const completion = normalizeCorestoreDatabaseExportPackageCompletion(completionArg);
280
+ const receiptAllocation = completion.receipt.snapshot.databaseAllocation;
281
+ const allocationMatches = request.allocationExpectation.expectation === 'absent'
282
+ ? receiptAllocation === undefined
283
+ : receiptAllocation !== undefined
284
+ && canonicalEqual(receiptAllocation, request.allocationExpectation.allocation, 'databaseExportPackageCompletion.receipt.snapshot.databaseAllocation');
285
+ if (completion.packageAttemptId !== request.packageAttemptId
286
+ || completion.requestSha256 !== digestCorestoreDatabaseExportPackageRequest(request)
287
+ || completion.receipt.backupId !== request.packageBackupId
288
+ || completion.receipt.sourceServiceId !== request.approvedSourceBackup.sourceServiceId
289
+ || completion.receipt.snapshot.databaseName !== request.input.databaseName
290
+ || completion.receipt.snapshot.originalSize !== request.input.byteLength
291
+ || !allocationMatches) {
292
+ fail('CROSS_FIELD_MISMATCH', 'databaseExportPackageCompletion.request');
293
+ }
294
+ return completion;
295
+ };
296
+ export const encodeCorestoreDatabaseExportPackageCompletion = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageCompletion(valueArg), 'databaseExportPackageCompletion');
297
+ export const computeCorestoreDatabaseExportPackageCompletionSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageCompletion(valueArg));
298
+ const digestCorestoreDatabaseExportPackageCompletion = (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageCompletion(valueArg));
299
+ export const normalizeCorestoreDatabaseExportPackageResponse = (valueArg) => {
300
+ const value = readRecord(valueArg, 'databaseExportPackageResponse');
301
+ assertExactKeys(value, responseKeys, 'databaseExportPackageResponse');
302
+ if (value.schemaVersion !== 1
303
+ || value.kind !== 'corestore-database-export-package-response') {
304
+ fail('INVALID_VALUE', 'databaseExportPackageResponse.kind');
305
+ }
306
+ return finalize({
307
+ schemaVersion: 1,
308
+ kind: 'corestore-database-export-package-response',
309
+ completion: normalizeCorestoreDatabaseExportPackageCompletion(value.completion),
310
+ replayed: readBoolean(value.replayed, 'databaseExportPackageResponse.replayed'),
311
+ }, 'databaseExportPackageResponse');
312
+ };
313
+ export const normalizeCorestoreDatabaseExportPackageResponseForRequest = (responseArg, requestArg) => {
314
+ const response = normalizeCorestoreDatabaseExportPackageResponse(responseArg);
315
+ normalizeCorestoreDatabaseExportPackageCompletionForRequest(response.completion, requestArg);
316
+ return response;
317
+ };
318
+ export const encodeCorestoreDatabaseExportPackageResponse = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageResponse(valueArg), 'databaseExportPackageResponse');
319
+ export const computeCorestoreDatabaseExportPackageResponseSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageResponse(valueArg));
320
+ export const normalizeCorestoreDatabaseExportPackageReleaseRequest = (valueArg) => {
321
+ const value = readRecord(valueArg, 'databaseExportPackageReleaseRequest');
322
+ assertExactKeys(value, releaseRequestKeys, 'databaseExportPackageReleaseRequest');
323
+ if (value.schemaVersion !== 1
324
+ || value.kind !== 'corestore-database-export-package-release-request') {
325
+ fail('INVALID_VALUE', 'databaseExportPackageReleaseRequest.kind');
326
+ }
327
+ return finalize({
328
+ schemaVersion: 1,
329
+ kind: 'corestore-database-export-package-release-request',
330
+ packageAttemptId: readPackageAttemptId(value.packageAttemptId, 'databaseExportPackageReleaseRequest.packageAttemptId'),
331
+ requestSha256: readSha256(value.requestSha256, 'databaseExportPackageReleaseRequest.requestSha256'),
332
+ completionSha256: readSha256(value.completionSha256, 'databaseExportPackageReleaseRequest.completionSha256'),
333
+ callerFsyncedClosureByteLength: readInteger(value.callerFsyncedClosureByteLength, 'databaseExportPackageReleaseRequest.callerFsyncedClosureByteLength', 1, corestoreDatabaseExportPackageRuntimeLimits.maximumClosureBytes),
334
+ callerFsyncedClosureSha256: readSha256(value.callerFsyncedClosureSha256, 'databaseExportPackageReleaseRequest.callerFsyncedClosureSha256'),
335
+ callerFsyncedReceiptByteLength: readInteger(value.callerFsyncedReceiptByteLength, 'databaseExportPackageReleaseRequest.callerFsyncedReceiptByteLength', 1, corestoreDatabaseExportPackageRuntimeLimits.maximumControlBytes),
336
+ callerFsyncedReceiptSha256: readSha256(value.callerFsyncedReceiptSha256, 'databaseExportPackageReleaseRequest.callerFsyncedReceiptSha256'),
337
+ callerFsyncedAt: readInteger(value.callerFsyncedAt, 'databaseExportPackageReleaseRequest.callerFsyncedAt', 1),
338
+ }, 'databaseExportPackageReleaseRequest');
339
+ };
340
+ export const normalizeCorestoreDatabaseExportPackageReleaseRequestForCompletion = (releaseRequestArg, requestArg, completionArg) => {
341
+ const request = normalizeCorestoreDatabaseExportPackageRequest(requestArg);
342
+ const completion = normalizeCorestoreDatabaseExportPackageCompletionForRequest(completionArg, request);
343
+ const releaseRequest = normalizeCorestoreDatabaseExportPackageReleaseRequest(releaseRequestArg);
344
+ const receiptBytes = encodeCorestoreDatabaseBackupReceipt(completion.receipt);
345
+ if (releaseRequest.packageAttemptId !== request.packageAttemptId
346
+ || releaseRequest.requestSha256 !== digestCorestoreDatabaseExportPackageRequest(request)
347
+ || releaseRequest.completionSha256
348
+ !== digestCorestoreDatabaseExportPackageCompletion(completion)
349
+ || releaseRequest.callerFsyncedClosureByteLength !== completion.closureByteLength
350
+ || releaseRequest.callerFsyncedClosureSha256 !== completion.closureSha256
351
+ || releaseRequest.callerFsyncedReceiptByteLength !== receiptBytes.byteLength
352
+ || releaseRequest.callerFsyncedReceiptSha256 !== completion.receiptSha256
353
+ || releaseRequest.callerFsyncedAt < completion.completedAt) {
354
+ fail('CROSS_FIELD_MISMATCH', 'databaseExportPackageReleaseRequest.completion');
355
+ }
356
+ return releaseRequest;
357
+ };
358
+ export const encodeCorestoreDatabaseExportPackageReleaseRequest = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageReleaseRequest(valueArg), 'databaseExportPackageReleaseRequest');
359
+ export const computeCorestoreDatabaseExportPackageReleaseRequestSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageReleaseRequest(valueArg));
360
+ const digestCorestoreDatabaseExportPackageReleaseRequest = (valueArg) => (digestBytes(encodeCorestoreDatabaseExportPackageReleaseRequest(valueArg)));
361
+ export const classifyCorestoreDatabaseExportPackageReleaseRequestReuse = (persistedRequestArg, candidateRequestArg) => {
362
+ const persisted = normalizeCorestoreDatabaseExportPackageReleaseRequest(persistedRequestArg);
363
+ const candidate = normalizeCorestoreDatabaseExportPackageReleaseRequest(candidateRequestArg);
364
+ if (persisted.packageAttemptId !== candidate.packageAttemptId)
365
+ return 'different-attempt';
366
+ if (!canonicalEqual(persisted, candidate, 'databaseExportPackageReleaseRequest.reuse')) {
367
+ fail('ATTEMPT_CONFLICT', 'databaseExportPackageReleaseRequest.packageAttemptId');
368
+ }
369
+ return 'exact-replay';
370
+ };
371
+ export const normalizeCorestoreDatabaseExportPackageReleaseCompletion = (valueArg) => {
372
+ const value = readRecord(valueArg, 'databaseExportPackageReleaseCompletion');
373
+ assertExactKeys(value, releaseCompletionKeys, 'databaseExportPackageReleaseCompletion');
374
+ if (value.schemaVersion !== 1
375
+ || value.kind !== 'corestore-database-export-package-release-completion') {
376
+ fail('INVALID_VALUE', 'databaseExportPackageReleaseCompletion.kind');
377
+ }
378
+ return finalize({
379
+ schemaVersion: 1,
380
+ kind: 'corestore-database-export-package-release-completion',
381
+ packageAttemptId: readPackageAttemptId(value.packageAttemptId, 'databaseExportPackageReleaseCompletion.packageAttemptId'),
382
+ requestSha256: readSha256(value.requestSha256, 'databaseExportPackageReleaseCompletion.requestSha256'),
383
+ completionSha256: readSha256(value.completionSha256, 'databaseExportPackageReleaseCompletion.completionSha256'),
384
+ releaseRequestSha256: readSha256(value.releaseRequestSha256, 'databaseExportPackageReleaseCompletion.releaseRequestSha256'),
385
+ releasedAt: readInteger(value.releasedAt, 'databaseExportPackageReleaseCompletion.releasedAt', 1),
386
+ }, 'databaseExportPackageReleaseCompletion');
387
+ };
388
+ export const normalizeCorestoreDatabaseExportPackageReleaseCompletionForRequest = (releaseCompletionArg, releaseRequestArg, requestArg, completionArg) => {
389
+ const request = normalizeCorestoreDatabaseExportPackageRequest(requestArg);
390
+ const completion = normalizeCorestoreDatabaseExportPackageCompletionForRequest(completionArg, request);
391
+ const releaseRequest = normalizeCorestoreDatabaseExportPackageReleaseRequestForCompletion(releaseRequestArg, request, completion);
392
+ const releaseCompletion = normalizeCorestoreDatabaseExportPackageReleaseCompletion(releaseCompletionArg);
393
+ if (releaseCompletion.packageAttemptId !== request.packageAttemptId
394
+ || releaseCompletion.requestSha256 !== digestCorestoreDatabaseExportPackageRequest(request)
395
+ || releaseCompletion.completionSha256
396
+ !== digestCorestoreDatabaseExportPackageCompletion(completion)
397
+ || releaseCompletion.releaseRequestSha256
398
+ !== digestCorestoreDatabaseExportPackageReleaseRequest(releaseRequest)
399
+ || releaseCompletion.releasedAt < releaseRequest.callerFsyncedAt) {
400
+ fail('CROSS_FIELD_MISMATCH', 'databaseExportPackageReleaseCompletion.request');
401
+ }
402
+ return releaseCompletion;
403
+ };
404
+ export const encodeCorestoreDatabaseExportPackageReleaseCompletion = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageReleaseCompletion(valueArg), 'databaseExportPackageReleaseCompletion');
405
+ export const computeCorestoreDatabaseExportPackageReleaseCompletionSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageReleaseCompletion(valueArg));
406
+ export const normalizeCorestoreDatabaseExportPackageReleaseResponse = (valueArg) => {
407
+ const value = readRecord(valueArg, 'databaseExportPackageReleaseResponse');
408
+ assertExactKeys(value, releaseResponseKeys, 'databaseExportPackageReleaseResponse');
409
+ if (value.schemaVersion !== 1
410
+ || value.kind !== 'corestore-database-export-package-release-response') {
411
+ fail('INVALID_VALUE', 'databaseExportPackageReleaseResponse.kind');
412
+ }
413
+ return finalize({
414
+ schemaVersion: 1,
415
+ kind: 'corestore-database-export-package-release-response',
416
+ release: normalizeCorestoreDatabaseExportPackageReleaseCompletion(value.release),
417
+ replayed: readBoolean(value.replayed, 'databaseExportPackageReleaseResponse.replayed'),
418
+ }, 'databaseExportPackageReleaseResponse');
419
+ };
420
+ export const normalizeCorestoreDatabaseExportPackageReleaseResponseForRequest = (responseArg, releaseRequestArg, requestArg, completionArg) => {
421
+ const response = normalizeCorestoreDatabaseExportPackageReleaseResponse(responseArg);
422
+ normalizeCorestoreDatabaseExportPackageReleaseCompletionForRequest(response.release, releaseRequestArg, requestArg, completionArg);
423
+ return response;
424
+ };
425
+ export const encodeCorestoreDatabaseExportPackageReleaseResponse = (valueArg) => encodeNormalized(normalizeCorestoreDatabaseExportPackageReleaseResponse(valueArg), 'databaseExportPackageReleaseResponse');
426
+ export const computeCorestoreDatabaseExportPackageReleaseResponseSha256 = async (valueArg) => digestBytes(encodeCorestoreDatabaseExportPackageReleaseResponse(valueArg));
427
+ export { corestoreDatabaseExportPackageGoldenVectors, } from './runtime.corestore.databaseexportpackage.golden.js';
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jb3Jlc3RvcmUuZGF0YWJhc2VleHBvcnRwYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcnVudGltZS5jb3Jlc3RvcmUuZGF0YWJhc2VleHBvcnRwYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEdBQ2hCLE1BQU0sNEJBQTRCLENBQUM7QUFLcEMsT0FBTyxFQUNMLG9DQUFvQyxFQUNwQyxvQ0FBb0MsRUFDcEMsNkNBQTZDLEVBQzdDLHVDQUF1QyxHQUN4QyxNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkUsbUJBQW1CLEVBQUUsb0NBQW9DLENBQUMsbUJBQW1CO0lBQzdFLGlCQUFpQixFQUFFLG9DQUFvQyxDQUFDLDRCQUE0QjtJQUNwRixtQkFBbUIsRUFBRSxvQ0FBb0MsQ0FBQyxtQkFBbUI7SUFDN0UsNkJBQTZCLEVBQUUsR0FBRztDQUMxQixDQUFDLENBQUM7QUFVWixNQUFNLE9BQU8sd0NBQXlDLFNBQVEsS0FBSztJQUNqRCxJQUFJLENBQWdEO0lBQ3BELElBQUksQ0FBUztJQUU3QixZQUNFLE9BQXNELEVBQ3RELE9BQWU7UUFFZixLQUFLLENBQUMsR0FBRyxPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLDBDQUEwQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQThGRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLFFBQVE7SUFDUixjQUFjO0lBQ2QsWUFBWTtJQUNaLFFBQVE7SUFDUixvQkFBb0I7Q0FDWixD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
@@ -4,7 +4,9 @@ import { validateSecretRecipientMetadata } from './data/secret.js';
4
4
  import type { IWorkloadInitActiveApprovalAuthorityV1, IWorkloadInitApprovalAuthorityReferenceV1 } from './runtime.workloadinit.js';
5
5
  export * from './runtime.workloadinit.js';
6
6
  export * from './runtime.corestore.js';
7
+ export * from './runtime.corestore.databaseexportpackage.js';
7
8
  export * from './runtime.cloudlylegacydeploymentsettlement.js';
9
+ export * from './runtime.cloudlylegacydeploymentsettlement.offlineexport.js';
8
10
  export interface ISealedResolvedSecretMaterialEntry {
9
11
  secretVersionId: string;
10
12
  envelope: plugins.smartcrypto.IX25519EnvelopeV1;