@payloadcms/db-mongodb 3.0.0-canary.9de3ffd → 3.0.0-canary.9f64534

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 (169) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +12 -3
  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 +10 -1
  17. package/dist/create.js.map +1 -1
  18. package/dist/createGlobal.d.ts.map +1 -1
  19. package/dist/createGlobal.js +10 -5
  20. package/dist/createGlobal.js.map +1 -1
  21. package/dist/createGlobalVersion.d.ts +1 -1
  22. package/dist/createGlobalVersion.d.ts.map +1 -1
  23. package/dist/createGlobalVersion.js +13 -4
  24. package/dist/createGlobalVersion.js.map +1 -1
  25. package/dist/createMigration.d.ts.map +1 -1
  26. package/dist/createMigration.js +8 -6
  27. package/dist/createMigration.js.map +1 -1
  28. package/dist/createVersion.d.ts +1 -1
  29. package/dist/createVersion.d.ts.map +1 -1
  30. package/dist/createVersion.js +31 -9
  31. package/dist/createVersion.js.map +1 -1
  32. package/dist/deleteOne.d.ts.map +1 -1
  33. package/dist/deleteOne.js +11 -3
  34. package/dist/deleteOne.js.map +1 -1
  35. package/dist/exports/migration-utils.d.ts +3 -0
  36. package/dist/exports/migration-utils.d.ts.map +1 -0
  37. package/dist/exports/migration-utils.js +4 -0
  38. package/dist/exports/migration-utils.js.map +1 -0
  39. package/dist/find.d.ts.map +1 -1
  40. package/dist/find.js +27 -4
  41. package/dist/find.js.map +1 -1
  42. package/dist/findGlobal.d.ts.map +1 -1
  43. package/dist/findGlobal.js +9 -3
  44. package/dist/findGlobal.js.map +1 -1
  45. package/dist/findGlobalVersions.d.ts.map +1 -1
  46. package/dist/findGlobalVersions.js +9 -4
  47. package/dist/findGlobalVersions.js.map +1 -1
  48. package/dist/findOne.d.ts.map +1 -1
  49. package/dist/findOne.js +27 -3
  50. package/dist/findOne.js.map +1 -1
  51. package/dist/findVersions.d.ts.map +1 -1
  52. package/dist/findVersions.js +9 -4
  53. package/dist/findVersions.js.map +1 -1
  54. package/dist/index.d.ts +23 -4
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +16 -7
  57. package/dist/index.js.map +1 -1
  58. package/dist/init.d.ts.map +1 -1
  59. package/dist/init.js +20 -18
  60. package/dist/init.js.map +1 -1
  61. package/dist/models/buildCollectionSchema.d.ts +2 -3
  62. package/dist/models/buildCollectionSchema.d.ts.map +1 -1
  63. package/dist/models/buildCollectionSchema.js +10 -7
  64. package/dist/models/buildCollectionSchema.js.map +1 -1
  65. package/dist/models/buildGlobalModel.d.ts +2 -2
  66. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  67. package/dist/models/buildGlobalModel.js +6 -6
  68. package/dist/models/buildGlobalModel.js.map +1 -1
  69. package/dist/models/buildSchema.d.ts +2 -3
  70. package/dist/models/buildSchema.d.ts.map +1 -1
  71. package/dist/models/buildSchema.js +108 -66
  72. package/dist/models/buildSchema.js.map +1 -1
  73. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts +6 -0
  74. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -0
  75. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +141 -0
  76. package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -0
  77. package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts +5 -0
  78. package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts.map +1 -0
  79. package/dist/predefinedMigrations/migrateVersionsV1_V2.js +107 -0
  80. package/dist/predefinedMigrations/migrateVersionsV1_V2.js.map +1 -0
  81. package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
  82. package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
  83. package/dist/predefinedMigrations/relationships-v2-v3.js +9 -0
  84. package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
  85. package/dist/predefinedMigrations/versions-v1-v2.d.ts +4 -0
  86. package/dist/predefinedMigrations/versions-v1-v2.d.ts.map +1 -0
  87. package/dist/predefinedMigrations/versions-v1-v2.js +5 -95
  88. package/dist/predefinedMigrations/versions-v1-v2.js.map +1 -1
  89. package/dist/queries/buildQuery.d.ts +2 -2
  90. package/dist/queries/buildQuery.d.ts.map +1 -1
  91. package/dist/queries/buildQuery.js +1 -2
  92. package/dist/queries/buildQuery.js.map +1 -1
  93. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  94. package/dist/queries/buildSearchParams.js +29 -18
  95. package/dist/queries/buildSearchParams.js.map +1 -1
  96. package/dist/queries/buildSortParam.d.ts +2 -2
  97. package/dist/queries/buildSortParam.d.ts.map +1 -1
  98. package/dist/queries/buildSortParam.js +26 -17
  99. package/dist/queries/buildSortParam.js.map +1 -1
  100. package/dist/queries/getLocalizedSortProperty.spec.js +1 -1
  101. package/dist/queries/getLocalizedSortProperty.spec.js.map +1 -1
  102. package/dist/queries/parseParams.d.ts.map +1 -1
  103. package/dist/queries/parseParams.js +7 -2
  104. package/dist/queries/parseParams.js.map +1 -1
  105. package/dist/queries/sanitizeQueryValue.d.ts +3 -2
  106. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  107. package/dist/queries/sanitizeQueryValue.js +263 -37
  108. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  109. package/dist/queryDrafts.d.ts.map +1 -1
  110. package/dist/queryDrafts.js +29 -8
  111. package/dist/queryDrafts.js.map +1 -1
  112. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  113. package/dist/transactions/beginTransaction.js +2 -0
  114. package/dist/transactions/beginTransaction.js.map +1 -1
  115. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  116. package/dist/transactions/commitTransaction.js +3 -1
  117. package/dist/transactions/commitTransaction.js.map +1 -1
  118. package/dist/types.d.ts +7 -4
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/types.js.map +1 -1
  121. package/dist/updateGlobal.d.ts.map +1 -1
  122. package/dist/updateGlobal.js +18 -4
  123. package/dist/updateGlobal.js.map +1 -1
  124. package/dist/updateGlobalVersion.d.ts +2 -2
  125. package/dist/updateGlobalVersion.d.ts.map +1 -1
  126. package/dist/updateGlobalVersion.js +19 -4
  127. package/dist/updateGlobalVersion.js.map +1 -1
  128. package/dist/updateOne.d.ts.map +1 -1
  129. package/dist/updateOne.js +18 -4
  130. package/dist/updateOne.js.map +1 -1
  131. package/dist/updateVersion.d.ts +1 -1
  132. package/dist/updateVersion.d.ts.map +1 -1
  133. package/dist/updateVersion.js +18 -3
  134. package/dist/updateVersion.js.map +1 -1
  135. package/dist/upsert.d.ts +3 -0
  136. package/dist/upsert.d.ts.map +1 -0
  137. package/dist/upsert.js +15 -0
  138. package/dist/upsert.js.map +1 -0
  139. package/dist/utilities/buildJoinAggregation.d.ts +18 -0
  140. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -0
  141. package/dist/utilities/buildJoinAggregation.js +159 -0
  142. package/dist/utilities/buildJoinAggregation.js.map +1 -0
  143. package/dist/utilities/buildProjectionFromSelect.d.ts +8 -0
  144. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -0
  145. package/dist/utilities/buildProjectionFromSelect.js +171 -0
  146. package/dist/utilities/buildProjectionFromSelect.js.map +1 -0
  147. package/dist/utilities/getDBName.d.ts.map +1 -1
  148. package/dist/utilities/getDBName.js +3 -1
  149. package/dist/utilities/getDBName.js.map +1 -1
  150. package/dist/utilities/handleError.js +2 -2
  151. package/dist/utilities/handleError.js.map +1 -1
  152. package/dist/utilities/sanitizeInternalFields.d.ts +1 -2
  153. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  154. package/dist/utilities/sanitizeInternalFields.js +1 -2
  155. package/dist/utilities/sanitizeInternalFields.js.map +1 -1
  156. package/dist/utilities/sanitizeRelationshipIDs.d.ts +9 -0
  157. package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -0
  158. package/dist/utilities/sanitizeRelationshipIDs.js +116 -0
  159. package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -0
  160. package/dist/utilities/sanitizeRelationshipIDs.spec.js +408 -0
  161. package/dist/utilities/sanitizeRelationshipIDs.spec.js.map +1 -0
  162. package/dist/withSession.d.ts +1 -1
  163. package/dist/withSession.d.ts.map +1 -1
  164. package/dist/withSession.js +5 -3
  165. package/dist/withSession.js.map +1 -1
  166. package/license.md +22 -0
  167. package/package.json +24 -11
  168. package/dist/queries/mock.js +0 -2
  169. package/dist/queries/mock.js.map +0 -1
