@byline/db-postgres 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +18 -0
  3. package/dist/database/schema/auth.d.ts +857 -0
  4. package/dist/database/schema/auth.d.ts.map +1 -0
  5. package/dist/database/schema/auth.js +176 -0
  6. package/dist/database/schema/auth.js.map +1 -0
  7. package/dist/database/schema/index.d.ts +2955 -0
  8. package/dist/database/schema/index.d.ts.map +1 -0
  9. package/dist/database/schema/index.js +500 -0
  10. package/dist/database/schema/index.js.map +1 -0
  11. package/dist/index.d.ts +31 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +30 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/test-helper.d.ts +17 -0
  16. package/dist/lib/test-helper.d.ts.map +1 -0
  17. package/dist/lib/test-helper.js +47 -0
  18. package/dist/lib/test-helper.js.map +1 -0
  19. package/dist/modules/admin/admin-permissions-repository.d.ts +17 -0
  20. package/dist/modules/admin/admin-permissions-repository.d.ts.map +1 -0
  21. package/dist/modules/admin/admin-permissions-repository.js +76 -0
  22. package/dist/modules/admin/admin-permissions-repository.js.map +1 -0
  23. package/dist/modules/admin/admin-roles-repository.d.ts +12 -0
  24. package/dist/modules/admin/admin-roles-repository.d.ts.map +1 -0
  25. package/dist/modules/admin/admin-roles-repository.js +168 -0
  26. package/dist/modules/admin/admin-roles-repository.js.map +1 -0
  27. package/dist/modules/admin/admin-store.d.ts +20 -0
  28. package/dist/modules/admin/admin-store.d.ts.map +1 -0
  29. package/dist/modules/admin/admin-store.js +28 -0
  30. package/dist/modules/admin/admin-store.js.map +1 -0
  31. package/dist/modules/admin/admin-users-repository.d.ts +12 -0
  32. package/dist/modules/admin/admin-users-repository.d.ts.map +1 -0
  33. package/dist/modules/admin/admin-users-repository.js +208 -0
  34. package/dist/modules/admin/admin-users-repository.js.map +1 -0
  35. package/dist/modules/admin/index.d.ts +27 -0
  36. package/dist/modules/admin/index.d.ts.map +1 -0
  37. package/dist/modules/admin/index.js +27 -0
  38. package/dist/modules/admin/index.js.map +1 -0
  39. package/dist/modules/admin/refresh-tokens-repository.d.ts +16 -0
  40. package/dist/modules/admin/refresh-tokens-repository.d.ts.map +1 -0
  41. package/dist/modules/admin/refresh-tokens-repository.js +132 -0
  42. package/dist/modules/admin/refresh-tokens-repository.js.map +1 -0
  43. package/dist/modules/admin/tests/auth-integration.test.d.ts +9 -0
  44. package/dist/modules/admin/tests/auth-integration.test.d.ts.map +1 -0
  45. package/dist/modules/admin/tests/auth-integration.test.js +392 -0
  46. package/dist/modules/admin/tests/auth-integration.test.js.map +1 -0
  47. package/dist/modules/admin/tests/session-provider.test.d.ts +9 -0
  48. package/dist/modules/admin/tests/session-provider.test.d.ts.map +1 -0
  49. package/dist/modules/admin/tests/session-provider.test.js +370 -0
  50. package/dist/modules/admin/tests/session-provider.test.js.map +1 -0
  51. package/dist/modules/storage/@types.d.ts +116 -0
  52. package/dist/modules/storage/@types.d.ts.map +1 -0
  53. package/dist/modules/storage/@types.js +9 -0
  54. package/dist/modules/storage/@types.js.map +1 -0
  55. package/dist/modules/storage/storage-commands.d.ts +136 -0
  56. package/dist/modules/storage/storage-commands.d.ts.map +1 -0
  57. package/dist/modules/storage/storage-commands.js +272 -0
  58. package/dist/modules/storage/storage-commands.js.map +1 -0
  59. package/dist/modules/storage/storage-flatten.d.ts +19 -0
  60. package/dist/modules/storage/storage-flatten.d.ts.map +1 -0
  61. package/dist/modules/storage/storage-flatten.js +261 -0
  62. package/dist/modules/storage/storage-flatten.js.map +1 -0
  63. package/dist/modules/storage/storage-insert.d.ts +22 -0
  64. package/dist/modules/storage/storage-insert.d.ts.map +1 -0
  65. package/dist/modules/storage/storage-insert.js +115 -0
  66. package/dist/modules/storage/storage-insert.js.map +1 -0
  67. package/dist/modules/storage/storage-queries.d.ts +377 -0
  68. package/dist/modules/storage/storage-queries.d.ts.map +1 -0
  69. package/dist/modules/storage/storage-queries.js +976 -0
  70. package/dist/modules/storage/storage-queries.js.map +1 -0
  71. package/dist/modules/storage/storage-restore.d.ts +19 -0
  72. package/dist/modules/storage/storage-restore.d.ts.map +1 -0
  73. package/dist/modules/storage/storage-restore.js +350 -0
  74. package/dist/modules/storage/storage-restore.js.map +1 -0
  75. package/dist/modules/storage/storage-store-manifest.d.ts +71 -0
  76. package/dist/modules/storage/storage-store-manifest.d.ts.map +1 -0
  77. package/dist/modules/storage/storage-store-manifest.js +294 -0
  78. package/dist/modules/storage/storage-store-manifest.js.map +1 -0
  79. package/dist/modules/storage/storage-utils.d.ts +23 -0
  80. package/dist/modules/storage/storage-utils.d.ts.map +1 -0
  81. package/dist/modules/storage/storage-utils.js +72 -0
  82. package/dist/modules/storage/storage-utils.js.map +1 -0
  83. package/dist/modules/storage/tests/storage-field-types.test.d.ts +9 -0
  84. package/dist/modules/storage/tests/storage-field-types.test.d.ts.map +1 -0
  85. package/dist/modules/storage/tests/storage-field-types.test.js +146 -0
  86. package/dist/modules/storage/tests/storage-field-types.test.js.map +1 -0
  87. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.d.ts +9 -0
  88. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.d.ts.map +1 -0
  89. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.js +327 -0
  90. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.js.map +1 -0
  91. package/dist/modules/storage/tests/storage-store-manifest.test.d.ts +9 -0
  92. package/dist/modules/storage/tests/storage-store-manifest.test.d.ts.map +1 -0
  93. package/dist/modules/storage/tests/storage-store-manifest.test.js +141 -0
  94. package/dist/modules/storage/tests/storage-store-manifest.test.js.map +1 -0
  95. package/dist/modules/storage/tests/storage-versioning.test.d.ts +9 -0
  96. package/dist/modules/storage/tests/storage-versioning.test.d.ts.map +1 -0
  97. package/dist/modules/storage/tests/storage-versioning.test.js +336 -0
  98. package/dist/modules/storage/tests/storage-versioning.test.js.map +1 -0
  99. package/package.json +81 -0
