@payloadcms/db-mongodb 4.0.0-internal.e7d4ebc → 4.0.0-internal.ea6e8f8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +9 -2
  3. package/dist/connect.js.map +1 -1
  4. package/dist/count.d.ts.map +1 -1
  5. package/dist/count.js +33 -4
  6. package/dist/count.js.map +1 -1
  7. package/dist/countGlobalVersions.d.ts.map +1 -1
  8. package/dist/countGlobalVersions.js +1 -0
  9. package/dist/countGlobalVersions.js.map +1 -1
  10. package/dist/countVersions.d.ts.map +1 -1
  11. package/dist/countVersions.js +36 -4
  12. package/dist/countVersions.js.map +1 -1
  13. package/dist/create.d.ts.map +1 -1
  14. package/dist/create.js +2 -1
  15. package/dist/create.js.map +1 -1
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +23 -1
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createMigration.d.ts.map +1 -1
  20. package/dist/createMigration.js +9 -2
  21. package/dist/createMigration.js.map +1 -1
  22. package/dist/createVersion.d.ts.map +1 -1
  23. package/dist/createVersion.js +17 -4
  24. package/dist/createVersion.js.map +1 -1
  25. package/dist/deleteBranchGlobal.d.ts +10 -0
  26. package/dist/deleteBranchGlobal.d.ts.map +1 -0
  27. package/dist/deleteBranchGlobal.js +22 -0
  28. package/dist/deleteBranchGlobal.js.map +1 -0
  29. package/dist/deleteMany.d.ts.map +1 -1
  30. package/dist/deleteMany.js +1 -0
  31. package/dist/deleteMany.js.map +1 -1
  32. package/dist/deleteOne.d.ts.map +1 -1
  33. package/dist/deleteOne.js +20 -1
  34. package/dist/deleteOne.js.map +1 -1
  35. package/dist/deleteVersions.d.ts.map +1 -1
  36. package/dist/deleteVersions.js +1 -0
  37. package/dist/deleteVersions.js.map +1 -1
  38. package/dist/exports/migration-utils.d.ts +2 -0
  39. package/dist/exports/migration-utils.d.ts.map +1 -1
  40. package/dist/exports/migration-utils.js +2 -0
  41. package/dist/exports/migration-utils.js.map +1 -1
  42. package/dist/find.d.ts.map +1 -1
  43. package/dist/find.js +44 -8
  44. package/dist/find.js.map +1 -1
  45. package/dist/findDistinct.d.ts.map +1 -1
  46. package/dist/findDistinct.js +115 -12
  47. package/dist/findDistinct.js.map +1 -1
  48. package/dist/findGlobal.d.ts.map +1 -1
  49. package/dist/findGlobal.js +34 -5
  50. package/dist/findGlobal.js.map +1 -1
  51. package/dist/findGlobalVersions.d.ts.map +1 -1
  52. package/dist/findGlobalVersions.js +10 -2
  53. package/dist/findGlobalVersions.js.map +1 -1
  54. package/dist/findOne.d.ts.map +1 -1
  55. package/dist/findOne.js +43 -5
  56. package/dist/findOne.js.map +1 -1
  57. package/dist/findVersions.d.ts.map +1 -1
  58. package/dist/findVersions.js +49 -5
  59. package/dist/findVersions.js.map +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +4 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/init.d.ts.map +1 -1
  64. package/dist/init.js +89 -67
  65. package/dist/init.js.map +1 -1
  66. package/dist/migrateFresh.d.ts +4 -2
  67. package/dist/migrateFresh.d.ts.map +1 -1
  68. package/dist/migrateFresh.js +21 -6
  69. package/dist/migrateFresh.js.map +1 -1
  70. package/dist/models/buildCollectionSchema.d.ts +8 -2
  71. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  72. package/dist/models/buildCollectionSchema.js +4 -2
  73. package/dist/models/buildCollectionSchema.js.map +1 -1
  74. package/dist/models/buildGlobalModel.d.ts +5 -1
  75. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  76. package/dist/models/buildGlobalModel.js +34 -3
  77. package/dist/models/buildGlobalModel.js.map +1 -1
  78. package/dist/models/buildSchema.d.ts +4 -0
  79. package/dist/models/buildSchema.d.ts.map +1 -1
  80. package/dist/models/buildSchema.js +94 -36
  81. package/dist/models/buildSchema.js.map +1 -1
  82. package/dist/models/schemaBuildContext.d.ts +21 -0
  83. package/dist/models/schemaBuildContext.d.ts.map +1 -0
  84. package/dist/models/schemaBuildContext.js +29 -0
  85. package/dist/models/schemaBuildContext.js.map +1 -0
  86. package/dist/predefinedMigrations/branching.d.ts +4 -0
  87. package/dist/predefinedMigrations/branching.d.ts.map +1 -0
  88. package/dist/predefinedMigrations/branching.js +9 -0
  89. package/dist/predefinedMigrations/branching.js.map +1 -0
  90. package/dist/predefinedMigrations/migrateBranching.d.ts +15 -0
  91. package/dist/predefinedMigrations/migrateBranching.d.ts.map +1 -0
  92. package/dist/predefinedMigrations/migrateBranching.js +88 -0
  93. package/dist/predefinedMigrations/migrateBranching.js.map +1 -0
  94. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
  95. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +4 -4
  96. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
  97. package/dist/predefinedMigrations/migrateSizesToVariants.d.ts +13 -0
  98. package/dist/predefinedMigrations/migrateSizesToVariants.d.ts.map +1 -0
  99. package/dist/predefinedMigrations/migrateSizesToVariants.js +368 -0
  100. package/dist/predefinedMigrations/migrateSizesToVariants.js.map +1 -0
  101. package/dist/predefinedMigrations/sizes-to-variants.d.ts +5 -0
  102. package/dist/predefinedMigrations/sizes-to-variants.d.ts.map +1 -0
  103. package/dist/predefinedMigrations/sizes-to-variants.js +8 -0
  104. package/dist/predefinedMigrations/sizes-to-variants.js.map +1 -0
  105. package/dist/queries/buildAndOrConditions.d.ts +4 -2
  106. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  107. package/dist/queries/buildAndOrConditions.js +3 -1
  108. package/dist/queries/buildAndOrConditions.js.map +1 -1
  109. package/dist/queries/buildBranchVisibility.d.ts +11 -0
  110. package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
  111. package/dist/queries/buildBranchVisibility.js +204 -0
  112. package/dist/queries/buildBranchVisibility.js.map +1 -0
  113. package/dist/queries/buildQuery.d.ts +4 -2
  114. package/dist/queries/buildQuery.d.ts.map +1 -1
  115. package/dist/queries/buildQuery.js +3 -1
  116. package/dist/queries/buildQuery.js.map +1 -1
  117. package/dist/queries/buildSearchParams.d.ts +4 -2
  118. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  119. package/dist/queries/buildSearchParams.js +338 -24
  120. package/dist/queries/buildSearchParams.js.map +1 -1
  121. package/dist/queries/getBuildQueryPlugin.d.ts +3 -1
  122. package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
  123. package/dist/queries/getBuildQueryPlugin.js +3 -1
  124. package/dist/queries/getBuildQueryPlugin.js.map +1 -1
  125. package/dist/queries/parseParams.d.ts +4 -2
  126. package/dist/queries/parseParams.d.ts.map +1 -1
  127. package/dist/queries/parseParams.js +5 -1
  128. package/dist/queries/parseParams.js.map +1 -1
  129. package/dist/queryDrafts.d.ts.map +1 -1
  130. package/dist/queryDrafts.js +38 -7
  131. package/dist/queryDrafts.js.map +1 -1
  132. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  133. package/dist/transactions/commitTransaction.js +55 -7
  134. package/dist/transactions/commitTransaction.js.map +1 -1
  135. package/dist/transactions/rollbackTransaction.d.ts.map +1 -1
  136. package/dist/transactions/rollbackTransaction.js +10 -9
  137. package/dist/transactions/rollbackTransaction.js.map +1 -1
  138. package/dist/updateGlobal.d.ts.map +1 -1
  139. package/dist/updateGlobal.js +89 -9
  140. package/dist/updateGlobal.js.map +1 -1
  141. package/dist/updateGlobalVersion.d.ts.map +1 -1
  142. package/dist/updateGlobalVersion.js +3 -2
  143. package/dist/updateGlobalVersion.js.map +1 -1
  144. package/dist/updateJobs.d.ts.map +1 -1
  145. package/dist/updateJobs.js +71 -14
  146. package/dist/updateJobs.js.map +1 -1
  147. package/dist/updateMany.d.ts.map +1 -1
  148. package/dist/updateMany.js +3 -2
  149. package/dist/updateMany.js.map +1 -1
  150. package/dist/updateOne.d.ts.map +1 -1
  151. package/dist/updateOne.js +30 -4
  152. package/dist/updateOne.js.map +1 -1
  153. package/dist/updateVersion.d.ts.map +1 -1
  154. package/dist/updateVersion.js +3 -2
  155. package/dist/updateVersion.js.map +1 -1
  156. package/dist/upsertBranchGlobalChange.d.ts +3 -0
  157. package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
  158. package/dist/upsertBranchGlobalChange.js +28 -0
  159. package/dist/upsertBranchGlobalChange.js.map +1 -0
  160. package/dist/utilities/aggregatePaginate.d.ts +2 -1
  161. package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
  162. package/dist/utilities/aggregatePaginate.js +21 -5
  163. package/dist/utilities/aggregatePaginate.js.map +1 -1
  164. package/dist/utilities/buildJoinAggregation.d.ts +4 -2
  165. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  166. package/dist/utilities/buildJoinAggregation.js +107 -8
  167. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  168. package/dist/utilities/resolveJoins.d.ts +6 -2
  169. package/dist/utilities/resolveJoins.d.ts.map +1 -1
  170. package/dist/utilities/resolveJoins.js +114 -26
  171. package/dist/utilities/resolveJoins.js.map +1 -1
  172. package/dist/utilities/transform.d.ts.map +1 -1
  173. package/dist/utilities/transform.js +15 -0
  174. package/dist/utilities/transform.js.map +1 -1
  175. package/package.json +5 -5
  176. package/dist/queries/buildSortParam.spec.js +0 -123
  177. package/dist/queries/buildSortParam.spec.js.map +0 -1
  178. package/dist/queries/getLocalizedSortProperty.spec.js +0 -215
  179. package/dist/queries/getLocalizedSortProperty.spec.js.map +0 -1
  180. package/dist/utilities/transform.spec.js +0 -479
  181. package/dist/utilities/transform.spec.js.map +0 -1
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ import { createGlobal } from './createGlobal.js';
9
9
  import { createGlobalVersion } from './createGlobalVersion.js';