@@ -0,0 +1,116 @@
1
+ import { Types } from 'mongoose';
2
+ import { APIError, traverseFields } from 'payload';
3
+ import { fieldAffectsData } from 'payload/shared';
4
+ function isValidRelationObject(value) {
5
+ return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value;
6
+ }
7
+ const convertValue = ({ relatedCollection, value })=>{
8
+ const customIDField = relatedCollection.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
9
+ if (!customIDField) {
10
+ try {
11
+ return new Types.ObjectId(value);
12
+ } catch (error) {
13
+ throw new APIError(`Failed to create ObjectId from value: ${value}. Error: ${error.message}`, 400);
14
+ }
15
+ }
16
+ return value;
17
+ };
18
+ const sanitizeRelationship = ({ config, field, locale, ref, value })=>{
19
+ let relatedCollection;
20
+ let result = value;
21
+ const hasManyRelations = typeof field.relationTo !== 'string';
22
+ if (!hasManyRelations) {
23
+ relatedCollection = config.collections?.find(({ slug })=>slug === field.relationTo);
24
+ }
25
+ if (Array.isArray(value)) {
26
+ result = value.map((val)=>{
27
+ // Handle has many
28
+ if (relatedCollection && val && (typeof val === 'string' || typeof val === 'number')) {
29
+ return convertValue({
30
+ relatedCollection,
31
+ value: val
32
+ });
33
+ }
34
+ // Handle has many - polymorphic
35
+ if (isValidRelationObject(val)) {
36
+ const relatedCollectionForSingleValue = config.collections?.find(({ slug })=>slug === val.relationTo);
37
+ if (relatedCollectionForSingleValue) {
38
+ return {
39
+ relationTo: val.relationTo,
40
+ value: convertValue({
41
+ relatedCollection: relatedCollectionForSingleValue,
42
+ value: val.value
43
+ })
44
+ };
45
+ }
46
+ }
47
+ return val;
48
+ });
49
+ }
50
+ // Handle has one - polymorphic
51
+ if (isValidRelationObject(value)) {
52
+ relatedCollection = config.collections?.find(({ slug })=>slug === value.relationTo);
53
+ if (relatedCollection) {
54
+ result = {
55
+ relationTo: value.relationTo,
56
+ value: convertValue({
57
+ relatedCollection,
58
+ value: value.value
59
+ })
60
+ };
61
+ }
62
+ }
63
+ // Handle has one
64
+ if (relatedCollection && value && (typeof value === 'string' || typeof value === 'number')) {
65
+ result = convertValue({
66
+ relatedCollection,
67
+ value
68
+ });
69
+ }
70
+ if (locale) {
71
+ ref[locale] = result;
72
+ } else {
73
+ ref[field.name] = result;
74
+ }
75
+ };
76
+ export const sanitizeRelationshipIDs = ({ config, data, fields })=>{
77
+ const sanitize = ({ field, ref })=>{
78
+ if (field.type === 'relationship' || field.type === 'upload') {
79
+ // handle localized relationships
80
+ if (config.localization && field.localized) {
81
+ const locales = config.localization.locales;
82
+ const fieldRef = ref[field.name];
83
+ for (const { code } of locales){
84
+ if (ref[field.name]?.[code]) {
85
+ const value = ref[field.name][code];
86
+ sanitizeRelationship({
87
+ config,
88
+ field,
89
+ locale: code,
90
+ ref: fieldRef,
91
+ value
92
+ });
93
+ }
94
+ }
95
+ } else {
96
+ // handle non-localized relationships
97
+ sanitizeRelationship({
98
+ config,
99
+ field,
100
+ locale: undefined,
101
+ ref,
102
+ value: ref[field.name]
103
+ });
104
+ }
105
+ }
106
+ };
107
+ traverseFields({
108
+ callback: sanitize,
109
+ fields,
110
+ fillEmpty: false,
111
+ ref: data
112
+ });
113
+ return data;
114
+ };
115
+
116
+ //# sourceMappingURL=sanitizeRelationshipIDs.js.map
@@ -0,0 +1 @@
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 (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, 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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"}
@@ -7,5 +7,5 @@ import type { MongooseAdapter } from './index.js';
7
7
  */
8
8
  export declare function withSession(db: MongooseAdapter, req: PayloadRequest): Promise<{
9
9
  session: ClientSession;
10
- } | object>;
10
+ } | Record<string, never>>;
11
11
  //# sourceMappingURL=withSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withSession.d.ts","sourceRoot":"","sources":["../src/withSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,eAAe,EACnB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,GAAG,MAAM,CAAC,CAQ9C"}
