@payloadcms/db-mongodb 4.0.0-internal.4cbdd50 → 4.0.0-internal.532221d

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 (37) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  3. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  4. package/dist/models/buildSchema.d.ts.map +1 -1
  5. package/dist/models/buildSchema.js +14 -0
  6. package/dist/models/buildSchema.js.map +1 -1
  7. package/dist/queries/buildQuery.d.ts.map +1 -1
  8. package/dist/queries/buildSortParam.d.ts.map +1 -1
  9. package/dist/queries/buildSortParam.spec.js +1 -1
  10. package/dist/queries/buildSortParam.spec.js.map +1 -1
  11. package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
  12. package/dist/queries/getLocalizedSortProperty.d.ts.map +1 -1
  13. package/dist/queries/getLocalizedSortProperty.spec.js +1 -1
  14. package/dist/queries/getLocalizedSortProperty.spec.js.map +1 -1
  15. package/dist/queries/operatorMap.d.ts.map +1 -1
  16. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  17. package/dist/testCredentials.d.ts.map +1 -1
  18. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  19. package/dist/transactions/beginTransaction.js +0 -1
  20. package/dist/transactions/beginTransaction.js.map +1 -1
  21. package/dist/updateJobs.d.ts.map +1 -1
  22. package/dist/updateJobs.js +70 -13
  23. package/dist/updateJobs.js.map +1 -1
  24. package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
  25. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  26. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -1
  27. package/dist/utilities/getDBName.d.ts.map +1 -1
  28. package/dist/utilities/getEntity.d.ts +1 -1
  29. package/dist/utilities/getEntity.d.ts.map +1 -1
  30. package/dist/utilities/handleError.d.ts.map +1 -1
  31. package/dist/utilities/isObjectID.d.ts.map +1 -1
  32. package/dist/utilities/transform.d.ts.map +1 -1
  33. package/dist/utilities/transform.js +15 -0
  34. package/dist/utilities/transform.js.map +1 -1
  35. package/dist/utilities/transform.spec.js +67 -0
  36. package/dist/utilities/transform.spec.js.map +1 -1
  37. package/package.json +3 -3
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018-2025 Payload CMS, Inc. <info@payloadcms.com>
3
+ Copyright (c) 2018-2026 Payload CMS, LLC <info@payloadcms.com>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
@@ -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,GAChC,YAAY,yBAAyB,EACrC,SAAS,OAAO,EAChB,kBAAkB,KACjB,MAoCF,CAAA"}
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 +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,GAAI,SAAS,eAAe,KAAG,WAAW,GAAG,IAgCzE,CAAA"}
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 +1 @@
1
- {"version":3,"file":"buildSchema.d.ts","sourceRoot":"","sources":["../../src/models/buildSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,MAAM,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAA;AAGtF,OAAO,EAQL,KAAK,KAAK,EAEV,KAAK,cAAc,EAKnB,KAAK,OAAO,EAMZ,KAAK,sBAAsB,EAQ5B,MAAM,SAAS,CAAA;AAShB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAkFD,eAAO,MAAM,WAAW,GAAI,MAAM;IAChC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,MAqEH,CAAA"}
1
+ {"version":3,"file":"buildSchema.d.ts","sourceRoot":"","sources":["../../src/models/buildSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,MAAM,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAA;AAGtF,OAAO,EAQL,KAAK,KAAK,EAEV,KAAK,cAAc,EAKnB,KAAK,OAAO,EAMZ,KAAK,sBAAsB,EAS5B,MAAM,SAAS,CAAA;AAShB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAkFD,eAAO,MAAM,WAAW,SAAU;IAChC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,MAqEH,CAAA"}
@@ -571,6 +571,19 @@ const text = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
571
571
  [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
572
572
  });
573
573
  };
