@payloadcms/db-mongodb 4.0.0-internal.2fddfc0 → 4.0.0-internal.31ba7ee

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 (98) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/connect.d.ts.map +1 -1
  3. package/dist/connect.js +8 -2
  4. package/dist/connect.js.map +1 -1
  5. package/dist/create.d.ts.map +1 -1
  6. package/dist/create.js +2 -1
  7. package/dist/create.js.map +1 -1
  8. package/dist/createGlobalVersion.js +1 -1
  9. package/dist/createGlobalVersion.js.map +1 -1
  10. package/dist/createMigration.d.ts.map +1 -1
  11. package/dist/createMigration.js +9 -2
  12. package/dist/createMigration.js.map +1 -1
  13. package/dist/createVersion.js +1 -1
  14. package/dist/createVersion.js.map +1 -1
  15. package/dist/find.js +1 -1
  16. package/dist/find.js.map +1 -1
  17. package/dist/findDistinct.d.ts.map +1 -1
  18. package/dist/findDistinct.js +52 -8
  19. package/dist/findDistinct.js.map +1 -1
  20. package/dist/findOne.js +1 -1
  21. package/dist/findOne.js.map +1 -1
  22. package/dist/init.d.ts.map +1 -1
  23. package/dist/init.js +89 -67
  24. package/dist/init.js.map +1 -1
  25. package/dist/migrateFresh.d.ts +4 -2
  26. package/dist/migrateFresh.d.ts.map +1 -1
  27. package/dist/migrateFresh.js +21 -6
  28. package/dist/migrateFresh.js.map +1 -1
  29. package/dist/models/buildCollectionSchema.d.ts +8 -2
  30. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  31. package/dist/models/buildCollectionSchema.js +4 -2
  32. package/dist/models/buildCollectionSchema.js.map +1 -1
  33. package/dist/models/buildGlobalModel.d.ts +5 -1
  34. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  35. package/dist/models/buildGlobalModel.js +4 -2
  36. package/dist/models/buildGlobalModel.js.map +1 -1
  37. package/dist/models/buildSchema.d.ts +4 -0
  38. package/dist/models/buildSchema.d.ts.map +1 -1
  39. package/dist/models/buildSchema.js +78 -26
  40. package/dist/models/buildSchema.js.map +1 -1
  41. package/dist/models/schemaBuildContext.d.ts +21 -0
  42. package/dist/models/schemaBuildContext.d.ts.map +1 -0
  43. package/dist/models/schemaBuildContext.js +29 -0
  44. package/dist/models/schemaBuildContext.js.map +1 -0
  45. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
  46. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +4 -4
  47. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
  48. package/dist/queries/buildQuery.d.ts.map +1 -1
  49. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  50. package/dist/queries/buildSearchParams.js +189 -6
  51. package/dist/queries/buildSearchParams.js.map +1 -1
  52. package/dist/queries/buildSortParam.d.ts.map +1 -1
  53. package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
  54. package/dist/queries/getLocalizedSortProperty.d.ts.map +1 -1
  55. package/dist/queries/operatorMap.d.ts.map +1 -1
  56. package/dist/queries/parseParams.js.map +1 -1
  57. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  58. package/dist/queryDrafts.js +1 -1
  59. package/dist/queryDrafts.js.map +1 -1
  60. package/dist/testCredentials.d.ts.map +1 -1
  61. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  62. package/dist/transactions/beginTransaction.js +0 -1
  63. package/dist/transactions/beginTransaction.js.map +1 -1
  64. package/dist/updateGlobal.js +2 -2
  65. package/dist/updateGlobal.js.map +1 -1
  66. package/dist/updateGlobalVersion.js +2 -2
  67. package/dist/updateGlobalVersion.js.map +1 -1
  68. package/dist/updateJobs.d.ts.map +1 -1
  69. package/dist/updateJobs.js +71 -14
  70. package/dist/updateJobs.js.map +1 -1
  71. package/dist/updateMany.d.ts.map +1 -1
  72. package/dist/updateMany.js +0 -1
  73. package/dist/updateMany.js.map +1 -1
  74. package/dist/updateOne.js +2 -2
  75. package/dist/updateOne.js.map +1 -1
  76. package/dist/updateVersion.js +2 -2
  77. package/dist/updateVersion.js.map +1 -1
  78. package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
  79. package/dist/utilities/buildJoinAggregation.d.ts +1 -1
  80. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  81. package/dist/utilities/buildJoinAggregation.js +2 -2
  82. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  83. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -1
  84. package/dist/utilities/getDBName.d.ts.map +1 -1
  85. package/dist/utilities/getEntity.d.ts +1 -1
  86. package/dist/utilities/getEntity.d.ts.map +1 -1
  87. package/dist/utilities/handleError.d.ts.map +1 -1
  88. package/dist/utilities/isObjectID.d.ts.map +1 -1
  89. package/dist/utilities/transform.d.ts.map +1 -1
  90. package/dist/utilities/transform.js +15 -0
  91. package/dist/utilities/transform.js.map +1 -1
  92. package/package.json +5 -5
  93. package/dist/queries/buildSortParam.spec.js +0 -123
  94. package/dist/queries/buildSortParam.spec.js.map +0 -1
  95. package/dist/queries/getLocalizedSortProperty.spec.js +0 -215
  96. package/dist/queries/getLocalizedSortProperty.spec.js.map +0 -1
  97. package/dist/utilities/transform.spec.js +0 -479
  98. package/dist/utilities/transform.spec.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import mongoose from 'mongoose';
2
+ import { createSchemaBuildContext } from 'payload/internal';
2
3
  import { fieldAffectsData, fieldIsPresentationalOnly, fieldIsVirtual, fieldShouldBeLocalized, tabHasName } from 'payload/shared';