1
+ {"version":3,"file":"withSession.d.ts","sourceRoot":"","sources":["../src/withSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,eAAe,EACnB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAU7D"}
@@ -6,9 +6,11 @@
6
6
  if (transactionID instanceof Promise) {
7
7
  transactionID = await req.transactionID;
8
8
  }
9
- if (req) return db.sessions[transactionID] ? {
10
- session: db.sessions[transactionID]
11
- } : {};
9
+ if (req) {
10
+ return db.sessions[transactionID] ? {
11
+ session: db.sessions[transactionID]
12
+ } : {};
13
+ }
12
14
  }
13
15
 
14
16
  //# sourceMappingURL=withSession.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/withSession.ts"],"sourcesContent":["import type { ClientSession } from 'mongoose'\nimport type { PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * returns the session belonging to the transaction of the req.session if exists\n * @returns ClientSession\n */\nexport async function withSession(\n db: MongooseAdapter,\n req: PayloadRequest,\n): Promise<{ session: ClientSession } | object> {\n let transactionID = req.transactionID\n\n if (transactionID instanceof Promise) {\n transactionID = await req.transactionID\n }\n\n if (req) return db.sessions[transactionID] ? { session: db.sessions[transactionID] } : {}\n}\n"],"names":["withSession","db","req","transactionID","Promise","sessions","session"],"mappings":"AAKA;;;CAGC,GACD,OAAO,eAAeA,YACpBC,EAAmB,EACnBC,GAAmB;IAEnB,IAAIC,gBAAgBD,IAAIC,aAAa;IAErC,IAAIA,yBAAyBC,SAAS;QACpCD,gBAAgB,MAAMD,IAAIC,aAAa;IACzC;IAEA,IAAID,KAAK,OAAOD,GAAGI,QAAQ,CAACF,cAAc,GAAG;QAAEG,SAASL,GAAGI,QAAQ,CAACF,cAAc;IAAC,IAAI,CAAC;AAC1F"}
