@payloadcms/db-postgres 0.1.0-beta.15 → 0.1.0-beta.17
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +28 -0
- package/dist/createVersion.js +2 -2
- package/dist/find/buildFindManyArgs.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/migrateDown.d.ts +3 -0
- package/dist/migrateDown.d.ts.map +1 -0
- package/dist/migrateDown.js +71 -0
- package/dist/migrateFresh.d.ts +6 -0
- package/dist/migrateFresh.d.ts.map +1 -0
- package/dist/migrateFresh.js +81 -0
- package/dist/migrateRefresh.d.ts +6 -0
- package/dist/migrateRefresh.d.ts.map +1 -0
- package/dist/migrateRefresh.js +114 -0
- package/dist/migrateReset.d.ts +6 -0
- package/dist/migrateReset.d.ts.map +1 -0
- package/dist/migrateReset.js +87 -0
- package/dist/queries/getTableColumnFromPath.js +2 -2
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +7 -7
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +6 -6
- package/dist/transform/read/index.js +4 -4
- package/dist/upsertRow/index.js +2 -2
- package/package.json +2 -2
- package/src/index.ts +8 -0
- package/dist/utilities/migrations.d.ts +0 -15
- package/dist/utilities/migrations.d.ts.map +0 -1
- package/dist/utilities/migrations.js +0 -85
package/dist/upsertRow/index.js
CHANGED
@@ -104,7 +104,7 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
104
104
|
// //////////////////////////////////
|
105
105
|
// INSERT RELATIONSHIPS
|
106
106
|
// //////////////////////////////////
|
107
|
-
const relationshipsTableName = `${tableName}
|
107
|
+
const relationshipsTableName = `${tableName}_rels`;
|
108
108
|
if (operation === 'update') {
|
109
109
|
await (0, _deleteExistingRowsByPath.deleteExistingRowsByPath)({
|
110
110
|
adapter,
|
@@ -240,4 +240,4 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
240
240
|
return result;
|
241
241
|
};
|
242
242
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgdGFibGVOYW1lLFxuICB1cHNlcnRUYXJnZXQsXG4gIHdoZXJlLFxufTogQXJncyk6IFByb21pc2U8VD4gPT4ge1xuICAvLyBTcGxpdCBvdXQgdGhlIGluY29taW5nIGRhdGEgaW50byB0aGUgY29ycmVzcG9uZGluZzpcbiAgLy8gYmFzZSByb3csIGxvY2FsZXMsIHJlbGF0aW9uc2hpcHMsIGJsb2NrcywgYW5kIGFycmF5c1xuICBjb25zdCByb3dUb0luc2VydCA9IHRyYW5zZm9ybUZvcldyaXRlKHtcbiAgICBkYXRhLFxuICAgIGZpZWxkcyxcbiAgICBwYXRoLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBGaXJzdCwgd2UgaW5zZXJ0IHRoZSBtYWluIHJvd1xuICBsZXQgaW5zZXJ0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB1cHNlcnRUYXJnZXQgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZFxuXG4gICAgaWYgKGlkKSB7XG4gICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCB9KVxuICAgICAgICAucmV0dXJuaW5nKClcbiAgICB9IGVsc2Uge1xuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCwgd2hlcmUgfSlcbiAgICAgICAgLnJldHVybmluZygpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpLnJldHVybmluZygpXG4gIH1cblxuICBjb25zdCBsb2NhbGVzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICBjb25zdCByZWxhdGlvbnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IGJsb2Nrc1RvSW5zZXJ0OiB7IFtibG9ja1R5cGU6IHN0cmluZ106IEJsb2NrUm93VG9JbnNlcnRbXSB9ID0ge31cbiAgY29uc3Qgc2VsZWN0c1RvSW5zZXJ0OiB7IFtzZWxlY3RUYWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfSA9IHt9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5sb2NhbGVzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQubG9jYWxlcykuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxlUm93XSkgPT4ge1xuICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICBsb2NhbGVSb3cuX2xvY2FsZSA9IGxvY2FsZVxuICAgICAgbG9jYWxlc1RvSW5zZXJ0LnB1c2gobG9jYWxlUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgcmVsYXRpb25zaGlwcywgYWRkIHBhcmVudCB0byBlYWNoXG4gIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICByb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uKSA9PiB7XG4gICAgICByZWxhdGlvbi5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG51bWJlcnMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICBpZiAocm93VG9JbnNlcnQubnVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgIG51bWJlclJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgbnVtYmVyc1RvSW5zZXJ0LnB1c2gobnVtYmVyUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0cywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5zZWxlY3RzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQuc2VsZWN0cykuZm9yRWFjaCgoW3NlbGVjdFRhYmxlTmFtZSwgc2VsZWN0Um93c10pID0+IHtcbiAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIHJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICBpZiAoIXNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdKSBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG4gICAgICAgIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdLnB1c2gocm93KVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmJsb2NrcykuZm9yRWFjaCgoYmxvY2tOYW1lKSA9PiB7XG4gICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgIGJsb2NrUm93LnJvdy5fcGFyZW50SUQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgaWYgKCFibG9ja3NUb0luc2VydFtibG9ja05hbWVdKSBibG9ja3NUb0luc2VydFtibG9ja05hbWVdID0gW11cbiAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICB9KVxuICB9KVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIExPQ0FMRVNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGxvY2FsZVRhYmxlID0gYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9sb2NhbGVzYF1cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUobG9jYWxlVGFibGUpLndoZXJlKGVxKGxvY2FsZVRhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cblxuICAgIGF3YWl0IGRiLmluc2VydChsb2NhbGVUYWJsZSkudmFsdWVzKGxvY2FsZXNUb0luc2VydClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIFJFTEFUSU9OU0hJUFNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbGF0aW9uc2hpcHNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBbLi4ucmVsYXRpb25zVG9JbnNlcnQsIC4uLnJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHNUb0RlbGV0ZV0sXG4gICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uc2hpcHNUYWJsZU5hbWVdKS52YWx1ZXMocmVsYXRpb25zVG9JbnNlcnQpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBoYXNNYW55IE5VTUJFUlNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICB0YWJsZU5hbWU6IG51bWJlcnNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChudW1iZXJzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGF3YWl0IGRiLmluc2VydChhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSkudmFsdWVzKG51bWJlcnNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIEJMT0NLU1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgaW5zZXJ0ZWRCbG9ja1Jvd3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICBmb3IgKGNvbnN0IFtibG9ja05hbWUsIGJsb2NrUm93c10gb2YgT2JqZWN0LmVudHJpZXMoYmxvY2tzVG9JbnNlcnQpKSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHBhdGhDb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICByb3dzOiBibG9ja1Jvd3MubWFwKCh7IHJvdyB9KSA9PiByb3cpLFxuICAgICAgICB0YWJsZU5hbWU6IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0gPSBhd2FpdCBkYlxuICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1gXSlcbiAgICAgIC52YWx1ZXMoYmxvY2tSb3dzLm1hcCgoeyByb3cgfSkgPT4gcm93KSlcbiAgICAgIC5yZXR1cm5pbmcoKVxuXG4gICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgIGJsb2NrUm93c1tpXS5yb3cgPSByb3dcbiAgICB9KVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVJbmRleE1hcDogbnVtYmVyW10gPSBbXVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQgPSBibG9ja1Jvd3MucmVkdWNlKChhY2MsIGJsb2NrUm93LCBpKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgICBPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5mb3JFYWNoKChbYmxvY2tMb2NhbGUsIGJsb2NrTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYmxvY2tMb2NhbGVEYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX3BhcmVudElEID0gYmxvY2tSb3cucm93LmlkXG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX2xvY2FsZSA9IGJsb2NrTG9jYWxlXG4gICAgICAgICAgICBhY2MucHVzaChibG9ja0xvY2FsZURhdGEpXG4gICAgICAgICAgICBibG9ja0xvY2FsZUluZGV4TWFwLnB1c2goaSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBbXSlcblxuICAgIGlmIChibG9ja0xvY2FsZVJvd3NUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgIC52YWx1ZXMoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICBhZGFwdGVyLFxuICAgICAgYXJyYXlzOiBibG9ja1Jvd3MubWFwKCh7IGFycmF5cyB9KSA9PiBhcnJheXMpLFxuICAgICAgZGIsXG4gICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLFxuICAgIH0pXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBBUlJBWVMgUkVDVVJTSVZFTFlcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgZm9yIChjb25zdCBhcnJheVRhYmxlTmFtZSBvZiBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5hcnJheXMpKSB7XG4gICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ0FycmF5Um93cyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgYWRhcHRlcixcbiAgICBhcnJheXM6IFtyb3dUb0luc2VydC5hcnJheXNdLFxuICAgIGRiLFxuICAgIHBhcmVudFJvd3M6IFtpbnNlcnRlZFJvd10sXG4gIH0pXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBJTlNFUlQgaGFzTWFueSBTRUxFQ1RTXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBmb3IgKGNvbnN0IFtzZWxlY3RUYWJsZU5hbWUsIHRhYmxlUm93c10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0c1RvSW5zZXJ0KSkge1xuICAgIGNvbnN0IHNlbGVjdFRhYmxlID0gYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXVxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUoc2VsZWN0VGFibGUpLndoZXJlKGVxKHNlbGVjdFRhYmxlLnBhcmVudCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cbiAgICBhd2FpdCBkYi5pbnNlcnQoc2VsZWN0VGFibGUpLnZhbHVlcyh0YWJsZVJvd3MpLnJldHVybmluZygpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFJFVFJJRVZFIE5FV0xZIFVQREFURUQgUk9XXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCBmaW5kTWFueUFyZ3MgPSBidWlsZEZpbmRNYW55QXJncyh7XG4gICAgYWRhcHRlcixcbiAgICBkZXB0aDogMCxcbiAgICBmaWVsZHMsXG4gICAgdGFibGVOYW1lLFxuICB9KVxuXG4gIGZpbmRNYW55QXJncy53aGVyZSA9IGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGluc2VydGVkUm93LmlkKVxuXG4gIGNvbnN0IGRvYyA9IGF3YWl0IGRiLnF1ZXJ5W3RhYmxlTmFtZV0uZmluZEZpcnN0KGZpbmRNYW55QXJncylcblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRSQU5TRk9STSBEQVRBXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm08VD4oe1xuICAgIGNvbmZpZzogYWRhcHRlci5wYXlsb2FkLmNvbmZpZyxcbiAgICBkYXRhOiBkb2MsXG4gICAgZmllbGRzLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsInRyYW5zZm9ybUZvcldyaXRlIiwiaW5zZXJ0ZWRSb3ciLCJ0YXJnZXQiLCJ0YWJsZXMiLCJyb3ciLCJpbnNlcnQiLCJ2YWx1ZXMiLCJvbkNvbmZsaWN0RG9VcGRhdGUiLCJzZXQiLCJyZXR1cm5pbmciLCJsb2NhbGVzVG9JbnNlcnQiLCJyZWxhdGlvbnNUb0luc2VydCIsIm51bWJlcnNUb0luc2VydCIsImJsb2Nrc1RvSW5zZXJ0Iiwic2VsZWN0c1RvSW5zZXJ0IiwiT2JqZWN0Iiwia2V5cyIsImxvY2FsZXMiLCJsZW5ndGgiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImxvY2FsZSIsImxvY2FsZVJvdyIsIl9wYXJlbnRJRCIsIl9sb2NhbGUiLCJwdXNoIiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uIiwicGFyZW50IiwibnVtYmVycyIsIm51bWJlclJvdyIsInNlbGVjdHMiLCJzZWxlY3RUYWJsZU5hbWUiLCJzZWxlY3RSb3dzIiwiYmxvY2tzIiwiYmxvY2tOYW1lIiwiYmxvY2tSb3ciLCJsb2NhbGVUYWJsZSIsImRlbGV0ZSIsImVxIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsImRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCIsImxvY2FsZUNvbHVtbk5hbWUiLCJwYXJlbnRDb2x1bW5OYW1lIiwicGFyZW50SUQiLCJwYXRoQ29sdW1uTmFtZSIsInJvd3MiLCJyZWxhdGlvbnNoaXBzVG9EZWxldGUiLCJudW1iZXJzVGFibGVOYW1lIiwiaW5zZXJ0ZWRCbG9ja1Jvd3MiLCJibG9ja1Jvd3MiLCJtYXAiLCJpIiwiYmxvY2tMb2NhbGVJbmRleE1hcCIsImJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0IiwicmVkdWNlIiwiYWNjIiwiYmxvY2tMb2NhbGUiLCJibG9ja0xvY2FsZURhdGEiLCJpbnNlcnRBcnJheXMiLCJhcnJheXMiLCJwYXJlbnRSb3dzIiwiYXJyYXlUYWJsZU5hbWUiLCJkZWxldGVFeGlzdGluZ0FycmF5Um93cyIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZmluZE1hbnlBcmdzIiwiYnVpbGRGaW5kTWFueUFyZ3MiLCJkZXB0aCIsImRvYyIsInF1ZXJ5IiwiZmluZEZpcnN0IiwicmVzdWx0IiwidHJhbnNmb3JtIiwiY29uZmlnIiwicGF5bG9hZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWV2QkE7OztlQUFBQTs7OzRCQVpNO21DQUtlO3NCQUNSO3VCQUNRO3lDQUNNOzBDQUNDOzhCQUNaO0FBRXRCLE1BQU1BLFlBQVksT0FBNkIsRUFDcERDLEVBQUUsRUFDRkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEVBQUUsRUFDRkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFBRSxFQUNUQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsS0FBSyxFQUNBO0lBQ0wsc0RBQXNEO0lBQ3RELHVEQUF1RDtJQUN2RCxNQUFNQyxjQUFjQyxJQUFBQSx3QkFBaUIsRUFBQztRQUNwQ1Q7UUFDQUU7UUFDQUU7UUFDQUM7SUFDRjtJQUVBLGdDQUFnQztJQUNoQyxJQUFJSztJQUVKLElBQUlQLGNBQWMsVUFBVTtRQUMxQixNQUFNUSxTQUFTTCxnQkFBZ0JQLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxDQUFDUCxFQUFFO1FBRTNELElBQUlBLElBQUk7WUFDTlUsWUFBWUssR0FBRyxDQUFDZixFQUFFLEdBQUdBO1lBQ3BCLENBQUNZLFlBQVksR0FBRyxNQUFNVCxHQUNwQmEsTUFBTSxDQUFDZixRQUFRYSxNQUFNLENBQUNQLFVBQVUsRUFDaENVLE1BQU0sQ0FBQ1AsWUFBWUssR0FBRyxFQUN0Qkcsa0JBQWtCLENBQUM7Z0JBQUVDLEtBQUtULFlBQVlLLEdBQUc7Z0JBQUVGO1lBQU8sR0FDbERPLFNBQVM7UUFDZCxPQUFPO1lBQ0osQ0FBQ1IsWUFBWSxHQUFHLE1BQU1ULEdBQ3BCYSxNQUFNLENBQUNmLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxFQUNoQ1UsTUFBTSxDQUFDUCxZQUFZSyxHQUFHLEVBQ3RCRyxrQkFBa0IsQ0FBQztnQkFBRUMs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
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgdGFibGVOYW1lLFxuICB1cHNlcnRUYXJnZXQsXG4gIHdoZXJlLFxufTogQXJncyk6IFByb21pc2U8VD4gPT4ge1xuICAvLyBTcGxpdCBvdXQgdGhlIGluY29taW5nIGRhdGEgaW50byB0aGUgY29ycmVzcG9uZGluZzpcbiAgLy8gYmFzZSByb3csIGxvY2FsZXMsIHJlbGF0aW9uc2hpcHMsIGJsb2NrcywgYW5kIGFycmF5c1xuICBjb25zdCByb3dUb0luc2VydCA9IHRyYW5zZm9ybUZvcldyaXRlKHtcbiAgICBkYXRhLFxuICAgIGZpZWxkcyxcbiAgICBwYXRoLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBGaXJzdCwgd2UgaW5zZXJ0IHRoZSBtYWluIHJvd1xuICBsZXQgaW5zZXJ0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB1cHNlcnRUYXJnZXQgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZFxuXG4gICAgaWYgKGlkKSB7XG4gICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCB9KVxuICAgICAgICAucmV0dXJuaW5nKClcbiAgICB9IGVsc2Uge1xuICAgICAgO1tpbnNlcnRlZFJvd10gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pXG4gICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAub25Db25mbGljdERvVXBkYXRlKHsgc2V0OiByb3dUb0luc2VydC5yb3csIHRhcmdldCwgd2hlcmUgfSlcbiAgICAgICAgLnJldHVybmluZygpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIDtbaW5zZXJ0ZWRSb3ddID0gYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0pLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpLnJldHVybmluZygpXG4gIH1cblxuICBjb25zdCBsb2NhbGVzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICBjb25zdCByZWxhdGlvbnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gIGNvbnN0IGJsb2Nrc1RvSW5zZXJ0OiB7IFtibG9ja1R5cGU6IHN0cmluZ106IEJsb2NrUm93VG9JbnNlcnRbXSB9ID0ge31cbiAgY29uc3Qgc2VsZWN0c1RvSW5zZXJ0OiB7IFtzZWxlY3RUYWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfSA9IHt9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5sb2NhbGVzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQubG9jYWxlcykuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxlUm93XSkgPT4ge1xuICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICBsb2NhbGVSb3cuX2xvY2FsZSA9IGxvY2FsZVxuICAgICAgbG9jYWxlc1RvSW5zZXJ0LnB1c2gobG9jYWxlUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgcmVsYXRpb25zaGlwcywgYWRkIHBhcmVudCB0byBlYWNoXG4gIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICByb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uKSA9PiB7XG4gICAgICByZWxhdGlvbi5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG51bWJlcnMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICBpZiAocm93VG9JbnNlcnQubnVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgIG51bWJlclJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgbnVtYmVyc1RvSW5zZXJ0LnB1c2gobnVtYmVyUm93KVxuICAgIH0pXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0cywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5zZWxlY3RzKS5sZW5ndGggPiAwKSB7XG4gICAgT2JqZWN0LmVudHJpZXMocm93VG9JbnNlcnQuc2VsZWN0cykuZm9yRWFjaCgoW3NlbGVjdFRhYmxlTmFtZSwgc2VsZWN0Um93c10pID0+IHtcbiAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIHJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICBpZiAoIXNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdKSBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG4gICAgICAgIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdLnB1c2gocm93KVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmJsb2NrcykuZm9yRWFjaCgoYmxvY2tOYW1lKSA9PiB7XG4gICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgIGJsb2NrUm93LnJvdy5fcGFyZW50SUQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgaWYgKCFibG9ja3NUb0luc2VydFtibG9ja05hbWVdKSBibG9ja3NUb0luc2VydFtibG9ja05hbWVdID0gW11cbiAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICB9KVxuICB9KVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIExPQ0FMRVNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGxvY2FsZVRhYmxlID0gYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9sb2NhbGVzYF1cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUobG9jYWxlVGFibGUpLndoZXJlKGVxKGxvY2FsZVRhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cblxuICAgIGF3YWl0IGRiLmluc2VydChsb2NhbGVUYWJsZSkudmFsdWVzKGxvY2FsZXNUb0luc2VydClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIFJFTEFUSU9OU0hJUFNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbHNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBbLi4ucmVsYXRpb25zVG9JbnNlcnQsIC4uLnJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHNUb0RlbGV0ZV0sXG4gICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uc2hpcHNUYWJsZU5hbWVdKS52YWx1ZXMocmVsYXRpb25zVG9JbnNlcnQpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBoYXNNYW55IE5VTUJFUlNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgYWRhcHRlcixcbiAgICAgIGRiLFxuICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICB0YWJsZU5hbWU6IG51bWJlcnNUYWJsZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChudW1iZXJzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgIGF3YWl0IGRiLmluc2VydChhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSkudmFsdWVzKG51bWJlcnNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSU5TRVJUIEJMT0NLU1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgaW5zZXJ0ZWRCbG9ja1Jvd3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICBmb3IgKGNvbnN0IFtibG9ja05hbWUsIGJsb2NrUm93c10gb2YgT2JqZWN0LmVudHJpZXMoYmxvY2tzVG9JbnNlcnQpKSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHBhdGhDb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICByb3dzOiBibG9ja1Jvd3MubWFwKCh7IHJvdyB9KSA9PiByb3cpLFxuICAgICAgICB0YWJsZU5hbWU6IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0gPSBhd2FpdCBkYlxuICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1gXSlcbiAgICAgIC52YWx1ZXMoYmxvY2tSb3dzLm1hcCgoeyByb3cgfSkgPT4gcm93KSlcbiAgICAgIC5yZXR1cm5pbmcoKVxuXG4gICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgIGJsb2NrUm93c1tpXS5yb3cgPSByb3dcbiAgICB9KVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVJbmRleE1hcDogbnVtYmVyW10gPSBbXVxuXG4gICAgY29uc3QgYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQgPSBibG9ja1Jvd3MucmVkdWNlKChhY2MsIGJsb2NrUm93LCBpKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgICBPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5mb3JFYWNoKChbYmxvY2tMb2NhbGUsIGJsb2NrTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYmxvY2tMb2NhbGVEYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX3BhcmVudElEID0gYmxvY2tSb3cucm93LmlkXG4gICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX2xvY2FsZSA9IGJsb2NrTG9jYWxlXG4gICAgICAgICAgICBhY2MucHVzaChibG9ja0xvY2FsZURhdGEpXG4gICAgICAgICAgICBibG9ja0xvY2FsZUluZGV4TWFwLnB1c2goaSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBbXSlcblxuICAgIGlmIChibG9ja0xvY2FsZVJvd3NUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgIC52YWx1ZXMoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICBhZGFwdGVyLFxuICAgICAgYXJyYXlzOiBibG9ja1Jvd3MubWFwKCh7IGFycmF5cyB9KSA9PiBhcnJheXMpLFxuICAgICAgZGIsXG4gICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLFxuICAgIH0pXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIElOU0VSVCBBUlJBWVMgUkVDVVJTSVZFTFlcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgZm9yIChjb25zdCBhcnJheVRhYmxlTmFtZSBvZiBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5hcnJheXMpKSB7XG4gICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ0FycmF5Um93cyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgYWRhcHRlcixcbiAgICBhcnJheXM6IFtyb3dUb0luc2VydC5hcnJheXNdLFxuICAgIGRiLFxuICAgIHBhcmVudFJvd3M6IFtpbnNlcnRlZFJvd10sXG4gIH0pXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBJTlNFUlQgaGFzTWFueSBTRUxFQ1RTXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBmb3IgKGNvbnN0IFtzZWxlY3RUYWJsZU5hbWUsIHRhYmxlUm93c10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0c1RvSW5zZXJ0KSkge1xuICAgIGNvbnN0IHNlbGVjdFRhYmxlID0gYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXVxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkYi5kZWxldGUoc2VsZWN0VGFibGUpLndoZXJlKGVxKHNlbGVjdFRhYmxlLnBhcmVudCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgIH1cbiAgICBhd2FpdCBkYi5pbnNlcnQoc2VsZWN0VGFibGUpLnZhbHVlcyh0YWJsZVJvd3MpLnJldHVybmluZygpXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFJFVFJJRVZFIE5FV0xZIFVQREFURUQgUk9XXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCBmaW5kTWFueUFyZ3MgPSBidWlsZEZpbmRNYW55QXJncyh7XG4gICAgYWRhcHRlcixcbiAgICBkZXB0aDogMCxcbiAgICBmaWVsZHMsXG4gICAgdGFibGVOYW1lLFxuICB9KVxuXG4gIGZpbmRNYW55QXJncy53aGVyZSA9IGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGluc2VydGVkUm93LmlkKVxuXG4gIGNvbnN0IGRvYyA9IGF3YWl0IGRiLnF1ZXJ5W3RhYmxlTmFtZV0uZmluZEZpcnN0KGZpbmRNYW55QXJncylcblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRSQU5TRk9STSBEQVRBXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm08VD4oe1xuICAgIGNvbmZpZzogYWRhcHRlci5wYXlsb2FkLmNvbmZpZyxcbiAgICBkYXRhOiBkb2MsXG4gICAgZmllbGRzLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsInRyYW5zZm9ybUZvcldyaXRlIiwiaW5zZXJ0ZWRSb3ciLCJ0YXJnZXQiLCJ0YWJsZXMiLCJyb3ciLCJpbnNlcnQiLCJ2YWx1ZXMiLCJvbkNvbmZsaWN0RG9VcGRhdGUiLCJzZXQiLCJyZXR1cm5pbmciLCJsb2NhbGVzVG9JbnNlcnQiLCJyZWxhdGlvbnNUb0luc2VydCIsIm51bWJlcnNUb0luc2VydCIsImJsb2Nrc1RvSW5zZXJ0Iiwic2VsZWN0c1RvSW5zZXJ0IiwiT2JqZWN0Iiwia2V5cyIsImxvY2FsZXMiLCJsZW5ndGgiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImxvY2FsZSIsImxvY2FsZVJvdyIsIl9wYXJlbnRJRCIsIl9sb2NhbGUiLCJwdXNoIiwicmVsYXRpb25zaGlwcyIsInJlbGF0aW9uIiwicGFyZW50IiwibnVtYmVycyIsIm51bWJlclJvdyIsInNlbGVjdHMiLCJzZWxlY3RUYWJsZU5hbWUiLCJzZWxlY3RSb3dzIiwiYmxvY2tzIiwiYmxvY2tOYW1lIiwiYmxvY2tSb3ciLCJsb2NhbGVUYWJsZSIsImRlbGV0ZSIsImVxIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsImRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCIsImxvY2FsZUNvbHVtbk5hbWUiLCJwYXJlbnRDb2x1bW5OYW1lIiwicGFyZW50SUQiLCJwYXRoQ29sdW1uTmFtZSIsInJvd3MiLCJyZWxhdGlvbnNoaXBzVG9EZWxldGUiLCJudW1iZXJzVGFibGVOYW1lIiwiaW5zZXJ0ZWRCbG9ja1Jvd3MiLCJibG9ja1Jvd3MiLCJtYXAiLCJpIiwiYmxvY2tMb2NhbGVJbmRleE1hcCIsImJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0IiwicmVkdWNlIiwiYWNjIiwiYmxvY2tMb2NhbGUiLCJibG9ja0xvY2FsZURhdGEiLCJpbnNlcnRBcnJheXMiLCJhcnJheXMiLCJwYXJlbnRSb3dzIiwiYXJyYXlUYWJsZU5hbWUiLCJkZWxldGVFeGlzdGluZ0FycmF5Um93cyIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZmluZE1hbnlBcmdzIiwiYnVpbGRGaW5kTWFueUFyZ3MiLCJkZXB0aCIsImRvYyIsInF1ZXJ5IiwiZmluZEZpcnN0IiwicmVzdWx0IiwidHJhbnNmb3JtIiwiY29uZmlnIiwicGF5bG9hZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWV2QkE7OztlQUFBQTs7OzRCQVpNO21DQUtlO3NCQUNSO3VCQUNRO3lDQUNNOzBDQUNDOzhCQUNaO0FBRXRCLE1BQU1BLFlBQVksT0FBNkIsRUFDcERDLEVBQUUsRUFDRkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEVBQUUsRUFDRkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFBRSxFQUNUQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsS0FBSyxFQUNBO0lBQ0wsc0RBQXNEO0lBQ3RELHVEQUF1RDtJQUN2RCxNQUFNQyxjQUFjQyxJQUFBQSx3QkFBaUIsRUFBQztRQUNwQ1Q7UUFDQUU7UUFDQUU7UUFDQUM7SUFDRjtJQUVBLGdDQUFnQztJQUNoQyxJQUFJSztJQUVKLElBQUlQLGNBQWMsVUFBVTtRQUMxQixNQUFNUSxTQUFTTCxnQkFBZ0JQLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxDQUFDUCxFQUFFO1FBRTNELElBQUlBLElBQUk7WUFDTlUsWUFBWUssR0FBRyxDQUFDZixFQUFFLEdBQUdBO1lBQ3BCLENBQUNZLFlBQVksR0FBRyxNQUFNVCxHQUNwQmEsTUFBTSxDQUFDZixRQUFRYSxNQUFNLENBQUNQLFVBQVUsRUFDaENVLE1BQU0sQ0FBQ1AsWUFBWUssR0FBRyxFQUN0Qkcsa0JBQWtCLENBQUM7Z0JBQUVDLEtBQUtULFlBQVlLLEdBQUc7Z0JBQUVGO1lBQU8sR0FDbERPLFNBQVM7UUFDZCxPQUFPO1lBQ0osQ0FBQ1IsWUFBWSxHQUFHLE1BQU1ULEdBQ3BCYSxNQUFNLENBQUNmLFFBQVFhLE1BQU0sQ0FBQ1AsVUFBVSxFQUNoQ1UsTUFBTSxDQUFDUCxZQUFZSyxHQUFHLEVBQ3RCRyxrQkFBa0IsQ0FBQztnQkFBRUMsS0FBS1QsWUFB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
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@payloadcms/db-postgres",
|
3
|
-
"version": "0.1.0-beta.
|
3
|
+
"version": "0.1.0-beta.17",
|
4
4
|
"description": "The officially supported Postgres database adapter for Payload",
|
5
5
|
"repository": "https://github.com/payloadcms/payload",
|
6
6
|
"license": "MIT",
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"devDependencies": {
|
25
25
|
"@types/pg": "8.10.2",
|
26
26
|
"@types/to-snake-case": "1.0.0",
|
27
|
-
"payload": "2.0.0-beta.
|
27
|
+
"payload": "2.0.0-beta.28",
|
28
28
|
"@payloadcms/eslint-config": "0.0.1"
|
29
29
|
},
|
30
30
|
"peerDependencies": {
|
package/src/index.ts
CHANGED
@@ -24,6 +24,10 @@ import { findOne } from './findOne'
|
|
24
24
|
import { findVersions } from './findVersions'
|
25
25
|
import { init } from './init'
|
26
26
|
import { migrate } from './migrate'
|
27
|
+
import { migrateDown } from './migrateDown'
|
28
|
+
import { migrateFresh } from './migrateFresh'
|
29
|
+
import { migrateRefresh } from './migrateRefresh'
|
30
|
+
import { migrateReset } from './migrateReset'
|
27
31
|
import { migrateStatus } from './migrateStatus'
|
28
32
|
import { queryDrafts } from './queryDrafts'
|
29
33
|
import { beginTransaction } from './transactions/beginTransaction'
|
@@ -77,6 +81,10 @@ export function postgresAdapter(args: Args): PostgresAdapterResult {
|
|
77
81
|
findVersions,
|
78
82
|
init,
|
79
83
|
migrate,
|
84
|
+
migrateDown,
|
85
|
+
migrateFresh,
|
86
|
+
migrateRefresh,
|
87
|
+
migrateReset,
|
80
88
|
migrateStatus,
|
81
89
|
migrationDir,
|
82
90
|
payload,
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import type { Payload } from 'payload';
|
2
|
-
import type { Migration } from 'payload/database';
|
3
|
-
type RunMigrationArgs = {
|
4
|
-
batch: number;
|
5
|
-
migration: Migration;
|
6
|
-
payload: Payload;
|
7
|
-
};
|
8
|
-
export declare function runUp({ batch, migration, payload }: RunMigrationArgs): Promise<void>;
|
9
|
-
type RunMigrationDownArgs = {
|
10
|
-
migration: Migration;
|
11
|
-
payload: Payload;
|
12
|
-
};
|
13
|
-
export declare function runDown({ migration, payload }: RunMigrationDownArgs): Promise<void>;
|
14
|
-
export {};
|
15
|
-
//# sourceMappingURL=migrations.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/utilities/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,wBAAsB,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,gBAAgB,iBA0B1E;AAED,KAAK,oBAAoB,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,wBAAsB,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,oBAAoB,iBA4BzE"}
|
@@ -1,85 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
function _export(target, all) {
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
7
|
-
enumerable: true,
|
8
|
-
get: all[name]
|
9
|
-
});
|
10
|
-
}
|
11
|
-
_export(exports, {
|
12
|
-
runUp: function() {
|
13
|
-
return runUp;
|
14
|
-
},
|
15
|
-
runDown: function() {
|
16
|
-
return runDown;
|
17
|
-
}
|
18
|
-
});
|
19
|
-
const _pg = require("pg");
|
20
|
-
async function runUp({ batch, migration, payload }) {
|
21
|
-
const start = Date.now();
|
22
|
-
payload.logger.info({
|
23
|
-
msg: `Migrating: ${migration.name}`
|
24
|
-
});
|
25
|
-
try {
|
26
|
-
await migration.up({
|
27
|
-
payload
|
28
|
-
});
|
29
|
-
payload.logger.info({
|
30
|
-
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
|
31
|
-
});
|
32
|
-
await payload.create({
|
33
|
-
collection: 'payload-migrations',
|
34
|
-
data: {
|
35
|
-
name: migration.name,
|
36
|
-
batch
|
37
|
-
}
|
38
|
-
});
|
39
|
-
} catch (err) {
|
40
|
-
let msg = `Error running migration ${migration.name}`;
|
41
|
-
if (err instanceof _pg.DatabaseError) {
|
42
|
-
msg += `: ${err.message}`;
|
43
|
-
if (err.hint) msg += `. ${err.hint}`;
|
44
|
-
}
|
45
|
-
payload.logger.error({
|
46
|
-
err,
|
47
|
-
msg
|
48
|
-
});
|
49
|
-
throw err;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
async function runDown({ migration, payload }) {
|
53
|
-
const start = Date.now();
|
54
|
-
let transactionID;
|
55
|
-
try {
|
56
|
-
payload.logger.info({
|
57
|
-
msg: `Migrating down: ${migration.name}`
|
58
|
-
});
|
59
|
-
transactionID = await this.beginTransaction();
|
60
|
-
await migration.down({
|
61
|
-
payload
|
62
|
-
});
|
63
|
-
payload.logger.info({
|
64
|
-
msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`
|
65
|
-
});
|
66
|
-
// Waiting for implementation here
|
67
|
-
await payload.delete({
|
68
|
-
id: migration.id,
|
69
|
-
collection: 'payload-migrations',
|
70
|
-
req: {
|
71
|
-
transactionID
|
72
|
-
}
|
73
|
-
});
|
74
|
-
await this.commitTransaction(transactionID);
|
75
|
-
} catch (err) {
|
76
|
-
await this.rollbackTransaction(transactionID);
|
77
|
-
payload.logger.error({
|
78
|
-
err,
|
79
|
-
msg: `Error running migration ${migration.name}`
|
80
|
-
});
|
81
|
-
throw err;
|
82
|
-
}
|
83
|
-
}
|
84
|
-
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWlncmF0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBNaWdyYXRpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IERhdGFiYXNlRXJyb3IgfSBmcm9tICdwZydcblxudHlwZSBSdW5NaWdyYXRpb25BcmdzID0ge1xuICBiYXRjaDogbnVtYmVyXG4gIG1pZ3JhdGlvbjogTWlncmF0aW9uXG4gIHBheWxvYWQ6IFBheWxvYWRcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blVwKHsgYmF0Y2gsIG1pZ3JhdGlvbiwgcGF5bG9hZCB9OiBSdW5NaWdyYXRpb25BcmdzKSB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgbWlncmF0aW9uLnVwKHsgcGF5bG9hZCB9KVxuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRlZDogICR7bWlncmF0aW9uLm5hbWV9ICgke0RhdGUubm93KCkgLSBzdGFydH1tcylgIH0pXG4gICAgYXdhaXQgcGF5bG9hZC5jcmVhdGUoe1xuICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG5hbWU6IG1pZ3JhdGlvbi5uYW1lLFxuICAgICAgICBiYXRjaCxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgbGV0IG1zZyA9IGBFcnJvciBydW5uaW5nIG1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfWBcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBEYXRhYmFzZUVycm9yKSB7XG4gICAgICBtc2cgKz0gYDogJHtlcnIubWVzc2FnZX1gXG4gICAgICBpZiAoZXJyLmhpbnQpIG1zZyArPSBgLiAke2Vyci5oaW50fWBcbiAgICB9XG5cbiAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVyciwgbXNnIH0pXG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxudHlwZSBSdW5NaWdyYXRpb25Eb3duQXJncyA9IHtcbiAgbWlncmF0aW9uOiBNaWdyYXRpb25cbiAgcGF5bG9hZDogUGF5bG9hZFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRG93bih7IG1pZ3JhdGlvbiwgcGF5bG9hZCB9OiBSdW5NaWdyYXRpb25Eb3duQXJncykge1xuICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgbGV0IHRyYW5zYWN0aW9uSURcblxuICB0cnkge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmcgZG93bjogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgYXdhaXQgbWlncmF0aW9uLmRvd24oeyBwYXlsb2FkIH0pXG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICBtc2c6IGBNaWdyYXRlZCBkb3duOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAsXG4gICAgfSlcbiAgICAvLyBXYWl0aW5nIGZvciBpbXBsZW1lbnRhdGlvbiBoZXJlXG4gICAgYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgaWQ6IG1pZ3JhdGlvbi5pZCxcbiAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgcmVxOiB7XG4gICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICB9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgIH0pXG4gICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICBlcnIsXG4gICAgICBtc2c6IGBFcnJvciBydW5uaW5nIG1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfWAsXG4gICAgfSlcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIl0sIm5hbWVzIjpbInJ1blVwIiwicnVuRG93biIsImJhdGNoIiwibWlncmF0aW9uIiwicGF5bG9hZCIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJuYW1lIiwidXAiLCJjcmVhdGUiLCJjb2xsZWN0aW9uIiwiZGF0YSIsImVyciIsIkRhdGFiYXNlRXJyb3IiLCJtZXNzYWdlIiwiaGludCIsImVycm9yIiwidHJhbnNhY3Rpb25JRCIsImJlZ2luVHJhbnNhY3Rpb24iLCJkb3duIiwiZGVsZXRlIiwiaWQiLCJyZXEiLCJjb21taXRUcmFuc2FjdGlvbiIsInJvbGxiYWNrVHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBWXNCQSxLQUFLO2VBQUxBOztJQWlDQUMsT0FBTztlQUFQQTs7O29CQXpDUTtBQVF2QixlQUFlRCxNQUFNLEVBQUVFLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQW9CO0lBQ3pFLE1BQU1DLFFBQVFDLEtBQUtDLEdBQUc7SUFFdEJILFFBQVFJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVQLFVBQVVRLElBQUksQ0FBQyxDQUFDO0lBQUM7SUFFMUQsSUFBSTtRQUNGLE1BQU1SLFVBQVVTLEVBQUUsQ0FBQztZQUFFUjtRQUFRO1FBQzdCQSxRQUFRSSxNQUFNLENBQUNDLElBQUksQ0FBQztZQUFFQyxLQUFLLENBQUMsV0FBVyxFQUFFUCxVQUFVUSxJQUFJLENBQUMsRUFBRSxFQUFFTCxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1FBQUM7UUFDcEYsTUFBTUQsUUFBUVMsTUFBTSxDQUFDO1lBQ25CQyxZQUFZO1lBQ1pDLE1BQU07Z0JBQ0pKLE1BQU1SLFVBQVVRLElBQUk7Z0JBQ3BCVDtZQUNGO1FBQ0Y7SUFDRixFQUFFLE9BQU9jLEtBQWM7UUFDckIsSUFBSU4sTUFBTSxDQUFDLHdCQUF3QixFQUFFUCxVQUFVUSxJQUFJLENBQUMsQ0FBQztRQUVyRCxJQUFJSyxlQUFlQyxpQkFBYSxFQUFFO1lBQ2hDUCxPQUFPLENBQUMsRUFBRSxFQUFFTSxJQUFJRSxPQUFPLENBQUMsQ0FBQztZQUN6QixJQUFJRixJQUFJRyxJQUFJLEVBQUVULE9BQU8sQ0FBQyxFQUFFLEVBQUVNLElBQUlHLElBQUksQ0FBQyxDQUFDO1FBQ3RDO1FBRUFmLFFBQVFJLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDO1lBQUVKO1lBQUtOO1FBQUk7UUFDaEMsTUFBTU07SUFDUjtBQUNGO0FBT08sZUFBZWYsUUFBUSxFQUFFRSxTQUFTLEVBQUVDLE9BQU8sRUFBd0I7SUFDeEUsTUFBTUMsUUFBUUMsS0FBS0MsR0FBRztJQUN0QixJQUFJYztJQUVKLElBQUk7UUFDRmpCLFFBQVFJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRVAsVUFBVVEsSUFBSSxDQUFDLENBQUM7UUFBQztRQUMvRFUsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDQyxnQkFBZ0I7UUFDM0MsTUFBTW5CLFVBQVVvQixJQUFJLENBQUM7WUFBRW5CO1FBQVE7UUFDL0JBLFFBQVFJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUVQLFVBQVVRLElBQUksQ0FBQyxFQUFFLEVBQUVMLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxHQUFHLENBQUM7UUFDcEU7UUFDQSxrQ0FBa0M7UUFDbEMsTUFBTUQsUUFBUW9CLE1BQU0sQ0FBQztZQUNuQkMsSUFBSXRCLFVBQVVzQixFQUFFO1lBQ2hCWCxZQUFZO1lBQ1pZLEtBQUs7Z0JBQ0hMO1lBQ0Y7UUFDRjtRQUNBLE1BQU0sSUFBSSxDQUFDTSxpQkFBaUIsQ0FBQ047SUFDL0IsRUFBRSxPQUFPTCxLQUFjO1FBQ3JCLE1BQU0sSUFBSSxDQUFDWSxtQkFBbUIsQ0FBQ1A7UUFDL0JqQixRQUFRSSxNQUFNLENBQUNZLEtBQUssQ0FBQztZQUNuQko7WUFDQU4sS0FBSyxDQUFDLHdCQUF3QixFQUFFUCxVQUFVUSxJQUFJLENBQUMsQ0FBQztRQUNsRDtRQUNBLE1BQU1LO0lBQ1I7QUFDRiJ9
|