@payloadcms/db-mongodb 3.38.0-canary.7 → 3.38.0-internal.6b8eed8

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.
@@ -7,18 +7,17 @@ const relationshipSort = ({ adapter, fields, locale, path, sort, sortAggregation
7
7
  if (segments.length < 2) {
8
8
  return false;
9
9
  }
10
- for(let i = 0; i < segments.length; i++){
11
- const segment = segments[i];
10
+ for (const [i, segment] of segments.entries()){
11
+ if (versions && i === 0 && segment === 'version') {
12
+ segments.shift();
13
+ continue;
14
+ }
12
15
  const field = currentFields.find((each)=>each.name === segment);
13
16
  if (!field) {
14
17
  return false;
15
18
  }
16
19
  if ('fields' in field) {
17
20
  currentFields = field.flattenedFields;
18
- if (field.name === 'version' && versions && i === 0) {
19
- segments.shift();
20
- i--;
21
- }
22
21
  } else if ((field.type === 'relationship' || field.type === 'upload') && i !== segments.length - 1) {
23
22
  const relationshipPath = segments.slice(0, i + 1).join('.');
24
23
  let sortFieldPath = segments.slice(i + 1, segments.length).join('.');
@@ -47,7 +46,7 @@ const relationshipSort = ({ adapter, fields, locale, path, sort, sortAggregation
47
46
  as: `__${path}`,
48
47
  foreignField: '_id',
49
48
  from: foreignCollection.Model.collection.name,
50
- localField: versions ? `version.${relationshipPath}` : relationshipPath,
49
+ localField: relationshipPath,
51
50
  pipeline: [
52
51
  {
53
52
  $project: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildSortParam.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\n\nimport {\n APIError,\n type FlattenedField,\n getFieldByPath,\n type SanitizedConfig,\n type Sort,\n} from 'payload'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { getCollection } from '../utilities/getEntity.js'\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\ntype Args = {\n adapter: MongooseAdapter\n config: SanitizedConfig\n fields: FlattenedField[]\n locale?: string\n parentIsLocalized?: boolean\n sort: Sort\n sortAggregation?: PipelineStage[]\n timestamps: boolean\n versions?: boolean\n}\n\nexport type SortArgs = {\n direction: SortDirection\n property: string\n}[]\n\nexport type SortDirection = 'asc' | 'desc'\n\nconst relationshipSort = ({\n adapter,\n fields,\n locale,\n path,\n sort,\n sortAggregation,\n sortDirection,\n versions,\n}: {\n adapter: MongooseAdapter\n fields: FlattenedField[]\n locale?: string\n path: string\n sort: Record<string, string>\n sortAggregation: PipelineStage[]\n sortDirection: SortDirection\n versions?: boolean\n}) => {\n let currentFields = fields\n const segments = path.split('.')\n if (segments.length < 2) {\n return false\n }\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]\n const field = currentFields.find((each) => each.name === segment)\n\n if (!field) {\n return false\n }\n\n if ('fields' in field) {\n currentFields = field.flattenedFields\n if (field.name === 'version' && versions && i === 0) {\n segments.shift()\n i--\n }\n } else if (\n (field.type === 'relationship' || field.type === 'upload') &&\n i !== segments.length - 1\n ) {\n const relationshipPath = segments.slice(0, i + 1).join('.')\n let sortFieldPath = segments.slice(i + 1, segments.length).join('.')\n if (Array.isArray(field.relationTo)) {\n throw new APIError('Not supported')\n }\n\n const foreignCollection = getCollection({ adapter, collectionSlug: field.relationTo })\n\n const foreignFieldPath = getFieldByPath({\n fields: foreignCollection.collectionConfig.flattenedFields,\n path: sortFieldPath,\n })\n\n if (!foreignFieldPath) {\n return false\n }\n\n if (foreignFieldPath.pathHasLocalized && locale) {\n sortFieldPath = foreignFieldPath.localizedPath.replace('<locale>', locale)\n }\n\n if (\n !sortAggregation.some((each) => {\n return '$lookup' in each && each.$lookup.as === `__${path}`\n })\n ) {\n sortAggregation.push({\n $lookup: {\n as: `__${path}`,\n foreignField: '_id',\n from: foreignCollection.Model.collection.name,\n localField: versions ? `version.${relationshipPath}` : relationshipPath,\n pipeline: [\n {\n $project: {\n [sortFieldPath]: true,\n },\n },\n ],\n },\n })\n\n sort[`__${path}.${sortFieldPath}`] = sortDirection\n\n return true\n }\n }\n }\n\n return false\n}\n\nexport const buildSortParam = ({\n adapter,\n config,\n fields,\n locale,\n parentIsLocalized = false,\n sort,\n sortAggregation,\n timestamps,\n versions,\n}: Args): Record<string, string> => {\n if (!sort) {\n if (timestamps) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n const sorting = sort.reduce<Record<string, string>>((acc, item) => {\n let sortProperty: string\n let sortDirection: SortDirection\n if (item.indexOf('-') === 0) {\n sortProperty = item.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = item\n sortDirection = 'asc'\n }\n if (sortProperty === 'id') {\n acc['_id'] = sortDirection\n return acc\n }\n\n if (\n sortAggregation &&\n relationshipSort({\n adapter,\n fields,\n locale,\n path: sortProperty,\n sort: acc,\n sortAggregation,\n sortDirection,\n versions,\n })\n ) {\n return acc\n }\n\n const localizedProperty = getLocalizedSortProperty({\n config,\n fields,\n locale,\n parentIsLocalized,\n segments: sortProperty.split('.'),\n })\n acc[localizedProperty] = sortDirection\n\n return acc\n }, {})\n\n return sorting\n}\n"],"names":["APIError","getFieldByPath","getCollection","getLocalizedSortProperty","relationshipSort","adapter","fields","locale","path","sort","sortAggregation","sortDirection","versions","currentFields","segments","split","length","i","segment","field","find","each","name","flattenedFields","shift","type","relationshipPath","slice","join","sortFieldPath","Array","isArray","relationTo","foreignCollection","collectionSlug","foreignFieldPath","collectionConfig","pathHasLocalized","localizedPath","replace","some","$lookup","as","push","foreignField","from","Model","collection","localField","pipeline","$project","buildSortParam","config","parentIsLocalized","timestamps","sorting","reduce","acc","item","sortProperty","indexOf","substring","localizedProperty"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/buildSortParam.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\n\nimport {\n APIError,\n type FlattenedField,\n getFieldByPath,\n type SanitizedConfig,\n type Sort,\n} from 'payload'\n\nimport type { MongooseAdapter } from '../index.js'\n\nimport { getCollection } from '../utilities/getEntity.js'\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\ntype Args = {\n adapter: MongooseAdapter\n config: SanitizedConfig\n fields: FlattenedField[]\n locale?: string\n parentIsLocalized?: boolean\n sort: Sort\n sortAggregation?: PipelineStage[]\n timestamps: boolean\n versions?: boolean\n}\n\nexport type SortArgs = {\n direction: SortDirection\n property: string\n}[]\n\nexport type SortDirection = 'asc' | 'desc'\n\nconst relationshipSort = ({\n adapter,\n fields,\n locale,\n path,\n sort,\n sortAggregation,\n sortDirection,\n versions,\n}: {\n adapter: MongooseAdapter\n fields: FlattenedField[]\n locale?: string\n path: string\n sort: Record<string, string>\n sortAggregation: PipelineStage[]\n sortDirection: SortDirection\n versions?: boolean\n}) => {\n let currentFields = fields\n const segments = path.split('.')\n if (segments.length < 2) {\n return false\n }\n\n for (const [i, segment] of segments.entries()) {\n if (versions && i === 0 && segment === 'version') {\n segments.shift()\n continue\n }\n\n const field = currentFields.find((each) => each.name === segment)\n\n if (!field) {\n return false\n }\n\n if ('fields' in field) {\n currentFields = field.flattenedFields\n } else if (\n (field.type === 'relationship' || field.type === 'upload') &&\n i !== segments.length - 1\n ) {\n const relationshipPath = segments.slice(0, i + 1).join('.')\n let sortFieldPath = segments.slice(i + 1, segments.length).join('.')\n if (Array.isArray(field.relationTo)) {\n throw new APIError('Not supported')\n }\n\n const foreignCollection = getCollection({ adapter, collectionSlug: field.relationTo })\n\n const foreignFieldPath = getFieldByPath({\n fields: foreignCollection.collectionConfig.flattenedFields,\n path: sortFieldPath,\n })\n\n if (!foreignFieldPath) {\n return false\n }\n\n if (foreignFieldPath.pathHasLocalized && locale) {\n sortFieldPath = foreignFieldPath.localizedPath.replace('<locale>', locale)\n }\n\n if (\n !sortAggregation.some((each) => {\n return '$lookup' in each && each.$lookup.as === `__${path}`\n })\n ) {\n sortAggregation.push({\n $lookup: {\n as: `__${path}`,\n foreignField: '_id',\n from: foreignCollection.Model.collection.name,\n localField: relationshipPath,\n pipeline: [\n {\n $project: {\n [sortFieldPath]: true,\n },\n },\n ],\n },\n })\n\n sort[`__${path}.${sortFieldPath}`] = sortDirection\n\n return true\n }\n }\n }\n\n return false\n}\n\nexport const buildSortParam = ({\n adapter,\n config,\n fields,\n locale,\n parentIsLocalized = false,\n sort,\n sortAggregation,\n timestamps,\n versions,\n}: Args): Record<string, string> => {\n if (!sort) {\n if (timestamps) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n const sorting = sort.reduce<Record<string, string>>((acc, item) => {\n let sortProperty: string\n let sortDirection: SortDirection\n if (item.indexOf('-') === 0) {\n sortProperty = item.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = item\n sortDirection = 'asc'\n }\n if (sortProperty === 'id') {\n acc['_id'] = sortDirection\n return acc\n }\n\n if (\n sortAggregation &&\n relationshipSort({\n adapter,\n fields,\n locale,\n path: sortProperty,\n sort: acc,\n sortAggregation,\n sortDirection,\n versions,\n })\n ) {\n return acc\n }\n\n const localizedProperty = getLocalizedSortProperty({\n config,\n fields,\n locale,\n parentIsLocalized,\n segments: sortProperty.split('.'),\n })\n acc[localizedProperty] = sortDirection\n\n return acc\n }, {})\n\n return sorting\n}\n"],"names":["APIError","getFieldByPath","getCollection","getLocalizedSortProperty","relationshipSort","adapter","fields","locale","path","sort","sortAggregation","sortDirection","versions","currentFields","segments","split","length","i","segment","entries","shift","field","find","each","name","flattenedFields","type","relationshipPath","slice","join","sortFieldPath","Array","isArray","relationTo","foreignCollection","collectionSlug","foreignFieldPath","collectionConfig","pathHasLocalized","localizedPath","replace","some","$lookup","as","push","foreignField","from","Model","collection","localField","pipeline","$project","buildSortParam","config","parentIsLocalized","timestamps","sorting","reduce","acc","item","sortProperty","indexOf","substring","localizedProperty"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAe1C,eAAO,MAAM,WAAW,EAAE,WA8JzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAe1C,eAAO,MAAM,WAAW,EAAE,WA6JzB,CAAA"}
@@ -114,7 +114,6 @@ export const queryDrafts = async function queryDrafts({ collection: collectionSl
114
114
  query: versionQuery,
115
115
  session: paginationOptions.options?.session ?? undefined,
116
116
  sort: paginationOptions.sort,
117
- sortAggregation,
118
117
  useEstimatedCount: paginationOptions.useEstimatedCount
119
118
  });
120
119
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PaginateOptions, PipelineStage, QueryOptions } from 'mongoose'\nimport type { QueryDrafts } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries, flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: MongooseAdapter,\n {\n collection: collectionSlug,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n\n const options: QueryOptions = {\n session: await getSession(this, req),\n }\n\n let hasNearConstraint\n let sort\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const sortAggregation: PipelineStage[] = []\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n sortAggregation,\n timestamps: true,\n versions: true,\n })\n }\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const versionQuery = await buildQuery({\n adapter: this,\n fields,\n locale,\n where: combinedWhere,\n })\n\n const projection = buildProjectionFromSelect({\n adapter: this,\n fields,\n select,\n })\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n options,\n page,\n pagination,\n projection,\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const defaultLocale = 'en'\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (\n !useEstimatedCount &&\n Object.keys(versionQuery).length === 0 &&\n this.disableIndexHints !== true\n ) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(versionQuery, {\n hint: { _id: 1 },\n }),\n )\n }\n }\n\n if (limit && limit > 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n }\n\n let result\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n collection: collectionSlug,\n collectionConfig,\n joins,\n locale,\n projection,\n query: versionQuery,\n versions: true,\n })\n\n // build join aggregation\n if (aggregate || sortAggregation.length > 0) {\n result = await aggregatePaginate({\n adapter: this,\n collation: paginationOptions.collation,\n joinAggregation: aggregate,\n limit: paginationOptions.limit,\n Model,\n page: paginationOptions.page,\n pagination: paginationOptions.pagination,\n projection: paginationOptions.projection,\n query: versionQuery,\n session: paginationOptions.options?.session ?? undefined,\n sort: paginationOptions.sort as object,\n sortAggregation,\n useEstimatedCount: paginationOptions.useEstimatedCount,\n })\n } else {\n result = await Model.paginate(versionQuery, paginationOptions)\n }\n\n transform({\n adapter: this,\n data: result.docs,\n fields: buildVersionCollectionFields(this.payload.config, collectionConfig),\n operation: 'read',\n })\n\n for (let i = 0; i < result.docs.length; i++) {\n const id = result.docs[i].parent\n result.docs[i] = result.docs[i].version ?? {}\n result.docs[i].id = id\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","combineQueries","flattenWhereToOperators","buildQuery","buildSortParam","aggregatePaginate","buildJoinAggregation","buildProjectionFromSelect","getCollection","getSession","transform","queryDrafts","collection","collectionSlug","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","Model","adapter","versions","options","session","hasNearConstraint","constraints","some","prop","Object","keys","key","fields","payload","config","sortAggregation","defaultSort","timestamps","combinedWhere","latest","equals","versionQuery","projection","useEstimatedCount","length","paginationOptions","lean","leanWithId","collation","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","aggregate","query","joinAggregation","undefined","paginate","data","docs","operation","i","id","parent","version"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PaginateOptions, PipelineStage, QueryOptions } from 'mongoose'\nimport type { QueryDrafts } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries, flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: MongooseAdapter,\n {\n collection: collectionSlug,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n\n const options: QueryOptions = {\n session: await getSession(this, req),\n }\n\n let hasNearConstraint\n let sort\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const sortAggregation: PipelineStage[] = []\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n sortAggregation,\n timestamps: true,\n versions: true,\n })\n }\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const versionQuery = await buildQuery({\n adapter: this,\n fields,\n locale,\n where: combinedWhere,\n })\n\n const projection = buildProjectionFromSelect({\n adapter: this,\n fields,\n select,\n })\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n options,\n page,\n pagination,\n projection,\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const defaultLocale = 'en'\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (\n !useEstimatedCount &&\n Object.keys(versionQuery).length === 0 &&\n this.disableIndexHints !== true\n ) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(versionQuery, {\n hint: { _id: 1 },\n }),\n )\n }\n }\n\n if (limit && limit > 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n }\n\n let result\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n collection: collectionSlug,\n collectionConfig,\n joins,\n locale,\n projection,\n query: versionQuery,\n versions: true,\n })\n\n // build join aggregation\n if (aggregate || sortAggregation.length > 0) {\n result = await aggregatePaginate({\n adapter: this,\n collation: paginationOptions.collation,\n joinAggregation: aggregate,\n limit: paginationOptions.limit,\n Model,\n page: paginationOptions.page,\n pagination: paginationOptions.pagination,\n projection: paginationOptions.projection,\n query: versionQuery,\n session: paginationOptions.options?.session ?? undefined,\n sort: paginationOptions.sort as object,\n useEstimatedCount: paginationOptions.useEstimatedCount,\n })\n } else {\n result = await Model.paginate(versionQuery, paginationOptions)\n }\n\n transform({\n adapter: this,\n data: result.docs,\n fields: buildVersionCollectionFields(this.payload.config, collectionConfig),\n operation: 'read',\n })\n\n for (let i = 0; i < result.docs.length; i++) {\n const id = result.docs[i].parent\n result.docs[i] = result.docs[i].version ?? {}\n result.docs[i].id = id\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","combineQueries","flattenWhereToOperators","buildQuery","buildSortParam","aggregatePaginate","buildJoinAggregation","buildProjectionFromSelect","getCollection","getSession","transform","queryDrafts","collection","collectionSlug","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","Model","adapter","versions","options","session","hasNearConstraint","constraints","some","prop","Object","keys","key","fields","payload","config","sortAggregation","defaultSort","timestamps","combinedWhere","latest","equals","versionQuery","projection","useEstimatedCount","length","paginationOptions","lean","leanWithId","collation","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","aggregate","query","joinAggregation","undefined","paginate","data","docs","operation","i","id","parent","version"],"mappings":"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"}
@@ -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;AAgMlD,KAAK,IAAI,GAAG;IACV,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;AAyID,eAAO,MAAM,SAAS,gGAQnB,IAAI,SAwHN,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;AAgMlD,KAAK,IAAI,GAAG;IACV,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;AAyID,eAAO,MAAM,SAAS,gGAQnB,IAAI,SAuHN,CAAA"}
@@ -288,7 +288,6 @@ export const transform = ({ adapter, data, fields, globalSlug, operation, parent
288
288
  for (const locale of config.localization.localeCodes){
289
289
  sanitizeDate({
290
290
  field,
291
- locale,
292
291
  ref: fieldRef,
293
292
  value: fieldRef[locale]
294
293
  });
@@ -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\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\nconst convertRelationshipValue = ({\n operation,\n relatedCollection,\n validateRelationships,\n value,\n}: {\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 (value instanceof Types.ObjectId) {\n return value.toHexString()\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 config,\n field,\n locale,\n operation,\n ref,\n validateRelationships,\n value,\n}: {\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 (item instanceof Types.ObjectId) {\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 operation,\n relatedCollection: relatedCollectionForSingleValue,\n validateRelationships,\n value: val.value,\n }),\n }\n }\n }\n\n if (relatedCollection) {\n return convertRelationshipValue({\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 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 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 /** 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 reservedKeys = [],\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\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 if (field.type === 'blocks') {\n reservedKeys.push('blockType')\n }\n\n if ('flattenedFields' in field || 'blocks' in field) {\n if (field.localized && 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 for (const data of localeData) {\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n let maybeBlock: FlattenedBlock | undefined = undefined\n\n if (field.blockReferences) {\n const maybeBlockReference = field.blockReferences.find(\n (each) => typeof each === 'object' && each.slug === data.blockType,\n )\n if (maybeBlockReference && typeof maybeBlockReference === 'object') {\n maybeBlock = maybeBlockReference\n }\n }\n\n if (!maybeBlock) {\n maybeBlock = field.blocks.find((each) => each.slug === data.blockType)\n }\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({ config, data, fields, reservedKeys })\n }\n\n continue\n } else {\n stripFields({ config, data: localeData, fields: field.flattenedFields, reservedKeys })\n }\n }\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(fieldData)) {\n continue\n }\n\n for (const data of fieldData) {\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n let maybeBlock: FlattenedBlock | undefined = undefined\n\n if (field.blockReferences) {\n const maybeBlockReference = field.blockReferences.find(\n (each) => typeof each === 'object' && each.slug === data.blockType,\n )\n\n if (maybeBlockReference && typeof maybeBlockReference === 'object') {\n maybeBlock = maybeBlockReference\n }\n }\n\n if (!maybeBlock) {\n maybeBlock = field.blocks.find((each) => each.slug === data.blockType)\n }\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({ config, data, fields, reservedKeys })\n }\n\n continue\n } else {\n stripFields({ config, data: fieldData, fields: field.flattenedFields, reservedKeys })\n }\n }\n }\n}\n\nexport const transform = ({\n adapter,\n data,\n fields,\n globalSlug,\n operation,\n parentIsLocalized = false,\n validateRelationships = true,\n}: Args) => {\n if (Array.isArray(data)) {\n for (const item of data) {\n transform({ adapter, data: item, fields, globalSlug, operation, validateRelationships })\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\n delete data['_id']\n\n if (data.id instanceof Types.ObjectId) {\n data.id = data.id.toHexString()\n }\n\n if (!adapter.allowAdditionalKeys) {\n stripFields({\n config,\n data,\n fields: flattenAllFields({ cache: true, fields }),\n reservedKeys: ['id', 'globalType'],\n })\n }\n }\n\n if (operation === 'write' && globalSlug) {\n data.globalType = globalSlug\n }\n\n const sanitize: TraverseFieldsCallback = ({ field, ref: incomingRef }) => {\n if (!incomingRef || typeof incomingRef !== 'object') {\n return\n }\n\n const ref = incomingRef as Record<string, unknown>\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 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 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"],"names":["Types","flattenAllFields","traverseFields","fieldAffectsData","fieldShouldBeLocalized","isValidRelationObject","value","convertRelationshipValue","operation","relatedCollection","validateRelationships","customIDField","fields","find","field","name","ObjectId","toHexString","e","sanitizeRelationship","config","locale","ref","type","Array","isArray","docs","i","length","item","collection","JSON","parse","stringify","result","hasManyRelations","relationTo","collections","slug","map","val","relatedCollectionForSingleValue","sanitizeDate","Date","toISOString","stripFields","data","reservedKeys","k","some","includes","fieldData","push","localized","localization","localeKey","localeCodes","code","localeData","flattenedFields","maybeBlock","undefined","blockReferences","maybeBlockReference","each","blockType","blocks","transform","adapter","globalSlug","parentIsLocalized","payload","id","_id","allowAdditionalKeys","cache","globalType","sanitize","incomingRef","fieldRef","locales","callback","fillEmpty"],"mappings":"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"}
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\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\nconst convertRelationshipValue = ({\n operation,\n relatedCollection,\n validateRelationships,\n value,\n}: {\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 (value instanceof Types.ObjectId) {\n return value.toHexString()\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 config,\n field,\n locale,\n operation,\n ref,\n validateRelationships,\n value,\n}: {\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 (item instanceof Types.ObjectId) {\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 operation,\n relatedCollection: relatedCollectionForSingleValue,\n validateRelationships,\n value: val.value,\n }),\n }\n }\n }\n\n if (relatedCollection) {\n return convertRelationshipValue({\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 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 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 /** 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 reservedKeys = [],\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\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 if (field.type === 'blocks') {\n reservedKeys.push('blockType')\n }\n\n if ('flattenedFields' in field || 'blocks' in field) {\n if (field.localized && 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 for (const data of localeData) {\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n let maybeBlock: FlattenedBlock | undefined = undefined\n\n if (field.blockReferences) {\n const maybeBlockReference = field.blockReferences.find(\n (each) => typeof each === 'object' && each.slug === data.blockType,\n )\n if (maybeBlockReference && typeof maybeBlockReference === 'object') {\n maybeBlock = maybeBlockReference\n }\n }\n\n if (!maybeBlock) {\n maybeBlock = field.blocks.find((each) => each.slug === data.blockType)\n }\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({ config, data, fields, reservedKeys })\n }\n\n continue\n } else {\n stripFields({ config, data: localeData, fields: field.flattenedFields, reservedKeys })\n }\n }\n continue\n }\n\n if (field.type === 'array' || field.type === 'blocks') {\n if (!Array.isArray(fieldData)) {\n continue\n }\n\n for (const data of fieldData) {\n let fields: FlattenedField[] | null = null\n\n if (field.type === 'array') {\n fields = field.flattenedFields\n } else {\n let maybeBlock: FlattenedBlock | undefined = undefined\n\n if (field.blockReferences) {\n const maybeBlockReference = field.blockReferences.find(\n (each) => typeof each === 'object' && each.slug === data.blockType,\n )\n\n if (maybeBlockReference && typeof maybeBlockReference === 'object') {\n maybeBlock = maybeBlockReference\n }\n }\n\n if (!maybeBlock) {\n maybeBlock = field.blocks.find((each) => each.slug === data.blockType)\n }\n\n if (maybeBlock) {\n fields = maybeBlock.flattenedFields\n }\n }\n\n if (!fields) {\n continue\n }\n\n stripFields({ config, data, fields, reservedKeys })\n }\n\n continue\n } else {\n stripFields({ config, data: fieldData, fields: field.flattenedFields, reservedKeys })\n }\n }\n }\n}\n\nexport const transform = ({\n adapter,\n data,\n fields,\n globalSlug,\n operation,\n parentIsLocalized = false,\n validateRelationships = true,\n}: Args) => {\n if (Array.isArray(data)) {\n for (const item of data) {\n transform({ adapter, data: item, fields, globalSlug, operation, validateRelationships })\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\n delete data['_id']\n\n if (data.id instanceof Types.ObjectId) {\n data.id = data.id.toHexString()\n }\n\n if (!adapter.allowAdditionalKeys) {\n stripFields({\n config,\n data,\n fields: flattenAllFields({ cache: true, fields }),\n reservedKeys: ['id', 'globalType'],\n })\n }\n }\n\n if (operation === 'write' && globalSlug) {\n data.globalType = globalSlug\n }\n\n const sanitize: TraverseFieldsCallback = ({ field, ref: incomingRef }) => {\n if (!incomingRef || typeof incomingRef !== 'object') {\n return\n }\n\n const ref = incomingRef as Record<string, unknown>\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 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 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 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"],"names":["Types","flattenAllFields","traverseFields","fieldAffectsData","fieldShouldBeLocalized","isValidRelationObject","value","convertRelationshipValue","operation","relatedCollection","validateRelationships","customIDField","fields","find","field","name","ObjectId","toHexString","e","sanitizeRelationship","config","locale","ref","type","Array","isArray","docs","i","length","item","collection","JSON","parse","stringify","result","hasManyRelations","relationTo","collections","slug","map","val","relatedCollectionForSingleValue","sanitizeDate","Date","toISOString","stripFields","data","reservedKeys","k","some","includes","fieldData","push","localized","localization","localeKey","localeCodes","code","localeData","flattenedFields","maybeBlock","undefined","blockReferences","maybeBlockReference","each","blockType","blocks","transform","adapter","globalSlug","parentIsLocalized","payload","id","_id","allowAdditionalKeys","cache","globalType","sanitize","incomingRef","fieldRef","locales","callback","fillEmpty"],"mappings":"AAaA,SAASA,KAAK,QAAQ,WAAU;AAChC,SAASC,gBAAgB,EAAEC,cAAc,QAAQ,UAAS;AAC1D,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,iBAAgB;AASzE,SAASC,sBAAsBC,KAAc;IAC3C,OAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,gBAAgBA,SAAS,WAAWA;AAC5F;AAEA,MAAMC,2BAA2B,CAAC,EAChCC,SAAS,EACTC,iBAAiB,EACjBC,qBAAqB,EACrBJ,KAAK,EAMN;IACC,MAAMK,gBAAgBF,kBAAkBG,MAAM,CAACC,IAAI,CACjD,CAACC,QAAUX,iBAAiBW,UAAUA,MAAMC,IAAI,KAAK;IAGvD,IAAIP,cAAc,QAAQ;QACxB,IAAIF,iBAAiBN,MAAMgB,QAAQ,EAAE;YACnC,OAAOV,MAAMW,WAAW;QAC1B;QAEA,OAAOX;IACT;IAEA,IAAIK,eAAe;QACjB,OAAOL;IACT;IAEA,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI;YACF,OAAO,IAAIN,MAAMgB,QAAQ,CAACV;QAC5B,EAAE,OAAOY,GAAG;YACV,IAAIR,uBAAuB;gBACzB,MAAMQ;YACR;YACA,OAAOZ;QACT;IACF;IAEA,OAAOA;AACT;AAEA,MAAMa,uBAAuB,CAAC,EAC5BC,MAAM,EACNN,KAAK,EACLO,MAAM,EACNb,SAAS,EACTc,GAAG,EACHZ,qBAAqB,EACrBJ,KAAK,EASN;IACC,IAAIQ,MAAMS,IAAI,KAAK,QAAQ;QACzB,IACEf,cAAc,UACdF,SACA,OAAOA,UAAU,YACjB,UAAUA,SACVkB,MAAMC,OAAO,CAACnB,MAAMoB,IAAI,GACxB;YACA,IAAK,IAAIC,IAAI,GAAGA,IAAIrB,MAAMoB,IAAI,CAACE,MAAM,EAAED,IAAK;gBAC1C,MAAME,OAAOvB,MAAMoB,IAAI,CAACC,EAAE;gBAE1B,IAAIE,gBAAgB7B,MAAMgB,QAAQ,EAAE;oBAClCV,MAAMoB,IAAI,CAACC,EAAE,GAAGE,KAAKZ,WAAW;gBAClC,OAAO,IAAIO,MAAMC,OAAO,CAACX,MAAMgB,UAAU,KAAKD,MAAM;oBAClD,6EAA6E;oBAC7EvB,MAAMoB,IAAI,CAACC,EAAE,GAAGI,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAAC3B,MAAMoB,IAAI,CAACC,EAAE;gBACzD;YACF;QACF;QAEA,OAAOrB;IACT;IACA,IAAIG;IACJ,IAAIyB,SAAS5B;IAEb,MAAM6B,mBAAmB,OAAOrB,MAAMsB,UAAU,KAAK;IAErD,IAAI,CAACD,kBAAkB;QACrB1B,oBAAoBW,OAAOiB,WAAW,EAAExB,KAAK,CAAC,EAAEyB,IAAI,EAAE,GAAKA,SAASxB,MAAMsB,UAAU;IACtF;IAEA,IAAIZ,MAAMC,OAAO,CAACnB,QAAQ;QACxB4B,SAAS5B,MAAMiC,GAAG,CAAC,CAACC;YAClB,gCAAgC;YAChC,IAAInC,sBAAsBmC,MAAM;gBAC9B,MAAMC,kCAAkCrB,OAAOiB,WAAW,EAAExB,KAC1D,CAAC,EAAEyB,IAAI,EAAE,GAAKA,SAASE,IAAIJ,UAAU;gBAGvC,IAAIK,iCAAiC;oBACnC,OAAO;wBACLL,YAAYI,IAAIJ,UAAU;wBAC1B9B,OAAOC,yBAAyB;4BAC9BC;4BACAC,mBAAmBgC;4BACnB/B;4BACAJ,OAAOkC,IAAIlC,KAAK;wBAClB;oBACF;gBACF;YACF;YAEA,IAAIG,mBAAmB;gBACrB,OAAOF,yBAAyB;oBAC9BC;oBACAC;oBACAC;oBACAJ,OAAOkC;gBACT;YACF;YAEA,OAAOA;QACT;IACF,OAEK,IAAInC,sBAAsBC,QAAQ;QACrCG,oBAAoBW,OAAOiB,WAAW,EAAExB,KAAK,CAAC,EAAEyB,IAAI,EAAE,GAAKA,SAAShC,MAAM8B,UAAU;QAEpF,IAAI3B,mBAAmB;YACrByB,SAAS;gBACPE,YAAY9B,MAAM8B,UAAU;gBAC5B9B,OAAOC,yBAAyB;oBAC9BC;oBACAC;oBACAC;oBACAJ,OAAOA,MAAMA,KAAK;gBACpB;YACF;QACF;IACF,OAEK,IAAIG,mBAAmB;QAC1ByB,SAAS3B,yBAAyB;YAChCC;YACAC;YACAC;YACAJ;QACF;IACF;IAEA,IAAIe,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAGa;IAChB,OAAO;QACLZ,GAAG,CAACR,MAAMC,IAAI,CAAC,GAAGmB;IACpB;AACF;AAEA,MAAMQ,eAAe,CAAC,EACpB5B,KAAK,EACLO,MAAM,EACNC,GAAG,EACHhB,KAAK,EAMN;IACC,IAAI,CAACA,OAAO;QACV;IACF;IAEA,IAAIA,iBAAiBqC,MAAM;QACzBrC,QAAQA,MAAMsC,WAAW;IAC3B;IAEA,IAAIvB,QAAQ;QACVC,GAAG,CAACD,OAAO,GAAGf;IAChB,OAAO;QACLgB,GAAG,CAACR,MAAMC,IAAI,CAAC,GAAGT;IACpB;AACF;AAyBA,MAAMuC,cAAc,CAAC,EACnBzB,MAAM,EACN0B,IAAI,EACJlC,MAAM,EACNmC,eAAe,EAAE,EAMlB;IACC,IAAK,MAAMC,KAAKF,KAAM;QACpB,IAAI,CAAClC,OAAOqC,IAAI,CAAC,CAACnC,QAAUA,MAAMC,IAAI,KAAKiC,MAAM,CAACD,aAAaG,QAAQ,CAACF,IAAI;YAC1E,OAAOF,IAAI,CAACE,EAAE;QAChB;IACF;IAEA,KAAK,MAAMlC,SAASF,OAAQ;QAC1BmC,eAAe,EAAE;QACjB,MAAMI,YAAYL,IAAI,CAAChC,MAAMC,IAAI,CAAC;QAClC,IAAI,CAACoC,aAAa,OAAOA,cAAc,UAAU;YAC/C;QACF;QAEA,IAAIrC,MAAMS,IAAI,KAAK,UAAU;YAC3BwB,aAAaK,IAAI,CAAC;QACpB;QAEA,IAAI,qBAAqBtC,SAAS,YAAYA,OAAO;YACnD,IAAIA,MAAMuC,SAAS,IAAIjC,OAAOkC,YAAY,EAAE;gBAC1C,IAAK,MAAMC,aAAaJ,UAAW;oBACjC,IAAI,CAAC/B,OAAOkC,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,IAAI5C,MAAMS,IAAI,KAAK,WAAWT,MAAMS,IAAI,KAAK,UAAU;wBACrD,IAAI,CAACC,MAAMC,OAAO,CAACiC,aAAa;4BAC9B;wBACF;wBAEA,KAAK,MAAMZ,QAAQY,WAAY;4BAC7B,IAAI9C,SAAkC;4BAEtC,IAAIE,MAAMS,IAAI,KAAK,SAAS;gCAC1BX,SAASE,MAAM6C,eAAe;4BAChC,OAAO;gCACL,IAAIC,aAAyCC;gCAE7C,IAAI/C,MAAMgD,eAAe,EAAE;oCACzB,MAAMC,sBAAsBjD,MAAMgD,eAAe,CAACjD,IAAI,CACpD,CAACmD,OAAS,OAAOA,SAAS,YAAYA,KAAK1B,IAAI,KAAKQ,KAAKmB,SAAS;oCAEpE,IAAIF,uBAAuB,OAAOA,wBAAwB,UAAU;wCAClEH,aAAaG;oCACf;gCACF;gCAEA,IAAI,CAACH,YAAY;oCACfA,aAAa9C,MAAMoD,MAAM,CAACrD,IAAI,CAAC,CAACmD,OAASA,KAAK1B,IAAI,KAAKQ,KAAKmB,SAAS;gCACvE;gCAEA,IAAIL,YAAY;oCACdhD,SAASgD,WAAWD,eAAe;gCACrC;4BACF;4BAEA,IAAI,CAAC/C,QAAQ;gCACX;4BACF;4BAEAiC,YAAY;gCAAEzB;gCAAQ0B;gCAAMlC;gCAAQmC;4BAAa;wBACnD;wBAEA;oBACF,OAAO;wBACLF,YAAY;4BAAEzB;4BAAQ0B,MAAMY;4BAAY9C,QAAQE,MAAM6C,eAAe;4BAAEZ;wBAAa;oBACtF;gBACF;gBACA;YACF;YAEA,IAAIjC,MAAMS,IAAI,KAAK,WAAWT,MAAMS,IAAI,KAAK,UAAU;gBACrD,IAAI,CAACC,MAAMC,OAAO,CAAC0B,YAAY;oBAC7B;gBACF;gBAEA,KAAK,MAAML,QAAQK,UAAW;oBAC5B,IAAIvC,SAAkC;oBAEtC,IAAIE,MAAMS,IAAI,KAAK,SAAS;wBAC1BX,SAASE,MAAM6C,eAAe;oBAChC,OAAO;wBACL,IAAIC,aAAyCC;wBAE7C,IAAI/C,MAAMgD,eAAe,EAAE;4BACzB,MAAMC,sBAAsBjD,MAAMgD,eAAe,CAACjD,IAAI,CACpD,CAACmD,OAAS,OAAOA,SAAS,YAAYA,KAAK1B,IAAI,KAAKQ,KAAKmB,SAAS;4BAGpE,IAAIF,uBAAuB,OAAOA,wBAAwB,UAAU;gCAClEH,aAAaG;4BACf;wBACF;wBAEA,IAAI,CAACH,YAAY;4BACfA,aAAa9C,MAAMoD,MAAM,CAACrD,IAAI,CAAC,CAACmD,OAASA,KAAK1B,IAAI,KAAKQ,KAAKmB,SAAS;wBACvE;wBAEA,IAAIL,YAAY;4BACdhD,SAASgD,WAAWD,eAAe;wBACrC;oBACF;oBAEA,IAAI,CAAC/C,QAAQ;wBACX;oBACF;oBAEAiC,YAAY;wBAAEzB;wBAAQ0B;wBAAMlC;wBAAQmC;oBAAa;gBACnD;gBAEA;YACF,OAAO;gBACLF,YAAY;oBAAEzB;oBAAQ0B,MAAMK;oBAAWvC,QAAQE,MAAM6C,eAAe;oBAAEZ;gBAAa;YACrF;QACF;IACF;AACF;AAEA,OAAO,MAAMoB,YAAY,CAAC,EACxBC,OAAO,EACPtB,IAAI,EACJlC,MAAM,EACNyD,UAAU,EACV7D,SAAS,EACT8D,oBAAoB,KAAK,EACzB5D,wBAAwB,IAAI,EACvB;IACL,IAAIc,MAAMC,OAAO,CAACqB,OAAO;QACvB,KAAK,MAAMjB,QAAQiB,KAAM;YACvBqB,UAAU;gBAAEC;gBAAStB,MAAMjB;gBAAMjB;gBAAQyD;gBAAY7D;gBAAWE;YAAsB;QACxF;QACA;IACF;IAEA,MAAM,EACJ6D,SAAS,EAAEnD,MAAM,EAAE,EACpB,GAAGgD;IAEJ,IAAI5D,cAAc,QAAQ;QACxB,OAAOsC,IAAI,CAAC,MAAM;QAClBA,KAAK0B,EAAE,GAAG1B,KAAK2B,GAAG;QAClB,OAAO3B,IAAI,CAAC,MAAM;QAElB,IAAIA,KAAK0B,EAAE,YAAYxE,MAAMgB,QAAQ,EAAE;YACrC8B,KAAK0B,EAAE,GAAG1B,KAAK0B,EAAE,CAACvD,WAAW;QAC/B;QAEA,IAAI,CAACmD,QAAQM,mBAAmB,EAAE;YAChC7B,YAAY;gBACVzB;gBACA0B;gBACAlC,QAAQX,iBAAiB;oBAAE0E,OAAO;oBAAM/D;gBAAO;gBAC/CmC,cAAc;oBAAC;oBAAM;iBAAa;YACpC;QACF;IACF;IAEA,IAAIvC,cAAc,WAAW6D,YAAY;QACvCvB,KAAK8B,UAAU,GAAGP;IACpB;IAEA,MAAMQ,WAAmC,CAAC,EAAE/D,KAAK,EAAEQ,KAAKwD,WAAW,EAAE;QACnE,IAAI,CAACA,eAAe,OAAOA,gBAAgB,UAAU;YACnD;QACF;QAEA,MAAMxD,MAAMwD;QAEZ,IAAIhE,MAAMS,IAAI,KAAK,UAAUf,cAAc,UAAUM,MAAMC,IAAI,IAAIO,OAAOA,GAAG,CAACR,MAAMC,IAAI,CAAC,EAAE;YACzF,IAAIK,OAAOkC,YAAY,IAAIlD,uBAAuB;gBAAEU;gBAAOwD;YAAkB,IAAI;gBAC/E,MAAMS,WAAWzD,GAAG,CAACR,MAAMC,IAAI,CAAC;gBAChC,IAAI,CAACgE,YAAY,OAAOA,aAAa,UAAU;oBAC7C;gBACF;gBAEA,KAAK,MAAM1D,UAAUD,OAAOkC,YAAY,CAACE,WAAW,CAAE;oBACpDd,aAAa;wBACX5B;wBACAQ,KAAKyD;wBACLzE,OAAOyE,QAAQ,CAAC1D,OAAO;oBACzB;gBACF;YACF,OAAO;gBACLqB,aAAa;oBACX5B;oBACAQ;oBACAhB,OAAOgB,GAAG,CAACR,MAAMC,IAAI,CAAC;gBACxB;YACF;QACF;QAEA,IACED,MAAMS,IAAI,KAAK,kBACfT,MAAMS,IAAI,KAAK,YACdf,cAAc,UAAUM,MAAMS,IAAI,KAAK,QACxC;YACA,IAAI,CAACD,GAAG,CAACR,MAAMC,IAAI,CAAC,EAAE;gBACpB;YACF;YAEA,iCAAiC;YACjC,IAAIK,OAAOkC,YAAY,IAAIlD,uBAAuB;gBAAEU;gBAAOwD;YAAkB,IAAI;gBAC/E,MAAMU,UAAU5D,OAAOkC,YAAY,CAAC0B,OAAO;gBAC3C,MAAMD,WAAWzD,GAAG,CAACR,MAAMC,IAAI,CAAC;gBAChC,IAAI,OAAOgE,aAAa,UAAU;oBAChC;gBACF;gBAEA,KAAK,MAAM,EAAEtB,IAAI,EAAE,IAAIuB,QAAS;oBAC9B,MAAM1E,QAAQyE,QAAQ,CAACtB,KAAK;oBAC5B,IAAInD,OAAO;wBACTa,qBAAqB;4BACnBC;4BACAN;4BACAO,QAAQoC;4BACRjD;4BACAc,KAAKyD;4BACLrE;4BACAJ;wBACF;oBACF;gBACF;YACF,OAAO;gBACL,qCAAqC;gBACrCa,qBAAqB;oBACnBC;oBACAN;oBACAO,QAAQwC;oBACRrD;oBACAc;oBACAZ;oBACAJ,OAAOgB,GAAG,CAACR,MAAMC,IAAI,CAAC;gBACxB;YACF;QACF;IACF;IAEAb,eAAe;QACb+E,UAAUJ;QACVzD;QACAR;QACAsE,WAAW;QACXZ;QACAhD,KAAKwB;IACP;AACF,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-mongodb",
3
- "version": "3.38.0-canary.7",
3
+ "version": "3.38.0-internal.6b8eed8",
4
4
  "description": "The officially supported MongoDB database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -49,10 +49,10 @@
49
49
  "mongodb": "6.12.0",
50
50
  "mongodb-memory-server": "^10",
51
51
  "@payloadcms/eslint-config": "3.28.0",
52
- "payload": "3.38.0-canary.7"
52
+ "payload": "3.38.0-internal.6b8eed8"
53
53
  },
54
54
  "peerDependencies": {
55
- "payload": "3.38.0-canary.7"
55
+ "payload": "3.38.0-internal.6b8eed8"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "pnpm build:types && pnpm build:swc",