574
+ const slug = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
575
+ const baseSchema = {
576
+ ...formatBaseSchema({
577
+ buildSchemaOptions,
578
+ field,
579
+ parentIsLocalized
580
+ }),
581
+ type: String
582
+ };
583
+ schema.add({
584
+ [field.name]: localizeSchema(field, baseSchema, payload.config.localization, parentIsLocalized)
585
+ });
586
+ };
574
587
  const textarea = (field, schema, payload, buildSchemaOptions, parentIsLocalized)=>{
575
588
  const baseSchema = {
576
589
  ...formatBaseSchema({
@@ -693,6 +706,7 @@ const getSchemaGenerator = (fieldType)=>{
693
706
  return null;
694
707
  };
695
708
  const fieldToSchemaMap = {
709
+ slug,
696
710
  array,
697
711
  blocks,
698
712
  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 {\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 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","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 +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":"buildSortParam.d.ts","sourceRoot":"","sources":["../../src/queries/buildSortParam.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,KAAK,IAAI,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,aAAa,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;CACjB,EAAE,CAAA;AAEH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAA;AAgH1C,eAAO,MAAM,cAAc,GAAI,sGAU5B,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAgF9B,CAAA"}
1
+ {"version":3,"file":"buildSortParam.d.ts","sourceRoot":"","sources":["../../src/queries/buildSortParam.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,KAAK,IAAI,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAKlD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,aAAa,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;CACjB,EAAE,CAAA;AAEH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAA;AAgH1C,eAAO,MAAM,cAAc,yGAUxB,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAgF9B,CAAA"}
@@ -4,7 +4,7 @@ import { buildSortParam } from './buildSortParam.js';
4
4
  let config;
5
5
  describe('builds sort params', ()=>{
6
6
  beforeAll(async ()=>{
7
- config = await sanitizeConfig({
7
+ config = sanitizeConfig({
8
8
  localization: {
9
9
  defaultLocale: 'en',
10
10
  fallback: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildSortParam.spec.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from 'payload'\nimport { describe, beforeAll, it, expect } from 'vitest'\n\nimport { sanitizeConfig } from 'payload'\n\nimport { buildSortParam } from './buildSortParam.js'\nimport { MongooseAdapter } from '../index.js'\n\nlet config: SanitizedConfig\n\ndescribe('builds sort params', () => {\n beforeAll(async () => {\n config = await sanitizeConfig({\n localization: {\n defaultLocale: 'en',\n fallback: true,\n locales: ['en', 'es'],\n },\n } as Config)\n })\n it('adds a fallback on non-unique field', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc', createdAt: 'desc' })\n })\n\n it('adds a fallback when sort isnt provided', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: undefined,\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ createdAt: 'desc' })\n })\n\n it('does not add a fallback on non-unique field when disableFallbackSort is true', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: true,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc' })\n })\n\n // This test should be true even when disableFallbackSort is false\n it('does not add a fallback on unique field', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n unique: true, // Marking this field as unique\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc' })\n })\n})\n"],"names":["describe","beforeAll","it","expect","sanitizeConfig","buildSortParam","config","localization","defaultLocale","fallback","locales","result","parentIsLocalized","fields","name","type","locale","sort","timestamps","adapter","disableFallbackSort","toStrictEqual","order","createdAt","undefined","unique"],"mappings":"AACA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAExD,SAASC,cAAc,QAAQ,UAAS;AAExC,SAASC,cAAc,QAAQ,sBAAqB;AAGpD,IAAIC;AAEJN,SAAS,sBAAsB;IAC7BC,UAAU;QACRK,SAAS,MAAMF,eAAe;YAC5BG,cAAc;gBACZC,eAAe;gBACfC,UAAU;gBACVC,SAAS;oBAAC;oBAAM;iBAAK;YACvB;QACF;IACF;IACAR,GAAG,uCAAuC;QACxC,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;YAAOC,WAAW;QAAO;IACjE;IAEArB,GAAG,2CAA2C;QAC5C,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAMO;YACNN,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEE,WAAW;QAAO;IACnD;IAEArB,GAAG,gFAAgF;QACjF,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;QAAM;IAC9C;IAEA,kEAAkE;IAClEpB,GAAG,2CAA2C;QAC5C,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;oBACNU,QAAQ;gBACV;aACD;YACDT,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;QAAM;IAC9C;AACF"}
1
+ {"version":3,"sources":["../../src/queries/buildSortParam.spec.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from 'payload'\nimport { describe, beforeAll, it, expect } from 'vitest'\n\nimport { sanitizeConfig } from 'payload'\n\nimport { buildSortParam } from './buildSortParam.js'\nimport { MongooseAdapter } from '../index.js'\n\nlet config: SanitizedConfig\n\ndescribe('builds sort params', () => {\n beforeAll(async () => {\n config = sanitizeConfig({\n localization: {\n defaultLocale: 'en',\n fallback: true,\n locales: ['en', 'es'],\n },\n } as Config)\n })\n it('adds a fallback on non-unique field', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc', createdAt: 'desc' })\n })\n\n it('adds a fallback when sort isnt provided', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: undefined,\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ createdAt: 'desc' })\n })\n\n it('does not add a fallback on non-unique field when disableFallbackSort is true', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: true,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc' })\n })\n\n // This test should be true even when disableFallbackSort is false\n it('does not add a fallback on unique field', () => {\n const result = buildSortParam({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n {\n name: 'order',\n type: 'number',\n unique: true, // Marking this field as unique\n },\n ],\n locale: 'en',\n sort: 'order',\n timestamps: true,\n adapter: {\n disableFallbackSort: false,\n } as MongooseAdapter,\n })\n\n expect(result).toStrictEqual({ order: 'asc' })\n })\n})\n"],"names":["describe","beforeAll","it","expect","sanitizeConfig","buildSortParam","config","localization","defaultLocale","fallback","locales","result","parentIsLocalized","fields","name","type","locale","sort","timestamps","adapter","disableFallbackSort","toStrictEqual","order","createdAt","undefined","unique"],"mappings":"AACA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAExD,SAASC,cAAc,QAAQ,UAAS;AAExC,SAASC,cAAc,QAAQ,sBAAqB;AAGpD,IAAIC;AAEJN,SAAS,sBAAsB;IAC7BC,UAAU;QACRK,SAASF,eAAe;YACtBG,cAAc;gBACZC,eAAe;gBACfC,UAAU;gBACVC,SAAS;oBAAC;oBAAM;iBAAK;YACvB;QACF;IACF;IACAR,GAAG,uCAAuC;QACxC,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;YAAOC,WAAW;QAAO;IACjE;IAEArB,GAAG,2CAA2C;QAC5C,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAMO;YACNN,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEE,WAAW;QAAO;IACnD;IAEArB,GAAG,gFAAgF;QACjF,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;QAAM;IAC9C;IAEA,kEAAkE;IAClEpB,GAAG,2CAA2C;QAC5C,MAAMS,SAASN,eAAe;YAC5BC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;gBACA;oBACED,MAAM;oBACNC,MAAM;oBACNU,QAAQ;gBACV;aACD;YACDT,QAAQ;YACRC,MAAM;YACNC,YAAY;YACZC,SAAS;gBACPC,qBAAqB;YACvB;QACF;QAEAjB,OAAOQ,QAAQU,aAAa,CAAC;YAAEC,OAAO;QAAM;IAC9C;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"getBuildQueryPlugin.d.ts","sourceRoot":"","sources":["../../src/queries/getBuildQueryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7D,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAKD,eAAO,MAAM,mBAAmB,GAAI,sCAGjC,uBAA4B,MACI,QAAQ,GAAG,SAmD7C,CAAA"}
1
+ {"version":3,"file":"getBuildQueryPlugin.d.ts","sourceRoot":"","sources":["../../src/queries/getBuildQueryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7D,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAKD,eAAO,MAAM,mBAAmB,yCAG7B,uBAAuB,cACiB,GAAG,SAmD7C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLocalizedSortProperty.d.ts","sourceRoot":"","sources":["../../src/queries/getLocalizedSortProperty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,oGAOtC,IAAI,KAAG,MA8FT,CAAA"}
1
+ {"version":3,"file":"getLocalizedSortProperty.d.ts","sourceRoot":"","sources":["../../src/queries/getLocalizedSortProperty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,wBAAwB,uGAOlC,IAAI,KAAG,MA8FT,CAAA"}
@@ -4,7 +4,7 @@ import { getLocalizedSortProperty } from './getLocalizedSortProperty.js';
4
4
  let config;
5
5
  describe('get localized sort property', ()=>{
6
6
  beforeAll(async ()=>{
7
- config = await sanitizeConfig({
7
+ config = sanitizeConfig({
8
8
  localization: {
9
9
  defaultLocale: 'en',
10
10
  fallback: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/getLocalizedSortProperty.spec.ts"],"sourcesContent":["import { describe, beforeAll, it, expect } from 'vitest'\nimport type { Config, SanitizedConfig } from 'payload'\nimport { flattenAllFields, sanitizeConfig } from 'payload'\n\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\nlet config: SanitizedConfig\n\ndescribe('get localized sort property', () => {\n beforeAll(async () => {\n config = await sanitizeConfig({\n localization: {\n defaultLocale: 'en',\n fallback: true,\n locales: ['en', 'es'],\n },\n } as Config)\n })\n it('passes through a non-localized sort property', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title')\n })\n\n it('properly localizes an un-localized sort property', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n\n it('keeps specifically asked-for localized sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n locale: 'en',\n segments: ['title', 'es'],\n })\n\n expect(result).toStrictEqual('title.es')\n })\n\n it('properly localizes nested sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n name: 'group',\n type: 'group',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['group', 'title'],\n })\n\n expect(result).toStrictEqual('group.title.en')\n })\n\n it('keeps requested locale with nested sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n name: 'group',\n type: 'group',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['group', 'title', 'es'],\n })\n\n expect(result).toStrictEqual('group.title.es')\n })\n\n it('properly localizes field within row', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n\n it('properly localizes field within named tab', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'tab',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['tab', 'title'],\n })\n\n expect(result).toStrictEqual('tab.title.en')\n })\n\n it('properly localizes field within unnamed tab', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n label: 'Tab',\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n})\n"],"names":["describe","beforeAll","it","expect","flattenAllFields","sanitizeConfig","getLocalizedSortProperty","config","localization","defaultLocale","fallback","locales","result","parentIsLocalized","fields","name","type","locale","segments","toStrictEqual","localized","tabs","label"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAExD,SAASC,gBAAgB,EAAEC,cAAc,QAAQ,UAAS;AAE1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAExE,IAAIC;AAEJP,SAAS,+BAA+B;IACtCC,UAAU;QACRM,SAAS,MAAMF,eAAe;YAC5BG,cAAc;gBACZC,eAAe;gBACfC,UAAU;gBACVC,SAAS;oBAAC;oBAAM;iBAAK;YACvB;QACF;IACF;IACAT,GAAG,gDAAgD;QACjD,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;gBACR;aACD;YACDC,QAAQ;YACRC,UAAU;gBAAC;aAAQ;QACrB;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,oDAAoD;QACrD,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;oBACNI,WAAW;gBACb;aACD;YACDH,QAAQ;YACRC,UAAU;gBAAC;aAAQ;QACrB;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,0DAA0D;QAC3D,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQ;gBACN;oBACEC,MAAM;oBACNC,MAAM;oBACNI,WAAW;gBACb;aACD;YACDH,QAAQ;YACRC,UAAU;gBAAC;gBAAS;aAAK;QAC3B;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,6CAA6C;QAC9C,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQV,iBAAiB;gBACvBU,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNF,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;gCACNI,WAAW;4BACb;yBACD;oBACH;iBACD;YACH;YACAH,QAAQ;YACRC,UAAU;gBAAC;gBAAS;aAAQ;QAC9B;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,sDAAsD;QACvD,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQV,iBAAiB;gBACvBU,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNF,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;gCACNI,WAAW;4BACb;yBACD;oBACH;iBACD;YACH;YACAH,QAAQ;YACRC,UAAU;gBAAC;gBAAS;gBAAS;aAAK;QACpC;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,uCAAuC;QACxC,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQV,iBAAiB;gBACvBU,QAAQ;oBACN;wBACEE,MAAM;wBACNF,QAAQ;4BACN;gCACEC,MAAM;gCACNC,MAAM;gCACNI,WAAW;4BACb;yBACD;oBACH;iBACD;YACH;YACAH,QAAQ;YACRC,UAAU;gBAAC;aAAQ;QACrB;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,6CAA6C;QAC9C,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQV,iBAAiB;gBACvBU,QAAQ;oBACN;wBACEE,MAAM;wBACNK,MAAM;4BACJ;gCACEN,MAAM;gCACND,QAAQ;oCACN;wCACEC,MAAM;wCACNC,MAAM;wCACNI,WAAW;oCACb;iCACD;4BACH;yBACD;oBACH;iBACD;YACH;YACAH,QAAQ;YACRC,UAAU;gBAAC;gBAAO;aAAQ;QAC5B;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;IAEAjB,GAAG,+CAA+C;QAChD,MAAMU,SAASN,yBAAyB;YACtCC;YACAM,mBAAmB;YACnBC,QAAQV,iBAAiB;gBACvBU,QAAQ;oBACN;wBACEE,MAAM;wBACNK,MAAM;4BACJ;gCACEP,QAAQ;oCACN;wCACEC,MAAM;wCACNC,MAAM;wCACNI,WAAW;oCACb;iCACD;gCACDE,OAAO;4BACT;yBACD;oBACH;iBACD;YACH;YACAL,QAAQ;YACRC,UAAU;gBAAC;aAAQ;QACrB;QAEAf,OAAOS,QAAQO,aAAa,CAAC;IAC/B;AACF"}
1
+ {"version":3,"sources":["../../src/queries/getLocalizedSortProperty.spec.ts"],"sourcesContent":["import { describe, beforeAll, it, expect } from 'vitest'\nimport type { Config, SanitizedConfig } from 'payload'\nimport { flattenAllFields, sanitizeConfig } from 'payload'\n\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\nlet config: SanitizedConfig\n\ndescribe('get localized sort property', () => {\n beforeAll(async () => {\n config = sanitizeConfig({\n localization: {\n defaultLocale: 'en',\n fallback: true,\n locales: ['en', 'es'],\n },\n } as Config)\n })\n it('passes through a non-localized sort property', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n },\n ],\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title')\n })\n\n it('properly localizes an un-localized sort property', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n\n it('keeps specifically asked-for localized sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n locale: 'en',\n segments: ['title', 'es'],\n })\n\n expect(result).toStrictEqual('title.es')\n })\n\n it('properly localizes nested sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n name: 'group',\n type: 'group',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['group', 'title'],\n })\n\n expect(result).toStrictEqual('group.title.en')\n })\n\n it('keeps requested locale with nested sort properties', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n name: 'group',\n type: 'group',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['group', 'title', 'es'],\n })\n\n expect(result).toStrictEqual('group.title.es')\n })\n\n it('properly localizes field within row', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n\n it('properly localizes field within named tab', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'tab',\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['tab', 'title'],\n })\n\n expect(result).toStrictEqual('tab.title.en')\n })\n\n it('properly localizes field within unnamed tab', () => {\n const result = getLocalizedSortProperty({\n config,\n parentIsLocalized: false,\n fields: flattenAllFields({\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n fields: [\n {\n name: 'title',\n type: 'text',\n localized: true,\n },\n ],\n label: 'Tab',\n },\n ],\n },\n ],\n }),\n locale: 'en',\n segments: ['title'],\n })\n\n expect(result).toStrictEqual('title.en')\n })\n})\n"],"names":["describe","beforeAll","it","expect","flattenAllFields","sanitizeConfig","getLocalizedSortProperty","config","localization","defaultLocale","fallback","locales","result","parentIsLocalized","fields","name","type","locale","segments","toStrictEqual","localized","tabs","label"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"operatorMap.d.ts","sourceRoot":"","sources":["../../src/queries/operatorMap.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAA;AAErD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcvB,CAAA"}
1
+ {"version":3,"file":"operatorMap.d.ts","sourceRoot":"","sources":["../../src/queries/operatorMap.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAA;AAErD,eAAO,MAAM,WAAW;IACtB,GAAG;IACH,MAAM;IACN,MAAM;IACN,YAAY;IACZ,kBAAkB;IAClB,EAAE;IACF,UAAU;IACV,SAAS;IACT,eAAe;IACf,IAAI;IACJ,UAAU;IACV,MAAM;IACN,MAAM;CACP,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAA;AAMnG,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAmED,eAAO,MAAM,kBAAkB,GAAI,kFAShC,sBAAsB,KACrB;IACE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GACD,SAycH,CAAA"}
1
+ {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAA;AAMnG,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAmED,eAAO,MAAM,kBAAkB,qFAS5B,sBAAsB,KACrB;IACE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GACD,SAycH,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"testCredentials.d.ts","sourceRoot":"","sources":["../src/testCredentials.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,kBAAkB,CAAA;AACpC,eAAO,MAAM,QAAQ,YAAY,CAAA;AACjC,eAAO,MAAM,UAAU;;;;CAItB,CAAA"}
1
+ {"version":3,"file":"testCredentials.d.ts","sourceRoot":"","sources":["../src/testCredentials.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,kBAAkB,CAAA;AACpC,eAAO,MAAM,QAAQ,YAAY,CAAA;AACjC,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,IAAI;IACJ,GAAG;CACJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAU/C,eAAO,MAAM,gBAAgB,EAAE,gBAsB9B,CAAA"}
1
+ {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAU/C,eAAO,MAAM,gBAAgB,EAAE,gBAqB9B,CAAA"}
@@ -10,7 +10,6 @@ export const beginTransaction = async function beginTransaction(options) {
10
10
  const client = this.connection.getClient();
11
11
  const id = uuid();
12
12
  if (!this.sessions[id]) {
13
- // @ts-expect-error BaseDatabaseAdapter and MongoosAdapter (that extends Base) sessions aren't compatible.
14
13
  this.sessions[id] = client.startSession();
15
14
  }
16
15
  if (this.sessions[id]?.inTransaction()) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { TransactionOptions } from 'mongodb'\nimport type { BeginTransaction } from 'payload'\n\nimport { APIError } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { MongooseAdapter } from '../index.js'\n\n// Needs await to fulfill the interface\n// @ts-expect-error TransactionOptions isn't compatible with BeginTransaction of the DatabaseAdapter interface.\n// eslint-disable-next-line @typescript-eslint/require-await\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: MongooseAdapter,\n options: TransactionOptions,\n) {\n if (!this.connection) {\n throw new APIError('beginTransaction called while no connection to the database exists')\n }\n\n const client = this.connection.getClient()\n const id = uuid()\n\n if (!this.sessions[id]) {\n // @ts-expect-error BaseDatabaseAdapter and MongoosAdapter (that extends Base) sessions aren't compatible.\n this.sessions[id] = client.startSession()\n }\n if (this.sessions[id]?.inTransaction()) {\n this.payload.logger.warn('beginTransaction called while transaction already exists')\n } else {\n this.sessions[id]?.startTransaction(options || (this.transactionOptions as TransactionOptions))\n }\n\n return id\n}\n"],"names":["APIError","v4","uuid","beginTransaction","options","connection","client","getClient","id","sessions","startSession","inTransaction","payload","logger","warn","startTransaction","transactionOptions"],"mappings":"AAGA,SAASA,QAAQ,QAAQ,UAAS;AAClC,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAIjC,uCAAuC;AACvC,+GAA+G;AAC/G,4DAA4D;AAC5D,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA2B;IAE3B,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;QACpB,MAAM,IAAIL,SAAS;IACrB;IAEA,MAAMM,SAAS,IAAI,CAACD,UAAU,CAACE,SAAS;IACxC,MAAMC,KAAKN;IAEX,IAAI,CAAC,IAAI,CAACO,QAAQ,CAACD,GAAG,EAAE;QACtB,0GAA0G;QAC1G,IAAI,CAACC,QAAQ,CAACD,GAAG,GAAGF,OAAOI,YAAY;IACzC;IACA,IAAI,IAAI,CAACD,QAAQ,CAACD,GAAG,EAAEG,iBAAiB;QACtC,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;IAC3B,OAAO;QACL,IAAI,CAACL,QAAQ,CAACD,GAAG,EAAEO,iBAAiBX,WAAY,IAAI,CAACY,kBAAkB;IACzE;IAEA,OAAOR;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { TransactionOptions } from 'mongodb'\nimport type { BeginTransaction } from 'payload'\n\nimport { APIError } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { MongooseAdapter } from '../index.js'\n\n// Needs await to fulfill the interface\n// @ts-expect-error TransactionOptions isn't compatible with BeginTransaction of the DatabaseAdapter interface.\n// eslint-disable-next-line @typescript-eslint/require-await\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: MongooseAdapter,\n options: TransactionOptions,\n) {\n if (!this.connection) {\n throw new APIError('beginTransaction called while no connection to the database exists')\n }\n\n const client = this.connection.getClient()\n const id = uuid()\n\n if (!this.sessions[id]) {\n this.sessions[id] = client.startSession()\n }\n if (this.sessions[id]?.inTransaction()) {\n this.payload.logger.warn('beginTransaction called while transaction already exists')\n } else {\n this.sessions[id]?.startTransaction(options || (this.transactionOptions as TransactionOptions))\n }\n\n return id\n}\n"],"names":["APIError","v4","uuid","beginTransaction","options","connection","client","getClient","id","sessions","startSession","inTransaction","payload","logger","warn","startTransaction","transactionOptions"],"mappings":"AAGA,SAASA,QAAQ,QAAQ,UAAS;AAClC,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAIjC,uCAAuC;AACvC,+GAA+G;AAC/G,4DAA4D;AAC5D,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA2B;IAE3B,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;QACpB,MAAM,IAAIL,SAAS;IACrB;IAEA,MAAMM,SAAS,IAAI,CAACD,UAAU,CAACE,SAAS;IACxC,MAAMC,KAAKN;IAEX,IAAI,CAAC,IAAI,CAACO,QAAQ,CAACD,GAAG,EAAE;QACtB,IAAI,CAACC,QAAQ,CAACD,GAAG,GAAGF,OAAOI,YAAY;IACzC;IACA,IAAI,IAAI,CAACD,QAAQ,CAACD,GAAG,EAAEG,iBAAiB;QACtC,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;IAC3B,OAAO;QACL,IAAI,CAACL,QAAQ,CAACD,GAAG,EAAEO,iBAAiBX,WAAY,IAAI,CAACY,kBAAkB;IACzE;IAEA,OAAOR;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,UAAU,EAAS,MAAM,SAAS,CAAA;AAWrD,eAAO,MAAM,UAAU,EAAE,UAiIxB,CAAA"}
1
+ {"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,UAAU,EAAS,MAAM,SAAS,CAAA;AAWrD,eAAO,MAAM,UAAU,EAAE,UAiLxB,CAAA"}
@@ -24,7 +24,7 @@ export const updateJobs = async function updateMany({ id, data, limit, req, retu
24
24
  sort: sortArg || collectionConfig.defaultSort,
25
25
  timestamps: true
26
26
  });
27
- let query = await buildQuery({
27
+ const query = await buildQuery({
28
28
  adapter: this,
29
29
  collectionSlug: collectionConfig.slug,
30
30
  fields: collectionConfig.flattenedFields,
@@ -90,25 +90,82 @@ export const updateJobs = async function updateMany({ id, data, limit, req, retu
90
90
  doc
91
91
  ] : [];
92
92
  }
93
- } else {
94
- if (typeof limit === 'number' && limit > 0) {
95
- const documentsToUpdate = await Model.find(query, {}, {
96
- ...findOptions,
97
- limit,
98
- projection: {
99
- _id: 1
93
+ } else if (limit === 1) {
94
+ /**
95
+ * Select, update, and return one job atomically in a single database call.
96
+ * We can only do this with limit === 1, which can be expressed as findOne.
97
+ */ const doc = await Model.findOneAndUpdate(query, updateData, {
98
+ ...findOptions,
99
+ projection: returning === false ? {
100
+ _id: 1
101
+ } : undefined,
102
+ sort
103
+ });
104
+ if (returning === false) {
105
+ return null;
106
+ }
107
+ result = doc ? [
108
+ doc
109
+ ] : [];
110
+ } else if (typeof limit === 'number' && limit > 1) {
111
+ const candidates = await Model.find(query, {}, {
112
+ ...findOptions,
113
+ limit,
114
+ projection: {
115
+ _id: 1
116
+ },
117
+ sort
118
+ });
119
+ if (candidates.length === 0) {
120
+ return null;
121
+ }
122
+ const candidateIDs = candidates.map((candidate)=>candidate._id);
123
+ if (typeof data.processingToken === 'string') {
124
+ /**
125
+ * `processingToken` identifies this claim update. `processing: true` cannot, because every
126
+ * worker writes the same value. The token lets us reliably find the jobs this update won.
127
+ */ const claimQuery = {
128
+ $and: [
129
+ query,
130
+ {
131
+ _id: {
132
+ $in: candidateIDs
133
+ }
134
+ }
135
+ ]
136
+ };
137
+ await Model.updateMany(claimQuery, updateData, baseOptions);
138
+ if (returning === false) {
139
+ return null;
140
+ }
141
+ const claimedJobsQuery = {
142
+ _id: {
143
+ $in: candidateIDs
100
144
  },
145
+ processingToken: {
146
+ $eq: data.processingToken
147
+ }
148
+ };
149
+ result = await Model.find(claimedJobsQuery, {}, {
150
+ ...findOptions,
101
151
  sort
102
152
  });
103
- if (documentsToUpdate.length === 0) {
104
- return null;
105
- }
106
- query = {
153
+ } else {
154
+ const limitedUpdateQuery = {
107
155
  _id: {
108
- $in: documentsToUpdate.map((doc)=>doc._id)
156
+ $in: candidateIDs
109
157
  }
110
158
  };
159
+ await Model.updateMany(limitedUpdateQuery, updateData, baseOptions);
160
+ if (returning === false) {
161
+ return null;
162
+ }
163
+ result = await Model.find(limitedUpdateQuery, {}, {
164
+ ...findOptions,
165
+ sort
166
+ });
111
167
  }
168
+ } else {
112
169
  await Model.updateMany(query, updateData, baseOptions);
113
170
  if (returning === false) {
114
171
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { QueryOptions, UpdateQuery } from 'mongoose'\nimport type { Job, UpdateJobs, Where } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { transform } from './utilities/transform.js'\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: MongooseAdapter,\n { id, data, limit, req, returning, sort: sortArg, where: whereArg },\n) {\n if (\n !(data?.log as object[])?.length &&\n !(data.log && typeof data.log === 'object' && '$push' in data.log)\n ) {\n delete data.log\n }\n\n const where = id ? { id: { equals: id } } : (whereArg as Where)\n\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: 'payload-jobs',\n })\n\n const sort: Record<string, unknown> | undefined = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n sort: sortArg || collectionConfig.defaultSort,\n timestamps: true,\n })\n\n let query = await buildQuery({\n adapter: this,\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n where,\n })\n\n let updateData: UpdateQuery<any> = data\n\n const $inc: Record<string, number> = {}\n const $push: Record<string, { $each: any[] } | any> = {}\n const $addToSet: Record<string, { $each: any[] } | any> = {}\n const $pull: Record<string, { $in: any[] } | any> = {}\n\n transform({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter: this,\n data,\n fields: collectionConfig.fields,\n operation: 'write',\n })\n\n const updateOps: UpdateQuery<any> = {}\n\n if (Object.keys($inc).length) {\n updateOps.$inc = $inc\n }\n if (Object.keys($push).length) {\n updateOps.$push = $push\n }\n if (Object.keys($addToSet).length) {\n updateOps.$addToSet = $addToSet\n }\n if (Object.keys($pull).length) {\n updateOps.$pull = $pull\n }\n if (Object.keys(updateOps).length) {\n updateOps.$set = updateData\n updateData = updateOps\n }\n\n const baseOptions = {\n session: await getSession(this, req),\n // Timestamps are manually added by the write transform\n timestamps: false,\n } satisfies QueryOptions\n\n const findOptions: QueryOptions = {\n ...baseOptions,\n lean: true,\n new: true,\n }\n\n let result: Job[] = []\n\n try {\n if (id) {\n if (returning === false) {\n await Model.updateOne(query, updateData, baseOptions)\n transform({ adapter: this, data, fields: collectionConfig.fields, operation: 'read' })\n\n return null\n } else {\n const doc = await Model.findOneAndUpdate(query, updateData, findOptions)\n result = doc ? [doc] : []\n }\n } else {\n if (typeof limit === 'number' && limit > 0) {\n const documentsToUpdate = await Model.find(\n query,\n {},\n { ...findOptions, limit, projection: { _id: 1 }, sort },\n )\n if (documentsToUpdate.length === 0) {\n return null\n }\n\n query = { _id: { $in: documentsToUpdate.map((doc) => doc._id) } }\n }\n\n await Model.updateMany(query, updateData, baseOptions)\n\n if (returning === false) {\n return null\n }\n\n result = await Model.find(query, {}, { ...findOptions, sort })\n }\n } catch (error) {\n handleError({ collection: collectionConfig.slug, error, req })\n }\n\n transform({\n adapter: this,\n data: result,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n return result\n}\n"],"names":["buildQuery","buildSortParam","getCollection","getSession","handleError","transform","updateJobs","updateMany","id","data","limit","req","returning","sort","sortArg","where","whereArg","log","length","equals","collectionConfig","Model","adapter","collectionSlug","config","payload","fields","flattenedFields","defaultSort","timestamps","query","slug","updateData","$inc","$push","$addToSet","$pull","operation","updateOps","Object","keys","$set","baseOptions","session","findOptions","lean","new","result","updateOne","doc","findOneAndUpdate","documentsToUpdate","find","projection","_id","$in","map","error","collection"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { QueryOptions, UpdateQuery } from 'mongoose'\nimport type { Job, UpdateJobs, Where } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { handleError } from './utilities/handleError.js'\nimport { transform } from './utilities/transform.js'\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: MongooseAdapter,\n { id, data, limit, req, returning, sort: sortArg, where: whereArg },\n) {\n if (\n !(data?.log as object[])?.length &&\n !(data.log && typeof data.log === 'object' && '$push' in data.log)\n ) {\n delete data.log\n }\n\n const where = id ? { id: { equals: id } } : (whereArg as Where)\n\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: 'payload-jobs',\n })\n\n const sort: Record<string, unknown> | undefined = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n sort: sortArg || collectionConfig.defaultSort,\n timestamps: true,\n })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n where,\n })\n\n let updateData: UpdateQuery<any> = data\n\n const $inc: Record<string, number> = {}\n const $push: Record<string, { $each: any[] } | any> = {}\n const $addToSet: Record<string, { $each: any[] } | any> = {}\n const $pull: Record<string, { $in: any[] } | any> = {}\n\n transform({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter: this,\n data,\n fields: collectionConfig.fields,\n operation: 'write',\n })\n\n const updateOps: UpdateQuery<any> = {}\n\n if (Object.keys($inc).length) {\n updateOps.$inc = $inc\n }\n if (Object.keys($push).length) {\n updateOps.$push = $push\n }\n if (Object.keys($addToSet).length) {\n updateOps.$addToSet = $addToSet\n }\n if (Object.keys($pull).length) {\n updateOps.$pull = $pull\n }\n if (Object.keys(updateOps).length) {\n updateOps.$set = updateData\n updateData = updateOps\n }\n\n const baseOptions = {\n session: await getSession(this, req),\n // Timestamps are manually added by the write transform\n timestamps: false,\n } satisfies QueryOptions\n\n const findOptions: QueryOptions = {\n ...baseOptions,\n lean: true,\n new: true,\n }\n\n let result: Job[] = []\n\n try {\n if (id) {\n if (returning === false) {\n await Model.updateOne(query, updateData, baseOptions)\n transform({ adapter: this, data, fields: collectionConfig.fields, operation: 'read' })\n\n return null\n } else {\n const doc = await Model.findOneAndUpdate(query, updateData, findOptions)\n result = doc ? [doc] : []\n }\n } else if (limit === 1) {\n /**\n * Select, update, and return one job atomically in a single database call.\n * We can only do this with limit === 1, which can be expressed as findOne.\n */\n const doc = await Model.findOneAndUpdate(query, updateData, {\n ...findOptions,\n projection: returning === false ? { _id: 1 } : undefined,\n sort,\n })\n\n if (returning === false) {\n return null\n }\n\n result = doc ? [doc] : []\n } else if (typeof limit === 'number' && limit > 1) {\n const candidates = await Model.find(\n query,\n {},\n { ...findOptions, limit, projection: { _id: 1 }, sort },\n )\n\n if (candidates.length === 0) {\n return null\n }\n\n const candidateIDs = candidates.map((candidate) => candidate._id)\n\n if (typeof data.processingToken === 'string') {\n /**\n * `processingToken` identifies this claim update. `processing: true` cannot, because every\n * worker writes the same value. The token lets us reliably find the jobs this update won.\n */\n const claimQuery = {\n $and: [query, { _id: { $in: candidateIDs } }],\n }\n\n await Model.updateMany(claimQuery, updateData, baseOptions)\n\n if (returning === false) {\n return null\n }\n\n const claimedJobsQuery = {\n _id: { $in: candidateIDs },\n processingToken: { $eq: data.processingToken },\n }\n\n result = await Model.find(claimedJobsQuery, {}, { ...findOptions, sort })\n } else {\n const limitedUpdateQuery = { _id: { $in: candidateIDs } }\n\n await Model.updateMany(limitedUpdateQuery, updateData, baseOptions)\n\n if (returning === false) {\n return null\n }\n\n result = await Model.find(limitedUpdateQuery, {}, { ...findOptions, sort })\n }\n } else {\n await Model.updateMany(query, updateData, baseOptions)\n\n if (returning === false) {\n return null\n }\n\n result = await Model.find(query, {}, { ...findOptions, sort })\n }\n } catch (error) {\n handleError({ collection: collectionConfig.slug, error, req })\n }\n\n transform({\n adapter: this,\n data: result,\n fields: collectionConfig.fields,\n operation: 'read',\n })\n\n return result\n}\n"],"names":["buildQuery","buildSortParam","getCollection","getSession","handleError","transform","updateJobs","updateMany","id","data","limit","req","returning","sort","sortArg","where","whereArg","log","length","equals","collectionConfig","Model","adapter","collectionSlug","config","payload","fields","flattenedFields","defaultSort","timestamps","query","slug","updateData","$inc","$push","$addToSet","$pull","operation","updateOps","Object","keys","$set","baseOptions","session","findOptions","lean","new","result","updateOne","doc","findOneAndUpdate","projection","_id","undefined","candidates","find","candidateIDs","map","candidate","processingToken","claimQuery","$and","$in","claimedJobsQuery","$eq","limitedUpdateQuery","error","collection"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"aggregatePaginate.d.ts","sourceRoot":"","sources":["../../src/utilities/aggregatePaginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,iBAAiB,GAAU,gJAcrC;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,KAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAmF7B,CAAA"}
1
+ {"version":3,"file":"aggregatePaginate.d.ts","sourceRoot":"","sources":["../../src/utilities/aggregatePaginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,iBAAiB,mJAc3B;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,KAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAmF7B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,EAIL,KAAK,cAAc,EAInB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC/B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAOlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAU,gGASxC,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CA0chE,CAAA"}
1
+ {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,EAIL,KAAK,cAAc,EAInB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC/B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAOlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,mGAS9B,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CA0chE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildProjectionFromSelect.d.ts","sourceRoot":"","sources":["../../src/utilities/buildProjectionFromSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAGd,UAAU,EACX,MAAM,SAAS,CAAA;AAShB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAgMlD,eAAO,MAAM,yBAAyB,GAAI,8BAIvC;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,KAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAmB1B,CAAA"}
1
+ {"version":3,"file":"buildProjectionFromSelect.d.ts","sourceRoot":"","sources":["../../src/utilities/buildProjectionFromSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAGd,UAAU,EACX,MAAM,SAAS,CAAA;AAShB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAgMlD,eAAO,MAAM,yBAAyB,iCAInC;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,KAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAmB1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDBName.d.ts","sourceRoot":"","sources":["../../src/utilities/getDBName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEzD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,gBAAgB,CAAA;QACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,uDAKvB,IAAI,KAAG,MAuBT,CAAA"}
1
+ {"version":3,"file":"getDBName.d.ts","sourceRoot":"","sources":["../../src/utilities/getDBName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEzD,KAAK,IAAI,GAAG;IACV,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,gBAAgB,CAAA;QACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,0DAKnB,IAAI,KAAG,MAuBT,CAAA"}
@@ -7,7 +7,7 @@ export declare const getCollection: ({ adapter, collectionSlug, versions, }: {
7
7
  versions?: boolean;
8
8
  }) => {
9
9
  collectionConfig: SanitizedCollectionConfig;
10
- customIDType: Collection["customIDType"];
10
+ customIDType: Collection['customIDType'];
11
11
  Model: CollectionModel;
12
12
  };
13
13
  type BaseGetGlobalArgs = {
@@ -1 +1 @@
1
- {"version":3,"file":"getEntity.d.ts","sourceRoot":"","sources":["../../src/utilities/getEntity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAI3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,eAAO,MAAM,aAAa,GAAI,wCAI3B;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG;IACF,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAExC,KAAK,EAAE,eAAe,CAAA;CA+BvB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,UAAU,SAAS;IACjB,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;KAAE,GAAG,iBAAiB,GAAG;QAC5D,YAAY,EAAE,qBAAqB,CAAA;QACnC,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IACD,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,iBAAiB,GAAG;QAC/C,YAAY,EAAE,qBAAqB,CAAA;QACnC,KAAK,EAAE,eAAe,CAAA;KACvB,CAAA;CACF;AAED,eAAO,MAAM,SAAS,EAAE,SAsBvB,CAAA"}
1
+ {"version":3,"file":"getEntity.d.ts","sourceRoot":"","sources":["../../src/utilities/getEntity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAI3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,eAAO,MAAM,aAAa,2CAIvB;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG;IACF,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAExC,KAAK,EAAE,eAAe,CAAA;CA+BvB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,UAAU,SAAS;IACjB,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;KAAE,GAAG,iBAAiB,GAAG;QAC5D,YAAY,EAAE,qBAAqB,CAAA;QACnC,KAAK,EAAE,WAAW,CAAA;KACnB,CAAA;IACD,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,iBAAiB,GAAG;QAC/C,YAAY,EAAE,qBAAqB,CAAA;QACnC,KAAK,EAAE,eAAe,CAAA;KACvB,CAAA;CACF;AAED,eAAO,MAAM,SAAS,EAAE,SAsBvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleError.d.ts","sourceRoot":"","sources":["../../src/utilities/handleError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAoC7C,eAAO,MAAM,WAAW,GAAI,qCAKzB;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,UAoCA,CAAA"}
1
+ {"version":3,"file":"handleError.d.ts","sourceRoot":"","sources":["../../src/utilities/handleError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAoC7C,eAAO,MAAM,WAAW,wCAKrB;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,UAoCA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"isObjectID.d.ts","sourceRoot":"","sources":["../../src/utilities/isObjectID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAAK,CAAC,QAa1D,CAAA"}
1
+ {"version":3,"file":"isObjectID.d.ts","sourceRoot":"","sources":["../../src/utilities/isObjectID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,KAAK,IAAI,KAAK,CAAC,QAa1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/utilities/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,KAAK,EAQN,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAmQlD,KAAK,IAAI,GAAG;IACV,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,8BAA8B;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACzD,uCAAuC;IACvC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AA2KD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,4HAYvB,IAAI,qBA6XN,CAAA"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/utilities/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,KAAK,EAQN,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAyQlD,KAAK,IAAI,GAAG;IACV,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,8BAA8B;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACzD,uCAAuC;IACvC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAyLD;;;GAGG;AACH,eAAO,MAAM,SAAS,+HAYnB,IAAI,qBA6XN,CAAA"}
@@ -92,6 +92,11 @@ const sanitizeRelationship = ({ adapter, config, field, locale, operation, ref,
92
92
  }
93
93
  if (Array.isArray(value)) {
94
94
  result = value.map((val)=>{
95
+ // Skip null/undefined entries so a stray null in a hasMany relationship
96
+ // array doesn't get coerced or crash downstream sanitization.
97
+ if (val === null || typeof val === 'undefined') {
98
+ return val;
99
+ }
95
100
  // Handle has many - polymorphic
96
101
  if (isValidRelationObject(val)) {
97
102
  const relatedCollectionForSingleValue = config.collections?.find(({ slug })=>slug === val.relationTo);
@@ -198,6 +203,11 @@ const stripFields = ({ config, data, fields, parentIsLocalized = false, reserved
198
203
  let hasNull = false;
199
204
  for(let i = 0; i < localeData.length; i++){
200
205
  const data = localeData[i];
206
+ if (!data || typeof data !== 'object') {
207
+ localeData[i] = null;
208
+ hasNull = true;
209
+ continue;
210
+ }
201
211
  let fields = null;
202
212
  if (field.type === 'array') {
203
213
  fields = field.flattenedFields;
@@ -248,6 +258,11 @@ const stripFields = ({ config, data, fields, parentIsLocalized = false, reserved
248
258
  let hasNull = false;
249
259
  for(let i = 0; i < fieldData.length; i++){
250
260
  const data = fieldData[i];
261
+ if (!data || typeof data !== 'object') {
262
+ fieldData[i] = null;
263
+ hasNull = true;
264
+ continue;
265
+ }
251
266
  let fields = null;
252
267
  if (field.type === 'array') {
253
268
  fields = field.flattenedFields;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/transform.ts"],"sourcesContent":["import type {\n CollectionConfig,\n DateField,\n Field,\n FlattenedBlock,\n FlattenedField,\n JoinField,\n RelationshipField,\n SanitizedConfig,\n TraverseFieldsCallback,\n UploadField,\n} from 'payload'\n\nimport { Types } from 'mongoose'\nimport { flattenAllFields, traverseFields } from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized } from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { isObjectID } from './isObjectID.js'\n\ninterface RelationObject {\n relationTo: string\n value: number | string\n}\n\nfunction isValidRelationObject(value: unknown): value is RelationObject {\n return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value\n}\n\n/**\n * Process relationship values for polymorphic and simple relationships\n * Used by both $push and $remove operations\n */\nconst processRelationshipValues = (\n items: unknown[],\n field: RelationshipField | UploadField,\n config: SanitizedConfig,\n operation: 'read' | 'write',\n validateRelationships: boolean,\n adapter: MongooseAdapter,\n) => {\n return items.map((item) => {\n // Handle polymorphic relationships\n if (Array.isArray(field.relationTo) && isValidRelationObject(item)) {\n const relatedCollection = config.collections?.find(({ slug }) => slug === item.relationTo)\n if (relatedCollection) {\n return {\n relationTo: item.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: item.value,\n }),\n }\n }\n return item\n }\n\n // Handle simple relationships\n if (typeof field.relationTo === 'string') {\n const relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo)\n if (relatedCollection) {\n return convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: item,\n })\n }\n }\n\n return item\n })\n}\n\nconst convertRelationshipValue = ({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value,\n}: {\n adapter: MongooseAdapter\n operation: Args['operation']\n relatedCollection: CollectionConfig\n validateRelationships?: boolean\n value: unknown\n}) => {\n const customIDField = relatedCollection.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (operation === 'read') {\n if (isObjectID(value)) {\n return value.toHexString()\n }\n\n if (\n customIDField?.type === 'number' &&\n typeof value === 'bigint' &&\n adapter.useBigIntForNumberIDs\n ) {\n return Number(value)\n }\n\n return value\n }\n\n if (customIDField) {\n return value\n }\n\n if (typeof value === 'string') {\n try {\n return new Types.ObjectId(value)\n } catch (e) {\n if (validateRelationships) {\n throw e\n }\n return value\n }\n }\n\n return value\n}\n\nconst sanitizeRelationship = ({\n adapter,\n config,\n field,\n locale,\n operation,\n ref,\n validateRelationships,\n value,\n}: {\n adapter: MongooseAdapter\n config: SanitizedConfig\n field: JoinField | RelationshipField | UploadField\n locale?: string\n operation: Args['operation']\n ref: Record<string, unknown>\n validateRelationships?: boolean\n value?: unknown\n}) => {\n if (field.type === 'join') {\n if (\n operation === 'read' &&\n value &&\n typeof value === 'object' &&\n 'docs' in value &&\n Array.isArray(value.docs)\n ) {\n for (let i = 0; i < value.docs.length; i++) {\n const item = value.docs[i]\n\n if (isObjectID(item)) {\n value.docs[i] = item.toHexString()\n } else if (Array.isArray(field.collection) && item) {\n // Fields here for polymorphic joins cannot be determinted, JSON.parse needed\n value.docs[i] = JSON.parse(JSON.stringify(value.docs[i]))\n }\n }\n }\n\n return value\n }\n let relatedCollection: CollectionConfig | undefined\n let result = value\n\n const hasManyRelations = typeof field.relationTo !== 'string'\n\n if (!hasManyRelations) {\n relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo)\n }\n\n if (Array.isArray(value)) {\n result = value.map((val) => {\n // Handle has many - polymorphic\n if (isValidRelationObject(val)) {\n const relatedCollectionForSingleValue = config.collections?.find(\n ({ slug }) => slug === val.relationTo,\n )\n\n if (relatedCollectionForSingleValue) {\n return {\n relationTo: val.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection: relatedCollectionForSingleValue,\n validateRelationships,\n value: val.value,\n }),\n }\n }\n }\n\n if (relatedCollection) {\n return convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: val,\n })\n }\n\n return val\n })\n }\n // Handle has one - polymorphic\n else if (isValidRelationObject(value)) {\n relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo)\n\n if (relatedCollection) {\n result = {\n relationTo: value.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: value.value,\n }),\n }\n }\n }\n // Handle has one\n else if (relatedCollection) {\n result = convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value,\n })\n }\n\n if (locale) {\n ref[locale] = result\n } else {\n ref[field.name] = result\n }\n}\n\nconst sanitizeDate = ({\n field,\n locale,\n ref,\n value,\n}: {\n field: DateField\n locale?: string\n ref: Record<string, unknown>\n value: unknown\n}) => {\n if (!value) {\n return\n }\n\n if (value instanceof Date) {\n value = value.toISOString()\n }\n\n if (locale) {\n ref[locale] = value\n } else {\n ref[field.name] = value\n }\n}\n\ntype Args = {\n $addToSet?: Record<string, { $each: any[] } | any>\n $inc?: Record<string, number>\n $pull?: Record<string, { $in: any[] } | any>\n $push?: Record<string, { $each: any[] } | any>\n /** instance of the adapter */\n adapter: MongooseAdapter\n /** data to transform, can be an array of documents or a single document */\n data: Record<string, unknown> | Record<string, unknown>[]\n /** fields accossiated with the data */\n fields: Field[]\n /** slug of the global, pass only when the operation is `write` */\n globalSlug?: string\n /**\n * Type of the operation\n * read - sanitizes ObjectIDs, Date to strings.\n * write - sanitizes string relationships to ObjectIDs.\n */\n operation: 'read' | 'write'\n parentIsLocalized?: boolean\n /**\n * Throw errors on invalid relationships\n * @default true\n */\n validateRelationships?: boolean\n}\n\nconst stripFields = ({\n config,\n data,\n fields,\n parentIsLocalized = false,\n reservedKeys = [],\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\n parentIsLocalized?: boolean\n reservedKeys?: string[]\n}) => {\n for (const k in data) {\n if (!fields.some((field) => field.name === k) && !reservedKeys.includes(k)) {\n delete data[k]\n }\n }\n\n for (const field of fields) {\n reservedKeys = []\n const fieldData = data[field.name]\n if (!fieldData || typeof fieldData !== 'object') {\n continue\n }\n\n const shouldLocalizeField = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'blocks') {\n reservedKeys.push('blockType')\n }\n\n if ('flattenedFields' in field || 'blocks' in field) {\n if (shouldLocalizeField && config.localization) {\n for (const localeKey in fieldData) {\n if (!config.localization.localeCodes.some((code) => code === localeKey)) {\n delete fieldData[localeKey]\n continue\n }\n\n const localeData = fieldData[localeKey]\n\n if (!localeData || typeof localeData !== 'object') {\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(localeData)) {\n continue\n }\n\n let hasNull = false\n for (let i = 0; i < localeData.length; i++) {\n const data = localeData[i]\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n const blockOrSlug = field.blocks.find((each) => {\n const slug = typeof each === 'string' ? each : each.slug\n return slug === data.blockType\n })\n const maybeBlock: FlattenedBlock | undefined =\n typeof blockOrSlug === 'string'\n ? config.blocks?.find((each) => each.slug === blockOrSlug)\n : blockOrSlug\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n } else {\n localeData[i] = null\n hasNull = true\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({\n config,\n data,\n fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n\n if (hasNull) {\n fieldData[localeKey] = localeData.filter(Boolean)\n }\n\n continue\n } else {\n stripFields({\n config,\n data: localeData,\n fields: field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n }\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(fieldData)) {\n continue\n }\n\n let hasNull = false\n\n for (let i = 0; i < fieldData.length; i++) {\n const data = fieldData[i]\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n const blockOrSlug = field.blocks.find((each) => {\n const slug = typeof each === 'string' ? each : each.slug\n return slug === data.blockType\n })\n const maybeBlock: FlattenedBlock | undefined =\n typeof blockOrSlug === 'string'\n ? config.blocks?.find((each) => each.slug === blockOrSlug)\n : blockOrSlug\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n } else {\n fieldData[i] = null\n hasNull = true\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({\n config,\n data,\n fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n\n if (hasNull) {\n data[field.name] = fieldData.filter(Boolean)\n }\n\n continue\n } else {\n stripFields({\n config,\n data: fieldData,\n fields: field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n }\n }\n}\n\n/**\n * A function that transforms Payload <-> MongoDB data.\n * @internal - this function may be removed or receive breaking changes in minor releases.\n */\nexport const transform = ({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter,\n data,\n fields,\n globalSlug,\n operation,\n parentIsLocalized = false,\n validateRelationships = true,\n}: Args) => {\n if (!data) {\n return null\n }\n\n if (Array.isArray(data)) {\n for (const item of data) {\n transform({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter,\n data: item,\n fields,\n globalSlug,\n operation,\n validateRelationships,\n })\n }\n return\n }\n\n const {\n payload: { config },\n } = adapter\n\n if (operation === 'read') {\n delete data['__v']\n data.id = data._id || data.id\n delete data['_id']\n\n if (isObjectID(data.id)) {\n data.id = data.id.toHexString()\n }\n\n // Handle BigInt conversion for custom ID fields of type 'number'\n if (adapter.useBigIntForNumberIDs && typeof data.id === 'bigint') {\n data.id = Number(data.id)\n }\n\n if (!adapter.allowAdditionalKeys) {\n stripFields({\n config,\n data,\n fields: flattenAllFields({ cache: true, fields }),\n parentIsLocalized: false,\n reservedKeys: ['id', 'globalType'],\n })\n }\n }\n\n if (operation === 'write' && globalSlug) {\n data.globalType = globalSlug\n }\n\n const sanitize: TraverseFieldsCallback = ({\n field,\n parentIsLocalized,\n parentPath,\n parentRef: incomingParentRef,\n ref: incomingRef,\n }) => {\n if (!incomingRef || typeof incomingRef !== 'object') {\n return\n }\n\n const ref = incomingRef as Record<string, unknown>\n const parentRef = (incomingParentRef || {}) as Record<string, unknown>\n\n // Clear empty parent containers by setting them to undefined.\n const clearEmptyContainer = () => {\n if (!parentRef || typeof parentRef !== 'object') {\n return\n }\n if (!ref || typeof ref !== 'object') {\n return\n }\n if (Object.keys(ref).length > 0) {\n return\n }\n const containerKey = Object.keys(parentRef).find((k) => parentRef[k] === ref)\n if (containerKey) {\n parentRef[containerKey] = undefined\n }\n }\n\n if (\n $inc &&\n field.type === 'number' &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n if (value && typeof value === 'object' && '$inc' in value && typeof value.$inc === 'number') {\n $inc[`${parentPath}${field.name}`] = value.$inc\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n\n if (\n $push &&\n field.type === 'array' &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n\n if (\n value &&\n typeof value === 'object' &&\n ('$push' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue && typeof localeValue === 'object' && '$push' in localeValue,\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $push: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n if (Array.isArray(push)) {\n $push[`${parentPath}${field.name}.${localeKey}`] = { $each: push }\n } else if (typeof push === 'object') {\n $push[`${parentPath}${field.name}.${localeKey}`] = push\n }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$push' in value) {\n // Handle non-localized fields: { field: { $push: data } }\n const push = value.$push\n if (Array.isArray(push)) {\n $push[`${parentPath}${field.name}`] = { $each: push }\n } else if (typeof push === 'object') {\n $push[`${parentPath}${field.name}`] = push\n }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n // Handle $push operation for relationship fields (converts to $addToSet)\n\n // Handle $push operation for relationship fields (converts to $addToSet) - unified approach\n if (\n $addToSet &&\n (field.type === 'relationship' || field.type === 'upload') &&\n 'hasMany' in field &&\n field.hasMany &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n\n if (\n value &&\n typeof value === 'object' &&\n ('$push' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$push' in (localeValue as Record<string, unknown>),\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $push: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n const localeItems = Array.isArray(push) ? push : [push]\n const processedLocaleItems = processRelationshipValues(\n localeItems,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $addToSet[`${parentPath}${field.name}.${localeKey}`] = { $each: processedLocaleItems }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$push' in value) {\n // Handle non-localized fields: { field: { $push: data } }\n const itemsToAppend = Array.isArray(value.$push) ? value.$push : [value.$push]\n const processedItems = processRelationshipValues(\n itemsToAppend,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $addToSet[`${parentPath}${field.name}`] = { $each: processedItems }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n // Handle $remove operation for relationship fields (converts to $pull)\n if (\n $pull &&\n (field.type === 'relationship' || field.type === 'upload') &&\n 'hasMany' in field &&\n field.hasMany &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n if (\n value &&\n typeof value === 'object' &&\n ('$remove' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$remove' in (localeValue as Record<string, unknown>),\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $remove: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$remove' in localeValue) {\n hasLocaleOperations = true\n const remove = localeValue.$remove\n const localeItems = Array.isArray(remove) ? remove : [remove]\n const processedLocaleItems = processRelationshipValues(\n localeItems,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $pull[`${parentPath}${field.name}.${localeKey}`] = { $in: processedLocaleItems }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$remove' in value) {\n // Handle non-localized fields: { field: { $remove: data } }\n const itemsToRemove = Array.isArray(value.$remove) ? value.$remove : [value.$remove]\n const processedItems = processRelationshipValues(\n itemsToRemove,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $pull[`${parentPath}${field.name}`] = { $in: processedItems }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n if (field.type === 'date' && operation === 'read' && field.name in ref && ref[field.name]) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n const fieldRef = ref[field.name] as Record<string, unknown>\n if (!fieldRef || typeof fieldRef !== 'object') {\n return\n }\n\n for (const locale of config.localization.localeCodes) {\n sanitizeDate({\n field,\n locale,\n ref: fieldRef,\n value: fieldRef[locale],\n })\n }\n } else {\n sanitizeDate({\n field,\n ref,\n value: ref[field.name],\n })\n }\n }\n\n if (\n field.type === 'relationship' ||\n field.type === 'upload' ||\n (operation === 'read' && field.type === 'join')\n ) {\n if (!ref[field.name]) {\n return\n }\n\n // handle localized relationships\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n const locales = config.localization.locales\n const fieldRef = ref[field.name] as Record<string, unknown>\n if (typeof fieldRef !== 'object') {\n return\n }\n\n for (const { code } of locales) {\n const value = fieldRef[code]\n if (value) {\n sanitizeRelationship({\n adapter,\n config,\n field,\n locale: code,\n operation,\n ref: fieldRef,\n validateRelationships,\n value,\n })\n }\n }\n } else {\n // handle non-localized relationships\n sanitizeRelationship({\n adapter,\n config,\n field,\n locale: undefined,\n operation,\n ref,\n validateRelationships,\n value: ref[field.name],\n })\n }\n }\n }\n\n traverseFields({\n callback: sanitize,\n config,\n fields,\n fillEmpty: false,\n parentIsLocalized,\n ref: data,\n })\n\n if (operation === 'write') {\n if (typeof data.updatedAt === 'undefined') {\n // If data.updatedAt is explicitly set to `null` we should not set it - this means we don't want to change the value of updatedAt.\n data.updatedAt = new Date().toISOString()\n } else if (data.updatedAt === null) {\n // `updatedAt` may be explicitly set to null to disable updating it - if that is the case, we need to delete the property. Keeping it as null will\n // cause the database to think we want to set it to null, which we don't.\n delete data.updatedAt\n }\n }\n}\n"],"names":["Types","flattenAllFields","traverseFields","fieldAffectsData","fieldShouldBeLocalized","isObjectID","isValidRelationObject","value","processRelationshipValues","items","field","config","operation","validateRelationships","adapter","map","item","Array","isArray","relationTo","relatedCollection","collections","find","slug","convertRelationshipValue","customIDField","fields","name","toHexString","type","useBigIntForNumberIDs","Number","ObjectId","e","sanitizeRelationship","locale","ref","docs","i","length","collection","JSON","parse","stringify","result","hasManyRelations","val","relatedCollectionForSingleValue","sanitizeDate","Date","toISOString","stripFields","data","parentIsLocalized","reservedKeys","k","some","includes","fieldData","shouldLocalizeField","push","localization","localeKey","localeCodes","code","localeData","hasNull","flattenedFields","blockOrSlug","blocks","each","blockType","maybeBlock","localized","filter","Boolean","transform","$addToSet","$inc","$pull","$push","globalSlug","payload","id","_id","allowAdditionalKeys","cache","globalType","sanitize","parentPath","parentRef","incomingParentRef","incomingRef","clearEmptyContainer","Object","keys","containerKey","undefined","values","localeValue","hasLocaleOperations","entries","forEach","$each","hasMany","localeItems","processedLocaleItems","itemsToAppend","processedItems","remove","$remove","$in","itemsToRemove","fieldRef","locales","callback","fillEmpty","updatedAt"],"mappings":"AAaA,SAASA,KAAK,QAAQ,WAAU;AAChC,SAASC,gBAAgB,EAAEC,cAAc,QAAQ,UAAS;AAC1D,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,iBAAgB;AAIzE,SAASC,UAAU,QAAQ,kBAAiB;AAO5C,SAASC,sBAAsBC,KAAc;IAC3C,OAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,gBAAgBA,SAAS,WAAWA;AAC5F;AAEA;;;CAGC,GACD,MAAMC,4BAA4B,CAChCC,OACAC,OACAC,QACAC,WACAC,uBACAC;IAEA,OAAOL,MAAMM,GAAG,CAAC,CAACC;QAChB,mCAAmC;QACnC,IAAIC,MAAMC,OAAO,CAACR,MAAMS,UAAU,KAAKb,sBAAsBU,OAAO;YAClE,MAAMI,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASP,KAAKG,UAAU;YACzF,IAAIC,mBAAmB;gBACrB,OAAO;oBACLD,YAAYH,KAAKG,UAAU;oBAC3BZ,OAAOiB,yBAAyB;wBAC9BV;wBACAF;wBACAQ;wBACAP;wBACAN,OAAOS,KAAKT,KAAK;oBACnB;gBACF;YACF;YACA,OAAOS;QACT;QAEA,8BAA8B;QAC9B,IAAI,OAAON,MAAMS,UAAU,KAAK,UAAU;YACxC,MAAMC,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASb,MAAMS,UAAU;YAC1F,IAAIC,mBAAmB;gBACrB,OAAOI,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOS;gBACT;YACF;QACF;QAEA,OAAOA;IACT;AACF;AAEA,MAAMQ,2BAA2B,CAAC,EAChCV,OAAO,EACPF,SAAS,EACTQ,iBAAiB,EACjBP,qBAAqB,EACrBN,KAAK,EAON;IACC,MAAMkB,gBAAgBL,kBAAkBM,MAAM,CAACJ,IAAI,CACjD,CAACZ,QAAUP,iBAAiBO,UAAUA,MAAMiB,IAAI,KAAK;IAGvD,IAAIf,cAAc,QAAQ;QACxB,IAAIP,WAAWE,QAAQ;YACrB,OAAOA,MAAMqB,WAAW;QAC1B;QAEA,IACEH,eAAeI,SAAS,YACxB,OAAOtB,UAAU,YACjBO,QAAQgB,qBAAqB,EAC7B;YACA,OAAOC,OAAOxB;QAChB;QAEA,OAAOA;IACT;IAEA,IAAIkB,eAAe;QACjB,OAAOlB;IACT;IAEA,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI;YACF,OAAO,IAAIP,MAAMgC,QAAQ,CAACzB;QAC5B,EAAE,OAAO0B,GAAG;YACV,IAAIpB,uBAAuB;gBACzB,MAAMoB;YACR;YACA,OAAO1B;QACT;IACF;IAEA,OAAOA;AACT;AAEA,MAAM2B,uBAAuB,CAAC,EAC5BpB,OAAO,EACPH,MAAM,EACND,KAAK,EACLyB,MAAM,EACNvB,SAAS,EACTwB,GAAG,EACHvB,qBAAqB,EACrBN,KAAK,EAUN;IACC,IAAIG,MAAMmB,IAAI,KAAK,QAAQ;QACzB,IACEjB,cAAc,UACdL,SACA,OAAOA,UAAU,YACjB,UAAUA,SACVU,MAAMC,OAAO,CAACX,MAAM8B,IAAI,GACxB;YACA,IAAK,IAAIC,IAAI,GAAGA,IAAI/B,MAAM8B,IAAI,CAACE,MAAM,EAAED,IAAK;gBAC1C,MAAMtB,OAAOT,MAAM8B,IAAI,CAACC,EAAE;gBAE1B,IAAIjC,WAAWW,OAAO;oBACpBT,MAAM8B,IAAI,CAACC,EAAE,GAAGtB,KAAKY,WAAW;gBAClC,OAAO,IAAIX,MAAMC,OAAO,CAACR,MAAM8B,UAAU,KAAKxB,MAAM;oBAClD,6EAA6E;oBAC7ET,MAAM8B,IAAI,CAACC,EAAE,GAAGG,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACpC,MAAM8B,IAAI,CAACC,EAAE;gBACzD;YACF;QACF;QAEA,OAAO/B;IACT;IACA,IAAIa;IACJ,IAAIwB,SAASrC;IAEb,MAAMsC,mBAAmB,OAAOnC,MAAMS,UAAU,KAAK;IAErD,IAAI,CAAC0B,kBAAkB;QACrBzB,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASb,MAAMS,UAAU;IACtF;IAEA,IAAIF,MAAMC,OAAO,CAACX,QAAQ;QACxBqC,SAASrC,MAAMQ,GAAG,CAAC,CAAC+B;YAClB,gCAAgC;YAChC,IAAIxC,sBAAsBwC,MAAM;gBAC9B,MAAMC,kCAAkCpC,OAAOU,WAAW,EAAEC,KAC1D,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASuB,IAAI3B,UAAU;gBAGvC,IAAI4B,iCAAiC;oBACnC,OAAO;wBACL5B,YAAY2B,IAAI3B,UAAU;wBAC1BZ,OAAOiB,yBAAyB;4BAC9BV;4BACAF;4BACAQ,mBAAmB2B;4BACnBlC;4BACAN,OAAOuC,IAAIvC,KAAK;wBAClB;oBACF;gBACF;YACF;YAEA,IAAIa,mBAAmB;gBACrB,OAAOI,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOuC;gBACT;YACF;YAEA,OAAOA;QACT;IACF,OAEK,IAAIxC,sBAAsBC,QAAQ;QACrCa,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAShB,MAAMY,UAAU;QAEpF,IAAIC,mBAAmB;YACrBwB,SAAS;gBACPzB,YAAYZ,MAAMY,UAAU;gBAC5BZ,OAAOiB,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOA,MAAMA,KAAK;gBACpB;YACF;QACF;IACF,OAEK,IAAIa,mBAAmB;QAC1BwB,SAASpB,yBAAyB;YAChCV;YACAF;YACAQ;YACAP;YACAN;QACF;IACF;IAEA,IAAI4B,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAGS;IAChB,OAAO;QACLR,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,GAAGiB;IACpB;AACF;AAEA,MAAMI,eAAe,CAAC,EACpBtC,KAAK,EACLyB,MAAM,EACNC,GAAG,EACH7B,KAAK,EAMN;IACC,IAAI,CAACA,OAAO;QACV;IACF;IAEA,IAAIA,iBAAiB0C,MAAM;QACzB1C,QAAQA,MAAM2C,WAAW;IAC3B;IAEA,IAAIf,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAG5B;IAChB,OAAO;QACL6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,GAAGpB;IACpB;AACF;AA6BA,MAAM4C,cAAc,CAAC,EACnBxC,MAAM,EACNyC,IAAI,EACJ1B,MAAM,EACN2B,oBAAoB,KAAK,EACzBC,eAAe,EAAE,EAOlB;IACC,IAAK,MAAMC,KAAKH,KAAM;QACpB,IAAI,CAAC1B,OAAO8B,IAAI,CAAC,CAAC9C,QAAUA,MAAMiB,IAAI,KAAK4B,MAAM,CAACD,aAAaG,QAAQ,CAACF,IAAI;YAC1E,OAAOH,IAAI,CAACG,EAAE;QAChB;IACF;IAEA,KAAK,MAAM7C,SAASgB,OAAQ;QAC1B4B,eAAe,EAAE;QACjB,MAAMI,YAAYN,IAAI,CAAC1C,MAAMiB,IAAI,CAAC;QAClC,IAAI,CAAC+B,aAAa,OAAOA,cAAc,UAAU;YAC/C;QACF;QAEA,MAAMC,sBAAsBvD,uBAAuB;YAAEM;YAAO2C;QAAkB;QAE9E,IAAI3C,MAAMmB,IAAI,KAAK,UAAU;YAC3ByB,aAAaM,IAAI,CAAC;QACpB;QAEA,IAAI,qBAAqBlD,SAAS,YAAYA,OAAO;YACnD,IAAIiD,uBAAuBhD,OAAOkD,YAAY,EAAE;gBAC9C,IAAK,MAAMC,aAAaJ,UAAW;oBACjC,IAAI,CAAC/C,OAAOkD,YAAY,CAACE,WAAW,CAACP,IAAI,CAAC,CAACQ,OAASA,SAASF,YAAY;wBACvE,OAAOJ,SAAS,CAACI,UAAU;wBAC3B;oBACF;oBAEA,MAAMG,aAAaP,SAAS,CAACI,UAAU;oBAEvC,IAAI,CAACG,cAAc,OAAOA,eAAe,UAAU;wBACjD;oBACF;oBAEA,IAAIvD,MAAMmB,IAAI,KAAK,WAAWnB,MAAMmB,IAAI,KAAK,UAAU;wBACrD,IAAI,CAACZ,MAAMC,OAAO,CAAC+C,aAAa;4BAC9B;wBACF;wBAEA,IAAIC,UAAU;wBACd,IAAK,IAAI5B,IAAI,GAAGA,IAAI2B,WAAW1B,MAAM,EAAED,IAAK;4BAC1C,MAAMc,OAAOa,UAAU,CAAC3B,EAAE;4BAC1B,IAAIZ,SAAkC;4BAEtC,IAAIhB,MAAMmB,IAAI,KAAK,SAAS;gCAC1BH,SAAShB,MAAMyD,eAAe;4BAChC,OAAO;gCACL,MAAMC,cAAc1D,MAAM2D,MAAM,CAAC/C,IAAI,CAAC,CAACgD;oCACrC,MAAM/C,OAAO,OAAO+C,SAAS,WAAWA,OAAOA,KAAK/C,IAAI;oCACxD,OAAOA,SAAS6B,KAAKmB,SAAS;gCAChC;gCACA,MAAMC,aACJ,OAAOJ,gBAAgB,WACnBzD,OAAO0D,MAAM,EAAE/C,KAAK,CAACgD,OAASA,KAAK/C,IAAI,KAAK6C,eAC5CA;gCAEN,IAAII,YAAY;oCACd9C,SAAS8C,WAAWL,eAAe;gCACrC,OAAO;oCACLF,UAAU,CAAC3B,EAAE,GAAG;oCAChB4B,UAAU;gCACZ;4BACF;4BAEA,IAAI,CAACxC,QAAQ;gCACX;4BACF;4BAEAyB,YAAY;gCACVxC;gCACAyC;gCACA1B;gCACA2B,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;gCACvDnB;4BACF;wBACF;wBAEA,IAAIY,SAAS;4BACXR,SAAS,CAACI,UAAU,GAAGG,WAAWS,MAAM,CAACC;wBAC3C;wBAEA;oBACF,OAAO;wBACLxB,YAAY;4BACVxC;4BACAyC,MAAMa;4BACNvC,QAAQhB,MAAMyD,eAAe;4BAC7Bd,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;4BACvDnB;wBACF;oBACF;gBACF;gBACA;YACF;YAEA,IAAI5C,MAAMmB,IAAI,KAAK,WAAWnB,MAAMmB,IAAI,KAAK,UAAU;gBACrD,IAAI,CAACZ,MAAMC,OAAO,CAACwC,YAAY;oBAC7B;gBACF;gBAEA,IAAIQ,UAAU;gBAEd,IAAK,IAAI5B,IAAI,GAAGA,IAAIoB,UAAUnB,MAAM,EAAED,IAAK;oBACzC,MAAMc,OAAOM,SAAS,CAACpB,EAAE;oBACzB,IAAIZ,SAAkC;oBAEtC,IAAIhB,MAAMmB,IAAI,KAAK,SAAS;wBAC1BH,SAAShB,MAAMyD,eAAe;oBAChC,OAAO;wBACL,MAAMC,cAAc1D,MAAM2D,MAAM,CAAC/C,IAAI,CAAC,CAACgD;4BACrC,MAAM/C,OAAO,OAAO+C,SAAS,WAAWA,OAAOA,KAAK/C,IAAI;4BACxD,OAAOA,SAAS6B,KAAKmB,SAAS;wBAChC;wBACA,MAAMC,aACJ,OAAOJ,gBAAgB,WACnBzD,OAAO0D,MAAM,EAAE/C,KAAK,CAACgD,OAASA,KAAK/C,IAAI,KAAK6C,eAC5CA;wBAEN,IAAII,YAAY;4BACd9C,SAAS8C,WAAWL,eAAe;wBACrC,OAAO;4BACLT,SAAS,CAACpB,EAAE,GAAG;4BACf4B,UAAU;wBACZ;oBACF;oBAEA,IAAI,CAACxC,QAAQ;wBACX;oBACF;oBAEAyB,YAAY;wBACVxC;wBACAyC;wBACA1B;wBACA2B,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;wBACvDnB;oBACF;gBACF;gBAEA,IAAIY,SAAS;oBACXd,IAAI,CAAC1C,MAAMiB,IAAI,CAAC,GAAG+B,UAAUgB,MAAM,CAACC;gBACtC;gBAEA;YACF,OAAO;gBACLxB,YAAY;oBACVxC;oBACAyC,MAAMM;oBACNhC,QAAQhB,MAAMyD,eAAe;oBAC7Bd,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;oBACvDnB;gBACF;YACF;QACF;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,MAAMsB,YAAY,CAAC,EACxBC,SAAS,EACTC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLlE,OAAO,EACPsC,IAAI,EACJ1B,MAAM,EACNuD,UAAU,EACVrE,SAAS,EACTyC,oBAAoB,KAAK,EACzBxC,wBAAwB,IAAI,EACvB;IACL,IAAI,CAACuC,MAAM;QACT,OAAO;IACT;IAEA,IAAInC,MAAMC,OAAO,CAACkC,OAAO;QACvB,KAAK,MAAMpC,QAAQoC,KAAM;YACvBwB,UAAU;gBACRC;gBACAC;gBACAC;gBACAC;gBACAlE;gBACAsC,MAAMpC;gBACNU;gBACAuD;gBACArE;gBACAC;YACF;QACF;QACA;IACF;IAEA,MAAM,EACJqE,SAAS,EAAEvE,MAAM,EAAE,EACpB,GAAGG;IAEJ,IAAIF,cAAc,QAAQ;QACxB,OAAOwC,IAAI,CAAC,MAAM;QAClBA,KAAK+B,EAAE,GAAG/B,KAAKgC,GAAG,IAAIhC,KAAK+B,EAAE;QAC7B,OAAO/B,IAAI,CAAC,MAAM;QAElB,IAAI/C,WAAW+C,KAAK+B,EAAE,GAAG;YACvB/B,KAAK+B,EAAE,GAAG/B,KAAK+B,EAAE,CAACvD,WAAW;QAC/B;QAEA,iEAAiE;QACjE,IAAId,QAAQgB,qBAAqB,IAAI,OAAOsB,KAAK+B,EAAE,KAAK,UAAU;YAChE/B,KAAK+B,EAAE,GAAGpD,OAAOqB,KAAK+B,EAAE;QAC1B;QAEA,IAAI,CAACrE,QAAQuE,mBAAmB,EAAE;YAChClC,YAAY;gBACVxC;gBACAyC;gBACA1B,QAAQzB,iBAAiB;oBAAEqF,OAAO;oBAAM5D;gBAAO;gBAC/C2B,mBAAmB;gBACnBC,cAAc;oBAAC;oBAAM;iBAAa;YACpC;QACF;IACF;IAEA,IAAI1C,cAAc,WAAWqE,YAAY;QACvC7B,KAAKmC,UAAU,GAAGN;IACpB;IAEA,MAAMO,WAAmC,CAAC,EACxC9E,KAAK,EACL2C,iBAAiB,EACjBoC,UAAU,EACVC,WAAWC,iBAAiB,EAC5BvD,KAAKwD,WAAW,EACjB;QACC,IAAI,CAACA,eAAe,OAAOA,gBAAgB,UAAU;YACnD;QACF;QAEA,MAAMxD,MAAMwD;QACZ,MAAMF,YAAaC,qBAAqB,CAAC;QAEzC,8DAA8D;QAC9D,MAAME,sBAAsB;YAC1B,IAAI,CAACH,aAAa,OAAOA,cAAc,UAAU;gBAC/C;YACF;YACA,IAAI,CAACtD,OAAO,OAAOA,QAAQ,UAAU;gBACnC;YACF;YACA,IAAI0D,OAAOC,IAAI,CAAC3D,KAAKG,MAAM,GAAG,GAAG;gBAC/B;YACF;YACA,MAAMyD,eAAeF,OAAOC,IAAI,CAACL,WAAWpE,IAAI,CAAC,CAACiC,IAAMmC,SAAS,CAACnC,EAAE,KAAKnB;YACzE,IAAI4D,cAAc;gBAChBN,SAAS,CAACM,aAAa,GAAGC;YAC5B;QACF;QAEA,IACEnB,QACApE,MAAMmB,IAAI,KAAK,YACfjB,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAC7B,IAAIpB,SAAS,OAAOA,UAAU,YAAY,UAAUA,SAAS,OAAOA,MAAMuE,IAAI,KAAK,UAAU;gBAC3FA,IAAI,CAAC,GAAGW,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAGpB,MAAMuE,IAAI;gBAC/C,OAAO1C,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACtBkE;YACF;QACF;QAEA,IACEb,SACAtE,MAAMmB,IAAI,KAAK,WACfjB,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAE7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,WAAWA,SACTI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,YAChE,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,kEAAkE;oBAClE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5EC,sBAAsB;4BACtB,MAAMxC,OAAOuC,YAAYnB,KAAK;4BAC9B,IAAI/D,MAAMC,OAAO,CAAC0C,OAAO;gCACvBoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;oCAAEyC,OAAO3C;gCAAK;4BACnE,OAAO,IAAI,OAAOA,SAAS,UAAU;gCACnCoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAGF;4BACrD;wBACF;oBACF;oBAEA,IAAIwC,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,WAAWA,OAAO;oBACjE,0DAA0D;oBAC1D,MAAMqD,OAAOrD,MAAMyE,KAAK;oBACxB,IAAI/D,MAAMC,OAAO,CAAC0C,OAAO;wBACvBoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;4BAAE4E,OAAO3C;wBAAK;oBACtD,OAAO,IAAI,OAAOA,SAAS,UAAU;wBACnCoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAGiC;oBACxC;oBACA,OAAOxB,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,yEAAyE;QAEzE,4FAA4F;QAC5F,IACEhB,aACCnE,CAAAA,MAAMmB,IAAI,KAAK,kBAAkBnB,MAAMmB,IAAI,KAAK,QAAO,KACxD,aAAanB,SACbA,MAAM8F,OAAO,IACb5F,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAE7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,WAAWA,SACTI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eACA,OAAOA,gBAAgB,YACvB,WAAYA,YACf,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,kEAAkE;oBAClE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5EC,sBAAsB;4BACtB,MAAMxC,OAAOuC,YAAYnB,KAAK;4BAC9B,MAAMyB,cAAcxF,MAAMC,OAAO,CAAC0C,QAAQA,OAAO;gCAACA;6BAAK;4BACvD,MAAM8C,uBAAuBlG,0BAC3BiG,aACA/F,OACAC,QACAC,WACAC,uBACAC;4BAEF+D,SAAS,CAAC,GAAGY,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;gCAAEyC,OAAOG;4BAAqB;wBACvF;oBACF;oBAEA,IAAIN,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,WAAWA,OAAO;oBACjE,0DAA0D;oBAC1D,MAAMoG,gBAAgB1F,MAAMC,OAAO,CAACX,MAAMyE,KAAK,IAAIzE,MAAMyE,KAAK,GAAG;wBAACzE,MAAMyE,KAAK;qBAAC;oBAC9E,MAAM4B,iBAAiBpG,0BACrBmG,eACAjG,OACAC,QACAC,WACAC,uBACAC;oBAEF+D,SAAS,CAAC,GAAGY,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;wBAAE4E,OAAOK;oBAAe;oBAClE,OAAOxE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,uEAAuE;QACvE,IACEd,SACCrE,CAAAA,MAAMmB,IAAI,KAAK,kBAAkBnB,MAAMmB,IAAI,KAAK,QAAO,KACxD,aAAanB,SACbA,MAAM8F,OAAO,IACb5F,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAC7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,aAAaA,SACXI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eACA,OAAOA,gBAAgB,YACvB,aAAcA,YACjB,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,oEAAoE;oBACpE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,aAAaA,aAAa;4BAC9EC,sBAAsB;4BACtB,MAAMS,SAASV,YAAYW,OAAO;4BAClC,MAAML,cAAcxF,MAAMC,OAAO,CAAC2F,UAAUA,SAAS;gCAACA;6BAAO;4BAC7D,MAAMH,uBAAuBlG,0BAC3BiG,aACA/F,OACAC,QACAC,WACAC,uBACAC;4BAEFiE,KAAK,CAAC,GAAGU,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;gCAAEiD,KAAKL;4BAAqB;wBACjF;oBACF;oBAEA,IAAIN,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,aAAaA,OAAO;oBACnE,4DAA4D;oBAC5D,MAAMyG,gBAAgB/F,MAAMC,OAAO,CAACX,MAAMuG,OAAO,IAAIvG,MAAMuG,OAAO,GAAG;wBAACvG,MAAMuG,OAAO;qBAAC;oBACpF,MAAMF,iBAAiBpG,0BACrBwG,eACAtG,OACAC,QACAC,WACAC,uBACAC;oBAEFiE,KAAK,CAAC,GAAGU,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;wBAAEoF,KAAKH;oBAAe;oBAC5D,OAAOxE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,IAAInF,MAAMmB,IAAI,KAAK,UAAUjB,cAAc,UAAUF,MAAMiB,IAAI,IAAIS,OAAOA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EAAE;YACzF,IAAIhB,OAAOkD,YAAY,IAAIzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,IAAI;gBAC/E,MAAM4D,WAAW7E,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBAChC,IAAI,CAACsF,YAAY,OAAOA,aAAa,UAAU;oBAC7C;gBACF;gBAEA,KAAK,MAAM9E,UAAUxB,OAAOkD,YAAY,CAACE,WAAW,CAAE;oBACpDf,aAAa;wBACXtC;wBACAyB;wBACAC,KAAK6E;wBACL1G,OAAO0G,QAAQ,CAAC9E,OAAO;oBACzB;gBACF;YACF,OAAO;gBACLa,aAAa;oBACXtC;oBACA0B;oBACA7B,OAAO6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACxB;YACF;QACF;QAEA,IACEjB,MAAMmB,IAAI,KAAK,kBACfnB,MAAMmB,IAAI,KAAK,YACdjB,cAAc,UAAUF,MAAMmB,IAAI,KAAK,QACxC;YACA,IAAI,CAACO,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EAAE;gBACpB;YACF;YAEA,iCAAiC;YACjC,IAAIhB,OAAOkD,YAAY,IAAIzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,IAAI;gBAC/E,MAAM6D,UAAUvG,OAAOkD,YAAY,CAACqD,OAAO;gBAC3C,MAAMD,WAAW7E,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBAChC,IAAI,OAAOsF,aAAa,UAAU;oBAChC;gBACF;gBAEA,KAAK,MAAM,EAAEjD,IAAI,EAAE,IAAIkD,QAAS;oBAC9B,MAAM3G,QAAQ0G,QAAQ,CAACjD,KAAK;oBAC5B,IAAIzD,OAAO;wBACT2B,qBAAqB;4BACnBpB;4BACAH;4BACAD;4BACAyB,QAAQ6B;4BACRpD;4BACAwB,KAAK6E;4BACLpG;4BACAN;wBACF;oBACF;gBACF;YACF,OAAO;gBACL,qCAAqC;gBACrC2B,qBAAqB;oBACnBpB;oBACAH;oBACAD;oBACAyB,QAAQ8D;oBACRrF;oBACAwB;oBACAvB;oBACAN,OAAO6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACxB;YACF;QACF;IACF;IAEAzB,eAAe;QACbiH,UAAU3B;QACV7E;QACAe;QACA0F,WAAW;QACX/D;QACAjB,KAAKgB;IACP;IAEA,IAAIxC,cAAc,SAAS;QACzB,IAAI,OAAOwC,KAAKiE,SAAS,KAAK,aAAa;YACzC,kIAAkI;YAClIjE,KAAKiE,SAAS,GAAG,IAAIpE,OAAOC,WAAW;QACzC,OAAO,IAAIE,KAAKiE,SAAS,KAAK,MAAM;YAClC,kJAAkJ;YAClJ,yEAAyE;YACzE,OAAOjE,KAAKiE,SAAS;QACvB;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/transform.ts"],"sourcesContent":["import type {\n CollectionConfig,\n DateField,\n Field,\n FlattenedBlock,\n FlattenedField,\n JoinField,\n RelationshipField,\n SanitizedConfig,\n TraverseFieldsCallback,\n UploadField,\n} from 'payload'\n\nimport { Types } from 'mongoose'\nimport { flattenAllFields, traverseFields } from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized } from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { isObjectID } from './isObjectID.js'\n\ninterface RelationObject {\n relationTo: string\n value: number | string\n}\n\nfunction isValidRelationObject(value: unknown): value is RelationObject {\n return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value\n}\n\n/**\n * Process relationship values for polymorphic and simple relationships\n * Used by both $push and $remove operations\n */\nconst processRelationshipValues = (\n items: unknown[],\n field: RelationshipField | UploadField,\n config: SanitizedConfig,\n operation: 'read' | 'write',\n validateRelationships: boolean,\n adapter: MongooseAdapter,\n) => {\n return items.map((item) => {\n // Handle polymorphic relationships\n if (Array.isArray(field.relationTo) && isValidRelationObject(item)) {\n const relatedCollection = config.collections?.find(({ slug }) => slug === item.relationTo)\n if (relatedCollection) {\n return {\n relationTo: item.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: item.value,\n }),\n }\n }\n return item\n }\n\n // Handle simple relationships\n if (typeof field.relationTo === 'string') {\n const relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo)\n if (relatedCollection) {\n return convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: item,\n })\n }\n }\n\n return item\n })\n}\n\nconst convertRelationshipValue = ({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value,\n}: {\n adapter: MongooseAdapter\n operation: Args['operation']\n relatedCollection: CollectionConfig\n validateRelationships?: boolean\n value: unknown\n}) => {\n const customIDField = relatedCollection.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (operation === 'read') {\n if (isObjectID(value)) {\n return value.toHexString()\n }\n\n if (\n customIDField?.type === 'number' &&\n typeof value === 'bigint' &&\n adapter.useBigIntForNumberIDs\n ) {\n return Number(value)\n }\n\n return value\n }\n\n if (customIDField) {\n return value\n }\n\n if (typeof value === 'string') {\n try {\n return new Types.ObjectId(value)\n } catch (e) {\n if (validateRelationships) {\n throw e\n }\n return value\n }\n }\n\n return value\n}\n\nconst sanitizeRelationship = ({\n adapter,\n config,\n field,\n locale,\n operation,\n ref,\n validateRelationships,\n value,\n}: {\n adapter: MongooseAdapter\n config: SanitizedConfig\n field: JoinField | RelationshipField | UploadField\n locale?: string\n operation: Args['operation']\n ref: Record<string, unknown>\n validateRelationships?: boolean\n value?: unknown\n}) => {\n if (field.type === 'join') {\n if (\n operation === 'read' &&\n value &&\n typeof value === 'object' &&\n 'docs' in value &&\n Array.isArray(value.docs)\n ) {\n for (let i = 0; i < value.docs.length; i++) {\n const item = value.docs[i]\n\n if (isObjectID(item)) {\n value.docs[i] = item.toHexString()\n } else if (Array.isArray(field.collection) && item) {\n // Fields here for polymorphic joins cannot be determinted, JSON.parse needed\n value.docs[i] = JSON.parse(JSON.stringify(value.docs[i]))\n }\n }\n }\n\n return value\n }\n let relatedCollection: CollectionConfig | undefined\n let result = value\n\n const hasManyRelations = typeof field.relationTo !== 'string'\n\n if (!hasManyRelations) {\n relatedCollection = config.collections?.find(({ slug }) => slug === field.relationTo)\n }\n\n if (Array.isArray(value)) {\n result = value.map((val) => {\n // Skip null/undefined entries so a stray null in a hasMany relationship\n // array doesn't get coerced or crash downstream sanitization.\n if (val === null || typeof val === 'undefined') {\n return val\n }\n\n // Handle has many - polymorphic\n if (isValidRelationObject(val)) {\n const relatedCollectionForSingleValue = config.collections?.find(\n ({ slug }) => slug === val.relationTo,\n )\n\n if (relatedCollectionForSingleValue) {\n return {\n relationTo: val.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection: relatedCollectionForSingleValue,\n validateRelationships,\n value: val.value,\n }),\n }\n }\n }\n\n if (relatedCollection) {\n return convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: val,\n })\n }\n\n return val\n })\n }\n // Handle has one - polymorphic\n else if (isValidRelationObject(value)) {\n relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo)\n\n if (relatedCollection) {\n result = {\n relationTo: value.relationTo,\n value: convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value: value.value,\n }),\n }\n }\n }\n // Handle has one\n else if (relatedCollection) {\n result = convertRelationshipValue({\n adapter,\n operation,\n relatedCollection,\n validateRelationships,\n value,\n })\n }\n\n if (locale) {\n ref[locale] = result\n } else {\n ref[field.name] = result\n }\n}\n\nconst sanitizeDate = ({\n field,\n locale,\n ref,\n value,\n}: {\n field: DateField\n locale?: string\n ref: Record<string, unknown>\n value: unknown\n}) => {\n if (!value) {\n return\n }\n\n if (value instanceof Date) {\n value = value.toISOString()\n }\n\n if (locale) {\n ref[locale] = value\n } else {\n ref[field.name] = value\n }\n}\n\ntype Args = {\n $addToSet?: Record<string, { $each: any[] } | any>\n $inc?: Record<string, number>\n $pull?: Record<string, { $in: any[] } | any>\n $push?: Record<string, { $each: any[] } | any>\n /** instance of the adapter */\n adapter: MongooseAdapter\n /** data to transform, can be an array of documents or a single document */\n data: Record<string, unknown> | Record<string, unknown>[]\n /** fields accossiated with the data */\n fields: Field[]\n /** slug of the global, pass only when the operation is `write` */\n globalSlug?: string\n /**\n * Type of the operation\n * read - sanitizes ObjectIDs, Date to strings.\n * write - sanitizes string relationships to ObjectIDs.\n */\n operation: 'read' | 'write'\n parentIsLocalized?: boolean\n /**\n * Throw errors on invalid relationships\n * @default true\n */\n validateRelationships?: boolean\n}\n\nconst stripFields = ({\n config,\n data,\n fields,\n parentIsLocalized = false,\n reservedKeys = [],\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\n parentIsLocalized?: boolean\n reservedKeys?: string[]\n}) => {\n for (const k in data) {\n if (!fields.some((field) => field.name === k) && !reservedKeys.includes(k)) {\n delete data[k]\n }\n }\n\n for (const field of fields) {\n reservedKeys = []\n const fieldData = data[field.name]\n if (!fieldData || typeof fieldData !== 'object') {\n continue\n }\n\n const shouldLocalizeField = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'blocks') {\n reservedKeys.push('blockType')\n }\n\n if ('flattenedFields' in field || 'blocks' in field) {\n if (shouldLocalizeField && config.localization) {\n for (const localeKey in fieldData) {\n if (!config.localization.localeCodes.some((code) => code === localeKey)) {\n delete fieldData[localeKey]\n continue\n }\n\n const localeData = fieldData[localeKey]\n\n if (!localeData || typeof localeData !== 'object') {\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(localeData)) {\n continue\n }\n\n let hasNull = false\n for (let i = 0; i < localeData.length; i++) {\n const data = localeData[i]\n\n if (!data || typeof data !== 'object') {\n localeData[i] = null\n hasNull = true\n continue\n }\n\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n const blockOrSlug = field.blocks.find((each) => {\n const slug = typeof each === 'string' ? each : each.slug\n return slug === data.blockType\n })\n const maybeBlock: FlattenedBlock | undefined =\n typeof blockOrSlug === 'string'\n ? config.blocks?.find((each) => each.slug === blockOrSlug)\n : blockOrSlug\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n } else {\n localeData[i] = null\n hasNull = true\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({\n config,\n data,\n fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n\n if (hasNull) {\n fieldData[localeKey] = localeData.filter(Boolean)\n }\n\n continue\n } else {\n stripFields({\n config,\n data: localeData,\n fields: field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n }\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(fieldData)) {\n continue\n }\n\n let hasNull = false\n\n for (let i = 0; i < fieldData.length; i++) {\n const data = fieldData[i]\n\n if (!data || typeof data !== 'object') {\n fieldData[i] = null\n hasNull = true\n continue\n }\n\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n const blockOrSlug = field.blocks.find((each) => {\n const slug = typeof each === 'string' ? each : each.slug\n return slug === data.blockType\n })\n const maybeBlock: FlattenedBlock | undefined =\n typeof blockOrSlug === 'string'\n ? config.blocks?.find((each) => each.slug === blockOrSlug)\n : blockOrSlug\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n } else {\n fieldData[i] = null\n hasNull = true\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({\n config,\n data,\n fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n\n if (hasNull) {\n data[field.name] = fieldData.filter(Boolean)\n }\n\n continue\n } else {\n stripFields({\n config,\n data: fieldData,\n fields: field.flattenedFields,\n parentIsLocalized: parentIsLocalized || field.localized,\n reservedKeys,\n })\n }\n }\n }\n}\n\n/**\n * A function that transforms Payload <-> MongoDB data.\n * @internal - this function may be removed or receive breaking changes in minor releases.\n */\nexport const transform = ({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter,\n data,\n fields,\n globalSlug,\n operation,\n parentIsLocalized = false,\n validateRelationships = true,\n}: Args) => {\n if (!data) {\n return null\n }\n\n if (Array.isArray(data)) {\n for (const item of data) {\n transform({\n $addToSet,\n $inc,\n $pull,\n $push,\n adapter,\n data: item,\n fields,\n globalSlug,\n operation,\n validateRelationships,\n })\n }\n return\n }\n\n const {\n payload: { config },\n } = adapter\n\n if (operation === 'read') {\n delete data['__v']\n data.id = data._id || data.id\n delete data['_id']\n\n if (isObjectID(data.id)) {\n data.id = data.id.toHexString()\n }\n\n // Handle BigInt conversion for custom ID fields of type 'number'\n if (adapter.useBigIntForNumberIDs && typeof data.id === 'bigint') {\n data.id = Number(data.id)\n }\n\n if (!adapter.allowAdditionalKeys) {\n stripFields({\n config,\n data,\n fields: flattenAllFields({ cache: true, fields }),\n parentIsLocalized: false,\n reservedKeys: ['id', 'globalType'],\n })\n }\n }\n\n if (operation === 'write' && globalSlug) {\n data.globalType = globalSlug\n }\n\n const sanitize: TraverseFieldsCallback = ({\n field,\n parentIsLocalized,\n parentPath,\n parentRef: incomingParentRef,\n ref: incomingRef,\n }) => {\n if (!incomingRef || typeof incomingRef !== 'object') {\n return\n }\n\n const ref = incomingRef as Record<string, unknown>\n const parentRef = (incomingParentRef || {}) as Record<string, unknown>\n\n // Clear empty parent containers by setting them to undefined.\n const clearEmptyContainer = () => {\n if (!parentRef || typeof parentRef !== 'object') {\n return\n }\n if (!ref || typeof ref !== 'object') {\n return\n }\n if (Object.keys(ref).length > 0) {\n return\n }\n const containerKey = Object.keys(parentRef).find((k) => parentRef[k] === ref)\n if (containerKey) {\n parentRef[containerKey] = undefined\n }\n }\n\n if (\n $inc &&\n field.type === 'number' &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n if (value && typeof value === 'object' && '$inc' in value && typeof value.$inc === 'number') {\n $inc[`${parentPath}${field.name}`] = value.$inc\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n\n if (\n $push &&\n field.type === 'array' &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n\n if (\n value &&\n typeof value === 'object' &&\n ('$push' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue && typeof localeValue === 'object' && '$push' in localeValue,\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $push: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n if (Array.isArray(push)) {\n $push[`${parentPath}${field.name}.${localeKey}`] = { $each: push }\n } else if (typeof push === 'object') {\n $push[`${parentPath}${field.name}.${localeKey}`] = push\n }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$push' in value) {\n // Handle non-localized fields: { field: { $push: data } }\n const push = value.$push\n if (Array.isArray(push)) {\n $push[`${parentPath}${field.name}`] = { $each: push }\n } else if (typeof push === 'object') {\n $push[`${parentPath}${field.name}`] = push\n }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n // Handle $push operation for relationship fields (converts to $addToSet)\n\n // Handle $push operation for relationship fields (converts to $addToSet) - unified approach\n if (\n $addToSet &&\n (field.type === 'relationship' || field.type === 'upload') &&\n 'hasMany' in field &&\n field.hasMany &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n\n if (\n value &&\n typeof value === 'object' &&\n ('$push' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$push' in (localeValue as Record<string, unknown>),\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $push: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$push' in localeValue) {\n hasLocaleOperations = true\n const push = localeValue.$push\n const localeItems = Array.isArray(push) ? push : [push]\n const processedLocaleItems = processRelationshipValues(\n localeItems,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $addToSet[`${parentPath}${field.name}.${localeKey}`] = { $each: processedLocaleItems }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$push' in value) {\n // Handle non-localized fields: { field: { $push: data } }\n const itemsToAppend = Array.isArray(value.$push) ? value.$push : [value.$push]\n const processedItems = processRelationshipValues(\n itemsToAppend,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $addToSet[`${parentPath}${field.name}`] = { $each: processedItems }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n // Handle $remove operation for relationship fields (converts to $pull)\n if (\n $pull &&\n (field.type === 'relationship' || field.type === 'upload') &&\n 'hasMany' in field &&\n field.hasMany &&\n operation === 'write' &&\n field.name in ref &&\n ref[field.name]\n ) {\n const value = ref[field.name]\n if (\n value &&\n typeof value === 'object' &&\n ('$remove' in value ||\n (config.localization &&\n fieldShouldBeLocalized({ field, parentIsLocalized }) &&\n Object.values(value).some(\n (localeValue) =>\n localeValue &&\n typeof localeValue === 'object' &&\n '$remove' in (localeValue as Record<string, unknown>),\n )))\n ) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n // Handle localized fields: { field: { locale: { $remove: data } } }\n let hasLocaleOperations = false\n Object.entries(value).forEach(([localeKey, localeValue]) => {\n if (localeValue && typeof localeValue === 'object' && '$remove' in localeValue) {\n hasLocaleOperations = true\n const remove = localeValue.$remove\n const localeItems = Array.isArray(remove) ? remove : [remove]\n const processedLocaleItems = processRelationshipValues(\n localeItems,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $pull[`${parentPath}${field.name}.${localeKey}`] = { $in: processedLocaleItems }\n }\n })\n\n if (hasLocaleOperations) {\n delete ref[field.name]\n clearEmptyContainer()\n }\n } else if (value && typeof value === 'object' && '$remove' in value) {\n // Handle non-localized fields: { field: { $remove: data } }\n const itemsToRemove = Array.isArray(value.$remove) ? value.$remove : [value.$remove]\n const processedItems = processRelationshipValues(\n itemsToRemove,\n field,\n config,\n operation,\n validateRelationships,\n adapter,\n )\n $pull[`${parentPath}${field.name}`] = { $in: processedItems }\n delete ref[field.name]\n clearEmptyContainer()\n }\n }\n }\n\n if (field.type === 'date' && operation === 'read' && field.name in ref && ref[field.name]) {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n const fieldRef = ref[field.name] as Record<string, unknown>\n if (!fieldRef || typeof fieldRef !== 'object') {\n return\n }\n\n for (const locale of config.localization.localeCodes) {\n sanitizeDate({\n field,\n locale,\n ref: fieldRef,\n value: fieldRef[locale],\n })\n }\n } else {\n sanitizeDate({\n field,\n ref,\n value: ref[field.name],\n })\n }\n }\n\n if (\n field.type === 'relationship' ||\n field.type === 'upload' ||\n (operation === 'read' && field.type === 'join')\n ) {\n if (!ref[field.name]) {\n return\n }\n\n // handle localized relationships\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n const locales = config.localization.locales\n const fieldRef = ref[field.name] as Record<string, unknown>\n if (typeof fieldRef !== 'object') {\n return\n }\n\n for (const { code } of locales) {\n const value = fieldRef[code]\n if (value) {\n sanitizeRelationship({\n adapter,\n config,\n field,\n locale: code,\n operation,\n ref: fieldRef,\n validateRelationships,\n value,\n })\n }\n }\n } else {\n // handle non-localized relationships\n sanitizeRelationship({\n adapter,\n config,\n field,\n locale: undefined,\n operation,\n ref,\n validateRelationships,\n value: ref[field.name],\n })\n }\n }\n }\n\n traverseFields({\n callback: sanitize,\n config,\n fields,\n fillEmpty: false,\n parentIsLocalized,\n ref: data,\n })\n\n if (operation === 'write') {\n if (typeof data.updatedAt === 'undefined') {\n // If data.updatedAt is explicitly set to `null` we should not set it - this means we don't want to change the value of updatedAt.\n data.updatedAt = new Date().toISOString()\n } else if (data.updatedAt === null) {\n // `updatedAt` may be explicitly set to null to disable updating it - if that is the case, we need to delete the property. Keeping it as null will\n // cause the database to think we want to set it to null, which we don't.\n delete data.updatedAt\n }\n }\n}\n"],"names":["Types","flattenAllFields","traverseFields","fieldAffectsData","fieldShouldBeLocalized","isObjectID","isValidRelationObject","value","processRelationshipValues","items","field","config","operation","validateRelationships","adapter","map","item","Array","isArray","relationTo","relatedCollection","collections","find","slug","convertRelationshipValue","customIDField","fields","name","toHexString","type","useBigIntForNumberIDs","Number","ObjectId","e","sanitizeRelationship","locale","ref","docs","i","length","collection","JSON","parse","stringify","result","hasManyRelations","val","relatedCollectionForSingleValue","sanitizeDate","Date","toISOString","stripFields","data","parentIsLocalized","reservedKeys","k","some","includes","fieldData","shouldLocalizeField","push","localization","localeKey","localeCodes","code","localeData","hasNull","flattenedFields","blockOrSlug","blocks","each","blockType","maybeBlock","localized","filter","Boolean","transform","$addToSet","$inc","$pull","$push","globalSlug","payload","id","_id","allowAdditionalKeys","cache","globalType","sanitize","parentPath","parentRef","incomingParentRef","incomingRef","clearEmptyContainer","Object","keys","containerKey","undefined","values","localeValue","hasLocaleOperations","entries","forEach","$each","hasMany","localeItems","processedLocaleItems","itemsToAppend","processedItems","remove","$remove","$in","itemsToRemove","fieldRef","locales","callback","fillEmpty","updatedAt"],"mappings":"AAaA,SAASA,KAAK,QAAQ,WAAU;AAChC,SAASC,gBAAgB,EAAEC,cAAc,QAAQ,UAAS;AAC1D,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,iBAAgB;AAIzE,SAASC,UAAU,QAAQ,kBAAiB;AAO5C,SAASC,sBAAsBC,KAAc;IAC3C,OAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,gBAAgBA,SAAS,WAAWA;AAC5F;AAEA;;;CAGC,GACD,MAAMC,4BAA4B,CAChCC,OACAC,OACAC,QACAC,WACAC,uBACAC;IAEA,OAAOL,MAAMM,GAAG,CAAC,CAACC;QAChB,mCAAmC;QACnC,IAAIC,MAAMC,OAAO,CAACR,MAAMS,UAAU,KAAKb,sBAAsBU,OAAO;YAClE,MAAMI,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASP,KAAKG,UAAU;YACzF,IAAIC,mBAAmB;gBACrB,OAAO;oBACLD,YAAYH,KAAKG,UAAU;oBAC3BZ,OAAOiB,yBAAyB;wBAC9BV;wBACAF;wBACAQ;wBACAP;wBACAN,OAAOS,KAAKT,KAAK;oBACnB;gBACF;YACF;YACA,OAAOS;QACT;QAEA,8BAA8B;QAC9B,IAAI,OAAON,MAAMS,UAAU,KAAK,UAAU;YACxC,MAAMC,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASb,MAAMS,UAAU;YAC1F,IAAIC,mBAAmB;gBACrB,OAAOI,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOS;gBACT;YACF;QACF;QAEA,OAAOA;IACT;AACF;AAEA,MAAMQ,2BAA2B,CAAC,EAChCV,OAAO,EACPF,SAAS,EACTQ,iBAAiB,EACjBP,qBAAqB,EACrBN,KAAK,EAON;IACC,MAAMkB,gBAAgBL,kBAAkBM,MAAM,CAACJ,IAAI,CACjD,CAACZ,QAAUP,iBAAiBO,UAAUA,MAAMiB,IAAI,KAAK;IAGvD,IAAIf,cAAc,QAAQ;QACxB,IAAIP,WAAWE,QAAQ;YACrB,OAAOA,MAAMqB,WAAW;QAC1B;QAEA,IACEH,eAAeI,SAAS,YACxB,OAAOtB,UAAU,YACjBO,QAAQgB,qBAAqB,EAC7B;YACA,OAAOC,OAAOxB;QAChB;QAEA,OAAOA;IACT;IAEA,IAAIkB,eAAe;QACjB,OAAOlB;IACT;IAEA,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI;YACF,OAAO,IAAIP,MAAMgC,QAAQ,CAACzB;QAC5B,EAAE,OAAO0B,GAAG;YACV,IAAIpB,uBAAuB;gBACzB,MAAMoB;YACR;YACA,OAAO1B;QACT;IACF;IAEA,OAAOA;AACT;AAEA,MAAM2B,uBAAuB,CAAC,EAC5BpB,OAAO,EACPH,MAAM,EACND,KAAK,EACLyB,MAAM,EACNvB,SAAS,EACTwB,GAAG,EACHvB,qBAAqB,EACrBN,KAAK,EAUN;IACC,IAAIG,MAAMmB,IAAI,KAAK,QAAQ;QACzB,IACEjB,cAAc,UACdL,SACA,OAAOA,UAAU,YACjB,UAAUA,SACVU,MAAMC,OAAO,CAACX,MAAM8B,IAAI,GACxB;YACA,IAAK,IAAIC,IAAI,GAAGA,IAAI/B,MAAM8B,IAAI,CAACE,MAAM,EAAED,IAAK;gBAC1C,MAAMtB,OAAOT,MAAM8B,IAAI,CAACC,EAAE;gBAE1B,IAAIjC,WAAWW,OAAO;oBACpBT,MAAM8B,IAAI,CAACC,EAAE,GAAGtB,KAAKY,WAAW;gBAClC,OAAO,IAAIX,MAAMC,OAAO,CAACR,MAAM8B,UAAU,KAAKxB,MAAM;oBAClD,6EAA6E;oBAC7ET,MAAM8B,IAAI,CAACC,EAAE,GAAGG,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACpC,MAAM8B,IAAI,CAACC,EAAE;gBACzD;YACF;QACF;QAEA,OAAO/B;IACT;IACA,IAAIa;IACJ,IAAIwB,SAASrC;IAEb,MAAMsC,mBAAmB,OAAOnC,MAAMS,UAAU,KAAK;IAErD,IAAI,CAAC0B,kBAAkB;QACrBzB,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASb,MAAMS,UAAU;IACtF;IAEA,IAAIF,MAAMC,OAAO,CAACX,QAAQ;QACxBqC,SAASrC,MAAMQ,GAAG,CAAC,CAAC+B;YAClB,wEAAwE;YACxE,8DAA8D;YAC9D,IAAIA,QAAQ,QAAQ,OAAOA,QAAQ,aAAa;gBAC9C,OAAOA;YACT;YAEA,gCAAgC;YAChC,IAAIxC,sBAAsBwC,MAAM;gBAC9B,MAAMC,kCAAkCpC,OAAOU,WAAW,EAAEC,KAC1D,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASuB,IAAI3B,UAAU;gBAGvC,IAAI4B,iCAAiC;oBACnC,OAAO;wBACL5B,YAAY2B,IAAI3B,UAAU;wBAC1BZ,OAAOiB,yBAAyB;4BAC9BV;4BACAF;4BACAQ,mBAAmB2B;4BACnBlC;4BACAN,OAAOuC,IAAIvC,KAAK;wBAClB;oBACF;gBACF;YACF;YAEA,IAAIa,mBAAmB;gBACrB,OAAOI,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOuC;gBACT;YACF;YAEA,OAAOA;QACT;IACF,OAEK,IAAIxC,sBAAsBC,QAAQ;QACrCa,oBAAoBT,OAAOU,WAAW,EAAEC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAShB,MAAMY,UAAU;QAEpF,IAAIC,mBAAmB;YACrBwB,SAAS;gBACPzB,YAAYZ,MAAMY,UAAU;gBAC5BZ,OAAOiB,yBAAyB;oBAC9BV;oBACAF;oBACAQ;oBACAP;oBACAN,OAAOA,MAAMA,KAAK;gBACpB;YACF;QACF;IACF,OAEK,IAAIa,mBAAmB;QAC1BwB,SAASpB,yBAAyB;YAChCV;YACAF;YACAQ;YACAP;YACAN;QACF;IACF;IAEA,IAAI4B,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAGS;IAChB,OAAO;QACLR,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,GAAGiB;IACpB;AACF;AAEA,MAAMI,eAAe,CAAC,EACpBtC,KAAK,EACLyB,MAAM,EACNC,GAAG,EACH7B,KAAK,EAMN;IACC,IAAI,CAACA,OAAO;QACV;IACF;IAEA,IAAIA,iBAAiB0C,MAAM;QACzB1C,QAAQA,MAAM2C,WAAW;IAC3B;IAEA,IAAIf,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAG5B;IAChB,OAAO;QACL6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,GAAGpB;IACpB;AACF;AA6BA,MAAM4C,cAAc,CAAC,EACnBxC,MAAM,EACNyC,IAAI,EACJ1B,MAAM,EACN2B,oBAAoB,KAAK,EACzBC,eAAe,EAAE,EAOlB;IACC,IAAK,MAAMC,KAAKH,KAAM;QACpB,IAAI,CAAC1B,OAAO8B,IAAI,CAAC,CAAC9C,QAAUA,MAAMiB,IAAI,KAAK4B,MAAM,CAACD,aAAaG,QAAQ,CAACF,IAAI;YAC1E,OAAOH,IAAI,CAACG,EAAE;QAChB;IACF;IAEA,KAAK,MAAM7C,SAASgB,OAAQ;QAC1B4B,eAAe,EAAE;QACjB,MAAMI,YAAYN,IAAI,CAAC1C,MAAMiB,IAAI,CAAC;QAClC,IAAI,CAAC+B,aAAa,OAAOA,cAAc,UAAU;YAC/C;QACF;QAEA,MAAMC,sBAAsBvD,uBAAuB;YAAEM;YAAO2C;QAAkB;QAE9E,IAAI3C,MAAMmB,IAAI,KAAK,UAAU;YAC3ByB,aAAaM,IAAI,CAAC;QACpB;QAEA,IAAI,qBAAqBlD,SAAS,YAAYA,OAAO;YACnD,IAAIiD,uBAAuBhD,OAAOkD,YAAY,EAAE;gBAC9C,IAAK,MAAMC,aAAaJ,UAAW;oBACjC,IAAI,CAAC/C,OAAOkD,YAAY,CAACE,WAAW,CAACP,IAAI,CAAC,CAACQ,OAASA,SAASF,YAAY;wBACvE,OAAOJ,SAAS,CAACI,UAAU;wBAC3B;oBACF;oBAEA,MAAMG,aAAaP,SAAS,CAACI,UAAU;oBAEvC,IAAI,CAACG,cAAc,OAAOA,eAAe,UAAU;wBACjD;oBACF;oBAEA,IAAIvD,MAAMmB,IAAI,KAAK,WAAWnB,MAAMmB,IAAI,KAAK,UAAU;wBACrD,IAAI,CAACZ,MAAMC,OAAO,CAAC+C,aAAa;4BAC9B;wBACF;wBAEA,IAAIC,UAAU;wBACd,IAAK,IAAI5B,IAAI,GAAGA,IAAI2B,WAAW1B,MAAM,EAAED,IAAK;4BAC1C,MAAMc,OAAOa,UAAU,CAAC3B,EAAE;4BAE1B,IAAI,CAACc,QAAQ,OAAOA,SAAS,UAAU;gCACrCa,UAAU,CAAC3B,EAAE,GAAG;gCAChB4B,UAAU;gCACV;4BACF;4BAEA,IAAIxC,SAAkC;4BAEtC,IAAIhB,MAAMmB,IAAI,KAAK,SAAS;gCAC1BH,SAAShB,MAAMyD,eAAe;4BAChC,OAAO;gCACL,MAAMC,cAAc1D,MAAM2D,MAAM,CAAC/C,IAAI,CAAC,CAACgD;oCACrC,MAAM/C,OAAO,OAAO+C,SAAS,WAAWA,OAAOA,KAAK/C,IAAI;oCACxD,OAAOA,SAAS6B,KAAKmB,SAAS;gCAChC;gCACA,MAAMC,aACJ,OAAOJ,gBAAgB,WACnBzD,OAAO0D,MAAM,EAAE/C,KAAK,CAACgD,OAASA,KAAK/C,IAAI,KAAK6C,eAC5CA;gCAEN,IAAII,YAAY;oCACd9C,SAAS8C,WAAWL,eAAe;gCACrC,OAAO;oCACLF,UAAU,CAAC3B,EAAE,GAAG;oCAChB4B,UAAU;gCACZ;4BACF;4BAEA,IAAI,CAACxC,QAAQ;gCACX;4BACF;4BAEAyB,YAAY;gCACVxC;gCACAyC;gCACA1B;gCACA2B,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;gCACvDnB;4BACF;wBACF;wBAEA,IAAIY,SAAS;4BACXR,SAAS,CAACI,UAAU,GAAGG,WAAWS,MAAM,CAACC;wBAC3C;wBAEA;oBACF,OAAO;wBACLxB,YAAY;4BACVxC;4BACAyC,MAAMa;4BACNvC,QAAQhB,MAAMyD,eAAe;4BAC7Bd,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;4BACvDnB;wBACF;oBACF;gBACF;gBACA;YACF;YAEA,IAAI5C,MAAMmB,IAAI,KAAK,WAAWnB,MAAMmB,IAAI,KAAK,UAAU;gBACrD,IAAI,CAACZ,MAAMC,OAAO,CAACwC,YAAY;oBAC7B;gBACF;gBAEA,IAAIQ,UAAU;gBAEd,IAAK,IAAI5B,IAAI,GAAGA,IAAIoB,UAAUnB,MAAM,EAAED,IAAK;oBACzC,MAAMc,OAAOM,SAAS,CAACpB,EAAE;oBAEzB,IAAI,CAACc,QAAQ,OAAOA,SAAS,UAAU;wBACrCM,SAAS,CAACpB,EAAE,GAAG;wBACf4B,UAAU;wBACV;oBACF;oBAEA,IAAIxC,SAAkC;oBAEtC,IAAIhB,MAAMmB,IAAI,KAAK,SAAS;wBAC1BH,SAAShB,MAAMyD,eAAe;oBAChC,OAAO;wBACL,MAAMC,cAAc1D,MAAM2D,MAAM,CAAC/C,IAAI,CAAC,CAACgD;4BACrC,MAAM/C,OAAO,OAAO+C,SAAS,WAAWA,OAAOA,KAAK/C,IAAI;4BACxD,OAAOA,SAAS6B,KAAKmB,SAAS;wBAChC;wBACA,MAAMC,aACJ,OAAOJ,gBAAgB,WACnBzD,OAAO0D,MAAM,EAAE/C,KAAK,CAACgD,OAASA,KAAK/C,IAAI,KAAK6C,eAC5CA;wBAEN,IAAII,YAAY;4BACd9C,SAAS8C,WAAWL,eAAe;wBACrC,OAAO;4BACLT,SAAS,CAACpB,EAAE,GAAG;4BACf4B,UAAU;wBACZ;oBACF;oBAEA,IAAI,CAACxC,QAAQ;wBACX;oBACF;oBAEAyB,YAAY;wBACVxC;wBACAyC;wBACA1B;wBACA2B,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;wBACvDnB;oBACF;gBACF;gBAEA,IAAIY,SAAS;oBACXd,IAAI,CAAC1C,MAAMiB,IAAI,CAAC,GAAG+B,UAAUgB,MAAM,CAACC;gBACtC;gBAEA;YACF,OAAO;gBACLxB,YAAY;oBACVxC;oBACAyC,MAAMM;oBACNhC,QAAQhB,MAAMyD,eAAe;oBAC7Bd,mBAAmBA,qBAAqB3C,MAAM+D,SAAS;oBACvDnB;gBACF;YACF;QACF;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,MAAMsB,YAAY,CAAC,EACxBC,SAAS,EACTC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLlE,OAAO,EACPsC,IAAI,EACJ1B,MAAM,EACNuD,UAAU,EACVrE,SAAS,EACTyC,oBAAoB,KAAK,EACzBxC,wBAAwB,IAAI,EACvB;IACL,IAAI,CAACuC,MAAM;QACT,OAAO;IACT;IAEA,IAAInC,MAAMC,OAAO,CAACkC,OAAO;QACvB,KAAK,MAAMpC,QAAQoC,KAAM;YACvBwB,UAAU;gBACRC;gBACAC;gBACAC;gBACAC;gBACAlE;gBACAsC,MAAMpC;gBACNU;gBACAuD;gBACArE;gBACAC;YACF;QACF;QACA;IACF;IAEA,MAAM,EACJqE,SAAS,EAAEvE,MAAM,EAAE,EACpB,GAAGG;IAEJ,IAAIF,cAAc,QAAQ;QACxB,OAAOwC,IAAI,CAAC,MAAM;QAClBA,KAAK+B,EAAE,GAAG/B,KAAKgC,GAAG,IAAIhC,KAAK+B,EAAE;QAC7B,OAAO/B,IAAI,CAAC,MAAM;QAElB,IAAI/C,WAAW+C,KAAK+B,EAAE,GAAG;YACvB/B,KAAK+B,EAAE,GAAG/B,KAAK+B,EAAE,CAACvD,WAAW;QAC/B;QAEA,iEAAiE;QACjE,IAAId,QAAQgB,qBAAqB,IAAI,OAAOsB,KAAK+B,EAAE,KAAK,UAAU;YAChE/B,KAAK+B,EAAE,GAAGpD,OAAOqB,KAAK+B,EAAE;QAC1B;QAEA,IAAI,CAACrE,QAAQuE,mBAAmB,EAAE;YAChClC,YAAY;gBACVxC;gBACAyC;gBACA1B,QAAQzB,iBAAiB;oBAAEqF,OAAO;oBAAM5D;gBAAO;gBAC/C2B,mBAAmB;gBACnBC,cAAc;oBAAC;oBAAM;iBAAa;YACpC;QACF;IACF;IAEA,IAAI1C,cAAc,WAAWqE,YAAY;QACvC7B,KAAKmC,UAAU,GAAGN;IACpB;IAEA,MAAMO,WAAmC,CAAC,EACxC9E,KAAK,EACL2C,iBAAiB,EACjBoC,UAAU,EACVC,WAAWC,iBAAiB,EAC5BvD,KAAKwD,WAAW,EACjB;QACC,IAAI,CAACA,eAAe,OAAOA,gBAAgB,UAAU;YACnD;QACF;QAEA,MAAMxD,MAAMwD;QACZ,MAAMF,YAAaC,qBAAqB,CAAC;QAEzC,8DAA8D;QAC9D,MAAME,sBAAsB;YAC1B,IAAI,CAACH,aAAa,OAAOA,cAAc,UAAU;gBAC/C;YACF;YACA,IAAI,CAACtD,OAAO,OAAOA,QAAQ,UAAU;gBACnC;YACF;YACA,IAAI0D,OAAOC,IAAI,CAAC3D,KAAKG,MAAM,GAAG,GAAG;gBAC/B;YACF;YACA,MAAMyD,eAAeF,OAAOC,IAAI,CAACL,WAAWpE,IAAI,CAAC,CAACiC,IAAMmC,SAAS,CAACnC,EAAE,KAAKnB;YACzE,IAAI4D,cAAc;gBAChBN,SAAS,CAACM,aAAa,GAAGC;YAC5B;QACF;QAEA,IACEnB,QACApE,MAAMmB,IAAI,KAAK,YACfjB,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAC7B,IAAIpB,SAAS,OAAOA,UAAU,YAAY,UAAUA,SAAS,OAAOA,MAAMuE,IAAI,KAAK,UAAU;gBAC3FA,IAAI,CAAC,GAAGW,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAGpB,MAAMuE,IAAI;gBAC/C,OAAO1C,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACtBkE;YACF;QACF;QAEA,IACEb,SACAtE,MAAMmB,IAAI,KAAK,WACfjB,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAE7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,WAAWA,SACTI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,YAChE,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,kEAAkE;oBAClE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5EC,sBAAsB;4BACtB,MAAMxC,OAAOuC,YAAYnB,KAAK;4BAC9B,IAAI/D,MAAMC,OAAO,CAAC0C,OAAO;gCACvBoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;oCAAEyC,OAAO3C;gCAAK;4BACnE,OAAO,IAAI,OAAOA,SAAS,UAAU;gCACnCoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAGF;4BACrD;wBACF;oBACF;oBAEA,IAAIwC,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,WAAWA,OAAO;oBACjE,0DAA0D;oBAC1D,MAAMqD,OAAOrD,MAAMyE,KAAK;oBACxB,IAAI/D,MAAMC,OAAO,CAAC0C,OAAO;wBACvBoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;4BAAE4E,OAAO3C;wBAAK;oBACtD,OAAO,IAAI,OAAOA,SAAS,UAAU;wBACnCoB,KAAK,CAAC,GAAGS,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAGiC;oBACxC;oBACA,OAAOxB,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,yEAAyE;QAEzE,4FAA4F;QAC5F,IACEhB,aACCnE,CAAAA,MAAMmB,IAAI,KAAK,kBAAkBnB,MAAMmB,IAAI,KAAK,QAAO,KACxD,aAAanB,SACbA,MAAM8F,OAAO,IACb5F,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAE7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,WAAWA,SACTI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eACA,OAAOA,gBAAgB,YACvB,WAAYA,YACf,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,kEAAkE;oBAClE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,WAAWA,aAAa;4BAC5EC,sBAAsB;4BACtB,MAAMxC,OAAOuC,YAAYnB,KAAK;4BAC9B,MAAMyB,cAAcxF,MAAMC,OAAO,CAAC0C,QAAQA,OAAO;gCAACA;6BAAK;4BACvD,MAAM8C,uBAAuBlG,0BAC3BiG,aACA/F,OACAC,QACAC,WACAC,uBACAC;4BAEF+D,SAAS,CAAC,GAAGY,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;gCAAEyC,OAAOG;4BAAqB;wBACvF;oBACF;oBAEA,IAAIN,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,WAAWA,OAAO;oBACjE,0DAA0D;oBAC1D,MAAMoG,gBAAgB1F,MAAMC,OAAO,CAACX,MAAMyE,KAAK,IAAIzE,MAAMyE,KAAK,GAAG;wBAACzE,MAAMyE,KAAK;qBAAC;oBAC9E,MAAM4B,iBAAiBpG,0BACrBmG,eACAjG,OACAC,QACAC,WACAC,uBACAC;oBAEF+D,SAAS,CAAC,GAAGY,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;wBAAE4E,OAAOK;oBAAe;oBAClE,OAAOxE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,uEAAuE;QACvE,IACEd,SACCrE,CAAAA,MAAMmB,IAAI,KAAK,kBAAkBnB,MAAMmB,IAAI,KAAK,QAAO,KACxD,aAAanB,SACbA,MAAM8F,OAAO,IACb5F,cAAc,WACdF,MAAMiB,IAAI,IAAIS,OACdA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EACf;YACA,MAAMpB,QAAQ6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;YAC7B,IACEpB,SACA,OAAOA,UAAU,YAChB,CAAA,aAAaA,SACXI,OAAOkD,YAAY,IAClBzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,MAClDyC,OAAOI,MAAM,CAAC3F,OAAOiD,IAAI,CACvB,CAAC2C,cACCA,eACA,OAAOA,gBAAgB,YACvB,aAAcA,YACjB,GACL;gBACA,IAAIxF,OAAOkD,YAAY,IAAIzD,uBAAuB;oBAAEM;oBAAO2C;gBAAkB,IAAI;oBAC/E,oEAAoE;oBACpE,IAAI+C,sBAAsB;oBAC1BN,OAAOO,OAAO,CAAC9F,OAAO+F,OAAO,CAAC,CAAC,CAACxC,WAAWqC,YAAY;wBACrD,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,aAAaA,aAAa;4BAC9EC,sBAAsB;4BACtB,MAAMS,SAASV,YAAYW,OAAO;4BAClC,MAAML,cAAcxF,MAAMC,OAAO,CAAC2F,UAAUA,SAAS;gCAACA;6BAAO;4BAC7D,MAAMH,uBAAuBlG,0BAC3BiG,aACA/F,OACAC,QACAC,WACAC,uBACAC;4BAEFiE,KAAK,CAAC,GAAGU,aAAa/E,MAAMiB,IAAI,CAAC,CAAC,EAAEmC,WAAW,CAAC,GAAG;gCAAEiD,KAAKL;4BAAqB;wBACjF;oBACF;oBAEA,IAAIN,qBAAqB;wBACvB,OAAOhE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;wBACtBkE;oBACF;gBACF,OAAO,IAAItF,SAAS,OAAOA,UAAU,YAAY,aAAaA,OAAO;oBACnE,4DAA4D;oBAC5D,MAAMyG,gBAAgB/F,MAAMC,OAAO,CAACX,MAAMuG,OAAO,IAAIvG,MAAMuG,OAAO,GAAG;wBAACvG,MAAMuG,OAAO;qBAAC;oBACpF,MAAMF,iBAAiBpG,0BACrBwG,eACAtG,OACAC,QACAC,WACAC,uBACAC;oBAEFiE,KAAK,CAAC,GAAGU,aAAa/E,MAAMiB,IAAI,EAAE,CAAC,GAAG;wBAAEoF,KAAKH;oBAAe;oBAC5D,OAAOxE,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;oBACtBkE;gBACF;YACF;QACF;QAEA,IAAInF,MAAMmB,IAAI,KAAK,UAAUjB,cAAc,UAAUF,MAAMiB,IAAI,IAAIS,OAAOA,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EAAE;YACzF,IAAIhB,OAAOkD,YAAY,IAAIzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,IAAI;gBAC/E,MAAM4D,WAAW7E,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBAChC,IAAI,CAACsF,YAAY,OAAOA,aAAa,UAAU;oBAC7C;gBACF;gBAEA,KAAK,MAAM9E,UAAUxB,OAAOkD,YAAY,CAACE,WAAW,CAAE;oBACpDf,aAAa;wBACXtC;wBACAyB;wBACAC,KAAK6E;wBACL1G,OAAO0G,QAAQ,CAAC9E,OAAO;oBACzB;gBACF;YACF,OAAO;gBACLa,aAAa;oBACXtC;oBACA0B;oBACA7B,OAAO6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACxB;YACF;QACF;QAEA,IACEjB,MAAMmB,IAAI,KAAK,kBACfnB,MAAMmB,IAAI,KAAK,YACdjB,cAAc,UAAUF,MAAMmB,IAAI,KAAK,QACxC;YACA,IAAI,CAACO,GAAG,CAAC1B,MAAMiB,IAAI,CAAC,EAAE;gBACpB;YACF;YAEA,iCAAiC;YACjC,IAAIhB,OAAOkD,YAAY,IAAIzD,uBAAuB;gBAAEM;gBAAO2C;YAAkB,IAAI;gBAC/E,MAAM6D,UAAUvG,OAAOkD,YAAY,CAACqD,OAAO;gBAC3C,MAAMD,WAAW7E,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBAChC,IAAI,OAAOsF,aAAa,UAAU;oBAChC;gBACF;gBAEA,KAAK,MAAM,EAAEjD,IAAI,EAAE,IAAIkD,QAAS;oBAC9B,MAAM3G,QAAQ0G,QAAQ,CAACjD,KAAK;oBAC5B,IAAIzD,OAAO;wBACT2B,qBAAqB;4BACnBpB;4BACAH;4BACAD;4BACAyB,QAAQ6B;4BACRpD;4BACAwB,KAAK6E;4BACLpG;4BACAN;wBACF;oBACF;gBACF;YACF,OAAO;gBACL,qCAAqC;gBACrC2B,qBAAqB;oBACnBpB;oBACAH;oBACAD;oBACAyB,QAAQ8D;oBACRrF;oBACAwB;oBACAvB;oBACAN,OAAO6B,GAAG,CAAC1B,MAAMiB,IAAI,CAAC;gBACxB;YACF;QACF;IACF;IAEAzB,eAAe;QACbiH,UAAU3B;QACV7E;QACAe;QACA0F,WAAW;QACX/D;QACAjB,KAAKgB;IACP;IAEA,IAAIxC,cAAc,SAAS;QACzB,IAAI,OAAOwC,KAAKiE,SAAS,KAAK,aAAa;YACzC,kIAAkI;YAClIjE,KAAKiE,SAAS,GAAG,IAAIpE,OAAOC,WAAW;QACzC,OAAO,IAAIE,KAAKiE,SAAS,KAAK,MAAM;YAClC,kJAAkJ;YAClJ,yEAAyE;YACzE,OAAOjE,KAAKiE,SAAS;QACvB;IACF;AACF,EAAC"}
@@ -474,6 +474,73 @@ describe('transform', ()=>{
474
474
  expect(flattenValuesBefore[i]).toBe(value.toHexString());
475
475
  });
476
476
  });
477
+ it('should strip null elements from array and blocks fields on read', ()=>{
478
+ const data = {
479
+ _id: new Types.ObjectId(),
480
+ array: [
481
+ null,
482
+ {
483
+ rel_1: new Types.ObjectId()
484
+ }
485
+ ],
486
+ arrayLocalized: {
487
+ en: [
488
+ null,
489
+ {
490
+ rel_1: new Types.ObjectId()
491
+ }
492
+ ]
493
+ },
494
+ blocks: [
495
+ null,
496
+ {
497
+ blockType: 'block',
498
+ rel_1: new Types.ObjectId()
499
+ }
500
+ ]
501
+ };
502
+ const mockAdapter = {
503
+ allowAdditionalKeys: false,
504
+ payload: {
505
+ config
506
+ }
507
+ };
508
+ expect(()=>transform({
509
+ adapter: mockAdapter,
510
+ operation: 'read',
511
+ data,
512
+ fields: config.collections[0].fields
513
+ })).not.toThrow();
514
+ expect(data.array).toHaveLength(1);
515
+ expect(data.array[0]).toMatchObject({});
516
+ expect(data.arrayLocalized.en).toHaveLength(1);
517
+ expect(data.blocks).toHaveLength(1);
518
+ expect(data.blocks[0].blockType).toBe('block');
519
+ });
520
+ it('should skip null entries in hasMany relationship arrays without coercing them', ()=>{
521
+ const validId = new Types.ObjectId();
522
+ const data = {
523
+ _id: new Types.ObjectId(),
524
+ rel_2: [
525
+ null,
526
+ validId
527
+ ]
528
+ };
529
+ const mockAdapter = {
530
+ allowAdditionalKeys: false,
531
+ payload: {
532
+ config
533
+ }
534
+ };
535
+ expect(()=>transform({
536
+ adapter: mockAdapter,
537
+ operation: 'read',
538
+ data,
539
+ fields: config.collections[0].fields
540
+ })).not.toThrow();
541
+ expect(data.rel_2[0]).toBeNull();
542
+ expect(data.rel_2[1]).toBe(validId.toHexString());
543
+ });
477
544
  });
478
545
 
479
546
  //# sourceMappingURL=transform.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/transform.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { flattenAllFields, type Field, type SanitizedConfig } from 'payload'\nimport { Types } from 'mongoose'\n\nimport { transform } from './transform.js'\nimport type { MongooseAdapter } from '../index.js'\n\nconst flattenRelationshipValues = (obj: Record<string, any>, prefix = ''): Record<string, any> => {\n return Object.keys(obj).reduce(\n (acc, key) => {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value && typeof value === 'object' && !(value instanceof Types.ObjectId)) {\n Object.assign(acc, flattenRelationshipValues(value, fullKey))\n // skip relationTo and blockType\n } else if (!fullKey.endsWith('relationTo') && !fullKey.endsWith('blockType')) {\n acc[fullKey] = value\n }\n\n return acc\n },\n {} as Record<string, any>,\n )\n}\n\nconst relsFields: Field[] = [\n {\n name: 'rel_1',\n type: 'relationship',\n relationTo: 'rels',\n },\n {\n name: 'rel_1_l',\n type: 'relationship',\n localized: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_2',\n type: 'relationship',\n hasMany: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_2_l',\n type: 'relationship',\n hasMany: true,\n localized: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_3',\n type: 'relationship',\n relationTo: ['rels'],\n },\n {\n name: 'rel_3_l',\n type: 'relationship',\n localized: true,\n relationTo: ['rels'],\n },\n {\n name: 'rel_4',\n type: 'relationship',\n hasMany: true,\n relationTo: ['rels'],\n },\n {\n name: 'rel_4_l',\n type: 'relationship',\n hasMany: true,\n localized: true,\n relationTo: ['rels'],\n },\n]\n\nconst referenceBlockFields: Field[] = [\n ...relsFields,\n {\n name: 'group',\n type: 'group',\n fields: relsFields,\n },\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n]\n\nconst config = {\n blocks: [\n {\n slug: 'reference-block',\n fields: referenceBlockFields,\n flattenedFields: flattenAllFields({ fields: referenceBlockFields }),\n },\n ],\n collections: [\n {\n slug: 'docs',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: [\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [{ slug: 'block', fields: relsFields }],\n },\n ...relsFields,\n ],\n },\n {\n name: 'arrayLocalized',\n type: 'array',\n fields: [\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [{ slug: 'block', fields: relsFields }],\n },\n ...relsFields,\n ],\n localized: true,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [\n {\n slug: 'block',\n fields: [\n ...relsFields,\n {\n name: 'group',\n type: 'group',\n fields: relsFields,\n },\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n {\n name: 'referencedBlocks',\n type: 'blocks',\n blocks: ['reference-block'],\n },\n {\n name: 'group',\n type: 'group',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n },\n {\n name: 'groupLocalized',\n type: 'group',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n localized: true,\n },\n {\n name: 'groupAndRow',\n type: 'group',\n fields: [\n {\n type: 'row',\n fields: [\n ...relsFields,\n {\n type: 'array',\n name: 'array',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n {\n type: 'tabs',\n tabs: [\n {\n name: 'tab',\n fields: relsFields,\n },\n {\n name: 'tabLocalized',\n fields: relsFields,\n localized: true,\n },\n {\n label: 'another',\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'nestedTab',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n slug: 'rels',\n fields: [],\n },\n ],\n localization: {\n defaultLocale: 'en',\n localeCodes: ['en', 'es'],\n locales: [\n { code: 'en', label: 'EN' },\n { code: 'es', label: 'ES' },\n ],\n },\n} as SanitizedConfig\n\nconst relsData = {\n rel_1: new Types.ObjectId().toHexString(),\n rel_1_l: {\n en: new Types.ObjectId().toHexString(),\n es: new Types.ObjectId().toHexString(),\n },\n rel_2: [new Types.ObjectId().toHexString()],\n rel_2_l: {\n en: [new Types.ObjectId().toHexString()],\n es: [new Types.ObjectId().toHexString()],\n },\n rel_3: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n rel_3_l: {\n en: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n es: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n },\n rel_4: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n rel_4_l: {\n en: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n es: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n },\n}\n\ndescribe('transform', () => {\n it('should sanitize relationships', () => {\n const data = {\n ...relsData,\n array: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n arrayLocalized: {\n en: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n es: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n },\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n array: [{ ...relsData }],\n group: { ...relsData },\n },\n ],\n referencedBlocks: [\n {\n blockType: 'reference-block',\n array: [{ ...relsData }],\n group: { ...relsData },\n ...relsData,\n },\n ],\n group: {\n ...relsData,\n array: [{ ...relsData }],\n },\n groupAndRow: {\n ...relsData,\n array: [{ ...relsData }],\n },\n groupLocalized: {\n en: {\n ...relsData,\n array: [{ ...relsData }],\n },\n es: {\n ...relsData,\n array: [{ ...relsData }],\n },\n },\n tab: { ...relsData },\n tabLocalized: {\n en: { ...relsData },\n es: { ...relsData },\n },\n nestedTab: { ...relsData },\n }\n const flattenValuesBefore = Object.values(flattenRelationshipValues(data))\n\n const mockAdapter = {\n payload: {\n config,\n },\n } as MongooseAdapter\n\n transform({\n adapter: mockAdapter,\n operation: 'write',\n data,\n fields: config.collections[0].fields,\n })\n if ('updatedAt' in data) {\n delete data.updatedAt\n }\n\n const flattenValuesAfter = Object.values(flattenRelationshipValues(data))\n\n flattenValuesAfter.forEach((value, i) => {\n expect(value).toBeInstanceOf(Types.ObjectId)\n expect(flattenValuesBefore[i]).toBe(value.toHexString())\n })\n })\n})\n"],"names":["describe","it","expect","flattenAllFields","Types","transform","flattenRelationshipValues","obj","prefix","Object","keys","reduce","acc","key","fullKey","value","ObjectId","assign","endsWith","relsFields","name","type","relationTo","localized","hasMany","referenceBlockFields","fields","config","blocks","slug","flattenedFields","collections","tabs","label","localization","defaultLocale","localeCodes","locales","code","relsData","rel_1","toHexString","rel_1_l","en","es","rel_2","rel_2_l","rel_3","rel_3_l","rel_4","rel_4_l","data","array","blockType","arrayLocalized","group","referencedBlocks","groupAndRow","groupLocalized","tab","tabLocalized","nestedTab","flattenValuesBefore","values","mockAdapter","payload","adapter","operation","updatedAt","flattenValuesAfter","forEach","i","toBeInstanceOf","toBe"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAC7C,SAASC,gBAAgB,QAA0C,UAAS;AAC5E,SAASC,KAAK,QAAQ,WAAU;AAEhC,SAASC,SAAS,QAAQ,iBAAgB;AAG1C,MAAMC,4BAA4B,CAACC,KAA0BC,SAAS,EAAE;IACtE,OAAOC,OAAOC,IAAI,CAACH,KAAKI,MAAM,CAC5B,CAACC,KAAKC;QACJ,MAAMC,UAAUN,SAAS,GAAGA,OAAO,CAAC,EAAEK,KAAK,GAAGA;QAC9C,MAAME,QAAQR,GAAG,CAACM,IAAI;QAEtB,IAAIE,SAAS,OAAOA,UAAU,YAAY,CAAEA,CAAAA,iBAAiBX,MAAMY,QAAQ,AAAD,GAAI;YAC5EP,OAAOQ,MAAM,CAACL,KAAKN,0BAA0BS,OAAOD;QACpD,gCAAgC;QAClC,OAAO,IAAI,CAACA,QAAQI,QAAQ,CAAC,iBAAiB,CAACJ,QAAQI,QAAQ,CAAC,cAAc;YAC5EN,GAAG,CAACE,QAAQ,GAAGC;QACjB;QAEA,OAAOH;IACT,GACA,CAAC;AAEL;AAEA,MAAMO,aAAsB;IAC1B;QACEC,MAAM;QACNC,MAAM;QACNC,YAAY;IACd;IACA;QACEF,MAAM;QACNC,MAAM;QACNE,WAAW;QACXD,YAAY;IACd;IACA;QACEF,MAAM;QACNC,MAAM;QACNG,SAAS;QACTF,YAAY;IACd;IACA;QACEF,MAAM;QACNC,MAAM;QACNG,SAAS;QACTD,WAAW;QACXD,YAAY;IACd;IACA;QACEF,MAAM;QACNC,MAAM;QACNC,YAAY;YAAC;SAAO;IACtB;IACA;QACEF,MAAM;QACNC,MAAM;QACNE,WAAW;QACXD,YAAY;YAAC;SAAO;IACtB;IACA;QACEF,MAAM;QACNC,MAAM;QACNG,SAAS;QACTF,YAAY;YAAC;SAAO;IACtB;IACA;QACEF,MAAM;QACNC,MAAM;QACNG,SAAS;QACTD,WAAW;QACXD,YAAY;YAAC;SAAO;IACtB;CACD;AAED,MAAMG,uBAAgC;OACjCN;IACH;QACEC,MAAM;QACNC,MAAM;QACNK,QAAQP;IACV;IACA;QACEC,MAAM;QACNC,MAAM;QACNK,QAAQP;IACV;CACD;AAED,MAAMQ,SAAS;IACbC,QAAQ;QACN;YACEC,MAAM;YACNH,QAAQD;YACRK,iBAAiB3B,iBAAiB;gBAAEuB,QAAQD;YAAqB;QACnE;KACD;IACDM,aAAa;QACX;YACEF,MAAM;YACNH,QAAQ;mBACHP;gBACH;oBACEC,MAAM;oBACNC,MAAM;oBACNK,QAAQ;wBACN;4BACEN,MAAM;4BACNC,MAAM;4BACNK,QAAQP;wBACV;wBACA;4BACEC,MAAM;4BACNC,MAAM;4BACNO,QAAQ;gCAAC;oCAAEC,MAAM;oCAASH,QAAQP;gCAAW;6BAAE;wBACjD;2BACGA;qBACJ;gBACH;gBACA;oBACEC,MAAM;oBACNC,MAAM;oBACNK,QAAQ;wBACN;4BACEN,MAAM;4BACNC,MAAM;4BACNK,QAAQP;wBACV;wBACA;4BACEC,MAAM;4BACNC,MAAM;4BACNO,QAAQ;gCAAC;oCAAEC,MAAM;oCAASH,QAAQP;gCAAW;6BAAE;wBACjD;2BACGA;qBACJ;oBACDI,WAAW;gBACb;gBACA;oBACEH,MAAM;oBACNC,MAAM;oBACNO,QAAQ;wBACN;4BACEC,MAAM;4BACNH,QAAQ;mCACHP;gCACH;oCACEC,MAAM;oCACNC,MAAM;oCACNK,QAAQP;gCACV;gCACA;oCACEC,MAAM;oCACNC,MAAM;oCACNK,QAAQP;gCACV;6BACD;wBACH;qBACD;gBACH;gBACA;oBACEC,MAAM;oBACNC,MAAM;oBACNO,QAAQ;wBAAC;qBAAkB;gBAC7B;gBACA;oBACER,MAAM;oBACNC,MAAM;oBACNK,QAAQ;2BACHP;wBACH;4BACEC,MAAM;4BACNC,MAAM;4BACNK,QAAQP;wBACV;qBACD;gBACH;gBACA;oBACEC,MAAM;oBACNC,MAAM;oBACNK,QAAQ;2BACHP;wBACH;4BACEC,MAAM;4BACNC,MAAM;4BACNK,QAAQP;wBACV;qBACD;oBACDI,WAAW;gBACb;gBACA;oBACEH,MAAM;oBACNC,MAAM;oBACNK,QAAQ;wBACN;4BACEL,MAAM;4BACNK,QAAQ;mCACHP;gCACH;oCACEE,MAAM;oCACND,MAAM;oCACNM,QAAQP;gCACV;6BACD;wBACH;qBACD;gBACH;gBACA;oBACEE,MAAM;oBACNW,MAAM;wBACJ;4BACEZ,MAAM;4BACNM,QAAQP;wBACV;wBACA;4BACEC,MAAM;4BACNM,QAAQP;4BACRI,WAAW;wBACb;wBACA;4BACEU,OAAO;4BACPP,QAAQ;gCACN;oCACEL,MAAM;oCACNW,MAAM;wCACJ;4CACEZ,MAAM;4CACNM,QAAQP;wCACV;qCACD;gCACH;6BACD;wBACH;qBACD;gBACH;aACD;QACH;QACA;YACEU,MAAM;YACNH,QAAQ,EAAE;QACZ;KACD;IACDQ,cAAc;QACZC,eAAe;QACfC,aAAa;YAAC;YAAM;SAAK;QACzBC,SAAS;YACP;gBAAEC,MAAM;gBAAML,OAAO;YAAK;YAC1B;gBAAEK,MAAM;gBAAML,OAAO;YAAK;SAC3B;IACH;AACF;AAEA,MAAMM,WAAW;IACfC,OAAO,IAAIpC,MAAMY,QAAQ,GAAGyB,WAAW;IACvCC,SAAS;QACPC,IAAI,IAAIvC,MAAMY,QAAQ,GAAGyB,WAAW;QACpCG,IAAI,IAAIxC,MAAMY,QAAQ,GAAGyB,WAAW;IACtC;IACAI,OAAO;QAAC,IAAIzC,MAAMY,QAAQ,GAAGyB,WAAW;KAAG;IAC3CK,SAAS;QACPH,IAAI;YAAC,IAAIvC,MAAMY,QAAQ,GAAGyB,WAAW;SAAG;QACxCG,IAAI;YAAC,IAAIxC,MAAMY,QAAQ,GAAGyB,WAAW;SAAG;IAC1C;IACAM,OAAO;QACLzB,YAAY;QACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;IACzC;IACAO,SAAS;QACPL,IAAI;YACFrB,YAAY;YACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;QACzC;QACAG,IAAI;YACFtB,YAAY;YACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;QACzC;IACF;IACAQ,OAAO;QACL;YACE3B,YAAY;YACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;QACzC;KACD;IACDS,SAAS;QACPP,IAAI;YACF;gBACErB,YAAY;gBACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;YACzC;SACD;QACDG,IAAI;YACF;gBACEtB,YAAY;gBACZP,OAAO,IAAIX,MAAMY,QAAQ,GAAGyB,WAAW;YACzC;SACD;IACH;AACF;AAEAzC,SAAS,aAAa;IACpBC,GAAG,iCAAiC;QAClC,MAAMkD,OAAO;YACX,GAAGZ,QAAQ;YACXa,OAAO;gBACL;oBACE,GAAGb,QAAQ;oBACXa,OAAO;wBAAC;4BAAE,GAAGb,QAAQ;wBAAC;qBAAE;oBACxBX,QAAQ;wBACN;4BACEyB,WAAW;4BACX,GAAGd,QAAQ;wBACb;qBACD;gBACH;aACD;YACDe,gBAAgB;gBACdX,IAAI;oBACF;wBACE,GAAGJ,QAAQ;wBACXa,OAAO;4BAAC;gCAAE,GAAGb,QAAQ;4BAAC;yBAAE;wBACxBX,QAAQ;4BACN;gCACEyB,WAAW;gCACX,GAAGd,QAAQ;4BACb;yBACD;oBACH;iBACD;gBACDK,IAAI;oBACF;wBACE,GAAGL,QAAQ;wBACXa,OAAO;4BAAC;gCAAE,GAAGb,QAAQ;4BAAC;yBAAE;wBACxBX,QAAQ;4BACN;gCACEyB,WAAW;gCACX,GAAGd,QAAQ;4BACb;yBACD;oBACH;iBACD;YACH;YACAX,QAAQ;gBACN;oBACEyB,WAAW;oBACX,GAAGd,QAAQ;oBACXa,OAAO;wBAAC;4BAAE,GAAGb,QAAQ;wBAAC;qBAAE;oBACxBgB,OAAO;wBAAE,GAAGhB,QAAQ;oBAAC;gBACvB;aACD;YACDiB,kBAAkB;gBAChB;oBACEH,WAAW;oBACXD,OAAO;wBAAC;4BAAE,GAAGb,QAAQ;wBAAC;qBAAE;oBACxBgB,OAAO;wBAAE,GAAGhB,QAAQ;oBAAC;oBACrB,GAAGA,QAAQ;gBACb;aACD;YACDgB,OAAO;gBACL,GAAGhB,QAAQ;gBACXa,OAAO;oBAAC;wBAAE,GAAGb,QAAQ;oBAAC;iBAAE;YAC1B;YACAkB,aAAa;gBACX,GAAGlB,QAAQ;gBACXa,OAAO;oBAAC;wBAAE,GAAGb,QAAQ;oBAAC;iBAAE;YAC1B;YACAmB,gBAAgB;gBACdf,IAAI;oBACF,GAAGJ,QAAQ;oBACXa,OAAO;wBAAC;4BAAE,GAAGb,QAAQ;wBAAC;qBAAE;gBAC1B;gBACAK,IAAI;oBACF,GAAGL,QAAQ;oBACXa,OAAO;wBAAC;4BAAE,GAAGb,QAAQ;wBAAC;qBAAE;gBAC1B;YACF;YACAoB,KAAK;gBAAE,GAAGpB,QAAQ;YAAC;YACnBqB,cAAc;gBACZjB,IAAI;oBAAE,GAAGJ,QAAQ;gBAAC;gBAClBK,IAAI;oBAAE,GAAGL,QAAQ;gBAAC;YACpB;YACAsB,WAAW;gBAAE,GAAGtB,QAAQ;YAAC;QAC3B;QACA,MAAMuB,sBAAsBrD,OAAOsD,MAAM,CAACzD,0BAA0B6C;QAEpE,MAAMa,cAAc;YAClBC,SAAS;gBACPtC;YACF;QACF;QAEAtB,UAAU;YACR6D,SAASF;YACTG,WAAW;YACXhB;YACAzB,QAAQC,OAAOI,WAAW,CAAC,EAAE,CAACL,MAAM;QACtC;QACA,IAAI,eAAeyB,MAAM;YACvB,OAAOA,KAAKiB,SAAS;QACvB;QAEA,MAAMC,qBAAqB5D,OAAOsD,MAAM,CAACzD,0BAA0B6C;QAEnEkB,mBAAmBC,OAAO,CAAC,CAACvD,OAAOwD;YACjCrE,OAAOa,OAAOyD,cAAc,CAACpE,MAAMY,QAAQ;YAC3Cd,OAAO4D,mBAAmB,CAACS,EAAE,EAAEE,IAAI,CAAC1D,MAAM0B,WAAW;QACvD;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/utilities/transform.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { flattenAllFields, type Field, type SanitizedConfig } from 'payload'\nimport { Types } from 'mongoose'\n\nimport { transform } from './transform.js'\nimport type { MongooseAdapter } from '../index.js'\n\nconst flattenRelationshipValues = (obj: Record<string, any>, prefix = ''): Record<string, any> => {\n return Object.keys(obj).reduce(\n (acc, key) => {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value && typeof value === 'object' && !(value instanceof Types.ObjectId)) {\n Object.assign(acc, flattenRelationshipValues(value, fullKey))\n // skip relationTo and blockType\n } else if (!fullKey.endsWith('relationTo') && !fullKey.endsWith('blockType')) {\n acc[fullKey] = value\n }\n\n return acc\n },\n {} as Record<string, any>,\n )\n}\n\nconst relsFields: Field[] = [\n {\n name: 'rel_1',\n type: 'relationship',\n relationTo: 'rels',\n },\n {\n name: 'rel_1_l',\n type: 'relationship',\n localized: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_2',\n type: 'relationship',\n hasMany: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_2_l',\n type: 'relationship',\n hasMany: true,\n localized: true,\n relationTo: 'rels',\n },\n {\n name: 'rel_3',\n type: 'relationship',\n relationTo: ['rels'],\n },\n {\n name: 'rel_3_l',\n type: 'relationship',\n localized: true,\n relationTo: ['rels'],\n },\n {\n name: 'rel_4',\n type: 'relationship',\n hasMany: true,\n relationTo: ['rels'],\n },\n {\n name: 'rel_4_l',\n type: 'relationship',\n hasMany: true,\n localized: true,\n relationTo: ['rels'],\n },\n]\n\nconst referenceBlockFields: Field[] = [\n ...relsFields,\n {\n name: 'group',\n type: 'group',\n fields: relsFields,\n },\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n]\n\nconst config = {\n blocks: [\n {\n slug: 'reference-block',\n fields: referenceBlockFields,\n flattenedFields: flattenAllFields({ fields: referenceBlockFields }),\n },\n ],\n collections: [\n {\n slug: 'docs',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: [\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [{ slug: 'block', fields: relsFields }],\n },\n ...relsFields,\n ],\n },\n {\n name: 'arrayLocalized',\n type: 'array',\n fields: [\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [{ slug: 'block', fields: relsFields }],\n },\n ...relsFields,\n ],\n localized: true,\n },\n {\n name: 'blocks',\n type: 'blocks',\n blocks: [\n {\n slug: 'block',\n fields: [\n ...relsFields,\n {\n name: 'group',\n type: 'group',\n fields: relsFields,\n },\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n {\n name: 'referencedBlocks',\n type: 'blocks',\n blocks: ['reference-block'],\n },\n {\n name: 'group',\n type: 'group',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n },\n {\n name: 'groupLocalized',\n type: 'group',\n fields: [\n ...relsFields,\n {\n name: 'array',\n type: 'array',\n fields: relsFields,\n },\n ],\n localized: true,\n },\n {\n name: 'groupAndRow',\n type: 'group',\n fields: [\n {\n type: 'row',\n fields: [\n ...relsFields,\n {\n type: 'array',\n name: 'array',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n {\n type: 'tabs',\n tabs: [\n {\n name: 'tab',\n fields: relsFields,\n },\n {\n name: 'tabLocalized',\n fields: relsFields,\n localized: true,\n },\n {\n label: 'another',\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'nestedTab',\n fields: relsFields,\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n slug: 'rels',\n fields: [],\n },\n ],\n localization: {\n defaultLocale: 'en',\n localeCodes: ['en', 'es'],\n locales: [\n { code: 'en', label: 'EN' },\n { code: 'es', label: 'ES' },\n ],\n },\n} as SanitizedConfig\n\nconst relsData = {\n rel_1: new Types.ObjectId().toHexString(),\n rel_1_l: {\n en: new Types.ObjectId().toHexString(),\n es: new Types.ObjectId().toHexString(),\n },\n rel_2: [new Types.ObjectId().toHexString()],\n rel_2_l: {\n en: [new Types.ObjectId().toHexString()],\n es: [new Types.ObjectId().toHexString()],\n },\n rel_3: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n rel_3_l: {\n en: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n es: {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n },\n rel_4: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n rel_4_l: {\n en: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n es: [\n {\n relationTo: 'rels',\n value: new Types.ObjectId().toHexString(),\n },\n ],\n },\n}\n\ndescribe('transform', () => {\n it('should sanitize relationships', () => {\n const data = {\n ...relsData,\n array: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n arrayLocalized: {\n en: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n es: [\n {\n ...relsData,\n array: [{ ...relsData }],\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n },\n ],\n },\n ],\n },\n blocks: [\n {\n blockType: 'block',\n ...relsData,\n array: [{ ...relsData }],\n group: { ...relsData },\n },\n ],\n referencedBlocks: [\n {\n blockType: 'reference-block',\n array: [{ ...relsData }],\n group: { ...relsData },\n ...relsData,\n },\n ],\n group: {\n ...relsData,\n array: [{ ...relsData }],\n },\n groupAndRow: {\n ...relsData,\n array: [{ ...relsData }],\n },\n groupLocalized: {\n en: {\n ...relsData,\n array: [{ ...relsData }],\n },\n es: {\n ...relsData,\n array: [{ ...relsData }],\n },\n },\n tab: { ...relsData },\n tabLocalized: {\n en: { ...relsData },\n es: { ...relsData },\n },\n nestedTab: { ...relsData },\n }\n const flattenValuesBefore = Object.values(flattenRelationshipValues(data))\n\n const mockAdapter = {\n payload: {\n config,\n },\n } as MongooseAdapter\n\n transform({\n adapter: mockAdapter,\n operation: 'write',\n data,\n fields: config.collections[0].fields,\n })\n if ('updatedAt' in data) {\n delete data.updatedAt\n }\n\n const flattenValuesAfter = Object.values(flattenRelationshipValues(data))\n\n flattenValuesAfter.forEach((value, i) => {\n expect(value).toBeInstanceOf(Types.ObjectId)\n expect(flattenValuesBefore[i]).toBe(value.toHexString())\n })\n })\n\n it('should strip null elements from array and blocks fields on read', () => {\n const data: Record<string, any> = {\n _id: new Types.ObjectId(),\n array: [null, { rel_1: new Types.ObjectId() }],\n arrayLocalized: {\n en: [null, { rel_1: new Types.ObjectId() }],\n },\n blocks: [null, { blockType: 'block', rel_1: new Types.ObjectId() }],\n }\n\n const mockAdapter = {\n allowAdditionalKeys: false,\n payload: {\n config,\n },\n } as MongooseAdapter\n\n expect(() =>\n transform({\n adapter: mockAdapter,\n operation: 'read',\n data,\n fields: config.collections[0].fields,\n }),\n ).not.toThrow()\n\n expect(data.array).toHaveLength(1)\n expect(data.array[0]).toMatchObject({})\n expect(data.arrayLocalized.en).toHaveLength(1)\n expect(data.blocks).toHaveLength(1)\n expect(data.blocks[0].blockType).toBe('block')\n })\n\n it('should skip null entries in hasMany relationship arrays without coercing them', () => {\n const validId = new Types.ObjectId()\n const data: Record<string, any> = {\n _id: new Types.ObjectId(),\n rel_2: [null, validId],\n }\n\n const mockAdapter = {\n allowAdditionalKeys: false,\n payload: {\n config,\n },\n } as MongooseAdapter\n\n expect(() =>\n transform({\n adapter: mockAdapter,\n operation: 'read',\n data,\n fields: config.collections[0].fields,\n }),\n ).not.toThrow()\n\n expect(data.rel_2[0]).toBeNull()\n expect(data.rel_2[1]).toBe(validId.toHexString())\n })\n})\n"],"names":["describe","it","expect","flattenAllFields","Types","transform","flattenRelationshipValues","obj","prefix","Object","keys","reduce","acc","key","fullKey","value","ObjectId","assign","endsWith","relsFields","name","type","relationTo","localized","hasMany","referenceBlockFields","fields","config","blocks","slug","flattenedFields","collections","tabs","label","localization","defaultLocale","localeCodes","locales","code","relsData","rel_1","toHexString","rel_1_l","en","es","rel_2","rel_2_l","rel_3","rel_3_l","rel_4","rel_4_l","data","array","blockType","arrayLocalized","group","referencedBlocks","groupAndRow","groupLocalized","tab","tabLocalized","nestedTab","flattenValuesBefore","values","mockAdapter","payload","adapter","operation","updatedAt","flattenValuesAfter","forEach","i","toBeInstanceOf","toBe","_id","allowAdditionalKeys","not","toThrow","toHaveLength","toMatchObject","validId","toBeNull"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-mongodb",
3
- "version": "4.0.0-internal.4cbdd50",
3
+ "version": "4.0.0-internal.532221d",
4
4
  "description": "The officially supported MongoDB database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -54,10 +54,10 @@
54
54
  "mongodb": "6.20.0",
55
55
  "mongodb-memory-server": "10.1.4",
56
56
  "@payloadcms/eslint-config": "3.28.0",
57
- "payload": "4.0.0-internal.4cbdd50"
57
+ "payload": "4.0.0-internal.532221d"
58
58
  },
59
59
  "peerDependencies": {
60
- "payload": "4.0.0-internal.4cbdd50"
60
+ "payload": "4.0.0-internal.532221d"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "pnpm build:types && pnpm build:swc",