@payloadcms/db-postgres 3.0.0-alpha.40 → 3.0.0-alpha.42
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +4 -48
- package/dist/connect.js.map +1 -0
- package/dist/create.js +1 -1
- package/dist/create.js.map +1 -0
- package/dist/createGlobal.js +1 -1
- package/dist/createGlobal.js.map +1 -0
- package/dist/createGlobalVersion.js +1 -1
- package/dist/createGlobalVersion.js.map +1 -0
- package/dist/createMigration.js +1 -1
- package/dist/createMigration.js.map +1 -0
- package/dist/createVersion.js +1 -1
- package/dist/createVersion.js.map +1 -0
- package/dist/deleteMany.js +1 -1
- package/dist/deleteMany.js.map +1 -0
- package/dist/deleteOne.js +1 -1
- package/dist/deleteOne.js.map +1 -0
- package/dist/deleteVersions.js +1 -1
- package/dist/deleteVersions.js.map +1 -0
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +8 -3
- package/dist/destroy.js.map +1 -0
- package/dist/find/buildFindManyArgs.js +1 -1
- package/dist/find/buildFindManyArgs.js.map +1 -0
- package/dist/find/chainMethods.js +1 -1
- package/dist/find/chainMethods.js.map +1 -0
- package/dist/find/findMany.js +1 -1
- package/dist/find/findMany.js.map +1 -0
- package/dist/find/traverseFields.js +1 -1
- package/dist/find/traverseFields.js.map +1 -0
- package/dist/find.js +1 -1
- package/dist/find.js.map +1 -0
- package/dist/findGlobal.js +1 -1
- package/dist/findGlobal.js.map +1 -0
- package/dist/findGlobalVersions.js +1 -1
- package/dist/findGlobalVersions.js.map +1 -0
- package/dist/findOne.js +1 -1
- package/dist/findOne.js.map +1 -0
- package/dist/findVersions.js +1 -1
- package/dist/findVersions.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -0
- package/dist/migrate.js +1 -1
- package/dist/migrate.js.map +1 -0
- package/dist/migrateDown.js +1 -1
- package/dist/migrateDown.js.map +1 -0
- package/dist/migrateFresh.js +1 -1
- package/dist/migrateFresh.js.map +1 -0
- package/dist/migrateRefresh.js +1 -1
- package/dist/migrateRefresh.js.map +1 -0
- package/dist/migrateReset.js +1 -1
- package/dist/migrateReset.js.map +1 -0
- package/dist/migrateStatus.js +1 -1
- package/dist/migrateStatus.js.map +1 -0
- package/dist/queries/buildAndOrConditions.js +1 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -0
- package/dist/queries/buildQuery.js +1 -1
- package/dist/queries/buildQuery.js.map +1 -0
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +1 -1
- package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js +1 -1
- package/dist/queries/createJSONQuery/formatJSONPathSegment.js.map +1 -0
- package/dist/queries/createJSONQuery/index.js +1 -1
- package/dist/queries/createJSONQuery/index.js.map +1 -0
- package/dist/queries/getTableColumnFromPath.js +1 -1
- package/dist/queries/getTableColumnFromPath.js.map +1 -0
- package/dist/queries/operatorMap.js +1 -1
- package/dist/queries/operatorMap.js.map +1 -0
- package/dist/queries/parseParams.js +1 -1
- package/dist/queries/parseParams.js.map +1 -0
- package/dist/queries/sanitizeQueryValue.js +1 -1
- package/dist/queries/sanitizeQueryValue.js.map +1 -0
- package/dist/queryDrafts.js +1 -1
- package/dist/queryDrafts.js.map +1 -0
- package/dist/schema/build.js +1 -1
- package/dist/schema/build.js.map +1 -0
- package/dist/schema/createIndex.js +1 -1
- package/dist/schema/createIndex.js.map +1 -0
- package/dist/schema/idToUUID.js +1 -1
- package/dist/schema/idToUUID.js.map +1 -0
- package/dist/schema/parentIDColumnMap.js +1 -1
- package/dist/schema/parentIDColumnMap.js.map +1 -0
- package/dist/schema/setColumnID.js +1 -1
- package/dist/schema/setColumnID.js.map +1 -0
- package/dist/schema/traverseFields.js +1 -1
- package/dist/schema/traverseFields.js.map +1 -0
- package/dist/schema/validateExistingBlockIsIdentical.js +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js.map +1 -0
- package/dist/transactions/beginTransaction.js +1 -1
- package/dist/transactions/beginTransaction.js.map +1 -0
- package/dist/transactions/commitTransaction.js +1 -1
- package/dist/transactions/commitTransaction.js.map +1 -0
- package/dist/transactions/rollbackTransaction.js +1 -1
- package/dist/transactions/rollbackTransaction.js.map +1 -0
- package/dist/transform/read/hasManyNumber.js +1 -1
- package/dist/transform/read/hasManyNumber.js.map +1 -0
- package/dist/transform/read/hasManyText.js +1 -1
- package/dist/transform/read/hasManyText.js.map +1 -0
- package/dist/transform/read/index.js +1 -1
- package/dist/transform/read/index.js.map +1 -0
- package/dist/transform/read/relationship.js +1 -1
- package/dist/transform/read/relationship.js.map +1 -0
- package/dist/transform/read/traverseFields.js +1 -1
- package/dist/transform/read/traverseFields.js.map +1 -0
- package/dist/transform/write/array.js +1 -1
- package/dist/transform/write/array.js.map +1 -0
- package/dist/transform/write/blocks.js +1 -1
- package/dist/transform/write/blocks.js.map +1 -0
- package/dist/transform/write/index.js +1 -1
- package/dist/transform/write/index.js.map +1 -0
- package/dist/transform/write/numbers.js +1 -1
- package/dist/transform/write/numbers.js.map +1 -0
- package/dist/transform/write/relationships.js +1 -1
- package/dist/transform/write/relationships.js.map +1 -0
- package/dist/transform/write/selects.js +1 -1
- package/dist/transform/write/selects.js.map +1 -0
- package/dist/transform/write/texts.js +1 -1
- package/dist/transform/write/texts.js.map +1 -0
- package/dist/transform/write/traverseFields.js +1 -1
- package/dist/transform/write/traverseFields.js.map +1 -0
- package/dist/transform/write/types.js +1 -1
- package/dist/transform/write/types.js.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -0
- package/dist/update.js +1 -1
- package/dist/update.js.map +1 -0
- package/dist/updateGlobal.js +1 -1
- package/dist/updateGlobal.js.map +1 -0
- package/dist/updateGlobalVersion.js +1 -1
- package/dist/updateGlobalVersion.js.map +1 -0
- package/dist/updateVersion.js +1 -1
- package/dist/updateVersion.js.map +1 -0
- package/dist/upsertRow/deleteExistingArrayRows.js +1 -1
- package/dist/upsertRow/deleteExistingArrayRows.js.map +1 -0
- package/dist/upsertRow/deleteExistingRowsByPath.js +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -0
- package/dist/upsertRow/index.js +1 -1
- package/dist/upsertRow/index.js.map +1 -0
- package/dist/upsertRow/insertArrays.js +1 -1
- package/dist/upsertRow/insertArrays.js.map +1 -0
- package/dist/upsertRow/types.js +1 -1
- package/dist/upsertRow/types.js.map +1 -0
- package/dist/utilities/appendPrefixToKeys.js +1 -1
- package/dist/utilities/appendPrefixToKeys.js.map +1 -0
- package/dist/utilities/createBlocksMap.js +1 -1
- package/dist/utilities/createBlocksMap.js.map +1 -0
- package/dist/utilities/createMigrationTable.js +1 -1
- package/dist/utilities/createMigrationTable.js.map +1 -0
- package/dist/utilities/createRelationshipMap.js +1 -1
- package/dist/utilities/createRelationshipMap.js.map +1 -0
- package/dist/utilities/hasLocalesTable.js +1 -1
- package/dist/utilities/hasLocalesTable.js.map +1 -0
- package/dist/utilities/isArrayOfRows.js +1 -1
- package/dist/utilities/isArrayOfRows.js.map +1 -0
- package/dist/utilities/migrationTableExists.js +1 -1
- package/dist/utilities/migrationTableExists.js.map +1 -0
- package/dist/utilities/parseError.js +1 -1
- package/dist/utilities/parseError.js.map +1 -0
- package/dist/utilities/pushDevSchema.d.ts +9 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -0
- package/dist/utilities/pushDevSchema.js +56 -0
- package/dist/utilities/pushDevSchema.js.map +1 -0
- package/package.json +3 -3
package/dist/findVersions.js
CHANGED
@@ -21,4 +21,4 @@ export const findVersions = async function findVersions({ collection, limit, loc
|
|
21
21
|
});
|
22
22
|
};
|
23
23
|
|
24
|
-
//# sourceMappingURL=
|
24
|
+
//# sourceMappingURL=findVersions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { FindVersions } from 'payload/database'\nimport type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types'\n\nimport { buildVersionCollectionFields } from 'payload/versions'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findVersions: FindVersions = async function findVersions(\n this: PostgresAdapter,\n {\n collection,\n limit,\n locale,\n page,\n pagination,\n req = {} as PayloadRequest,\n skip,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = typeof sortArg === 'string' ? sortArg : collectionConfig.defaultSort\n\n const tableName = `_${toSnakeCase(collection)}_v`\n const fields = buildVersionCollectionFields(collectionConfig)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n skip,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","findMany","findVersions","collection","limit","locale","page","pagination","req","skip","sort","sortArg","where","collectionConfig","payload","collections","config","defaultSort","tableName","fields","adapter"],"mappings":"AAGA,SAASA,4BAA4B,QAAQ,mBAAkB;AAC/D,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EACEC,UAAU,EACVC,KAAK,EACLC,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,MAAM,CAAC,CAAmB,EAC1BC,IAAI,EACJC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMN,OAAO,OAAOC,YAAY,WAAWA,UAAUE,iBAAiBI,WAAW;IAEjF,MAAMC,YAAY,CAAC,CAAC,EAAElB,YAAYG,YAAY,EAAE,CAAC;IACjD,MAAMgB,SAASpB,6BAA6Bc;IAE5C,OAAOZ,SAAS;QACdmB,SAAS,IAAI;QACbD;QACAf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAQ;QACAN;IACF;AACF,EAAC"}
|
package/dist/index.js
CHANGED
@@ -128,4 +128,4 @@ export function postgresAdapter(args) {
|
|
128
128
|
return srcDir;
|
129
129
|
}
|
130
130
|
|
131
|
-
//# sourceMappingURL=
|
131
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\nimport type { DatabaseAdapterObj } from 'payload/database'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { createDatabaseAdapter } from 'payload/database'\n\nimport type { Args, PostgresAdapter } from './types.js'\n\nimport { connect } from './connect.js'\nimport { create } from './create.js'\nimport { createGlobal } from './createGlobal.js'\nimport { createGlobalVersion } from './createGlobalVersion.js'\nimport { createMigration } from './createMigration.js'\nimport { createVersion } from './createVersion.js'\nimport { deleteMany } from './deleteMany.js'\nimport { deleteOne } from './deleteOne.js'\nimport { deleteVersions } from './deleteVersions.js'\nimport { destroy } from './destroy.js'\nimport { find } from './find.js'\nimport { findGlobal } from './findGlobal.js'\nimport { findGlobalVersions } from './findGlobalVersions.js'\nimport { findOne } from './findOne.js'\nimport { findVersions } from './findVersions.js'\nimport { init } from './init.js'\nimport { migrate } from './migrate.js'\nimport { migrateDown } from './migrateDown.js'\nimport { migrateFresh } from './migrateFresh.js'\nimport { migrateRefresh } from './migrateRefresh.js'\nimport { migrateReset } from './migrateReset.js'\nimport { migrateStatus } from './migrateStatus.js'\nimport { queryDrafts } from './queryDrafts.js'\nimport { beginTransaction } from './transactions/beginTransaction.js'\nimport { commitTransaction } from './transactions/commitTransaction.js'\nimport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nimport { updateOne } from './update.js'\nimport { updateGlobal } from './updateGlobal.js'\nimport { updateGlobalVersion } from './updateGlobalVersion.js'\nimport { updateVersion } from './updateVersion.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n const idType = args.idType || 'serial'\n\n return createDatabaseAdapter<PostgresAdapter>({\n name: 'postgres',\n\n // Postgres-specific\n drizzle: undefined,\n enums: {},\n fieldConstraints: {},\n idType,\n logger: args.logger,\n pgSchema: undefined,\n pool: undefined,\n poolOptions: args.pool,\n push: args.push,\n relations: {},\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tables: {},\n\n // DatabaseAdapter\n beginTransaction,\n commitTransaction,\n connect,\n create,\n createGlobal,\n createGlobalVersion,\n createMigration,\n createVersion,\n /**\n * This represents how a default ID is treated in Payload as were a field type\n */\n defaultIDType: idType === 'serial' ? 'number' : 'text',\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n init,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n migrationDir,\n payload,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n })\n }\n\n return {\n defaultIDType: 'number',\n init: adapter,\n }\n}\n\n/**\n * Attempt to find migrations directory.\n *\n * Checks for the following directories in order:\n * - `migrationDir` argument from Payload config\n * - `src/migrations`\n * - `dist/migrations`\n * - `migrations`\n *\n * Defaults to `src/migrations`\n *\n * @param migrationDir\n * @returns\n */\nfunction findMigrationDir(migrationDir?: string): string {\n const cwd = process.cwd()\n const srcDir = path.resolve(cwd, 'src/migrations')\n const distDir = path.resolve(cwd, 'dist/migrations')\n const relativeMigrations = path.resolve(cwd, 'migrations')\n\n // Use arg if provided\n if (migrationDir) return migrationDir\n\n // Check other common locations\n if (fs.existsSync(srcDir)) {\n return srcDir\n }\n\n if (fs.existsSync(distDir)) {\n return distDir\n }\n\n if (fs.existsSync(relativeMigrations)) {\n return relativeMigrations\n }\n\n return srcDir\n}\n"],"names":["fs","path","createDatabaseAdapter","connect","create","createGlobal","createGlobalVersion","createMigration","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findGlobal","findGlobalVersions","findOne","findVersions","init","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateOne","updateGlobal","updateGlobalVersion","updateVersion","postgresAdapter","args","adapter","payload","migrationDir","findMigrationDir","idType","name","drizzle","undefined","enums","fieldConstraints","logger","pgSchema","pool","poolOptions","push","relations","schema","schemaName","sessions","tables","defaultIDType","cwd","process","srcDir","resolve","distDir","relativeMigrations","existsSync"],"mappings":"AAGA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,qBAAqB,QAAQ,mBAAkB;AAIxD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,mBAAmB,QAAQ,wCAAuC;AAC3E,SAASC,SAAS,QAAQ,cAAa;AACvC,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAIlD,OAAO,SAASC,gBAAgBC,IAAU;IACxC,SAASC,QAAQ,EAAEC,OAAO,EAAwB;QAChD,MAAMC,eAAeC,iBAAiBJ,KAAKG,YAAY;QACvD,MAAME,SAASL,KAAKK,MAAM,IAAI;QAE9B,OAAOrC,sBAAuC;YAC5CsC,MAAM;YAEN,oBAAoB;YACpBC,SAASC;YACTC,OAAO,CAAC;YACRC,kBAAkB,CAAC;YACnBL;YACAM,QAAQX,KAAKW,MAAM;YACnBC,UAAUJ;YACVK,MAAML;YACNM,aAAad,KAAKa,IAAI;YACtBE,MAAMf,KAAKe,IAAI;YACfC,WAAW,CAAC;YACZC,QAAQ,CAAC;YACTC,YAAYlB,KAAKkB,UAAU;YAC3BC,UAAU,CAAC;YACXC,QAAQ,CAAC;YAET,kBAAkB;YAClB5B;YACAC;YACAxB;YACAC;YACAC;YACAC;YACAC;YACAC;YACA;;OAEC,GACD+C,eAAehB,WAAW,WAAW,WAAW;YAChD9B;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAa;YACAD;YACAX;YACAG;YACAE;YACAC;YACAF;YACAG;QACF;IACF;IAEA,OAAO;QACLuB,eAAe;QACfrC,MAAMiB;IACR;AACF;AAEA;;;;;;;;;;;;;CAaC,GACD,SAASG,iBAAiBD,YAAqB;IAC7C,MAAMmB,MAAMC,QAAQD,GAAG;IACvB,MAAME,SAASzD,KAAK0D,OAAO,CAACH,KAAK;IACjC,MAAMI,UAAU3D,KAAK0D,OAAO,CAACH,KAAK;IAClC,MAAMK,qBAAqB5D,KAAK0D,OAAO,CAACH,KAAK;IAE7C,sBAAsB;IACtB,IAAInB,cAAc,OAAOA;IAEzB,+BAA+B;IAC/B,IAAIrC,GAAG8D,UAAU,CAACJ,SAAS;QACzB,OAAOA;IACT;IAEA,IAAI1D,GAAG8D,UAAU,CAACF,UAAU;QAC1B,OAAOA;IACT;IAEA,IAAI5D,GAAG8D,UAAU,CAACD,qBAAqB;QACrC,OAAOA;IACT;IAEA,OAAOH;AACT"}
|
package/dist/init.js
CHANGED
@@ -73,4 +73,4 @@ export const init = function init() {
|
|
73
73
|
});
|
74
74
|
};
|
75
75
|
|
76
|
-
//# sourceMappingURL=
|
76
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/init.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Init } from 'payload/database'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload/versions'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { buildTable } from './schema/build.js'\n\nexport const init: Init = function init(this: PostgresAdapter) {\n if (this.schemaName) {\n this.pgSchema = pgSchema(this.schemaName)\n } else {\n this.pgSchema = { table: pgTable }\n }\n\n if (this.payload.config.localization) {\n this.enums.enum__locales = pgEnum(\n '_locales',\n this.payload.config.localization.locales.map(({ code }) => code) as [string, ...string[]],\n )\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const tableName = toSnakeCase(collection.slug)\n\n buildTable({\n adapter: this,\n buildNumbers: true,\n buildRelationships: true,\n buildTexts: true,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.fields,\n tableName,\n timestamps: collection.timestamps,\n })\n\n if (collection.versions) {\n const versionsTableName = `_${tableName}_v`\n const versionFields = buildVersionCollectionFields(collection)\n\n buildTable({\n adapter: this,\n buildNumbers: true,\n buildRelationships: true,\n buildTexts: true,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n })\n }\n })\n\n this.payload.config.globals.forEach((global) => {\n const tableName = toSnakeCase(global.slug)\n\n buildTable({\n adapter: this,\n buildNumbers: true,\n buildRelationships: true,\n buildTexts: true,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.fields,\n tableName,\n timestamps: false,\n })\n\n if (global.versions) {\n const versionsTableName = `_${tableName}_v`\n const versionFields = buildVersionGlobalFields(global)\n\n buildTable({\n adapter: this,\n buildNumbers: true,\n buildRelationships: true,\n buildTexts: true,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n })\n }\n })\n}\n"],"names":["pgEnum","pgSchema","pgTable","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","buildTable","init","schemaName","table","payload","config","localization","enums","enum__locales","locales","map","code","collections","forEach","collection","tableName","slug","adapter","buildNumbers","buildRelationships","buildTexts","disableNotNull","versions","drafts","disableUnique","fields","timestamps","versionsTableName","versionFields","globals","global"],"mappings":"AAAA,oCAAoC,GAIpC,SAASA,MAAM,EAAEC,QAAQ,EAAEC,OAAO,QAAQ,sBAAqB;AAC/D,SAASC,4BAA4B,EAAEC,wBAAwB,QAAQ,mBAAkB;AACzF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,UAAU,QAAQ,oBAAmB;AAE9C,OAAO,MAAMC,OAAa,SAASA;IACjC,IAAI,IAAI,CAACC,UAAU,EAAE;QACnB,IAAI,CAACP,QAAQ,GAAGA,SAAS,IAAI,CAACO,UAAU;IAC1C,OAAO;QACL,IAAI,CAACP,QAAQ,GAAG;YAAEQ,OAAOP;QAAQ;IACnC;IAEA,IAAI,IAAI,CAACQ,OAAO,CAACC,MAAM,CAACC,YAAY,EAAE;QACpC,IAAI,CAACC,KAAK,CAACC,aAAa,GAAGd,OACzB,YACA,IAAI,CAACU,OAAO,CAACC,MAAM,CAACC,YAAY,CAACG,OAAO,CAACC,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;IAE/D;IAEA,IAAI,CAACP,OAAO,CAACC,MAAM,CAACO,WAAW,CAACC,OAAO,CAAC,CAACC;QACvC,MAAMC,YAAYhB,YAAYe,WAAWE,IAAI;QAE7ChB,WAAW;YACTiB,SAAS,IAAI;YACbC,cAAc;YACdC,oBAAoB;YACpBC,YAAY;YACZC,gBAAgB,CAAC,CAACP,YAAYQ,UAAUC;YACxCC,eAAe;YACfC,QAAQX,WAAWW,MAAM;YACzBV;YACAW,YAAYZ,WAAWY,UAAU;QACnC;QAEA,IAAIZ,WAAWQ,QAAQ,EAAE;YACvB,MAAMK,oBAAoB,CAAC,CAAC,EAAEZ,UAAU,EAAE,CAAC;YAC3C,MAAMa,gBAAgB/B,6BAA6BiB;YAEnDd,WAAW;gBACTiB,SAAS,IAAI;gBACbC,cAAc;gBACdC,oBAAoB;gBACpBC,YAAY;gBACZC,gBAAgB,CAAC,CAACP,WAAWQ,QAAQ,EAAEC;gBACvCC,eAAe;gBACfC,QAAQG;gBACRb,WAAWY;gBACXD,YAAY;YACd;QACF;IACF;IAEA,IAAI,CAACtB,OAAO,CAACC,MAAM,CAACwB,OAAO,CAAChB,OAAO,CAAC,CAACiB;QACnC,MAAMf,YAAYhB,YAAY+B,OAAOd,IAAI;QAEzChB,WAAW;YACTiB,SAAS,IAAI;YACbC,cAAc;YACdC,oBAAoB;YACpBC,YAAY;YACZC,gBAAgB,CAAC,CAACS,QAAQR,UAAUC;YACpCC,eAAe;YACfC,QAAQK,OAAOL,MAAM;YACrBV;YACAW,YAAY;QACd;QAEA,IAAII,OAAOR,QAAQ,EAAE;YACnB,MAAMK,oBAAoB,CAAC,CAAC,EAAEZ,UAAU,EAAE,CAAC;YAC3C,MAAMa,gBAAgB9B,yBAAyBgC;YAE/C9B,WAAW;gBACTiB,SAAS,IAAI;gBACbC,cAAc;gBACdC,oBAAoB;gBACpBC,YAAY;gBACZC,gBAAgB,CAAC,CAACS,OAAOR,QAAQ,EAAEC;gBACnCC,eAAe;gBACfC,QAAQG;gBACRb,WAAWY;gBACXD,YAAY;YACd;QACF;IACF;AACF,EAAC"}
|
package/dist/migrate.js
CHANGED
@@ -94,4 +94,4 @@ async function runMigrationFile(payload, migration, batch) {
|
|
94
94
|
}
|
95
95
|
}
|
96
96
|
|
97
|
-
//# sourceMappingURL=
|
97
|
+
//# sourceMappingURL=migrate.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { Payload } from 'payload'\nimport type { Migration } from 'payload/database'\nimport type { PayloadRequest } from 'payload/types'\n\nimport {\n commitTransaction,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload/database'\nimport prompts from 'prompts'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { createMigrationTable } from './utilities/createMigrationTable.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport async function migrate(this: PostgresAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations to run.' })\n return\n }\n\n let latestBatch = 0\n let migrationsInDB = []\n\n const hasMigrationTable = await migrationTableExists(this.drizzle)\n\n if (hasMigrationTable) {\n ;({ docs: migrationsInDB } = await payload.find({\n collection: 'payload-migrations',\n limit: 0,\n sort: '-name',\n }))\n if (Number(migrationsInDB?.[0]?.batch) > 0) {\n latestBatch = Number(migrationsInDB[0]?.batch)\n }\n } else {\n await createMigrationTable(this)\n }\n\n if (migrationsInDB.find((m) => m.batch === -1)) {\n const { confirm: runMigrations } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message:\n \"It looks like you've run Payload in dev mode, meaning you've dynamically pushed changes to your database.\\n\\n\" +\n \"If you'd like to run migrations, data loss will occur. Would you like to proceed?\",\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!runMigrations) {\n process.exit(0)\n }\n }\n\n const newBatch = latestBatch + 1\n\n // Execute 'up' function for each migration sequentially\n for (const migration of migrationFiles) {\n const alreadyRan = migrationsInDB.find((existing) => existing.name === migration.name)\n\n // If already ran, skip\n if (alreadyRan) {\n continue // eslint-disable-line no-continue\n }\n\n await runMigrationFile(payload, migration, newBatch)\n }\n}\n\nasync function runMigrationFile(payload: Payload, migration: Migration, batch: number) {\n const { generateDrizzleJson } = await import('drizzle-kit/payload')\n\n const start = Date.now()\n const req = { payload } as PayloadRequest\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n\n const pgAdapter = payload.db as PostgresAdapter\n const drizzleJSON = generateDrizzleJson(pgAdapter.schema)\n\n try {\n await initTransaction(req)\n await migration.up({ payload, req })\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch,\n schema: drizzleJSON,\n },\n req,\n })\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}`),\n })\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","createMigrationTable","migrationTableExists","parseError","migrate","payload","migrationFiles","length","logger","info","msg","latestBatch","migrationsInDB","hasMigrationTable","drizzle","docs","find","collection","limit","sort","Number","batch","m","confirm","runMigrations","name","type","initial","message","onCancel","process","exit","newBatch","migration","alreadyRan","existing","runMigrationFile","generateDrizzleJson","start","Date","now","req","pgAdapter","db","drizzleJSON","schema","up","create","data","err","error"],"mappings":"AAAA,yDAAyD,GAKzD,SACEA,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,mBAAkB;AACzB,OAAOC,aAAa,UAAS;AAI7B,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMP,mBAAmB;QAAEM;IAAQ;IAE1D,IAAI,CAACC,eAAeC,MAAM,EAAE;QAC1BF,QAAQG,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAAwB;QACnD;IACF;IAEA,IAAIC,cAAc;IAClB,IAAIC,iBAAiB,EAAE;IAEvB,MAAMC,oBAAoB,MAAMX,qBAAqB,IAAI,CAACY,OAAO;IAEjE,IAAID,mBAAmB;QACnB,CAAA,EAAEE,MAAMH,cAAc,EAAE,GAAG,MAAMP,QAAQW,IAAI,CAAC;YAC9CC,YAAY;YACZC,OAAO;YACPC,MAAM;QACR,EAAC;QACD,IAAIC,OAAOR,gBAAgB,CAAC,EAAE,EAAES,SAAS,GAAG;YAC1CV,cAAcS,OAAOR,cAAc,CAAC,EAAE,EAAES;QAC1C;IACF,OAAO;QACL,MAAMpB,qBAAqB,IAAI;IACjC;IAEA,IAAIW,eAAeI,IAAI,CAAC,CAACM,IAAMA,EAAED,KAAK,KAAK,CAAC,IAAI;QAC9C,MAAM,EAAEE,SAASC,aAAa,EAAE,GAAG,MAAMxB,QACvC;YACEyB,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SACE,kHACA;QACJ,GACA;YACEC,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,IAAI,CAACP,eAAe;YAClBM,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,MAAMC,WAAWrB,cAAc;IAE/B,wDAAwD;IACxD,KAAK,MAAMsB,aAAa3B,eAAgB;QACtC,MAAM4B,aAAatB,eAAeI,IAAI,CAAC,CAACmB,WAAaA,SAASV,IAAI,KAAKQ,UAAUR,IAAI;QAErF,uBAAuB;QACvB,IAAIS,YAAY;YACd,UAAS,kCAAkC;QAC7C;QAEA,MAAME,iBAAiB/B,SAAS4B,WAAWD;IAC7C;AACF;AAEA,eAAeI,iBAAiB/B,OAAgB,EAAE4B,SAAoB,EAAEZ,KAAa;IACnF,MAAM,EAAEgB,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC;IAE7C,MAAMC,QAAQC,KAAKC,GAAG;IACtB,MAAMC,MAAM;QAAEpC;IAAQ;IAEtBA,QAAQG,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,WAAW,EAAEuB,UAAUR,IAAI,CAAC,CAAC;IAAC;IAE1D,MAAMiB,YAAYrC,QAAQsC,EAAE;IAC5B,MAAMC,cAAcP,oBAAoBK,UAAUG,MAAM;IAExD,IAAI;QACF,MAAMhD,gBAAgB4C;QACtB,MAAMR,UAAUa,EAAE,CAAC;YAAEzC;YAASoC;QAAI;QAClCpC,QAAQG,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEuB,UAAUR,IAAI,CAAC,EAAE,EAAEc,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;QAAC;QACpF,MAAMjC,QAAQ0C,MAAM,CAAC;YACnB9B,YAAY;YACZ+B,MAAM;gBACJvB,MAAMQ,UAAUR,IAAI;gBACpBJ;gBACAwB,QAAQD;YACV;YACAH;QACF;QACA,MAAM7C,kBAAkB6C;IAC1B,EAAE,OAAOQ,KAAc;QACrB,MAAMnD,gBAAgB2C;QACtBpC,QAAQG,MAAM,CAAC0C,KAAK,CAAC;YACnBD;YACAvC,KAAKP,WAAW8C,KAAK,CAAC,wBAAwB,EAAEhB,UAAUR,IAAI,CAAC,CAAC;QAClE;IACF;AACF"}
|
package/dist/migrateDown.js
CHANGED
@@ -60,4 +60,4 @@ export async function migrateDown() {
|
|
60
60
|
}
|
61
61
|
}
|
62
62
|
|
63
|
-
//# sourceMappingURL=
|
63
|
+
//# sourceMappingURL=migrateDown.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrateDown.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { PayloadRequest } from 'payload/types'\n\nimport {\n commitTransaction,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload/database'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport async function migrateDown(this: PostgresAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const latestBatchMigrations = existingMigrations.filter(({ batch }) => batch === latestBatch)\n\n for (const migration of latestBatchMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n const req = { payload } as PayloadRequest\n\n try {\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n await migrationFile.down({ payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this.drizzle)\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n\n payload.logger.error({\n err,\n msg: parseError(err, `Error migrating down ${migrationFile.name}. Rolling back.`),\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","getMigrations","initTransaction","killTransaction","readMigrationFiles","migrationTableExists","parseError","migrateDown","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","latestBatchMigrations","filter","batch","migration","migrationFile","find","m","name","Error","start","Date","now","req","down","tableExists","drizzle","delete","id","collection","err","error","process","exit"],"mappings":"AAAA,yDAAyD,GAGzD,SACEA,iBAAiB,EACjBC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,mBAAkB;AAIzB,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAML,mBAAmB;QAAEI;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMV,cAAc;QAC9DO;IACF;IAEA,IAAI,CAACE,oBAAoBE,QAAQ;QAC/BJ,QAAQK,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA6B;QACxD;IACF;IAEAP,QAAQK,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,mBAAmB,EAAEJ,YAAY,eAAe,EAAED,mBAAmBE,MAAM,CAAC,cAAc,CAAC;IACnG;IAEA,MAAMI,wBAAwBN,mBAAmBO,MAAM,CAAC,CAAC,EAAEC,KAAK,EAAE,GAAKA,UAAUP;IAEjF,KAAK,MAAMQ,aAAaH,sBAAuB;QAC7C,MAAMI,gBAAgBX,eAAeY,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI,CAACH,eAAe;YAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;QAClE;QAEA,MAAME,QAAQC,KAAKC,GAAG;QACtB,MAAMC,MAAM;YAAEpB;QAAQ;QAEtB,IAAI;YACFA,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEK,cAAcG,IAAI,CAAC,CAAC;YAAC;YACnE,MAAMrB,gBAAgB0B;YACtB,MAAMR,cAAcS,IAAI,CAAC;gBAAErB;gBAASoB;YAAI;YACxCpB,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEK,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMK,cAAc,MAAMzB,qBAAqB,IAAI,CAAC0B,OAAO;YAC3D,IAAID,aAAa;gBACf,MAAMtB,QAAQwB,MAAM,CAAC;oBACnBC,IAAId,UAAUc,EAAE;oBAChBC,YAAY;oBACZN;gBACF;YACF;YAEA,MAAM5B,kBAAkB4B;QAC1B,EAAE,OAAOO,KAAc;YACrB,MAAMhC,gBAAgByB;YAEtBpB,QAAQK,MAAM,CAACuB,KAAK,CAAC;gBACnBD;gBACApB,KAAKT,WAAW6B,KAAK,CAAC,qBAAqB,EAAEf,cAAcG,IAAI,CAAC,eAAe,CAAC;YAClF;YACAc,QAAQC,IAAI,CAAC;QACf;IACF;AACF"}
|
package/dist/migrateFresh.js
CHANGED
@@ -69,4 +69,4 @@ import { parseError } from './utilities/parseError.js';
|
|
69
69
|
}
|
70
70
|
}
|
71
71
|
|
72
|
-
//# sourceMappingURL=
|
72
|
+
//# sourceMappingURL=migrateFresh.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload/types'\n\nimport { sql } from 'drizzle-orm'\nimport {\n commitTransaction,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload/database'\nimport prompts from 'prompts'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: PostgresAdapter,\n { forceAcceptWarning = false },\n): Promise<void> {\n const { payload } = this\n\n if (forceAcceptWarning === false) {\n const { confirm: acceptWarning } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!acceptWarning) {\n process.exit(0)\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.drizzle.execute(\n sql.raw(`drop schema ${this.schemaName || 'public'} cascade;\n create schema ${this.schemaName || 'public'};`),\n )\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = { payload } as PayloadRequest\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back`),\n })\n }\n }\n}\n"],"names":["sql","commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","parseError","migrateFresh","forceAcceptWarning","payload","confirm","acceptWarning","name","type","initial","message","onCancel","process","exit","logger","info","msg","drizzle","execute","raw","schemaName","migrationFiles","debug","length","req","migration","start","Date","now","up","create","collection","data","batch","err","error"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SACEC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,mBAAkB;AACzB,OAAOC,aAAa,UAAS;AAI7B,SAASC,UAAU,QAAQ,4BAA2B;AAEtD;;CAEC,GACD,OAAO,eAAeC,aAEpB,EAAEC,qBAAqB,KAAK,EAAE;IAE9B,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAID,uBAAuB,OAAO;QAChC,MAAM,EAAEE,SAASC,aAAa,EAAE,GAAG,MAAMN,QACvC;YACEO,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G,GACA;YACEC,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,IAAI,CAACP,eAAe;YAClBM,QAAQC,IAAI,CAAC;QACf;IACF;IAEAT,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,OAAO,CAACC,OAAO,CACxBvB,IAAIwB,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAACC,UAAU,IAAI,SAAS;gBACvC,EAAE,IAAI,CAACA,UAAU,IAAI,SAAS,CAAC,CAAC;IAG9C,MAAMC,iBAAiB,MAAMtB,mBAAmB;QAAEK;IAAQ;IAC1DA,QAAQU,MAAM,CAACQ,KAAK,CAAC;QACnBN,KAAK,CAAC,MAAM,EAAEK,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM;QAAEpB;IAAQ;IACtB,qBAAqB;IACrB,KAAK,MAAMqB,aAAaJ,eAAgB;QACtCjB,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAES,UAAUlB,IAAI,CAAC,CAAC;QAAC;QAC1D,IAAI;YACF,MAAMmB,QAAQC,KAAKC,GAAG;YACtB,MAAM/B,gBAAgB2B;YACtB,MAAMC,UAAUI,EAAE,CAAC;gBAAEzB;gBAASoB;YAAI;YAClC,MAAMpB,QAAQ0B,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJzB,MAAMkB,UAAUlB,IAAI;oBACpB0B,OAAO;gBACT;gBACAT;YACF;YACA,MAAM5B,kBAAkB4B;YAExBpB,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAES,UAAUlB,IAAI,CAAC,EAAE,EAAEoB,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOQ,KAAc;YACrB,MAAMpC,gBAAgB0B;YACtBpB,QAAQU,MAAM,CAACqB,KAAK,CAAC;gBACnBD;gBACAlB,KAAKf,WAAWiC,KAAK,CAAC,wBAAwB,EAAET,UAAUlB,IAAI,CAAC,cAAc,CAAC;YAChF;QACF;IACF;AACF"}
|
package/dist/migrateRefresh.js
CHANGED
@@ -99,4 +99,4 @@ import { parseError } from './utilities/parseError.js';
|
|
99
99
|
}
|
100
100
|
}
|
101
101
|
|
102
|
-
//# sourceMappingURL=
|
102
|
+
//# sourceMappingURL=migrateRefresh.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrateRefresh.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { PayloadRequest } from 'payload/types'\n\nimport {\n commitTransaction,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload/database'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Run all migration down functions before running up\n */\nexport async function migrateRefresh(this: PostgresAdapter) {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const req = { payload } as PayloadRequest\n\n // Reverse order of migrations to rollback\n existingMigrations.reverse()\n\n for (const migration of existingMigrations) {\n try {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n payload.logger.info({ msg: `Migrating down: ${migration.name}` })\n const start = Date.now()\n await initTransaction(req)\n await migrationFile.down({ payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this.drizzle)\n if (tableExists) {\n await payload.delete({\n collection: 'payload-migrations',\n req,\n where: {\n name: {\n equals: migration.name,\n },\n },\n })\n }\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`),\n })\n process.exit(1)\n }\n }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n executed: true,\n },\n req,\n })\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`),\n })\n }\n }\n}\n"],"names":["commitTransaction","getMigrations","initTransaction","killTransaction","readMigrationFiles","migrationTableExists","parseError","migrateRefresh","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","req","reverse","migration","migrationFile","find","m","name","Error","start","Date","now","down","tableExists","drizzle","delete","collection","where","equals","err","error","process","exit","up","create","data","executed"],"mappings":"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"}
|
package/dist/migrateReset.js
CHANGED
@@ -79,4 +79,4 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
|
|
79
79
|
}
|
80
80
|
}
|
81
81
|
|
82
|
-
//# sourceMappingURL=
|
82
|
+
//# sourceMappingURL=migrateReset.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrateReset.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { PayloadRequest } from 'payload/types'\n\nimport {\n commitTransaction,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload/database'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\n/**\n * Run all migrate down functions\n */\nexport async function migrateReset(this: PostgresAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to reset.' })\n return\n }\n\n const req = { payload } as PayloadRequest\n\n // Rollback all migrations in order\n for (const migration of existingMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n try {\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n await migrationFile.down({ payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this.drizzle)\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n } catch (err: unknown) {\n let msg = `Error running migration ${migrationFile.name}.`\n\n if (err instanceof Error) msg += ` ${err.message}`\n\n await killTransaction(req)\n payload.logger.error({\n err,\n msg,\n })\n process.exit(1)\n }\n }\n\n // Delete dev migration\n\n const tableExists = await migrationTableExists(this.drizzle)\n if (tableExists) {\n try {\n await payload.delete({\n collection: 'payload-migrations',\n where: {\n batch: {\n equals: -1,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({ error: err, msg: 'Error deleting dev migration' })\n }\n }\n}\n"],"names":["commitTransaction","getMigrations","initTransaction","killTransaction","readMigrationFiles","migrationTableExists","migrateReset","payload","migrationFiles","existingMigrations","length","logger","info","msg","req","migration","migrationFile","find","m","name","Error","start","Date","now","down","tableExists","drizzle","delete","id","collection","err","message","error","process","exit","where","batch","equals"],"mappings":"AAAA,yDAAyD,GAGzD,SACEA,iBAAiB,EACjBC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,mBAAkB;AAIzB,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E;;CAEC,GACD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMJ,mBAAmB;QAAEG;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAE,GAAG,MAAMR,cAAc;QAAEM;IAAQ;IAE7D,IAAI,CAACE,oBAAoBC,QAAQ;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA0B;QACrD;IACF;IAEA,MAAMC,MAAM;QAAEP;IAAQ;IAEtB,mCAAmC;IACnC,KAAK,MAAMQ,aAAaN,mBAAoB;QAC1C,MAAMO,gBAAgBR,eAAeS,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI;YACF,IAAI,CAACH,eAAe;gBAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;YAClE;YAEA,MAAME,QAAQC,KAAKC,GAAG;YACtBhB,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEG,cAAcG,IAAI,CAAC,CAAC;YAAC;YACnE,MAAMjB,gBAAgBY;YACtB,MAAME,cAAcQ,IAAI,CAAC;gBAAEjB;gBAASO;YAAI;YACxCP,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEG,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMI,cAAc,MAAMpB,qBAAqB,IAAI,CAACqB,OAAO;YAC3D,IAAID,aAAa;gBACf,MAAMlB,QAAQoB,MAAM,CAAC;oBACnBC,IAAIb,UAAUa,EAAE;oBAChBC,YAAY;oBACZf;gBACF;YACF;YAEA,MAAMd,kBAAkBc;QAC1B,EAAE,OAAOgB,KAAc;YACrB,IAAIjB,MAAM,CAAC,wBAAwB,EAAEG,cAAcG,IAAI,CAAC,CAAC,CAAC;YAE1D,IAAIW,eAAeV,OAAOP,OAAO,CAAC,CAAC,EAAEiB,IAAIC,OAAO,CAAC,CAAC;YAElD,MAAM5B,gBAAgBW;YACtBP,QAAQI,MAAM,CAACqB,KAAK,CAAC;gBACnBF;gBACAjB;YACF;YACAoB,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,uBAAuB;IAEvB,MAAMT,cAAc,MAAMpB,qBAAqB,IAAI,CAACqB,OAAO;IAC3D,IAAID,aAAa;QACf,IAAI;YACF,MAAMlB,QAAQoB,MAAM,CAAC;gBACnBE,YAAY;gBACZM,OAAO;oBACLC,OAAO;wBACLC,QAAQ,CAAC;oBACX;gBACF;YACF;QACF,EAAE,OAAOP,KAAc;YACrBvB,QAAQI,MAAM,CAACqB,KAAK,CAAC;gBAAEA,OAAOF;gBAAKjB,KAAK;YAA+B;QACzE;IACF;AACF"}
|
package/dist/migrateStatus.js
CHANGED
@@ -41,4 +41,4 @@ export async function migrateStatus() {
|
|
41
41
|
p.printTable();
|
42
42
|
}
|
43
43
|
|
44
|
-
//# sourceMappingURL=
|
44
|
+
//# sourceMappingURL=migrateStatus.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/migrateStatus.ts"],"sourcesContent":["import { Table } from 'console-table-printer'\nimport { getMigrations, readMigrationFiles } from 'payload/database'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\nexport async function migrateStatus(this: PostgresAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n let existingMigrations = []\n const hasMigrationTable = await migrationTableExists(this.drizzle)\n\n if (hasMigrationTable) {\n ;({ existingMigrations } = await getMigrations({ payload }))\n }\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations found.' })\n return\n }\n\n // Compare migration files to existing migrations\n const statuses = migrationFiles.map((migration) => {\n const existingMigration = existingMigrations.find((m) => m.name === migration.name)\n return {\n Name: migration.name,\n // eslint-disable-next-line perfectionist/sort-objects\n Batch: existingMigration?.batch,\n Ran: existingMigration ? 'Yes' : 'No',\n }\n })\n\n const p = new Table()\n\n statuses.forEach((s) => {\n p.addRow(s, {\n color: s.Ran === 'Yes' ? 'green' : 'red',\n })\n })\n p.printTable()\n}\n"],"names":["Table","getMigrations","readMigrationFiles","migrationTableExists","migrateStatus","payload","migrationFiles","logger","debug","msg","length","existingMigrations","hasMigrationTable","drizzle","info","statuses","map","migration","existingMigration","find","m","name","Name","Batch","batch","Ran","p","forEach","s","addRow","color","printTable"],"mappings":"AAAA,SAASA,KAAK,QAAQ,wBAAuB;AAC7C,SAASC,aAAa,EAAEC,kBAAkB,QAAQ,mBAAkB;AAIpE,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMJ,mBAAmB;QAAEG;IAAQ;IAE1DA,QAAQE,MAAM,CAACC,KAAK,CAAC;QACnBC,KAAK,CAAC,MAAM,EAAEH,eAAeI,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,IAAIC,qBAAqB,EAAE;IAC3B,MAAMC,oBAAoB,MAAMT,qBAAqB,IAAI,CAACU,OAAO;IAEjE,IAAID,mBAAmB;QACnB,CAAA,EAAED,kBAAkB,EAAE,GAAG,MAAMV,cAAc;YAAEI;QAAQ,EAAC;IAC5D;IAEA,IAAI,CAACC,eAAeI,MAAM,EAAE;QAC1BL,QAAQE,MAAM,CAACO,IAAI,CAAC;YAAEL,KAAK;QAAuB;QAClD;IACF;IAEA,iDAAiD;IACjD,MAAMM,WAAWT,eAAeU,GAAG,CAAC,CAACC;QACnC,MAAMC,oBAAoBP,mBAAmBQ,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAClF,OAAO;YACLC,MAAML,UAAUI,IAAI;YACpB,sDAAsD;YACtDE,OAAOL,mBAAmBM;YAC1BC,KAAKP,oBAAoB,QAAQ;QACnC;IACF;IAEA,MAAMQ,IAAI,IAAI1B;IAEde,SAASY,OAAO,CAAC,CAACC;QAChBF,EAAEG,MAAM,CAACD,GAAG;YACVE,OAAOF,EAAEH,GAAG,KAAK,QAAQ,UAAU;QACrC;IACF;IACAC,EAAEK,UAAU;AACd"}
|
@@ -26,4 +26,4 @@ export async function buildAndOrConditions({ adapter, fields, joinAliases, joins
|
|
26
26
|
return completedConditions;
|
27
27
|
}
|
28
28
|
|
29
|
-
//# sourceMappingURL=
|
29
|
+
//# sourceMappingURL=buildAndOrConditions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, Where } from 'payload/types'\n\nimport type { GenericColumn, PostgresAdapter } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryJoins } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport async function buildAndOrConditions({\n adapter,\n fields,\n joinAliases,\n joins,\n locale,\n selectFields,\n tableName,\n where,\n}: {\n adapter: PostgresAdapter\n collectionSlug?: string\n fields: Field[]\n globalSlug?: string\n joinAliases: BuildQueryJoinAliases\n joins: BuildQueryJoins\n locale?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: Where[]\n}): Promise<SQL[]> {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n // eslint-disable-next-line no-restricted-syntax\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n // eslint-disable-next-line no-await-in-loop\n const result = await parseParams({\n adapter,\n fields,\n joinAliases,\n joins,\n locale,\n selectFields,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","fields","joinAliases","joins","locale","selectFields","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,MAAM,EACNC,WAAW,EACXC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,SAAS,EACTC,KAAK,EAYN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAC7C,gDAAgD;IAChD,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,4CAA4C;YAC5C,MAAMC,SAAS,MAAMZ,YAAY;gBAC/BE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
|
@@ -73,4 +73,4 @@ const buildQuery = async function buildQuery({ adapter, fields, locale, sort, ta
|
|
73
73
|
};
|
74
74
|
export default buildQuery;
|
75
75
|
|
76
|
-
//# sourceMappingURL=
|
76
|
+
//# sourceMappingURL=buildQuery.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildQuery.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { Field, Where } from 'payload/types'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { GenericColumn, GenericTable, PostgresAdapter } from '../types.js'\n\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\nimport { parseParams } from './parseParams.js'\n\nexport type BuildQueryJoins = Record<string, SQL>\n\nexport type BuildQueryJoinAliases = {\n condition: SQL\n table: GenericTable | PgTableWithColumns<any>\n}[]\n\ntype BuildQueryArgs = {\n adapter: PostgresAdapter\n fields: Field[]\n locale?: string\n sort?: string\n tableName: string\n where: Where\n}\n\ntype Result = {\n joinAliases: BuildQueryJoinAliases\n joins: BuildQueryJoins\n orderBy: {\n column: GenericColumn\n order: typeof asc | typeof desc\n }\n selectFields: Record<string, GenericColumn>\n where: SQL\n}\nconst buildQuery = async function buildQuery({\n adapter,\n fields,\n locale,\n sort,\n tableName,\n where: incomingWhere,\n}: BuildQueryArgs): Promise<Result> {\n const selectFields: Record<string, GenericColumn> = {\n id: adapter.tables[tableName].id,\n }\n const joins: BuildQueryJoins = {}\n const joinAliases: BuildQueryJoinAliases = []\n\n const orderBy: Result['orderBy'] = {\n column: null,\n order: null,\n }\n\n if (sort) {\n let sortPath\n\n if (sort[0] === '-') {\n sortPath = sort.substring(1)\n orderBy.order = desc\n } else {\n sortPath = sort\n orderBy.order = asc\n }\n\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortPath,\n fields,\n joinAliases,\n joins,\n locale,\n pathSegments: sortPath.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortPath,\n })\n orderBy.column = sortTable?.[sortTableColumnName]\n } catch (err) {\n // continue\n }\n }\n\n if (!orderBy?.column) {\n orderBy.order = desc\n const createdAt = adapter.tables[tableName]?.createdAt\n\n if (createdAt) {\n orderBy.column = createdAt\n } else {\n orderBy.column = adapter.tables[tableName].id\n }\n }\n\n if (orderBy.column) {\n selectFields.sort = orderBy.column\n }\n\n let where: SQL\n\n if (incomingWhere && Object.keys(incomingWhere).length > 0) {\n where = await parseParams({\n adapter,\n fields,\n joinAliases,\n joins,\n locale,\n selectFields,\n tableName,\n where: incomingWhere,\n })\n }\n\n return {\n joinAliases,\n joins,\n orderBy,\n selectFields,\n where,\n }\n}\n\nexport default buildQuery\n"],"names":["asc","desc","getTableColumnFromPath","parseParams","buildQuery","adapter","fields","locale","sort","tableName","where","incomingWhere","selectFields","id","tables","joins","joinAliases","orderBy","column","order","sortPath","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","err","createdAt","Object","keys","length"],"mappings":"AAIA,SAASA,GAAG,EAAEC,IAAI,QAAQ,cAAa;AAIvC,SAASC,sBAAsB,QAAQ,8BAA6B;AACpE,SAASC,WAAW,QAAQ,mBAAkB;AA4B9C,MAAMC,aAAa,eAAeA,WAAW,EAC3CC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,OAAOC,aAAa,EACL;IACf,MAAMC,eAA8C;QAClDC,IAAIR,QAAQS,MAAM,CAACL,UAAU,CAACI,EAAE;IAClC;IACA,MAAME,QAAyB,CAAC;IAChC,MAAMC,cAAqC,EAAE;IAE7C,MAAMC,UAA6B;QACjCC,QAAQ;QACRC,OAAO;IACT;IAEA,IAAIX,MAAM;QACR,IAAIY;QAEJ,IAAIZ,IAAI,CAAC,EAAE,KAAK,KAAK;YACnBY,WAAWZ,KAAKa,SAAS,CAAC;YAC1BJ,QAAQE,KAAK,GAAGlB;QAClB,OAAO;YACLmB,WAAWZ;YACXS,QAAQE,KAAK,GAAGnB;QAClB;QAEA,IAAI;YACF,MAAM,EAAEsB,YAAYC,mBAAmB,EAAEC,OAAOC,SAAS,EAAE,GAAGvB,uBAAuB;gBACnFG;gBACAqB,gBAAgBN;gBAChBd;gBACAU;gBACAD;gBACAR;gBACAoB,cAAcP,SAASQ,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;gBACjDjB;gBACAH;gBACAqB,OAAOV;YACT;YACAH,QAAQC,MAAM,GAAGO,WAAW,CAACF,oBAAoB;QACnD,EAAE,OAAOQ,KAAK;QACZ,WAAW;QACb;IACF;IAEA,IAAI,CAACd,SAASC,QAAQ;QACpBD,QAAQE,KAAK,GAAGlB;QAChB,MAAM+B,YAAY3B,QAAQS,MAAM,CAACL,UAAU,EAAEuB;QAE7C,IAAIA,WAAW;YACbf,QAAQC,MAAM,GAAGc;QACnB,OAAO;YACLf,QAAQC,MAAM,GAAGb,QAAQS,MAAM,CAACL,UAAU,CAACI,EAAE;QAC/C;IACF;IAEA,IAAII,QAAQC,MAAM,EAAE;QAClBN,aAAaJ,IAAI,GAAGS,QAAQC,MAAM;IACpC;IAEA,IAAIR;IAEJ,IAAIC,iBAAiBsB,OAAOC,IAAI,CAACvB,eAAewB,MAAM,GAAG,GAAG;QAC1DzB,QAAQ,MAAMP,YAAY;YACxBE;YACAC;YACAU;YACAD;YACAR;YACAK;YACAH;YACAC,OAAOC;QACT;IACF;IAEA,OAAO;QACLK;QACAD;QACAE;QACAL;QACAF;IACF;AACF;AAEA,eAAeN,WAAU"}
|
@@ -11,4 +11,4 @@ export const convertPathToJSONTraversal = (incomingSegments)=>{
|
|
11
11
|
}, '');
|
12
12
|
};
|
13
13
|
|
14
|
-
//# sourceMappingURL=
|
14
|
+
//# sourceMappingURL=convertPathToJSONTraversal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/queries/createJSONQuery/convertPathToJSONTraversal.ts"],"sourcesContent":["import { formatJSONPathSegment } from './formatJSONPathSegment.js'\n\nexport const convertPathToJSONTraversal = (incomingSegments: string[]) => {\n const segments = [...incomingSegments]\n segments.shift()\n\n return segments.reduce((res, segment, i) => {\n const formattedSegment = formatJSONPathSegment(segment)\n\n if (i + 1 === segments.length) return `${res}->>${formattedSegment}`\n return `${res}->${formattedSegment}`\n }, '')\n}\n"],"names":["formatJSONPathSegment","convertPathToJSONTraversal","incomingSegments","segments","shift","reduce","res","segment","i","formattedSegment","length"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,6BAA4B;AAElE,OAAO,MAAMC,6BAA6B,CAACC;IACzC,MAAMC,WAAW;WAAID;KAAiB;IACtCC,SAASC,KAAK;IAEd,OAAOD,SAASE,MAAM,CAAC,CAACC,KAAKC,SAASC;QACpC,MAAMC,mBAAmBT,sBAAsBO;QAE/C,IAAIC,IAAI,MAAML,SAASO,MAAM,EAAE,OAAO,CAAC,EAAEJ,IAAI,GAAG,EAAEG,iBAAiB,CAAC;QACpE,OAAO,CAAC,EAAEH,IAAI,EAAE,EAAEG,iBAAiB,CAAC;IACtC,GAAG;AACL,EAAC"}
|
@@ -2,4 +2,4 @@ export const formatJSONPathSegment = (segment)=>{
|
|
2
2
|
return Number.isNaN(parseInt(segment)) ? `'${segment}'` : segment;
|
3
3
|
};
|
4
4
|
|
5
|
-
//# sourceMappingURL=
|
5
|
+
//# sourceMappingURL=formatJSONPathSegment.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/queries/createJSONQuery/formatJSONPathSegment.ts"],"sourcesContent":["export const formatJSONPathSegment = (segment: string) => {\n return Number.isNaN(parseInt(segment)) ? `'${segment}'` : segment\n}\n"],"names":["formatJSONPathSegment","segment","Number","isNaN","parseInt"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,CAACC;IACpC,OAAOC,OAAOC,KAAK,CAACC,SAASH,YAAY,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,GAAGA;AAC5D,EAAC"}
|
@@ -51,4 +51,4 @@ export const createJSONQuery = ({ operator, pathSegments, treatAsArray, treatRoo
|
|
51
51
|
});
|
52
52
|
};
|
53
53
|
|
54
|
-
//# sourceMappingURL=
|
54
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/queries/createJSONQuery/index.ts"],"sourcesContent":["import { convertPathToJSONTraversal } from './convertPathToJSONTraversal.js'\nimport { formatJSONPathSegment } from './formatJSONPathSegment.js'\n\nconst operatorMap = {\n contains: '~*',\n equals: '=',\n like: '~*',\n}\n\ntype FromArrayArgs = {\n isRoot?: true\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n value: unknown\n}\n\nconst fromArray = ({ isRoot, operator, pathSegments, treatAsArray, value }: FromArrayArgs) => {\n const newPathSegments = pathSegments.slice(isRoot ? 1 : 2)\n const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`\n\n newPathSegments.unshift(alias)\n\n const arrayElements = isRoot\n ? pathSegments[0]\n : `${pathSegments[0]} -> ${formatJSONPathSegment(pathSegments[1])}`\n\n return `EXISTS (\n SELECT 1\n FROM jsonb_array_elements(${arrayElements}) AS ${alias}\n WHERE ${createJSONQuery({\n operator,\n pathSegments: newPathSegments,\n treatAsArray,\n value,\n })}\n )`\n}\n\ntype CreateConstraintArgs = {\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n value: unknown\n}\n\nconst createConstraint = ({ operator, pathSegments, value }: CreateConstraintArgs): string => {\n const jsonQuery = convertPathToJSONTraversal(pathSegments)\n return `${pathSegments[0]}${jsonQuery} ${operatorMap[operator]} '${value}'`\n}\n\ntype Args = {\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n treatRootAsArray?: boolean\n value: unknown\n}\n\nexport const createJSONQuery = ({\n operator,\n pathSegments,\n treatAsArray,\n treatRootAsArray,\n value,\n}: Args): string => {\n if (treatRootAsArray) {\n return fromArray({\n isRoot: true,\n operator,\n pathSegments,\n treatAsArray,\n value,\n })\n }\n\n if (treatAsArray.includes(pathSegments[1])) {\n return fromArray({\n operator,\n pathSegments,\n treatAsArray,\n value,\n })\n }\n\n return createConstraint({ operator, pathSegments, treatAsArray, value })\n}\n"],"names":["convertPathToJSONTraversal","formatJSONPathSegment","operatorMap","contains","equals","like","fromArray","isRoot","operator","pathSegments","treatAsArray","value","newPathSegments","slice","alias","length","unshift","arrayElements","createJSONQuery","createConstraint","jsonQuery","treatRootAsArray","includes"],"mappings":"AAAA,SAASA,0BAA0B,QAAQ,kCAAiC;AAC5E,SAASC,qBAAqB,QAAQ,6BAA4B;AAElE,MAAMC,cAAc;IAClBC,UAAU;IACVC,QAAQ;IACRC,MAAM;AACR;AAUA,MAAMC,YAAY,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,YAAY,EAAEC,KAAK,EAAiB;IACvF,MAAMC,kBAAkBH,aAAaI,KAAK,CAACN,SAAS,IAAI;IACxD,MAAMO,QAAQ,CAAC,EAAEL,YAAY,CAACF,SAAS,IAAI,EAAE,CAAC,OAAO,EAAEK,gBAAgBG,MAAM,CAAC,CAAC;IAE/EH,gBAAgBI,OAAO,CAACF;IAExB,MAAMG,gBAAgBV,SAClBE,YAAY,CAAC,EAAE,GACf,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,IAAI,EAAER,sBAAsBQ,YAAY,CAAC,EAAE,EAAE,CAAC;IAErE,OAAO,CAAC;;8BAEoB,EAAEQ,cAAc,KAAK,EAAEH,MAAM;UACjD,EAAEI,gBAAgB;QACtBV;QACAC,cAAcG;QACdF;QACAC;IACF,GAAG;GACJ,CAAC;AACJ;AASA,MAAMQ,mBAAmB,CAAC,EAAEX,QAAQ,EAAEC,YAAY,EAAEE,KAAK,EAAwB;IAC/E,MAAMS,YAAYpB,2BAA2BS;IAC7C,OAAO,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,EAAEW,UAAU,CAAC,EAAElB,WAAW,CAACM,SAAS,CAAC,EAAE,EAAEG,MAAM,CAAC,CAAC;AAC7E;AAUA,OAAO,MAAMO,kBAAkB,CAAC,EAC9BV,QAAQ,EACRC,YAAY,EACZC,YAAY,EACZW,gBAAgB,EAChBV,KAAK,EACA;IACL,IAAIU,kBAAkB;QACpB,OAAOf,UAAU;YACfC,QAAQ;YACRC;YACAC;YACAC;YACAC;QACF;IACF;IAEA,IAAID,aAAaY,QAAQ,CAACb,YAAY,CAAC,EAAE,GAAG;QAC1C,OAAOH,UAAU;YACfE;YACAC;YACAC;YACAC;QACF;IACF;IAEA,OAAOQ,iBAAiB;QAAEX;QAAUC;QAAcC;QAAcC;IAAM;AACxE,EAAC"}
|
@@ -365,4 +365,4 @@ import { v4 as uuid } from 'uuid';
|
|
365
365
|
throw new APIError(`Cannot find field for path at ${fieldPath}`);
|
366
366
|
};
|
367
367
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeS5qcydcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBUZXh0RmllbGQgfCBOdW1iZXJGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgam9pbnNbdGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aDogYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWVTdWZmaXg6IGAke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfV9gLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcbiAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGxldCBibG9ja1RhYmxlQ29sdW1uOiBUYWJsZUNvbHVtblxuICAgICAgICBsZXQgbmV3VGFibGVOYW1lOiBzdHJpbmdcblxuICAgICAgICAvLyBoYW5kbGUgYmxvY2tUeXBlIHF1ZXJpZXNcbiAgICAgICAgaWYgKHBhdGhTZWdtZW50c1sxXSA9PT0gJ2Jsb2NrVHlwZScpIHtcbiAgICAgICAgICAvLyBmaW5kIHRoZSBibG9jayBjb25maWcgdXNpbmcgdGhlIHZhbHVlXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG4gICAgICAgICAgYmxvY2tUeXBlcy5mb3JFYWNoKChibG9ja1R5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrKSA9PiBibG9jay5zbHVnID09PSBibG9ja1R5cGUpXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19wYXRoJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBwYXRoU2VnbWVudHNbMF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKCkgPT4gJ2lkJyxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0Jsb2NrRmllbGQgPSBmaWVsZC5ibG9ja3Muc29tZSgoYmxvY2spID0+IHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZmluZSwgbm90IGV2ZXJ5IGJsb2NrIHdpbGwgaGF2ZSB0aGUgZmllbGRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBibG9ja1RhYmxlQ29sdW1uID0gcmVzdWx0XG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50cy5jb25jYXQoYmxvY2tDb25zdHJhaW50cylcbiAgICAgICAgICBzZWxlY3RGaWVsZHMgPSB7IC4uLnNlbGVjdEZpZWxkcywgLi4uYmxvY2tTZWxlY3RGaWVsZHMgfVxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGhhc0Jsb2NrRmllbGQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYmxvY2tUYWJsZUNvbHVtbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZDogYmxvY2tUYWJsZUNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBibG9ja1RhYmxlQ29sdW1uLnJhd0NvbHVtbixcbiAgICAgICAgICAgIHRhYmxlOiBibG9ja1RhYmxlQ29sdW1uLnRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBsZXQgcmVsYXRpb25zaGlwRmllbGRzXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fcmVsc2BcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvblBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMSkuam9pbignLicpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lID0gdXVpZCgpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGUgPSBhbGlhcyhcbiAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvblRhYmxlTmFtZV0sXG4gICAgICAgICAgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUsXG4gICAgICAgIClcblxuICAgICAgICAvLyBKb2luIGluIHRoZSByZWxhdGlvbnNoaXBzIHRhYmxlXG4gICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgIGNvbmRpdGlvbjogYW5kKFxuICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2VsZWN0RmllbGRzW2Ake3JlbGF0aW9uVGFibGVOYW1lfS5wYXRoYF0gPSBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGhcblxuICAgICAgICBsZXQgbmV3QWxpYXNUYWJsZVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQucmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0b1NuYWtlQ2FzZShmaWVsZC5yZWxhdGlvblRvKX1gXG4gICAgICAgICAgLy8gcGFyZW50IHRvIHJlbGF0aW9uc2hpcCBqb2luIHRhYmxlXG4gICAgICAgICAgcmVsYXRpb25zaGlwRmllbGRzID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgICAgIG5ld0FsaWFzVGFibGUgPSBhbGlhcyhhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLCB0b1NuYWtlQ2FzZSh1dWlkKCkpKVxuXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGVxKG5ld0FsaWFzVGFibGUuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGVbYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdKSxcbiAgICAgICAgICAgIHRhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICcnIHx8IG5ld0NvbGxlY3Rpb25QYXRoID09PSAnaWQnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtmaWVsZC5yZWxhdGlvblRvfUlEYCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICd2YWx1ZScpIHtcbiAgICAgICAgICBjb25zdCB0YWJsZUNvbHVtbnNOYW1lcyA9IGZpZWxkLnJlbGF0aW9uVG8ubWFwKFxuICAgICAgICAgICAgKHJlbGF0aW9uVG8pID0+IGBcIiR7YWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWV9XCIuXCIke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9pZFwiYCxcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYXdDb2x1bW46IHNxbC5yYXcoYENPQUxFU0NFKCR7dGFibGVDb2x1bW5zTmFtZXMuam9pbignLCAnKX0pYCksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICdyZWxhdGlvblRvJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gZmllbGQucmVsYXRpb25UbyA6IFtmaWVsZC5yZWxhdGlvblRvXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkUmVsYXRpb24gPSByZWxhdGlvblRvLmZpbmQoKHJlbGF0aW9uKSA9PiByZWxhdGlvbiA9PT0gdmFsKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSByZXR1cm4gYCR7bWF0Y2hlZFJlbGF0aW9ufUlEYFxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignTm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiBuZXdDb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IHJlbGF0aW9uc2hpcEZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAvLyBJZiBsb2NhbGl6ZWQsIHdlIGdvIHRvIGxvY2FsaXplZCB0YWJsZSBhbmQgc2V0IGFsaWFzVGFibGUgdG8gdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBzbyBpdCBpcyBub3QgcGlja2VkIHVwIGJlbG93IHRvIGJlIHVzZWQgYXMgdGFyZ2V0VGFibGVcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKHBhcmVudFRhYmxlLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRClcblxuICAgICAgICAgICAgYWxpYXNUYWJsZSA9IHVuZGVmaW5lZFxuXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0YXJnZXRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXVxuXG4gICAgICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgICAgIHRhcmdldFRhYmxlW2Ake2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgdGFibGU6IHRhcmdldFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBBUElFcnJvcihgQ2Fubm90IGZpbmQgZmllbGQgZm9yIHBhdGggYXQgJHtmaWVsZFBhdGh9YClcbn1cbiJdLCJuYW1lcyI6WyJhbmQiLCJlcSIsImxpa2UiLCJzcWwiLCJhbGlhcyIsIkFQSUVycm9yIiwiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJ0b1NuYWtlQ2FzZSIsInY0IiwidXVpZCIsImdldFRhYmxlQ29sdW1uRnJvbVBhdGgiLCJhZGFwdGVyIiwiYWxpYXNUYWJsZSIsImNvbGxlY3Rpb25QYXRoIiwiY29sdW1uUHJlZml4IiwiY29uc3RyYWludFBhdGgiLCJpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIiwiY29uc3RyYWludHMiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwiaW5jb21pbmdMb2NhbGUiLCJwYXRoU2VnbWVudHMiLCJpbmNvbWluZ1NlZ21lbnRzIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInNlbGVjdEZpZWxkcyIsInRhYmxlTmFtZSIsInRhYmxlTmFtZVN1ZmZpeCIsInZhbHVlIiwiZmllbGRQYXRoIiwiZmllbGQiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJuYW1lIiwibmV3VGFibGVOYW1lIiwiaWQiLCJ0YWJsZXMiLCJjb2x1bW5OYW1lIiwidHlwZSIsImlkVHlwZSIsInRhYmxlIiwibG9jYWxpemVkIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsIm1hdGNoZWRMb2NhbGUiLCJsb2NhbGVDb2RlcyIsInNwbGljZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJzbGljZSIsIl9wYXJlbnRJRCIsInB1c2giLCJfbG9jYWxlIiwiYmxvY2tUYWJsZUNvbHVtbiIsImJsb2NrVHlwZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJzbHVnIiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJoYXNCbG9ja0ZpZWxkIiwic29tZSIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJuZXdDb2xsZWN0aW9uUGF0aCIsImpvaW4iLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSIsImFsaWFzUmVsYXRpb25zaGlwVGFibGUiLCJjb25kaXRpb24iLCJwYXJlbnQiLCJwYXRoIiwibmV3QWxpYXNUYWJsZSIsInJlbGF0aW9uVG8iLCJjb2xsZWN0aW9ucyIsInRhYmxlQ29sdW1uc05hbWVzIiwicmF3IiwidmFsIiwibWF0Y2hlZFJlbGF0aW9uIiwicmVsYXRpb24iLCJ1bmRlZmluZWQiLCJwYXJlbnRUYWJsZSIsInRhcmdldFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0MsR0FLcEMsU0FBU0EsR0FBRyxFQUFFQyxFQUFFLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFRLGNBQWE7QUFDaEQsU0FBU0MsS0FBSyxRQUFRLHNCQUFxQjtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsaUJBQWdCO0FBQ3pDLFNBQVNDLGdCQUFnQixFQUFFQyxVQUFVLFFBQVEsZ0JBQWU7QUFDNUQsU0FBU0MscUJBQXFCLFFBQVEsb0JBQW1CO0FBQ3pELE9BQU9DLGlCQUFpQixnQkFBZTtBQUN2QyxTQUFTQyxNQUFNQyxJQUFJLFFBQVEsT0FBTTtBQTZDakM7Ozs7Q0FJ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
|
368
|
+
//# sourceMappingURL=getTableColumnFromPath.js.map
|