@payloadcms/db-mongodb 3.23.0 → 3.24.0-canary.05013b2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +24 -16
- package/dist/init.js.map +1 -1
- package/dist/models/buildCollectionSchema.d.ts.map +1 -1
- package/dist/models/buildCollectionSchema.js +12 -16
- package/dist/models/buildCollectionSchema.js.map +1 -1
- package/dist/models/buildGlobalModel.d.ts.map +1 -1
- package/dist/models/buildGlobalModel.js +8 -4
- package/dist/models/buildGlobalModel.js.map +1 -1
- package/dist/models/buildSchema.d.ts +6 -1
- package/dist/models/buildSchema.d.ts.map +1 -1
- package/dist/models/buildSchema.js +225 -103
- package/dist/models/buildSchema.js.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +9 -2
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
- package/dist/queries/buildAndOrConditions.d.ts +2 -1
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +2 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +1 -0
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/buildSearchParams.d.ts +2 -1
- package/dist/queries/buildSearchParams.d.ts.map +1 -1
- package/dist/queries/buildSearchParams.js +4 -1
- package/dist/queries/buildSearchParams.js.map +1 -1
- package/dist/queries/buildSortParam.d.ts +2 -1
- package/dist/queries/buildSortParam.d.ts.map +1 -1
- package/dist/queries/buildSortParam.js +2 -1
- package/dist/queries/buildSortParam.js.map +1 -1
- package/dist/queries/getLocalizedSortProperty.d.ts +2 -1
- package/dist/queries/getLocalizedSortProperty.d.ts.map +1 -1
- package/dist/queries/getLocalizedSortProperty.js +14 -4
- package/dist/queries/getLocalizedSortProperty.js.map +1 -1
- package/dist/queries/parseParams.d.ts +2 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +3 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/sanitizeQueryValue.d.ts +2 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +14 -5
- package/dist/queries/sanitizeQueryValue.js.map +1 -1
- package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
- package/dist/utilities/buildJoinAggregation.js +5 -1
- package/dist/utilities/buildJoinAggregation.js.map +1 -1
- package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -1
- package/dist/utilities/buildProjectionFromSelect.js +20 -18
- package/dist/utilities/buildProjectionFromSelect.js.map +1 -1
- package/dist/utilities/sanitizeRelationshipIDs.d.ts +2 -1
- package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -1
- package/dist/utilities/sanitizeRelationshipIDs.js +8 -3
- package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -1
- package/dist/utilities/sanitizeRelationshipIDs.spec.js +44 -0
- package/dist/utilities/sanitizeRelationshipIDs.spec.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,7 +3,8 @@ type Args = {
|
|
|
3
3
|
config: SanitizedConfig;
|
|
4
4
|
data: Record<string, unknown>;
|
|
5
5
|
fields: Field[];
|
|
6
|
+
parentIsLocalized?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare const sanitizeRelationshipIDs: ({ config, data, fields, }: Args) => Record<string, unknown>;
|
|
8
|
+
export declare const sanitizeRelationshipIDs: ({ config, data, fields, parentIsLocalized, }: Args) => Record<string, unknown>;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=sanitizeRelationshipIDs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizeRelationshipIDs.d.ts","sourceRoot":"","sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,KAAK,EAAE,eAAe,EAA0B,MAAM,SAAS,CAAA;AAM/F,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"sanitizeRelationshipIDs.d.ts","sourceRoot":"","sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,KAAK,EAAE,eAAe,EAA0B,MAAM,SAAS,CAAA;AAM/F,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAoGD,eAAO,MAAM,uBAAuB,iDAKjC,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAgD/B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Types } from 'mongoose';
|
|
2
2
|
import { traverseFields } from 'payload';
|
|
3
|
-
import { fieldAffectsData } from 'payload/shared';
|
|
3
|
+
import { fieldAffectsData, fieldShouldBeLocalized } from 'payload/shared';
|
|
4
4
|
function isValidRelationObject(value) {
|
|
5
5
|
return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value;
|
|
6
6
|
}
|
|
@@ -73,7 +73,7 @@ const sanitizeRelationship = ({ config, field, locale, ref, value })=>{
|
|
|
73
73
|
ref[field.name] = result;
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
|
-
export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
|
|
76
|
+
export const sanitizeRelationshipIDs = ({ config, data, fields, parentIsLocalized })=>{
|
|
77
77
|
const sanitize = ({ field, ref })=>{
|
|
78
78
|
if (!ref || typeof ref !== 'object') {
|
|
79
79
|
return;
|
|
@@ -83,7 +83,10 @@ export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
|
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
85
|
// handle localized relationships
|
|
86
|
-
if (config.localization &&
|
|
86
|
+
if (config.localization && fieldShouldBeLocalized({
|
|
87
|
+
field,
|
|
88
|
+
parentIsLocalized
|
|
89
|
+
})) {
|
|
87
90
|
const locales = config.localization.locales;
|
|
88
91
|
const fieldRef = ref[field.name];
|
|
89
92
|
if (typeof fieldRef !== 'object') {
|
|
@@ -115,8 +118,10 @@ export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
|
|
|
115
118
|
};
|
|
116
119
|
traverseFields({
|
|
117
120
|
callback: sanitize,
|
|
121
|
+
config,
|
|
118
122
|
fields,
|
|
119
123
|
fillEmpty: false,
|
|
124
|
+
parentIsLocalized,
|
|
120
125
|
ref: data
|
|
121
126
|
});
|
|
122
127
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"sourcesContent":["import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload'\n\nimport { Types } from 'mongoose'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"sourcesContent":["import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload'\n\nimport { Types } from 'mongoose'\nimport { traverseFields } from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized } from 'payload/shared'\n\ntype Args = {\n config: SanitizedConfig\n data: Record<string, unknown>\n fields: Field[]\n parentIsLocalized?: boolean\n}\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 convertValue = ({\n relatedCollection,\n value,\n}: {\n relatedCollection: CollectionConfig\n value: number | string\n}): number | string | Types.ObjectId => {\n const customIDField = relatedCollection.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (customIDField) {\n return value\n }\n\n try {\n return new Types.ObjectId(value)\n } catch {\n return value\n }\n}\n\nconst sanitizeRelationship = ({ config, field, locale, ref, value }) => {\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\n if (relatedCollection && val && (typeof val === 'string' || typeof val === 'number')) {\n return convertValue({\n relatedCollection,\n value: val,\n })\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: convertValue({\n relatedCollection: relatedCollectionForSingleValue,\n value: val.value,\n }),\n }\n }\n }\n\n return val\n })\n }\n\n // Handle has one - polymorphic\n if (isValidRelationObject(value)) {\n relatedCollection = config.collections?.find(({ slug }) => slug === value.relationTo)\n\n if (relatedCollection) {\n result = {\n relationTo: value.relationTo,\n value: convertValue({ relatedCollection, value: value.value }),\n }\n }\n }\n\n // Handle has one\n if (relatedCollection && value && (typeof value === 'string' || typeof value === 'number')) {\n result = convertValue({\n relatedCollection,\n value,\n })\n }\n if (locale) {\n ref[locale] = result\n } else {\n ref[field.name] = result\n }\n}\n\nexport const sanitizeRelationshipIDs = ({\n config,\n data,\n fields,\n parentIsLocalized,\n}: Args): Record<string, unknown> => {\n const sanitize: TraverseFieldsCallback = ({ field, ref }) => {\n if (!ref || typeof ref !== 'object') {\n return\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\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]\n if (typeof fieldRef !== 'object') {\n return\n }\n\n for (const { code } of locales) {\n const value = ref[field.name][code]\n if (value) {\n sanitizeRelationship({ config, field, locale: code, ref: fieldRef, value })\n }\n }\n } else {\n // handle non-localized relationships\n sanitizeRelationship({\n config,\n field,\n locale: undefined,\n ref,\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 return data\n}\n"],"names":["Types","traverseFields","fieldAffectsData","fieldShouldBeLocalized","isValidRelationObject","value","convertValue","relatedCollection","customIDField","fields","find","field","name","ObjectId","sanitizeRelationship","config","locale","ref","result","hasManyRelations","relationTo","collections","slug","Array","isArray","map","val","relatedCollectionForSingleValue","sanitizeRelationshipIDs","data","parentIsLocalized","sanitize","type","localization","locales","fieldRef","code","undefined","callback","fillEmpty"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { flattenAllFields } from 'payload';
|
|
1
2
|
import { Types } from 'mongoose';
|
|
2
3
|
import { sanitizeRelationshipIDs } from './sanitizeRelationshipIDs.js';
|
|
3
4
|
const flattenRelationshipValues = (obj, prefix = '')=>{
|
|
@@ -71,7 +72,29 @@ const relsFields = [
|
|
|
71
72
|
]
|
|
72
73
|
}
|
|
73
74
|
];
|
|
75
|
+
const referenceBlockFields = [
|
|
76
|
+
...relsFields,
|
|
77
|
+
{
|
|
78
|
+
name: 'group',
|
|
79
|
+
type: 'group',
|
|
80
|
+
fields: relsFields
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'array',
|
|
84
|
+
type: 'array',
|
|
85
|
+
fields: relsFields
|
|
86
|
+
}
|
|
87
|
+
];
|
|
74
88
|
const config = {
|
|
89
|
+
blocks: [
|
|
90
|
+
{
|
|
91
|
+
slug: 'reference-block',
|
|
92
|
+
fields: referenceBlockFields,
|
|
93
|
+
flattenedFields: flattenAllFields({
|
|
94
|
+
fields: referenceBlockFields
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
],
|
|
75
98
|
collections: [
|
|
76
99
|
{
|
|
77
100
|
slug: 'docs',
|
|
@@ -144,6 +167,13 @@ const config = {
|
|
|
144
167
|
}
|
|
145
168
|
]
|
|
146
169
|
},
|
|
170
|
+
{
|
|
171
|
+
name: 'blockReferences',
|
|
172
|
+
type: 'blocks',
|
|
173
|
+
blockReferences: [
|
|
174
|
+
'reference-block'
|
|
175
|
+
]
|
|
176
|
+
},
|
|
147
177
|
{
|
|
148
178
|
name: 'group',
|
|
149
179
|
type: 'group',
|
|
@@ -359,6 +389,20 @@ describe('sanitizeRelationshipIDs', ()=>{
|
|
|
359
389
|
}
|
|
360
390
|
}
|
|
361
391
|
],
|
|
392
|
+
blockReferences: [
|
|
393
|
+
{
|
|
394
|
+
blockType: 'reference-block',
|
|
395
|
+
array: [
|
|
396
|
+
{
|
|
397
|
+
...relsData
|
|
398
|
+
}
|
|
399
|
+
],
|
|
400
|
+
group: {
|
|
401
|
+
...relsData
|
|
402
|
+
},
|
|
403
|
+
...relsData
|
|
404
|
+
}
|
|
405
|
+
],
|
|
362
406
|
group: {
|
|
363
407
|
...relsData,
|
|
364
408
|
array: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.spec.ts"],"sourcesContent":["import type { Field, SanitizedConfig } from 'payload'\n\nimport { Types } from 'mongoose'\n\nimport { sanitizeRelationshipIDs } from './sanitizeRelationshipIDs.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 config = {\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: '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('sanitizeRelationshipIDs', () => {\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 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 sanitizeRelationshipIDs({ config, data, fields: config.collections[0].fields })\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":["Types","sanitizeRelationshipIDs","flattenRelationshipValues","obj","prefix","Object","keys","reduce","acc","key","fullKey","value","ObjectId","assign","endsWith","relsFields","name","type","relationTo","localized","hasMany","config","collections","slug","fields","blocks","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","describe","it","data","array","blockType","arrayLocalized","group","groupAndRow","groupLocalized","tab","tabLocalized","nestedTab","flattenValuesBefore","values","flattenValuesAfter","forEach","i","expect","toBeInstanceOf","toBe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.spec.ts"],"sourcesContent":["import { flattenAllFields, type Field, type SanitizedConfig } from 'payload'\n\nimport { Types } from 'mongoose'\n\nimport { sanitizeRelationshipIDs } from './sanitizeRelationshipIDs.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: 'blockReferences',\n type: 'blocks',\n blockReferences: ['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('sanitizeRelationshipIDs', () => {\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 blockReferences: [\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 sanitizeRelationshipIDs({ config, data, fields: config.collections[0].fields })\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":["flattenAllFields","Types","sanitizeRelationshipIDs","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","blockReferences","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","describe","it","data","array","blockType","arrayLocalized","group","groupAndRow","groupLocalized","tab","tabLocalized","nestedTab","flattenValuesBefore","values","flattenValuesAfter","forEach","i","expect","toBeInstanceOf","toBe"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/db-mongodb",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.24.0-canary.05013b2",
|
|
4
4
|
"description": "The officially supported MongoDB database adapter for Payload",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
"@types/mongoose-aggregate-paginate-v2": "1.0.12",
|
|
48
48
|
"mongodb": "6.12.0",
|
|
49
49
|
"mongodb-memory-server": "^10",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
50
|
+
"@payloadcms/eslint-config": "3.9.0",
|
|
51
|
+
"payload": "3.24.0-canary.05013b2"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"payload": "3.
|
|
54
|
+
"payload": "3.24.0-canary.05013b2"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "pnpm build:types && pnpm build:swc",
|