1
+ {"version":3,"sources":["../src/withSession.ts"],"sourcesContent":["import type { ClientSession } from 'mongoose'\nimport type { PayloadRequest } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * returns the session belonging to the transaction of the req.session if exists\n * @returns ClientSession\n */\nexport async function withSession(\n db: MongooseAdapter,\n req: PayloadRequest,\n): Promise<{ session: ClientSession } | Record<string, never>> {\n let transactionID = req.transactionID\n\n if (transactionID instanceof Promise) {\n transactionID = await req.transactionID\n }\n\n if (req) {\n return db.sessions[transactionID] ? { session: db.sessions[transactionID] } : {}\n }\n}\n"],"names":["withSession","db","req","transactionID","Promise","sessions","session"],"mappings":"AAKA;;;CAGC,GACD,OAAO,eAAeA,YACpBC,EAAmB,EACnBC,GAAmB;IAEnB,IAAIC,gBAAgBD,IAAIC,aAAa;IAErC,IAAIA,yBAAyBC,SAAS;QACpCD,gBAAgB,MAAMD,IAAIC,aAAa;IACzC;IAEA,IAAID,KAAK;QACP,OAAOD,GAAGI,QAAQ,CAACF,cAAc,GAAG;YAAEG,SAASL,GAAGI,QAAQ,CAACF,cAAc;QAAC,IAAI,CAAC;IACjF;AACF"}
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.