@payloadcms/db-mongodb 3.0.0-canary.51be7be → 3.0.0-canary.5624723

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 (130) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +5 -0
  3. package/dist/connect.js.map +1 -1
  4. package/dist/count.d.ts.map +1 -1
  5. package/dist/count.js +8 -1
  6. package/dist/count.js.map +1 -1
  7. package/dist/countGlobalVersions.d.ts +3 -0
  8. package/dist/countGlobalVersions.d.ts.map +1 -0
  9. package/dist/countGlobalVersions.js +40 -0
  10. package/dist/countGlobalVersions.js.map +1 -0
  11. package/dist/countVersions.d.ts +3 -0
  12. package/dist/countVersions.d.ts.map +1 -0
  13. package/dist/countVersions.js +40 -0
  14. package/dist/countVersions.js.map +1 -0
  15. package/dist/create.d.ts.map +1 -1
  16. package/dist/create.js +3 -0
  17. package/dist/create.js.map +1 -1
  18. package/dist/createMigration.d.ts.map +1 -1
  19. package/dist/createMigration.js +6 -4
  20. package/dist/createMigration.js.map +1 -1
  21. package/dist/createVersion.js +2 -2
  22. package/dist/createVersion.js.map +1 -1
  23. package/dist/deleteOne.d.ts.map +1 -1
  24. package/dist/deleteOne.js +10 -2
  25. package/dist/deleteOne.js.map +1 -1
  26. package/dist/exports/migration-utils.d.ts +3 -0
  27. package/dist/exports/migration-utils.d.ts.map +1 -0
  28. package/dist/exports/migration-utils.js +4 -0
  29. package/dist/exports/migration-utils.js.map +1 -0
  30. package/dist/find.d.ts.map +1 -1
  31. package/dist/find.js +9 -3
  32. package/dist/find.js.map +1 -1
  33. package/dist/findGlobal.d.ts.map +1 -1
  34. package/dist/findGlobal.js +8 -2
  35. package/dist/findGlobal.js.map +1 -1
  36. package/dist/findGlobalVersions.d.ts.map +1 -1
  37. package/dist/findGlobalVersions.js +7 -2
  38. package/dist/findGlobalVersions.js.map +1 -1
  39. package/dist/findOne.d.ts.map +1 -1
  40. package/dist/findOne.js +9 -1
  41. package/dist/findOne.js.map +1 -1
  42. package/dist/findVersions.d.ts.map +1 -1
  43. package/dist/findVersions.js +8 -3
  44. package/dist/findVersions.js.map +1 -1
  45. package/dist/index.d.ts +18 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +7 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/init.d.ts.map +1 -1
  50. package/dist/init.js +11 -12
  51. package/dist/init.js.map +1 -1
  52. package/dist/models/buildCollectionSchema.d.ts +2 -2
  53. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  54. package/dist/models/buildCollectionSchema.js +4 -4
  55. package/dist/models/buildCollectionSchema.js.map +1 -1
  56. package/dist/models/buildGlobalModel.d.ts +2 -2
  57. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  58. package/dist/models/buildGlobalModel.js +4 -4
  59. package/dist/models/buildGlobalModel.js.map +1 -1
  60. package/dist/models/buildSchema.d.ts +2 -2
  61. package/dist/models/buildSchema.d.ts.map +1 -1
  62. package/dist/models/buildSchema.js +86 -62
  63. package/dist/models/buildSchema.js.map +1 -1
  64. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts +6 -0
  65. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -0
  66. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +141 -0
  67. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -0
  68. package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts +5 -0
  69. package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts.map +1 -0
  70. package/dist/predefinedMigrations/migrateVersionsV1_V2.js +107 -0
  71. package/dist/predefinedMigrations/migrateVersionsV1_V2.js.map +1 -0
  72. package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
  73. package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
  74. package/dist/predefinedMigrations/relationships-v2-v3.js +9 -0
  75. package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
  76. package/dist/predefinedMigrations/versions-v1-v2.d.ts +4 -0
  77. package/dist/predefinedMigrations/versions-v1-v2.d.ts.map +1 -0
  78. package/dist/predefinedMigrations/versions-v1-v2.js +5 -95
  79. package/dist/predefinedMigrations/versions-v1-v2.js.map +1 -1
  80. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  81. package/dist/queries/buildSearchParams.js +10 -7
  82. package/dist/queries/buildSearchParams.js.map +1 -1
  83. package/dist/queries/buildSortParam.d.ts +2 -2
  84. package/dist/queries/buildSortParam.d.ts.map +1 -1
  85. package/dist/queries/buildSortParam.js +26 -17
  86. package/dist/queries/buildSortParam.js.map +1 -1
  87. package/dist/queries/parseParams.d.ts.map +1 -1
  88. package/dist/queries/parseParams.js +4 -1
  89. package/dist/queries/parseParams.js.map +1 -1
  90. package/dist/queries/sanitizeQueryValue.d.ts +3 -2
  91. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  92. package/dist/queries/sanitizeQueryValue.js +157 -47
  93. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  94. package/dist/queryDrafts.d.ts.map +1 -1
  95. package/dist/queryDrafts.js +27 -4
  96. package/dist/queryDrafts.js.map +1 -1
  97. package/dist/updateGlobal.d.ts.map +1 -1
  98. package/dist/updateGlobal.js +11 -3
  99. package/dist/updateGlobal.js.map +1 -1
  100. package/dist/updateGlobalVersion.d.ts +1 -1
  101. package/dist/updateGlobalVersion.d.ts.map +1 -1
  102. package/dist/updateGlobalVersion.js +11 -3
  103. package/dist/updateGlobalVersion.js.map +1 -1
  104. package/dist/updateOne.d.ts.map +1 -1
  105. package/dist/updateOne.js +10 -3
  106. package/dist/updateOne.js.map +1 -1
  107. package/dist/updateVersion.d.ts.map +1 -1
  108. package/dist/updateVersion.js +11 -3
  109. package/dist/updateVersion.js.map +1 -1
  110. package/dist/upsert.js +2 -1
  111. package/dist/upsert.js.map +1 -1
  112. package/dist/utilities/buildJoinAggregation.d.ts +4 -1
  113. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  114. package/dist/utilities/buildJoinAggregation.js +20 -9
  115. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  116. package/dist/utilities/buildProjectionFromSelect.d.ts +8 -0
  117. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -0
  118. package/dist/utilities/buildProjectionFromSelect.js +171 -0
  119. package/dist/utilities/buildProjectionFromSelect.js.map +1 -0
  120. package/dist/utilities/handleError.js +2 -2
  121. package/dist/utilities/handleError.js.map +1 -1
  122. package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -1
  123. package/dist/utilities/sanitizeRelationshipIDs.js +14 -4
  124. package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -1
  125. package/dist/utilities/sanitizeRelationshipIDs.spec.js +408 -0
  126. package/dist/utilities/sanitizeRelationshipIDs.spec.js.map +1 -0
  127. package/license.md +22 -0
  128. package/package.json +20 -10
  129. package/dist/queries/mock.js +0 -2
  130. package/dist/queries/mock.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import mongoose from 'mongoose';
