@payloadcms/db-mongodb 3.0.0-canary.96477cf → 3.0.0-canary.98e0119
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +5 -0
- package/dist/connect.js.map +1 -1
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +8 -1
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.d.ts +3 -0
- package/dist/countGlobalVersions.d.ts.map +1 -0
- package/dist/countGlobalVersions.js +40 -0
- package/dist/countGlobalVersions.js.map +1 -0
- package/dist/countVersions.d.ts +3 -0
- package/dist/countVersions.d.ts.map +1 -0
- package/dist/countVersions.js +40 -0
- package/dist/countVersions.js.map +1 -0
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +3 -0
- package/dist/create.js.map +1 -1
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +6 -4
- package/dist/createMigration.js.map +1 -1
- package/dist/createVersion.js +2 -2
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +10 -2
- package/dist/deleteOne.js.map +1 -1
- package/dist/exports/migration-utils.d.ts +3 -0
- package/dist/exports/migration-utils.d.ts.map +1 -0
- package/dist/exports/migration-utils.js +4 -0
- package/dist/exports/migration-utils.js.map +1 -0
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +9 -3
- package/dist/find.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +8 -2
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +7 -2
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +9 -1
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +8 -3
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +8 -9
- package/dist/init.js.map +1 -1
- package/dist/models/buildSchema.js +16 -1
- package/dist/models/buildSchema.js.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts +6 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +136 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -0
- package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts +5 -0
- package/dist/predefinedMigrations/migrateVersionsV1_V2.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateVersionsV1_V2.js +107 -0
- package/dist/predefinedMigrations/migrateVersionsV1_V2.js.map +1 -0
- package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
- package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
- package/dist/predefinedMigrations/relationships-v2-v3.js +9 -0
- package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
- package/dist/predefinedMigrations/versions-v1-v2.d.ts +4 -0
- package/dist/predefinedMigrations/versions-v1-v2.d.ts.map +1 -0
- package/dist/predefinedMigrations/versions-v1-v2.js +5 -95
- package/dist/predefinedMigrations/versions-v1-v2.js.map +1 -1
- package/dist/queries/buildSearchParams.d.ts.map +1 -1
- package/dist/queries/buildSearchParams.js +9 -7
- package/dist/queries/buildSearchParams.js.map +1 -1
- package/dist/queries/buildSortParam.d.ts +2 -2
- package/dist/queries/buildSortParam.d.ts.map +1 -1
- package/dist/queries/buildSortParam.js +26 -17
- package/dist/queries/buildSortParam.js.map +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +4 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +18 -17
- package/dist/queries/sanitizeQueryValue.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +28 -7
- package/dist/queryDrafts.js.map +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +10 -3
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +10 -3
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +10 -3
- package/dist/updateOne.js.map +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +10 -3
- package/dist/updateVersion.js.map +1 -1
- package/dist/upsert.js +2 -1
- package/dist/upsert.js.map +1 -1
- package/dist/utilities/buildJoinAggregation.d.ts +4 -1
- package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
- package/dist/utilities/buildJoinAggregation.js +20 -9
- package/dist/utilities/buildJoinAggregation.js.map +1 -1
- package/dist/utilities/buildProjectionFromSelect.d.ts +8 -0
- package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -0
- package/dist/utilities/buildProjectionFromSelect.js +171 -0
- package/dist/utilities/buildProjectionFromSelect.js.map +1 -0
- package/dist/utilities/handleError.js +2 -2
- package/dist/utilities/handleError.js.map +1 -1
- package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -1
- package/dist/utilities/sanitizeRelationshipIDs.js +7 -3
- package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -1
- package/license.md +22 -0
- package/package.json +21 -10
@@ -1,5 +1,5 @@
|
|
1
|
-
import
|
2
|
-
import { traverseFields } from 'payload';
|
1
|
+
import { Types } from 'mongoose';
|
2
|
+
import { APIError, traverseFields } from 'payload';
|
3
3
|
import { fieldAffectsData } from 'payload/shared';
|
4
4
|
function isValidRelationObject(value) {
|
5
5
|
return typeof value === 'object' && value !== null && 'relationTo' in value && 'value' in value;
|
@@ -7,7 +7,11 @@ function isValidRelationObject(value) {
|
|
7
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 Types.ObjectId(value);
|
12
|
+
} catch (error) {
|
13
|
+
throw new APIError(`Failed to create ObjectId from value: ${value}. Error: ${error.message}`, 400);
|
14
|
+
}
|
11
15
|
}
|
12
16
|
return value;
|
13
17
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/sanitizeRelationshipIDs.ts"],"sourcesContent":["import type { CollectionConfig, Field, SanitizedConfig, TraverseFieldsCallback } from 'payload'\n\nimport
|
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, 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"],"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.
|
3
|
+
"version": "3.0.0-canary.98e0119",
|
4
4
|
"description": "The officially supported MongoDB database adapter for Payload",
|
5
5
|
"homepage": "https://payloadcms.com",
|
6
6
|
"repository": {
|
@@ -10,12 +10,24 @@
|
|
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",
|
@@ -26,23 +38,22 @@
|
|
26
38
|
"predefinedMigrations"
|
27
39
|
],
|
28
40
|
"dependencies": {
|
29
|
-
"bson-objectid": "2.0.4",
|
30
41
|
"http-status": "1.6.2",
|
31
|
-
"mongoose": "
|
32
|
-
"mongoose-aggregate-paginate-v2": "1.
|
33
|
-
"mongoose-paginate-v2": "1.
|
42
|
+
"mongoose": "8.8.1",
|
43
|
+
"mongoose-aggregate-paginate-v2": "1.1.2",
|
44
|
+
"mongoose-paginate-v2": "1.8.5",
|
34
45
|
"prompts": "2.4.2",
|
35
46
|
"uuid": "10.0.0"
|
36
47
|
},
|
37
48
|
"devDependencies": {
|
38
|
-
"@types/mongoose-aggregate-paginate-v2": "1.0.
|
39
|
-
"mongodb": "
|
49
|
+
"@types/mongoose-aggregate-paginate-v2": "1.0.12",
|
50
|
+
"mongodb": "6.10.0",
|
40
51
|
"mongodb-memory-server": "^9",
|
41
|
-
"@payloadcms/eslint-config": "3.0.0-beta.
|
42
|
-
"payload": "3.0.0-canary.
|
52
|
+
"@payloadcms/eslint-config": "3.0.0-beta.112",
|
53
|
+
"payload": "3.0.0-canary.98e0119"
|
43
54
|
},
|
44
55
|
"peerDependencies": {
|
45
|
-
"payload": "3.0.0-canary.
|
56
|
+
"payload": "3.0.0-canary.98e0119"
|
46
57
|
},
|
47
58
|
"scripts": {
|
48
59
|
"build": "pnpm build:types && pnpm build:swc",
|