@payloadcms/db-postgres 0.1.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.js +82 -0
- package/dist/create.js +32 -0
- package/dist/createGlobal.js +32 -0
- package/dist/createGlobalVersion.js +48 -0
- package/dist/createMigration.js +85 -0
- package/dist/createVersion.js +54 -0
- package/dist/deleteMany.js +44 -0
- package/dist/deleteOne.js +47 -0
- package/dist/deleteVersions.js +46 -0
- package/dist/destroy.js +16 -0
- package/dist/find/buildFindManyArgs.js +61 -0
- package/dist/find/chainMethods.js +21 -0
- package/dist/find/findMany.js +197 -0
- package/dist/find/traverseFields.js +118 -0
- package/dist/find.js +35 -0
- package/dist/findGlobal.js +38 -0
- package/dist/findGlobalVersions.js +39 -0
- package/dist/findOne.js +49 -0
- package/dist/findVersions.js +39 -0
- package/dist/index.js +95 -0
- package/dist/init.js +74 -0
- package/dist/migrate.js +81 -0
- package/dist/migrateStatus.js +54 -0
- package/dist/mock.js +13 -0
- package/dist/queries/buildAndOrConditions.js +39 -0
- package/dist/queries/buildQuery.js +80 -0
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +24 -0
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js +15 -0
- package/dist/queries/createJSONQuery/index.js +64 -0
- package/dist/queries/getTableColumnFromPath.js +333 -0
- package/dist/queries/operatorMap.js +34 -0
- package/dist/queries/parseParams.js +146 -0
- package/dist/queries/sanitizeQueryValue.js +79 -0
- package/dist/queryDrafts.js +56 -0
- package/dist/reference.js +76 -0
- package/dist/schema/build.js +245 -0
- package/dist/schema/createIndex.js +19 -0
- package/dist/schema/parentIDColumnMap.js +18 -0
- package/dist/schema/traverseFields.js +430 -0
- package/dist/schema/validateExistingBlockIsIdentical.js +34 -0
- package/dist/transactions/beginTransaction.js +51 -0
- package/dist/transactions/commitTransaction.js +24 -0
- package/dist/transactions/rollbackTransaction.js +20 -0
- package/dist/transform/read/hasManyNumber.js +20 -0
- package/dist/transform/read/index.js +42 -0
- package/dist/transform/read/relationship.js +74 -0
- package/dist/transform/read/traverseFields.js +325 -0
- package/dist/transform/write/array.js +55 -0
- package/dist/transform/write/blocks.js +56 -0
- package/dist/transform/write/index.js +46 -0
- package/dist/transform/write/numbers.js +21 -0
- package/dist/transform/write/relationships.js +33 -0
- package/dist/transform/write/selects.js +29 -0
- package/dist/transform/write/traverseFields.js +379 -0
- package/dist/transform/write/types.js +6 -0
- package/dist/types.js +6 -0
- package/dist/update.js +48 -0
- package/dist/updateGlobal.js +39 -0
- package/dist/updateGlobalVersion.js +50 -0
- package/dist/updateVersion.js +50 -0
- package/dist/upsertRow/deleteExistingArrayRows.js +20 -0
- package/dist/upsertRow/deleteExistingRowsByPath.js +43 -0
- package/dist/upsertRow/index.js +243 -0
- package/dist/upsertRow/insertArrays.js +64 -0
- package/dist/upsertRow/types.js +6 -0
- package/dist/utilities/appendPrefixToKeys.js +16 -0
- package/dist/utilities/createBlocksMap.js +39 -0
- package/dist/utilities/createMigrationTable.js +23 -0
- package/dist/utilities/createRelationshipMap.js +29 -0
- package/dist/utilities/hasLocalesTable.js +21 -0
- package/dist/utilities/isArrayOfRows.js +15 -0
- package/dist/utilities/migrationTableExists.js +19 -0
- package/dist/webpack.js +30 -0
- package/package.json +47 -0
@@ -0,0 +1,430 @@
|
|
1
|
+
/* eslint-disable no-param-reassign */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "traverseFields", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return traverseFields;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
12
|
+
const _pgcore = require("drizzle-orm/pg-core");
|
13
|
+
const _errors = require("payload/errors");
|
14
|
+
const _types = require("payload/types");
|
15
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
16
|
+
const _hasLocalesTable = require("../utilities/hasLocalesTable");
|
17
|
+
const _build = require("./build");
|
18
|
+
const _createIndex = require("./createIndex");
|
19
|
+
const _parentIDColumnMap = require("./parentIDColumnMap");
|
20
|
+
const _validateExistingBlockIsIdentical = require("./validateExistingBlockIsIdentical");
|
21
|
+
function _interop_require_default(obj) {
|
22
|
+
return obj && obj.__esModule ? obj : {
|
23
|
+
default: obj
|
24
|
+
};
|
25
|
+
}
|
26
|
+
const traverseFields = ({ adapter, buildRelationships, columnPrefix, columns, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName })=>{
|
27
|
+
let hasLocalizedField = false;
|
28
|
+
let hasLocalizedRelationshipField = false;
|
29
|
+
let hasManyNumberField = false;
|
30
|
+
let hasLocalizedManyNumberField = false;
|
31
|
+
let parentIDColType = 'integer';
|
32
|
+
if (columns.id instanceof _pgcore.PgNumericBuilder) parentIDColType = 'numeric';
|
33
|
+
if (columns.id instanceof _pgcore.PgVarcharBuilder) parentIDColType = 'varchar';
|
34
|
+
fields.forEach((field)=>{
|
35
|
+
if ('name' in field && field.name === 'id') return;
|
36
|
+
let columnName;
|
37
|
+
let fieldName;
|
38
|
+
let targetTable = columns;
|
39
|
+
let targetIndexes = indexes;
|
40
|
+
if ((0, _types.fieldAffectsData)(field)) {
|
41
|
+
columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${(0, _tosnakecase.default)(field.name)}`;
|
42
|
+
fieldName = `${fieldPrefix || ''}${field.name}`;
|
43
|
+
// If field is localized,
|
44
|
+
// add the column to the locale table instead of main table
|
45
|
+
if (adapter.payload.config.localization && (field.localized || forceLocalized)) {
|
46
|
+
hasLocalizedField = true;
|
47
|
+
targetTable = localesColumns;
|
48
|
+
targetIndexes = localesIndexes;
|
49
|
+
}
|
50
|
+
if ((field.unique || field.index) && ![
|
51
|
+
'array',
|
52
|
+
'blocks',
|
53
|
+
'group',
|
54
|
+
'point',
|
55
|
+
'relationship',
|
56
|
+
'upload'
|
57
|
+
].includes(field.type) && !(field.type === 'number' && field.hasMany === true)) {
|
58
|
+
targetIndexes[`${field.name}Idx`] = (0, _createIndex.createIndex)({
|
59
|
+
name: fieldName,
|
60
|
+
columnName,
|
61
|
+
unique: disableUnique !== true && field.unique
|
62
|
+
});
|
63
|
+
}
|
64
|
+
}
|
65
|
+
switch(field.type){
|
66
|
+
case 'text':
|
67
|
+
case 'email':
|
68
|
+
case 'code':
|
69
|
+
case 'textarea':
|
70
|
+
{
|
71
|
+
targetTable[fieldName] = (0, _pgcore.varchar)(columnName);
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
case 'number':
|
75
|
+
{
|
76
|
+
if (field.hasMany) {
|
77
|
+
if (field.localized) {
|
78
|
+
hasLocalizedManyNumberField = true;
|
79
|
+
}
|
80
|
+
if (field.index) {
|
81
|
+
hasManyNumberField = 'index';
|
82
|
+
} else if (!hasManyNumberField) {
|
83
|
+
hasManyNumberField = true;
|
84
|
+
}
|
85
|
+
if (field.unique) {
|
86
|
+
throw new _errors.InvalidConfiguration('Unique is not supported in Postgres for hasMany number fields.');
|
87
|
+
}
|
88
|
+
} else {
|
89
|
+
targetTable[fieldName] = (0, _pgcore.numeric)(columnName);
|
90
|
+
}
|
91
|
+
break;
|
92
|
+
}
|
93
|
+
case 'richText':
|
94
|
+
case 'json':
|
95
|
+
{
|
96
|
+
targetTable[fieldName] = (0, _pgcore.jsonb)(columnName);
|
97
|
+
break;
|
98
|
+
}
|
99
|
+
case 'date':
|
100
|
+
{
|
101
|
+
targetTable[fieldName] = (0, _pgcore.timestamp)(columnName, {
|
102
|
+
mode: 'string',
|
103
|
+
precision: 3,
|
104
|
+
withTimezone: true
|
105
|
+
});
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
case 'point':
|
109
|
+
{
|
110
|
+
break;
|
111
|
+
}
|
112
|
+
case 'radio':
|
113
|
+
case 'select':
|
114
|
+
{
|
115
|
+
const enumName = `enum_${newTableName}_${columnPrefix || ''}${(0, _tosnakecase.default)(field.name)}`;
|
116
|
+
adapter.enums[enumName] = (0, _pgcore.pgEnum)(enumName, field.options.map((option)=>{
|
117
|
+
if ((0, _types.optionIsObject)(option)) {
|
118
|
+
return option.value;
|
119
|
+
}
|
120
|
+
return option;
|
121
|
+
}));
|
122
|
+
if (field.type === 'select' && field.hasMany) {
|
123
|
+
const baseColumns = {
|
124
|
+
order: (0, _pgcore.integer)('order').notNull(),
|
125
|
+
parent: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('parent_id').references(()=>adapter.tables[parentTableName].id, {
|
126
|
+
onDelete: 'cascade'
|
127
|
+
}).notNull(),
|
128
|
+
value: adapter.enums[enumName]('value')
|
129
|
+
};
|
130
|
+
const baseExtraConfig = {};
|
131
|
+
if (field.localized) {
|
132
|
+
baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
|
133
|
+
baseExtraConfig.parentOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols.parent, cols.order, cols.locale);
|
134
|
+
} else {
|
135
|
+
baseExtraConfig.parent = (cols)=>(0, _pgcore.index)('parent_idx').on(cols.parent);
|
136
|
+
baseExtraConfig.order = (cols)=>(0, _pgcore.index)('order_idx').on(cols.order);
|
137
|
+
}
|
138
|
+
if (field.index) {
|
139
|
+
baseExtraConfig.value = (cols)=>(0, _pgcore.index)('value_idx').on(cols.value);
|
140
|
+
}
|
141
|
+
const selectTableName = `${newTableName}_${(0, _tosnakecase.default)(fieldName)}`;
|
142
|
+
(0, _build.buildTable)({
|
143
|
+
adapter,
|
144
|
+
baseColumns,
|
145
|
+
baseExtraConfig,
|
146
|
+
disableUnique,
|
147
|
+
fields: [],
|
148
|
+
tableName: selectTableName
|
149
|
+
});
|
150
|
+
relationsToBuild.set(fieldName, selectTableName);
|
151
|
+
const selectTableRelations = (0, _drizzleorm.relations)(adapter.tables[selectTableName], ({ one })=>{
|
152
|
+
const result = {
|
153
|
+
parent: one(adapter.tables[parentTableName], {
|
154
|
+
fields: [
|
155
|
+
adapter.tables[selectTableName].parent
|
156
|
+
],
|
157
|
+
references: [
|
158
|
+
adapter.tables[parentTableName].id
|
159
|
+
]
|
160
|
+
})
|
161
|
+
};
|
162
|
+
return result;
|
163
|
+
});
|
164
|
+
adapter.relations[`relation_${selectTableName}`] = selectTableRelations;
|
165
|
+
} else {
|
166
|
+
targetTable[fieldName] = adapter.enums[enumName](fieldName);
|
167
|
+
}
|
168
|
+
break;
|
169
|
+
}
|
170
|
+
case 'checkbox':
|
171
|
+
{
|
172
|
+
targetTable[fieldName] = (0, _pgcore.boolean)(columnName);
|
173
|
+
break;
|
174
|
+
}
|
175
|
+
case 'array':
|
176
|
+
{
|
177
|
+
const baseColumns = {
|
178
|
+
_order: (0, _pgcore.integer)('_order').notNull(),
|
179
|
+
_parentID: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('_parent_id').references(()=>adapter.tables[parentTableName].id, {
|
180
|
+
onDelete: 'cascade'
|
181
|
+
}).notNull()
|
182
|
+
};
|
183
|
+
const baseExtraConfig = {};
|
184
|
+
if (field.localized && adapter.payload.config.localization) {
|
185
|
+
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
186
|
+
baseExtraConfig._parentOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._order, cols._locale);
|
187
|
+
} else {
|
188
|
+
baseExtraConfig._parentOrder = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._order);
|
189
|
+
}
|
190
|
+
const arrayTableName = `${newTableName}_${(0, _tosnakecase.default)(field.name)}`;
|
191
|
+
const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
192
|
+
adapter,
|
193
|
+
baseColumns,
|
194
|
+
baseExtraConfig,
|
195
|
+
disableUnique,
|
196
|
+
fields: field.fields,
|
197
|
+
rootRelationsToBuild,
|
198
|
+
rootTableIDColType,
|
199
|
+
rootTableName,
|
200
|
+
tableName: arrayTableName
|
201
|
+
});
|
202
|
+
relationsToBuild.set(fieldName, arrayTableName);
|
203
|
+
const arrayTableRelations = (0, _drizzleorm.relations)(adapter.tables[arrayTableName], ({ many, one })=>{
|
204
|
+
const result = {
|
205
|
+
_parentID: one(adapter.tables[parentTableName], {
|
206
|
+
fields: [
|
207
|
+
adapter.tables[arrayTableName]._parentID
|
208
|
+
],
|
209
|
+
references: [
|
210
|
+
adapter.tables[parentTableName].id
|
211
|
+
]
|
212
|
+
})
|
213
|
+
};
|
214
|
+
if ((0, _hasLocalesTable.hasLocalesTable)(field.fields)) {
|
215
|
+
result._locales = many(adapter.tables[`${arrayTableName}_locales`]);
|
216
|
+
}
|
217
|
+
subRelationsToBuild.forEach((val, key)=>{
|
218
|
+
result[key] = many(adapter.tables[val]);
|
219
|
+
});
|
220
|
+
return result;
|
221
|
+
});
|
222
|
+
adapter.relations[`relations_${arrayTableName}`] = arrayTableRelations;
|
223
|
+
break;
|
224
|
+
}
|
225
|
+
case 'blocks':
|
226
|
+
{
|
227
|
+
field.blocks.forEach((block)=>{
|
228
|
+
const blockTableName = `${rootTableName}_blocks_${(0, _tosnakecase.default)(block.slug)}`;
|
229
|
+
if (!adapter.tables[blockTableName]) {
|
230
|
+
const baseColumns = {
|
231
|
+
_order: (0, _pgcore.integer)('_order').notNull(),
|
232
|
+
_parentID: _parentIDColumnMap.parentIDColumnMap[rootTableIDColType]('_parent_id').references(()=>adapter.tables[rootTableName].id, {
|
233
|
+
onDelete: 'cascade'
|
234
|
+
}).notNull(),
|
235
|
+
_path: (0, _pgcore.text)('_path').notNull()
|
236
|
+
};
|
237
|
+
const baseExtraConfig = {};
|
238
|
+
if (field.localized && adapter.payload.config.localization) {
|
239
|
+
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
240
|
+
baseExtraConfig._parentPathOrderLocale = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._path, cols._order, cols._locale);
|
241
|
+
} else {
|
242
|
+
baseExtraConfig._parentPathOrder = (cols)=>(0, _pgcore.unique)().on(cols._parentID, cols._path, cols._order);
|
243
|
+
}
|
244
|
+
const { relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
245
|
+
adapter,
|
246
|
+
baseColumns,
|
247
|
+
baseExtraConfig,
|
248
|
+
disableUnique,
|
249
|
+
fields: block.fields,
|
250
|
+
rootRelationsToBuild,
|
251
|
+
rootTableIDColType,
|
252
|
+
rootTableName,
|
253
|
+
tableName: blockTableName
|
254
|
+
});
|
255
|
+
const blockTableRelations = (0, _drizzleorm.relations)(adapter.tables[blockTableName], ({ many, one })=>{
|
256
|
+
const result = {
|
257
|
+
_parentID: one(adapter.tables[rootTableName], {
|
258
|
+
fields: [
|
259
|
+
adapter.tables[blockTableName]._parentID
|
260
|
+
],
|
261
|
+
references: [
|
262
|
+
adapter.tables[rootTableName].id
|
263
|
+
]
|
264
|
+
})
|
265
|
+
};
|
266
|
+
if ((0, _hasLocalesTable.hasLocalesTable)(block.fields)) {
|
267
|
+
result._locales = many(adapter.tables[`${blockTableName}_locales`]);
|
268
|
+
}
|
269
|
+
subRelationsToBuild.forEach((val, key)=>{
|
270
|
+
result[key] = many(adapter.tables[val]);
|
271
|
+
});
|
272
|
+
return result;
|
273
|
+
});
|
274
|
+
adapter.relations[`relations_${blockTableName}`] = blockTableRelations;
|
275
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
276
|
+
(0, _validateExistingBlockIsIdentical.validateExistingBlockIsIdentical)({
|
277
|
+
block,
|
278
|
+
localized: field.localized,
|
279
|
+
rootTableName,
|
280
|
+
table: adapter.tables[blockTableName]
|
281
|
+
});
|
282
|
+
}
|
283
|
+
rootRelationsToBuild.set(`_blocks_${block.slug}`, blockTableName);
|
284
|
+
});
|
285
|
+
break;
|
286
|
+
}
|
287
|
+
case 'tab':
|
288
|
+
case 'group':
|
289
|
+
{
|
290
|
+
if (!('name' in field)) {
|
291
|
+
const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField } = traverseFields({
|
292
|
+
adapter,
|
293
|
+
buildRelationships,
|
294
|
+
columnPrefix,
|
295
|
+
columns,
|
296
|
+
disableUnique,
|
297
|
+
fieldPrefix,
|
298
|
+
fields: field.fields,
|
299
|
+
forceLocalized,
|
300
|
+
indexes,
|
301
|
+
localesColumns,
|
302
|
+
localesIndexes,
|
303
|
+
newTableName: parentTableName,
|
304
|
+
parentTableName,
|
305
|
+
relationsToBuild,
|
306
|
+
relationships,
|
307
|
+
rootRelationsToBuild,
|
308
|
+
rootTableIDColType,
|
309
|
+
rootTableName
|
310
|
+
});
|
311
|
+
if (groupHasLocalizedField) hasLocalizedField = true;
|
312
|
+
if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
313
|
+
if (groupHasManyNumberField) hasManyNumberField = true;
|
314
|
+
if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
|
315
|
+
break;
|
316
|
+
}
|
317
|
+
const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField } = traverseFields({
|
318
|
+
adapter,
|
319
|
+
buildRelationships,
|
320
|
+
columnPrefix: `${columnName}_`,
|
321
|
+
columns,
|
322
|
+
disableUnique,
|
323
|
+
fieldPrefix: `${fieldName}_`,
|
324
|
+
fields: field.fields,
|
325
|
+
forceLocalized: field.localized,
|
326
|
+
indexes,
|
327
|
+
localesColumns,
|
328
|
+
localesIndexes,
|
329
|
+
newTableName: `${parentTableName}_${columnName}`,
|
330
|
+
parentTableName,
|
331
|
+
relationsToBuild,
|
332
|
+
relationships,
|
333
|
+
rootRelationsToBuild,
|
334
|
+
rootTableIDColType,
|
335
|
+
rootTableName
|
336
|
+
});
|
337
|
+
if (groupHasLocalizedField) hasLocalizedField = true;
|
338
|
+
if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
339
|
+
if (groupHasManyNumberField) hasManyNumberField = true;
|
340
|
+
if (groupHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
|
341
|
+
break;
|
342
|
+
}
|
343
|
+
case 'tabs':
|
344
|
+
{
|
345
|
+
const { hasLocalizedField: tabHasLocalizedField, hasLocalizedManyNumberField: tabHasLocalizedManyNumberField, hasLocalizedRelationshipField: tabHasLocalizedRelationshipField, hasManyNumberField: tabHasManyNumberField } = traverseFields({
|
346
|
+
adapter,
|
347
|
+
buildRelationships,
|
348
|
+
columnPrefix,
|
349
|
+
columns,
|
350
|
+
disableUnique,
|
351
|
+
fieldPrefix,
|
352
|
+
fields: field.tabs.map((tab)=>({
|
353
|
+
...tab,
|
354
|
+
type: 'tab'
|
355
|
+
})),
|
356
|
+
forceLocalized,
|
357
|
+
indexes,
|
358
|
+
localesColumns,
|
359
|
+
localesIndexes,
|
360
|
+
newTableName,
|
361
|
+
parentTableName,
|
362
|
+
relationsToBuild,
|
363
|
+
relationships,
|
364
|
+
rootRelationsToBuild,
|
365
|
+
rootTableIDColType,
|
366
|
+
rootTableName
|
367
|
+
});
|
368
|
+
if (tabHasLocalizedField) hasLocalizedField = true;
|
369
|
+
if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
370
|
+
if (tabHasManyNumberField) hasManyNumberField = true;
|
371
|
+
if (tabHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
|
372
|
+
break;
|
373
|
+
}
|
374
|
+
case 'row':
|
375
|
+
case 'collapsible':
|
376
|
+
{
|
377
|
+
const { hasLocalizedField: rowHasLocalizedField, hasLocalizedManyNumberField: rowHasLocalizedManyNumberField, hasLocalizedRelationshipField: rowHasLocalizedRelationshipField, hasManyNumberField: rowHasManyNumberField } = traverseFields({
|
378
|
+
adapter,
|
379
|
+
buildRelationships,
|
380
|
+
columnPrefix,
|
381
|
+
columns,
|
382
|
+
disableUnique,
|
383
|
+
fieldPrefix,
|
384
|
+
fields: field.fields,
|
385
|
+
forceLocalized,
|
386
|
+
indexes,
|
387
|
+
localesColumns,
|
388
|
+
localesIndexes,
|
389
|
+
newTableName: parentTableName,
|
390
|
+
parentTableName,
|
391
|
+
relationsToBuild,
|
392
|
+
relationships,
|
393
|
+
rootRelationsToBuild,
|
394
|
+
rootTableIDColType,
|
395
|
+
rootTableName
|
396
|
+
});
|
397
|
+
if (rowHasLocalizedField) hasLocalizedField = true;
|
398
|
+
if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
399
|
+
if (rowHasManyNumberField) hasManyNumberField = true;
|
400
|
+
if (rowHasLocalizedManyNumberField) hasLocalizedManyNumberField = true;
|
401
|
+
break;
|
402
|
+
}
|
403
|
+
case 'relationship':
|
404
|
+
case 'upload':
|
405
|
+
if (Array.isArray(field.relationTo)) {
|
406
|
+
field.relationTo.forEach((relation)=>relationships.add(relation));
|
407
|
+
} else {
|
408
|
+
relationships.add(field.relationTo);
|
409
|
+
}
|
410
|
+
if (field.localized && adapter.payload.config.localization) {
|
411
|
+
hasLocalizedRelationshipField = true;
|
412
|
+
}
|
413
|
+
break;
|
414
|
+
default:
|
415
|
+
break;
|
416
|
+
}
|
417
|
+
const condition = field.admin && field.admin.condition;
|
418
|
+
if (targetTable[fieldName] && 'required' in field && field.required && !condition) {
|
419
|
+
targetTable[fieldName].notNull();
|
420
|
+
}
|
421
|
+
});
|
422
|
+
return {
|
423
|
+
hasLocalizedField,
|
424
|
+
hasLocalizedManyNumberField,
|
425
|
+
hasLocalizedRelationshipField,
|
426
|
+
hasManyNumberField
|
427
|
+
};
|
428
|
+
};
|
429
|
+
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHVuaXF1ZSxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIH0gZnJvbSAnLi92YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGNvbHVtblByZWZpeD86IHN0cmluZ1xuICBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGRpc2FibGVVbmlxdWU/OiBib29sZWFuXG4gIGZpZWxkUHJlZml4Pzogc3RyaW5nXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBmb3JjZUxvY2FsaXplZD86IGJvb2xlYW5cbiAgaW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGxvY2FsZXNJbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbmV3VGFibGVOYW1lOiBzdHJpbmdcbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxuICByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPlxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlOiBzdHJpbmdcbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG59XG5cbnR5cGUgUmVzdWx0ID0ge1xuICBoYXNMb2NhbGl6ZWRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGxldCBwYXJlbnRJRENvbFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHVuaXF1ZTogZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGBlbnVtXyR7bmV3VGFibGVOYW1lfV8ke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge31cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50T3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5wYXJlbnQsIGNvbHMub3JkZXIsIGNvbHMubG9jYWxlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcucGFyZW50ID0gKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWR4Jykub24oY29scy5wYXJlbnQpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcub3JkZXIgPSAoY29scykgPT4gaW5kZXgoJ29yZGVyX2lkeCcpLm9uKGNvbHMub3JkZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoJ3ZhbHVlX2lkeCcpLm9uKGNvbHMudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkTmFtZSl9YFxuXG4gICAgICAgICAgYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgX29yZGVyOiBpbnRlZ2VyKCdfb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgID4gPSB7fVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRPcmRlckxvY2FsZSA9IChjb2xzKSA9PlxuICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX29yZGVyLCBjb2xzLl9sb2NhbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRPcmRlciA9IChjb2xzKSA9PiB1bmlxdWUoKS5vbihjb2xzLl9wYXJlbnRJRCwgY29scy5fb3JkZXIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG5cbiAgICAgICAgY29uc3QgeyByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YXJyYXlUYWJsZU5hbWV9YF0gPSBhcnJheVRhYmxlUmVsYXRpb25zXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7fVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9wYXJlbnRQYXRoT3JkZXJMb2NhbGUgPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUoKS5vbihjb2xzLl9wYXJlbnRJRCwgY29scy5fcGF0aCwgY29scy5fb3JkZXIsIGNvbHMuX2xvY2FsZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fcGFyZW50UGF0aE9yZGVyID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgdW5pcXVlKCkub24oY29scy5fcGFyZW50SUQsIGNvbHMuX3BhdGgsIGNvbHMuX29yZGVyKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGJsb2NrLmZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoYWRhcHRlci50YWJsZXNbYCR7YmxvY2tUYWJsZU5hbWV9X2xvY2FsZXNgXSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YmxvY2tUYWJsZU5hbWV9YF0gPSBibG9ja1RhYmxlUmVsYXRpb25zXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCh7XG4gICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICBsb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQuc2V0KGBfYmxvY2tzXyR7YmxvY2suc2x1Z31gLCBibG9ja1RhYmxlTmFtZSlcbiAgICAgICAgfSlcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWInOlxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmICghKCduYW1lJyBpbiBmaWVsZCkpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogdGFiSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGZpZWxkLnJlbGF0aW9uVG8uZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uc2hpcHMuYWRkKHJlbGF0aW9uKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLmFkZChmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAodGFyZ2V0VGFibGVbZmllbGROYW1lXSAmJiAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkICYmICFjb25kaXRpb24pIHtcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0ubm90TnVsbCgpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImNvbHVtblByZWZpeCIsImNvbHVtbnMiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicGFyZW50SURDb2xUeXBlIiwiaWQiLCJQZ051bWVyaWNCdWlsZGVyIiwiUGdWYXJjaGFyQnVpbGRlciIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJjb2x1bW5OYW1lIiwiZmllbGROYW1lIiwidGFyZ2V0VGFibGUiLCJ0YXJnZXRJbmRleGVzIiwiZmllbGRBZmZlY3RzRGF0YSIsInRvU25ha2VDYXNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNyZWF0ZUluZGV4IiwidmFyY2hhciIsIkludmFsaWRDb25maWd1cmF0aW9uIiwibnVtZXJpYyIsImpzb25iIiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImVudW1OYW1lIiwiZW51bXMiLCJwZ0VudW0iLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwib3B0aW9uSXNPYmplY3QiLCJ2YWx1ZSIsImJhc2VDb2x1bW5zIiwib3JkZXIiLCJpbnRlZ2VyIiwibm90TnVsbCIsInBhcmVudCIsInBhcmVudElEQ29sdW1uTWFwIiwicmVmZXJlbmNlcyIsInRhYmxlcyIsIm9uRGVsZXRlIiwiYmFzZUV4dHJhQ29uZmlnIiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsInBhcmVudE9yZGVyTG9jYWxlIiwiY29scyIsIm9uIiwic2VsZWN0VGFibGVOYW1lIiwiYnVpbGRUYWJsZSIsInRhYmxlTmFtZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwiYm9vbGVhbiIsIl9vcmRlciIsIl9wYXJlbnRJRCIsIl9sb2NhbGUiLCJfcGFyZW50T3JkZXJMb2NhbGUiLCJfcGFyZW50T3JkZXIiLCJhcnJheVRhYmxlTmFtZSIsInN1YlJlbGF0aW9uc1RvQnVpbGQiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwidmFsIiwia2V5IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja1RhYmxlTmFtZSIsInNsdWciLCJfcGF0aCIsInRleHQiLCJfcGFyZW50UGF0aE9yZGVyTG9jYWxlIiwiX3BhcmVudFBhdGhPcmRlciIsImJsb2NrVGFibGVSZWxhdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsInRhYmxlIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYnMiLCJ0YWIiLCJyb3dIYXNMb2NhbGl6ZWRGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwiY29uZGl0aW9uIiwiYWRtaW4iLCJyZXF1aXJlZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTREdkJBOzs7ZUFBQUE7Ozs0QkF2RGE7d0JBY25CO3dCQUM4Qjt1QkFDWTtvRUFDekI7aUNBSVE7dUJBQ0w7NkJBQ0M7bUNBQ007a0RBQ2U7Ozs7OztBQThCMUMsTUFBTUEsaUJBQWlCLENBQUMsRUFDN0JDLE9BQU8sRUFDUEMsa0JBQWtCLEVBQ2xCQyxZQUFZLEVBQ1pDLE9BQU8sRUFDUEMsZ0JBQWdCLEtBQUssRUFDckJDLFdBQVcsRUFDWEMsTUFBTSxFQUNOQyxjQUFjLEVBQ2RDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxjQUFj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
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "validateExistingBlockIsIdentical", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return validateExistingBlockIsIdentical;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _errors = require("payload/errors");
|
12
|
+
const _utilities = require("payload/utilities");
|
13
|
+
const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, table })=>{
|
14
|
+
if (table) {
|
15
|
+
const fieldNames = (0, _utilities.flattenTopLevelFields)(block.fields).flatMap((field)=>field.name);
|
16
|
+
Object.keys(table).forEach((fieldName)=>{
|
17
|
+
if (![
|
18
|
+
'_locale',
|
19
|
+
'_order',
|
20
|
+
'_parentID',
|
21
|
+
'_path'
|
22
|
+
].includes(fieldName)) {
|
23
|
+
if (fieldNames.indexOf(fieldName) === -1) {
|
24
|
+
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One block includes the field ${fieldName}, while the other block does not.`);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
});
|
28
|
+
if (Boolean(localized) !== Boolean(table._locale)) {
|
29
|
+
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
};
|
33
|
+
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9jayB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMgfSBmcm9tICdwYXlsb2FkL3V0aWxpdGllcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljVGFibGUgfSBmcm9tICcuLi90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBibG9jazogQmxvY2tcbiAgbG9jYWxpemVkOiBib29sZWFuXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xuICB0YWJsZTogR2VuZXJpY1RhYmxlXG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCA9ICh7XG4gIGJsb2NrLFxuICBsb2NhbGl6ZWQsXG4gIHJvb3RUYWJsZU5hbWUsXG4gIHRhYmxlLFxufTogQXJncyk6IHZvaWQgPT4ge1xuICBpZiAodGFibGUpIHtcbiAgICBjb25zdCBmaWVsZE5hbWVzID0gZmxhdHRlblRvcExldmVsRmllbGRzKGJsb2NrLmZpZWxkcykuZmxhdE1hcCgoZmllbGQpID0+IGZpZWxkLm5hbWUpXG5cbiAgICBPYmplY3Qua2V5cyh0YWJsZSkuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICBpZiAoIVsnX2xvY2FsZScsICdfb3JkZXInLCAnX3BhcmVudElEJywgJ19wYXRoJ10uaW5jbHVkZXMoZmllbGROYW1lKSkge1xuICAgICAgICBpZiAoZmllbGROYW1lcy5pbmRleE9mKGZpZWxkTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgYFRoZSB0YWJsZSAke3Jvb3RUYWJsZU5hbWV9IGhhcyBtdWx0aXBsZSBibG9ja3Mgd2l0aCBzbHVnICR7YmxvY2suc2x1Z30sIGJ1dCB0aGUgc2NoZW1hcyBkbyBub3QgbWF0Y2guIE9uZSBibG9jayBpbmNsdWRlcyB0aGUgZmllbGQgJHtmaWVsZE5hbWV9LCB3aGlsZSB0aGUgb3RoZXIgYmxvY2sgZG9lcyBub3QuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKEJvb2xlYW4obG9jYWxpemVkKSAhPT0gQm9vbGVhbih0YWJsZS5fbG9jYWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICBgVGhlIHRhYmxlICR7cm9vdFRhYmxlTmFtZX0gaGFzIG11bHRpcGxlIGJsb2NrcyB3aXRoIHNsdWcgJHtibG9jay5zbHVnfSwgYnV0IHRoZSBzY2hlbWFzIGRvIG5vdCBtYXRjaC4gT25lIGlzIGxvY2FsaXplZCwgYnV0IGFub3RoZXIgaXMgbm90LiBCbG9jayBzY2hlbWFzIG9mIHRoZSBzYW1lIG5hbWUgbXVzdCBtYXRjaCBleGFjdGx5LmAsXG4gICAgICApXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsidmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwiLCJibG9jayIsImxvY2FsaXplZCIsInJvb3RUYWJsZU5hbWUiLCJ0YWJsZSIsImZpZWxkTmFtZXMiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaWVsZHMiLCJmbGF0TWFwIiwiZmllbGQiLCJuYW1lIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJmaWVsZE5hbWUiLCJpbmNsdWRlcyIsImluZGV4T2YiLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsInNsdWciLCJCb29sZWFuIiwiX2xvY2FsZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFjYUE7OztlQUFBQTs7O3dCQVp3QjsyQkFDQztBQVcvQixNQUFNQSxtQ0FBbUMsQ0FBQyxFQUMvQ0MsS0FBSyxFQUNMQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsS0FBSyxFQUNBO0lBQ0wsSUFBSUEsT0FBTztRQUNULE1BQU1DLGFBQWFDLElBQUFBLGdDQUFxQixFQUFDTCxNQUFNTSxNQUFNLEVBQUVDLE9BQU8sQ0FBQyxDQUFDQyxRQUFVQSxNQUFNQyxJQUFJO1FBRXBGQyxPQUFPQyxJQUFJLENBQUNSLE9BQU9TLE9BQU8sQ0FBQyxDQUFDQztZQUMxQixJQUFJLENBQUM7Z0JBQUM7Z0JBQVc7Z0JBQVU7Z0JBQWE7YUFBUSxDQUFDQyxRQUFRLENBQUNELFlBQVk7Z0JBQ3BFLElBQUlULFdBQVdXLE9BQU8sQ0FBQ0YsZUFBZSxDQUFDLEdBQUc7b0JBQ3hDLE1BQU0sSUFBSUcsNEJBQW9CLENBQzVCLENBQUMsVUFBVSxFQUFFZCxjQUFjLCtCQUErQixFQUFFRixNQUFNaUIsSUFBSSxDQUFDLDZEQUE2RCxFQUFFSixVQUFVLGlDQUFpQyxDQUFDO2dCQUV0TDtZQUNGO1FBQ0Y7UUFFQSxJQUFJSyxRQUFRakIsZUFBZWlCLFFBQVFmLE1BQU1nQixPQUFPLEdBQUc7WUFDakQsTUFBTSxJQUFJSCw0QkFBb0IsQ0FDNUIsQ0FBQyxVQUFVLEVBQUVkLGNBQWMsK0JBQStCLEVBQUVGLE1BQU1pQixJQUFJLENBQUMsd0hBQXdILENBQUM7UUFFcE07SUFDRjtBQUNGIn0=
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "beginTransaction", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return beginTransaction;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _uuid = require("uuid");
|
12
|
+
const beginTransaction = async function beginTransaction() {
|
13
|
+
let id;
|
14
|
+
try {
|
15
|
+
id = (0, _uuid.v4)();
|
16
|
+
let reject;
|
17
|
+
let resolve;
|
18
|
+
let transaction;
|
19
|
+
let transactionReady;
|
20
|
+
// Drizzle only exposes a transactions API that is sufficient if you
|
21
|
+
// can directly pass around the `tx` argument. But our operations are spread
|
22
|
+
// over many files and we don't want to pass the `tx` around like that,
|
23
|
+
// so instead, we "lift" up the `resolve` and `reject` methods
|
24
|
+
// and will call them in our respective transaction methods
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
26
|
+
this.db.transaction(async (tx)=>{
|
27
|
+
transaction = tx;
|
28
|
+
await new Promise((res, rej)=>{
|
29
|
+
transactionReady();
|
30
|
+
resolve = res;
|
31
|
+
reject = rej;
|
32
|
+
});
|
33
|
+
}).catch(()=>{
|
34
|
+
// swallow
|
35
|
+
});
|
36
|
+
// Need to wait until the transaction is ready
|
37
|
+
// before binding its `resolve` and `reject` methods below
|
38
|
+
await new Promise((resolve)=>transactionReady = resolve);
|
39
|
+
this.sessions[id] = {
|
40
|
+
db: transaction,
|
41
|
+
reject,
|
42
|
+
resolve
|
43
|
+
};
|
44
|
+
} catch (err) {
|
45
|
+
this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err);
|
46
|
+
process.exit(1);
|
47
|
+
}
|
48
|
+
return id;
|
49
|
+
};
|
50
|
+
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYmVnaW5UcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJlZ2luVHJhbnNhY3Rpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBEcml6emxlVHJhbnNhY3Rpb24sIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgYmVnaW5UcmFuc2FjdGlvbjogQmVnaW5UcmFuc2FjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbikge1xuICBsZXQgaWRcbiAgdHJ5IHtcbiAgICBpZCA9IHV1aWQoKVxuXG4gICAgbGV0IHJlamVjdDogKHZhbHVlPzogdW5rbm93bikgPT4gdm9pZFxuICAgIGxldCByZXNvbHZlOiAodmFsdWU/OiB1bmtub3duKSA9PiB2b2lkXG4gICAgbGV0IHRyYW5zYWN0aW9uOiBEcml6emxlVHJhbnNhY3Rpb25cblxuICAgIGxldCB0cmFuc2FjdGlvblJlYWR5OiAodmFsdWU/OiB1bmtub3duKSA9PiB2b2lkXG5cbiAgICAvLyBEcml6emxlIG9ubHkgZXhwb3NlcyBhIHRyYW5zYWN0aW9ucyBBUEkgdGhhdCBpcyBzdWZmaWNpZW50IGlmIHlvdVxuICAgIC8vIGNhbiBkaXJlY3RseSBwYXNzIGFyb3VuZCB0aGUgYHR4YCBhcmd1bWVudC4gQnV0IG91ciBvcGVyYXRpb25zIGFyZSBzcHJlYWRcbiAgICAvLyBvdmVyIG1hbnkgZmlsZXMgYW5kIHdlIGRvbid0IHdhbnQgdG8gcGFzcyB0aGUgYHR4YCBhcm91bmQgbGlrZSB0aGF0LFxuICAgIC8vIHNvIGluc3RlYWQsIHdlIFwibGlmdFwiIHVwIHRoZSBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIG1ldGhvZHNcbiAgICAvLyBhbmQgd2lsbCBjYWxsIHRoZW0gaW4gb3VyIHJlc3BlY3RpdmUgdHJhbnNhY3Rpb24gbWV0aG9kc1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIHRoaXMuZGJcbiAgICAgIC50cmFuc2FjdGlvbihhc3luYyAodHgpID0+IHtcbiAgICAgICAgdHJhbnNhY3Rpb24gPSB0eFxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgICB0cmFuc2FjdGlvblJlYWR5KClcbiAgICAgICAgICByZXNvbHZlID0gcmVzXG4gICAgICAgICAgcmVqZWN0ID0gcmVqXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gc3dhbGxvd1xuICAgICAgfSlcblxuICAgIC8vIE5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgdHJhbnNhY3Rpb24gaXMgcmVhZHlcbiAgICAvLyBiZWZvcmUgYmluZGluZyBpdHMgYHJlc29sdmVgIGFuZCBgcmVqZWN0YCBtZXRob2RzIGJlbG93XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+ICh0cmFuc2FjdGlvblJlYWR5ID0gcmVzb2x2ZSkpXG5cbiAgICB0aGlzLnNlc3Npb25zW2lkXSA9IHtcbiAgICAgIGRiOiB0cmFuc2FjdGlvbixcbiAgICAgIHJlamVjdCxcbiAgICAgIHJlc29sdmUsXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnBheWxvYWQubG9nZ2VyLmVycm9yKGBFcnJvcjogY2Fubm90IGJlZ2luIHRyYW5zYWN0aW9uOiAke2Vyci5tZXNzYWdlfWAsIGVycilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuXG4gIHJldHVybiBpZFxufVxuIl0sIm5hbWVzIjpbImJlZ2luVHJhbnNhY3Rpb24iLCJpZCIsInV1aWQiLCJyZWplY3QiLCJyZXNvbHZlIiwidHJhbnNhY3Rpb24iLCJ0cmFuc2FjdGlvblJlYWR5IiwiZGIiLCJ0eCIsIlByb21pc2UiLCJyZXMiLCJyZWoiLCJjYXRjaCIsInNlc3Npb25zIiwiZXJyIiwicGF5bG9hZCIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInByb2Nlc3MiLCJleGl0Il0sIm1hcHBpbmdzIjoiOzs7OytCQU1hQTs7O2VBQUFBOzs7c0JBSmM7QUFJcEIsTUFBTUEsbUJBQXFDLGVBQWVBO0lBRy9ELElBQUlDO0lBQ0osSUFBSTtRQUNGQSxLQUFLQyxJQUFBQSxRQUFJO1FBRVQsSUFBSUM7UUFDSixJQUFJQztRQUNKLElBQUlDO1FBRUosSUFBSUM7UUFFSixvRUFBb0U7UUFDcEUsNEVBQTRFO1FBQzVFLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsMkRBQTJEO1FBRTNELG1FQUFtRTtRQUNuRSxJQUFJLENBQUNDLEVBQUUsQ0FDSkYsV0FBVyxDQUFDLE9BQU9HO1lBQ2xCSCxjQUFjRztZQUNkLE1BQU0sSUFBSUMsUUFBUSxDQUFDQyxLQUFLQztnQkFDdEJMO2dCQUNBRixVQUFVTTtnQkFDVlAsU0FBU1E7WUFDWDtRQUNGLEdBQ0NDLEtBQUssQ0FBQztRQUNMLFVBQVU7UUFDWjtRQUVGLDhDQUE4QztRQUM5QywwREFBMEQ7UUFDMUQsTUFBTSxJQUFJSCxRQUFRLENBQUNMLFVBQWFFLG1CQUFtQkY7UUFFbkQsSUFBSSxDQUFDUyxRQUFRLENBQUNaLEdBQUcsR0FBRztZQUNsQk0sSUFBSUY7WUFDSkY7WUFDQUM7UUFDRjtJQUNGLEVBQUUsT0FBT1UsS0FBSztRQUNaLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLGlDQUFpQyxFQUFFSCxJQUFJSSxPQUFPLENBQUMsQ0FBQyxFQUFFSjtRQUM3RUssUUFBUUMsSUFBSSxDQUFDO0lBQ2Y7SUFFQSxPQUFPbkI7QUFDVCJ9
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "commitTransaction", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return commitTransaction;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const commitTransaction = async function commitTransaction(id) {
|
12
|
+
if (!this.sessions[id]) {
|
13
|
+
this.payload.logger.warn('commitTransaction called when no transaction exists');
|
14
|
+
return;
|
15
|
+
}
|
16
|
+
try {
|
17
|
+
this.sessions[id].resolve();
|
18
|
+
} catch (err) {
|
19
|
+
this.sessions[id].reject();
|
20
|
+
}
|
21
|
+
delete this.sessions[id];
|
22
|
+
};
|
23
|
+
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvY29tbWl0VHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21taXRUcmFuc2FjdGlvbiB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmV4cG9ydCBjb25zdCBjb21taXRUcmFuc2FjdGlvbjogQ29tbWl0VHJhbnNhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBjb21taXRUcmFuc2FjdGlvbihpZCkge1xuICBpZiAoIXRoaXMuc2Vzc2lvbnNbaWRdKSB7XG4gICAgdGhpcy5wYXlsb2FkLmxvZ2dlci53YXJuKCdjb21taXRUcmFuc2FjdGlvbiBjYWxsZWQgd2hlbiBubyB0cmFuc2FjdGlvbiBleGlzdHMnKVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICB0aGlzLnNlc3Npb25zW2lkXS5yZXNvbHZlKClcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgdGhpcy5zZXNzaW9uc1tpZF0ucmVqZWN0KClcbiAgfVxuXG4gIGRlbGV0ZSB0aGlzLnNlc3Npb25zW2lkXVxufVxuIl0sIm5hbWVzIjpbImNvbW1pdFRyYW5zYWN0aW9uIiwiaWQiLCJzZXNzaW9ucyIsInBheWxvYWQiLCJsb2dnZXIiLCJ3YXJuIiwicmVzb2x2ZSIsImVyciIsInJlamVjdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFFYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsb0JBQXVDLGVBQWVBLGtCQUFrQkMsRUFBRTtJQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFRLENBQUNELEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUNFLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUM7UUFDekI7SUFDRjtJQUVBLElBQUk7UUFDRixJQUFJLENBQUNILFFBQVEsQ0FBQ0QsR0FBRyxDQUFDSyxPQUFPO0lBQzNCLEVBQUUsT0FBT0MsS0FBYztRQUNyQixJQUFJLENBQUNMLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDTyxNQUFNO0lBQzFCO0lBRUEsT0FBTyxJQUFJLENBQUNOLFFBQVEsQ0FBQ0QsR0FBRztBQUMxQiJ9
|