1
+ import { Types } from 'mongoose';
2
2
  import { APIError, traverseFields } from 'payload';
3
3
  import { fieldAffectsData } from 'payload/shared';
4
4
  function isValidRelationObject(value) {
@@ -8,7 +8,7 @@ const convertValue = ({ relatedCollection, value })=>{
8
8
  const customIDField = relatedCollection.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
9
9
  if (!customIDField) {
10
10
  try {
11
- return new mongoose.Types.ObjectId(value);
11
+ return new Types.ObjectId(value);
12
12
  } catch (error) {
13
13
  throw new APIError(`Failed to create ObjectId from value: ${value}. Error: ${error.message}`, 400);
14
14
  }
@@ -75,14 +75,23 @@ const sanitizeRelationship = ({ config, field, locale, ref, value })=>{
75
75
  };
76
76
  export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
77
77
  const sanitize = ({ field, ref })=>{
78
+ if (!ref || typeof ref !== 'object') {
79
+ return;
80
+ }
78
81
  if (field.type === 'relationship' || field.type === 'upload') {
82
+ if (!ref[field.name]) {
83
+ return;
84
+ }
79
85
  // handle localized relationships
80
86
  if (config.localization && field.localized) {
81
87
  const locales = config.localization.locales;
82
88
  const fieldRef = ref[field.name];
89
+ if (typeof fieldRef !== 'object') {
90
+ return;
91
+ }
83
92
  for (const { code } of locales){
84
- if (ref[field.name]?.[code]) {
85
- const value = ref[field.name][code];
93
+ const value = ref[field.name][code];
94
+ if (value) {
86
95
  sanitizeRelationship({
87
96
  config,
88
97
  field,
@@ -107,6 +116,7 @@ export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
107
116
  traverseFields({
108
117
  callback: sanitize,
109
118
  fields,
119
+ fillEmpty: false,
110
120
  ref: data
111
121
  });
112
122
  return data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"sourcesContent":["import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload'\n\nimport mongoose from 'mongoose'\nimport { APIError, traverseFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\ntype Args = {\n config: SanitizedConfig\n data: Record<string, unknown>\n fields: Field[]\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}): mongoose.Types.ObjectId | number | string => {\n const customIDField = relatedCollection.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!customIDField) {\n try {\n return new mongoose.Types.ObjectId(value)\n } catch (error) {\n throw new APIError(\n `Failed to create ObjectId from value: ${value}. Error: ${error.message}`,\n 400,\n )\n }\n }\n\n return value\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}: Args): Record<string, unknown> => {\n const sanitize: TraverseFieldsCallback = ({ field, ref }) => {\n if (field.type === 'relationship' || field.type === 'upload') {\n // handle localized relationships\n if (config.localization && field.localized) {\n const locales = config.localization.locales\n const fieldRef = ref[field.name]\n for (const { code } of locales) {\n if (ref[field.name]?.[code]) {\n const value = ref[field.name][code]\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({ callback: sanitize, fields, ref: data })\n\n return data\n}\n"],"names":["mongoose","APIError","traverseFields","fieldAffectsData","isValidRelationObject","value","convertValue","relatedCollection","customIDField","fields","find","field","name","Types","ObjectId","error","message","sanitizeRelationship","config","locale","ref","result","hasManyRelations","relationTo","collections","slug","Array","isArray","map","val","relatedCollectionForSingleValue","sanitizeRelationshipIDs","data","sanitize","type","localization","localized","locales","fieldRef","code","undefined","callback"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"sourcesContent":["import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload'\n\nimport { Types } from 'mongoose'\nimport { APIError, traverseFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\ntype Args = {\n config: SanitizedConfig\n data: Record<string, unknown>\n fields: Field[]\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 try {\n return new Types.ObjectId(value)\n } catch (error) {\n throw new APIError(\n `Failed to create ObjectId from value: ${value}. Error: ${error.message}`,\n 400,\n )\n }\n }\n\n return value\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}: 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 && field.localized) {\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({ callback: sanitize, fields, fillEmpty: false, ref: data })\n\n return data\n}\n"],"names":["Types","APIError","traverseFields","fieldAffectsData","isValidRelationObject","value","convertValue","relatedCollection","customIDField","fields","find","field","name","ObjectId","error","message","sanitizeRelationship","config","locale","ref","result","hasManyRelations","relationTo","collections","slug","Array","isArray","map","val","relatedCollectionForSingleValue","sanitizeRelationshipIDs","data","sanitize","type","localization","localized","locales","fieldRef","code","undefined","callback","fillEmpty"],"mappings":"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"}
@@ -0,0 +1,408 @@
1
+ import { Types } from 'mongoose';
2
+ import { sanitizeRelationshipIDs } from './sanitizeRelationshipIDs.js';
3
+ const flattenRelationshipValues = (obj, prefix = '')=>{
4
+ return Object.keys(obj).reduce((acc, key)=>{
5
+ const fullKey = prefix ? `${prefix}.${key}` : key;
6
+ const value = obj[key];
7
+ if (value && typeof value === 'object' && !(value instanceof Types.ObjectId)) {
8
+ Object.assign(acc, flattenRelationshipValues(value, fullKey));
9
+ // skip relationTo and blockType
10
+ } else if (!fullKey.endsWith('relationTo') && !fullKey.endsWith('blockType')) {
11
+ acc[fullKey] = value;
12
+ }
13
+ return acc;
14
+ }, {});
15
+ };
16
+ const relsFields = [
17
+ {
18
+ name: 'rel_1',
19
+ type: 'relationship',
20
+ relationTo: 'rels'
21
+ },
22
+ {
23
+ name: 'rel_1_l',
24
+ type: 'relationship',
25
+ localized: true,
26
+ relationTo: 'rels'
27
+ },
28
+ {
29
+ name: 'rel_2',
30
+ type: 'relationship',
31
+ hasMany: true,
32
+ relationTo: 'rels'
33
+ },
34
+ {
35
+ name: 'rel_2_l',
36
+ type: 'relationship',
37
+ hasMany: true,
38
+ localized: true,
39
+ relationTo: 'rels'
40
+ },
41
+ {
42
+ name: 'rel_3',
43
+ type: 'relationship',
44
+ relationTo: [
45
+ 'rels'
46
+ ]
47
+ },
48
+ {
49
+ name: 'rel_3_l',
50
+ type: 'relationship',
51
+ localized: true,
52
+ relationTo: [
53
+ 'rels'
54
+ ]
55
+ },
56
+ {
57
+ name: 'rel_4',
58
+ type: 'relationship',
59
+ hasMany: true,
60
+ relationTo: [
61
+ 'rels'
62
+ ]
63
+ },
64
+ {
65
+ name: 'rel_4_l',
66
+ type: 'relationship',
67
+ hasMany: true,
68
+ localized: true,
69
+ relationTo: [
70
+ 'rels'
71
+ ]
72
+ }
73
+ ];
74
+ const config = {
75
+ collections: [
76
+ {
77
+ slug: 'docs',
78
+ fields: [
79
+ ...relsFields,
80
+ {
81
+ name: 'array',
82
+ type: 'array',
83
+ fields: [
84
+ {
85
+ name: 'array',
86
+ type: 'array',
87
+ fields: relsFields
88
+ },
89
+ {
90
+ name: 'blocks',
91
+ type: 'blocks',
92
+ blocks: [
93
+ {
94
+ slug: 'block',
95
+ fields: relsFields
96
+ }
97
+ ]
98
+ },
99
+ ...relsFields
100
+ ]
101
+ },
102
+ {
103
+ name: 'arrayLocalized',
104
+ type: 'array',
105
+ fields: [
106
+ {
107
+ name: 'array',
108
+ type: 'array',
109
+ fields: relsFields
110
+ },
111
+ {
112
+ name: 'blocks',
113
+ type: 'blocks',
114
+ blocks: [
115
+ {
116
+ slug: 'block',
117
+ fields: relsFields
118
+ }
119
+ ]
120
+ },
121
+ ...relsFields
122
+ ],
123
+ localized: true
124
+ },
125
+ {
126
+ name: 'blocks',
127
+ type: 'blocks',
128
+ blocks: [
129
+ {
130
+ slug: 'block',
131
+ fields: [
132
+ ...relsFields,
133
+ {
134
+ name: 'group',
135
+ type: 'group',
136
+ fields: relsFields
137
+ },
138
+ {
139
+ name: 'array',
140
+ type: 'array',
141
+ fields: relsFields
142
+ }
143
+ ]
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ name: 'group',
149
+ type: 'group',
150
+ fields: [
151
+ ...relsFields,
152
+ {
153
+ name: 'array',
154
+ type: 'array',
155
+ fields: relsFields
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ name: 'groupLocalized',
161
+ type: 'group',
162
+ fields: [
163
+ ...relsFields,
164
+ {
165
+ name: 'array',
166
+ type: 'array',
167
+ fields: relsFields
168
+ }
169
+ ],
170
+ localized: true
171
+ },
172
+ {
173
+ name: 'groupAndRow',
174
+ type: 'group',
175
+ fields: [
176
+ {
177
+ type: 'row',
178
+ fields: [
179
+ ...relsFields,
180
+ {
181
+ type: 'array',
182
+ name: 'array',
183
+ fields: relsFields
184
+ }
185
+ ]
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ type: 'tabs',
191
+ tabs: [
192
+ {
193
+ name: 'tab',
194
+ fields: relsFields
195
+ },
196
+ {
197
+ name: 'tabLocalized',
198
+ fields: relsFields,
199
+ localized: true
200
+ }
201
+ ]
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ slug: 'rels',
207
+ fields: []
208
+ }
209
+ ],
210
+ localization: {
211
+ defaultLocale: 'en',
212
+ localeCodes: [
213
+ 'en',
214
+ 'es'
215
+ ],
216
+ locales: [
217
+ {
218
+ code: 'en',
219
+ label: 'EN'
220
+ },
221
+ {
222
+ code: 'es',
223
+ label: 'ES'
224
+ }
225
+ ]
226
+ }
227
+ };
228
+ const relsData = {
229
+ rel_1: new Types.ObjectId().toHexString(),
230
+ rel_1_l: {
231
+ en: new Types.ObjectId().toHexString(),
232
+ es: new Types.ObjectId().toHexString()
233
+ },
234
+ rel_2: [
235
+ new Types.ObjectId().toHexString()
236
+ ],
237
+ rel_2_l: {
238
+ en: [
239
+ new Types.ObjectId().toHexString()
240
+ ],
241
+ es: [
242
+ new Types.ObjectId().toHexString()
243
+ ]
244
+ },
245
+ rel_3: {
246
+ relationTo: 'rels',
247
+ value: new Types.ObjectId().toHexString()
248
+ },
249
+ rel_3_l: {
250
+ en: {
251
+ relationTo: 'rels',
252
+ value: new Types.ObjectId().toHexString()
253
+ },
254
+ es: {
255
+ relationTo: 'rels',
256
+ value: new Types.ObjectId().toHexString()
257
+ }
258
+ },
259
+ rel_4: [
260
+ {
261
+ relationTo: 'rels',
262
+ value: new Types.ObjectId().toHexString()
263
+ }
264
+ ],
265
+ rel_4_l: {
266
+ en: [
267
+ {
268
+ relationTo: 'rels',
269
+ value: new Types.ObjectId().toHexString()
270
+ }
271
+ ],
272
+ es: [
273
+ {
274
+ relationTo: 'rels',
275
+ value: new Types.ObjectId().toHexString()
276
+ }
277
+ ]
278
+ }
279
+ };
280
+ describe('sanitizeRelationshipIDs', ()=>{
281
+ it('should sanitize relationships', ()=>{
282
+ const data = {
283
+ ...relsData,
284
+ array: [
285
+ {
286
+ ...relsData,
287
+ array: [
288
+ {
289
+ ...relsData
290
+ }
291
+ ],
292
+ blocks: [
293
+ {
294
+ blockType: 'block',
295
+ ...relsData
296
+ }
297
+ ]
298
+ }
299
+ ],
300
+ arrayLocalized: {
301
+ en: [
302
+ {
303
+ ...relsData,
304
+ array: [
305
+ {
306
+ ...relsData
307
+ }
308
+ ],
309
+ blocks: [
310
+ {
311
+ blockType: 'block',
312
+ ...relsData
313
+ }
314
+ ]
315
+ }
316
+ ],
317
+ es: [
318
+ {
319
+ ...relsData,
320
+ array: [
321
+ {
322
+ ...relsData
323
+ }
324
+ ],
325
+ blocks: [
326
+ {
327
+ blockType: 'block',
328
+ ...relsData
329
+ }
330
+ ]
331
+ }
332
+ ]
333
+ },
334
+ blocks: [
335
+ {
336
+ blockType: 'block',
337
+ ...relsData,
338
+ array: [
339
+ {
340
+ ...relsData
341
+ }
342
+ ],
343
+ group: {
344
+ ...relsData
345
+ }
346
+ }
347
+ ],
348
+ group: {
349
+ ...relsData,
350
+ array: [
351
+ {
352
+ ...relsData
353
+ }
354
+ ]
355
+ },
356
+ groupAndRow: {
357
+ ...relsData,
358
+ array: [
359
+ {
360
+ ...relsData
361
+ }
362
+ ]
363
+ },
364
+ groupLocalized: {
365
+ en: {
366
+ ...relsData,
367
+ array: [
368
+ {
369
+ ...relsData
370
+ }
371
+ ]
372
+ },
373
+ es: {
374
+ ...relsData,
375
+ array: [
376
+ {
377
+ ...relsData
378
+ }
379
+ ]
380
+ }
381
+ },
382
+ tab: {
383
+ ...relsData
384
+ },
385
+ tabLocalized: {
386
+ en: {
387
+ ...relsData
388
+ },
389
+ es: {
390
+ ...relsData
391
+ }
392
+ }
393
+ };
394
+ const flattenValuesBefore = Object.values(flattenRelationshipValues(data));
395
+ sanitizeRelationshipIDs({
396
+ config,
397
+ data,
398
+ fields: config.collections[0].fields
399
+ });
400
+ const flattenValuesAfter = Object.values(flattenRelationshipValues(data));
401
+ flattenValuesAfter.forEach((value, i)=>{
402
+ expect(value).toBeInstanceOf(Types.ObjectId);
403
+ expect(flattenValuesBefore[i]).toBe(value.toHexString());
404
+ });
405
+ });
406
+ });
407
+
408
+ //# sourceMappingURL=sanitizeRelationshipIDs.spec.js.map
@@ -0,0 +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 },\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 }\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","localization","defaultLocale","localeCodes","locales","code","label","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","flattenValuesBefore","values","flattenValuesAfter","forEach","i","expect","toBeInstanceOf","toBe"],"mappings":"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"}
package/license.md ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018-2024 Payload CMS, Inc. <info@payloadcms.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-mongodb",
3
- "version": "3.0.0-canary.51be7be",
3
+ "version": "3.0.0-canary.5624723",
4
4
  "description": "The officially supported MongoDB database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -10,39 +10,49 @@
10
10
  },
11
11
  "license": "MIT",
12
12
  "author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
13
+ "maintainers": [
14
+ {
15
+ "name": "Payload",
16
+ "email": "info@payloadcms.com",
17
+ "url": "https://payloadcms.com"
18
+ }
19
+ ],
13
20
  "type": "module",
14
21
  "exports": {
15
22
  ".": {
16
23
  "import": "./dist/index.js",
17
24
  "types": "./dist/index.d.ts",
18
25
  "default": "./dist/index.js"
26
+ },
27
+ "./migration-utils": {
28
+ "import": "./dist/exports/migration-utils.js",
29
+ "types": "./dist/exports/migration-utils.d.ts",
30
+ "default": "./dist/exports/migration-utils.js"
19
31
  }
20
32
  },
21
33
  "main": "./dist/index.js",
22
34
  "types": "./dist/index.d.ts",
23
35
  "files": [
24
36
  "dist",
25
- "mock.js",
26
37
  "predefinedMigrations"
27
38
  ],
28
39
  "dependencies": {
29
- "bson-objectid": "2.0.4",
30
40
  "http-status": "1.6.2",
31
- "mongoose": "6.12.3",
32
- "mongoose-aggregate-paginate-v2": "1.0.6",
33
- "mongoose-paginate-v2": "1.7.22",
41
+ "mongoose": "8.8.1",
42
+ "mongoose-aggregate-paginate-v2": "1.1.2",
43
+ "mongoose-paginate-v2": "1.8.5",
34
44
  "prompts": "2.4.2",
35
45
  "uuid": "10.0.0"
36
46
  },
37
47
  "devDependencies": {
38
- "@types/mongoose-aggregate-paginate-v2": "1.0.6",
39
- "mongodb": "4.17.1",
48
+ "@types/mongoose-aggregate-paginate-v2": "1.0.12",
49
+ "mongodb": "6.10.0",
40
50
  "mongodb-memory-server": "^9",
41
51
  "@payloadcms/eslint-config": "3.0.0-beta.112",
42
- "payload": "3.0.0-canary.51be7be"
52
+ "payload": "3.0.0-canary.5624723"
43
53
  },
44
54
  "peerDependencies": {
45
- "payload": "3.0.0-canary.51be7be"
55
+ "payload": "3.0.0-canary.5624723"
46
56
  },
47
57
  "scripts": {
48
58
  "build": "pnpm build:types && pnpm build:swc",
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/queries/mock.js"],"names":[],"mappings":""}