4
+ import { getBlockSchemaCacheKey } from './schemaBuildContext.js';
3
5
  /**
4
6
  * get a field's defaultValue only if defined and not dynamic so that it can be set on the field schema
5
7
  * @param field
@@ -42,6 +44,12 @@ const localizeSchema = (entity, schema, localization, parentIsLocalized)=>{
42
44
  };
43
45
  export const buildSchema = (args)=>{
44
46
  const { buildSchemaOptions = {}, configFields, flattenedFields, parentIsLocalized, payload } = args;
47
+ const schemaBuildContext = args.schemaBuildContext ?? createSchemaBuildContext();
48
+ const schemaBuildState = {
49
+ context: schemaBuildContext,
50
+ isVersion: args.isVersion ?? false,
51
+ path: args.schemaPath ?? 'schema'
52
+ };
45
53
  const { allowIDField, options } = buildSchemaOptions;
46
54
  let fields = {};
47
55
  let schemaFields = configFields;
@@ -64,7 +72,7 @@ export const buildSchema = (args)=>{
64
72
  if (!fieldIsPresentationalOnly(field)) {
65
73
  const addFieldSchema = getSchemaGenerator(field.type);
66
74
  if (addFieldSchema) {
67
- addFieldSchema(field, schema, payload, buildSchemaOptions, parentIsLocalized ?? false);
75
+ addFieldSchema(field, schema, payload, buildSchemaOptions, parentIsLocalized ?? false, schemaBuildState);
68
76
  }
69
77
  }
70
78
  });
@@ -87,7 +95,7 @@ export const buildSchema = (args)=>{
87
95
  }
88
96
  return schema;
89
97
  };
90
- const array = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
98
+ const array = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
91
99
  const baseSchema = {
92
100
  ...formatBaseSchema({
93
101
  buildSchemaOptions,
@@ -107,8 +115,11 @@ const array = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
107
115
  }
108
116
  },
109
117
  configFields: field.fields,
118
+ isVersion: schemaBuildState.isVersion,
110
119
  parentIsLocalized: parentIsLocalized || field.localized,
111
- payload
120
+ payload,
121
+ schemaBuildContext: schemaBuildState.context,
122
+ schemaPath: `${schemaBuildState.path}/field:${field.name}`
112
123
  })
113
124
  ]
114
125
  };
@@ -116,7 +127,7 @@ const array = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
116
127
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
117
128
  });
118
129
  };
119
- const blocks = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
130
+ const blocks = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
120
131
  const fieldSchema = {
121
132
  ...formatBaseSchema({
122
133
  buildSchemaOptions,
@@ -134,22 +145,43 @@ const blocks = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>
134
145
  [field.name]: localizeSchema(field, fieldSchema, payload.config.localization, parentIsLocalized)
135
146
  });
136
147
  field.blocks.forEach((blockItem)=>{
137
- const blockSchema = new mongoose.Schema({}, {
138
- _id: false,
139
- id: false
140
- });
141
148
  const block = typeof blockItem === 'string' ? payload.blocks[blockItem] : blockItem;
142
149
  if (!block) {
143
150
  return;
144
151
  }
145
- block.fields.forEach((blockField)=>{
146
- if (fieldIsVirtual(blockField)) {
147
- return;
148
- }
149
- const addFieldSchema = getSchemaGenerator(blockField.type);
150
- if (addFieldSchema) {
151
- addFieldSchema(blockField, blockSchema, payload, buildSchemaOptions, (parentIsLocalized || field.localized) ?? false);
152
- }
152
+ const isLocalized = Boolean(parentIsLocalized || field.localized);
153
+ const isReference = typeof blockItem === 'string';
154
+ const fieldPath = `${schemaBuildState.path}/field:${field.name}`;
155
+ const blockSchema = schemaBuildState.context.getOrCreate({
156
+ build: ()=>{
157
+ const template = new mongoose.Schema({}, {
158
+ _id: false,
159
+ id: false
160
+ });
161
+ block.fields.forEach((blockField)=>{
162
+ if (fieldIsVirtual(blockField)) {
163
+ return;
164
+ }
165
+ const addFieldSchema = getSchemaGenerator(blockField.type);
166
+ if (addFieldSchema) {
167
+ addFieldSchema(blockField, template, payload, buildSchemaOptions, isLocalized, {
168
+ context: schemaBuildState.context,
169
+ isVersion: schemaBuildState.isVersion,
170
+ path: isReference ? `block:${block.slug}` : `${fieldPath}/block:${block.slug}`
171
+ });
172
+ }
173
+ });
174
+ return template;
175
+ },
176
+ cacheKey: getBlockSchemaCacheKey({
177
+ blockSlug: block.slug,
178
+ buildSchemaOptions,
179
+ fieldPath,
180
+ isLocalized,
181
+ isReference,
182
+ isVersion: schemaBuildState.isVersion
183
+ }),
184
+ definition: block
153
185
  });
154
186
  if (fieldShouldBeLocalized({
155
187
  field,
@@ -191,14 +223,14 @@ const code = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
191
223
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
192
224
  });
193
225
  };
194
- const collapsible = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
226
+ const collapsible = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
195
227
  field.fields.forEach((subField)=>{
196
228
  if (fieldIsVirtual(subField)) {
197
229
  return;
198
230
  }
199
231
  const addFieldSchema = getSchemaGenerator(subField.type);
200
232
  if (addFieldSchema) {
201
- addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized);
233
+ addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState);
202
234
  }
203
235
  });
204
236
  };
@@ -228,7 +260,7 @@ const email = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
228
260
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
229
261
  });
230
262
  };
231
- const group = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
263
+ const group = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
232
264
  if (fieldAffectsData(field)) {
233
265
  const formattedBaseSchema = formatBaseSchema({
234
266
  buildSchemaOptions,
@@ -251,8 +283,11 @@ const group = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
251
283
  }
252
284
  },
253
285
  configFields: field.fields,
286
+ isVersion: schemaBuildState.isVersion,
254
287
  parentIsLocalized: parentIsLocalized || field.localized,
255
- payload
288
+ payload,
289
+ schemaBuildContext: schemaBuildState.context,
290
+ schemaPath: `${schemaBuildState.path}/field:${field.name}`
256
291
  })
257
292
  };
258
293
  schema.add({
@@ -265,7 +300,7 @@ const group = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
265
300
  }
266
301
  const addFieldSchema = getSchemaGenerator(subField.type);
267
302
  if (addFieldSchema) {
268
- addFieldSchema(subField, schema, payload, buildSchemaOptions, (parentIsLocalized || field.localized) ?? false);
303
+ addFieldSchema(subField, schema, payload, buildSchemaOptions, (parentIsLocalized || field.localized) ?? false, schemaBuildState);
269
304
  }
270
305
  });
271
306
  }
@@ -482,14 +517,14 @@ const richText = (field, schema, payload, buildSchemaOptions, parentIsLocalized)
482
517
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
483
518
  });
484
519
  };
485
- const row = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
520
+ const row = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
486
521
  field.fields.forEach((subField)=>{
487
522
  if (fieldIsVirtual(subField)) {
488
523
  return;
489
524
  }
490
525
  const addFieldSchema = getSchemaGenerator(subField.type);
491
526
  if (addFieldSchema) {
492
- addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized);
527
+ addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState);
493
528
  }
494
529
  });
495
530
  };
@@ -518,7 +553,7 @@ const select = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>
518
553
  ] : baseSchema, payload.config.localization, parentIsLocalized)
519
554
  });
520
555
  };
521
- const tabs = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
556
+ const tabs = (field, schema, payload, buildSchemaOptions, parentIsLocalized, schemaBuildState)=>{
522
557
  field.tabs.forEach((tab)=>{
523
558
  if (tabHasName(tab)) {
524
559
  if (fieldIsVirtual(tab)) {
@@ -536,8 +571,11 @@ const tabs = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
536
571
  }
537
572
  },
538
573
  configFields: tab.fields,
574
+ isVersion: schemaBuildState.isVersion,
539
575
  parentIsLocalized: parentIsLocalized || tab.localized,
540
- payload
576
+ payload,
577
+ schemaBuildContext: schemaBuildState.context,
578
+ schemaPath: `${schemaBuildState.path}/tab:${tab.name}`
541
579
  })
542
580
  };
543
581
  schema.add({
@@ -550,7 +588,7 @@ const tabs = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
550
588
  }
551
589
  const addFieldSchema = getSchemaGenerator(subField.type);
552
590
  if (addFieldSchema) {
553
- addFieldSchema(subField, schema, payload, buildSchemaOptions, (parentIsLocalized || tab.localized) ?? false);
591
+ addFieldSchema(subField, schema, payload, buildSchemaOptions, (parentIsLocalized || tab.localized) ?? false, schemaBuildState);
554
592
  }
555
593
  });
556
594
  }
@@ -571,6 +609,19 @@ const text = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
571
609
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
572
610
  });
573
611
  };
612
+ const slug = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
613
+ const baseSchema = {
614
+ ...formatBaseSchema({
615
+ buildSchemaOptions,
616
+ field,
617
+ parentIsLocalized
618
+ }),
619
+ type: String
620
+ };
621
+ schema.add({
622
+ [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
623
+ });
624
+ };
574
625
  const textarea = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
575
626
  const baseSchema = {
576
627
  ...formatBaseSchema({
@@ -693,6 +744,7 @@ const getSchemaGenerator = (fieldType)=>{
693
744
  return null;
694
745
  };
695
746
  const fieldToSchemaMap = {
747
+ slug,
696
748
  array,
697
749
  blocks,
698
750
  checkbox,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/buildSchema.ts"],"sourcesContent":["import type { IndexOptions, Schema, SchemaOptions, SchemaTypeOptions } from 'mongoose'\n\nimport mongoose from 'mongoose'\nimport {\n type ArrayField,\n type BlocksField,\n type CheckboxField,\n type CodeField,\n type CollapsibleField,\n type DateField,\n type EmailField,\n type Field,\n type FieldAffectingData,\n type FlattenedField,\n type GroupField,\n type JSONField,\n type NonPresentationalField,\n type NumberField,\n type Payload,\n type PointField,\n type RadioField,\n type RelationshipField,\n type RichTextField,\n type RowField,\n type SanitizedCompoundIndex,\n type SanitizedLocalizationConfig,\n type SelectField,\n type Tab,\n type TabsField,\n type TextareaField,\n type TextField,\n type UploadField,\n} from 'payload'\nimport {\n fieldAffectsData,\n fieldIsPresentationalOnly,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n tabHasName,\n} from 'payload/shared'\n\nexport type BuildSchemaOptions = {\n allowIDField?: boolean\n disableUnique?: boolean\n draftsEnabled?: boolean\n indexSortableFields?: boolean\n options?: SchemaOptions\n}\n\ntype FieldSchemaGenerator<T extends Field = Field> = (\n field: T,\n schema: Schema,\n config: Payload,\n buildSchemaOptions: BuildSchemaOptions,\n parentIsLocalized: boolean,\n) => void\n\n/**\n * get a field's defaultValue only if defined and not dynamic so that it can be set on the field schema\n * @param field\n */\nconst formatDefaultValue = (field: FieldAffectingData) =>\n typeof field.defaultValue !== 'undefined' && typeof field.defaultValue !== 'function'\n ? field.defaultValue\n : undefined\n\nconst formatBaseSchema = ({\n buildSchemaOptions,\n field,\n parentIsLocalized,\n}: {\n buildSchemaOptions: BuildSchemaOptions\n field: FieldAffectingData\n parentIsLocalized: boolean\n}) => {\n const { disableUnique, draftsEnabled, indexSortableFields } = buildSchemaOptions\n const schema: SchemaTypeOptions<unknown> = {\n default: formatDefaultValue(field),\n index: field.index || (!disableUnique && field.unique) || indexSortableFields || false,\n required: false,\n unique: (!disableUnique && field.unique) || false,\n }\n\n if (\n schema.unique &&\n (fieldShouldBeLocalized({ field, parentIsLocalized }) ||\n draftsEnabled ||\n (fieldAffectsData(field) &&\n field.type !== 'group' &&\n field.type !== 'tab' &&\n field.required !== true))\n ) {\n schema.sparse = true\n }\n\n if (field.hidden) {\n schema.hidden = true\n }\n\n return schema\n}\n\nconst localizeSchema = (\n entity: NonPresentationalField | Tab,\n schema: SchemaTypeOptions<any>,\n localization: false | SanitizedLocalizationConfig,\n parentIsLocalized: boolean,\n) => {\n if (\n fieldShouldBeLocalized({ field: entity, parentIsLocalized }) &&\n localization &&\n Array.isArray(localization.locales)\n ) {\n return {\n type: localization.localeCodes.reduce(\n (localeSchema, locale) => ({\n ...localeSchema,\n [locale]: schema,\n }),\n {\n _id: false,\n },\n ),\n localized: true,\n }\n }\n return schema\n}\n\nexport const buildSchema = (args: {\n buildSchemaOptions: BuildSchemaOptions\n compoundIndexes?: SanitizedCompoundIndex[]\n configFields: Field[]\n flattenedFields?: FlattenedField[]\n parentIsLocalized?: boolean\n payload: Payload\n}): Schema => {\n const {\n buildSchemaOptions = {},\n configFields,\n flattenedFields,\n parentIsLocalized,\n payload,\n } = args\n const { allowIDField, options } = buildSchemaOptions\n let fields = {}\n\n let schemaFields = configFields\n\n if (!allowIDField) {\n // Use flattenedFields if available to find custom id field regardless of nesting\n const fieldsToSearch = flattenedFields || schemaFields\n const idField = fieldsToSearch.find((field) => fieldAffectsData(field) && field.name === 'id')\n if (idField) {\n fields = {\n _id:\n idField.type === 'number'\n ? payload.db.useBigIntForNumberIDs\n ? mongoose.Schema.Types.BigInt\n : Number\n : String,\n }\n schemaFields = schemaFields.filter(\n (field) => !(fieldAffectsData(field) && field.name === 'id'),\n )\n }\n }\n\n const schema = new mongoose.Schema(fields, options as any)\n\n schemaFields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n if (!fieldIsPresentationalOnly(field)) {\n const addFieldSchema = getSchemaGenerator(field.type)\n\n if (addFieldSchema) {\n addFieldSchema(field, schema, payload, buildSchemaOptions, parentIsLocalized ?? false)\n }\n }\n })\n\n if (args.compoundIndexes) {\n for (const index of args.compoundIndexes) {\n const indexDefinition: Record<string, 1> = {}\n\n for (const field of index.fields) {\n if (field.pathHasLocalized && payload.config.localization) {\n for (const locale of payload.config.localization.locales) {\n indexDefinition[field.localizedPath.replace('<locale>', locale.code)] = 1\n }\n } else {\n indexDefinition[field.path] = 1\n }\n }\n\n schema.index(indexDefinition, {\n unique: args.buildSchemaOptions.disableUnique ? false : index.unique,\n })\n }\n }\n\n return schema\n}\n\nconst array: FieldSchemaGenerator<ArrayField> = (\n field: ArrayField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n) => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: [\n buildSchema({\n buildSchemaOptions: {\n allowIDField: true,\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: field.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n payload,\n }),\n ],\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst blocks: FieldSchemaGenerator<BlocksField> = (\n field: BlocksField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const fieldSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: [new mongoose.Schema({}, { _id: false, discriminatorKey: 'blockType' })],\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n fieldSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n field.blocks.forEach((blockItem) => {\n const blockSchema = new mongoose.Schema({}, { _id: false, id: false })\n\n const block = typeof blockItem === 'string' ? payload.blocks[blockItem] : blockItem\n\n if (!block) {\n return\n }\n\n block.fields.forEach((blockField) => {\n if (fieldIsVirtual(blockField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(blockField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n blockField,\n blockSchema,\n payload,\n buildSchemaOptions,\n (parentIsLocalized || field.localized) ?? false,\n )\n }\n })\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n payload.config.localization.localeCodes.forEach((localeCode) => {\n // @ts-expect-error Possible incorrect typing in mongoose types, this works\n schema.path(`${field.name}.${localeCode}`).discriminator(block.slug, blockSchema)\n })\n } else {\n // @ts-expect-error Possible incorrect typing in mongoose types, this works\n schema.path(field.name).discriminator(block.slug, blockSchema)\n }\n })\n}\n\nconst checkbox: FieldSchemaGenerator<CheckboxField> = (\n field: CheckboxField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: Boolean,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst code: FieldSchemaGenerator<CodeField> = (\n field: CodeField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst collapsible: FieldSchemaGenerator<CollapsibleField> = (\n field: CollapsibleField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n field.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized)\n }\n })\n}\n\nconst date: FieldSchemaGenerator<DateField> = (\n field: DateField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: Date,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst email: FieldSchemaGenerator<EmailField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst group: FieldSchemaGenerator<GroupField> = (\n field: GroupField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n if (fieldAffectsData(field)) {\n const formattedBaseSchema = formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized })\n\n // carry indexSortableFields through to versions if drafts enabled\n const indexSortableFields =\n buildSchemaOptions.indexSortableFields &&\n field.name === 'version' &&\n buildSchemaOptions.draftsEnabled\n\n const baseSchema: SchemaTypeOptions<any> = {\n ...formattedBaseSchema,\n type: buildSchema({\n buildSchemaOptions: {\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n indexSortableFields,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: field.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n payload,\n }),\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n baseSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n } else {\n field.fields.forEach((subField) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n (parentIsLocalized || field.localized) ?? false,\n )\n }\n })\n }\n}\n\nconst json: FieldSchemaGenerator<JSONField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: mongoose.Schema.Types.Mixed,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst number: FieldSchemaGenerator<NumberField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: field.hasMany ? [Number] : Number,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst point: FieldSchemaGenerator<PointField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<unknown> = {\n type: {\n type: String,\n enum: ['Point'],\n ...(typeof field.defaultValue !== 'undefined' && {\n default: 'Point',\n }),\n },\n coordinates: {\n type: [Number],\n default: formatDefaultValue(field),\n required: false,\n },\n }\n\n if (\n buildSchemaOptions.disableUnique &&\n field.unique &&\n fieldShouldBeLocalized({ field, parentIsLocalized })\n ) {\n baseSchema.coordinates.sparse = true\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n\n if (field.index === true || field.index === undefined) {\n const indexOptions: IndexOptions = {}\n if (!buildSchemaOptions.disableUnique && field.unique) {\n indexOptions.sparse = true\n indexOptions.unique = true\n }\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n payload.config.localization.locales.forEach((locale) => {\n schema.index({ [`${field.name}.${locale.code}`]: '2dsphere' }, indexOptions)\n })\n } else {\n schema.index({ [field.name]: '2dsphere' }, indexOptions)\n }\n }\n}\n\nconst radio: FieldSchemaGenerator<RadioField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n enum: field.options.map((option) => {\n if (typeof option === 'object') {\n return option.value\n }\n return option\n }),\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst relationship: FieldSchemaGenerator<RelationshipField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n) => {\n const hasManyRelations = Array.isArray(field.relationTo)\n let schemaToReturn: { [key: string]: any } = {}\n\n const valueType = getRelationshipValueType(field, payload)\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n schemaToReturn = {\n _id: false,\n type: payload.config.localization.localeCodes.reduce((locales, locale) => {\n let localeSchema: { [key: string]: any } = {}\n\n if (hasManyRelations) {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.${locale}.relationTo`,\n },\n }\n } else {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n }\n\n return {\n ...locales,\n [locale]: field.hasMany\n ? { type: [localeSchema], default: formatDefaultValue(field) }\n : localeSchema,\n }\n }, {}),\n localized: true,\n }\n } else if (hasManyRelations) {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.relationTo`,\n },\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n } else {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n }\n\n schema.add({\n [field.name]: schemaToReturn,\n })\n}\n\nconst richText: FieldSchemaGenerator<RichTextField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: mongoose.Schema.Types.Mixed,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst row: FieldSchemaGenerator<RowField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n field.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(subField, schema, payload, buildSchemaOptions, parentIsLocalized)\n }\n })\n}\n\nconst select: FieldSchemaGenerator<SelectField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n enum: field.options.map((option) => {\n if (typeof option === 'object') {\n return option.value\n }\n return option\n }),\n }\n\n if (buildSchemaOptions.draftsEnabled || !field.required) {\n ;(baseSchema.enum as unknown[]).push(null)\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n field.hasMany ? [baseSchema] : baseSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n}\n\nconst tabs: FieldSchemaGenerator<TabsField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n if (fieldIsVirtual(tab)) {\n return\n }\n const baseSchema = {\n type: buildSchema({\n buildSchemaOptions: {\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: tab.fields,\n parentIsLocalized: parentIsLocalized || tab.localized,\n payload,\n }),\n }\n\n schema.add({\n [tab.name]: localizeSchema(tab, baseSchema, payload.config.localization, parentIsLocalized),\n })\n } else {\n tab.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n (parentIsLocalized || tab.localized) ?? false,\n )\n }\n })\n }\n })\n}\n\nconst text: FieldSchemaGenerator<TextField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: field.hasMany ? [String] : String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst textarea: FieldSchemaGenerator<TextareaField> = (\n field: TextareaField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst upload: FieldSchemaGenerator<UploadField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const hasManyRelations = Array.isArray(field.relationTo)\n let schemaToReturn: { [key: string]: any } = {}\n\n const valueType = getRelationshipValueType(field, payload)\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n schemaToReturn = {\n _id: false,\n type: payload.config.localization.localeCodes.reduce((locales, locale) => {\n let localeSchema: { [key: string]: any } = {}\n\n if (hasManyRelations) {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.${locale}.relationTo`,\n },\n }\n } else {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n }\n\n return {\n ...locales,\n [locale]: field.hasMany\n ? { type: [localeSchema], default: formatDefaultValue(field) }\n : localeSchema,\n }\n }, {}),\n localized: true,\n }\n } else if (hasManyRelations) {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.relationTo`,\n },\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n } else {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n }\n\n schema.add({\n [field.name]: schemaToReturn,\n })\n}\n\nconst getSchemaGenerator = (fieldType: string): FieldSchemaGenerator | null => {\n if (fieldType in fieldToSchemaMap) {\n return fieldToSchemaMap[fieldType as keyof typeof fieldToSchemaMap] as FieldSchemaGenerator\n }\n\n return null\n}\n\nconst fieldToSchemaMap = {\n array,\n blocks,\n checkbox,\n code,\n collapsible,\n date,\n email,\n group,\n json,\n number,\n point,\n radio,\n relationship,\n richText,\n row,\n select,\n tabs,\n text,\n textarea,\n upload,\n}\n\nconst getRelationshipValueType = (field: RelationshipField | UploadField, payload: Payload) => {\n if (typeof field.relationTo === 'string') {\n const customIDType = payload.collections[field.relationTo]?.customIDType\n\n if (!customIDType) {\n return mongoose.Schema.Types.ObjectId\n }\n\n if (customIDType === 'number') {\n if (payload.db.useBigIntForNumberIDs) {\n return mongoose.Schema.Types.BigInt\n } else {\n return mongoose.Schema.Types.Number\n }\n }\n\n return mongoose.Schema.Types.String\n }\n\n // has custom id relationTo\n if (\n field.relationTo.some((relationTo) => {\n return !!payload.collections[relationTo]?.customIDType\n })\n ) {\n return mongoose.Schema.Types.Mixed\n }\n\n return mongoose.Schema.Types.ObjectId\n}\n"],"names":["mongoose","fieldAffectsData","fieldIsPresentationalOnly","fieldIsVirtual","fieldShouldBeLocalized","tabHasName","formatDefaultValue","field","defaultValue","undefined","formatBaseSchema","buildSchemaOptions","parentIsLocalized","disableUnique","draftsEnabled","indexSortableFields","schema","default","index","unique","required","type","sparse","hidden","localizeSchema","entity","localization","Array","isArray","locales","localeCodes","reduce","localeSchema","locale","_id","localized","buildSchema","args","configFields","flattenedFields","payload","allowIDField","options","fields","schemaFields","fieldsToSearch","idField","find","name","db","useBigIntForNumberIDs","Schema","Types","BigInt","Number","String","filter","forEach","addFieldSchema","getSchemaGenerator","compoundIndexes","indexDefinition","pathHasLocalized","config","localizedPath","replace","code","path","array","baseSchema","id","minimize","add","blocks","fieldSchema","discriminatorKey","blockItem","blockSchema","block","blockField","localeCode","discriminator","slug","checkbox","Boolean","collapsible","subField","date","Date","email","group","formattedBaseSchema","json","Mixed","number","hasMany","point","enum","coordinates","indexOptions","radio","map","option","value","relationship","hasManyRelations","relationTo","schemaToReturn","valueType","getRelationshipValueType","refPath","ref","richText","row","select","push","tabs","tab","text","textarea","upload","fieldType","fieldToSchemaMap","customIDType","collections","ObjectId","some"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/models/buildSchema.ts"],"sourcesContent":["import type { IndexOptions, Schema, SchemaOptions, SchemaTypeOptions } from 'mongoose'\n\nimport mongoose from 'mongoose'\nimport {\n type ArrayField,\n type BlocksField,\n type CheckboxField,\n type CodeField,\n type CollapsibleField,\n type DateField,\n type EmailField,\n type Field,\n type FieldAffectingData,\n type FlattenedField,\n type GroupField,\n type JSONField,\n type NonPresentationalField,\n type NumberField,\n type Payload,\n type PointField,\n type RadioField,\n type RelationshipField,\n type RichTextField,\n type RowField,\n type SanitizedCompoundIndex,\n type SanitizedLocalizationConfig,\n type SelectField,\n type SlugField,\n type Tab,\n type TabsField,\n type TextareaField,\n type TextField,\n type UploadField,\n} from 'payload'\nimport { createSchemaBuildContext } from 'payload/internal'\nimport {\n fieldAffectsData,\n fieldIsPresentationalOnly,\n fieldIsVirtual,\n fieldShouldBeLocalized,\n tabHasName,\n} from 'payload/shared'\n\nimport type { MongoSchemaBuildContext } from './schemaBuildContext.js'\n\nimport { getBlockSchemaCacheKey } from './schemaBuildContext.js'\n\nexport type BuildSchemaOptions = {\n allowIDField?: boolean\n disableUnique?: boolean\n draftsEnabled?: boolean\n indexSortableFields?: boolean\n options?: SchemaOptions\n}\n\ntype FieldSchemaGenerator<T extends Field = Field> = (\n field: T,\n schema: Schema,\n config: Payload,\n buildSchemaOptions: BuildSchemaOptions,\n parentIsLocalized: boolean,\n schemaBuildState: SchemaBuildState,\n) => void\n\ntype SchemaBuildState = {\n context: MongoSchemaBuildContext\n isVersion: boolean\n path: string\n}\n\n/**\n * get a field's defaultValue only if defined and not dynamic so that it can be set on the field schema\n * @param field\n */\nconst formatDefaultValue = (field: FieldAffectingData) =>\n typeof field.defaultValue !== 'undefined' && typeof field.defaultValue !== 'function'\n ? field.defaultValue\n : undefined\n\nconst formatBaseSchema = ({\n buildSchemaOptions,\n field,\n parentIsLocalized,\n}: {\n buildSchemaOptions: BuildSchemaOptions\n field: FieldAffectingData\n parentIsLocalized: boolean\n}) => {\n const { disableUnique, draftsEnabled, indexSortableFields } = buildSchemaOptions\n const schema: SchemaTypeOptions<unknown> = {\n default: formatDefaultValue(field),\n index: field.index || (!disableUnique && field.unique) || indexSortableFields || false,\n required: false,\n unique: (!disableUnique && field.unique) || false,\n }\n\n if (\n schema.unique &&\n (fieldShouldBeLocalized({ field, parentIsLocalized }) ||\n draftsEnabled ||\n (fieldAffectsData(field) &&\n field.type !== 'group' &&\n field.type !== 'tab' &&\n field.required !== true))\n ) {\n schema.sparse = true\n }\n\n if (field.hidden) {\n schema.hidden = true\n }\n\n return schema\n}\n\nconst localizeSchema = (\n entity: NonPresentationalField | Tab,\n schema: SchemaTypeOptions<any>,\n localization: false | SanitizedLocalizationConfig,\n parentIsLocalized: boolean,\n) => {\n if (\n fieldShouldBeLocalized({ field: entity, parentIsLocalized }) &&\n localization &&\n Array.isArray(localization.locales)\n ) {\n return {\n type: localization.localeCodes.reduce(\n (localeSchema, locale) => ({\n ...localeSchema,\n [locale]: schema,\n }),\n {\n _id: false,\n },\n ),\n localized: true,\n }\n }\n return schema\n}\n\nexport const buildSchema = (args: {\n buildSchemaOptions: BuildSchemaOptions\n compoundIndexes?: SanitizedCompoundIndex[]\n configFields: Field[]\n flattenedFields?: FlattenedField[]\n isVersion?: boolean\n parentIsLocalized?: boolean\n payload: Payload\n schemaBuildContext?: MongoSchemaBuildContext\n schemaPath?: string\n}): Schema => {\n const {\n buildSchemaOptions = {},\n configFields,\n flattenedFields,\n parentIsLocalized,\n payload,\n } = args\n const schemaBuildContext = args.schemaBuildContext ?? createSchemaBuildContext<Schema>()\n const schemaBuildState: SchemaBuildState = {\n context: schemaBuildContext,\n isVersion: args.isVersion ?? false,\n path: args.schemaPath ?? 'schema',\n }\n const { allowIDField, options } = buildSchemaOptions\n let fields = {}\n\n let schemaFields = configFields\n\n if (!allowIDField) {\n // Use flattenedFields if available to find custom id field regardless of nesting\n const fieldsToSearch = flattenedFields || schemaFields\n const idField = fieldsToSearch.find((field) => fieldAffectsData(field) && field.name === 'id')\n if (idField) {\n fields = {\n _id:\n idField.type === 'number'\n ? payload.db.useBigIntForNumberIDs\n ? mongoose.Schema.Types.BigInt\n : Number\n : String,\n }\n schemaFields = schemaFields.filter(\n (field) => !(fieldAffectsData(field) && field.name === 'id'),\n )\n }\n }\n\n const schema = new mongoose.Schema(fields, options as any)\n\n schemaFields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n if (!fieldIsPresentationalOnly(field)) {\n const addFieldSchema = getSchemaGenerator(field.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized ?? false,\n schemaBuildState,\n )\n }\n }\n })\n\n if (args.compoundIndexes) {\n for (const index of args.compoundIndexes) {\n const indexDefinition: Record<string, 1> = {}\n\n for (const field of index.fields) {\n if (field.pathHasLocalized && payload.config.localization) {\n for (const locale of payload.config.localization.locales) {\n indexDefinition[field.localizedPath.replace('<locale>', locale.code)] = 1\n }\n } else {\n indexDefinition[field.path] = 1\n }\n }\n\n schema.index(indexDefinition, {\n unique: args.buildSchemaOptions.disableUnique ? false : index.unique,\n })\n }\n }\n\n return schema\n}\n\nconst array: FieldSchemaGenerator<ArrayField> = (\n field: ArrayField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n) => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: [\n buildSchema({\n buildSchemaOptions: {\n allowIDField: true,\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: field.fields,\n isVersion: schemaBuildState.isVersion,\n parentIsLocalized: parentIsLocalized || field.localized,\n payload,\n schemaBuildContext: schemaBuildState.context,\n schemaPath: `${schemaBuildState.path}/field:${field.name}`,\n }),\n ],\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst blocks: FieldSchemaGenerator<BlocksField> = (\n field: BlocksField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n): void => {\n const fieldSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: [new mongoose.Schema({}, { _id: false, discriminatorKey: 'blockType' })],\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n fieldSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n field.blocks.forEach((blockItem) => {\n const block = typeof blockItem === 'string' ? payload.blocks[blockItem] : blockItem\n\n if (!block) {\n return\n }\n\n const isLocalized = Boolean(parentIsLocalized || field.localized)\n const isReference = typeof blockItem === 'string'\n const fieldPath = `${schemaBuildState.path}/field:${field.name}`\n const blockSchema = schemaBuildState.context.getOrCreate({\n build: () => {\n const template = new mongoose.Schema({}, { _id: false, id: false })\n\n block.fields.forEach((blockField) => {\n if (fieldIsVirtual(blockField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(blockField.type)\n\n if (addFieldSchema) {\n addFieldSchema(blockField, template, payload, buildSchemaOptions, isLocalized, {\n context: schemaBuildState.context,\n isVersion: schemaBuildState.isVersion,\n path: isReference ? `block:${block.slug}` : `${fieldPath}/block:${block.slug}`,\n })\n }\n })\n\n return template\n },\n cacheKey: getBlockSchemaCacheKey({\n blockSlug: block.slug,\n buildSchemaOptions,\n fieldPath,\n isLocalized,\n isReference,\n isVersion: schemaBuildState.isVersion,\n }),\n definition: block,\n })\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n payload.config.localization.localeCodes.forEach((localeCode) => {\n // @ts-expect-error Possible incorrect typing in mongoose types, this works\n schema.path(`${field.name}.${localeCode}`).discriminator(block.slug, blockSchema)\n })\n } else {\n // @ts-expect-error Possible incorrect typing in mongoose types, this works\n schema.path(field.name).discriminator(block.slug, blockSchema)\n }\n })\n}\n\nconst checkbox: FieldSchemaGenerator<CheckboxField> = (\n field: CheckboxField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: Boolean,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst code: FieldSchemaGenerator<CodeField> = (\n field: CodeField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst collapsible: FieldSchemaGenerator<CollapsibleField> = (\n field: CollapsibleField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n): void => {\n field.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n )\n }\n })\n}\n\nconst date: FieldSchemaGenerator<DateField> = (\n field: DateField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: Date,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst email: FieldSchemaGenerator<EmailField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst group: FieldSchemaGenerator<GroupField> = (\n field: GroupField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n): void => {\n if (fieldAffectsData(field)) {\n const formattedBaseSchema = formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized })\n\n // carry indexSortableFields through to versions if drafts enabled\n const indexSortableFields =\n buildSchemaOptions.indexSortableFields &&\n field.name === 'version' &&\n buildSchemaOptions.draftsEnabled\n\n const baseSchema: SchemaTypeOptions<any> = {\n ...formattedBaseSchema,\n type: buildSchema({\n buildSchemaOptions: {\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n indexSortableFields,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: field.fields,\n isVersion: schemaBuildState.isVersion,\n parentIsLocalized: parentIsLocalized || field.localized,\n payload,\n schemaBuildContext: schemaBuildState.context,\n schemaPath: `${schemaBuildState.path}/field:${field.name}`,\n }),\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n baseSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n } else {\n field.fields.forEach((subField) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n (parentIsLocalized || field.localized) ?? false,\n schemaBuildState,\n )\n }\n })\n }\n}\n\nconst json: FieldSchemaGenerator<JSONField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: mongoose.Schema.Types.Mixed,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst number: FieldSchemaGenerator<NumberField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: field.hasMany ? [Number] : Number,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst point: FieldSchemaGenerator<PointField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<unknown> = {\n type: {\n type: String,\n enum: ['Point'],\n ...(typeof field.defaultValue !== 'undefined' && {\n default: 'Point',\n }),\n },\n coordinates: {\n type: [Number],\n default: formatDefaultValue(field),\n required: false,\n },\n }\n\n if (\n buildSchemaOptions.disableUnique &&\n field.unique &&\n fieldShouldBeLocalized({ field, parentIsLocalized })\n ) {\n baseSchema.coordinates.sparse = true\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n\n if (field.index === true || field.index === undefined) {\n const indexOptions: IndexOptions = {}\n if (!buildSchemaOptions.disableUnique && field.unique) {\n indexOptions.sparse = true\n indexOptions.unique = true\n }\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n payload.config.localization.locales.forEach((locale) => {\n schema.index({ [`${field.name}.${locale.code}`]: '2dsphere' }, indexOptions)\n })\n } else {\n schema.index({ [field.name]: '2dsphere' }, indexOptions)\n }\n }\n}\n\nconst radio: FieldSchemaGenerator<RadioField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n enum: field.options.map((option) => {\n if (typeof option === 'object') {\n return option.value\n }\n return option\n }),\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst relationship: FieldSchemaGenerator<RelationshipField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n) => {\n const hasManyRelations = Array.isArray(field.relationTo)\n let schemaToReturn: { [key: string]: any } = {}\n\n const valueType = getRelationshipValueType(field, payload)\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n schemaToReturn = {\n _id: false,\n type: payload.config.localization.localeCodes.reduce((locales, locale) => {\n let localeSchema: { [key: string]: any } = {}\n\n if (hasManyRelations) {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.${locale}.relationTo`,\n },\n }\n } else {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n }\n\n return {\n ...locales,\n [locale]: field.hasMany\n ? { type: [localeSchema], default: formatDefaultValue(field) }\n : localeSchema,\n }\n }, {}),\n localized: true,\n }\n } else if (hasManyRelations) {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.relationTo`,\n },\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n } else {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n }\n\n schema.add({\n [field.name]: schemaToReturn,\n })\n}\n\nconst richText: FieldSchemaGenerator<RichTextField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: mongoose.Schema.Types.Mixed,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst row: FieldSchemaGenerator<RowField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n): void => {\n field.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n )\n }\n })\n}\n\nconst select: FieldSchemaGenerator<SelectField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n enum: field.options.map((option) => {\n if (typeof option === 'object') {\n return option.value\n }\n return option\n }),\n }\n\n if (buildSchemaOptions.draftsEnabled || !field.required) {\n ;(baseSchema.enum as unknown[]).push(null)\n }\n\n schema.add({\n [field.name]: localizeSchema(\n field,\n field.hasMany ? [baseSchema] : baseSchema,\n payload.config.localization,\n parentIsLocalized,\n ),\n })\n}\n\nconst tabs: FieldSchemaGenerator<TabsField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n schemaBuildState,\n): void => {\n field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n if (fieldIsVirtual(tab)) {\n return\n }\n const baseSchema = {\n type: buildSchema({\n buildSchemaOptions: {\n disableUnique: buildSchemaOptions.disableUnique,\n draftsEnabled: buildSchemaOptions.draftsEnabled,\n options: {\n _id: false,\n id: false,\n minimize: false,\n },\n },\n configFields: tab.fields,\n isVersion: schemaBuildState.isVersion,\n parentIsLocalized: parentIsLocalized || tab.localized,\n payload,\n schemaBuildContext: schemaBuildState.context,\n schemaPath: `${schemaBuildState.path}/tab:${tab.name}`,\n }),\n }\n\n schema.add({\n [tab.name]: localizeSchema(tab, baseSchema, payload.config.localization, parentIsLocalized),\n })\n } else {\n tab.fields.forEach((subField: Field) => {\n if (fieldIsVirtual(subField)) {\n return\n }\n const addFieldSchema = getSchemaGenerator(subField.type)\n\n if (addFieldSchema) {\n addFieldSchema(\n subField,\n schema,\n payload,\n buildSchemaOptions,\n (parentIsLocalized || tab.localized) ?? false,\n schemaBuildState,\n )\n }\n })\n }\n })\n}\n\nconst text: FieldSchemaGenerator<TextField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: field.hasMany ? [String] : String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst slug: FieldSchemaGenerator<SlugField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema: SchemaTypeOptions<any> = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst textarea: FieldSchemaGenerator<TextareaField> = (\n field: TextareaField,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const baseSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: String,\n }\n\n schema.add({\n [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized),\n })\n}\n\nconst upload: FieldSchemaGenerator<UploadField> = (\n field,\n schema,\n payload,\n buildSchemaOptions,\n parentIsLocalized,\n): void => {\n const hasManyRelations = Array.isArray(field.relationTo)\n let schemaToReturn: { [key: string]: any } = {}\n\n const valueType = getRelationshipValueType(field, payload)\n\n if (fieldShouldBeLocalized({ field, parentIsLocalized }) && payload.config.localization) {\n schemaToReturn = {\n _id: false,\n type: payload.config.localization.localeCodes.reduce((locales, locale) => {\n let localeSchema: { [key: string]: any } = {}\n\n if (hasManyRelations) {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.${locale}.relationTo`,\n },\n }\n } else {\n localeSchema = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n }\n\n return {\n ...locales,\n [locale]: field.hasMany\n ? { type: [localeSchema], default: formatDefaultValue(field) }\n : localeSchema,\n }\n }, {}),\n localized: true,\n }\n } else if (hasManyRelations) {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n _id: false,\n type: mongoose.Schema.Types.Mixed,\n relationTo: { type: String, enum: field.relationTo },\n value: {\n type: valueType,\n refPath: `${field.name}.relationTo`,\n },\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n } else {\n schemaToReturn = {\n ...formatBaseSchema({ buildSchemaOptions, field, parentIsLocalized }),\n type: valueType,\n ref: field.relationTo,\n }\n\n if (field.hasMany) {\n schemaToReturn = {\n type: [schemaToReturn],\n default: formatDefaultValue(field),\n }\n }\n }\n\n schema.add({\n [field.name]: schemaToReturn,\n })\n}\n\nconst getSchemaGenerator = (fieldType: string): FieldSchemaGenerator | null => {\n if (fieldType in fieldToSchemaMap) {\n return fieldToSchemaMap[fieldType as keyof typeof fieldToSchemaMap] as FieldSchemaGenerator\n }\n\n return null\n}\n\nconst fieldToSchemaMap = {\n slug,\n array,\n blocks,\n checkbox,\n code,\n collapsible,\n date,\n email,\n group,\n json,\n number,\n point,\n radio,\n relationship,\n richText,\n row,\n select,\n tabs,\n text,\n textarea,\n upload,\n}\n\nconst getRelationshipValueType = (field: RelationshipField | UploadField, payload: Payload) => {\n if (typeof field.relationTo === 'string') {\n const customIDType = payload.collections[field.relationTo]?.customIDType\n\n if (!customIDType) {\n return mongoose.Schema.Types.ObjectId\n }\n\n if (customIDType === 'number') {\n if (payload.db.useBigIntForNumberIDs) {\n return mongoose.Schema.Types.BigInt\n } else {\n return mongoose.Schema.Types.Number\n }\n }\n\n return mongoose.Schema.Types.String\n }\n\n // has custom id relationTo\n if (\n field.relationTo.some((relationTo) => {\n return !!payload.collections[relationTo]?.customIDType\n })\n ) {\n return mongoose.Schema.Types.Mixed\n }\n\n return mongoose.Schema.Types.ObjectId\n}\n"],"names":["mongoose","createSchemaBuildContext","fieldAffectsData","fieldIsPresentationalOnly","fieldIsVirtual","fieldShouldBeLocalized","tabHasName","getBlockSchemaCacheKey","formatDefaultValue","field","defaultValue","undefined","formatBaseSchema","buildSchemaOptions","parentIsLocalized","disableUnique","draftsEnabled","indexSortableFields","schema","default","index","unique","required","type","sparse","hidden","localizeSchema","entity","localization","Array","isArray","locales","localeCodes","reduce","localeSchema","locale","_id","localized","buildSchema","args","configFields","flattenedFields","payload","schemaBuildContext","schemaBuildState","context","isVersion","path","schemaPath","allowIDField","options","fields","schemaFields","fieldsToSearch","idField","find","name","db","useBigIntForNumberIDs","Schema","Types","BigInt","Number","String","filter","forEach","addFieldSchema","getSchemaGenerator","compoundIndexes","indexDefinition","pathHasLocalized","config","localizedPath","replace","code","array","baseSchema","id","minimize","add","blocks","fieldSchema","discriminatorKey","blockItem","block","isLocalized","Boolean","isReference","fieldPath","blockSchema","getOrCreate","build","template","blockField","slug","cacheKey","blockSlug","definition","localeCode","discriminator","checkbox","collapsible","subField","date","Date","email","group","formattedBaseSchema","json","Mixed","number","hasMany","point","enum","coordinates","indexOptions","radio","map","option","value","relationship","hasManyRelations","relationTo","schemaToReturn","valueType","getRelationshipValueType","refPath","ref","richText","row","select","push","tabs","tab","text","textarea","upload","fieldType","fieldToSchemaMap","customIDType","collections","ObjectId","some"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Connection, Schema } from 'mongoose';
2
+ import type { SchemaBuildContext } from 'payload/internal';
3
+ import type { BuildSchemaOptions } from './buildSchema.js';
4
+ export type MongoSchemaBuildContext = SchemaBuildContext<Schema>;
5
+ /**
6
+ * Connection and global plugins can keep state on each nested schema. Mongoose does not clone
7
+ * those nested schemas when it attaches a discriminator, so cached templates would change plugin
8
+ * application.
9
+ */
10
+ export declare const createMongoSchemaBuildContext: ({ connection, }: {
11
+ connection: Connection;
12
+ }) => MongoSchemaBuildContext;
13
+ export declare const getBlockSchemaCacheKey: ({ blockSlug, buildSchemaOptions, fieldPath, isLocalized, isReference, isVersion, }: {
14
+ blockSlug: string;
15
+ buildSchemaOptions: BuildSchemaOptions;
16
+ fieldPath: string;
17
+ isLocalized: boolean;
18
+ isReference: boolean;
19
+ isVersion: boolean;
20
+ }) => string;
21
+ //# sourceMappingURL=schemaBuildContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaBuildContext.d.ts","sourceRoot":"","sources":["../../src/models/schemaBuildContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAK1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAiBhE;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,oBAEvC;IACD,UAAU,EAAE,UAAU,CAAA;CACvB,KAAG,uBAQH,CAAA;AAED,eAAO,MAAM,sBAAsB,uFAOhC;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;CACnB,KAAG,MASU,CAAA"}
@@ -0,0 +1,29 @@
1
+ import mongoose from 'mongoose';
2
+ import { createSchemaBuildContext } from 'payload/internal';
3
+ const getMongoosePluginRegistry = ({ mongooseInstance })=>mongooseInstance.plugins;
4
+ const defaultMongoosePluginFunctions = new Set(getMongoosePluginRegistry({
5
+ mongooseInstance: new mongoose.Mongoose({
6
+ createInitialConnection: false
7
+ })
8
+ }).map(([plugin])=>plugin));
9
+ /**
10
+ * Connection and global plugins can keep state on each nested schema. Mongoose does not clone
11
+ * those nested schemas when it attaches a discriminator, so cached templates would change plugin
12
+ * application.
13
+ */ export const createMongoSchemaBuildContext = ({ connection })=>{
14
+ const hasCustomGlobalPlugins = getMongoosePluginRegistry({
15
+ mongooseInstance: connection.base
16
+ }).some(([plugin])=>!defaultMongoosePluginFunctions.has(plugin));
17
+ return createSchemaBuildContext({
18
+ isCacheEnabled: connection.plugins.length === 0 && !hasCustomGlobalPlugins
19
+ });
20
+ };
21
+ export const getBlockSchemaCacheKey = ({ blockSlug, buildSchemaOptions, fieldPath, isLocalized, isReference, isVersion })=>[
22
+ `${isReference ? `block:${blockSlug}` : `inline:${fieldPath}/block:${blockSlug}`}${isVersion ? '-version' : ''}`,
23
+ buildSchemaOptions.disableUnique && 'disableUnique:true',
24
+ buildSchemaOptions.draftsEnabled && 'draftsEnabled:true',
25
+ buildSchemaOptions.indexSortableFields && 'indexSortableFields:true',
26
+ isLocalized && 'isLocalized:true'
27
+ ].filter(Boolean).join('|');
28
+
29
+ //# sourceMappingURL=schemaBuildContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/schemaBuildContext.ts"],"sourcesContent":["import type { Connection, Schema } from 'mongoose'\nimport type { SchemaBuildContext } from 'payload/internal'\n\nimport mongoose from 'mongoose'\nimport { createSchemaBuildContext } from 'payload/internal'\n\nimport type { BuildSchemaOptions } from './buildSchema.js'\n\nexport type MongoSchemaBuildContext = SchemaBuildContext<Schema>\n\ntype MongoosePluginRegistry = Array<[Parameters<typeof mongoose.plugin>[0], unknown]>\n\nconst getMongoosePluginRegistry = ({\n mongooseInstance,\n}: {\n mongooseInstance: typeof mongoose\n}): MongoosePluginRegistry =>\n (mongooseInstance as { plugins: MongoosePluginRegistry } & typeof mongoose).plugins\n\nconst defaultMongoosePluginFunctions = new Set(\n getMongoosePluginRegistry({\n mongooseInstance: new mongoose.Mongoose({ createInitialConnection: false }),\n }).map(([plugin]) => plugin),\n)\n\n/**\n * Connection and global plugins can keep state on each nested schema. Mongoose does not clone\n * those nested schemas when it attaches a discriminator, so cached templates would change plugin\n * application.\n */\nexport const createMongoSchemaBuildContext = ({\n connection,\n}: {\n connection: Connection\n}): MongoSchemaBuildContext => {\n const hasCustomGlobalPlugins = getMongoosePluginRegistry({\n mongooseInstance: connection.base,\n }).some(([plugin]) => !defaultMongoosePluginFunctions.has(plugin))\n\n return createSchemaBuildContext<Schema>({\n isCacheEnabled: connection.plugins.length === 0 && !hasCustomGlobalPlugins,\n })\n}\n\nexport const getBlockSchemaCacheKey = ({\n blockSlug,\n buildSchemaOptions,\n fieldPath,\n isLocalized,\n isReference,\n isVersion,\n}: {\n blockSlug: string\n buildSchemaOptions: BuildSchemaOptions\n fieldPath: string\n isLocalized: boolean\n isReference: boolean\n isVersion: boolean\n}): string =>\n [\n `${isReference ? `block:${blockSlug}` : `inline:${fieldPath}/block:${blockSlug}`}${isVersion ? '-version' : ''}`,\n buildSchemaOptions.disableUnique && 'disableUnique:true',\n buildSchemaOptions.draftsEnabled && 'draftsEnabled:true',\n buildSchemaOptions.indexSortableFields && 'indexSortableFields:true',\n isLocalized && 'isLocalized:true',\n ]\n .filter(Boolean)\n .join('|')\n"],"names":["mongoose","createSchemaBuildContext","getMongoosePluginRegistry","mongooseInstance","plugins","defaultMongoosePluginFunctions","Set","Mongoose","createInitialConnection","map","plugin","createMongoSchemaBuildContext","connection","hasCustomGlobalPlugins","base","some","has","isCacheEnabled","length","getBlockSchemaCacheKey","blockSlug","buildSchemaOptions","fieldPath","isLocalized","isReference","isVersion","disableUnique","draftsEnabled","indexSortableFields","filter","Boolean","join"],"mappings":"AAGA,OAAOA,cAAc,WAAU;AAC/B,SAASC,wBAAwB,QAAQ,mBAAkB;AAQ3D,MAAMC,4BAA4B,CAAC,EACjCC,gBAAgB,EAGjB,GACC,AAACA,iBAA2EC,OAAO;AAErF,MAAMC,iCAAiC,IAAIC,IACzCJ,0BAA0B;IACxBC,kBAAkB,IAAIH,SAASO,QAAQ,CAAC;QAAEC,yBAAyB;IAAM;AAC3E,GAAGC,GAAG,CAAC,CAAC,CAACC,OAAO,GAAKA;AAGvB;;;;CAIC,GACD,OAAO,MAAMC,gCAAgC,CAAC,EAC5CC,UAAU,EAGX;IACC,MAAMC,yBAAyBX,0BAA0B;QACvDC,kBAAkBS,WAAWE,IAAI;IACnC,GAAGC,IAAI,CAAC,CAAC,CAACL,OAAO,GAAK,CAACL,+BAA+BW,GAAG,CAACN;IAE1D,OAAOT,yBAAiC;QACtCgB,gBAAgBL,WAAWR,OAAO,CAACc,MAAM,KAAK,KAAK,CAACL;IACtD;AACF,EAAC;AAED,OAAO,MAAMM,yBAAyB,CAAC,EACrCC,SAAS,EACTC,kBAAkB,EAClBC,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,SAAS,EAQV,GACC;QACE,GAAGD,cAAc,CAAC,MAAM,EAAEJ,WAAW,GAAG,CAAC,OAAO,EAAEE,UAAU,OAAO,EAAEF,WAAW,GAAGK,YAAY,aAAa,IAAI;QAChHJ,mBAAmBK,aAAa,IAAI;QACpCL,mBAAmBM,aAAa,IAAI;QACpCN,mBAAmBO,mBAAmB,IAAI;QAC1CL,eAAe;KAChB,CACEM,MAAM,CAACC,SACPC,IAAI,CAAC,KAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrateRelationshipsV2_V3.d.ts","sourceRoot":"","sources":["../../src/predefinedMigrations/migrateRelationshipsV2_V3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAS,cAAc,EAAE,MAAM,SAAS,CAAA;AA8GpD,wBAAsB,yBAAyB,CAAC,EAC9C,SAAS,EACT,GAAG,GACJ,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGhB"}
1
+ {"version":3,"file":"migrateRelationshipsV2_V3.d.ts","sourceRoot":"","sources":["../../src/predefinedMigrations/migrateRelationshipsV2_V3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAS,cAAc,EAAE,MAAM,SAAS,CAAA;AA4GpD,wBAAsB,yBAAyB,CAAC,EAC9C,SAAS,EACT,GAAG,GACJ,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGhB"}
@@ -28,8 +28,9 @@ const migrateModelWithBatching = async ({ batchSize, db, fields, Model, parentIs
28
28
  parentIsLocalized
29
29
  });
30
30
  }
31
- await Model.collection.bulkWrite(// @ts-expect-error bulkWrite has a weird type, insertOne, updateMany etc are required here as well.
32
- docs.map((doc)=>({
31
+ // Writing through the driver collection skips Mongoose timestamps entirely,
32
+ // which is what we want here - timestamps are added by the write transform above
33
+ await Model.collection.bulkWrite(docs.map((doc)=>({
33
34
  updateOne: {
34
35
  filter: {
35
36
  _id: doc._id
@@ -39,8 +40,7 @@ const migrateModelWithBatching = async ({ batchSize, db, fields, Model, parentIs
39
40
  }
40
41
  }
41
42
  })), {
42
- session,
43
- timestamps: false
43
+ session
44
44
  });
45
45
  skip += batchSize;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/predefinedMigrations/migrateRelationshipsV2_V3.ts"],"sourcesContent":["import type { ClientSession, Model } from 'mongoose'\nimport type { Field, PayloadRequest } from 'payload'\n\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { getCollection, getGlobal } from '../utilities/getEntity.js'\nimport { getSession } from '../utilities/getSession.js'\nimport { transform } from '../utilities/transform.js'\n\nconst migrateModelWithBatching = async ({\n batchSize,\n db,\n fields,\n Model,\n parentIsLocalized,\n session,\n}: {\n batchSize: number\n db: MongooseAdapter\n fields: Field[]\n Model: Model<any>\n parentIsLocalized: boolean\n session?: ClientSession\n}): Promise<void> => {\n let hasNext = true\n let skip = 0\n\n while (hasNext) {\n const docs = await Model.find(\n {},\n {},\n {\n lean: true,\n limit: batchSize + 1,\n session,\n skip,\n },\n )\n\n if (docs.length === 0) {\n break\n }\n\n hasNext = docs.length > batchSize\n\n if (hasNext) {\n docs.pop()\n }\n\n for (const doc of docs) {\n transform({ adapter: db, data: doc, fields, operation: 'write', parentIsLocalized })\n }\n\n await Model.collection.bulkWrite(\n // @ts-expect-error bulkWrite has a weird type, insertOne, updateMany etc are required here as well.\n docs.map((doc) => ({\n updateOne: {\n filter: { _id: doc._id },\n update: {\n $set: doc,\n },\n },\n })),\n {\n session, // Timestamps are manually added by the write transform\n timestamps: false,\n },\n )\n\n skip += batchSize\n }\n}\n\nconst hasRelationshipOrUploadField = ({ fields }: { fields: Field[] }): boolean => {\n for (const field of fields) {\n if (field.type === 'relationship' || field.type === 'upload') {\n return true\n }\n\n if ('fields' in field) {\n if (hasRelationshipOrUploadField({ fields: field.fields })) {\n return true\n }\n }\n\n if ('blocks' in field) {\n for (const block of field.blocks) {\n if (typeof block === 'string') {\n // Skip - string blocks have been added in v3 and thus don't need to be migrated\n continue\n }\n if (hasRelationshipOrUploadField({ fields: block.fields })) {\n return true\n }\n }\n }\n\n if ('tabs' in field) {\n for (const tab of field.tabs) {\n if (hasRelationshipOrUploadField({ fields: tab.fields })) {\n return true\n }\n }\n }\n }\n\n return false\n}\n\nexport async function migrateRelationshipsV2_V3({\n batchSize,\n req,\n}: {\n batchSize: number\n req: PayloadRequest\n}): Promise<void> {\n const { payload } = req\n const db = payload.db as MongooseAdapter\n const config = payload.config\n\n const session = await getSession(db, req)\n\n for (const collection of payload.config.collections) {\n if (hasRelationshipOrUploadField(collection)) {\n payload.logger.info(`Migrating collection \"${collection.slug}\"`)\n\n const { Model } = getCollection({ adapter: db, collectionSlug: collection.slug })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: collection.fields,\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated collection \"${collection.slug}\"`)\n }\n\n if (collection.versions) {\n payload.logger.info(`Migrating collection versions \"${collection.slug}\"`)\n\n const { Model } = getCollection({\n adapter: db,\n collectionSlug: collection.slug,\n versions: true,\n })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: buildVersionCollectionFields(config, collection),\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated collection versions \"${collection.slug}\"`)\n }\n }\n\n const { globals: GlobalsModel } = db\n\n for (const global of payload.config.globals) {\n if (hasRelationshipOrUploadField(global)) {\n payload.logger.info(`Migrating global \"${global.slug}\"`)\n\n const doc = await GlobalsModel.findOne<Record<string, unknown>>(\n {\n globalType: {\n $eq: global.slug,\n },\n },\n {},\n { lean: true, session },\n )\n\n // in case if the global doesn't exist in the database yet (not saved)\n if (doc) {\n transform({\n adapter: db,\n data: doc,\n fields: global.fields,\n operation: 'write',\n })\n\n await GlobalsModel.collection.updateOne(\n {\n globalType: global.slug,\n },\n { $set: doc },\n { session },\n )\n }\n\n payload.logger.info(`Migrated global \"${global.slug}\"`)\n }\n\n if (global.versions) {\n payload.logger.info(`Migrating global versions \"${global.slug}\"`)\n\n const { Model } = getGlobal({ adapter: db, globalSlug: global.slug, versions: true })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: buildVersionGlobalFields(config, global),\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated global versions \"${global.slug}\"`)\n }\n }\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","getCollection","getGlobal","getSession","transform","migrateModelWithBatching","batchSize","db","fields","Model","parentIsLocalized","session","hasNext","skip","docs","find","lean","limit","length","pop","doc","adapter","data","operation","collection","bulkWrite","map","updateOne","filter","_id","update","$set","timestamps","hasRelationshipOrUploadField","field","type","block","blocks","tab","tabs","migrateRelationshipsV2_V3","req","payload","config","collections","logger","info","slug","collectionSlug","versions","globals","GlobalsModel","global","findOne","globalType","$eq","globalSlug"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/predefinedMigrations/migrateRelationshipsV2_V3.ts"],"sourcesContent":["import type { ClientSession, Model } from 'mongoose'\nimport type { Field, PayloadRequest } from 'payload'\n\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { getCollection, getGlobal } from '../utilities/getEntity.js'\nimport { getSession } from '../utilities/getSession.js'\nimport { transform } from '../utilities/transform.js'\n\nconst migrateModelWithBatching = async ({\n batchSize,\n db,\n fields,\n Model,\n parentIsLocalized,\n session,\n}: {\n batchSize: number\n db: MongooseAdapter\n fields: Field[]\n Model: Model<any>\n parentIsLocalized: boolean\n session?: ClientSession\n}): Promise<void> => {\n let hasNext = true\n let skip = 0\n\n while (hasNext) {\n const docs = await Model.find(\n {},\n {},\n {\n lean: true,\n limit: batchSize + 1,\n session,\n skip,\n },\n )\n\n if (docs.length === 0) {\n break\n }\n\n hasNext = docs.length > batchSize\n\n if (hasNext) {\n docs.pop()\n }\n\n for (const doc of docs) {\n transform({ adapter: db, data: doc, fields, operation: 'write', parentIsLocalized })\n }\n\n // Writing through the driver collection skips Mongoose timestamps entirely,\n // which is what we want here - timestamps are added by the write transform above\n await Model.collection.bulkWrite(\n docs.map((doc) => ({\n updateOne: {\n filter: { _id: doc._id },\n update: {\n $set: doc,\n },\n },\n })),\n { session },\n )\n\n skip += batchSize\n }\n}\n\nconst hasRelationshipOrUploadField = ({ fields }: { fields: Field[] }): boolean => {\n for (const field of fields) {\n if (field.type === 'relationship' || field.type === 'upload') {\n return true\n }\n\n if ('fields' in field) {\n if (hasRelationshipOrUploadField({ fields: field.fields })) {\n return true\n }\n }\n\n if ('blocks' in field) {\n for (const block of field.blocks) {\n if (typeof block === 'string') {\n // Skip - string blocks have been added in v3 and thus don't need to be migrated\n continue\n }\n if (hasRelationshipOrUploadField({ fields: block.fields })) {\n return true\n }\n }\n }\n\n if ('tabs' in field) {\n for (const tab of field.tabs) {\n if (hasRelationshipOrUploadField({ fields: tab.fields })) {\n return true\n }\n }\n }\n }\n\n return false\n}\n\nexport async function migrateRelationshipsV2_V3({\n batchSize,\n req,\n}: {\n batchSize: number\n req: PayloadRequest\n}): Promise<void> {\n const { payload } = req\n const db = payload.db as MongooseAdapter\n const config = payload.config\n\n const session = await getSession(db, req)\n\n for (const collection of payload.config.collections) {\n if (hasRelationshipOrUploadField(collection)) {\n payload.logger.info(`Migrating collection \"${collection.slug}\"`)\n\n const { Model } = getCollection({ adapter: db, collectionSlug: collection.slug })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: collection.fields,\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated collection \"${collection.slug}\"`)\n }\n\n if (collection.versions) {\n payload.logger.info(`Migrating collection versions \"${collection.slug}\"`)\n\n const { Model } = getCollection({\n adapter: db,\n collectionSlug: collection.slug,\n versions: true,\n })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: buildVersionCollectionFields(config, collection),\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated collection versions \"${collection.slug}\"`)\n }\n }\n\n const { globals: GlobalsModel } = db\n\n for (const global of payload.config.globals) {\n if (hasRelationshipOrUploadField(global)) {\n payload.logger.info(`Migrating global \"${global.slug}\"`)\n\n const doc = (await GlobalsModel.findOne(\n {\n globalType: {\n $eq: global.slug,\n },\n },\n {},\n { lean: true, session },\n )) as null | Record<string, unknown>\n\n // in case if the global doesn't exist in the database yet (not saved)\n if (doc) {\n transform({\n adapter: db,\n data: doc,\n fields: global.fields,\n operation: 'write',\n })\n\n await GlobalsModel.collection.updateOne(\n {\n globalType: global.slug,\n },\n { $set: doc },\n { session },\n )\n }\n\n payload.logger.info(`Migrated global \"${global.slug}\"`)\n }\n\n if (global.versions) {\n payload.logger.info(`Migrating global versions \"${global.slug}\"`)\n\n const { Model } = getGlobal({ adapter: db, globalSlug: global.slug, versions: true })\n\n await migrateModelWithBatching({\n batchSize,\n db,\n fields: buildVersionGlobalFields(config, global),\n Model,\n parentIsLocalized: false,\n session,\n })\n\n payload.logger.info(`Migrated global versions \"${global.slug}\"`)\n }\n }\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","getCollection","getGlobal","getSession","transform","migrateModelWithBatching","batchSize","db","fields","Model","parentIsLocalized","session","hasNext","skip","docs","find","lean","limit","length","pop","doc","adapter","data","operation","collection","bulkWrite","map","updateOne","filter","_id","update","$set","hasRelationshipOrUploadField","field","type","block","blocks","tab","tabs","migrateRelationshipsV2_V3","req","payload","config","collections","logger","info","slug","collectionSlug","versions","globals","GlobalsModel","global","findOne","globalType","$eq","globalSlug"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,eAAO,MAAM,UAAU,GAAU,iEAO9B;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;CACb,qCAYA,CAAA"}
1
+ {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,eAAO,MAAM,UAAU,oEAOpB;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;CACb,qCAYA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildSearchParams.d.ts","sourceRoot":"","sources":["../../src/queries/buildSearchParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAe,OAAO,EAAE,MAAM,SAAS,CAAA;AAc7E,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,GAAG,GACJ,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAkUnC"}
1
+ {"version":3,"file":"buildSearchParams.d.ts","sourceRoot":"","sources":["../../src/queries/buildSearchParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,QAAQ,EAER,OAAO,EACR,MAAM,SAAS,CAAA;AAkBhB,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,GAAG,GACJ,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAmZnC"}