payload 3.2.2 → 3.2.3-canary.3e78927
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/elements/DatePicker.d.ts +2 -2
- package/dist/admin/elements/DatePicker.d.ts.map +1 -1
- package/dist/admin/elements/DatePicker.js.map +1 -1
- package/dist/admin/types.js +3 -3
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/cookies.js.map +1 -1
- package/dist/auth/crypto.js.map +1 -1
- package/dist/auth/extractJWT.js.map +1 -1
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +0 -12
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/sendVerificationEmail.js.map +1 -1
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/bin/generateImportMap/index.js.map +1 -1
- package/dist/bin/generateImportMap/parsePayloadComponent.js +1 -0
- package/dist/bin/generateImportMap/parsePayloadComponent.js.map +1 -1
- package/dist/bin/generateTypes.js.map +1 -1
- package/dist/bin/index.js.map +1 -1
- package/dist/bin/info.js.map +1 -1
- package/dist/bin/migrate.js.map +1 -1
- package/dist/collections/operations/findVersionByID.js +2 -0
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.js +1 -0
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/config/client.js +2 -0
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/find.js.map +1 -1
- package/dist/config/sanitize.js.map +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/migrations/createMigration.js.map +1 -1
- package/dist/database/migrations/getPredefinedMigration.js.map +1 -1
- package/dist/database/migrations/migrate.js.map +1 -1
- package/dist/database/migrations/migrateDown.js.map +1 -1
- package/dist/database/migrations/migrateRefresh.js.map +1 -1
- package/dist/database/migrations/migrateReset.js.map +1 -1
- package/dist/database/migrations/readMigrationFiles.js.map +1 -1
- package/dist/database/migrations/writeMigrationIndex.js.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
- package/dist/email/sendEmail.js.map +1 -1
- package/dist/errors/AuthenticationError.js.map +1 -1
- package/dist/errors/FileRetrievalError.js.map +1 -1
- package/dist/errors/QueryError.js.map +1 -1
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/fields/config/client.js +1 -0
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.js +1 -1
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitizeJoinField.js.map +1 -1
- package/dist/fields/config/types.d.ts +14 -0
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/getFieldPaths.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -0
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +1 -0
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +1 -0
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/mergeBaseFields.js +1 -0
- package/dist/fields/mergeBaseFields.js.map +1 -1
- package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
- package/dist/fields/validations.d.ts +6 -2
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +5 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/sanitize.js +1 -0
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/operations/findVersions.js +2 -0
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/preferences/deleteUserPreferences.js.map +1 -1
- package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
- package/dist/queues/config/types/taskTypes.d.ts +23 -4
- package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
- package/dist/queues/config/types/taskTypes.js.map +1 -1
- package/dist/queues/config/types/workflowJSONTypes.d.ts +5 -0
- package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -1
- package/dist/queues/config/types/workflowJSONTypes.js.map +1 -1
- package/dist/queues/config/types/workflowTypes.d.ts +13 -5
- package/dist/queues/config/types/workflowTypes.d.ts.map +1 -1
- package/dist/queues/config/types/workflowTypes.js.map +1 -1
- package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/index.js +2 -1
- package/dist/queues/operations/runJobs/index.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +18 -5
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js +16 -16
- package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.js +8 -1
- package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/index.js +6 -1
- package/dist/queues/operations/runJobs/runJob/index.js.map +1 -1
- package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -1
- package/dist/queues/utilities/getJobTaskStatus.js +5 -0
- package/dist/queues/utilities/getJobTaskStatus.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getExternalFile.js.map +1 -1
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/imageResizer.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
- package/dist/utilities/configToJSONSchema.js +1 -0
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/dependencies/dependencyChecker.js.map +1 -1
- package/dist/utilities/getDataByPath.js.map +1 -1
- package/dist/utilities/getSiblingData.js.map +1 -1
- package/dist/utilities/parseCookies.js.map +1 -1
- package/dist/utilities/sanitizePermissions.js +4 -0
- package/dist/utilities/sanitizePermissions.js.map +1 -1
- package/dist/utilities/telemetry/conf/envPaths.js.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/utilities/timestamp.js.map +1 -1
- package/dist/utilities/wordBoundariesRegex.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -1
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/saveVersion.js +2 -0
- package/dist/versions/saveVersion.js.map +1 -1
- package/package.json +4 -4
package/dist/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["import { Cron } from 'croner'\nimport minimist from 'minimist'\nimport { pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport type { BinScript } from '../config/types.js'\n\nimport { findConfig } from '../config/find.js'\nimport { getPayload } from '../index.js'\nimport { generateImportMap } from './generateImportMap/index.js'\nimport { generateTypes } from './generateTypes.js'\nimport { info } from './info.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate } from './migrate.js'\n\nexport const bin = async () => {\n loadEnv()\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (script === 'info') {\n await info()\n return\n }\n\n if (script === 'run') {\n const scriptPath = args._[1]\n if (!scriptPath) {\n console.error('Please provide a script path to run.')\n process.exit(1)\n }\n\n const absoluteScriptPath = path.resolve(process.cwd(), scriptPath)\n\n // Modify process.argv to remove 'run' and the script path\n const originalArgv = process.argv\n process.argv = [process.argv[0], process.argv[1], ...args._.slice(2)]\n\n try {\n await import(pathToFileURL(absoluteScriptPath).toString())\n } catch (error) {\n console.error(`Error running script: ${absoluteScriptPath}`)\n console.error(error)\n process.exit(1)\n } finally {\n // Restore original process.argv\n process.argv = originalArgv\n }\n return\n }\n\n const configPath = findConfig()\n const configPromise = await import(pathToFileURL(configPath).toString())\n let config = await configPromise\n if (config.default) {\n config = await config.default\n }\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const script: BinScript = await import(pathToFileURL(userBinScript.scriptPath).toString())\n await script(config)\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return\n }\n\n if (script.startsWith('migrate')) {\n return migrate({ config, parsedArgs: args }).then(() => process.exit(0))\n }\n\n if (script === 'generate:types') {\n return generateTypes(config)\n }\n\n if (script === 'generate:importmap') {\n return generateImportMap(config)\n }\n\n if (script === 'jobs:run') {\n const payload = await getPayload({ config })\n const limit = args.limit ? parseInt(args.limit, 10) : undefined\n const queue = args.queue ? args.queue : undefined\n\n if (args.cron) {\n new Cron(args.cron, async () => {\n await payload.jobs.run({\n limit,\n queue,\n })\n })\n\n process.stdin.resume() // Keep the process alive\n\n return\n } else {\n return await payload.jobs.run({\n limit,\n queue,\n })\n }\n }\n\n console.error(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["Cron","minimist","pathToFileURL","path","findConfig","getPayload","generateImportMap","generateTypes","info","loadEnv","migrate","bin","args","process","argv","slice","script","_","toLowerCase","scriptPath","console","error","exit","absoluteScriptPath","resolve","cwd","originalArgv","toString","configPath","configPromise","config","default","userBinScript","Array","isArray","find","key","err","log","startsWith","parsedArgs","then","payload","limit","parseInt","undefined","queue","cron","jobs","run","stdin","resume"],"mappings":"AAAA,SAASA,IAAI,QAAQ,SAAQ;AAC7B,OAAOC,cAAc,WAAU;AAC/B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAIvB,SAASC,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,UAAU,QAAQ,cAAa;AACxC,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,OAAO,QAAQ,eAAc;AAEtC,OAAO,MAAMC,MAAM;IACjBF;IAEA,MAAMG,OAAOX,SAASY,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOJ,KAAKK,CAAC,CAAC,EAAE,KAAK,WAAWL,KAAKK,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,IAAIF,WAAW,QAAQ;QACrB,MAAMR;QACN;IACF;IAEA,IAAIQ,WAAW,OAAO;QACpB,MAAMG,aAAaP,KAAKK,CAAC,CAAC,EAAE;QAC5B,IAAI,CAACE,YAAY;YACfC,QAAQC,KAAK,CAAC;YACdR,QAAQS,IAAI,CAAC;QACf;QAEA,MAAMC,qBAAqBpB,KAAKqB,OAAO,CAACX,QAAQY,GAAG,IAAIN;QAEvD,0DAA0D;QAC1D,MAAMO,eAAeb,QAAQC,IAAI;QACjCD,QAAQC,IAAI,GAAG;YAACD,QAAQC,IAAI,CAAC,EAAE;YAAED,QAAQC,IAAI,CAAC,EAAE;eAAKF,KAAKK,CAAC,CAACF,KAAK,CAAC;SAAG;QAErE,IAAI;YACF,MAAM,MAAM,CAACb,cAAcqB,oBAAoBI,QAAQ;QACzD,EAAE,OAAON,OAAO;YACdD,QAAQC,KAAK,CAAC,CAAC,sBAAsB,EAAEE,
|
|
1
|
+
{"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["import { Cron } from 'croner'\nimport minimist from 'minimist'\nimport { pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport type { BinScript } from '../config/types.js'\n\nimport { findConfig } from '../config/find.js'\nimport { getPayload } from '../index.js'\nimport { generateImportMap } from './generateImportMap/index.js'\nimport { generateTypes } from './generateTypes.js'\nimport { info } from './info.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate } from './migrate.js'\n\nexport const bin = async () => {\n loadEnv()\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (script === 'info') {\n await info()\n return\n }\n\n if (script === 'run') {\n const scriptPath = args._[1]\n if (!scriptPath) {\n console.error('Please provide a script path to run.')\n process.exit(1)\n }\n\n const absoluteScriptPath = path.resolve(process.cwd(), scriptPath)\n\n // Modify process.argv to remove 'run' and the script path\n const originalArgv = process.argv\n process.argv = [process.argv[0], process.argv[1], ...args._.slice(2)]\n\n try {\n await import(pathToFileURL(absoluteScriptPath).toString())\n } catch (error) {\n console.error(`Error running script: ${absoluteScriptPath}`)\n console.error(error)\n process.exit(1)\n } finally {\n // Restore original process.argv\n process.argv = originalArgv\n }\n return\n }\n\n const configPath = findConfig()\n const configPromise = await import(pathToFileURL(configPath).toString())\n let config = await configPromise\n if (config.default) {\n config = await config.default\n }\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const script: BinScript = await import(pathToFileURL(userBinScript.scriptPath).toString())\n await script(config)\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return\n }\n\n if (script.startsWith('migrate')) {\n return migrate({ config, parsedArgs: args }).then(() => process.exit(0))\n }\n\n if (script === 'generate:types') {\n return generateTypes(config)\n }\n\n if (script === 'generate:importmap') {\n return generateImportMap(config)\n }\n\n if (script === 'jobs:run') {\n const payload = await getPayload({ config })\n const limit = args.limit ? parseInt(args.limit, 10) : undefined\n const queue = args.queue ? args.queue : undefined\n\n if (args.cron) {\n new Cron(args.cron, async () => {\n await payload.jobs.run({\n limit,\n queue,\n })\n })\n\n process.stdin.resume() // Keep the process alive\n\n return\n } else {\n return await payload.jobs.run({\n limit,\n queue,\n })\n }\n }\n\n console.error(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["Cron","minimist","pathToFileURL","path","findConfig","getPayload","generateImportMap","generateTypes","info","loadEnv","migrate","bin","args","process","argv","slice","script","_","toLowerCase","scriptPath","console","error","exit","absoluteScriptPath","resolve","cwd","originalArgv","toString","configPath","configPromise","config","default","userBinScript","Array","isArray","find","key","err","log","startsWith","parsedArgs","then","payload","limit","parseInt","undefined","queue","cron","jobs","run","stdin","resume"],"mappings":"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"}
|
package/dist/bin/info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/info.ts"],"sourcesContent":["import { execFileSync } from 'child_process'\nimport os from 'os'\n\nimport { getDependencies } from '../index.js'\nimport { PAYLOAD_PACKAGE_LIST } from '../versions/payloadPackageList.js'\n\nexport const info = async () => {\n const deps = await getDependencies(process.cwd(), [\n ...PAYLOAD_PACKAGE_LIST,\n 'next',\n 'react',\n 'react-dom',\n ])\n\n const formattedDeps = Array.from(deps.resolved.entries()).map(([name, { version }]) => ({\n name,\n version,\n }))\n\n console.log(generateOutput(formattedDeps))\n}\n\nfunction generateOutput(packages: Array<{ name: string; version: string }>) {\n const cpuCores = os.cpus().length\n\n const primaryDeps = packages.filter(({ name }) => name === 'payload' || name === 'next')\n const otherDeps = packages\n .filter(({ name }) => name !== 'payload' && name !== 'next')\n .sort((a, b) => a.name.localeCompare(b.name))\n\n const formattedDeps = [...primaryDeps, ...otherDeps]\n .map(({ name, version }) => ` ${name}: ${version}`)\n .join('\\n')\n\n return `\nBinaries:\n Node: ${process.versions.node}\n npm: ${getBinaryVersion('npm')}\n Yarn: ${getBinaryVersion('yarn')}\n pnpm: ${getBinaryVersion('pnpm')}\nRelevant Packages:\n${formattedDeps}\nOperating System:\n Platform: ${os.platform()}\n Arch: ${os.arch()}\n Version: ${os.version()}\n Available memory (MB): ${Math.ceil(os.totalmem() / 1024 / 1024)}\n Available CPU cores: ${cpuCores > 0 ? cpuCores : 'N/A'}\n`\n}\n\nfunction getBinaryVersion(binaryName: string) {\n try {\n return execFileSync(binaryName, ['--version']).toString().trim()\n } catch {\n return 'N/A'\n }\n}\n\n// Direct execution\nif (import.meta.url === `file://${process.argv[1]}`) {\n void info()\n}\n"],"names":["execFileSync","os","getDependencies","PAYLOAD_PACKAGE_LIST","info","deps","process","cwd","formattedDeps","Array","from","resolved","entries","map","name","version","console","log","generateOutput","packages","cpuCores","cpus","length","primaryDeps","filter","otherDeps","sort","a","b","localeCompare","join","versions","node","getBinaryVersion","platform","arch","Math","ceil","totalmem","binaryName","toString","trim","url","argv"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAe;AAC5C,OAAOC,QAAQ,KAAI;AAEnB,SAASC,eAAe,QAAQ,cAAa;AAC7C,SAASC,oBAAoB,QAAQ,oCAAmC;AAExE,OAAO,MAAMC,OAAO;IAClB,MAAMC,OAAO,MAAMH,gBAAgBI,QAAQC,GAAG,IAAI;WAC7CJ;QACH;QACA;QACA;KACD;IAED,MAAMK,gBAAgBC,MAAMC,IAAI,CAACL,KAAKM,QAAQ,CAACC,OAAO,IAAIC,GAAG,CAAC,CAAC,CAACC,MAAM,EAAEC,OAAO,EAAE,CAAC,GAAM,CAAA;YACtFD;YACAC;QACF,CAAA;IAEAC,QAAQC,GAAG,CAACC,eAAeV;AAC7B,EAAC;AAED,SAASU,eAAeC,QAAkD;IACxE,MAAMC,WAAWnB,GAAGoB,IAAI,GAAGC,MAAM;IAEjC,MAAMC,cAAcJ,SAASK,MAAM,CAAC,CAAC,EAAEV,IAAI,EAAE,GAAKA,SAAS,aAAaA,SAAS;IACjF,MAAMW,YAAYN,SACfK,MAAM,CAAC,CAAC,EAAEV,IAAI,EAAE,GAAKA,SAAS,aAAaA,SAAS,QACpDY,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAEb,IAAI,CAACe,aAAa,CAACD,EAAEd,IAAI;IAE7C,MAAMN,gBAAgB;WAAIe;WAAgBE;KAAU,CACjDZ,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAK,CAAC,EAAE,EAAED,KAAK,EAAE,EAAEC,
|
|
1
|
+
{"version":3,"sources":["../../src/bin/info.ts"],"sourcesContent":["import { execFileSync } from 'child_process'\nimport os from 'os'\n\nimport { getDependencies } from '../index.js'\nimport { PAYLOAD_PACKAGE_LIST } from '../versions/payloadPackageList.js'\n\nexport const info = async () => {\n const deps = await getDependencies(process.cwd(), [\n ...PAYLOAD_PACKAGE_LIST,\n 'next',\n 'react',\n 'react-dom',\n ])\n\n const formattedDeps = Array.from(deps.resolved.entries()).map(([name, { version }]) => ({\n name,\n version,\n }))\n\n console.log(generateOutput(formattedDeps))\n}\n\nfunction generateOutput(packages: Array<{ name: string; version: string }>) {\n const cpuCores = os.cpus().length\n\n const primaryDeps = packages.filter(({ name }) => name === 'payload' || name === 'next')\n const otherDeps = packages\n .filter(({ name }) => name !== 'payload' && name !== 'next')\n .sort((a, b) => a.name.localeCompare(b.name))\n\n const formattedDeps = [...primaryDeps, ...otherDeps]\n .map(({ name, version }) => ` ${name}: ${version}`)\n .join('\\n')\n\n return `\nBinaries:\n Node: ${process.versions.node}\n npm: ${getBinaryVersion('npm')}\n Yarn: ${getBinaryVersion('yarn')}\n pnpm: ${getBinaryVersion('pnpm')}\nRelevant Packages:\n${formattedDeps}\nOperating System:\n Platform: ${os.platform()}\n Arch: ${os.arch()}\n Version: ${os.version()}\n Available memory (MB): ${Math.ceil(os.totalmem() / 1024 / 1024)}\n Available CPU cores: ${cpuCores > 0 ? cpuCores : 'N/A'}\n`\n}\n\nfunction getBinaryVersion(binaryName: string) {\n try {\n return execFileSync(binaryName, ['--version']).toString().trim()\n } catch {\n return 'N/A'\n }\n}\n\n// Direct execution\nif (import.meta.url === `file://${process.argv[1]}`) {\n void info()\n}\n"],"names":["execFileSync","os","getDependencies","PAYLOAD_PACKAGE_LIST","info","deps","process","cwd","formattedDeps","Array","from","resolved","entries","map","name","version","console","log","generateOutput","packages","cpuCores","cpus","length","primaryDeps","filter","otherDeps","sort","a","b","localeCompare","join","versions","node","getBinaryVersion","platform","arch","Math","ceil","totalmem","binaryName","toString","trim","url","argv"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAe;AAC5C,OAAOC,QAAQ,KAAI;AAEnB,SAASC,eAAe,QAAQ,cAAa;AAC7C,SAASC,oBAAoB,QAAQ,oCAAmC;AAExE,OAAO,MAAMC,OAAO;IAClB,MAAMC,OAAO,MAAMH,gBAAgBI,QAAQC,GAAG,IAAI;WAC7CJ;QACH;QACA;QACA;KACD;IAED,MAAMK,gBAAgBC,MAAMC,IAAI,CAACL,KAAKM,QAAQ,CAACC,OAAO,IAAIC,GAAG,CAAC,CAAC,CAACC,MAAM,EAAEC,OAAO,EAAE,CAAC,GAAM,CAAA;YACtFD;YACAC;QACF,CAAA;IAEAC,QAAQC,GAAG,CAACC,eAAeV;AAC7B,EAAC;AAED,SAASU,eAAeC,QAAkD;IACxE,MAAMC,WAAWnB,GAAGoB,IAAI,GAAGC,MAAM;IAEjC,MAAMC,cAAcJ,SAASK,MAAM,CAAC,CAAC,EAAEV,IAAI,EAAE,GAAKA,SAAS,aAAaA,SAAS;IACjF,MAAMW,YAAYN,SACfK,MAAM,CAAC,CAAC,EAAEV,IAAI,EAAE,GAAKA,SAAS,aAAaA,SAAS,QACpDY,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAEb,IAAI,CAACe,aAAa,CAACD,EAAEd,IAAI;IAE7C,MAAMN,gBAAgB;WAAIe;WAAgBE;KAAU,CACjDZ,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAK,CAAC,EAAE,EAAED,KAAK,EAAE,EAAEC,SAAS,EAClDe,IAAI,CAAC;IAER,OAAO,CAAC;;QAEF,EAAExB,QAAQyB,QAAQ,CAACC,IAAI,CAAC;OACzB,EAAEC,iBAAiB,OAAO;QACzB,EAAEA,iBAAiB,QAAQ;QAC3B,EAAEA,iBAAiB,QAAQ;;AAEnC,EAAEzB,cAAc;;YAEJ,EAAEP,GAAGiC,QAAQ,GAAG;QACpB,EAAEjC,GAAGkC,IAAI,GAAG;WACT,EAAElC,GAAGc,OAAO,GAAG;yBACD,EAAEqB,KAAKC,IAAI,CAACpC,GAAGqC,QAAQ,KAAK,OAAO,MAAM;uBAC3C,EAAElB,WAAW,IAAIA,WAAW,MAAM;AACzD,CAAC;AACD;AAEA,SAASa,iBAAiBM,UAAkB;IAC1C,IAAI;QACF,OAAOvC,aAAauC,YAAY;YAAC;SAAY,EAAEC,QAAQ,GAAGC,IAAI;IAChE,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEA,mBAAmB;AACnB,IAAI,YAAYC,GAAG,KAAK,CAAC,OAAO,EAAEpC,QAAQqC,IAAI,CAAC,EAAE,EAAE,EAAE;IACnD,KAAKvC;AACP"}
|
package/dist/bin/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/migrate.ts"],"sourcesContent":["import type { ParsedArgs } from 'minimist'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport payload from '../index.js'\nimport { prettySyncLoggerDestination } from '../utilities/logger.js'\n\n/**\n * The default logger's options did not allow for forcing sync logging\n * Using these options, to force both pretty print and sync logging\n */\nconst prettySyncLogger = {\n loggerDestination: prettySyncLoggerDestination,\n loggerOptions: {},\n}\n\nconst availableCommands = [\n 'migrate',\n 'migrate:create',\n 'migrate:down',\n 'migrate:refresh',\n 'migrate:reset',\n 'migrate:status',\n 'migration:fresh',\n]\n\nconst availableCommandsMsg = `Available commands: ${availableCommands.join(', ')}`\n\ntype Args = {\n config: SanitizedConfig\n parsedArgs: ParsedArgs\n}\n\nexport const migrate = async ({ config, parsedArgs }: Args): Promise<void> => {\n const { _: args, file, forceAcceptWarning: forceAcceptFromProps, help } = parsedArgs\n\n const formattedArgs = Object.keys(parsedArgs)\n .map((key) => {\n const formattedKey = key.replace(/^[-_]+/, '')\n if (!formattedKey) {\n return null\n }\n\n return formattedKey\n .split('-')\n .map((word, index) =>\n index === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join('')\n })\n .filter(Boolean)\n\n const forceAcceptWarning = forceAcceptFromProps || formattedArgs.includes('forceAcceptWarning')\n const skipEmpty = formattedArgs.includes('skipEmpty')\n\n if (help) {\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${availableCommandsMsg}\\n`) // Avoid having to init payload to get the logger\n process.exit(0)\n }\n\n process.env.PAYLOAD_MIGRATING = 'true'\n\n // Barebones instance to access database adapter\n await payload.init({\n config,\n disableOnInit: true,\n ...prettySyncLogger,\n })\n\n const adapter = payload.db\n\n if (!adapter) {\n throw new Error('No database adapter found')\n }\n\n if (!args.length) {\n payload.logger.error({\n msg: `No migration command provided. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n switch (args[0]) {\n case 'migrate':\n await adapter.migrate()\n break\n case 'migrate:create':\n try {\n await adapter.createMigration({\n file,\n forceAcceptWarning,\n migrationName: args[1],\n payload,\n skipEmpty,\n })\n } catch (err) {\n throw new Error(`Error creating migration: ${err.message}`)\n }\n break\n case 'migrate:down':\n await adapter.migrateDown()\n break\n case 'migrate:fresh':\n await adapter.migrateFresh({ forceAcceptWarning })\n break\n case 'migrate:refresh':\n await adapter.migrateRefresh()\n break\n case 'migrate:reset':\n await adapter.migrateReset()\n break\n case 'migrate:status':\n await adapter.migrateStatus()\n break\n\n default:\n payload.logger.error({\n msg: `Unknown migration command: ${args[0]}. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n payload.logger.info('Done.')\n}\n"],"names":["payload","prettySyncLoggerDestination","prettySyncLogger","loggerDestination","loggerOptions","availableCommands","availableCommandsMsg","join","migrate","config","parsedArgs","_","args","file","forceAcceptWarning","forceAcceptFromProps","help","formattedArgs","Object","keys","map","key","formattedKey","replace","split","word","index","toLowerCase","charAt","toUpperCase","slice","filter","Boolean","includes","skipEmpty","console","log","process","exit","env","PAYLOAD_MIGRATING","init","disableOnInit","adapter","db","Error","length","logger","error","msg","createMigration","migrationName","err","message","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","info"],"mappings":"AAIA,OAAOA,aAAa,cAAa;AACjC,SAASC,2BAA2B,QAAQ,yBAAwB;AAEpE;;;CAGC,GACD,MAAMC,mBAAmB;IACvBC,mBAAmBF;IACnBG,eAAe,CAAC;AAClB;AAEA,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,uBAAuB,CAAC,oBAAoB,EAAED,kBAAkBE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../../src/bin/migrate.ts"],"sourcesContent":["import type { ParsedArgs } from 'minimist'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport payload from '../index.js'\nimport { prettySyncLoggerDestination } from '../utilities/logger.js'\n\n/**\n * The default logger's options did not allow for forcing sync logging\n * Using these options, to force both pretty print and sync logging\n */\nconst prettySyncLogger = {\n loggerDestination: prettySyncLoggerDestination,\n loggerOptions: {},\n}\n\nconst availableCommands = [\n 'migrate',\n 'migrate:create',\n 'migrate:down',\n 'migrate:refresh',\n 'migrate:reset',\n 'migrate:status',\n 'migration:fresh',\n]\n\nconst availableCommandsMsg = `Available commands: ${availableCommands.join(', ')}`\n\ntype Args = {\n config: SanitizedConfig\n parsedArgs: ParsedArgs\n}\n\nexport const migrate = async ({ config, parsedArgs }: Args): Promise<void> => {\n const { _: args, file, forceAcceptWarning: forceAcceptFromProps, help } = parsedArgs\n\n const formattedArgs = Object.keys(parsedArgs)\n .map((key) => {\n const formattedKey = key.replace(/^[-_]+/, '')\n if (!formattedKey) {\n return null\n }\n\n return formattedKey\n .split('-')\n .map((word, index) =>\n index === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join('')\n })\n .filter(Boolean)\n\n const forceAcceptWarning = forceAcceptFromProps || formattedArgs.includes('forceAcceptWarning')\n const skipEmpty = formattedArgs.includes('skipEmpty')\n\n if (help) {\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${availableCommandsMsg}\\n`) // Avoid having to init payload to get the logger\n process.exit(0)\n }\n\n process.env.PAYLOAD_MIGRATING = 'true'\n\n // Barebones instance to access database adapter\n await payload.init({\n config,\n disableOnInit: true,\n ...prettySyncLogger,\n })\n\n const adapter = payload.db\n\n if (!adapter) {\n throw new Error('No database adapter found')\n }\n\n if (!args.length) {\n payload.logger.error({\n msg: `No migration command provided. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n switch (args[0]) {\n case 'migrate':\n await adapter.migrate()\n break\n case 'migrate:create':\n try {\n await adapter.createMigration({\n file,\n forceAcceptWarning,\n migrationName: args[1],\n payload,\n skipEmpty,\n })\n } catch (err) {\n throw new Error(`Error creating migration: ${err.message}`)\n }\n break\n case 'migrate:down':\n await adapter.migrateDown()\n break\n case 'migrate:fresh':\n await adapter.migrateFresh({ forceAcceptWarning })\n break\n case 'migrate:refresh':\n await adapter.migrateRefresh()\n break\n case 'migrate:reset':\n await adapter.migrateReset()\n break\n case 'migrate:status':\n await adapter.migrateStatus()\n break\n\n default:\n payload.logger.error({\n msg: `Unknown migration command: ${args[0]}. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n payload.logger.info('Done.')\n}\n"],"names":["payload","prettySyncLoggerDestination","prettySyncLogger","loggerDestination","loggerOptions","availableCommands","availableCommandsMsg","join","migrate","config","parsedArgs","_","args","file","forceAcceptWarning","forceAcceptFromProps","help","formattedArgs","Object","keys","map","key","formattedKey","replace","split","word","index","toLowerCase","charAt","toUpperCase","slice","filter","Boolean","includes","skipEmpty","console","log","process","exit","env","PAYLOAD_MIGRATING","init","disableOnInit","adapter","db","Error","length","logger","error","msg","createMigration","migrationName","err","message","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","info"],"mappings":"AAIA,OAAOA,aAAa,cAAa;AACjC,SAASC,2BAA2B,QAAQ,yBAAwB;AAEpE;;;CAGC,GACD,MAAMC,mBAAmB;IACvBC,mBAAmBF;IACnBG,eAAe,CAAC;AAClB;AAEA,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,uBAAuB,CAAC,oBAAoB,EAAED,kBAAkBE,IAAI,CAAC,OAAO;AAOlF,OAAO,MAAMC,UAAU,OAAO,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IACxD,MAAM,EAAEC,GAAGC,IAAI,EAAEC,IAAI,EAAEC,oBAAoBC,oBAAoB,EAAEC,IAAI,EAAE,GAAGN;IAE1E,MAAMO,gBAAgBC,OAAOC,IAAI,CAACT,YAC/BU,GAAG,CAAC,CAACC;QACJ,MAAMC,eAAeD,IAAIE,OAAO,CAAC,UAAU;QAC3C,IAAI,CAACD,cAAc;YACjB,OAAO;QACT;QAEA,OAAOA,aACJE,KAAK,CAAC,KACNJ,GAAG,CAAC,CAACK,MAAMC,QACVA,UAAU,IAAID,KAAKE,WAAW,KAAKF,KAAKG,MAAM,CAAC,GAAGC,WAAW,KAAKJ,KAAKK,KAAK,CAAC,IAE9EvB,IAAI,CAAC;IACV,GACCwB,MAAM,CAACC;IAEV,MAAMlB,qBAAqBC,wBAAwBE,cAAcgB,QAAQ,CAAC;IAC1E,MAAMC,YAAYjB,cAAcgB,QAAQ,CAAC;IAEzC,IAAIjB,MAAM;QACR,sCAAsC;QACtCmB,QAAQC,GAAG,CAAC,CAAC,IAAI,EAAE9B,qBAAqB,EAAE,CAAC,EAAE,iDAAiD;;QAC9F+B,QAAQC,IAAI,CAAC;IACf;IAEAD,QAAQE,GAAG,CAACC,iBAAiB,GAAG;IAEhC,gDAAgD;IAChD,MAAMxC,QAAQyC,IAAI,CAAC;QACjBhC;QACAiC,eAAe;QACf,GAAGxC,gBAAgB;IACrB;IAEA,MAAMyC,UAAU3C,QAAQ4C,EAAE;IAE1B,IAAI,CAACD,SAAS;QACZ,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAI,CAACjC,KAAKkC,MAAM,EAAE;QAChB9C,QAAQ+C,MAAM,CAACC,KAAK,CAAC;YACnBC,KAAK,CAAC,+BAA+B,EAAE3C,sBAAsB;QAC/D;QACA+B,QAAQC,IAAI,CAAC;IACf;IAEA,OAAQ1B,IAAI,CAAC,EAAE;QACb,KAAK;YACH,MAAM+B,QAAQnC,OAAO;YACrB;QACF,KAAK;YACH,IAAI;gBACF,MAAMmC,QAAQO,eAAe,CAAC;oBAC5BrC;oBACAC;oBACAqC,eAAevC,IAAI,CAAC,EAAE;oBACtBZ;oBACAkC;gBACF;YACF,EAAE,OAAOkB,KAAK;gBACZ,MAAM,IAAIP,MAAM,CAAC,0BAA0B,EAAEO,IAAIC,OAAO,EAAE;YAC5D;YACA;QACF,KAAK;YACH,MAAMV,QAAQW,WAAW;YACzB;QACF,KAAK;YACH,MAAMX,QAAQY,YAAY,CAAC;gBAAEzC;YAAmB;YAChD;QACF,KAAK;YACH,MAAM6B,QAAQa,cAAc;YAC5B;QACF,KAAK;YACH,MAAMb,QAAQc,YAAY;YAC1B;QACF,KAAK;YACH,MAAMd,QAAQe,aAAa;YAC3B;QAEF;YACE1D,QAAQ+C,MAAM,CAACC,KAAK,CAAC;gBACnBC,KAAK,CAAC,2BAA2B,EAAErC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAEN,sBAAsB;YACvE;YACA+B,QAAQC,IAAI,CAAC;IACjB;IAEAtC,QAAQ+C,MAAM,CAACY,IAAI,CAAC;AACtB,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n}\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.readVersions)\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n const fullWhere = combineQueries({ id: { equals: id } }, accessResults)\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n const result = versionsQuery.docs[0]\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n query: fullWhere,\n req,\n })) || result.version\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth,\n doc: result.version,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n query: fullWhere,\n req,\n })) || result.version\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["httpStatus","executeAccess","combineQueries","APIError","Forbidden","NotFound","afterRead","killTransaction","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","showHiddenFields","BAD_REQUEST","accessResults","access","readVersions","hasWhereAccess","fullWhere","equals","versionsQuery","db","findVersions","slug","limit","pagination","where","result","docs","t","version","hooks","beforeRead","reduce","priorHook","hook","context","doc","query","Promise","resolve","draft","undefined","global","error"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAMpC,OAAOC,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,wBAAuB;AACrE,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,eAAe,QAAQ,qCAAoC;AAepE,OAAO,MAAMC,2BAA2B,OACtCC;IAEA,MAAM,EACJC,EAAE,EACFC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,YAAY,EACZC,KAAK,EACLC,aAAa,EACbC,cAAc,EACdC,QAAQ,EACRC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,EACxCH,GAAG,EACHI,MAAM,EACNC,gBAAgB,EACjB,GAAGf;IAEJ,IAAI,CAACC,IAAI;QACP,MAAM,IAAIP,SAAS,0BAA0BH,WAAWyB,WAAW;IACrE;IAEA,IAAI;QACF,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,MAAMC,gBAAgB,CAACT,iBACnB,MAAMhB,cAAc;YAAES;YAAIM;YAAeG;QAAI,GAAGN,iBAAiBc,MAAM,CAACC,YAAY,IACpF;QAEJ,gEAAgE;QAChE,IAAIF,kBAAkB,OAAO;YAC3B,OAAO;QACT;QAEA,MAAMG,iBAAiB,OAAOH,kBAAkB;QAEhD,MAAMI,YAAY5B,eAAe;YAAEQ,IAAI;gBAAEqB,QAAQrB;YAAG;QAAE,GAAGgB;QAEzD,wCAAwC;QACxC,aAAa;QACb,wCAAwC;QAExC,MAAMM,gBAAgB,MAAMV,QAAQW,EAAE,CAACC,YAAY,CAAQ;YACzDvB,YAAYE,iBAAiBsB,IAAI;YACjCC,OAAO;YACPf;YACAgB,YAAY;YACZlB;YACAI;YACAe,OAAOR;QACT;QAEA,MAAMS,SAASP,cAAcQ,IAAI,CAAC,EAAE;QAEpC,IAAI,CAACD,QAAQ;YACX,IAAI,CAACvB,eAAe;gBAClB,IAAI,CAACa,gBAAgB;oBACnB,MAAM,IAAIxB,SAASc,IAAIsB,CAAC;gBAC1B;gBACA,IAAIZ,gBAAgB;oBAClB,MAAM,IAAIzB,UAAUe,IAAIsB,CAAC;gBAC3B;YACF;YAEA,OAAO;QACT;QAEA,IAAI,CAACF,OAAOG,OAAO,EAAE;
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n}\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.readVersions)\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n const fullWhere = combineQueries({ id: { equals: id } }, accessResults)\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n const result = versionsQuery.docs[0]\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n query: fullWhere,\n req,\n })) || result.version\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth,\n doc: result.version,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n query: fullWhere,\n req,\n })) || result.version\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["httpStatus","executeAccess","combineQueries","APIError","Forbidden","NotFound","afterRead","killTransaction","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","showHiddenFields","BAD_REQUEST","accessResults","access","readVersions","hasWhereAccess","fullWhere","equals","versionsQuery","db","findVersions","slug","limit","pagination","where","result","docs","t","version","hooks","beforeRead","reduce","priorHook","hook","context","doc","query","Promise","resolve","draft","undefined","global","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n sort,\n where,\n } = args\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults\n\n if (!overrideAccess) {\n accessResults = await executeAccess({ req }, collectionConfig.access.readVersions)\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResults)\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: limit ?? 10,\n locale,\n page: page || 1,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n let result = {\n ...paginatedDocs,\n docs: await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n await collectionConfig.hooks.beforeRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n query: fullWhere,\n req,\n })) || docRef.version\n }, Promise.resolve())\n\n return docRef\n }),\n ),\n } as PaginatedDocs<TData>\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: await Promise.all(\n result.docs.map(async (data) => ({\n ...data,\n version: await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: data.version,\n draft: undefined,\n fallbackLocale,\n findMany: true,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields,\n }),\n })),\n ),\n }\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc.version\n }, Promise.resolve())\n\n return docRef\n }),\n ),\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: result.docs.map((doc) => sanitizeInternalFields<TData>(doc)),\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","afterRead","killTransaction","sanitizeInternalFields","buildVersionCollectionFields","findVersionsOperation","args","collection","config","collectionConfig","depth","limit","overrideAccess","page","pagination","populate","req","fallbackLocale","locale","payload","select","showHiddenFields","sort","where","accessResults","access","readVersions","versionFields","fullWhere","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","reduce","priorHook","hook","context","query","resolve","data","draft","undefined","findMany","global","error"],"mappings":"AAKA,OAAOA,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,OAAOC,4BAA4B,4CAA2C;AAC9E,SAASC,4BAA4B,QAAQ,0CAAyC;AAiBtF,OAAO,MAAMC,wBAAwB,OACnCC;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,KAAK,EACLC,KAAK,EACLC,cAAc,EACdC,IAAI,EACJC,aAAa,IAAI,EACjBC,QAAQ,EACRC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,EACxCH,GAAG,EACHI,MAAM,EACNC,gBAAgB,EAChBC,IAAI,EACJC,KAAK,EACN,GAAGjB;IAEJ,IAAI;QACF,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIkB;QAEJ,IAAI,CAACZ,gBAAgB;YACnBY,gBAAgB,MAAM1B,cAAc;gBAAEkB;YAAI,GAAGP,iBAAiBgB,MAAM,CAACC,YAAY;QACnF;QAEA,MAAMC,gBAAgBvB,6BAA6Be,QAAQX,MAAM,EAAEC,kBAAkB;QAErF,MAAMT,mBAAmB;YACvBS;YACAG;YACAI;YACAW;YACAJ;QACF;QAEA,MAAMK,YAAY7B,eAAewB,OAAOC;QAExC,wCAAwC;QACxC,OAAO;QACP,wCAAwC;QAExC,MAAMK,gBAAgB,MAAMV,QAAQW,EAAE,CAACC,YAAY,CAAQ;YACzDxB,YAAYE,iBAAiBuB,IAAI;YACjCrB,OAAOA,SAAS;YAChBO;YACAL,MAAMA,QAAQ;YACdC;YACAE;YACAI;YACAE;YACAC,OAAOK;QACT;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC,IAAIK,SAAS;YACX,GAAGJ,aAAa;YAChBK,MAAM,MAAMC,QAAQC,GAAG,CACrBP,cAAcK,IAAI,CAACG,GAAG,CAAC,OAAOC;gBAC5B,MAAMC,SAASD;gBACf,2BAA2B;gBAC3B,IAAI,CAACC,OAAOC,OAAO,EAAE
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n sort,\n where,\n } = args\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults\n\n if (!overrideAccess) {\n accessResults = await executeAccess({ req }, collectionConfig.access.readVersions)\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResults)\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: limit ?? 10,\n locale,\n page: page || 1,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n let result = {\n ...paginatedDocs,\n docs: await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n await collectionConfig.hooks.beforeRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n query: fullWhere,\n req,\n })) || docRef.version\n }, Promise.resolve())\n\n return docRef\n }),\n ),\n } as PaginatedDocs<TData>\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: await Promise.all(\n result.docs.map(async (data) => ({\n ...data,\n version: await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: data.version,\n draft: undefined,\n fallbackLocale,\n findMany: true,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields,\n }),\n })),\n ),\n }\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc.version\n }, Promise.resolve())\n\n return docRef\n }),\n ),\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n result = {\n ...result,\n docs: result.docs.map((doc) => sanitizeInternalFields<TData>(doc)),\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","afterRead","killTransaction","sanitizeInternalFields","buildVersionCollectionFields","findVersionsOperation","args","collection","config","collectionConfig","depth","limit","overrideAccess","page","pagination","populate","req","fallbackLocale","locale","payload","select","showHiddenFields","sort","where","accessResults","access","readVersions","versionFields","fullWhere","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","reduce","priorHook","hook","context","query","resolve","data","draft","undefined","findMany","global","error"],"mappings":"AAKA,OAAOA,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,OAAOC,4BAA4B,4CAA2C;AAC9E,SAASC,4BAA4B,QAAQ,0CAAyC;AAiBtF,OAAO,MAAMC,wBAAwB,OACnCC;IAEA,MAAM,EACJC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,KAAK,EACLC,KAAK,EACLC,cAAc,EACdC,IAAI,EACJC,aAAa,IAAI,EACjBC,QAAQ,EACRC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,EACxCH,GAAG,EACHI,MAAM,EACNC,gBAAgB,EAChBC,IAAI,EACJC,KAAK,EACN,GAAGjB;IAEJ,IAAI;QACF,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIkB;QAEJ,IAAI,CAACZ,gBAAgB;YACnBY,gBAAgB,MAAM1B,cAAc;gBAAEkB;YAAI,GAAGP,iBAAiBgB,MAAM,CAACC,YAAY;QACnF;QAEA,MAAMC,gBAAgBvB,6BAA6Be,QAAQX,MAAM,EAAEC,kBAAkB;QAErF,MAAMT,mBAAmB;YACvBS;YACAG;YACAI;YACAW;YACAJ;QACF;QAEA,MAAMK,YAAY7B,eAAewB,OAAOC;QAExC,wCAAwC;QACxC,OAAO;QACP,wCAAwC;QAExC,MAAMK,gBAAgB,MAAMV,QAAQW,EAAE,CAACC,YAAY,CAAQ;YACzDxB,YAAYE,iBAAiBuB,IAAI;YACjCrB,OAAOA,SAAS;YAChBO;YACAL,MAAMA,QAAQ;YACdC;YACAE;YACAI;YACAE;YACAC,OAAOK;QACT;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC,IAAIK,SAAS;YACX,GAAGJ,aAAa;YAChBK,MAAM,MAAMC,QAAQC,GAAG,CACrBP,cAAcK,IAAI,CAACG,GAAG,CAAC,OAAOC;gBAC5B,MAAMC,SAASD;gBACf,2BAA2B;gBAC3B,IAAI,CAACC,OAAOC,OAAO,EAAE;;oBACjBD,OAAeC,OAAO,GAAG,CAAC;gBAC9B;gBACA,MAAM/B,iBAAiBgC,KAAK,CAACC,UAAU,CAACC,MAAM,CAAC,OAAOC,WAAWC;oBAC/D,MAAMD;oBAENL,OAAOC,OAAO,GACZ,AAAC,MAAMK,KAAK;wBACVtC,YAAYE;wBACZqC,SAAS9B,IAAI8B,OAAO;wBACpBR,KAAKC,OAAOC,OAAO;wBACnBO,OAAOnB;wBACPZ;oBACF,MAAOuB,OAAOC,OAAO;gBACzB,GAAGL,QAAQa,OAAO;gBAElB,OAAOT;YACT;QAEJ;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExCN,SAAS;YACP,GAAGA,MAAM;YACTC,MAAM,MAAMC,QAAQC,GAAG,CACrBH,OAAOC,IAAI,CAACG,GAAG,CAAC,OAAOY,OAAU,CAAA;oBAC/B,GAAGA,IAAI;oBACPT,SAAS,MAAMvC,UAAU;wBACvBM,YAAYE;wBACZqC,SAAS9B,IAAI8B,OAAO;wBACpBpC;wBACA4B,KAAKW,KAAKT,OAAO;wBACjBU,OAAOC;wBACPlC;wBACAmC,UAAU;wBACVC,QAAQ;wBACRnC;wBACAN;wBACAG;wBACAC;wBACAI,QAAQ,OAAOA,QAAQoB,YAAY,WAAWpB,OAAOoB,OAAO,GAAGW;wBAC/D9B;oBACF;gBACF,CAAA;QAEJ;QAEA,wCAAwC;QACxC,yBAAyB;QACzB,wCAAwC;QAExCY,SAAS;YACP,GAAGA,MAAM;YACTC,MAAM,MAAMC,QAAQC,GAAG,CACrBH,OAAOC,IAAI,CAACG,GAAG,CAAC,OAAOC;gBACrB,MAAMC,SAASD;gBAEf,MAAM7B,iBAAiBgC,KAAK,CAACxC,SAAS,CAAC0C,MAAM,CAAC,OAAOC,WAAWC;oBAC9D,MAAMD;oBAENL,OAAOC,OAAO,GACZ,AAAC,MAAMK,KAAK;wBACVtC,YAAYE;wBACZqC,SAAS9B,IAAI8B,OAAO;wBACpBR,KAAKA,IAAIE,OAAO;wBAChBY,UAAU;wBACVL,OAAOnB;wBACPZ;oBACF,MAAOsB,IAAIE,OAAO;gBACtB,GAAGL,QAAQa,OAAO;gBAElB,OAAOT;YACT;QAEJ;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExCN,SAAS;YACP,GAAGA,MAAM;YACTC,MAAMD,OAAOC,IAAI,CAACG,GAAG,CAAC,CAACC,MAAQnC,uBAA8BmC;QAC/D;QAEA,OAAOL;IACT,EAAE,OAAOqB,OAAgB;QACvB,MAAMpD,gBAAgBc;QACtB,MAAMsC;IACR;AACF,EAAC"}
|
package/dist/config/client.js
CHANGED
|
@@ -48,6 +48,7 @@ export const createClientConfig = ({ config, i18n, importMap })=>{
|
|
|
48
48
|
}
|
|
49
49
|
break;
|
|
50
50
|
case 'collections':
|
|
51
|
+
;
|
|
51
52
|
clientConfig.collections = createClientCollectionConfigs({
|
|
52
53
|
collections: config.collections,
|
|
53
54
|
defaultIDType: config.db.defaultIDType,
|
|
@@ -56,6 +57,7 @@ export const createClientConfig = ({ config, i18n, importMap })=>{
|
|
|
56
57
|
});
|
|
57
58
|
break;
|
|
58
59
|
case 'globals':
|
|
60
|
+
;
|
|
59
61
|
clientConfig.globals = createClientGlobalConfigs({
|
|
60
62
|
defaultIDType: config.db.defaultIDType,
|
|
61
63
|
globals: config.globals,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/client.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { DeepPartial } from 'ts-essentials'\n\nimport type { ImportMap } from '../bin/generateImportMap/index.js'\nimport type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from './types.js'\n\nimport {\n type ClientCollectionConfig,\n createClientCollectionConfigs,\n} from '../collections/config/client.js'\nimport { type ClientGlobalConfig, createClientGlobalConfigs } from '../globals/config/client.js'\n\nexport type ServerOnlyRootProperties = keyof Pick<\n SanitizedConfig,\n | 'bin'\n | 'cors'\n | 'csrf'\n | 'custom'\n | 'db'\n | 'editor'\n | 'email'\n | 'endpoints'\n | 'graphQL'\n | 'hooks'\n | 'jobs'\n | 'logger'\n | 'onInit'\n | 'plugins'\n | 'secret'\n | 'sharp'\n | 'typescript'\n>\n\nexport type ServerOnlyRootAdminProperties = keyof Pick<SanitizedConfig['admin'], 'components'>\n\nexport type ClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n i18n?: Omit<SanitizedConfig['i18n'], 'supportedLanguages'>\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport const serverOnlyAdminConfigProperties: readonly Partial<ServerOnlyRootAdminProperties>[] = []\n\nexport const serverOnlyConfigProperties: readonly Partial<ServerOnlyRootProperties>[] = [\n 'endpoints',\n 'db',\n 'editor',\n 'plugins',\n 'sharp',\n 'onInit',\n 'secret',\n 'hooks',\n 'bin',\n 'typescript',\n 'cors',\n 'csrf',\n 'email',\n 'custom',\n 'graphQL',\n 'jobs',\n 'logger',\n // `admin`, `onInit`, `localization`, `collections`, and `globals` are all handled separately\n]\n\nexport const createClientConfig = ({\n config,\n i18n,\n importMap,\n}: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const clientConfig = {} as DeepPartial<ClientConfig>\n\n for (const key in config) {\n if (serverOnlyConfigProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n clientConfig.admin = {\n autoLogin: config.admin.autoLogin,\n avatar: config.admin.avatar,\n custom: config.admin.custom,\n dateFormat: config.admin.dateFormat,\n disable: config.admin.disable,\n importMap: config.admin.importMap,\n meta: config.admin.meta,\n routes: config.admin.routes,\n theme: config.admin.theme,\n user: config.admin.user,\n }\n if (config.admin.livePreview) {\n clientConfig.admin.livePreview = {}\n\n if (config.admin.livePreview.breakpoints) {\n clientConfig.admin.livePreview.breakpoints = config.admin.livePreview.breakpoints\n }\n }\n break\n case 'collections':\n ;(clientConfig.collections as ClientCollectionConfig[]) = createClientCollectionConfigs({\n collections: config.collections,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n })\n break\n case 'globals':\n ;(clientConfig.globals as ClientGlobalConfig[]) = createClientGlobalConfigs({\n defaultIDType: config.db.defaultIDType,\n globals: config.globals,\n i18n,\n importMap,\n })\n break\n case 'i18n':\n clientConfig.i18n = {\n fallbackLanguage: config.i18n.fallbackLanguage,\n translations: config.i18n.translations,\n }\n break\n case 'localization':\n if (typeof config.localization === 'object' && config.localization) {\n clientConfig.localization = {}\n if (config.localization.defaultLocale) {\n clientConfig.localization.defaultLocale = config.localization.defaultLocale\n }\n if (config.localization.fallback) {\n clientConfig.localization.fallback = config.localization.fallback\n }\n if (config.localization.localeCodes) {\n clientConfig.localization.localeCodes = config.localization.localeCodes\n }\n if (config.localization.locales) {\n clientConfig.localization.locales = []\n for (const locale of config.localization.locales) {\n if (locale) {\n const clientLocale: Partial<(typeof config.localization.locales)[0]> = {}\n if (locale.code) {\n clientLocale.code = locale.code\n }\n if (locale.fallbackLocale) {\n clientLocale.fallbackLocale = locale.fallbackLocale\n }\n if (locale.label) {\n clientLocale.label = locale.label\n }\n if (locale.rtl) {\n clientLocale.rtl = locale.rtl\n }\n clientConfig.localization.locales.push(clientLocale)\n }\n }\n }\n }\n break\n default:\n clientConfig[key] = config[key]\n }\n }\n return clientConfig as ClientConfig\n}\n"],"names":["createClientCollectionConfigs","createClientGlobalConfigs","serverOnlyAdminConfigProperties","serverOnlyConfigProperties","createClientConfig","config","i18n","importMap","clientConfig","key","includes","admin","autoLogin","avatar","custom","dateFormat","disable","meta","routes","theme","user","livePreview","breakpoints","collections","defaultIDType","db","globals","fallbackLanguage","translations","localization","defaultLocale","fallback","localeCodes","locales","locale","clientLocale","code","fallbackLocale","label","rtl","push"],"mappings":"AAUA,SAEEA,6BAA6B,QACxB,kCAAiC;AACxC,SAAkCC,yBAAyB,QAAQ,8BAA6B;AAmChG,OAAO,MAAMC,kCAAqF,EAAE,CAAA;AAEpG,OAAO,MAAMC,6BAA2E;IACtF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CAED,CAAA;AAED,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,MAAM,EACNC,IAAI,EACJC,SAAS,EAKV;IACC,MAAMC,eAAe,CAAC;IAEtB,IAAK,MAAMC,OAAOJ,OAAQ;QACxB,IAAIF,2BAA2BO,QAAQ,CAACD,MAAa;YACnD;QACF;QACA,OAAQA;YACN,KAAK;gBACHD,aAAaG,KAAK,GAAG;oBACnBC,WAAWP,OAAOM,KAAK,CAACC,SAAS;oBACjCC,QAAQR,OAAOM,KAAK,CAACE,MAAM;oBAC3BC,QAAQT,OAAOM,KAAK,CAACG,MAAM;oBAC3BC,YAAYV,OAAOM,KAAK,CAACI,UAAU;oBACnCC,SAASX,OAAOM,KAAK,CAACK,OAAO;oBAC7BT,WAAWF,OAAOM,KAAK,CAACJ,SAAS;oBACjCU,MAAMZ,OAAOM,KAAK,CAACM,IAAI;oBACvBC,QAAQb,OAAOM,KAAK,CAACO,MAAM;oBAC3BC,OAAOd,OAAOM,KAAK,CAACQ,KAAK;oBACzBC,MAAMf,OAAOM,KAAK,CAACS,IAAI;gBACzB;gBACA,IAAIf,OAAOM,KAAK,CAACU,WAAW,EAAE;oBAC5Bb,aAAaG,KAAK,CAACU,WAAW,GAAG,CAAC;oBAElC,IAAIhB,OAAOM,KAAK,CAACU,WAAW,CAACC,WAAW,EAAE;wBACxCd,aAAaG,KAAK,CAACU,WAAW,CAACC,WAAW,GAAGjB,OAAOM,KAAK,CAACU,WAAW,CAACC,WAAW;oBACnF;gBACF;gBACA;YACF,KAAK
|
|
1
|
+
{"version":3,"sources":["../../src/config/client.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { DeepPartial } from 'ts-essentials'\n\nimport type { ImportMap } from '../bin/generateImportMap/index.js'\nimport type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from './types.js'\n\nimport {\n type ClientCollectionConfig,\n createClientCollectionConfigs,\n} from '../collections/config/client.js'\nimport { type ClientGlobalConfig, createClientGlobalConfigs } from '../globals/config/client.js'\n\nexport type ServerOnlyRootProperties = keyof Pick<\n SanitizedConfig,\n | 'bin'\n | 'cors'\n | 'csrf'\n | 'custom'\n | 'db'\n | 'editor'\n | 'email'\n | 'endpoints'\n | 'graphQL'\n | 'hooks'\n | 'jobs'\n | 'logger'\n | 'onInit'\n | 'plugins'\n | 'secret'\n | 'sharp'\n | 'typescript'\n>\n\nexport type ServerOnlyRootAdminProperties = keyof Pick<SanitizedConfig['admin'], 'components'>\n\nexport type ClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n i18n?: Omit<SanitizedConfig['i18n'], 'supportedLanguages'>\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport const serverOnlyAdminConfigProperties: readonly Partial<ServerOnlyRootAdminProperties>[] = []\n\nexport const serverOnlyConfigProperties: readonly Partial<ServerOnlyRootProperties>[] = [\n 'endpoints',\n 'db',\n 'editor',\n 'plugins',\n 'sharp',\n 'onInit',\n 'secret',\n 'hooks',\n 'bin',\n 'typescript',\n 'cors',\n 'csrf',\n 'email',\n 'custom',\n 'graphQL',\n 'jobs',\n 'logger',\n // `admin`, `onInit`, `localization`, `collections`, and `globals` are all handled separately\n]\n\nexport const createClientConfig = ({\n config,\n i18n,\n importMap,\n}: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const clientConfig = {} as DeepPartial<ClientConfig>\n\n for (const key in config) {\n if (serverOnlyConfigProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n clientConfig.admin = {\n autoLogin: config.admin.autoLogin,\n avatar: config.admin.avatar,\n custom: config.admin.custom,\n dateFormat: config.admin.dateFormat,\n disable: config.admin.disable,\n importMap: config.admin.importMap,\n meta: config.admin.meta,\n routes: config.admin.routes,\n theme: config.admin.theme,\n user: config.admin.user,\n }\n if (config.admin.livePreview) {\n clientConfig.admin.livePreview = {}\n\n if (config.admin.livePreview.breakpoints) {\n clientConfig.admin.livePreview.breakpoints = config.admin.livePreview.breakpoints\n }\n }\n break\n case 'collections':\n ;(clientConfig.collections as ClientCollectionConfig[]) = createClientCollectionConfigs({\n collections: config.collections,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n })\n break\n case 'globals':\n ;(clientConfig.globals as ClientGlobalConfig[]) = createClientGlobalConfigs({\n defaultIDType: config.db.defaultIDType,\n globals: config.globals,\n i18n,\n importMap,\n })\n break\n case 'i18n':\n clientConfig.i18n = {\n fallbackLanguage: config.i18n.fallbackLanguage,\n translations: config.i18n.translations,\n }\n break\n case 'localization':\n if (typeof config.localization === 'object' && config.localization) {\n clientConfig.localization = {}\n if (config.localization.defaultLocale) {\n clientConfig.localization.defaultLocale = config.localization.defaultLocale\n }\n if (config.localization.fallback) {\n clientConfig.localization.fallback = config.localization.fallback\n }\n if (config.localization.localeCodes) {\n clientConfig.localization.localeCodes = config.localization.localeCodes\n }\n if (config.localization.locales) {\n clientConfig.localization.locales = []\n for (const locale of config.localization.locales) {\n if (locale) {\n const clientLocale: Partial<(typeof config.localization.locales)[0]> = {}\n if (locale.code) {\n clientLocale.code = locale.code\n }\n if (locale.fallbackLocale) {\n clientLocale.fallbackLocale = locale.fallbackLocale\n }\n if (locale.label) {\n clientLocale.label = locale.label\n }\n if (locale.rtl) {\n clientLocale.rtl = locale.rtl\n }\n clientConfig.localization.locales.push(clientLocale)\n }\n }\n }\n }\n break\n default:\n clientConfig[key] = config[key]\n }\n }\n return clientConfig as ClientConfig\n}\n"],"names":["createClientCollectionConfigs","createClientGlobalConfigs","serverOnlyAdminConfigProperties","serverOnlyConfigProperties","createClientConfig","config","i18n","importMap","clientConfig","key","includes","admin","autoLogin","avatar","custom","dateFormat","disable","meta","routes","theme","user","livePreview","breakpoints","collections","defaultIDType","db","globals","fallbackLanguage","translations","localization","defaultLocale","fallback","localeCodes","locales","locale","clientLocale","code","fallbackLocale","label","rtl","push"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { JobsConfig } from '../queues/config/types/index.js'\nimport type { Config } from './types.js'\n\nimport defaultAccess from '../auth/defaultAccess.js'\n\nexport const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {\n admin: {\n avatar: 'gravatar',\n components: {},\n custom: {},\n dateFormat: 'MMMM do yyyy, h:mm a',\n dependencies: {},\n disable: false,\n importMap: {\n baseDir: `${typeof process?.cwd === 'function' ? process.cwd() : ''}`,\n },\n meta: {\n defaultOGImageType: 'dynamic',\n titleSuffix: '- Payload',\n },\n routes: {\n account: '/account',\n createFirstUser: '/create-first-user',\n forgot: '/forgot',\n inactivity: '/logout-inactivity',\n login: '/login',\n logout: '/logout',\n reset: '/reset',\n unauthorized: '/unauthorized',\n },\n theme: 'all',\n },\n bin: [],\n collections: [],\n cookiePrefix: 'payload',\n cors: [],\n csrf: [],\n custom: {},\n defaultDepth: 2,\n defaultMaxTextLength: 40000,\n endpoints: [],\n globals: [],\n graphQL: {\n disablePlaygroundInProduction: true,\n maxComplexity: 1000,\n schemaOutputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/schema.graphql`,\n },\n hooks: {},\n i18n: {},\n jobs: {\n access: {\n run: defaultAccess,\n },\n deleteJobOnComplete: true,\n depth: 0,\n } as JobsConfig,\n localization: false,\n maxDepth: 10,\n routes: {\n admin: '/admin',\n api: '/api',\n graphQL: '/graphql',\n graphQLPlayground: '/graphql-playground',\n },\n serverURL: '',\n telemetry: true,\n typescript: {\n autoGenerate: true,\n outputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/payload-types.ts`,\n },\n upload: {},\n}\n"],"names":["defaultAccess","defaults","admin","avatar","components","custom","dateFormat","dependencies","disable","importMap","baseDir","process","cwd","meta","defaultOGImageType","titleSuffix","routes","account","createFirstUser","forgot","inactivity","login","logout","reset","unauthorized","theme","bin","collections","cookiePrefix","cors","csrf","defaultDepth","defaultMaxTextLength","endpoints","globals","graphQL","disablePlaygroundInProduction","maxComplexity","schemaOutputFile","hooks","i18n","jobs","access","run","deleteJobOnComplete","depth","localization","maxDepth","api","graphQLPlayground","serverURL","telemetry","typescript","autoGenerate","outputFile","upload"],"mappings":"AAGA,OAAOA,mBAAmB,2BAA0B;AAEpD,OAAO,MAAMC,WAAqD;IAChEC,OAAO;QACLC,QAAQ;QACRC,YAAY,CAAC;QACbC,QAAQ,CAAC;QACTC,YAAY;QACZC,cAAc,CAAC;QACfC,SAAS;QACTC,WAAW;YACTC,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { JobsConfig } from '../queues/config/types/index.js'\nimport type { Config } from './types.js'\n\nimport defaultAccess from '../auth/defaultAccess.js'\n\nexport const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {\n admin: {\n avatar: 'gravatar',\n components: {},\n custom: {},\n dateFormat: 'MMMM do yyyy, h:mm a',\n dependencies: {},\n disable: false,\n importMap: {\n baseDir: `${typeof process?.cwd === 'function' ? process.cwd() : ''}`,\n },\n meta: {\n defaultOGImageType: 'dynamic',\n titleSuffix: '- Payload',\n },\n routes: {\n account: '/account',\n createFirstUser: '/create-first-user',\n forgot: '/forgot',\n inactivity: '/logout-inactivity',\n login: '/login',\n logout: '/logout',\n reset: '/reset',\n unauthorized: '/unauthorized',\n },\n theme: 'all',\n },\n bin: [],\n collections: [],\n cookiePrefix: 'payload',\n cors: [],\n csrf: [],\n custom: {},\n defaultDepth: 2,\n defaultMaxTextLength: 40000,\n endpoints: [],\n globals: [],\n graphQL: {\n disablePlaygroundInProduction: true,\n maxComplexity: 1000,\n schemaOutputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/schema.graphql`,\n },\n hooks: {},\n i18n: {},\n jobs: {\n access: {\n run: defaultAccess,\n },\n deleteJobOnComplete: true,\n depth: 0,\n } as JobsConfig,\n localization: false,\n maxDepth: 10,\n routes: {\n admin: '/admin',\n api: '/api',\n graphQL: '/graphql',\n graphQLPlayground: '/graphql-playground',\n },\n serverURL: '',\n telemetry: true,\n typescript: {\n autoGenerate: true,\n outputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/payload-types.ts`,\n },\n upload: {},\n}\n"],"names":["defaultAccess","defaults","admin","avatar","components","custom","dateFormat","dependencies","disable","importMap","baseDir","process","cwd","meta","defaultOGImageType","titleSuffix","routes","account","createFirstUser","forgot","inactivity","login","logout","reset","unauthorized","theme","bin","collections","cookiePrefix","cors","csrf","defaultDepth","defaultMaxTextLength","endpoints","globals","graphQL","disablePlaygroundInProduction","maxComplexity","schemaOutputFile","hooks","i18n","jobs","access","run","deleteJobOnComplete","depth","localization","maxDepth","api","graphQLPlayground","serverURL","telemetry","typescript","autoGenerate","outputFile","upload"],"mappings":"AAGA,OAAOA,mBAAmB,2BAA0B;AAEpD,OAAO,MAAMC,WAAqD;IAChEC,OAAO;QACLC,QAAQ;QACRC,YAAY,CAAC;QACbC,QAAQ,CAAC;QACTC,YAAY;QACZC,cAAc,CAAC;QACfC,SAAS;QACTC,WAAW;YACTC,SAAS,GAAG,OAAOC,SAASC,QAAQ,aAAaD,QAAQC,GAAG,KAAK,IAAI;QACvE;QACAC,MAAM;YACJC,oBAAoB;YACpBC,aAAa;QACf;QACAC,QAAQ;YACNC,SAAS;YACTC,iBAAiB;YACjBC,QAAQ;YACRC,YAAY;YACZC,OAAO;YACPC,QAAQ;YACRC,OAAO;YACPC,cAAc;QAChB;QACAC,OAAO;IACT;IACAC,KAAK,EAAE;IACPC,aAAa,EAAE;IACfC,cAAc;IACdC,MAAM,EAAE;IACRC,MAAM,EAAE;IACRzB,QAAQ,CAAC;IACT0B,cAAc;IACdC,sBAAsB;IACtBC,WAAW,EAAE;IACbC,SAAS,EAAE;IACXC,SAAS;QACPC,+BAA+B;QAC/BC,eAAe;QACfC,kBAAkB,GAAG,OAAO3B,SAASC,QAAQ,aAAaD,QAAQC,GAAG,KAAK,GAAG,eAAe,CAAC;IAC/F;IACA2B,OAAO,CAAC;IACRC,MAAM,CAAC;IACPC,MAAM;QACJC,QAAQ;YACNC,KAAK3C;QACP;QACA4C,qBAAqB;QACrBC,OAAO;IACT;IACAC,cAAc;IACdC,UAAU;IACV/B,QAAQ;QACNd,OAAO;QACP8C,KAAK;QACLb,SAAS;QACTc,mBAAmB;IACrB;IACAC,WAAW;IACXC,WAAW;IACXC,YAAY;QACVC,cAAc;QACdC,YAAY,GAAG,OAAO3C,SAASC,QAAQ,aAAaD,QAAQC,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC3F;IACA2C,QAAQ,CAAC;AACX,EAAC"}
|
package/dist/config/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/find.ts"],"sourcesContent":["import { getTsconfig } from 'get-tsconfig'\nimport path from 'path'\n\nimport { findUpSync } from '../utilities/findUp.js'\n\n/**\n * List of all filenames to detect as a Payload configuration file.\n */\nexport const payloadConfigFileNames = ['payload.config.js', 'payload.config.ts']\n\n/**\n * Returns the source and output paths from the nearest tsconfig.json file.\n * If no tsconfig.json file is found, returns the current working directory.\n * @returns An object containing the source and output paths.\n */\nconst getTSConfigPaths = (): {\n configPath?: string\n outPath?: string\n rootPath?: string\n srcPath?: string\n tsConfigPath?: string\n} => {\n const tsConfigResult = getTsconfig()\n const tsConfig = tsConfigResult.config\n const tsConfigDir = path.dirname(tsConfigResult.path)\n\n try {\n const rootConfigDir = path.resolve(tsConfigDir, tsConfig.compilerOptions.baseUrl || '')\n const srcPath = tsConfig.compilerOptions?.rootDir || path.resolve(process.cwd(), 'src')\n const outPath = tsConfig.compilerOptions?.outDir || path.resolve(process.cwd(), 'dist')\n let configPath = tsConfig.compilerOptions?.paths?.['@payload-config']?.[0]\n\n if (configPath) {\n configPath = path.resolve(rootConfigDir, configPath)\n }\n return {\n configPath,\n outPath,\n rootPath: rootConfigDir,\n srcPath,\n tsConfigPath: tsConfigResult.path,\n }\n } catch (error) {\n console.error(`Error parsing tsconfig.json: ${error}`) // Do not throw the error, as we can still continue with the other config path finding methods\n return {\n rootPath: process.cwd(),\n }\n }\n}\n\n/**\n * Searches for a Payload configuration file.\n * @returns The absolute path to the Payload configuration file.\n * @throws An error if no configuration file is found.\n */\nexport const findConfig = (): string => {\n // If the developer has specified a config path,\n // format it if relative and use it directly if absolute\n if (process.env.PAYLOAD_CONFIG_PATH) {\n if (path.isAbsolute(process.env.PAYLOAD_CONFIG_PATH)) {\n return process.env.PAYLOAD_CONFIG_PATH\n }\n\n return path.resolve(process.cwd(), process.env.PAYLOAD_CONFIG_PATH)\n }\n\n const { configPath, outPath, rootPath, srcPath } = getTSConfigPaths()\n\n // if configPath is absolute file, not folder, return it\n if (path.extname(configPath) === '.js' || path.extname(configPath) === '.ts') {\n return configPath\n }\n\n const searchPaths =\n process.env.NODE_ENV === 'production'\n ? [configPath, outPath, srcPath, rootPath]\n : [configPath, srcPath, rootPath]\n\n for (const searchPath of searchPaths) {\n if (!searchPath) {\n continue\n }\n\n const configPath = findUpSync({\n dir: searchPath,\n fileNames: payloadConfigFileNames,\n })\n\n if (configPath) {\n return configPath\n }\n }\n\n // If no config file is found in the directories defined by tsconfig.json,\n // try searching in the 'src' and 'dist' directory as a last resort, as they are most commonly used\n if (process.env.NODE_ENV === 'production') {\n const distConfigPath = findUpSync({\n dir: path.resolve(process.cwd(), 'dist'),\n fileNames: ['payload.config.js'],\n })\n\n if (distConfigPath) {\n return distConfigPath\n }\n } else {\n const srcConfigPath = findUpSync({\n dir: path.resolve(process.cwd(), 'src'),\n fileNames: payloadConfigFileNames,\n })\n\n if (srcConfigPath) {\n return srcConfigPath\n }\n }\n\n throw new Error(\n 'Error: cannot find Payload config. Please create a configuration file located at the root of your current working directory called \"payload.config.js\" or \"payload.config.ts\".',\n )\n}\n"],"names":["getTsconfig","path","findUpSync","payloadConfigFileNames","getTSConfigPaths","tsConfigResult","tsConfig","config","tsConfigDir","dirname","rootConfigDir","resolve","compilerOptions","baseUrl","srcPath","rootDir","process","cwd","outPath","outDir","configPath","paths","rootPath","tsConfigPath","error","console","findConfig","env","PAYLOAD_CONFIG_PATH","isAbsolute","extname","searchPaths","NODE_ENV","searchPath","dir","fileNames","distConfigPath","srcConfigPath","Error"],"mappings":"AAAA,SAASA,WAAW,QAAQ,eAAc;AAC1C,OAAOC,UAAU,OAAM;AAEvB,SAASC,UAAU,QAAQ,yBAAwB;AAEnD;;CAEC,GACD,OAAO,MAAMC,yBAAyB;IAAC;IAAqB;CAAoB,CAAA;AAEhF;;;;CAIC,GACD,MAAMC,mBAAmB;IAOvB,MAAMC,iBAAiBL;IACvB,MAAMM,WAAWD,eAAeE,MAAM;IACtC,MAAMC,cAAcP,KAAKQ,OAAO,CAACJ,eAAeJ,IAAI;IAEpD,IAAI;QACF,MAAMS,gBAAgBT,KAAKU,OAAO,CAACH,aAAaF,SAASM,eAAe,CAACC,OAAO,IAAI;QACpF,MAAMC,UAAUR,SAASM,eAAe,EAAEG,WAAWd,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;QACjF,MAAMC,UAAUZ,SAASM,eAAe,EAAEO,UAAUlB,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;QAChF,IAAIG,aAAad,SAASM,eAAe,EAAES,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAE1E,IAAID,YAAY;YACdA,aAAanB,KAAKU,OAAO,CAACD,eAAeU;QAC3C;QACA,OAAO;YACLA;YACAF;YACAI,UAAUZ;YACVI;YACAS,cAAclB,eAAeJ,IAAI;QACnC;IACF,EAAE,OAAOuB,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,6BAA6B,EAAEA,
|
|
1
|
+
{"version":3,"sources":["../../src/config/find.ts"],"sourcesContent":["import { getTsconfig } from 'get-tsconfig'\nimport path from 'path'\n\nimport { findUpSync } from '../utilities/findUp.js'\n\n/**\n * List of all filenames to detect as a Payload configuration file.\n */\nexport const payloadConfigFileNames = ['payload.config.js', 'payload.config.ts']\n\n/**\n * Returns the source and output paths from the nearest tsconfig.json file.\n * If no tsconfig.json file is found, returns the current working directory.\n * @returns An object containing the source and output paths.\n */\nconst getTSConfigPaths = (): {\n configPath?: string\n outPath?: string\n rootPath?: string\n srcPath?: string\n tsConfigPath?: string\n} => {\n const tsConfigResult = getTsconfig()\n const tsConfig = tsConfigResult.config\n const tsConfigDir = path.dirname(tsConfigResult.path)\n\n try {\n const rootConfigDir = path.resolve(tsConfigDir, tsConfig.compilerOptions.baseUrl || '')\n const srcPath = tsConfig.compilerOptions?.rootDir || path.resolve(process.cwd(), 'src')\n const outPath = tsConfig.compilerOptions?.outDir || path.resolve(process.cwd(), 'dist')\n let configPath = tsConfig.compilerOptions?.paths?.['@payload-config']?.[0]\n\n if (configPath) {\n configPath = path.resolve(rootConfigDir, configPath)\n }\n return {\n configPath,\n outPath,\n rootPath: rootConfigDir,\n srcPath,\n tsConfigPath: tsConfigResult.path,\n }\n } catch (error) {\n console.error(`Error parsing tsconfig.json: ${error}`) // Do not throw the error, as we can still continue with the other config path finding methods\n return {\n rootPath: process.cwd(),\n }\n }\n}\n\n/**\n * Searches for a Payload configuration file.\n * @returns The absolute path to the Payload configuration file.\n * @throws An error if no configuration file is found.\n */\nexport const findConfig = (): string => {\n // If the developer has specified a config path,\n // format it if relative and use it directly if absolute\n if (process.env.PAYLOAD_CONFIG_PATH) {\n if (path.isAbsolute(process.env.PAYLOAD_CONFIG_PATH)) {\n return process.env.PAYLOAD_CONFIG_PATH\n }\n\n return path.resolve(process.cwd(), process.env.PAYLOAD_CONFIG_PATH)\n }\n\n const { configPath, outPath, rootPath, srcPath } = getTSConfigPaths()\n\n // if configPath is absolute file, not folder, return it\n if (path.extname(configPath) === '.js' || path.extname(configPath) === '.ts') {\n return configPath\n }\n\n const searchPaths =\n process.env.NODE_ENV === 'production'\n ? [configPath, outPath, srcPath, rootPath]\n : [configPath, srcPath, rootPath]\n\n for (const searchPath of searchPaths) {\n if (!searchPath) {\n continue\n }\n\n const configPath = findUpSync({\n dir: searchPath,\n fileNames: payloadConfigFileNames,\n })\n\n if (configPath) {\n return configPath\n }\n }\n\n // If no config file is found in the directories defined by tsconfig.json,\n // try searching in the 'src' and 'dist' directory as a last resort, as they are most commonly used\n if (process.env.NODE_ENV === 'production') {\n const distConfigPath = findUpSync({\n dir: path.resolve(process.cwd(), 'dist'),\n fileNames: ['payload.config.js'],\n })\n\n if (distConfigPath) {\n return distConfigPath\n }\n } else {\n const srcConfigPath = findUpSync({\n dir: path.resolve(process.cwd(), 'src'),\n fileNames: payloadConfigFileNames,\n })\n\n if (srcConfigPath) {\n return srcConfigPath\n }\n }\n\n throw new Error(\n 'Error: cannot find Payload config. Please create a configuration file located at the root of your current working directory called \"payload.config.js\" or \"payload.config.ts\".',\n )\n}\n"],"names":["getTsconfig","path","findUpSync","payloadConfigFileNames","getTSConfigPaths","tsConfigResult","tsConfig","config","tsConfigDir","dirname","rootConfigDir","resolve","compilerOptions","baseUrl","srcPath","rootDir","process","cwd","outPath","outDir","configPath","paths","rootPath","tsConfigPath","error","console","findConfig","env","PAYLOAD_CONFIG_PATH","isAbsolute","extname","searchPaths","NODE_ENV","searchPath","dir","fileNames","distConfigPath","srcConfigPath","Error"],"mappings":"AAAA,SAASA,WAAW,QAAQ,eAAc;AAC1C,OAAOC,UAAU,OAAM;AAEvB,SAASC,UAAU,QAAQ,yBAAwB;AAEnD;;CAEC,GACD,OAAO,MAAMC,yBAAyB;IAAC;IAAqB;CAAoB,CAAA;AAEhF;;;;CAIC,GACD,MAAMC,mBAAmB;IAOvB,MAAMC,iBAAiBL;IACvB,MAAMM,WAAWD,eAAeE,MAAM;IACtC,MAAMC,cAAcP,KAAKQ,OAAO,CAACJ,eAAeJ,IAAI;IAEpD,IAAI;QACF,MAAMS,gBAAgBT,KAAKU,OAAO,CAACH,aAAaF,SAASM,eAAe,CAACC,OAAO,IAAI;QACpF,MAAMC,UAAUR,SAASM,eAAe,EAAEG,WAAWd,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;QACjF,MAAMC,UAAUZ,SAASM,eAAe,EAAEO,UAAUlB,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;QAChF,IAAIG,aAAad,SAASM,eAAe,EAAES,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE;QAE1E,IAAID,YAAY;YACdA,aAAanB,KAAKU,OAAO,CAACD,eAAeU;QAC3C;QACA,OAAO;YACLA;YACAF;YACAI,UAAUZ;YACVI;YACAS,cAAclB,eAAeJ,IAAI;QACnC;IACF,EAAE,OAAOuB,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,6BAA6B,EAAEA,OAAO,EAAE,8FAA8F;;QACrJ,OAAO;YACLF,UAAUN,QAAQC,GAAG;QACvB;IACF;AACF;AAEA;;;;CAIC,GACD,OAAO,MAAMS,aAAa;IACxB,gDAAgD;IAChD,wDAAwD;IACxD,IAAIV,QAAQW,GAAG,CAACC,mBAAmB,EAAE;QACnC,IAAI3B,KAAK4B,UAAU,CAACb,QAAQW,GAAG,CAACC,mBAAmB,GAAG;YACpD,OAAOZ,QAAQW,GAAG,CAACC,mBAAmB;QACxC;QAEA,OAAO3B,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAID,QAAQW,GAAG,CAACC,mBAAmB;IACpE;IAEA,MAAM,EAAER,UAAU,EAAEF,OAAO,EAAEI,QAAQ,EAAER,OAAO,EAAE,GAAGV;IAEnD,wDAAwD;IACxD,IAAIH,KAAK6B,OAAO,CAACV,gBAAgB,SAASnB,KAAK6B,OAAO,CAACV,gBAAgB,OAAO;QAC5E,OAAOA;IACT;IAEA,MAAMW,cACJf,QAAQW,GAAG,CAACK,QAAQ,KAAK,eACrB;QAACZ;QAAYF;QAASJ;QAASQ;KAAS,GACxC;QAACF;QAAYN;QAASQ;KAAS;IAErC,KAAK,MAAMW,cAAcF,YAAa;QACpC,IAAI,CAACE,YAAY;YACf;QACF;QAEA,MAAMb,aAAalB,WAAW;YAC5BgC,KAAKD;YACLE,WAAWhC;QACb;QAEA,IAAIiB,YAAY;YACd,OAAOA;QACT;IACF;IAEA,0EAA0E;IAC1E,mGAAmG;IACnG,IAAIJ,QAAQW,GAAG,CAACK,QAAQ,KAAK,cAAc;QACzC,MAAMI,iBAAiBlC,WAAW;YAChCgC,KAAKjC,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;YACjCkB,WAAW;gBAAC;aAAoB;QAClC;QAEA,IAAIC,gBAAgB;YAClB,OAAOA;QACT;IACF,OAAO;QACL,MAAMC,gBAAgBnC,WAAW;YAC/BgC,KAAKjC,KAAKU,OAAO,CAACK,QAAQC,GAAG,IAAI;YACjCkB,WAAWhC;QACb;QAEA,IAAIkC,eAAe;YACjB,OAAOA;QACT;IACF;IAEA,MAAM,IAAIC,MACR;AAEJ,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport { sanitizeGlobals } from '../globals/config/sanitize.js'\nimport { getLockedDocumentsCollection } from '../lockedDocuments/lockedDocumentsCollection.js'\nimport getPreferencesCollection from '../preferences/preferencesCollection.js'\nimport { getDefaultJobsCollection } from '../queues/config/jobsCollection.js'\nimport checkDuplicateCollections from '../utilities/checkDuplicateCollections.js'\nimport { defaults } from './defaults.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n // default logging level will be 'error' if not provided\n sanitizedConfig.loggingLevels = {\n Forbidden: 'info',\n Locked: 'info',\n MissingFile: 'info',\n NotFound: 'info',\n ValidationError: 'info',\n ...(sanitizedConfig.loggingLevels || {}),\n }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections.find(({ auth }) => Boolean(auth))\n if (firstCollectionWithAuth) {\n sanitizedConfig.admin.user = firstCollectionWithAuth.slug\n } else {\n sanitizedConfig.admin.user = defaultUserCollection.slug\n sanitizedConfig.collections.push(defaultUserCollection)\n }\n }\n\n const userCollection = sanitizedConfig.collections.find(\n ({ slug }) => slug === sanitizedConfig.admin.user,\n )\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin.user} is not a valid admin user collection`,\n )\n }\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults = {\n ...defaults,\n ...incomingConfig,\n admin: {\n ...defaults.admin,\n ...incomingConfig?.admin,\n meta: {\n ...defaults.admin.meta,\n ...incomingConfig?.admin?.meta,\n },\n routes: {\n ...defaults.admin.routes,\n ...incomingConfig?.admin?.routes,\n },\n },\n graphQL: {\n ...defaults.graphQL,\n ...incomingConfig?.graphQL,\n },\n jobs: {\n ...defaults.jobs,\n ...incomingConfig?.jobs,\n access: {\n ...defaults.jobs.access,\n ...incomingConfig?.jobs?.access,\n },\n tasks: incomingConfig?.jobs?.tasks || [],\n workflows: incomingConfig?.jobs?.workflows || [],\n },\n routes: {\n ...defaults.routes,\n ...incomingConfig?.routes,\n },\n typescript: {\n ...defaults.typescript,\n ...incomingConfig?.typescript,\n },\n }\n\n if (!configWithDefaults?.serverURL) {\n configWithDefaults.serverURL = ''\n }\n\n if (process.env.NEXT_BASE_PATH) {\n if (!incomingConfig?.routes?.api) {\n // check for incomingConfig, as configWithDefaults will always have a default value for routes.api\n configWithDefaults.routes.api = process.env.NEXT_BASE_PATH + '/api'\n }\n }\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n if (config.localization && config.localization.locales?.length > 0) {\n // clone localization config so to not break everything\n const firstLocale = config.localization.locales[0]\n if (typeof firstLocale === 'string') {\n config.localization.localeCodes = [\n ...(config.localization as unknown as LocalizationConfigWithNoLabels).locales,\n ]\n\n // is string[], so convert to Locale[]\n config.localization.locales = (\n config.localization as unknown as LocalizationConfigWithNoLabels\n ).locales.map((locale) => ({\n code: locale,\n label: locale,\n rtl: false,\n toString: () => locale,\n }))\n } else {\n // is Locale[], so convert to string[] for localeCodes\n config.localization.localeCodes = config.localization.locales.reduce((locales, locale) => {\n locales.push(locale.code)\n return locales\n }, [] as string[])\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n\n // Default fallback to true if not provided\n config.localization.fallback = config.localization?.fallback ?? true\n }\n\n const i18nConfig: SanitizedConfig['i18n'] = {\n fallbackLanguage: 'en',\n supportedLanguages: {\n en,\n },\n translations: {},\n }\n\n if (incomingConfig?.i18n) {\n i18nConfig.supportedLanguages =\n incomingConfig.i18n?.supportedLanguages || i18nConfig.supportedLanguages\n\n const supportedLangKeys = <AcceptedLanguages[]>Object.keys(i18nConfig.supportedLanguages)\n const fallbackLang = incomingConfig.i18n?.fallbackLanguage || i18nConfig.fallbackLanguage\n\n i18nConfig.fallbackLanguage = supportedLangKeys.includes(fallbackLang)\n ? fallbackLang\n : supportedLangKeys[0]\n i18nConfig.translations =\n (incomingConfig.i18n?.translations as SanitizedConfig['i18n']['translations']) ||\n i18nConfig.translations\n }\n\n config.i18n = i18nConfig\n\n // Need to add default jobs collection before locked documents collections\n if (Array.isArray(configWithDefaults.jobs?.tasks) && configWithDefaults.jobs.tasks.length > 0) {\n let defaultJobsCollection = getDefaultJobsCollection(config as unknown as Config)\n\n if (typeof configWithDefaults.jobs.jobsCollectionOverrides === 'function') {\n defaultJobsCollection = configWithDefaults.jobs.jobsCollectionOverrides({\n defaultJobsCollection,\n })\n }\n\n configWithDefaults.collections.push(defaultJobsCollection)\n }\n\n configWithDefaults.collections.push(getLockedDocumentsCollection(config as unknown as Config))\n configWithDefaults.collections.push(getPreferencesCollection(config as unknown as Config))\n configWithDefaults.collections.push(migrationsCollection)\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n for (let i = 0; i < config.collections.length; i++) {\n config.collections[i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections[i],\n richTextSanitizationPromises,\n )\n }\n\n checkDuplicateCollections(config.collections)\n\n if (config.globals.length > 0) {\n config.globals = await sanitizeGlobals(\n config as unknown as Config,\n richTextSanitizationPromises,\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf.push(config.serverURL)\n }\n\n // Get deduped list of upload adapters\n if (!config.upload) {\n config.upload = { adapters: [] }\n }\n config.upload.adapters = Array.from(\n new Set(config.collections.map((c) => c.upload?.adapter).filter(Boolean)),\n )\n\n // Pass through the email config as is so adapters don't break\n if (incomingConfig.email) {\n config.email = incomingConfig.email\n }\n\n /*\n Execute richText sanitization\n */\n if (typeof incomingConfig.editor === 'function') {\n config.editor = await incomingConfig.editor({\n config: config as SanitizedConfig,\n isRoot: true,\n parentIsLocalized: false,\n })\n if (config.editor.i18n && Object.keys(config.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, config.editor.i18n)\n }\n }\n\n const promises: Promise<void>[] = []\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","deepMergeSimple","defaultUserCollection","sanitizeCollection","migrationsCollection","InvalidConfiguration","sanitizeGlobals","getLockedDocumentsCollection","getPreferencesCollection","getDefaultJobsCollection","checkDuplicateCollections","defaults","sanitizeAdminConfig","configToSanitize","sanitizedConfig","loggingLevels","Forbidden","Locked","MissingFile","NotFound","ValidationError","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","sanitizeConfig","incomingConfig","configWithDefaults","meta","routes","graphQL","jobs","access","tasks","workflows","typescript","serverURL","process","env","NEXT_BASE_PATH","api","config","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","reduce","fallback","i18nConfig","fallbackLanguage","supportedLanguages","translations","i18n","supportedLangKeys","Object","keys","fallbackLang","includes","Array","isArray","defaultJobsCollection","jobsCollectionOverrides","richTextSanitizationPromises","i","globals","csrf","upload","adapters","from","Set","c","adapter","filter","email","editor","isRoot","parentIsLocalized","promises","sanitizeFunction","Promise","all"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport { sanitizeGlobals } from '../globals/config/sanitize.js'\nimport { getLockedDocumentsCollection } from '../lockedDocuments/lockedDocumentsCollection.js'\nimport getPreferencesCollection from '../preferences/preferencesCollection.js'\nimport { getDefaultJobsCollection } from '../queues/config/jobsCollection.js'\nimport checkDuplicateCollections from '../utilities/checkDuplicateCollections.js'\nimport { defaults } from './defaults.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n // default logging level will be 'error' if not provided\n sanitizedConfig.loggingLevels = {\n Forbidden: 'info',\n Locked: 'info',\n MissingFile: 'info',\n NotFound: 'info',\n ValidationError: 'info',\n ...(sanitizedConfig.loggingLevels || {}),\n }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections.find(({ auth }) => Boolean(auth))\n if (firstCollectionWithAuth) {\n sanitizedConfig.admin.user = firstCollectionWithAuth.slug\n } else {\n sanitizedConfig.admin.user = defaultUserCollection.slug\n sanitizedConfig.collections.push(defaultUserCollection)\n }\n }\n\n const userCollection = sanitizedConfig.collections.find(\n ({ slug }) => slug === sanitizedConfig.admin.user,\n )\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin.user} is not a valid admin user collection`,\n )\n }\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults = {\n ...defaults,\n ...incomingConfig,\n admin: {\n ...defaults.admin,\n ...incomingConfig?.admin,\n meta: {\n ...defaults.admin.meta,\n ...incomingConfig?.admin?.meta,\n },\n routes: {\n ...defaults.admin.routes,\n ...incomingConfig?.admin?.routes,\n },\n },\n graphQL: {\n ...defaults.graphQL,\n ...incomingConfig?.graphQL,\n },\n jobs: {\n ...defaults.jobs,\n ...incomingConfig?.jobs,\n access: {\n ...defaults.jobs.access,\n ...incomingConfig?.jobs?.access,\n },\n tasks: incomingConfig?.jobs?.tasks || [],\n workflows: incomingConfig?.jobs?.workflows || [],\n },\n routes: {\n ...defaults.routes,\n ...incomingConfig?.routes,\n },\n typescript: {\n ...defaults.typescript,\n ...incomingConfig?.typescript,\n },\n }\n\n if (!configWithDefaults?.serverURL) {\n configWithDefaults.serverURL = ''\n }\n\n if (process.env.NEXT_BASE_PATH) {\n if (!incomingConfig?.routes?.api) {\n // check for incomingConfig, as configWithDefaults will always have a default value for routes.api\n configWithDefaults.routes.api = process.env.NEXT_BASE_PATH + '/api'\n }\n }\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n if (config.localization && config.localization.locales?.length > 0) {\n // clone localization config so to not break everything\n const firstLocale = config.localization.locales[0]\n if (typeof firstLocale === 'string') {\n config.localization.localeCodes = [\n ...(config.localization as unknown as LocalizationConfigWithNoLabels).locales,\n ]\n\n // is string[], so convert to Locale[]\n config.localization.locales = (\n config.localization as unknown as LocalizationConfigWithNoLabels\n ).locales.map((locale) => ({\n code: locale,\n label: locale,\n rtl: false,\n toString: () => locale,\n }))\n } else {\n // is Locale[], so convert to string[] for localeCodes\n config.localization.localeCodes = config.localization.locales.reduce((locales, locale) => {\n locales.push(locale.code)\n return locales\n }, [] as string[])\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n\n // Default fallback to true if not provided\n config.localization.fallback = config.localization?.fallback ?? true\n }\n\n const i18nConfig: SanitizedConfig['i18n'] = {\n fallbackLanguage: 'en',\n supportedLanguages: {\n en,\n },\n translations: {},\n }\n\n if (incomingConfig?.i18n) {\n i18nConfig.supportedLanguages =\n incomingConfig.i18n?.supportedLanguages || i18nConfig.supportedLanguages\n\n const supportedLangKeys = <AcceptedLanguages[]>Object.keys(i18nConfig.supportedLanguages)\n const fallbackLang = incomingConfig.i18n?.fallbackLanguage || i18nConfig.fallbackLanguage\n\n i18nConfig.fallbackLanguage = supportedLangKeys.includes(fallbackLang)\n ? fallbackLang\n : supportedLangKeys[0]\n i18nConfig.translations =\n (incomingConfig.i18n?.translations as SanitizedConfig['i18n']['translations']) ||\n i18nConfig.translations\n }\n\n config.i18n = i18nConfig\n\n // Need to add default jobs collection before locked documents collections\n if (Array.isArray(configWithDefaults.jobs?.tasks) && configWithDefaults.jobs.tasks.length > 0) {\n let defaultJobsCollection = getDefaultJobsCollection(config as unknown as Config)\n\n if (typeof configWithDefaults.jobs.jobsCollectionOverrides === 'function') {\n defaultJobsCollection = configWithDefaults.jobs.jobsCollectionOverrides({\n defaultJobsCollection,\n })\n }\n\n configWithDefaults.collections.push(defaultJobsCollection)\n }\n\n configWithDefaults.collections.push(getLockedDocumentsCollection(config as unknown as Config))\n configWithDefaults.collections.push(getPreferencesCollection(config as unknown as Config))\n configWithDefaults.collections.push(migrationsCollection)\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n for (let i = 0; i < config.collections.length; i++) {\n config.collections[i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections[i],\n richTextSanitizationPromises,\n )\n }\n\n checkDuplicateCollections(config.collections)\n\n if (config.globals.length > 0) {\n config.globals = await sanitizeGlobals(\n config as unknown as Config,\n richTextSanitizationPromises,\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf.push(config.serverURL)\n }\n\n // Get deduped list of upload adapters\n if (!config.upload) {\n config.upload = { adapters: [] }\n }\n config.upload.adapters = Array.from(\n new Set(config.collections.map((c) => c.upload?.adapter).filter(Boolean)),\n )\n\n // Pass through the email config as is so adapters don't break\n if (incomingConfig.email) {\n config.email = incomingConfig.email\n }\n\n /*\n Execute richText sanitization\n */\n if (typeof incomingConfig.editor === 'function') {\n config.editor = await incomingConfig.editor({\n config: config as SanitizedConfig,\n isRoot: true,\n parentIsLocalized: false,\n })\n if (config.editor.i18n && Object.keys(config.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, config.editor.i18n)\n }\n }\n\n const promises: Promise<void>[] = []\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","deepMergeSimple","defaultUserCollection","sanitizeCollection","migrationsCollection","InvalidConfiguration","sanitizeGlobals","getLockedDocumentsCollection","getPreferencesCollection","getDefaultJobsCollection","checkDuplicateCollections","defaults","sanitizeAdminConfig","configToSanitize","sanitizedConfig","loggingLevels","Forbidden","Locked","MissingFile","NotFound","ValidationError","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","sanitizeConfig","incomingConfig","configWithDefaults","meta","routes","graphQL","jobs","access","tasks","workflows","typescript","serverURL","process","env","NEXT_BASE_PATH","api","config","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","reduce","fallback","i18nConfig","fallbackLanguage","supportedLanguages","translations","i18n","supportedLangKeys","Object","keys","fallbackLang","includes","Array","isArray","defaultJobsCollection","jobsCollectionOverrides","richTextSanitizationPromises","i","globals","csrf","upload","adapters","from","Set","c","adapter","filter","email","editor","isRoot","parentIsLocalized","promises","sanitizeFunction","Promise","all"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/database/getLocalizedPaths.ts"],"sourcesContent":["import type { Field, FlattenedField } from '../fields/config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PathToQuery } from './queryValidation/types.js'\n\nexport function getLocalizedPaths({\n collectionSlug,\n fields,\n globalSlug,\n incomingPath,\n locale,\n overrideAccess = false,\n payload,\n}: {\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n incomingPath: string\n locale?: string\n overrideAccess?: boolean\n payload: Payload\n}): PathToQuery[] {\n const pathSegments = incomingPath.split('.')\n const localizationConfig = payload.config.localization\n\n let paths: PathToQuery[] = [\n {\n collectionSlug,\n complete: false,\n field: undefined,\n fields,\n globalSlug,\n invalid: false,\n path: '',\n },\n ]\n\n for (let i = 0; i < pathSegments.length; i += 1) {\n const segment = pathSegments[i]\n\n const lastIncompletePath = paths.find(({ complete }) => !complete)\n\n if (lastIncompletePath) {\n const { path } = lastIncompletePath\n let currentPath = path ? `${path}.${segment}` : segment\n\n let fieldsToSearch: FlattenedField[]\n\n if (lastIncompletePath?.field && 'flattenedFields' in lastIncompletePath.field) {\n fieldsToSearch = lastIncompletePath.field.flattenedFields\n } else {\n fieldsToSearch = lastIncompletePath.fields\n }\n\n const matchedField = fieldsToSearch.find((field) => field.name === segment)\n lastIncompletePath.field = matchedField\n\n if (currentPath === 'globalType' && globalSlug) {\n lastIncompletePath.path = currentPath\n lastIncompletePath.complete = true\n lastIncompletePath.field = {\n name: 'globalType',\n type: 'text',\n }\n\n return paths\n }\n\n if (!matchedField && currentPath === 'id' && i === pathSegments.length - 1) {\n lastIncompletePath.path = currentPath\n const idField: Field = {\n name: 'id',\n type: payload.db.defaultIDType as 'text',\n }\n lastIncompletePath.field = idField\n lastIncompletePath.complete = true\n return paths\n }\n\n if (matchedField) {\n if ('hidden' in matchedField && matchedField.hidden && !overrideAccess) {\n lastIncompletePath.invalid = true\n }\n\n const nextSegment = pathSegments[i + 1]\n const nextSegmentIsLocale =\n localizationConfig && localizationConfig.localeCodes.includes(nextSegment)\n\n if (nextSegmentIsLocale) {\n // Skip the next iteration, because it's a locale\n i += 1\n currentPath = `${currentPath}.${nextSegment}`\n } else if (localizationConfig && 'localized' in matchedField && matchedField.localized) {\n currentPath = `${currentPath}.${locale}`\n }\n\n switch (matchedField.type) {\n case 'blocks':\n case 'json':\n case 'richText': {\n const upcomingSegments = pathSegments.slice(i + 1).join('.')\n lastIncompletePath.complete = true\n lastIncompletePath.path = upcomingSegments\n ? `${currentPath}.${upcomingSegments}`\n : currentPath\n return paths\n }\n\n case 'relationship':\n case 'upload': {\n // If this is a polymorphic relation,\n // We only support querying directly (no nested querying)\n if (typeof matchedField.relationTo !== 'string') {\n const lastSegmentIsValid =\n ['relationTo', 'value'].includes(pathSegments[pathSegments.length - 1]) ||\n pathSegments.length === 1 ||\n (pathSegments.length === 2 && pathSegments[0] === 'version')\n\n lastIncompletePath.path = pathSegments.join('.')\n\n if (lastSegmentIsValid) {\n lastIncompletePath.complete = true\n } else {\n lastIncompletePath.invalid = true\n return paths\n }\n } else {\n lastIncompletePath.complete = true\n lastIncompletePath.path = currentPath\n\n const nestedPathToQuery = pathSegments\n .slice(nextSegmentIsLocale ? i + 2 : i + 1)\n .join('.')\n\n if (nestedPathToQuery) {\n const relatedCollection = payload.collections[matchedField.relationTo].config\n\n const remainingPaths = getLocalizedPaths({\n collectionSlug: relatedCollection.slug,\n fields: relatedCollection.flattenedFields,\n globalSlug,\n incomingPath: nestedPathToQuery,\n locale,\n payload,\n })\n\n paths = [...paths, ...remainingPaths]\n }\n\n return paths\n }\n\n break\n }\n\n default: {\n if (i + 1 === pathSegments.length) {\n lastIncompletePath.complete = true\n }\n lastIncompletePath.path = currentPath\n }\n }\n } else {\n lastIncompletePath.invalid = true\n lastIncompletePath.path = currentPath\n return paths\n }\n }\n }\n\n return paths\n}\n"],"names":["getLocalizedPaths","collectionSlug","fields","globalSlug","incomingPath","locale","overrideAccess","payload","pathSegments","split","localizationConfig","config","localization","paths","complete","field","undefined","invalid","path","i","length","segment","lastIncompletePath","find","currentPath","fieldsToSearch","flattenedFields","matchedField","name","type","idField","db","defaultIDType","hidden","nextSegment","nextSegmentIsLocale","localeCodes","includes","localized","upcomingSegments","slice","join","relationTo","lastSegmentIsValid","nestedPathToQuery","relatedCollection","collections","remainingPaths","slug"],"mappings":"AAIA,OAAO,SAASA,kBAAkB,EAChCC,cAAc,EACdC,MAAM,EACNC,UAAU,EACVC,YAAY,EACZC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,OAAO,EASR;IACC,MAAMC,eAAeJ,aAAaK,KAAK,CAAC;IACxC,MAAMC,qBAAqBH,QAAQI,MAAM,CAACC,YAAY;IAEtD,IAAIC,QAAuB;QACzB;YACEZ;YACAa,UAAU;YACVC,OAAOC;YACPd;YACAC;YACAc,SAAS;YACTC,MAAM;QACR;KACD;IAED,IAAK,IAAIC,IAAI,GAAGA,IAAIX,aAAaY,MAAM,EAAED,KAAK,EAAG;QAC/C,MAAME,UAAUb,YAAY,CAACW,EAAE;QAE/B,MAAMG,qBAAqBT,MAAMU,IAAI,CAAC,CAAC,EAAET,QAAQ,EAAE,GAAK,CAACA;QAEzD,IAAIQ,oBAAoB;YACtB,MAAM,EAAEJ,IAAI,EAAE,GAAGI;YACjB,IAAIE,cAAcN,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../src/database/getLocalizedPaths.ts"],"sourcesContent":["import type { Field, FlattenedField } from '../fields/config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PathToQuery } from './queryValidation/types.js'\n\nexport function getLocalizedPaths({\n collectionSlug,\n fields,\n globalSlug,\n incomingPath,\n locale,\n overrideAccess = false,\n payload,\n}: {\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n incomingPath: string\n locale?: string\n overrideAccess?: boolean\n payload: Payload\n}): PathToQuery[] {\n const pathSegments = incomingPath.split('.')\n const localizationConfig = payload.config.localization\n\n let paths: PathToQuery[] = [\n {\n collectionSlug,\n complete: false,\n field: undefined,\n fields,\n globalSlug,\n invalid: false,\n path: '',\n },\n ]\n\n for (let i = 0; i < pathSegments.length; i += 1) {\n const segment = pathSegments[i]\n\n const lastIncompletePath = paths.find(({ complete }) => !complete)\n\n if (lastIncompletePath) {\n const { path } = lastIncompletePath\n let currentPath = path ? `${path}.${segment}` : segment\n\n let fieldsToSearch: FlattenedField[]\n\n if (lastIncompletePath?.field && 'flattenedFields' in lastIncompletePath.field) {\n fieldsToSearch = lastIncompletePath.field.flattenedFields\n } else {\n fieldsToSearch = lastIncompletePath.fields\n }\n\n const matchedField = fieldsToSearch.find((field) => field.name === segment)\n lastIncompletePath.field = matchedField\n\n if (currentPath === 'globalType' && globalSlug) {\n lastIncompletePath.path = currentPath\n lastIncompletePath.complete = true\n lastIncompletePath.field = {\n name: 'globalType',\n type: 'text',\n }\n\n return paths\n }\n\n if (!matchedField && currentPath === 'id' && i === pathSegments.length - 1) {\n lastIncompletePath.path = currentPath\n const idField: Field = {\n name: 'id',\n type: payload.db.defaultIDType as 'text',\n }\n lastIncompletePath.field = idField\n lastIncompletePath.complete = true\n return paths\n }\n\n if (matchedField) {\n if ('hidden' in matchedField && matchedField.hidden && !overrideAccess) {\n lastIncompletePath.invalid = true\n }\n\n const nextSegment = pathSegments[i + 1]\n const nextSegmentIsLocale =\n localizationConfig && localizationConfig.localeCodes.includes(nextSegment)\n\n if (nextSegmentIsLocale) {\n // Skip the next iteration, because it's a locale\n i += 1\n currentPath = `${currentPath}.${nextSegment}`\n } else if (localizationConfig && 'localized' in matchedField && matchedField.localized) {\n currentPath = `${currentPath}.${locale}`\n }\n\n switch (matchedField.type) {\n case 'blocks':\n case 'json':\n case 'richText': {\n const upcomingSegments = pathSegments.slice(i + 1).join('.')\n lastIncompletePath.complete = true\n lastIncompletePath.path = upcomingSegments\n ? `${currentPath}.${upcomingSegments}`\n : currentPath\n return paths\n }\n\n case 'relationship':\n case 'upload': {\n // If this is a polymorphic relation,\n // We only support querying directly (no nested querying)\n if (typeof matchedField.relationTo !== 'string') {\n const lastSegmentIsValid =\n ['relationTo', 'value'].includes(pathSegments[pathSegments.length - 1]) ||\n pathSegments.length === 1 ||\n (pathSegments.length === 2 && pathSegments[0] === 'version')\n\n lastIncompletePath.path = pathSegments.join('.')\n\n if (lastSegmentIsValid) {\n lastIncompletePath.complete = true\n } else {\n lastIncompletePath.invalid = true\n return paths\n }\n } else {\n lastIncompletePath.complete = true\n lastIncompletePath.path = currentPath\n\n const nestedPathToQuery = pathSegments\n .slice(nextSegmentIsLocale ? i + 2 : i + 1)\n .join('.')\n\n if (nestedPathToQuery) {\n const relatedCollection = payload.collections[matchedField.relationTo].config\n\n const remainingPaths = getLocalizedPaths({\n collectionSlug: relatedCollection.slug,\n fields: relatedCollection.flattenedFields,\n globalSlug,\n incomingPath: nestedPathToQuery,\n locale,\n payload,\n })\n\n paths = [...paths, ...remainingPaths]\n }\n\n return paths\n }\n\n break\n }\n\n default: {\n if (i + 1 === pathSegments.length) {\n lastIncompletePath.complete = true\n }\n lastIncompletePath.path = currentPath\n }\n }\n } else {\n lastIncompletePath.invalid = true\n lastIncompletePath.path = currentPath\n return paths\n }\n }\n }\n\n return paths\n}\n"],"names":["getLocalizedPaths","collectionSlug","fields","globalSlug","incomingPath","locale","overrideAccess","payload","pathSegments","split","localizationConfig","config","localization","paths","complete","field","undefined","invalid","path","i","length","segment","lastIncompletePath","find","currentPath","fieldsToSearch","flattenedFields","matchedField","name","type","idField","db","defaultIDType","hidden","nextSegment","nextSegmentIsLocale","localeCodes","includes","localized","upcomingSegments","slice","join","relationTo","lastSegmentIsValid","nestedPathToQuery","relatedCollection","collections","remainingPaths","slug"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/database/migrations/createMigration.ts"],"sourcesContent":["import fs from 'fs'\n\nimport type { CreateMigration } from '../types.js'\n\nimport { writeMigrationIndex } from '../../index.js'\nimport { migrationTemplate } from './migrationTemplate.js'\n\nexport const createMigration: CreateMigration = function createMigration({\n migrationName,\n payload,\n}) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName.replace(/\\W/g, '_')\n const fileName = `${timestamp}_${formattedName}.ts`\n const filePath = `${dir}/${fileName}`\n fs.writeFileSync(filePath, migrationTemplate)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n}\n"],"names":["fs","writeMigrationIndex","migrationTemplate","createMigration","migrationName","payload","dir","db","migrationDir","existsSync","mkdirSync","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","writeFileSync","migrationsDir","logger","info","msg"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AAInB,SAASC,mBAAmB,QAAQ,iBAAgB;AACpD,SAASC,iBAAiB,QAAQ,yBAAwB;AAE1D,OAAO,MAAMC,kBAAmC,SAASA,gBAAgB,EACvEC,aAAa,EACbC,OAAO,EACR;IACC,MAAMC,MAAMD,QAAQE,EAAE,CAACC,YAAY;IACnC,IAAI,CAACR,GAAGS,UAAU,CAACH,MAAM;QACvBN,GAAGU,SAAS,CAACJ;IACf;IAEA,MAAM,CAACK,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IACzD,MAAMC,gBAAgBL,QAAQM,OAAO,CAAC,OAAO;IAC7C,MAAMC,gBAAgBN,OAAOG,KAAK,CAAC,IAAI,CAAC,EAAE,CAACE,OAAO,CAAC,OAAO;IAE1D,MAAME,YAAY,
|
|
1
|
+
{"version":3,"sources":["../../../src/database/migrations/createMigration.ts"],"sourcesContent":["import fs from 'fs'\n\nimport type { CreateMigration } from '../types.js'\n\nimport { writeMigrationIndex } from '../../index.js'\nimport { migrationTemplate } from './migrationTemplate.js'\n\nexport const createMigration: CreateMigration = function createMigration({\n migrationName,\n payload,\n}) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName.replace(/\\W/g, '_')\n const fileName = `${timestamp}_${formattedName}.ts`\n const filePath = `${dir}/${fileName}`\n fs.writeFileSync(filePath, migrationTemplate)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n}\n"],"names":["fs","writeMigrationIndex","migrationTemplate","createMigration","migrationName","payload","dir","db","migrationDir","existsSync","mkdirSync","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","writeFileSync","migrationsDir","logger","info","msg"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AAInB,SAASC,mBAAmB,QAAQ,iBAAgB;AACpD,SAASC,iBAAiB,QAAQ,yBAAwB;AAE1D,OAAO,MAAMC,kBAAmC,SAASA,gBAAgB,EACvEC,aAAa,EACbC,OAAO,EACR;IACC,MAAMC,MAAMD,QAAQE,EAAE,CAACC,YAAY;IACnC,IAAI,CAACR,GAAGS,UAAU,CAACH,MAAM;QACvBN,GAAGU,SAAS,CAACJ;IACf;IAEA,MAAM,CAACK,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IACzD,MAAMC,gBAAgBL,QAAQM,OAAO,CAAC,OAAO;IAC7C,MAAMC,gBAAgBN,OAAOG,KAAK,CAAC,IAAI,CAAC,EAAE,CAACE,OAAO,CAAC,OAAO;IAE1D,MAAME,YAAY,GAAGH,cAAc,CAAC,EAAEE,eAAe;IAErD,MAAME,gBAAgBhB,cAAca,OAAO,CAAC,OAAO;IACnD,MAAMI,WAAW,GAAGF,UAAU,CAAC,EAAEC,cAAc,GAAG,CAAC;IACnD,MAAME,WAAW,GAAGhB,IAAI,CAAC,EAAEe,UAAU;IACrCrB,GAAGuB,aAAa,CAACD,UAAUpB;IAE3BD,oBAAoB;QAAEuB,eAAenB,QAAQE,EAAE,CAACC,YAAY;IAAC;IAE7DH,QAAQoB,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,qBAAqB,EAAEL,UAAU;IAAC;AAChE,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/database/migrations/getPredefinedMigration.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport { pathToFileURL } from 'url'\n\nimport type { Payload } from '../../index.js'\nimport type { MigrationTemplateArgs } from '../types.js'\n\n/**\n * Get predefined migration 'up', 'down' and 'imports'\n */\nexport const getPredefinedMigration = async ({\n dirname,\n file,\n migrationName: migrationNameArg,\n payload,\n}: {\n dirname: string\n file?: string\n migrationName?: string\n payload: Payload\n}): Promise<MigrationTemplateArgs> => {\n // Check for predefined migration.\n // Either passed in via --file or prefixed with '@payloadcms/db-mongodb/' for example\n if (file || migrationNameArg?.startsWith('@payloadcms/')) {\n // removes the package name from the migrationName.\n const migrationName = (file || migrationNameArg).split('/').slice(2).join('/')\n let cleanPath = path.join(dirname, `./predefinedMigrations/${migrationName}`)\n\n if (fs.existsSync(`${cleanPath}.mjs`)) {\n cleanPath = `${cleanPath}.mjs`\n } else if (fs.existsSync(`${cleanPath}.js`)) {\n cleanPath = `${cleanPath}.js`\n } else {\n payload.logger.error({\n msg: `Canned migration ${migrationName} not found.`,\n })\n process.exit(1)\n }\n\n cleanPath = cleanPath.replaceAll('\\\\', '/')\n const moduleURL = pathToFileURL(cleanPath)\n try {\n const { downSQL, imports, upSQL } = await eval(`import('${moduleURL.href}')`)\n return { downSQL, imports, upSQL }\n } catch (err) {\n payload.logger.error({\n err,\n msg: `Error loading predefined migration ${migrationName}`,\n })\n process.exit(1)\n }\n }\n return {}\n}\n"],"names":["fs","path","pathToFileURL","getPredefinedMigration","dirname","file","migrationName","migrationNameArg","payload","startsWith","split","slice","join","cleanPath","existsSync","logger","error","msg","process","exit","replaceAll","moduleURL","downSQL","imports","upSQL","eval","href","err"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,aAAa,QAAQ,MAAK;AAKnC;;CAEC,GACD,OAAO,MAAMC,yBAAyB,OAAO,EAC3CC,OAAO,EACPC,IAAI,EACJC,eAAeC,gBAAgB,EAC/BC,OAAO,EAMR;IACC,kCAAkC;IAClC,qFAAqF;IACrF,IAAIH,QAAQE,kBAAkBE,WAAW,iBAAiB;QACxD,mDAAmD;QACnD,MAAMH,gBAAgB,AAACD,CAAAA,QAAQE,gBAAe,EAAGG,KAAK,CAAC,KAAKC,KAAK,CAAC,GAAGC,IAAI,CAAC;QAC1E,IAAIC,YAAYZ,KAAKW,IAAI,CAACR,SAAS,CAAC,uBAAuB,EAAEE,
|
|
1
|
+
{"version":3,"sources":["../../../src/database/migrations/getPredefinedMigration.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport { pathToFileURL } from 'url'\n\nimport type { Payload } from '../../index.js'\nimport type { MigrationTemplateArgs } from '../types.js'\n\n/**\n * Get predefined migration 'up', 'down' and 'imports'\n */\nexport const getPredefinedMigration = async ({\n dirname,\n file,\n migrationName: migrationNameArg,\n payload,\n}: {\n dirname: string\n file?: string\n migrationName?: string\n payload: Payload\n}): Promise<MigrationTemplateArgs> => {\n // Check for predefined migration.\n // Either passed in via --file or prefixed with '@payloadcms/db-mongodb/' for example\n if (file || migrationNameArg?.startsWith('@payloadcms/')) {\n // removes the package name from the migrationName.\n const migrationName = (file || migrationNameArg).split('/').slice(2).join('/')\n let cleanPath = path.join(dirname, `./predefinedMigrations/${migrationName}`)\n\n if (fs.existsSync(`${cleanPath}.mjs`)) {\n cleanPath = `${cleanPath}.mjs`\n } else if (fs.existsSync(`${cleanPath}.js`)) {\n cleanPath = `${cleanPath}.js`\n } else {\n payload.logger.error({\n msg: `Canned migration ${migrationName} not found.`,\n })\n process.exit(1)\n }\n\n cleanPath = cleanPath.replaceAll('\\\\', '/')\n const moduleURL = pathToFileURL(cleanPath)\n try {\n const { downSQL, imports, upSQL } = await eval(`import('${moduleURL.href}')`)\n return { downSQL, imports, upSQL }\n } catch (err) {\n payload.logger.error({\n err,\n msg: `Error loading predefined migration ${migrationName}`,\n })\n process.exit(1)\n }\n }\n return {}\n}\n"],"names":["fs","path","pathToFileURL","getPredefinedMigration","dirname","file","migrationName","migrationNameArg","payload","startsWith","split","slice","join","cleanPath","existsSync","logger","error","msg","process","exit","replaceAll","moduleURL","downSQL","imports","upSQL","eval","href","err"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,aAAa,QAAQ,MAAK;AAKnC;;CAEC,GACD,OAAO,MAAMC,yBAAyB,OAAO,EAC3CC,OAAO,EACPC,IAAI,EACJC,eAAeC,gBAAgB,EAC/BC,OAAO,EAMR;IACC,kCAAkC;IAClC,qFAAqF;IACrF,IAAIH,QAAQE,kBAAkBE,WAAW,iBAAiB;QACxD,mDAAmD;QACnD,MAAMH,gBAAgB,AAACD,CAAAA,QAAQE,gBAAe,EAAGG,KAAK,CAAC,KAAKC,KAAK,CAAC,GAAGC,IAAI,CAAC;QAC1E,IAAIC,YAAYZ,KAAKW,IAAI,CAACR,SAAS,CAAC,uBAAuB,EAAEE,eAAe;QAE5E,IAAIN,GAAGc,UAAU,CAAC,GAAGD,UAAU,IAAI,CAAC,GAAG;YACrCA,YAAY,GAAGA,UAAU,IAAI,CAAC;QAChC,OAAO,IAAIb,GAAGc,UAAU,CAAC,GAAGD,UAAU,GAAG,CAAC,GAAG;YAC3CA,YAAY,GAAGA,UAAU,GAAG,CAAC;QAC/B,OAAO;YACLL,QAAQO,MAAM,CAACC,KAAK,CAAC;gBACnBC,KAAK,CAAC,iBAAiB,EAAEX,cAAc,WAAW,CAAC;YACrD;YACAY,QAAQC,IAAI,CAAC;QACf;QAEAN,YAAYA,UAAUO,UAAU,CAAC,MAAM;QACvC,MAAMC,YAAYnB,cAAcW;QAChC,IAAI;YACF,MAAM,EAAES,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAE,GAAG,MAAMC,KAAK,CAAC,QAAQ,EAAEJ,UAAUK,IAAI,CAAC,EAAE,CAAC;YAC5E,OAAO;gBAAEJ;gBAASC;gBAASC;YAAM;QACnC,EAAE,OAAOG,KAAK;YACZnB,QAAQO,MAAM,CAACC,KAAK,CAAC;gBACnBW;gBACAV,KAAK,CAAC,mCAAmC,EAAEX,eAAe;YAC5D;YACAY,QAAQC,IAAI,CAAC;QACf;IACF;IACA,OAAO,CAAC;AACV,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/database/migrations/migrate.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport const migrate: BaseDatabaseAdapter['migrate'] = async function migrate(\n this: BaseDatabaseAdapter,\n args,\n): Promise<void> {\n const { payload } = this\n const migrationFiles = args?.migrations || (await readMigrationFiles({ payload }))\n const { existingMigrations, latestBatch } = await getMigrations({ payload })\n\n const newBatch = latestBatch + 1\n\n // Execute 'up' function for each migration sequentially\n for (const migration of migrationFiles) {\n const existingMigration = existingMigrations.find(\n (existing) => existing.name === migration.name,\n )\n\n // Run migration if not found in database\n if (existingMigration) {\n continue\n }\n\n const start = Date.now()\n const req = { payload } as PayloadRequest\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\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: newBatch,\n },\n req,\n })\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({ err, msg: `Error running migration ${migration.name}` })\n throw err\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrate","args","payload","migrationFiles","migrations","existingMigrations","latestBatch","newBatch","migration","existingMigration","find","existing","name","start","Date","now","req","logger","info","msg","up","create","collection","data","batch","err","error"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,UAA0C,eAAeA,QAEpEC,IAAI;IAEJ,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiBF,MAAMG,cAAe,MAAML,mBAAmB;QAAEG;IAAQ;IAC/E,MAAM,EAAEG,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMR,cAAc;QAAEI;IAAQ;IAE1E,MAAMK,WAAWD,cAAc;IAE/B,wDAAwD;IACxD,KAAK,MAAME,aAAaL,eAAgB;QACtC,MAAMM,oBAAoBJ,mBAAmBK,IAAI,CAC/C,CAACC,WAAaA,SAASC,IAAI,KAAKJ,UAAUI,IAAI;QAGhD,yCAAyC;QACzC,IAAIH,mBAAmB;YACrB;QACF;QAEA,MAAMI,QAAQC,KAAKC,GAAG;QACtB,MAAMC,MAAM;YAAEd;QAAQ;QAEtBA,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEX,UAAUI,IAAI,
|
|
1
|
+
{"version":3,"sources":["../../../src/database/migrations/migrate.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport const migrate: BaseDatabaseAdapter['migrate'] = async function migrate(\n this: BaseDatabaseAdapter,\n args,\n): Promise<void> {\n const { payload } = this\n const migrationFiles = args?.migrations || (await readMigrationFiles({ payload }))\n const { existingMigrations, latestBatch } = await getMigrations({ payload })\n\n const newBatch = latestBatch + 1\n\n // Execute 'up' function for each migration sequentially\n for (const migration of migrationFiles) {\n const existingMigration = existingMigrations.find(\n (existing) => existing.name === migration.name,\n )\n\n // Run migration if not found in database\n if (existingMigration) {\n continue\n }\n\n const start = Date.now()\n const req = { payload } as PayloadRequest\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\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: newBatch,\n },\n req,\n })\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({ err, msg: `Error running migration ${migration.name}` })\n throw err\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrate","args","payload","migrationFiles","migrations","existingMigrations","latestBatch","newBatch","migration","existingMigration","find","existing","name","start","Date","now","req","logger","info","msg","up","create","collection","data","batch","err","error"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,MAAMC,UAA0C,eAAeA,QAEpEC,IAAI;IAEJ,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiBF,MAAMG,cAAe,MAAML,mBAAmB;QAAEG;IAAQ;IAC/E,MAAM,EAAEG,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMR,cAAc;QAAEI;IAAQ;IAE1E,MAAMK,WAAWD,cAAc;IAE/B,wDAAwD;IACxD,KAAK,MAAME,aAAaL,eAAgB;QACtC,MAAMM,oBAAoBJ,mBAAmBK,IAAI,CAC/C,CAACC,WAAaA,SAASC,IAAI,KAAKJ,UAAUI,IAAI;QAGhD,yCAAyC;QACzC,IAAIH,mBAAmB;YACrB;QACF;QAEA,MAAMI,QAAQC,KAAKC,GAAG;QACtB,MAAMC,MAAM;YAAEd;QAAQ;QAEtBA,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEX,UAAUI,IAAI,EAAE;QAAC;QAE1D,IAAI;YACF,MAAMhB,gBAAgBoB;YACtB,MAAMR,UAAUY,EAAE,CAAC;gBAAElB;gBAASc;YAAI;YAClCd,QAAQe,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEX,UAAUI,IAAI,CAAC,EAAE,EAAEE,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;YACpF,MAAMX,QAAQmB,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJX,MAAMJ,UAAUI,IAAI;oBACpBY,OAAOjB;gBACT;gBACAS;YACF;YACA,MAAMrB,kBAAkBqB;QAC1B,EAAE,OAAOS,KAAc;YACrB,MAAM5B,gBAAgBmB;YACtBd,QAAQe,MAAM,CAACS,KAAK,CAAC;gBAAED;gBAAKN,KAAK,CAAC,wBAAwB,EAAEX,UAAUI,IAAI,EAAE;YAAC;YAC7E,MAAMa;QACR;IACF;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/database/migrations/migrateDown.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateDown(this: BaseDatabaseAdapter): 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 // Waiting for implementation here\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migrationFile.name}`,\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrateDown","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","latestBatchMigrations","filter","batch","migration","migrationFile","find","m","name","Error","start","Date","now","req","down","delete","id","collection","err","error","process","exit"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMN,cAAc;QAC9DG;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,
|
|
1
|
+
{"version":3,"sources":["../../../src/database/migrations/migrateDown.ts"],"sourcesContent":["import type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateDown(this: BaseDatabaseAdapter): 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 // Waiting for implementation here\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migrationFile.name}`,\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrateDown","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","latestBatchMigrations","filter","batch","migration","migrationFile","find","m","name","Error","start","Date","now","req","down","delete","id","collection","err","error","process","exit"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMN,cAAc;QAC9DG;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,EAAE;YAAC;YACnE,MAAMpB,gBAAgByB;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;YACA,kCAAkC;YAClC,MAAMjB,QAAQsB,MAAM,CAAC;gBACnBC,IAAIZ,UAAUY,EAAE;gBAChBC,YAAY;gBACZJ;YACF;YAEA,MAAM1B,kBAAkB0B;QAC1B,EAAE,OAAOK,KAAc;YACrB,MAAM7B,gBAAgBwB;YACtBpB,QAAQK,MAAM,CAACqB,KAAK,CAAC;gBACnBD;gBACAlB,KAAK,CAAC,wBAAwB,EAAEK,cAAcG,IAAI,EAAE;YACtD;YACAY,QAAQC,IAAI,CAAC;QACf;IACF;AACF"}
|