@@ -0,0 +1,261 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ import { ERR_DATABASE, getLogger } from '@byline/core';
9
+ import { v7 as uuidv7 } from 'uuid';
10
+ // ------------------------------------------------------------------------------
11
+ // Flattening logic: take a document's nested field data and flatten it into an
12
+ // array of field values with associated metadata such as field path and locale.
13
+ // ------------------------------------------------------------------------------
14
+ /**
15
+ * Main entrypoint for flattening a document's (nested) field data into a flat
16
+ * array of field values.
17
+ *
18
+ * @param fields - The field definitions for the collection.
19
+ * @param data - The document's field data to flatten.
20
+ * @param locale - The locale to flatten for (or 'all' to flatten all locales).
21
+ */
22
+ export const flattenFieldSetData = (fields, data, locale) => {
23
+ return Array.from(flattenFieldSetDataGen(fields, data, locale));
24
+ };
25
+ /**
26
+ * Flatten data for a FieldSet (Field[]) -- this could be the top-level field
27
+ * data for a document, or the data inside a group, array or blocks field.
28
+ *
29
+ * @param fields - The field definitions for the current field set.
30
+ * @param data - The field data for the current field set.
31
+ * @param locale - The locale to flatten for (or 'all' to flatten all locales).
32
+ * @param parent_path - The path segments leading up to the current field set.
33
+ * @returns
34
+ */
35
+ function* flattenFieldSetDataGen(fields, data, locale, parent_path = []) {
36
+ if (data === undefined) {
37
+ return;
38
+ }
39
+ const fieldData = data;
40
+ for (const field of fields) {
41
+ yield* flattenFieldDataGen(field, fieldData[field.name], locale, [...parent_path, field.name]);
42
+ }
43
+ }
44
+ /**
45
+ * Flatten data for a single field.
46
+ *
47
+ * @param field - The field definition for the current field.
48
+ * @param data - The field data for the current field.
49
+ * @param locale - The locale to flatten for (or 'all' to flatten all locales).
50
+ * @param field_path - The path segments up to and including the current field.
51
+ * @returns
52
+ */
53
+ function* flattenFieldDataGen(field, data, locale, field_path) {
54
+ if (data === undefined) {
55
+ return;
56
+ }
57
+ // Group fields are simple -- just use flattenFieldSetDataGen. It will handle
58
+ // adding the appropriate field names to field_path.
59
+ if (field.type === 'group') {
60
+ yield* flattenFieldSetDataGen(field.fields, data, locale, field_path);
61
+ }
62
+ // For array fields, we must emit a single FlattenedMetaFieldData for each
63
+ // item to capture the item's stable ID, and then flatten the fields within
64
+ // each item using flattenFieldSetDataGen().
65
+ else if (field.type === 'array') {
66
+ const items = data;
67
+ for (let i = 0; i < items.length; i++) {
68
+ // biome-ignore lint/style/noNonNullAssertion: i is always in-bounds
69
+ const { _id, ...item_data } = items[i];
70
+ const item_path = [...field_path, `${i}`];
71
+ yield {
72
+ locale: 'all',
73
+ field_path: item_path,
74
+ field_type: 'meta',
75
+ type: 'array_item',
76
+ item_id: _id ?? uuidv7(),
77
+ meta: null,
78
+ };
79
+ yield* flattenFieldSetDataGen(field.fields, item_data, locale, item_path);
80
+ }
81
+ }
82
+ // Blocks are similar to arrays, but with an additional type discriminator for
83
+ // block variants.
84
+ else if (field.type === 'blocks') {
85
+ const items = data;
86
+ for (let i = 0; i < items.length; i++) {
87
+ // biome-ignore lint/style/noNonNullAssertion: i is always in-bounds
88
+ const { _id, _type, ...item_data } = items[i];
89
+ const item_path = [...field_path, `${i}`, _type];
90
+ const block = field.blocks.find((f) => f.blockType === _type);
91
+ if (!block) {
92
+ throw ERR_DATABASE({
93
+ message: `invalid block type: ${_type}`,
94
+ details: { blockType: _type },
95
+ }).log(getLogger());
96
+ }
97
+ yield {
98
+ locale: 'all',
99
+ field_path: item_path,
100
+ field_type: 'meta',
101
+ type: 'group',
102
+ item_id: _id ?? uuidv7(),
103
+ meta: null,
104
+ };
105
+ yield* flattenFieldSetDataGen(block.fields, item_data, locale, item_path);
106
+ }
107
+ }
108
+ // Handle localized fields separately.
109
+ else if (field.localized) {
110
+ // If locale is 'all', data is expected to be an object that maps locales to
111
+ // the corresponding localized values, and we emit a separate
112
+ // FlattenedFieldData for each.
113
+ if (locale === 'all') {
114
+ const localizedData = data;
115
+ for (const [locale, value] of Object.entries(localizedData)) {
116
+ if (value !== undefined) {
117
+ yield flattenValueFieldData(field, field_path, value, locale);
118
+ }
119
+ }
120
+ }
121
+ // If locale is not 'all', data is expected to be a single localized value
122
+ // for the specified locale, and we emit a single FlattenedFieldData for
123
+ // that locale.
124
+ else {
125
+ yield flattenValueFieldData(field, field_path, data, locale);
126
+ }
127
+ }
128
+ // For non-localized fields, data is expected to be the (non-localized) field
129
+ // value, and we emit a single FlattenedFieldData with locale 'all'.
130
+ else {
131
+ yield flattenValueFieldData(field, field_path, data, 'all');
132
+ }
133
+ }
134
+ const flattenValueFieldData = (field, field_path, value, locale) => {
135
+ const field_type = field.type;
136
+ switch (field_type) {
137
+ case 'text':
138
+ case 'textArea':
139
+ case 'select':
140
+ return {
141
+ locale,
142
+ field_path,
143
+ field_type: 'text',
144
+ value: value,
145
+ };
146
+ case 'float':
147
+ return {
148
+ locale,
149
+ field_path,
150
+ field_type: 'numeric',
151
+ number_type: 'float',
152
+ value_float: value,
153
+ };
154
+ case 'integer':
155
+ return {
156
+ locale,
157
+ field_path,
158
+ field_type: 'numeric',
159
+ number_type: 'integer',
160
+ value_integer: value,
161
+ };
162
+ case 'decimal':
163
+ return {
164
+ locale,
165
+ field_path,
166
+ field_type: 'numeric',
167
+ number_type: 'decimal',
168
+ value_decimal: value,
169
+ };
170
+ case 'boolean':
171
+ case 'checkbox':
172
+ return {
173
+ locale,
174
+ field_path,
175
+ field_type: 'boolean',
176
+ value: value,
177
+ };
178
+ case 'time':
179
+ return {
180
+ locale,
181
+ field_path,
182
+ field_type: 'datetime',
183
+ date_type: 'time',
184
+ value_time: value,
185
+ };
186
+ case 'date':
187
+ return {
188
+ locale,
189
+ field_path,
190
+ field_type: 'datetime',
191
+ date_type: 'date',
192
+ value_date: value,
193
+ };
194
+ case 'datetime':
195
+ return {
196
+ locale,
197
+ field_path,
198
+ field_type: 'datetime',
199
+ date_type: 'datetime',
200
+ value_timestamp_tz: value,
201
+ };
202
+ case 'file':
203
+ case 'image': {
204
+ const v = value;
205
+ return {
206
+ locale,
207
+ field_path,
208
+ field_type: 'file',
209
+ file_id: v.fileId,
210
+ filename: v.filename,
211
+ original_filename: v.originalFilename,
212
+ mime_type: v.mimeType,
213
+ file_size: v.fileSize,
214
+ storage_provider: v.storageProvider,
215
+ storage_path: v.storagePath,
216
+ storage_url: v.storageUrl,
217
+ file_hash: v.fileHash,
218
+ image_width: v.imageWidth,
219
+ image_height: v.imageHeight,
220
+ image_format: v.imageFormat,
221
+ processing_status: v.processingStatus,
222
+ thumbnail_generated: v.thumbnailGenerated,
223
+ variants: v.variants?.map((variant) => ({
224
+ name: variant.name,
225
+ storage_path: variant.storagePath,
226
+ storage_url: variant.storageUrl,
227
+ width: variant.width,
228
+ height: variant.height,
229
+ format: variant.format,
230
+ })),
231
+ };
232
+ }
233
+ case 'relation': {
234
+ const v = value;
235
+ return {
236
+ locale,
237
+ field_path,
238
+ field_type: 'relation',
239
+ target_document_id: v.targetDocumentId,
240
+ target_collection_id: v.targetCollectionId,
241
+ relationship_type: v.relationshipType,
242
+ cascade_delete: v.cascadeDelete,
243
+ };
244
+ }
245
+ case 'richText':
246
+ case 'json':
247
+ case 'object':
248
+ return {
249
+ locale,
250
+ field_path,
251
+ field_type: 'json',
252
+ value,
253
+ };
254
+ default:
255
+ throw ERR_DATABASE({
256
+ message: `unsupported field type: ${field_type}`,
257
+ details: { fieldType: field_type },
258
+ }).log(getLogger());
259
+ }
260
+ };
261
+ //# sourceMappingURL=storage-flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-flatten.js","sourceRoot":"","sources":["../../../src/modules/storage/storage-flatten.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ import type { booleanStore, datetimeStore, fileStore, jsonStore, metaStore, numericStore, relationStore, textStore } from '../../database/schema/index.js';
9
+ import type { FlattenedFieldValue } from './@types.js';
10
+ type FieldInsertBuckets = {
11
+ text: (typeof textStore.$inferInsert)[];
12
+ numeric: (typeof numericStore.$inferInsert)[];
13
+ boolean: (typeof booleanStore.$inferInsert)[];
14
+ datetime: (typeof datetimeStore.$inferInsert)[];
15
+ file: (typeof fileStore.$inferInsert)[];
16
+ relation: (typeof relationStore.$inferInsert)[];
17
+ json: (typeof jsonStore.$inferInsert)[];
18
+ meta: (typeof metaStore.$inferInsert)[];
19
+ };
20
+ export declare const prepareFieldInsertBuckets: (flattenedFields: FlattenedFieldValue[], document_version_id: string, collection_id: string) => FieldInsertBuckets;
21
+ export {};
22
+ //# sourceMappingURL=storage-insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-insert.d.ts","sourceRoot":"","sources":["../../../src/modules/storage/storage-insert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAOtD,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,CAAA;IACvC,OAAO,EAAE,CAAC,OAAO,YAAY,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7C,OAAO,EAAE,CAAC,OAAO,YAAY,CAAC,YAAY,CAAC,EAAE,CAAA;IAC7C,QAAQ,EAAE,CAAC,OAAO,aAAa,CAAC,YAAY,CAAC,EAAE,CAAA;IAC/C,IAAI,EAAE,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,CAAA;IACvC,QAAQ,EAAE,CAAC,OAAO,aAAa,CAAC,YAAY,CAAC,EAAE,CAAA;IAC/C,IAAI,EAAE,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,CAAA;IACvC,IAAI,EAAE,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,yBAAyB,GACpC,iBAAiB,mBAAmB,EAAE,EACtC,qBAAqB,MAAM,EAC3B,eAAe,MAAM,KACpB,kBAoHF,CAAA"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ import { ERR_DATABASE, getLogger } from '@byline/core';
9
+ import { v7 as uuidv7 } from 'uuid';
10
+ export const prepareFieldInsertBuckets = (flattenedFields, document_version_id, collection_id) => {
11
+ const buckets = {
12
+ text: [],
13
+ numeric: [],
14
+ boolean: [],
15
+ datetime: [],
16
+ file: [],
17
+ relation: [],
18
+ json: [],
19
+ meta: [],
20
+ };
21
+ for (const field of flattenedFields) {
22
+ const { field_type, field_path, locale } = field;
23
+ if (field_type === 'meta') {
24
+ buckets.meta.push({
25
+ id: uuidv7(),
26
+ document_version_id,
27
+ collection_id,
28
+ type: field.type,
29
+ path: field_path.join('.'),
30
+ item_id: field.item_id,
31
+ });
32
+ continue;
33
+ }
34
+ const base = {
35
+ id: uuidv7(),
36
+ document_version_id,
37
+ collection_id,
38
+ field_path: field_path.join('.'),
39
+ field_name: field_path[field_path.length - 1] ?? '',
40
+ locale,
41
+ parent_path: field_path.length > 1 ? field_path.slice(0, -1).join('.') : undefined,
42
+ };
43
+ switch (field_type) {
44
+ case 'text':
45
+ buckets.text.push({ ...base, value: field.value });
46
+ continue;
47
+ case 'numeric':
48
+ buckets.numeric.push({
49
+ ...base,
50
+ number_type: field.number_type,
51
+ value_float: field.value_float,
52
+ value_integer: field.value_integer,
53
+ value_decimal: field.value_decimal,
54
+ });
55
+ continue;
56
+ case 'boolean':
57
+ buckets.boolean.push({
58
+ ...base,
59
+ value: field.value,
60
+ });
61
+ continue;
62
+ case 'datetime':
63
+ buckets.datetime.push({
64
+ ...base,
65
+ date_type: field.date_type,
66
+ value_date: field.value_date?.toISOString(), // TODO: Is this the appropriate conversion?
67
+ value_time: field.value_time,
68
+ value_timestamp_tz: field.value_timestamp_tz,
69
+ });
70
+ continue;
71
+ case 'file':
72
+ buckets.file.push({
73
+ ...base,
74
+ file_id: field.file_id,
75
+ filename: field.filename,
76
+ original_filename: field.original_filename,
77
+ mime_type: field.mime_type,
78
+ file_size: field.file_size,
79
+ storage_provider: field.storage_provider,
80
+ storage_path: field.storage_path,
81
+ storage_url: field.storage_url,
82
+ file_hash: field.file_hash,
83
+ image_width: field.image_width,
84
+ image_height: field.image_height,
85
+ image_format: field.image_format,
86
+ processing_status: field.processing_status || 'pending', // TODO: Is 'pending' the appropriate default status?
87
+ thumbnail_generated: field.thumbnail_generated || false,
88
+ variants: field.variants,
89
+ });
90
+ continue;
91
+ case 'relation':
92
+ buckets.relation.push({
93
+ ...base,
94
+ target_document_id: field.target_document_id,
95
+ target_collection_id: field.target_collection_id,
96
+ relationship_type: field.relationship_type || 'reference', // TODO: Is this the appropriate place to set this?
97
+ cascade_delete: field.cascade_delete || false, // TODO: Same question?
98
+ });
99
+ continue;
100
+ case 'json':
101
+ buckets.json.push({
102
+ ...base,
103
+ value: field.value,
104
+ });
105
+ continue;
106
+ default:
107
+ throw ERR_DATABASE({
108
+ message: `unexpected field type: ${field_type}`,
109
+ details: { fieldType: field_type },
110
+ }).log(getLogger());
111
+ }
112
+ }
113
+ return buckets;
114
+ };
115
+ //# sourceMappingURL=storage-insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-insert.js","sourceRoot":"","sources":["../../../src/modules/storage/storage-insert.ts"],"names":[],"mappings":"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"}