@serve.zone/interfaces 27.1.1 → 27.3.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.
@@ -3,7 +3,7 @@ import { isSha256Digest } from './data/immutableimage.js';
3
3
  import { validateSecretRecipientMetadata, verifySecretEnvelopeContext, } from './data/secret.js';
4
4
  import { validateObjectStorageRetentionEvidence, validateObjectStorageRetentionIntent, } from './platform/objectstorageretention.js';
5
5
  import { validatePlatformObjectStorageBucketName } from './platform/objectstorage.js';
6
- import { canonicalizeStrictJson, createCanonicalJsonSha256Hex, } from './private/canonicaljson.js';
6
+ import { canonicalizeStrictJson, createCanonicalJsonSha256Hex, deepFreezeValue, } from './private/canonicaljson.js';
7
7
  export const corestoreProviderConfigIds = Object.freeze({
8
8
  database: 'cloudly-corestore-database',
9
9
  objectstorage: 'cloudly-corestore-objectstorage',
@@ -20,7 +20,7 @@ export const corestoreCredentialRuntimeLimits = Object.freeze({
20
20
  maximumSealedMaterialBytes: 64 * 1024,
21
21
  minimumControlTokenBytes: 32,
22
22
  maximumControlTokenBytes: 4096,
23
- maximumSealedControlCredentialBytes: 12 * 1024,
23
+ maximumSealedControlCredentialBytes: 32 * 1024,
24
24
  });
25
25
  export const getCorestoreProviderConfigId = (capabilityArg) => {
26
26
  if (capabilityArg !== 'database' && capabilityArg !== 'objectstorage') {
@@ -53,20 +53,110 @@ const isJwtIdentity = (valueArg) => (isRecord(valueArg)
53
53
  && typeof valueArg.jwt === 'string'
54
54
  && valueArg.jwt.length > 0);
55
55
  const utf8ByteLength = (valueArg) => new TextEncoder().encode(valueArg).byteLength;
56
- const isCorestoreControlToken = (valueArg) => {
56
+ const isJsonWhitespaceCodePoint = (codePointArg) => ((codePointArg >= 0x0009 && codePointArg <= 0x000d)
57
+ || codePointArg === 0x0020
58
+ || codePointArg === 0x00a0
59
+ || codePointArg === 0x1680
60
+ || (codePointArg >= 0x2000 && codePointArg <= 0x200a)
61
+ || codePointArg === 0x2028
62
+ || codePointArg === 0x2029
63
+ || codePointArg === 0x202f
64
+ || codePointArg === 0x205f
65
+ || codePointArg === 0x3000
66
+ || codePointArg === 0xfeff);
67
+ const isCorestoreControlTokenBytes = (valueArg) => {
68
+ if (valueArg.byteLength < corestoreCredentialRuntimeLimits.minimumControlTokenBytes
69
+ || valueArg.byteLength > corestoreCredentialRuntimeLimits.maximumControlTokenBytes) {
70
+ return false;
71
+ }
72
+ for (let index = 0; index < valueArg.length;) {
73
+ const first = valueArg[index];
74
+ let codePoint;
75
+ if (first <= 0x7f) {
76
+ codePoint = first;
77
+ index++;
78
+ }
79
+ else if (first >= 0xc2 && first <= 0xdf
80
+ && index + 1 < valueArg.length
81
+ && valueArg[index + 1] >= 0x80 && valueArg[index + 1] <= 0xbf) {
82
+ codePoint = ((first & 0x1f) << 6) | (valueArg[index + 1] & 0x3f);
83
+ index += 2;
84
+ }
85
+ else if (first >= 0xe0 && first <= 0xef
86
+ && index + 2 < valueArg.length
87
+ && valueArg[index + 1] >= (first === 0xe0 ? 0xa0 : 0x80)
88
+ && valueArg[index + 1] <= (first === 0xed ? 0x9f : 0xbf)
89
+ && valueArg[index + 2] >= 0x80 && valueArg[index + 2] <= 0xbf) {
90
+ codePoint = ((first & 0x0f) << 12)
91
+ | ((valueArg[index + 1] & 0x3f) << 6)
92
+ | (valueArg[index + 2] & 0x3f);
93
+ index += 3;
94
+ }
95
+ else if (first >= 0xf0 && first <= 0xf4
96
+ && index + 3 < valueArg.length
97
+ && valueArg[index + 1] >= (first === 0xf0 ? 0x90 : 0x80)
98
+ && valueArg[index + 1] <= (first === 0xf4 ? 0x8f : 0xbf)
99
+ && valueArg[index + 2] >= 0x80 && valueArg[index + 2] <= 0xbf
100
+ && valueArg[index + 3] >= 0x80 && valueArg[index + 3] <= 0xbf) {
101
+ codePoint = ((first & 0x07) << 18)
102
+ | ((valueArg[index + 1] & 0x3f) << 12)
103
+ | ((valueArg[index + 2] & 0x3f) << 6)
104
+ | (valueArg[index + 3] & 0x3f);
105
+ index += 4;
106
+ }
107
+ else {
108
+ return false;
109
+ }
110
+ if (isJsonWhitespaceCodePoint(codePoint))
111
+ return false;
112
+ }
113
+ return true;
114
+ };
115
+ export const isCorestoreControlToken = (valueArg) => {
57
116
  if (typeof valueArg !== 'string' || valueArg.length === 0 || /\s/u.test(valueArg))
58
117
  return false;
59
118
  const encoded = new TextEncoder().encode(valueArg);
60
- let roundTrip;
61
119
  try {
62
- roundTrip = new TextDecoder('utf-8', { fatal: true }).decode(encoded);
120
+ const roundTrip = new TextDecoder('utf-8', { fatal: true }).decode(encoded);
121
+ return roundTrip === valueArg
122
+ && encoded.byteLength >= corestoreCredentialRuntimeLimits.minimumControlTokenBytes
123
+ && encoded.byteLength <= corestoreCredentialRuntimeLimits.maximumControlTokenBytes;
63
124
  }
64
125
  catch {
65
126
  return false;
66
127
  }
67
- return roundTrip === valueArg
68
- && encoded.byteLength >= corestoreCredentialRuntimeLimits.minimumControlTokenBytes
69
- && encoded.byteLength <= corestoreCredentialRuntimeLimits.maximumControlTokenBytes;
128
+ finally {
129
+ encoded.fill(0);
130
+ }
131
+ };
132
+ export const createCorestoreControlCredentialPlaintextBytes = (tokenBytesArg) => {
133
+ if (!isCorestoreControlTokenBytes(tokenBytesArg))
134
+ return undefined;
135
+ const prefix = new TextEncoder().encode(`{"schemaVersion":1,"key":"${corestoreControlCredentialKey}","environment":"${corestoreCredentialEnvironment}","value":"`);
136
+ const suffix = new Uint8Array([0x22, 0x7d]);
137
+ const escaped = new Uint8Array(prefix.length + tokenBytesArg.length * 6 + suffix.length);
138
+ let offset = prefix.length;
139
+ escaped.set(prefix);
140
+ for (const byte of tokenBytesArg) {
141
+ if (byte === 0x22 || byte === 0x5c) {
142
+ escaped[offset++] = 0x5c;
143
+ escaped[offset++] = byte;
144
+ }
145
+ else if (byte < 0x20) {
146
+ escaped.set([0x5c, 0x75, 0x30, 0x30], offset);
147
+ offset += 4;
148
+ escaped[offset++] = '0123456789abcdef'.charCodeAt(byte >> 4);
149
+ escaped[offset++] = '0123456789abcdef'.charCodeAt(byte & 0x0f);
150
+ }
151
+ else {
152
+ escaped[offset++] = byte;
153
+ }
154
+ }
155
+ escaped.set(suffix, offset);
156
+ offset += suffix.length;
157
+ const plaintext = escaped.slice(0, offset);
158
+ escaped.fill(0);
159
+ return plaintext;
70
160
  };
71
161
  export const validateGetCorestoreControlCredentialMaterialRequest = (requestArg, activeRecipientArg) => {
72
162
  if (!isRecord(requestArg)
@@ -793,4 +883,308 @@ export const getCorestoreCredentialPublicationErrorMetadata = (codeArg) => ({
793
883
  code: codeArg,
794
884
  retryable: corestoreCredentialPublicationErrorMetadata[codeArg].retryable,
795
885
  });
796
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jb3Jlc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ydW50aW1lLmNvcmVzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQU14QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUNMLCtCQUErQixFQUMvQiwyQkFBMkIsR0FDNUIsTUFBTSxrQkFBa0IsQ0FBQztBQU8xQixPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG9DQUFvQyxHQUNyQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsNEJBQTRCLEdBQzdCLE1BQU0sNEJBQTRCLENBQUM7QUFJcEMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN0RCxRQUFRLEVBQUUsNEJBQTRCO0lBQ3RDLGFBQWEsRUFBRSxpQ0FBaUM7Q0FDeEMsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsdUJBQWdDLENBQUM7QUFDcEUsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsNEJBQXFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcscUJBQThCLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsWUFBcUIsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVELHVCQUF1QixFQUFFLEdBQUc7SUFDNUIsd0JBQXdCLEVBQUUsR0FBRztJQUM3QixzQkFBc0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzNDLDRCQUE0QixFQUFFLENBQUMsR0FBRyxJQUFJ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
886
+ const corestoreDatabaseBackupMaximumSnapshotPayloadBytes = 96 * 1024 * 1024;
887
+ export const corestoreDatabaseBackupRuntimeLimits = Object.freeze({
888
+ maximumControlBytes: 16 * 1024,
889
+ maximumClosureBytes: 256 * 1024 * 1024,
890
+ maximumVerifiedPlaintextBytes: 128 * 1024 * 1024,
891
+ maximumSnapshotPayloadBytes: corestoreDatabaseBackupMaximumSnapshotPayloadBytes,
892
+ maximumSnapshotOriginalBytes: corestoreDatabaseBackupMaximumSnapshotPayloadBytes + 1,
893
+ maximumClosureObjects: 4096,
894
+ maximumClosureChunks: 1_000_000,
895
+ maximumServiceNameBytes: 1024,
896
+ });
897
+ const corestoreDatabaseBackupIdentifierPattern = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,255}$/;
898
+ const corestoreDatabaseAllocationRehearsalIdPattern = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,191}$/;
899
+ const failCorestoreDatabaseBackup = (reasonArg) => {
900
+ throw new Error(reasonArg);
901
+ };
902
+ const readCorestoreDatabaseBackupRecord = (valueArg, pathArg) => {
903
+ if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg)) {
904
+ return failCorestoreDatabaseBackup(`${pathArg} must be a plain object`);
905
+ }
906
+ const prototype = Object.getPrototypeOf(valueArg);
907
+ if (prototype !== Object.prototype && prototype !== null) {
908
+ return failCorestoreDatabaseBackup(`${pathArg} must be a plain object`);
909
+ }
910
+ const value = valueArg;
911
+ for (const key of Reflect.ownKeys(value)) {
912
+ if (typeof key !== 'string') {
913
+ return failCorestoreDatabaseBackup(`${pathArg} must contain string keys only`);
914
+ }
915
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
916
+ if (!descriptor || !descriptor.enumerable || !Object.hasOwn(descriptor, 'value')) {
917
+ return failCorestoreDatabaseBackup(`${pathArg} must contain data properties only`);
918
+ }
919
+ }
920
+ return value;
921
+ };
922
+ const assertCorestoreDatabaseBackupExactKeys = (valueArg, keysArg, pathArg) => {
923
+ if (!hasExactKeys(valueArg, keysArg)) {
924
+ failCorestoreDatabaseBackup(`${pathArg} must use its exact schema`);
925
+ }
926
+ };
927
+ const readCorestoreDatabaseBackupIdentifier = (valueArg, pathArg) => {
928
+ if (typeof valueArg !== 'string' || !corestoreDatabaseBackupIdentifierPattern.test(valueArg)) {
929
+ return failCorestoreDatabaseBackup(`${pathArg} must be a canonical identifier`);
930
+ }
931
+ return valueArg;
932
+ };
933
+ const readCorestoreDatabaseBackupSha256 = (valueArg, pathArg) => {
934
+ if (typeof valueArg !== 'string' || !bareSha256Pattern.test(valueArg)) {
935
+ return failCorestoreDatabaseBackup(`${pathArg} must be bare lowercase SHA-256`);
936
+ }
937
+ return valueArg;
938
+ };
939
+ const readCorestoreDatabaseBackupInteger = (valueArg, pathArg, minimumArg, maximumArg = Number.MAX_SAFE_INTEGER) => {
940
+ if (!Number.isSafeInteger(valueArg)
941
+ || Object.is(valueArg, -0)
942
+ || valueArg < minimumArg
943
+ || valueArg > maximumArg) {
944
+ return failCorestoreDatabaseBackup(`${pathArg} must be a bounded safe integer`);
945
+ }
946
+ return valueArg;
947
+ };
948
+ const finalizeCorestoreDatabaseBackup = (valueArg, pathArg) => {
949
+ const canonical = canonicalizeStrictJson(valueArg, failCorestoreDatabaseBackup, pathArg);
950
+ if (utf8ByteLength(canonical) > corestoreDatabaseBackupRuntimeLimits.maximumControlBytes) {
951
+ failCorestoreDatabaseBackup(`${pathArg} exceeds its canonical byte limit`);
952
+ }
953
+ return deepFreezeValue(valueArg);
954
+ };
955
+ const normalizeCorestoreDatabaseAllocationReferenceInternal = (valueArg, pathArg) => {
956
+ const value = readCorestoreDatabaseBackupRecord(valueArg, pathArg);
957
+ assertCorestoreDatabaseBackupExactKeys(value, [
958
+ 'purpose',
959
+ 'rehearsalId',
960
+ 'allocationId',
961
+ 'generation',
962
+ 'bindingSha256',
963
+ 'receiptSha256',
964
+ ], pathArg);
965
+ if (value.purpose !== 'scratch-rehearsal'
966
+ || typeof value.rehearsalId !== 'string'
967
+ || !corestoreDatabaseAllocationRehearsalIdPattern.test(value.rehearsalId)) {
968
+ failCorestoreDatabaseBackup(`${pathArg} rehearsal authority must be canonical`);
969
+ }
970
+ const rehearsalId = value.rehearsalId;
971
+ return {
972
+ purpose: 'scratch-rehearsal',
973
+ rehearsalId,
974
+ allocationId: readCorestoreDatabaseBackupSha256(value.allocationId, `${pathArg}.allocationId`),
975
+ generation: readCorestoreDatabaseBackupInteger(value.generation, `${pathArg}.generation`, 1),
976
+ bindingSha256: readCorestoreDatabaseBackupSha256(value.bindingSha256, `${pathArg}.bindingSha256`),
977
+ receiptSha256: readCorestoreDatabaseBackupSha256(value.receiptSha256, `${pathArg}.receiptSha256`),
978
+ };
979
+ };
980
+ export const normalizeCorestoreDatabaseAllocationReference = (valueArg) => finalizeCorestoreDatabaseBackup(normalizeCorestoreDatabaseAllocationReferenceInternal(valueArg, 'databaseAllocation'), 'databaseAllocation');
981
+ const normalizeCorestoreDatabaseBackupReceiptInternal = (valueArg, pathArg) => {
982
+ const value = readCorestoreDatabaseBackupRecord(valueArg, pathArg);
983
+ assertCorestoreDatabaseBackupExactKeys(value, [
984
+ 'schemaVersion',
985
+ 'format',
986
+ 'backupId',
987
+ 'sourceServiceId',
988
+ 'createdAt',
989
+ 'snapshot',
990
+ 'closure',
991
+ ], pathArg);
992
+ if (value.schemaVersion !== 1 || value.format !== 'corestore.database.backup.v1') {
993
+ failCorestoreDatabaseBackup(`${pathArg} version must be canonical`);
994
+ }
995
+ const backupId = readCorestoreDatabaseBackupIdentifier(value.backupId, `${pathArg}.backupId`);
996
+ const sourceServiceId = readCorestoreDatabaseBackupIdentifier(value.sourceServiceId, `${pathArg}.sourceServiceId`);
997
+ const createdAt = readCorestoreDatabaseBackupInteger(value.createdAt, `${pathArg}.createdAt`, 1);
998
+ const snapshotValue = readCorestoreDatabaseBackupRecord(value.snapshot, `${pathArg}.snapshot`);
999
+ const hasDatabaseAllocation = Object.hasOwn(snapshotValue, 'databaseAllocation');
1000
+ assertCorestoreDatabaseBackupExactKeys(snapshotValue, [
1001
+ 'capability',
1002
+ 'resourceName',
1003
+ 'snapshotId',
1004
+ 'snapshotName',
1005
+ 'originalSize',
1006
+ 'storedSize',
1007
+ 'createdAt',
1008
+ 'tags',
1009
+ 'databaseName',
1010
+ ...(hasDatabaseAllocation ? ['databaseAllocation'] : []),
1011
+ ], `${pathArg}.snapshot`);
1012
+ if (snapshotValue.capability !== 'database') {
1013
+ failCorestoreDatabaseBackup(`${pathArg}.snapshot capability must be database`);
1014
+ }
1015
+ const resourceName = readCorestoreDatabaseBackupIdentifier(snapshotValue.resourceName, `${pathArg}.snapshot.resourceName`);
1016
+ const snapshotId = readCorestoreDatabaseBackupIdentifier(snapshotValue.snapshotId, `${pathArg}.snapshot.snapshotId`);
1017
+ const snapshotName = readCorestoreDatabaseBackupIdentifier(snapshotValue.snapshotName, `${pathArg}.snapshot.snapshotName`);
1018
+ const databaseName = readCorestoreDatabaseBackupIdentifier(snapshotValue.databaseName, `${pathArg}.snapshot.databaseName`);
1019
+ const snapshotCreatedAt = readCorestoreDatabaseBackupInteger(snapshotValue.createdAt, `${pathArg}.snapshot.createdAt`, 1);
1020
+ if (snapshotName !== backupId || snapshotCreatedAt !== createdAt) {
1021
+ failCorestoreDatabaseBackup(`${pathArg}.snapshot identity must match its receipt`);
1022
+ }
1023
+ const tagsValue = readCorestoreDatabaseBackupRecord(snapshotValue.tags, `${pathArg}.snapshot.tags`);
1024
+ assertCorestoreDatabaseBackupExactKeys(tagsValue, [
1025
+ 'corestore',
1026
+ 'serviceId',
1027
+ 'serviceName',
1028
+ 'capability',
1029
+ 'resourceName',
1030
+ 'snapshotName',
1031
+ 'backupId',
1032
+ ], `${pathArg}.snapshot.tags`);
1033
+ if (tagsValue.corestore !== 'resource'
1034
+ || tagsValue.serviceId !== sourceServiceId
1035
+ || tagsValue.capability !== 'database'
1036
+ || tagsValue.resourceName !== resourceName
1037
+ || tagsValue.snapshotName !== backupId
1038
+ || tagsValue.backupId !== backupId
1039
+ || typeof tagsValue.serviceName !== 'string'
1040
+ || tagsValue.serviceName.length > 256
1041
+ || utf8ByteLength(tagsValue.serviceName)
1042
+ > corestoreDatabaseBackupRuntimeLimits.maximumServiceNameBytes) {
1043
+ failCorestoreDatabaseBackup(`${pathArg}.snapshot.tags ownership must be canonical`);
1044
+ }
1045
+ const serviceName = tagsValue.serviceName;
1046
+ const closureValue = readCorestoreDatabaseBackupRecord(value.closure, `${pathArg}.closure`);
1047
+ assertCorestoreDatabaseBackupExactKeys(closureValue, [
1048
+ 'formatVersion',
1049
+ 'snapshotIds',
1050
+ 'objectCount',
1051
+ 'packCount',
1052
+ 'chunkCount',
1053
+ 'payloadBytes',
1054
+ 'archiveBytes',
1055
+ 'sha256',
1056
+ ], `${pathArg}.closure`);
1057
+ if (!Array.isArray(closureValue.snapshotIds)
1058
+ || Object.getPrototypeOf(closureValue.snapshotIds) !== Array.prototype
1059
+ || closureValue.snapshotIds.length !== 1
1060
+ || !Object.hasOwn(closureValue.snapshotIds, 0)
1061
+ || Reflect.ownKeys(closureValue.snapshotIds).some((keyArg) => keyArg !== 'length' && keyArg !== '0')) {
1062
+ failCorestoreDatabaseBackup(`${pathArg}.closure snapshot coverage must be exact`);
1063
+ }
1064
+ const snapshotIdDescriptor = Object.getOwnPropertyDescriptor(closureValue.snapshotIds, '0');
1065
+ if (!snapshotIdDescriptor
1066
+ || !snapshotIdDescriptor.enumerable
1067
+ || !Object.hasOwn(snapshotIdDescriptor, 'value')
1068
+ || snapshotIdDescriptor.value !== snapshotId) {
1069
+ failCorestoreDatabaseBackup(`${pathArg}.closure snapshot coverage must use data entries`);
1070
+ }
1071
+ const objectCount = readCorestoreDatabaseBackupInteger(closureValue.objectCount, `${pathArg}.closure.objectCount`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureObjects);
1072
+ const packCount = readCorestoreDatabaseBackupInteger(closureValue.packCount, `${pathArg}.closure.packCount`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureObjects);
1073
+ const chunkCount = readCorestoreDatabaseBackupInteger(closureValue.chunkCount, `${pathArg}.closure.chunkCount`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureChunks);
1074
+ if (packCount > objectCount) {
1075
+ failCorestoreDatabaseBackup(`${pathArg}.closure pack coverage must be canonical`);
1076
+ }
1077
+ const originalSize = readCorestoreDatabaseBackupInteger(snapshotValue.originalSize, `${pathArg}.snapshot.originalSize`, 1, corestoreDatabaseBackupRuntimeLimits.maximumSnapshotOriginalBytes);
1078
+ const storedSize = readCorestoreDatabaseBackupInteger(snapshotValue.storedSize, `${pathArg}.snapshot.storedSize`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureBytes);
1079
+ const databaseAllocation = hasDatabaseAllocation
1080
+ ? normalizeCorestoreDatabaseAllocationReferenceInternal(snapshotValue.databaseAllocation, `${pathArg}.snapshot.databaseAllocation`)
1081
+ : undefined;
1082
+ return {
1083
+ schemaVersion: 1,
1084
+ format: 'corestore.database.backup.v1',
1085
+ backupId,
1086
+ sourceServiceId,
1087
+ createdAt,
1088
+ snapshot: {
1089
+ capability: 'database',
1090
+ resourceName,
1091
+ snapshotId,
1092
+ snapshotName,
1093
+ originalSize,
1094
+ storedSize,
1095
+ createdAt: snapshotCreatedAt,
1096
+ tags: {
1097
+ corestore: 'resource',
1098
+ serviceId: sourceServiceId,
1099
+ serviceName,
1100
+ capability: 'database',
1101
+ resourceName,
1102
+ snapshotName,
1103
+ backupId,
1104
+ },
1105
+ databaseName,
1106
+ ...(databaseAllocation ? { databaseAllocation } : {}),
1107
+ },
1108
+ closure: {
1109
+ formatVersion: closureValue.formatVersion === 1
1110
+ ? 1
1111
+ : failCorestoreDatabaseBackup(`${pathArg}.closure formatVersion must be 1`),
1112
+ snapshotIds: [snapshotId],
1113
+ objectCount,
1114
+ packCount,
1115
+ chunkCount,
1116
+ payloadBytes: readCorestoreDatabaseBackupInteger(closureValue.payloadBytes, `${pathArg}.closure.payloadBytes`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureBytes),
1117
+ archiveBytes: readCorestoreDatabaseBackupInteger(closureValue.archiveBytes, `${pathArg}.closure.archiveBytes`, 1, corestoreDatabaseBackupRuntimeLimits.maximumClosureBytes),
1118
+ sha256: readCorestoreDatabaseBackupSha256(closureValue.sha256, `${pathArg}.closure.sha256`),
1119
+ },
1120
+ };
1121
+ };
1122
+ export const normalizeCorestoreDatabaseBackupReceipt = (valueArg) => finalizeCorestoreDatabaseBackup(normalizeCorestoreDatabaseBackupReceiptInternal(valueArg, 'databaseBackupReceipt'), 'databaseBackupReceipt');
1123
+ export const normalizeCorestoreDatabaseBackupRestoreRequest = (valueArg) => {
1124
+ const value = readCorestoreDatabaseBackupRecord(valueArg, 'databaseBackupRestoreRequest');
1125
+ const hasAllocation = Object.hasOwn(value, 'expectedDatabaseAllocation');
1126
+ const hasRestoreAttemptId = Object.hasOwn(value, 'restoreAttemptId');
1127
+ assertCorestoreDatabaseBackupExactKeys(value, [
1128
+ 'schemaVersion',
1129
+ 'targetServiceId',
1130
+ 'receipt',
1131
+ ...(hasAllocation ? ['expectedDatabaseAllocation'] : []),
1132
+ ...(hasRestoreAttemptId ? ['restoreAttemptId'] : []),
1133
+ ], 'databaseBackupRestoreRequest');
1134
+ if (value.schemaVersion !== 1) {
1135
+ failCorestoreDatabaseBackup('databaseBackupRestoreRequest schemaVersion must be 1');
1136
+ }
1137
+ const receipt = normalizeCorestoreDatabaseBackupReceiptInternal(value.receipt, 'databaseBackupRestoreRequest.receipt');
1138
+ const expectedDatabaseAllocation = hasAllocation
1139
+ ? normalizeCorestoreDatabaseAllocationReferenceInternal(value.expectedDatabaseAllocation, 'databaseBackupRestoreRequest.expectedDatabaseAllocation')
1140
+ : undefined;
1141
+ const restoreAttemptId = hasRestoreAttemptId
1142
+ ? readCorestoreDatabaseBackupIdentifier(value.restoreAttemptId, 'databaseBackupRestoreRequest.restoreAttemptId')
1143
+ : undefined;
1144
+ return finalizeCorestoreDatabaseBackup({
1145
+ schemaVersion: 1,
1146
+ targetServiceId: readCorestoreDatabaseBackupIdentifier(value.targetServiceId, 'databaseBackupRestoreRequest.targetServiceId'),
1147
+ receipt,
1148
+ ...(expectedDatabaseAllocation ? { expectedDatabaseAllocation } : {}),
1149
+ ...(restoreAttemptId ? { restoreAttemptId } : {}),
1150
+ }, 'databaseBackupRestoreRequest');
1151
+ };
1152
+ export const normalizeCorestoreDatabaseBackupRestoreResponse = (valueArg) => {
1153
+ const value = readCorestoreDatabaseBackupRecord(valueArg, 'databaseBackupRestoreResponse');
1154
+ assertCorestoreDatabaseBackupExactKeys(value, [
1155
+ 'schemaVersion',
1156
+ 'ok',
1157
+ 'backupId',
1158
+ 'sourceServiceId',
1159
+ 'targetServiceId',
1160
+ 'snapshotId',
1161
+ 'restoreId',
1162
+ 'requestSha256',
1163
+ 'replayed',
1164
+ ], 'databaseBackupRestoreResponse');
1165
+ if (value.schemaVersion !== 1 || value.ok !== true || typeof value.replayed !== 'boolean') {
1166
+ failCorestoreDatabaseBackup('databaseBackupRestoreResponse constants must be canonical');
1167
+ }
1168
+ const replayed = value.replayed;
1169
+ return finalizeCorestoreDatabaseBackup({
1170
+ schemaVersion: 1,
1171
+ ok: true,
1172
+ backupId: readCorestoreDatabaseBackupIdentifier(value.backupId, 'databaseBackupRestoreResponse.backupId'),
1173
+ sourceServiceId: readCorestoreDatabaseBackupIdentifier(value.sourceServiceId, 'databaseBackupRestoreResponse.sourceServiceId'),
1174
+ targetServiceId: readCorestoreDatabaseBackupIdentifier(value.targetServiceId, 'databaseBackupRestoreResponse.targetServiceId'),
1175
+ snapshotId: readCorestoreDatabaseBackupIdentifier(value.snapshotId, 'databaseBackupRestoreResponse.snapshotId'),
1176
+ restoreId: readCorestoreDatabaseBackupIdentifier(value.restoreId, 'databaseBackupRestoreResponse.restoreId'),
1177
+ requestSha256: readCorestoreDatabaseBackupSha256(value.requestSha256, 'databaseBackupRestoreResponse.requestSha256'),
1178
+ replayed,
1179
+ }, 'databaseBackupRestoreResponse');
1180
+ };
1181
+ const createCorestoreDatabaseBackupCanonicalJson = (valueArg, pathArg) => canonicalizeStrictJson(valueArg, failCorestoreDatabaseBackup, pathArg);
1182
+ export const encodeCorestoreDatabaseAllocationReference = (valueArg) => new TextEncoder().encode(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseAllocationReference(valueArg), 'databaseAllocation'));
1183
+ export const encodeCorestoreDatabaseBackupReceipt = (valueArg) => new TextEncoder().encode(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupReceipt(valueArg), 'databaseBackupReceipt'));
1184
+ export const encodeCorestoreDatabaseBackupRestoreRequest = (valueArg) => new TextEncoder().encode(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupRestoreRequest(valueArg), 'databaseBackupRestoreRequest'));
1185
+ export const encodeCorestoreDatabaseBackupRestoreResponse = (valueArg) => new TextEncoder().encode(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupRestoreResponse(valueArg), 'databaseBackupRestoreResponse'));
1186
+ export const computeCorestoreDatabaseAllocationReferenceSha256 = async (valueArg) => createCanonicalJsonSha256Hex(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseAllocationReference(valueArg), 'databaseAllocation'), failCorestoreDatabaseBackup);
1187
+ export const computeCorestoreDatabaseBackupReceiptSha256 = async (valueArg) => createCanonicalJsonSha256Hex(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupReceipt(valueArg), 'databaseBackupReceipt'), failCorestoreDatabaseBackup);
1188
+ export const computeCorestoreDatabaseBackupRestoreRequestSha256 = async (valueArg) => createCanonicalJsonSha256Hex(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupRestoreRequest(valueArg), 'databaseBackupRestoreRequest'), failCorestoreDatabaseBackup);
1189
+ export const computeCorestoreDatabaseBackupRestoreResponseSha256 = async (valueArg) => createCanonicalJsonSha256Hex(createCorestoreDatabaseBackupCanonicalJson(normalizeCorestoreDatabaseBackupRestoreResponse(valueArg), 'databaseBackupRestoreResponse'), failCorestoreDatabaseBackup);
1190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jb3Jlc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ydW50aW1lLmNvcmVzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQU14QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUNMLCtCQUErQixFQUMvQiwyQkFBMkIsR0FDNUIsTUFBTSxrQkFBa0IsQ0FBQztBQU8xQixPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG9DQUFvQyxHQUNyQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsNEJBQTRCLEVBQzVCLGVBQWUsR0FDaEIsTUFBTSw0QkFBNEIsQ0FBQztBQUlwQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RELFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsYUFBYSxFQUFFLGlDQUFpQztDQUN4QyxDQUFDLENBQUM7QUFDWixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx1QkFBZ0MsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyw0QkFBcUMsQ0FBQztBQUN4RixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxxQkFBOEIsQ0FBQztBQUM1RSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxZQUFxQixDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUQsdUJBQXVCLEVBQUUsR0FBRztJQUM1Qix3QkFBd0IsRUFBRSxHQUFHO0lBQzdCLHNCQUFzQixFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDM0MsNEJBQTRCLEVBQUUsQ0FB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RUFBRSxDQUFDO1lBQ2xFLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztrQkFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2tCQUNwQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbEMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNiLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUk7ZUFDcEMsS0FBSyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTTtlQUMzQixRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7ZUFDdEQsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2VBQ3RELFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFFLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFFLElBQUksSUFBSTtlQUM1RCxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBRSxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xFLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztrQkFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2tCQUNyQyxDQUFDLENBQUMsUUFBUSxDQUFD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