10
10
  import { createMigration } from './createMigration.js';
11
11
  import { createVersion } from './createVersion.js';
12
+ import { deleteBranchGlobal } from './deleteBranchGlobal.js';
12
13
  import { deleteMany } from './deleteMany.js';
13
14
  import { deleteOne } from './deleteOne.js';
14
15
  import { deleteVersions } from './deleteVersions.js';
@@ -32,6 +33,7 @@ import { updateMany } from './updateMany.js';
32
33
  import { updateOne } from './updateOne.js';
33
34
  import { updateVersion } from './updateVersion.js';
34
35
  import { upsert } from './upsert.js';
36
+ import { upsertBranchGlobalChange } from './upsertBranchGlobalChange.js';
35
37
  export function mongooseAdapter({ afterCreateConnection, afterOpenConnection, allowAdditionalKeys = false, allowIDOnCreate = false, autoPluralization = true, bulkOperationsSingleTransaction = false, collation, collectionsSchemaOptions = {}, connectOptions, disableFallbackSort = false, disableIndexHints = false, ensureIndexes = false, migrationDir: migrationDirArg, mongoMemoryServer, prodMigrations, transactionOptions = {}, url, useAlternativeDropDatabase = false, useBigIntForNumberIDs = false, useJoinAggregations = true, usePipelineInSortLookup = true }) {
36
38
  function adapter({ payload }) {
37
39
  const migrationDir = findMigrationDir(migrationDirArg);
@@ -76,6 +78,7 @@ export function mongooseAdapter({ afterCreateConnection, afterOpenConnection, al
76
78
  createMigration,
77
79
  createVersion,
78
80
  defaultIDType: 'text',
81
+ deleteBranchGlobal,
79
82
  deleteMany,
80
83
  deleteOne,
81
84
  deleteVersions,
@@ -100,6 +103,7 @@ export function mongooseAdapter({ afterCreateConnection, afterOpenConnection, al
100
103
  updateOne,
101
104
  updateVersion,
102
105
  upsert,
106
+ upsertBranchGlobalChange,
103
107
  useAlternativeDropDatabase,
104
108
  useBigIntForNumberIDs,
105
109
  useJoinAggregations,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollationOptions, TransactionOptions } from 'mongodb'\nimport type { MongoMemoryReplSet } from 'mongodb-memory-server'\nimport type {\n ClientSession,\n Connection,\n ConnectOptions,\n QueryOptions,\n SchemaOptions,\n} from 'mongoose'\nimport type {\n BaseDatabaseAdapter,\n CollectionSlug,\n DatabaseAdapterObj,\n JsonObject,\n Payload,\n TypeWithVersion,\n UpdateGlobalArgs,\n UpdateGlobalVersionArgs,\n UpdateOneArgs,\n UpdateVersionArgs,\n} from 'payload'\n\nimport mongoose from 'mongoose'\nimport { createDatabaseAdapter, defaultBeginTransaction, findMigrationDir } from 'payload'\n\nimport type {\n CollectionModel,\n GlobalModel,\n MigrateDownArgs,\n MigrateUpArgs,\n MongooseMigration,\n} from './types.js'\n\nimport { connect } from './connect.js'\nimport { count } from './count.js'\nimport { countGlobalVersions } from './countGlobalVersions.js'\nimport { countVersions } from './countVersions.js'\nimport { create } from './create.js'\nimport { createGlobal } from './createGlobal.js'\nimport { createGlobalVersion } from './createGlobalVersion.js'\nimport { createMigration } from './createMigration.js'\nimport { createVersion } from './createVersion.js'\nimport { deleteMany } from './deleteMany.js'\nimport { deleteOne } from './deleteOne.js'\nimport { deleteVersions } from './deleteVersions.js'\nimport { destroy } from './destroy.js'\nimport { find } from './find.js'\nimport { findDistinct } from './findDistinct.js'\nimport { findGlobal } from './findGlobal.js'\nimport { findGlobalVersions } from './findGlobalVersions.js'\nimport { findOne } from './findOne.js'\nimport { findVersions } from './findVersions.js'\nimport { init } from './init.js'\nimport { migrateFresh } from './migrateFresh.js'\nimport { queryDrafts } from './queryDrafts.js'\nimport { beginTransaction } from './transactions/beginTransaction.js'\nimport { commitTransaction } from './transactions/commitTransaction.js'\nimport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nimport { updateGlobal } from './updateGlobal.js'\nimport { updateGlobalVersion } from './updateGlobalVersion.js'\nimport { updateJobs } from './updateJobs.js'\nimport { updateMany } from './updateMany.js'\nimport { updateOne } from './updateOne.js'\nimport { updateVersion } from './updateVersion.js'\nimport { upsert } from './upsert.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport interface Args {\n afterCreateConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n afterOpenConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n /**\n * By default, Payload strips all additional keys from MongoDB data that don't exist\n * in the Payload schema. If you have some data that you want to include to the result\n * but it doesn't exist in Payload, you can enable this flag\n * @default false\n */\n allowAdditionalKeys?: boolean\n /**\n * Enable this flag if you want to thread your own ID to create operation data, for example:\n * ```ts\n * import { Types } from 'mongoose'\n *\n * const id = new Types.ObjectId().toHexString()\n * const doc = await payload.create({ collection: 'posts', data: {id, title: \"my title\"}})\n * assertEq(doc.id, id)\n * ```\n */\n allowIDOnCreate?: boolean\n /** Set to false to disable auto-pluralization of collection names, Defaults to true */\n autoPluralization?: boolean\n /**\n * When true, bulk operations will process documents one at a time\n * in separate transactions instead of all at once in a single transaction.\n * Useful for avoiding transaction limitations with large datasets in DocumentDB and Cosmos DB.\n *\n * @default false\n */\n bulkOperationsSingleTransaction?: boolean\n\n /**\n * If enabled, collation allows for language-specific rules for string comparison.\n * This configuration can include the following options:\n *\n * - `strength` (number): Comparison level (1: Primary, 2: Secondary, 3: Tertiary (default), 4: Quaternary, 5: Identical)\n * - `caseLevel` (boolean): Include case comparison at strength level 1 or 2.\n * - `caseFirst` (string): Sort order of case differences during tertiary level comparisons (\"upper\", \"lower\", \"off\").\n * - `numericOrdering` (boolean): Compare numeric strings as numbers.\n * - `alternate` (string): Consider whitespace and punctuation as base characters (\"non-ignorable\", \"shifted\").\n * - `maxVariable` (string): Characters considered ignorable when `alternate` is \"shifted\" (\"punct\", \"space\").\n * - `backwards` (boolean): Sort strings with diacritics from back of the string.\n * - `normalization` (boolean): Check if text requires normalization and perform normalization.\n *\n * Available on MongoDB version 3.4 and up.\n * The locale that gets passed is your current project's locale but defaults to \"en\".\n *\n * Example:\n * {\n * strength: 3\n * }\n *\n * Defaults to disabled.\n */\n collation?: Omit<CollationOptions, 'locale'>\n\n collectionsSchemaOptions?: Partial<Record<CollectionSlug, SchemaOptions>>\n /** Extra configuration options */\n connectOptions?: ConnectOptions\n /**\n * We add a secondary sort based on `createdAt` to ensure that results are always returned in the same order when sorting by a non-unique field.\n * This is because MongoDB does not guarantee the order of results, however in very large datasets this could affect performance.\n *\n * Set to `true` to disable this behaviour.\n */\n disableFallbackSort?: boolean\n /** Set to true to disable hinting to MongoDB to use 'id' as index. This is currently done when counting documents for pagination. Disabling this optimization might fix some problems with AWS DocumentDB. Defaults to false */\n disableIndexHints?: boolean\n /**\n * Set to `true` to ensure that indexes are ready before completing connection.\n * NOTE: not recommended for production. This can slow down the initialization of Payload.\n */\n ensureIndexes?: boolean\n migrationDir?: string\n /**\n * typed as any to avoid dependency\n */\n mongoMemoryServer?: MongoMemoryReplSet\n prodMigrations?: MongooseMigration[]\n\n transactionOptions?: false | TransactionOptions\n\n /** The URL to connect to MongoDB or false to start payload and prevent connecting */\n url: false | string\n\n /**\n * Set to `true` to use an alternative `dropDatabase` implementation that calls `collection.deleteMany({})` on every collection instead of sending a raw `dropDatabase` command.\n * Payload only uses `dropDatabase` for testing purposes.\n * @default false\n */\n useAlternativeDropDatabase?: boolean\n\n /**\n * Set to `true` to use `BigInt` for custom ID fields of type `'number'`.\n * Useful for databases that don't support `double` or `int32` IDs.\n * @default false\n */\n useBigIntForNumberIDs?: boolean\n /**\n * Set to `false` to disable join aggregations (which use correlated subqueries) and instead populate join fields via multiple `find` queries.\n * @default true\n */\n useJoinAggregations?: boolean\n /**\n * Set to `false` to disable the use of `pipeline` in the `$lookup` aggregation in sorting.\n * @default true\n */\n usePipelineInSortLookup?: boolean\n}\n\nexport type MongooseAdapter = {\n afterCreateConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n afterOpenConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n bulkOperationsSingleTransaction: boolean\n collections: {\n [slug: string]: CollectionModel\n }\n connection: Connection\n ensureIndexes: boolean\n globals: GlobalModel\n mongoMemoryServer: MongoMemoryReplSet\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n sessions: Record<number | string, ClientSession>\n useAlternativeDropDatabase: boolean\n useBigIntForNumberIDs: boolean\n useJoinAggregations: boolean\n usePipelineInSortLookup: boolean\n versions: {\n [slug: string]: CollectionModel\n }\n} & Args &\n BaseDatabaseAdapter\n\ndeclare module 'payload' {\n export interface DatabaseAdapter\n extends Omit<BaseDatabaseAdapter, 'sessions'>,\n Omit<Args, 'migrationDir'> {\n collections: {\n [slug: string]: CollectionModel\n }\n connection: Connection\n ensureIndexes: boolean\n globals: GlobalModel\n mongoMemoryServer: MongoMemoryReplSet\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n sessions: Record<number | string, ClientSession>\n transactionOptions: TransactionOptions\n updateGlobal: <T extends Record<string, unknown>>(\n args: { options?: QueryOptions } & UpdateGlobalArgs<T>,\n ) => Promise<T>\n updateGlobalVersion: <T extends JsonObject = JsonObject>(\n args: { options?: QueryOptions } & UpdateGlobalVersionArgs<T>,\n ) => Promise<TypeWithVersion<T>>\n\n updateOne: (args: { options?: QueryOptions } & UpdateOneArgs) => Promise<Document>\n updateVersion: <T extends JsonObject = JsonObject>(\n args: { options?: QueryOptions } & UpdateVersionArgs<T>,\n ) => Promise<TypeWithVersion<T>>\n useAlternativeDropDatabase: boolean\n useBigIntForNumberIDs: boolean\n useJoinAggregations: boolean\n usePipelineInSortLookup: boolean\n versions: {\n [slug: string]: CollectionModel\n }\n }\n}\n\nexport function mongooseAdapter({\n afterCreateConnection,\n afterOpenConnection,\n allowAdditionalKeys = false,\n allowIDOnCreate = false,\n autoPluralization = true,\n bulkOperationsSingleTransaction = false,\n collation,\n collectionsSchemaOptions = {},\n connectOptions,\n disableFallbackSort = false,\n disableIndexHints = false,\n ensureIndexes = false,\n migrationDir: migrationDirArg,\n mongoMemoryServer,\n prodMigrations,\n transactionOptions = {},\n url,\n useAlternativeDropDatabase = false,\n useBigIntForNumberIDs = false,\n useJoinAggregations = true,\n usePipelineInSortLookup = true,\n}: Args): DatabaseAdapterObj {\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(migrationDirArg)\n mongoose.set('strictQuery', false)\n\n return createDatabaseAdapter<MongooseAdapter>({\n name: 'mongoose',\n\n // Mongoose-specific\n afterCreateConnection,\n afterOpenConnection,\n autoPluralization,\n bulkOperationsSingleTransaction,\n collation,\n collections: {},\n // @ts-expect-error initialize without a connection\n connection: undefined,\n connectOptions: connectOptions || {},\n disableIndexHints,\n ensureIndexes,\n // @ts-expect-error don't have globals model yet\n globals: undefined,\n // @ts-expect-error Should not be required\n mongoMemoryServer,\n sessions: {},\n transactionOptions: transactionOptions === false ? undefined : transactionOptions,\n updateJobs,\n updateMany,\n url,\n versions: {},\n // DatabaseAdapter\n allowAdditionalKeys,\n allowIDOnCreate,\n beginTransaction: transactionOptions === false ? defaultBeginTransaction() : beginTransaction,\n collectionsSchemaOptions,\n commitTransaction,\n connect,\n count,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createMigration,\n createVersion,\n defaultIDType: 'text',\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n disableFallbackSort,\n find,\n findDistinct,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n init,\n migrateFresh,\n migrationDir,\n packageName: '@payloadcms/db-mongodb',\n payload,\n prodMigrations,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n upsert,\n useAlternativeDropDatabase,\n useBigIntForNumberIDs,\n useJoinAggregations,\n usePipelineInSortLookup,\n })\n }\n\n return {\n name: 'mongoose',\n allowIDOnCreate,\n defaultIDType: 'text',\n init: adapter,\n }\n}\n\nexport { compatibilityOptions } from './utilities/compatibilityOptions.js'\n"],"names":["mongoose","createDatabaseAdapter","defaultBeginTransaction","findMigrationDir","connect","count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createMigration","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findDistinct","findGlobal","findGlobalVersions","findOne","findVersions","init","migrateFresh","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateGlobal","updateGlobalVersion","updateJobs","updateMany","updateOne","updateVersion","upsert","mongooseAdapter","afterCreateConnection","afterOpenConnection","allowAdditionalKeys","allowIDOnCreate","autoPluralization","bulkOperationsSingleTransaction","collation","collectionsSchemaOptions","connectOptions","disableFallbackSort","disableIndexHints","ensureIndexes","migrationDir","migrationDirArg","mongoMemoryServer","prodMigrations","transactionOptions","url","useAlternativeDropDatabase","useBigIntForNumberIDs","useJoinAggregations","usePipelineInSortLookup","adapter","payload","set","name","collections","connection","undefined","globals","sessions","versions","defaultIDType","packageName","compatibilityOptions"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { CollationOptions, TransactionOptions } from 'mongodb'\nimport type { MongoMemoryReplSet } from 'mongodb-memory-server'\nimport type {\n ClientSession,\n Connection,\n ConnectOptions,\n QueryOptions,\n SchemaOptions,\n} from 'mongoose'\nimport type {\n BaseDatabaseAdapter,\n CollectionSlug,\n DatabaseAdapterObj,\n JsonObject,\n Payload,\n TypeWithVersion,\n UpdateGlobalArgs,\n UpdateGlobalVersionArgs,\n UpdateOneArgs,\n UpdateVersionArgs,\n} from 'payload'\n\nimport mongoose from 'mongoose'\nimport { createDatabaseAdapter, defaultBeginTransaction, findMigrationDir } from 'payload'\n\nimport type {\n CollectionModel,\n GlobalModel,\n MigrateDownArgs,\n MigrateUpArgs,\n MongooseMigration,\n} from './types.js'\n\nimport { connect } from './connect.js'\nimport { count } from './count.js'\nimport { countGlobalVersions } from './countGlobalVersions.js'\nimport { countVersions } from './countVersions.js'\nimport { create } from './create.js'\nimport { createGlobal } from './createGlobal.js'\nimport { createGlobalVersion } from './createGlobalVersion.js'\nimport { createMigration } from './createMigration.js'\nimport { createVersion } from './createVersion.js'\nimport { deleteBranchGlobal } from './deleteBranchGlobal.js'\nimport { deleteMany } from './deleteMany.js'\nimport { deleteOne } from './deleteOne.js'\nimport { deleteVersions } from './deleteVersions.js'\nimport { destroy } from './destroy.js'\nimport { find } from './find.js'\nimport { findDistinct } from './findDistinct.js'\nimport { findGlobal } from './findGlobal.js'\nimport { findGlobalVersions } from './findGlobalVersions.js'\nimport { findOne } from './findOne.js'\nimport { findVersions } from './findVersions.js'\nimport { init } from './init.js'\nimport { migrateFresh } from './migrateFresh.js'\nimport { queryDrafts } from './queryDrafts.js'\nimport { beginTransaction } from './transactions/beginTransaction.js'\nimport { commitTransaction } from './transactions/commitTransaction.js'\nimport { rollbackTransaction } from './transactions/rollbackTransaction.js'\nimport { updateGlobal } from './updateGlobal.js'\nimport { updateGlobalVersion } from './updateGlobalVersion.js'\nimport { updateJobs } from './updateJobs.js'\nimport { updateMany } from './updateMany.js'\nimport { updateOne } from './updateOne.js'\nimport { updateVersion } from './updateVersion.js'\nimport { upsert } from './upsert.js'\nimport { upsertBranchGlobalChange } from './upsertBranchGlobalChange.js'\n\nexport type { MigrateDownArgs, MigrateUpArgs } from './types.js'\n\nexport interface Args {\n afterCreateConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n afterOpenConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n /**\n * By default, Payload strips all additional keys from MongoDB data that don't exist\n * in the Payload schema. If you have some data that you want to include to the result\n * but it doesn't exist in Payload, you can enable this flag\n * @default false\n */\n allowAdditionalKeys?: boolean\n /**\n * Enable this flag if you want to thread your own ID to create operation data, for example:\n * ```ts\n * import { Types } from 'mongoose'\n *\n * const id = new Types.ObjectId().toHexString()\n * const doc = await payload.create({ collection: 'posts', data: {id, title: \"my title\"}})\n * assertEq(doc.id, id)\n * ```\n */\n allowIDOnCreate?: boolean\n /** Set to false to disable auto-pluralization of collection names, Defaults to true */\n autoPluralization?: boolean\n /**\n * When true, bulk operations will process documents one at a time\n * in separate transactions instead of all at once in a single transaction.\n * Useful for avoiding transaction limitations with large datasets in DocumentDB and Cosmos DB.\n *\n * @default false\n */\n bulkOperationsSingleTransaction?: boolean\n\n /**\n * If enabled, collation allows for language-specific rules for string comparison.\n * This configuration can include the following options:\n *\n * - `strength` (number): Comparison level (1: Primary, 2: Secondary, 3: Tertiary (default), 4: Quaternary, 5: Identical)\n * - `caseLevel` (boolean): Include case comparison at strength level 1 or 2.\n * - `caseFirst` (string): Sort order of case differences during tertiary level comparisons (\"upper\", \"lower\", \"off\").\n * - `numericOrdering` (boolean): Compare numeric strings as numbers.\n * - `alternate` (string): Consider whitespace and punctuation as base characters (\"non-ignorable\", \"shifted\").\n * - `maxVariable` (string): Characters considered ignorable when `alternate` is \"shifted\" (\"punct\", \"space\").\n * - `backwards` (boolean): Sort strings with diacritics from back of the string.\n * - `normalization` (boolean): Check if text requires normalization and perform normalization.\n *\n * Available on MongoDB version 3.4 and up.\n * The locale that gets passed is your current project's locale but defaults to \"en\".\n *\n * Example:\n * {\n * strength: 3\n * }\n *\n * Defaults to disabled.\n */\n collation?: Omit<CollationOptions, 'locale'>\n\n collectionsSchemaOptions?: Partial<Record<CollectionSlug, SchemaOptions>>\n /** Extra configuration options */\n connectOptions?: ConnectOptions\n /**\n * We add a secondary sort based on `createdAt` to ensure that results are always returned in the same order when sorting by a non-unique field.\n * This is because MongoDB does not guarantee the order of results, however in very large datasets this could affect performance.\n *\n * Set to `true` to disable this behaviour.\n */\n disableFallbackSort?: boolean\n /** Set to true to disable hinting to MongoDB to use 'id' as index. This is currently done when counting documents for pagination. Disabling this optimization might fix some problems with AWS DocumentDB. Defaults to false */\n disableIndexHints?: boolean\n /**\n * Set to `true` to ensure that indexes are ready before completing connection.\n * NOTE: not recommended for production. This can slow down the initialization of Payload.\n */\n ensureIndexes?: boolean\n migrationDir?: string\n /**\n * typed as any to avoid dependency\n */\n mongoMemoryServer?: MongoMemoryReplSet\n prodMigrations?: MongooseMigration[]\n\n transactionOptions?: false | TransactionOptions\n\n /** The URL to connect to MongoDB or false to start payload and prevent connecting */\n url: false | string\n\n /**\n * Set to `true` to use an alternative `dropDatabase` implementation that calls `collection.deleteMany({})` on every collection instead of sending a raw `dropDatabase` command.\n * Payload only uses `dropDatabase` for testing purposes.\n * @default false\n */\n useAlternativeDropDatabase?: boolean\n\n /**\n * Set to `true` to use `BigInt` for custom ID fields of type `'number'`.\n * Useful for databases that don't support `double` or `int32` IDs.\n * @default false\n */\n useBigIntForNumberIDs?: boolean\n /**\n * Set to `false` to disable join aggregations (which use correlated subqueries) and instead populate join fields via multiple `find` queries.\n * @default true\n */\n useJoinAggregations?: boolean\n /**\n * Set to `false` to disable the use of `pipeline` in the `$lookup` aggregation in sorting.\n * @default true\n */\n usePipelineInSortLookup?: boolean\n}\n\nexport type MongooseAdapter = {\n afterCreateConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n afterOpenConnection?: (adapter: MongooseAdapter) => Promise<void> | void\n bulkOperationsSingleTransaction: boolean\n collections: {\n [slug: string]: CollectionModel\n }\n connection: Connection\n ensureIndexes: boolean\n globals: GlobalModel\n mongoMemoryServer: MongoMemoryReplSet\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n sessions: Record<number | string, ClientSession>\n useAlternativeDropDatabase: boolean\n useBigIntForNumberIDs: boolean\n useJoinAggregations: boolean\n usePipelineInSortLookup: boolean\n versions: {\n [slug: string]: CollectionModel\n }\n} & Args &\n BaseDatabaseAdapter\n\ndeclare module 'payload' {\n export interface DatabaseAdapter\n extends Omit<BaseDatabaseAdapter, 'sessions'>,\n Omit<Args, 'migrationDir'> {\n collections: {\n [slug: string]: CollectionModel\n }\n connection: Connection\n ensureIndexes: boolean\n globals: GlobalModel\n mongoMemoryServer: MongoMemoryReplSet\n prodMigrations?: {\n down: (args: MigrateDownArgs) => Promise<void>\n name: string\n up: (args: MigrateUpArgs) => Promise<void>\n }[]\n sessions: Record<number | string, ClientSession>\n transactionOptions: TransactionOptions\n updateGlobal: <T extends Record<string, unknown>>(\n args: { options?: QueryOptions } & UpdateGlobalArgs<T>,\n ) => Promise<T>\n updateGlobalVersion: <T extends JsonObject = JsonObject>(\n args: { options?: QueryOptions } & UpdateGlobalVersionArgs<T>,\n ) => Promise<TypeWithVersion<T>>\n\n updateOne: (args: { options?: QueryOptions } & UpdateOneArgs) => Promise<Document>\n updateVersion: <T extends JsonObject = JsonObject>(\n args: { options?: QueryOptions } & UpdateVersionArgs<T>,\n ) => Promise<TypeWithVersion<T>>\n useAlternativeDropDatabase: boolean\n useBigIntForNumberIDs: boolean\n useJoinAggregations: boolean\n usePipelineInSortLookup: boolean\n versions: {\n [slug: string]: CollectionModel\n }\n }\n}\n\nexport function mongooseAdapter({\n afterCreateConnection,\n afterOpenConnection,\n allowAdditionalKeys = false,\n allowIDOnCreate = false,\n autoPluralization = true,\n bulkOperationsSingleTransaction = false,\n collation,\n collectionsSchemaOptions = {},\n connectOptions,\n disableFallbackSort = false,\n disableIndexHints = false,\n ensureIndexes = false,\n migrationDir: migrationDirArg,\n mongoMemoryServer,\n prodMigrations,\n transactionOptions = {},\n url,\n useAlternativeDropDatabase = false,\n useBigIntForNumberIDs = false,\n useJoinAggregations = true,\n usePipelineInSortLookup = true,\n}: Args): DatabaseAdapterObj {\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(migrationDirArg)\n mongoose.set('strictQuery', false)\n\n return createDatabaseAdapter<MongooseAdapter>({\n name: 'mongoose',\n\n // Mongoose-specific\n afterCreateConnection,\n afterOpenConnection,\n autoPluralization,\n bulkOperationsSingleTransaction,\n collation,\n collections: {},\n // @ts-expect-error initialize without a connection\n connection: undefined,\n connectOptions: connectOptions || {},\n disableIndexHints,\n ensureIndexes,\n // @ts-expect-error don't have globals model yet\n globals: undefined,\n // @ts-expect-error Should not be required\n mongoMemoryServer,\n sessions: {},\n transactionOptions: transactionOptions === false ? undefined : transactionOptions,\n updateJobs,\n updateMany,\n url,\n versions: {},\n // DatabaseAdapter\n allowAdditionalKeys,\n allowIDOnCreate,\n beginTransaction: transactionOptions === false ? defaultBeginTransaction() : beginTransaction,\n collectionsSchemaOptions,\n commitTransaction,\n connect,\n count,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createMigration,\n createVersion,\n defaultIDType: 'text',\n deleteBranchGlobal,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n disableFallbackSort,\n find,\n findDistinct,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n init,\n migrateFresh,\n migrationDir,\n packageName: '@payloadcms/db-mongodb',\n payload,\n prodMigrations,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n upsert,\n upsertBranchGlobalChange,\n useAlternativeDropDatabase,\n useBigIntForNumberIDs,\n useJoinAggregations,\n usePipelineInSortLookup,\n })\n }\n\n return {\n name: 'mongoose',\n allowIDOnCreate,\n defaultIDType: 'text',\n init: adapter,\n }\n}\n\nexport { compatibilityOptions } from './utilities/compatibilityOptions.js'\n"],"names":["mongoose","createDatabaseAdapter","defaultBeginTransaction","findMigrationDir","connect","count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createMigration","createVersion","deleteBranchGlobal","deleteMany","deleteOne","deleteVersions","destroy","find","findDistinct","findGlobal","findGlobalVersions","findOne","findVersions","init","migrateFresh","queryDrafts","beginTransaction","commitTransaction","rollbackTransaction","updateGlobal","updateGlobalVersion","updateJobs","updateMany","updateOne","updateVersion","upsert","upsertBranchGlobalChange","mongooseAdapter","afterCreateConnection","afterOpenConnection","allowAdditionalKeys","allowIDOnCreate","autoPluralization","bulkOperationsSingleTransaction","collation","collectionsSchemaOptions","connectOptions","disableFallbackSort","disableIndexHints","ensureIndexes","migrationDir","migrationDirArg","mongoMemoryServer","prodMigrations","transactionOptions","url","useAlternativeDropDatabase","useBigIntForNumberIDs","useJoinAggregations","usePipelineInSortLookup","adapter","payload","set","name","collections","connection","undefined","globals","sessions","versions","defaultIDType","packageName","compatibilityOptions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAmB9D,eAAO,MAAM,IAAI,EAAE,IAiGlB,CAAA"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAoB9D,eAAO,MAAM,IAAI,EAAE,IAqHlB,CAAA"}
package/dist/init.js CHANGED
@@ -4,6 +4,7 @@ import { buildVersionCollectionFields, buildVersionCompoundIndexes, buildVersion
4
4
  import { buildCollectionSchema } from './models/buildCollectionSchema.js';
5
5
  import { buildGlobalModel } from './models/buildGlobalModel.js';
6
6
  import { buildSchema } from './models/buildSchema.js';
7
+ import { createMongoSchemaBuildContext } from './models/schemaBuildContext.js';
7
8
  import { getBuildQueryPlugin } from './queries/getBuildQueryPlugin.js';
8
9
  import { getDBName } from './utilities/getDBName.js';
9
10
  export const init = async function init() {
@@ -13,76 +14,97 @@ export const init = async function init() {
13
14
  if (this.afterCreateConnection) {
14
15
  await this.afterCreateConnection(this);
15
16
  }
16
- this.payload.config.collections.forEach((collection)=>{
17
- const schemaOptions = this.collectionsSchemaOptions?.[collection.slug];
18
- const schema = buildCollectionSchema(collection, this.payload, schemaOptions);
19
- if (collection.versions) {
20
- const versionModelName = getDBName({
21
- config: collection,
22
- versions: true
23
- });
24
- const versionCollectionFields = buildVersionCollectionFields(this.payload.config, collection);
25
- const versionSchema = buildSchema({
26
- buildSchemaOptions: {
27
- disableUnique: true,
28
- draftsEnabled: true,
29
- indexSortableFields: this.payload.config.indexSortableFields,
30
- options: {
31
- minimize: false,
32
- timestamps: false,
33
- ...schemaOptions
34
- }
35
- },
36
- compoundIndexes: buildVersionCompoundIndexes({
37
- indexes: collection.sanitizedIndexes
38
- }),
39
- configFields: versionCollectionFields,
40
- payload: this.payload
41
- });
42
- versionSchema.plugin(paginate, {
43
- useEstimatedCount: true
44
- }).plugin(getBuildQueryPlugin({
45
- collectionSlug: collection.slug,
46
- versionsFields: buildVersionCollectionFields(this.payload.config, collection, true)
47
- }));
48
- const versionCollectionName = this.autoPluralization === true && !collection.dbName ? undefined : versionModelName;
49
- this.versions[collection.slug] = this.connection.model(versionModelName, versionSchema, versionCollectionName);
50
- }
51
- const modelName = getDBName({
52
- config: collection
53
- });
54
- const collectionName = this.autoPluralization === true && !collection.dbName ? undefined : modelName;
55
- this.collections[collection.slug] = this.connection.model(modelName, schema, collectionName);
17
+ const schemaBuildContext = createMongoSchemaBuildContext({
18
+ connection: this.connection
56
19
  });
57
- this.globals = buildGlobalModel(this);
58
- this.payload.config.globals.forEach((global)=>{
59
- if (global.versions) {
60
- const versionModelName = getDBName({
61
- config: global,
62
- versions: true
20
+ try {
21
+ this.payload.config.collections.forEach((collection)=>{
22
+ const schemaOptions = this.collectionsSchemaOptions?.[collection.slug];
23
+ const schema = buildCollectionSchema({
24
+ collection,
25
+ payload: this.payload,
26
+ schemaBuildContext,
27
+ schemaOptions
63
28
  });
64
- const versionGlobalFields = buildVersionGlobalFields(this.payload.config, global);
65
- const versionSchema = buildSchema({
66
- buildSchemaOptions: {
67
- disableUnique: true,
68
- draftsEnabled: true,
69
- indexSortableFields: this.payload.config.indexSortableFields,
70
- options: {
71
- minimize: false,
72
- timestamps: false
73
- }
74
- },
75
- configFields: versionGlobalFields,
76
- payload: this.payload
29
+ if (collection.versions) {
30
+ const versionModelName = getDBName({
31
+ config: collection,
32
+ versions: true
33
+ });
34
+ const versionCollectionFields = buildVersionCollectionFields(this.payload.config, collection);
35
+ const versionSchema = buildSchema({
36
+ buildSchemaOptions: {
37
+ disableUnique: true,
38
+ draftsEnabled: true,
39
+ indexSortableFields: this.payload.config.indexSortableFields,
40
+ options: {
41
+ minimize: false,
42
+ timestamps: false,
43
+ ...schemaOptions
44
+ }
45
+ },
46
+ compoundIndexes: buildVersionCompoundIndexes({
47
+ indexes: collection.sanitizedIndexes
48
+ }),
49
+ configFields: versionCollectionFields,
50
+ isVersion: true,
51
+ payload: this.payload,
52
+ schemaBuildContext,
53
+ schemaPath: `collection:${collection.slug}`
54
+ });
55
+ versionSchema.plugin(paginate, {
56
+ useEstimatedCount: true
57
+ }).plugin(getBuildQueryPlugin({
58
+ collectionSlug: collection.slug,
59
+ versionsFields: buildVersionCollectionFields(this.payload.config, collection, true)
60
+ }));
61
+ const versionCollectionName = this.autoPluralization === true && !collection.dbName ? undefined : versionModelName;
62
+ this.versions[collection.slug] = this.connection.model(versionModelName, versionSchema, versionCollectionName);
63
+ }
64
+ const modelName = getDBName({
65
+ config: collection
77
66
  });
78
- versionSchema.plugin(paginate, {
79
- useEstimatedCount: true
80
- }).plugin(getBuildQueryPlugin({
81
- versionsFields: buildVersionGlobalFields(this.payload.config, global, true)
82
- }));
83
- this.versions[global.slug] = this.connection.model(versionModelName, versionSchema, versionModelName);
84
- }
85
- });
67
+ const collectionName = this.autoPluralization === true && !collection.dbName ? undefined : modelName;
68
+ this.collections[collection.slug] = this.connection.model(modelName, schema, collectionName);
69
+ });
70
+ this.globals = buildGlobalModel({
71
+ adapter: this,
72
+ schemaBuildContext
73
+ });
74
+ this.payload.config.globals.forEach((global)=>{
75
+ if (global.versions) {
76
+ const versionModelName = getDBName({
77
+ config: global,
78
+ versions: true
79
+ });
80
+ const versionGlobalFields = buildVersionGlobalFields(this.payload.config, global);
81
+ const versionSchema = buildSchema({
82
+ buildSchemaOptions: {
83
+ disableUnique: true,
84
+ draftsEnabled: true,
85
+ indexSortableFields: this.payload.config.indexSortableFields,
86
+ options: {
87
+ minimize: false,
88
+ timestamps: false
89
+ }
90
+ },
91
+ configFields: versionGlobalFields,
92
+ isVersion: true,
93
+ payload: this.payload,
94
+ schemaBuildContext,
95
+ schemaPath: `global:${global.slug}`
96
+ });
97
+ versionSchema.plugin(paginate, {
98
+ useEstimatedCount: true
99
+ }).plugin(getBuildQueryPlugin({
100
+ versionsFields: buildVersionGlobalFields(this.payload.config, global, true)
101
+ }));
102
+ this.versions[global.slug] = this.connection.model(versionModelName, versionSchema, versionModelName);
103
+ }
104
+ });
105
+ } finally{
106
+ schemaBuildContext.clear();
107
+ }
86
108
  };
87
109
 
88
110
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/init.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport mongoose from 'mongoose'\nimport paginate from 'mongoose-paginate-v2'\nimport {\n buildVersionCollectionFields,\n buildVersionCompoundIndexes,\n buildVersionGlobalFields,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\nimport type { CollectionModel, GlobalModel } from './types.js'\n\nimport { buildCollectionSchema } from './models/buildCollectionSchema.js'\nimport { buildGlobalModel } from './models/buildGlobalModel.js'\nimport { buildSchema } from './models/buildSchema.js'\nimport { getBuildQueryPlugin } from './queries/getBuildQueryPlugin.js'\nimport { getDBName } from './utilities/getDBName.js'\n\nexport const init: Init = async function init(this: MongooseAdapter) {\n // Always create a scoped, **unopened** connection object\n // (no URI here; models compile per-connection and do not require an open socket)\n this.connection ??= mongoose.createConnection()\n\n if (this.afterCreateConnection) {\n await this.afterCreateConnection(this)\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const schemaOptions = this.collectionsSchemaOptions?.[collection.slug]\n\n const schema = buildCollectionSchema(collection, this.payload, schemaOptions)\n if (collection.versions) {\n const versionModelName = getDBName({ config: collection, versions: true })\n\n const versionCollectionFields = buildVersionCollectionFields(this.payload.config, collection)\n\n const versionSchema = buildSchema({\n buildSchemaOptions: {\n disableUnique: true,\n draftsEnabled: true,\n indexSortableFields: this.payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: false,\n ...schemaOptions,\n },\n },\n compoundIndexes: buildVersionCompoundIndexes({ indexes: collection.sanitizedIndexes }),\n configFields: versionCollectionFields,\n payload: this.payload,\n })\n\n versionSchema.plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true }).plugin(\n getBuildQueryPlugin({\n collectionSlug: collection.slug,\n versionsFields: buildVersionCollectionFields(this.payload.config, collection, true),\n }),\n )\n\n const versionCollectionName =\n this.autoPluralization === true && !collection.dbName ? undefined : versionModelName\n\n this.versions[collection.slug] = this.connection.model(\n versionModelName,\n versionSchema,\n versionCollectionName,\n ) as unknown as CollectionModel\n }\n\n const modelName = getDBName({ config: collection })\n const collectionName =\n this.autoPluralization === true && !collection.dbName ? undefined : modelName\n\n this.collections[collection.slug] = this.connection.model<any>(\n modelName,\n schema,\n collectionName,\n ) as CollectionModel\n })\n\n this.globals = buildGlobalModel(this) as GlobalModel\n\n this.payload.config.globals.forEach((global) => {\n if (global.versions) {\n const versionModelName = getDBName({ config: global, versions: true })\n\n const versionGlobalFields = buildVersionGlobalFields(this.payload.config, global)\n\n const versionSchema = buildSchema({\n buildSchemaOptions: {\n disableUnique: true,\n draftsEnabled: true,\n indexSortableFields: this.payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: false,\n },\n },\n configFields: versionGlobalFields,\n payload: this.payload,\n })\n\n versionSchema.plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true }).plugin(\n getBuildQueryPlugin({\n versionsFields: buildVersionGlobalFields(this.payload.config, global, true),\n }),\n )\n\n this.versions[global.slug] = this.connection.model<any>(\n versionModelName,\n versionSchema,\n versionModelName,\n ) as CollectionModel\n }\n })\n}\n"],"names":["mongoose","paginate","buildVersionCollectionFields","buildVersionCompoundIndexes","buildVersionGlobalFields","buildCollectionSchema","buildGlobalModel","buildSchema","getBuildQueryPlugin","getDBName","init","connection","createConnection","afterCreateConnection","payload","config","collections","forEach","collection","schemaOptions","collectionsSchemaOptions","slug","schema","versions","versionModelName","versionCollectionFields","versionSchema","buildSchemaOptions","disableUnique","draftsEnabled","indexSortableFields","options","minimize","timestamps","compoundIndexes","indexes","sanitizedIndexes","configFields","plugin","useEstimatedCount","collectionSlug","versionsFields","versionCollectionName","autoPluralization","dbName","undefined","model","modelName","collectionName","globals","global","versionGlobalFields"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/init.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport mongoose from 'mongoose'\nimport paginate from 'mongoose-paginate-v2'\nimport {\n buildVersionCollectionFields,\n buildVersionCompoundIndexes,\n buildVersionGlobalFields,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\nimport type { CollectionModel, GlobalModel } from './types.js'\n\nimport { buildCollectionSchema } from './models/buildCollectionSchema.js'\nimport { buildGlobalModel } from './models/buildGlobalModel.js'\nimport { buildSchema } from './models/buildSchema.js'\nimport { createMongoSchemaBuildContext } from './models/schemaBuildContext.js'\nimport { getBuildQueryPlugin } from './queries/getBuildQueryPlugin.js'\nimport { getDBName } from './utilities/getDBName.js'\n\nexport const init: Init = async function init(this: MongooseAdapter) {\n // Always create a scoped, **unopened** connection object\n // (no URI here; models compile per-connection and do not require an open socket)\n this.connection ??= mongoose.createConnection()\n\n if (this.afterCreateConnection) {\n await this.afterCreateConnection(this)\n }\n\n const schemaBuildContext = createMongoSchemaBuildContext({ connection: this.connection })\n\n try {\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const schemaOptions = this.collectionsSchemaOptions?.[collection.slug]\n\n const schema = buildCollectionSchema({\n collection,\n payload: this.payload,\n schemaBuildContext,\n schemaOptions,\n })\n if (collection.versions) {\n const versionModelName = getDBName({ config: collection, versions: true })\n\n const versionCollectionFields = buildVersionCollectionFields(\n this.payload.config,\n collection,\n )\n\n const versionSchema = buildSchema({\n buildSchemaOptions: {\n disableUnique: true,\n draftsEnabled: true,\n indexSortableFields: this.payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: false,\n ...schemaOptions,\n },\n },\n compoundIndexes: buildVersionCompoundIndexes({ indexes: collection.sanitizedIndexes }),\n configFields: versionCollectionFields,\n isVersion: true,\n payload: this.payload,\n schemaBuildContext,\n schemaPath: `collection:${collection.slug}`,\n })\n\n versionSchema.plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true }).plugin(\n getBuildQueryPlugin({\n collectionSlug: collection.slug,\n versionsFields: buildVersionCollectionFields(this.payload.config, collection, true),\n }),\n )\n\n const versionCollectionName =\n this.autoPluralization === true && !collection.dbName ? undefined : versionModelName\n\n this.versions[collection.slug] = this.connection.model(\n versionModelName,\n versionSchema,\n versionCollectionName,\n ) as unknown as CollectionModel\n }\n\n const modelName = getDBName({ config: collection })\n const collectionName =\n this.autoPluralization === true && !collection.dbName ? undefined : modelName\n\n this.collections[collection.slug] = this.connection.model<any>(\n modelName,\n schema,\n collectionName,\n ) as CollectionModel\n })\n\n this.globals = buildGlobalModel({ adapter: this, schemaBuildContext }) as GlobalModel\n\n this.payload.config.globals.forEach((global) => {\n if (global.versions) {\n const versionModelName = getDBName({ config: global, versions: true })\n\n const versionGlobalFields = buildVersionGlobalFields(this.payload.config, global)\n\n const versionSchema = buildSchema({\n buildSchemaOptions: {\n disableUnique: true,\n draftsEnabled: true,\n indexSortableFields: this.payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: false,\n },\n },\n configFields: versionGlobalFields,\n isVersion: true,\n payload: this.payload,\n schemaBuildContext,\n schemaPath: `global:${global.slug}`,\n })\n\n versionSchema.plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true }).plugin(\n getBuildQueryPlugin({\n versionsFields: buildVersionGlobalFields(this.payload.config, global, true),\n }),\n )\n\n this.versions[global.slug] = this.connection.model<any>(\n versionModelName,\n versionSchema,\n versionModelName,\n ) as CollectionModel\n }\n })\n } finally {\n schemaBuildContext.clear()\n }\n}\n"],"names":["mongoose","paginate","buildVersionCollectionFields","buildVersionCompoundIndexes","buildVersionGlobalFields","buildCollectionSchema","buildGlobalModel","buildSchema","createMongoSchemaBuildContext","getBuildQueryPlugin","getDBName","init","connection","createConnection","afterCreateConnection","schemaBuildContext","payload","config","collections","forEach","collection","schemaOptions","collectionsSchemaOptions","slug","schema","versions","versionModelName","versionCollectionFields","versionSchema","buildSchemaOptions","disableUnique","draftsEnabled","indexSortableFields","options","minimize","timestamps","compoundIndexes","indexes","sanitizedIndexes","configFields","isVersion","schemaPath","plugin","useEstimatedCount","collectionSlug","versionsFields","versionCollectionName","autoPluralization","dbName","undefined","model","modelName","collectionName","globals","adapter","global","versionGlobalFields","clear"],"mappings":"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"}
@@ -1,8 +1,10 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { MongooseAdapter } from './index.js';
2
3
  /**
3
4
  * Drop the current database and run all migrate up functions
4
5
  */
5
- export declare function migrateFresh(this: MongooseAdapter, { forceAcceptWarning }: {
6
+ export declare function migrateFresh(this: MongooseAdapter, { forceAcceptWarning, shouldPrompt, }: {
6
7
  forceAcceptWarning?: boolean;
7
- }): Promise<void>;
8
+ shouldPrompt?: boolean;
9
+ }): Promise<MigrationResult>;
8
10
  //# sourceMappingURL=migrateFresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,EACrB,EAAE,kBAA0B,EAAE,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAgEf"}
1
+ {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,EACrB,EACE,kBAA0B,EAC1B,YAAmB,GACpB,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,eAAe,CAAC,CAkE1B"}
@@ -2,21 +2,28 @@ import { commitTransaction, initTransaction, killTransaction, readMigrationFiles
2
2
  import prompts from 'prompts';
3
3
  /**
4
4
  * Drop the current database and run all migrate up functions
5
- */ export async function migrateFresh({ forceAcceptWarning = false }) {
5
+ */ export async function migrateFresh({ forceAcceptWarning = false, shouldPrompt = true }) {
6
6
  const { payload } = this;
7
7
  if (!forceAcceptWarning) {
8
+ if (!shouldPrompt) {
9
+ return {
10
+ cancelled: true,
11
+ migrated: [],
12
+ rolledBack: []
13
+ };
14
+ }
8
15
  const { confirm: acceptWarning } = await prompts({
9
16
  name: 'confirm',
10
17
  type: 'confirm',
11
18
  initial: false,
12
19
  message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`
13
- }, {
14
- onCancel: ()=>{
15
- process.exit(0);
16
- }
17
20
  });
18
21
  if (!acceptWarning) {
19
- process.exit(0);
22
+ return {
23
+ cancelled: true,
24
+ migrated: [],
25
+ rolledBack: []
26
+ };
20
27
  }
21
28
  }
22
29
  payload.logger.info({
@@ -32,6 +39,7 @@ import prompts from 'prompts';
32
39
  const req = {
33
40
  payload
34
41
  };
42
+ const migrated = [];
35
43
  // Run all migrate up
36
44
  for (const migration of migrationFiles){
37
45
  payload.logger.info({
@@ -50,9 +58,11 @@ import prompts from 'prompts';
50
58
  name: migration.name,
51
59
  batch: 1
52
60
  },
61
+ overrideAccess: true,
53
62
  req
54
63
  });
55
64
  await commitTransaction(req);
65
+ migrated.push(migration.name);
56
66
  payload.logger.info({
57
67
  msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
58
68
  });
@@ -65,6 +75,11 @@ import prompts from 'prompts';
65
75
  throw err;
66
76
  }
67
77
  }
78
+ return {
79
+ batch: 1,
80
+ migrated,
81
+ rolledBack: []
82
+ };
68
83
  }
69
84
 
70
85
  //# sourceMappingURL=migrateFresh.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: MongooseAdapter,\n { forceAcceptWarning = false }: { forceAcceptWarning?: boolean },\n): Promise<void> {\n const { payload } = this\n\n if (!forceAcceptWarning) {\n const { confirm: acceptWarning } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!acceptWarning) {\n process.exit(0)\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.connection.dropDatabase()\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = { payload }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migration.name}. Rolling back.`,\n })\n throw err\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","migrateFresh","forceAcceptWarning","payload","confirm","acceptWarning","name","type","initial","message","onCancel","process","exit","logger","info","msg","connection","dropDatabase","migrationFiles","debug","length","req","migration","start","Date","now","up","create","collection","data","batch","err","error"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,kBAAkB,QAAQ,UAAS;AACjG,OAAOC,aAAa,UAAS;AAI7B;;CAEC,GACD,OAAO,eAAeC,aAEpB,EAAEC,qBAAqB,KAAK,EAAoC;IAEhE,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAI,CAACD,oBAAoB;QACvB,MAAM,EAAEE,SAASC,aAAa,EAAE,GAAG,MAAML,QACvC;YACEM,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G,GACA;YACEC,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,IAAI,CAACP,eAAe;YAClBM,QAAQC,IAAI,CAAC;QACf;IACF;IAEAT,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,UAAU,CAACC,YAAY;IAElC,MAAMC,iBAAiB,MAAMnB,mBAAmB;QAAEI;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM;QAAElB;IAAQ;IAEtB,qBAAqB;IACrB,KAAK,MAAMmB,aAAaJ,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUhB,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMiB,QAAQC,KAAKC,GAAG;YACtB,MAAM5B,gBAAgBwB;YACtB,MAAMC,UAAUI,EAAE,CAAC;gBAAEvB;gBAASkB;YAAI;YAClC,MAAMlB,QAAQwB,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJvB,MAAMgB,UAAUhB,IAAI;oBACpBwB,OAAO;gBACT;gBACAT;YACF;YAEA,MAAMzB,kBAAkByB;YAExBlB,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUhB,IAAI,CAAC,EAAE,EAAEkB,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOQ,KAAc;YACrB,MAAMjC,gBAAgBuB;YACtBlB,QAAQU,MAAM,CAACmB,KAAK,CAAC;gBACnBD;gBACAhB,KAAK,CAAC,wBAAwB,EAAEO,UAAUhB,IAAI,CAAC,eAAe,CAAC;YACjE;YACA,MAAMyB;QACR;IACF;AACF"}
1
+ {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import type { MigrationResult } from 'payload'\n\nimport { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: MongooseAdapter,\n {\n forceAcceptWarning = false,\n shouldPrompt = true,\n }: { forceAcceptWarning?: boolean; shouldPrompt?: boolean },\n): Promise<MigrationResult> {\n const { payload } = this\n\n if (!forceAcceptWarning) {\n if (!shouldPrompt) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n\n const { confirm: acceptWarning } = await prompts({\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n })\n\n if (!acceptWarning) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.connection.dropDatabase()\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = { payload }\n const migrated: string[] = []\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n overrideAccess: true,\n req,\n })\n\n await commitTransaction(req)\n migrated.push(migration.name)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migration.name}. Rolling back.`,\n })\n throw err\n }\n }\n\n return { batch: 1, migrated, rolledBack: [] }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","migrateFresh","forceAcceptWarning","shouldPrompt","payload","cancelled","migrated","rolledBack","confirm","acceptWarning","name","type","initial","message","logger","info","msg","connection","dropDatabase","migrationFiles","debug","length","req","migration","start","Date","now","up","create","collection","data","batch","overrideAccess","push","err","error"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,kBAAkB,QAAQ,UAAS;AACjG,OAAOC,aAAa,UAAS;AAI7B;;CAEC,GACD,OAAO,eAAeC,aAEpB,EACEC,qBAAqB,KAAK,EAC1BC,eAAe,IAAI,EACsC;IAE3D,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAI,CAACF,oBAAoB;QACvB,IAAI,CAACC,cAAc;YACjB,OAAO;gBAAEE,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;QAEA,MAAM,EAAEC,SAASC,aAAa,EAAE,GAAG,MAAMT,QAAQ;YAC/CU,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G;QAEA,IAAI,CAACJ,eAAe;YAClB,OAAO;gBAAEJ,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;IACF;IAEAH,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,UAAU,CAACC,YAAY;IAElC,MAAMC,iBAAiB,MAAMpB,mBAAmB;QAAEK;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM;QAAElB;IAAQ;IACtB,MAAME,WAAqB,EAAE;IAE7B,qBAAqB;IACrB,KAAK,MAAMiB,aAAaJ,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUb,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMc,QAAQC,KAAKC,GAAG;YACtB,MAAM7B,gBAAgByB;YACtB,MAAMC,UAAUI,EAAE,CAAC;gBAAEvB;gBAASkB;YAAI;YAClC,MAAMlB,QAAQwB,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJpB,MAAMa,UAAUb,IAAI;oBACpBqB,OAAO;gBACT;gBACAC,gBAAgB;gBAChBV;YACF;YAEA,MAAM1B,kBAAkB0B;YACxBhB,SAAS2B,IAAI,CAACV,UAAUb,IAAI;YAE5BN,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUb,IAAI,CAAC,EAAE,EAAEe,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOU,KAAc;YACrB,MAAMpC,gBAAgBwB;YACtBlB,QAAQU,MAAM,CAACqB,KAAK,CAAC;gBACnBD;gBACAlB,KAAK,CAAC,wBAAwB,EAAEO,UAAUb,IAAI,CAAC,eAAe,CAAC;YACjE;YACA,MAAMwB;QACR;IACF;IAEA,OAAO;QAAEH,OAAO;QAAGzB;QAAUC,YAAY,EAAE;IAAC;AAC9C"}
@@ -1,4 +1,10 @@
1
- import type { Schema } from 'mongoose';
1
+ import type { Schema, SchemaOptions } from 'mongoose';
2
2
  import type { Payload, SanitizedCollectionConfig } from 'payload';
3
- export declare const buildCollectionSchema: (collection: SanitizedCollectionConfig, payload: Payload, schemaOptions?: {}) => Schema;
3
+ import type { MongoSchemaBuildContext } from './schemaBuildContext.js';
4
+ export declare const buildCollectionSchema: ({ collection, payload, schemaBuildContext, schemaOptions, }: {
5
+ collection: SanitizedCollectionConfig;
6
+ payload: Payload;
7
+ schemaBuildContext: MongoSchemaBuildContext;
8
+ schemaOptions?: SchemaOptions;
9
+ }) => Schema;
4
10
  //# sourceMappingURL=buildCollectionSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildCollectionSchema.d.ts","sourceRoot":"","sources":["../../src/models/buildCollectionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOjE,eAAO,MAAM,qBAAqB,eACpB,yBAAyB,WAC5B,OAAO,yBAEf,MAoCF,CAAA"}
1
+ {"version":3,"file":"buildCollectionSchema.d.ts","sourceRoot":"","sources":["../../src/models/buildCollectionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAIjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAKtE,eAAO,MAAM,qBAAqB,gEAK/B;IACD,UAAU,EAAE,yBAAyB,CAAA;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,kBAAkB,EAAE,uBAAuB,CAAA;IAC3C,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B,KAAG,MAsCH,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import paginate from 'mongoose-paginate-v2';
2
2
  import { getBuildQueryPlugin } from '../queries/getBuildQueryPlugin.js';
3
3
  import { buildSchema } from './buildSchema.js';
4
- export const buildCollectionSchema = (collection, payload, schemaOptions = {})=>{
4
+ export const buildCollectionSchema = ({ collection, payload, schemaBuildContext, schemaOptions = {} })=>{
5
5
  const schema = buildSchema({
6
6
  buildSchemaOptions: {
7
7
  draftsEnabled: Boolean(typeof collection?.versions === 'object' && collection.versions.drafts),
@@ -15,7 +15,9 @@ export const buildCollectionSchema = (collection, payload, schemaOptions = {})=>
15
15
  compoundIndexes: collection.sanitizedIndexes,
16
16
  configFields: collection.fields,
17
17
  flattenedFields: collection.flattenedFields,
18
- payload
18
+ payload,
19
+ schemaBuildContext,
20
+ schemaPath: `collection:${collection.slug}`
19
21
  });
20
22
  if (Array.isArray(collection.upload.filenameCompoundIndex)) {
21
23
  const indexDefinition = collection.upload.filenameCompoundIndex.reduce((acc, index)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/buildCollectionSchema.ts"],"sourcesContent":["import type { PaginateOptions, Schema } from 'mongoose'\nimport type { Payload, SanitizedCollectionConfig } from 'payload'\n\nimport paginate from 'mongoose-paginate-v2'\n\nimport { getBuildQueryPlugin } from '../queries/getBuildQueryPlugin.js'\nimport { buildSchema } from './buildSchema.js'\n\nexport const buildCollectionSchema = (\n collection: SanitizedCollectionConfig,\n payload: Payload,\n schemaOptions = {},\n): Schema => {\n const schema = buildSchema({\n buildSchemaOptions: {\n draftsEnabled: Boolean(\n typeof collection?.versions === 'object' && collection.versions.drafts,\n ),\n indexSortableFields: payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: collection.timestamps !== false,\n ...schemaOptions,\n },\n },\n compoundIndexes: collection.sanitizedIndexes,\n configFields: collection.fields,\n flattenedFields: collection.flattenedFields,\n payload,\n })\n\n if (Array.isArray(collection.upload.filenameCompoundIndex)) {\n const indexDefinition = collection.upload.filenameCompoundIndex.reduce<Record<string, 1>>(\n (acc, index) => {\n acc[index] = 1\n return acc\n },\n {},\n )\n\n schema.index(indexDefinition, { unique: true })\n }\n\n schema\n .plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true })\n .plugin(getBuildQueryPlugin({ collectionSlug: collection.slug }))\n\n return schema\n}\n"],"names":["paginate","getBuildQueryPlugin","buildSchema","buildCollectionSchema","collection","payload","schemaOptions","schema","buildSchemaOptions","draftsEnabled","Boolean","versions","drafts","indexSortableFields","config","options","minimize","timestamps","compoundIndexes","sanitizedIndexes","configFields","fields","flattenedFields","Array","isArray","upload","filenameCompoundIndex","indexDefinition","reduce","acc","index","unique","plugin","useEstimatedCount","collectionSlug","slug"],"mappings":"AAGA,OAAOA,cAAc,uBAAsB;AAE3C,SAASC,mBAAmB,QAAQ,oCAAmC;AACvE,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,wBAAwB,CACnCC,YACAC,SACAC,gBAAgB,CAAC,CAAC;IAElB,MAAMC,SAASL,YAAY;QACzBM,oBAAoB;YAClBC,eAAeC,QACb,OAAON,YAAYO,aAAa,YAAYP,WAAWO,QAAQ,CAACC,MAAM;YAExEC,qBAAqBR,QAAQS,MAAM,CAACD,mBAAmB;YACvDE,SAAS;gBACPC,UAAU;gBACVC,YAAYb,WAAWa,UAAU,KAAK;gBACtC,GAAGX,aAAa;YAClB;QACF;QACAY,iBAAiBd,WAAWe,gBAAgB;QAC5CC,cAAchB,WAAWiB,MAAM;QAC/BC,iBAAiBlB,WAAWkB,eAAe;QAC3CjB;IACF;IAEA,IAAIkB,MAAMC,OAAO,CAACpB,WAAWqB,MAAM,CAACC,qBAAqB,GAAG;QAC1D,MAAMC,kBAAkBvB,WAAWqB,MAAM,CAACC,qBAAqB,CAACE,MAAM,CACpE,CAACC,KAAKC;YACJD,GAAG,CAACC,MAAM,GAAG;YACb,OAAOD;QACT,GACA,CAAC;QAGHtB,OAAOuB,KAAK,CAACH,iBAAiB;YAAEI,QAAQ;QAAK;IAC/C;IAEAxB,OACGyB,MAAM,CAAuBhC,UAAU;QAAEiC,mBAAmB;IAAK,GACjED,MAAM,CAAC/B,oBAAoB;QAAEiC,gBAAgB9B,WAAW+B,IAAI;IAAC;IAEhE,OAAO5B;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/models/buildCollectionSchema.ts"],"sourcesContent":["import type { PaginateOptions, Schema, SchemaOptions } from 'mongoose'\nimport type { Payload, SanitizedCollectionConfig } from 'payload'\n\nimport paginate from 'mongoose-paginate-v2'\n\nimport type { MongoSchemaBuildContext } from './schemaBuildContext.js'\n\nimport { getBuildQueryPlugin } from '../queries/getBuildQueryPlugin.js'\nimport { buildSchema } from './buildSchema.js'\n\nexport const buildCollectionSchema = ({\n collection,\n payload,\n schemaBuildContext,\n schemaOptions = {},\n}: {\n collection: SanitizedCollectionConfig\n payload: Payload\n schemaBuildContext: MongoSchemaBuildContext\n schemaOptions?: SchemaOptions\n}): Schema => {\n const schema = buildSchema({\n buildSchemaOptions: {\n draftsEnabled: Boolean(\n typeof collection?.versions === 'object' && collection.versions.drafts,\n ),\n indexSortableFields: payload.config.indexSortableFields,\n options: {\n minimize: false,\n timestamps: collection.timestamps !== false,\n ...schemaOptions,\n },\n },\n compoundIndexes: collection.sanitizedIndexes,\n configFields: collection.fields,\n flattenedFields: collection.flattenedFields,\n payload,\n schemaBuildContext,\n schemaPath: `collection:${collection.slug}`,\n })\n\n if (Array.isArray(collection.upload.filenameCompoundIndex)) {\n const indexDefinition = collection.upload.filenameCompoundIndex.reduce<Record<string, 1>>(\n (acc, index) => {\n acc[index] = 1\n return acc\n },\n {},\n )\n\n schema.index(indexDefinition, { unique: true })\n }\n\n schema\n .plugin<any, PaginateOptions>(paginate, { useEstimatedCount: true })\n .plugin(getBuildQueryPlugin({ collectionSlug: collection.slug }))\n\n return schema\n}\n"],"names":["paginate","getBuildQueryPlugin","buildSchema","buildCollectionSchema","collection","payload","schemaBuildContext","schemaOptions","schema","buildSchemaOptions","draftsEnabled","Boolean","versions","drafts","indexSortableFields","config","options","minimize","timestamps","compoundIndexes","sanitizedIndexes","configFields","fields","flattenedFields","schemaPath","slug","Array","isArray","upload","filenameCompoundIndex","indexDefinition","reduce","acc","index","unique","plugin","useEstimatedCount","collectionSlug"],"mappings":"AAGA,OAAOA,cAAc,uBAAsB;AAI3C,SAASC,mBAAmB,QAAQ,oCAAmC;AACvE,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,wBAAwB,CAAC,EACpCC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EAClBC,gBAAgB,CAAC,CAAC,EAMnB;IACC,MAAMC,SAASN,YAAY;QACzBO,oBAAoB;YAClBC,eAAeC,QACb,OAAOP,YAAYQ,aAAa,YAAYR,WAAWQ,QAAQ,CAACC,MAAM;YAExEC,qBAAqBT,QAAQU,MAAM,CAACD,mBAAmB;YACvDE,SAAS;gBACPC,UAAU;gBACVC,YAAYd,WAAWc,UAAU,KAAK;gBACtC,GAAGX,aAAa;YAClB;QACF;QACAY,iBAAiBf,WAAWgB,gBAAgB;QAC5CC,cAAcjB,WAAWkB,MAAM;QAC/BC,iBAAiBnB,WAAWmB,eAAe;QAC3ClB;QACAC;QACAkB,YAAY,CAAC,WAAW,EAAEpB,WAAWqB,IAAI,EAAE;IAC7C;IAEA,IAAIC,MAAMC,OAAO,CAACvB,WAAWwB,MAAM,CAACC,qBAAqB,GAAG;QAC1D,MAAMC,kBAAkB1B,WAAWwB,MAAM,CAACC,qBAAqB,CAACE,MAAM,CACpE,CAACC,KAAKC;YACJD,GAAG,CAACC,MAAM,GAAG;YACb,OAAOD;QACT,GACA,CAAC;QAGHxB,OAAOyB,KAAK,CAACH,iBAAiB;YAAEI,QAAQ;QAAK;IAC/C;IAEA1B,OACG2B,MAAM,CAAuBnC,UAAU;QAAEoC,mBAAmB;IAAK,GACjED,MAAM,CAAClC,oBAAoB;QAAEoC,gBAAgBjC,WAAWqB,IAAI;IAAC;IAEhE,OAAOjB;AACT,EAAC"}
@@ -1,4 +1,8 @@
1
1
  import type { MongooseAdapter } from '../index.js';
2
2
  import type { GlobalModel } from '../types.js';
3
- export declare const buildGlobalModel: (adapter: MongooseAdapter) => GlobalModel | null;
3
+ import type { MongoSchemaBuildContext } from './schemaBuildContext.js';
4
+ export declare const buildGlobalModel: ({ adapter, schemaBuildContext, }: {
5
+ adapter: MongooseAdapter;
6
+ schemaBuildContext: MongoSchemaBuildContext;
7
+ }) => GlobalModel | null;
4
8
  //# sourceMappingURL=buildGlobalModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildGlobalModel.d.ts","sourceRoot":"","sources":["../../src/models/buildGlobalModel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAK9C,eAAO,MAAM,gBAAgB,YAAa,eAAe,KAAG,WAAW,GAAG,IAgCzE,CAAA"}
1
+ {"version":3,"file":"buildGlobalModel.d.ts","sourceRoot":"","sources":["../../src/models/buildGlobalModel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAKtE,eAAO,MAAM,gBAAgB,qCAG1B;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,kBAAkB,EAAE,uBAAuB,CAAA;CAC5C,KAAG,WAAW,GAAG,IAiDjB,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import mongoose from 'mongoose';
2
+ import { branchField } from 'payload';
2
3
  import { getBuildQueryPlugin } from '../queries/getBuildQueryPlugin.js';
3
4
  import { buildSchema } from './buildSchema.js';
4
- export const buildGlobalModel = (adapter)=>{
5
+ export const buildGlobalModel = ({ adapter, schemaBuildContext })=>{
5
6
  if (adapter.payload.config.globals && adapter.payload.config.globals.length > 0) {
6
7
  const globalsSchema = new mongoose.Schema({}, {
7
8
  discriminatorKey: 'globalType',
@@ -9,16 +10,35 @@ export const buildGlobalModel = (adapter)=>{
9
10
  timestamps: true
10
11
  });
11
12
  globalsSchema.plugin(getBuildQueryPlugin());
13
+ if (adapter.payload.config.branching?.branchableGlobals.size) {
14
+ globalsSchema.index(// eslint-disable-next-line perfectionist/sort-objects -- Keep the discriminator first for global-scoped queries.
15
+ {
16
+ globalType: 1,
17
+ [branchField]: 1
18
+ }, {
19
+ partialFilterExpression: {
20
+ [branchField]: {
21
+ $exists: true
22
+ }
23
+ },
24
+ unique: true
25
+ });
26
+ }
12
27
  const Globals = adapter.connection.model('globals', globalsSchema, 'globals');
13
28
  Object.values(adapter.payload.config.globals).forEach((globalConfig)=>{
29
+ const isBranchableGlobal = adapter.payload.config.branching?.branchableGlobals.has(globalConfig.slug) ?? false;
14
30
  const globalSchema = buildSchema({
15
31
  buildSchemaOptions: {
16
32
  options: {
17
33
  minimize: false
18
34
  }
19
35
  },
20
- configFields: globalConfig.fields,
21
- payload: adapter.payload
36
+ configFields: isBranchableGlobal ? removeBranchFieldIndex({
37
+ fields: globalConfig.fields
38
+ }) : globalConfig.fields,
39
+ payload: adapter.payload,
40
+ schemaBuildContext,
41
+ schemaPath: `global:${globalConfig.slug}`
22
42
  });
23
43
  Globals.discriminator(globalConfig.slug, globalSchema);
24
44
  });
@@ -26,5 +46,16 @@ export const buildGlobalModel = (adapter)=>{
26
46
  }
27
47
  return null;
28
48
  };
49
+ const removeBranchFieldIndex = ({ fields })=>fields.map((field)=>{
50
+ if (isBranchField(field)) {
51
+ return {
52
+ ...field,
53
+ index: false,
54
+ unique: false
55
+ };
56
+ }
57
+ return field;
58
+ });
59
+ const isBranchField = (field)=>field.type === 'text' && field.name === branchField;
29
60
 
30
61
  //# sourceMappingURL=buildGlobalModel.js.map