@payloadcms/db-mongodb 3.2.2-canary.a11698b → 3.2.2-canary.d2399ed
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/count.d.ts.map +1 -1
- package/dist/count.js +19 -21
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.d.ts.map +1 -1
- package/dist/countGlobalVersions.js +19 -21
- package/dist/countGlobalVersions.js.map +1 -1
- package/dist/countVersions.d.ts.map +1 -1
- package/dist/countVersions.js +19 -21
- package/dist/countVersions.js.map +1 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +22 -22
- package/dist/create.js.map +1 -1
- package/dist/createGlobal.d.ts.map +1 -1
- package/dist/createGlobal.js +21 -19
- package/dist/createGlobal.js.map +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +35 -30
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +35 -30
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteMany.d.ts.map +1 -1
- package/dist/deleteMany.js +6 -6
- package/dist/deleteMany.js.map +1 -1
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +17 -13
- package/dist/deleteOne.js.map +1 -1
- package/dist/deleteVersions.d.ts.map +1 -1
- package/dist/deleteVersions.js +6 -6
- package/dist/deleteVersions.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +41 -74
- package/dist/find.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +19 -18
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +33 -62
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +32 -19
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +34 -62
- package/dist/findVersions.js.map +1 -1
- package/dist/{withSession.d.ts → getSession.d.ts} +2 -4
- package/dist/getSession.d.ts.map +1 -0
- package/dist/{withSession.js → getSession.js} +3 -5
- package/dist/getSession.js.map +1 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +20 -16
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
- package/dist/predefinedMigrations/migrateVersionsV1_V2.js +2 -2
- package/dist/predefinedMigrations/migrateVersionsV1_V2.js.map +1 -1
- package/dist/queries/buildAndOrConditions.d.ts +3 -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 +2 -0
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +2 -6
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/buildSearchParams.d.ts +3 -1
- package/dist/queries/buildSearchParams.d.ts.map +1 -1
- package/dist/queries/buildSearchParams.js +14 -10
- package/dist/queries/buildSearchParams.js.map +1 -1
- package/dist/queries/buildSortParam.d.ts +1 -7
- package/dist/queries/buildSortParam.d.ts.map +1 -1
- package/dist/queries/buildSortParam.js +2 -2
- package/dist/queries/buildSortParam.js.map +1 -1
- package/dist/queries/getLocalizedSortProperty.js +2 -2
- package/dist/queries/getLocalizedSortProperty.js.map +1 -1
- package/dist/queries/parseParams.d.ts +3 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +2 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +16 -0
- package/dist/queries/sanitizeQueryValue.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +41 -65
- package/dist/queryDrafts.js.map +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +25 -23
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +28 -27
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +28 -24
- package/dist/updateOne.js.map +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +28 -26
- package/dist/updateVersion.js.map +1 -1
- package/dist/utilities/buildJoinAggregation.d.ts +4 -4
- package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
- package/dist/utilities/buildJoinAggregation.js +7 -28
- package/dist/utilities/buildJoinAggregation.js.map +1 -1
- package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -1
- package/dist/utilities/buildProjectionFromSelect.js +18 -1
- package/dist/utilities/buildProjectionFromSelect.js.map +1 -1
- package/dist/utilities/findMany.d.ts +20 -0
- package/dist/utilities/findMany.d.ts.map +1 -0
- package/dist/utilities/findMany.js +84 -0
- package/dist/utilities/findMany.js.map +1 -0
- package/dist/utilities/getHasNearConstraint.d.ts +3 -0
- package/dist/utilities/getHasNearConstraint.d.ts.map +1 -0
- package/dist/utilities/getHasNearConstraint.js +26 -0
- package/dist/utilities/getHasNearConstraint.js.map +1 -0
- package/dist/utilities/transform.d.ts +17 -0
- package/dist/utilities/transform.d.ts.map +1 -0
- package/dist/utilities/transform.js +250 -0
- package/dist/utilities/transform.js.map +1 -0
- package/dist/utilities/{sanitizeRelationshipIDs.spec.js → transform.spec.js} +23 -7
- package/dist/utilities/transform.spec.js.map +1 -0
- package/package.json +3 -3
- package/dist/utilities/sanitizeInternalFields.d.ts +0 -2
- package/dist/utilities/sanitizeInternalFields.d.ts.map +0 -1
- package/dist/utilities/sanitizeInternalFields.js +0 -20
- package/dist/utilities/sanitizeInternalFields.js.map +0 -1
- package/dist/utilities/sanitizeRelationshipIDs.d.ts +0 -9
- package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +0 -1
- package/dist/utilities/sanitizeRelationshipIDs.js +0 -125
- package/dist/utilities/sanitizeRelationshipIDs.js.map +0 -1
- package/dist/utilities/sanitizeRelationshipIDs.spec.js.map +0 -1
- package/dist/withSession.d.ts.map +0 -1
- package/dist/withSession.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, Payload, RelationshipField } from 'payload'\n\nimport { Types } from 'mongoose'\nimport { createArrayFromCommaDelineated } from 'payload'\n\ntype SanitizeQueryValueArgs = {\n field: FlattenedField\n hasCustomID: boolean\n operator: string\n path: string\n payload: Payload\n val: any\n}\n\nconst buildExistsQuery = (formattedValue, path, treatEmptyString = true) => {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [\n { [path]: { $exists: true } },\n { [path]: { $ne: null } },\n ...(treatEmptyString ? [{ [path]: { $ne: '' } }] : []), // Treat empty string as null / undefined\n ],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [\n { [path]: { $exists: false } },\n { [path]: { $eq: null } },\n ...(treatEmptyString ? [{ [path]: { $eq: '' } }] : []), // Treat empty string as null / undefined\n ],\n },\n }\n }\n}\n\n// returns nestedField Field object from blocks.nestedField path because getLocalizedPaths splits them only for relationships\nconst getFieldFromSegments = ({\n field,\n segments,\n}: {\n field: FlattenedBlock | FlattenedField\n segments: string[]\n}) => {\n if ('blocks' in field) {\n for (const block of field.blocks) {\n const field = getFieldFromSegments({ field: block, segments })\n if (field) {\n return field\n }\n }\n }\n\n if ('fields' in field) {\n for (let i = 0; i < segments.length; i++) {\n const foundField = field.flattenedFields.find((each) => each.name === segments[i])\n\n if (!foundField) {\n break\n }\n\n if (foundField && segments.length - 1 === i) {\n return foundField\n }\n\n segments.shift()\n return getFieldFromSegments({ field: foundField, segments })\n }\n }\n}\n\nexport const sanitizeQueryValue = ({\n field,\n hasCustomID,\n operator,\n path,\n payload,\n val,\n}: SanitizeQueryValueArgs): {\n operator?: string\n rawQuery?: unknown\n val?: unknown\n} => {\n let formattedValue = val\n let formattedOperator = operator\n\n if (['array', 'blocks', 'group', 'tab'].includes(field.type) && path.includes('.')) {\n const segments = path.split('.')\n segments.shift()\n const foundField = getFieldFromSegments({ field, segments })\n\n if (foundField) {\n field = foundField\n }\n }\n\n // Disregard invalid _ids\n if (path === '_id') {\n if (typeof val === 'string' && val.split(',').length === 1) {\n if (!hasCustomID) {\n const isValid = Types.ObjectId.isValid(val)\n\n if (!isValid) {\n return { operator: formattedOperator, val: undefined }\n } else {\n if (['in', 'not_in'].includes(operator)) {\n formattedValue = createArrayFromCommaDelineated(formattedValue).map(\n (id) => new Types.ObjectId(id),\n )\n } else {\n formattedValue = new Types.ObjectId(val)\n }\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(val)\n\n if (Number.isNaN(parsedNumber)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else if (Array.isArray(val) || (typeof val === 'string' && val.split(',').length > 1)) {\n if (typeof val === 'string') {\n formattedValue = createArrayFromCommaDelineated(val)\n }\n\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n if (!hasCustomID) {\n if (Types.ObjectId.isValid(inVal)) {\n formattedValues.push(new Types.ObjectId(inVal))\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n formattedValues.push(parsedNumber)\n }\n } else {\n formattedValues.push(inVal)\n }\n\n return formattedValues\n }, [])\n }\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator) && typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (field.type === 'number') {\n if (typeof formattedValue === 'string' && operator !== 'exists') {\n formattedValue = Number(val)\n }\n\n if (operator === 'exists') {\n formattedValue = val === 'true' ? true : val === 'false' ? false : Boolean(val)\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (field.type === 'date' && typeof val === 'string' && operator !== 'exists') {\n formattedValue = new Date(val)\n if (Number.isNaN(Date.parse(formattedValue))) {\n return undefined\n }\n }\n\n if (['relationship', 'upload'].includes(field.type)) {\n if (val === 'null') {\n formattedValue = null\n }\n\n // Object equality requires the value to be the first key in the object that is being queried.\n if (\n operator === 'equals' &&\n formattedValue &&\n typeof formattedValue === 'object' &&\n formattedValue.value &&\n formattedValue.relationTo\n ) {\n const { value } = formattedValue\n const isValid = Types.ObjectId.isValid(value)\n\n if (isValid) {\n formattedValue.value = new Types.ObjectId(value)\n }\n\n return {\n rawQuery: {\n $and: [\n { [`${path}.value`]: { $eq: formattedValue.value } },\n { [`${path}.relationTo`]: { $eq: formattedValue.relationTo } },\n ],\n },\n }\n }\n\n const relationTo = (field as RelationshipField).relationTo\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(formattedValue)) {\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n if (!inVal) {\n return formattedValues\n }\n\n if (typeof relationTo === 'string' && payload.collections[relationTo].customIDType) {\n if (payload.collections[relationTo].customIDType === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n formattedValues.push(parsedNumber)\n return formattedValues\n }\n }\n\n formattedValues.push(inVal)\n return formattedValues\n }\n\n if (\n Array.isArray(relationTo) &&\n relationTo.some((relationTo) => !!payload.collections[relationTo].customIDType)\n ) {\n if (Types.ObjectId.isValid(inVal.toString())) {\n formattedValues.push(new Types.ObjectId(inVal))\n } else {\n formattedValues.push(inVal)\n }\n return formattedValues\n }\n\n if (Types.ObjectId.isValid(inVal.toString())) {\n formattedValues.push(new Types.ObjectId(inVal))\n }\n\n return formattedValues\n }, [])\n }\n\n if (\n ['contains', 'equals', 'like', 'not_equals'].includes(operator) &&\n (!Array.isArray(relationTo) || !path.endsWith('.relationTo'))\n ) {\n if (typeof relationTo === 'string') {\n const customIDType = payload.collections[relationTo].customIDType\n\n if (customIDType) {\n if (customIDType === 'number') {\n formattedValue = parseFloat(val)\n\n if (Number.isNaN(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else {\n if (!Types.ObjectId.isValid(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n formattedValue = new Types.ObjectId(formattedValue)\n }\n } else {\n const hasCustomIDType = relationTo.some(\n (relationTo) => !!payload.collections[relationTo].customIDType,\n )\n\n if (hasCustomIDType) {\n if (typeof val === 'string') {\n const formattedNumber = Number(val)\n formattedValue = [Types.ObjectId.isValid(val) ? new Types.ObjectId(val) : val]\n formattedOperator = operator === 'not_equals' ? 'not_in' : 'in'\n if (!Number.isNaN(formattedNumber)) {\n formattedValue.push(formattedNumber)\n }\n }\n } else {\n if (!Types.ObjectId.isValid(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n formattedValue = new Types.ObjectId(formattedValue)\n }\n }\n }\n }\n\n // Set up specific formatting necessary by operators\n\n if (operator === 'near') {\n let lng\n let lat\n let maxDistance\n let minDistance\n\n if (Array.isArray(formattedValue)) {\n ;[lng, lat, maxDistance, minDistance] = formattedValue\n }\n\n if (typeof formattedValue === 'string') {\n ;[lng, lat, maxDistance, minDistance] = createArrayFromCommaDelineated(formattedValue)\n }\n\n if (lng == null || lat == null || (maxDistance == null && minDistance == null)) {\n formattedValue = undefined\n } else {\n formattedValue = {\n $geometry: { type: 'Point', coordinates: [parseFloat(lng), parseFloat(lat)] },\n }\n\n if (maxDistance) {\n formattedValue.$maxDistance = parseFloat(maxDistance)\n }\n if (minDistance) {\n formattedValue.$minDistance = parseFloat(minDistance)\n }\n }\n }\n\n if (operator === 'within' || operator === 'intersects') {\n formattedValue = {\n $geometry: formattedValue,\n }\n }\n\n if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) {\n if (operator === 'contains' && !Types.ObjectId.isValid(formattedValue)) {\n formattedValue = {\n $options: 'i',\n $regex: formattedValue.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'),\n }\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // _id can't be empty string, will error Cast to ObjectId failed for value \"\"\n return buildExistsQuery(\n formattedValue,\n path,\n !['relationship', 'upload'].includes(field.type),\n )\n }\n }\n\n if (\n (path === '_id' || path === 'parent') &&\n operator === 'like' &&\n formattedValue.length === 24 &&\n !hasCustomID\n ) {\n formattedOperator = 'equals'\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // Clearable fields\n if (['relationship', 'select', 'upload'].includes(field.type)) {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [{ [path]: { $exists: true } }, { [path]: { $ne: null } }],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [{ [path]: { $exists: false } }, { [path]: { $eq: null } }],\n },\n }\n }\n }\n }\n\n return { operator: formattedOperator, val: formattedValue }\n}\n"],"names":["Types","createArrayFromCommaDelineated","buildExistsQuery","formattedValue","path","treatEmptyString","rawQuery","$and","$exists","$ne","$or","$eq","getFieldFromSegments","field","segments","block","blocks","i","length","foundField","flattenedFields","find","each","name","shift","sanitizeQueryValue","hasCustomID","operator","payload","val","formattedOperator","includes","type","split","isValid","ObjectId","undefined","map","id","parsedNumber","parseFloat","Number","isNaN","Array","isArray","reduce","formattedValues","inVal","push","toLowerCase","arrayVal","Boolean","Date","parse","value","relationTo","collections","customIDType","some","toString","endsWith","hasCustomIDType","formattedNumber","lng","lat","maxDistance","minDistance","$geometry","coordinates","$maxDistance","$minDistance","$options","$regex","replace"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, Payload, RelationshipField } from 'payload'\n\nimport { Types } from 'mongoose'\nimport { createArrayFromCommaDelineated } from 'payload'\n\ntype SanitizeQueryValueArgs = {\n field: FlattenedField\n hasCustomID: boolean\n operator: string\n path: string\n payload: Payload\n val: any\n}\n\nconst buildExistsQuery = (formattedValue, path, treatEmptyString = true) => {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [\n { [path]: { $exists: true } },\n { [path]: { $ne: null } },\n ...(treatEmptyString ? [{ [path]: { $ne: '' } }] : []), // Treat empty string as null / undefined\n ],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [\n { [path]: { $exists: false } },\n { [path]: { $eq: null } },\n ...(treatEmptyString ? [{ [path]: { $eq: '' } }] : []), // Treat empty string as null / undefined\n ],\n },\n }\n }\n}\n\nconst sanitizeCoordinates = (coordinates: unknown[]): unknown[] => {\n const result: unknown[] = []\n\n for (const value of coordinates) {\n if (typeof value === 'string') {\n result.push(Number(value))\n } else if (Array.isArray(value)) {\n result.push(sanitizeCoordinates(value))\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\n// returns nestedField Field object from blocks.nestedField path because getLocalizedPaths splits them only for relationships\nconst getFieldFromSegments = ({\n field,\n segments,\n}: {\n field: FlattenedBlock | FlattenedField\n segments: string[]\n}) => {\n if ('blocks' in field) {\n for (const block of field.blocks) {\n const field = getFieldFromSegments({ field: block, segments })\n if (field) {\n return field\n }\n }\n }\n\n if ('fields' in field) {\n for (let i = 0; i < segments.length; i++) {\n const foundField = field.flattenedFields.find((each) => each.name === segments[i])\n\n if (!foundField) {\n break\n }\n\n if (foundField && segments.length - 1 === i) {\n return foundField\n }\n\n segments.shift()\n return getFieldFromSegments({ field: foundField, segments })\n }\n }\n}\n\nexport const sanitizeQueryValue = ({\n field,\n hasCustomID,\n operator,\n path,\n payload,\n val,\n}: SanitizeQueryValueArgs): {\n operator?: string\n rawQuery?: unknown\n val?: unknown\n} => {\n let formattedValue = val\n let formattedOperator = operator\n\n if (['array', 'blocks', 'group', 'tab'].includes(field.type) && path.includes('.')) {\n const segments = path.split('.')\n segments.shift()\n const foundField = getFieldFromSegments({ field, segments })\n\n if (foundField) {\n field = foundField\n }\n }\n\n // Disregard invalid _ids\n if (path === '_id') {\n if (typeof val === 'string' && val.split(',').length === 1) {\n if (!hasCustomID) {\n const isValid = Types.ObjectId.isValid(val)\n\n if (!isValid) {\n return { operator: formattedOperator, val: undefined }\n } else {\n if (['in', 'not_in'].includes(operator)) {\n formattedValue = createArrayFromCommaDelineated(formattedValue).map(\n (id) => new Types.ObjectId(id),\n )\n } else {\n formattedValue = new Types.ObjectId(val)\n }\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(val)\n\n if (Number.isNaN(parsedNumber)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else if (Array.isArray(val) || (typeof val === 'string' && val.split(',').length > 1)) {\n if (typeof val === 'string') {\n formattedValue = createArrayFromCommaDelineated(val)\n }\n\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n if (!hasCustomID) {\n if (Types.ObjectId.isValid(inVal)) {\n formattedValues.push(new Types.ObjectId(inVal))\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n formattedValues.push(parsedNumber)\n }\n } else {\n formattedValues.push(inVal)\n }\n\n return formattedValues\n }, [])\n }\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator) && typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (field.type === 'number') {\n if (typeof formattedValue === 'string' && operator !== 'exists') {\n formattedValue = Number(val)\n }\n\n if (operator === 'exists') {\n formattedValue = val === 'true' ? true : val === 'false' ? false : Boolean(val)\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (field.type === 'date' && typeof val === 'string' && operator !== 'exists') {\n formattedValue = new Date(val)\n if (Number.isNaN(Date.parse(formattedValue))) {\n return undefined\n }\n }\n\n if (['relationship', 'upload'].includes(field.type)) {\n if (val === 'null') {\n formattedValue = null\n }\n\n // Object equality requires the value to be the first key in the object that is being queried.\n if (\n operator === 'equals' &&\n formattedValue &&\n typeof formattedValue === 'object' &&\n formattedValue.value &&\n formattedValue.relationTo\n ) {\n const { value } = formattedValue\n const isValid = Types.ObjectId.isValid(value)\n\n if (isValid) {\n formattedValue.value = new Types.ObjectId(value)\n }\n\n return {\n rawQuery: {\n $and: [\n { [`${path}.value`]: { $eq: formattedValue.value } },\n { [`${path}.relationTo`]: { $eq: formattedValue.relationTo } },\n ],\n },\n }\n }\n\n const relationTo = (field as RelationshipField).relationTo\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(formattedValue)) {\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n if (!inVal) {\n return formattedValues\n }\n\n if (typeof relationTo === 'string' && payload.collections[relationTo].customIDType) {\n if (payload.collections[relationTo].customIDType === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n formattedValues.push(parsedNumber)\n return formattedValues\n }\n }\n\n formattedValues.push(inVal)\n return formattedValues\n }\n\n if (\n Array.isArray(relationTo) &&\n relationTo.some((relationTo) => !!payload.collections[relationTo].customIDType)\n ) {\n if (Types.ObjectId.isValid(inVal.toString())) {\n formattedValues.push(new Types.ObjectId(inVal))\n } else {\n formattedValues.push(inVal)\n }\n return formattedValues\n }\n\n if (Types.ObjectId.isValid(inVal.toString())) {\n formattedValues.push(new Types.ObjectId(inVal))\n }\n\n return formattedValues\n }, [])\n }\n\n if (\n ['contains', 'equals', 'like', 'not_equals'].includes(operator) &&\n (!Array.isArray(relationTo) || !path.endsWith('.relationTo'))\n ) {\n if (typeof relationTo === 'string') {\n const customIDType = payload.collections[relationTo].customIDType\n\n if (customIDType) {\n if (customIDType === 'number') {\n formattedValue = parseFloat(val)\n\n if (Number.isNaN(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else {\n if (!Types.ObjectId.isValid(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n formattedValue = new Types.ObjectId(formattedValue)\n }\n } else {\n const hasCustomIDType = relationTo.some(\n (relationTo) => !!payload.collections[relationTo].customIDType,\n )\n\n if (hasCustomIDType) {\n if (typeof val === 'string') {\n const formattedNumber = Number(val)\n formattedValue = [Types.ObjectId.isValid(val) ? new Types.ObjectId(val) : val]\n formattedOperator = operator === 'not_equals' ? 'not_in' : 'in'\n if (!Number.isNaN(formattedNumber)) {\n formattedValue.push(formattedNumber)\n }\n }\n } else {\n if (!Types.ObjectId.isValid(formattedValue)) {\n return { operator: formattedOperator, val: undefined }\n }\n formattedValue = new Types.ObjectId(formattedValue)\n }\n }\n }\n }\n\n // Set up specific formatting necessary by operators\n\n if (operator === 'near') {\n let lng\n let lat\n let maxDistance\n let minDistance\n\n if (Array.isArray(formattedValue)) {\n ;[lng, lat, maxDistance, minDistance] = formattedValue\n }\n\n if (typeof formattedValue === 'string') {\n ;[lng, lat, maxDistance, minDistance] = createArrayFromCommaDelineated(formattedValue)\n }\n\n if (lng == null || lat == null || (maxDistance == null && minDistance == null)) {\n formattedValue = undefined\n } else {\n formattedValue = {\n $geometry: { type: 'Point', coordinates: [parseFloat(lng), parseFloat(lat)] },\n }\n\n if (maxDistance) {\n formattedValue.$maxDistance = parseFloat(maxDistance)\n }\n if (minDistance) {\n formattedValue.$minDistance = parseFloat(minDistance)\n }\n }\n }\n\n if (operator === 'within' || operator === 'intersects') {\n if (\n formattedValue &&\n typeof formattedValue === 'object' &&\n Array.isArray(formattedValue.coordinates)\n ) {\n formattedValue.coordinates = sanitizeCoordinates(formattedValue.coordinates)\n }\n\n formattedValue = {\n $geometry: formattedValue,\n }\n }\n\n if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) {\n if (operator === 'contains' && !Types.ObjectId.isValid(formattedValue)) {\n formattedValue = {\n $options: 'i',\n $regex: formattedValue.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'),\n }\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // _id can't be empty string, will error Cast to ObjectId failed for value \"\"\n return buildExistsQuery(\n formattedValue,\n path,\n !['relationship', 'upload'].includes(field.type),\n )\n }\n }\n\n if (\n (path === '_id' || path === 'parent') &&\n operator === 'like' &&\n formattedValue.length === 24 &&\n !hasCustomID\n ) {\n formattedOperator = 'equals'\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // Clearable fields\n if (['relationship', 'select', 'upload'].includes(field.type)) {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [{ [path]: { $exists: true } }, { [path]: { $ne: null } }],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [{ [path]: { $exists: false } }, { [path]: { $eq: null } }],\n },\n }\n }\n }\n }\n\n return { operator: formattedOperator, val: formattedValue }\n}\n"],"names":["Types","createArrayFromCommaDelineated","buildExistsQuery","formattedValue","path","treatEmptyString","rawQuery","$and","$exists","$ne","$or","$eq","sanitizeCoordinates","coordinates","result","value","push","Number","Array","isArray","getFieldFromSegments","field","segments","block","blocks","i","length","foundField","flattenedFields","find","each","name","shift","sanitizeQueryValue","hasCustomID","operator","payload","val","formattedOperator","includes","type","split","isValid","ObjectId","undefined","map","id","parsedNumber","parseFloat","isNaN","reduce","formattedValues","inVal","toLowerCase","arrayVal","Boolean","Date","parse","relationTo","collections","customIDType","some","toString","endsWith","hasCustomIDType","formattedNumber","lng","lat","maxDistance","minDistance","$geometry","$maxDistance","$minDistance","$options","$regex","replace"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,SAAS,CAAA;AAc1D,eAAO,MAAM,WAAW,EAAE,WAkGzB,CAAA"}
|
package/dist/queryDrafts.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { buildVersionCollectionFields, combineQueries
|
|
1
|
+
import { buildVersionCollectionFields, combineQueries } from 'payload';
|
|
2
|
+
import { getSession } from './getSession.js';
|
|
2
3
|
import { buildSortParam } from './queries/buildSortParam.js';
|
|
3
4
|
import { buildJoinAggregation } from './utilities/buildJoinAggregation.js';
|
|
4
5
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { findMany } from './utilities/findMany.js';
|
|
7
|
+
import { getHasNearConstraint } from './utilities/getHasNearConstraint.js';
|
|
8
|
+
import { transform } from './utilities/transform.js';
|
|
7
9
|
export const queryDrafts = async function queryDrafts({ collection, joins, limit, locale, page, pagination, req = {}, select, sort: sortArg, where }) {
|
|
8
10
|
const VersionModel = this.versions[collection];
|
|
9
11
|
const collectionConfig = this.payload.collections[collection].config;
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
+
const session = await getSession(this, req);
|
|
13
|
+
const hasNearConstraint = getHasNearConstraint(where);
|
|
12
14
|
let sort;
|
|
13
|
-
if (where) {
|
|
14
|
-
const constraints = flattenWhereToOperators(where);
|
|
15
|
-
hasNearConstraint = constraints.some((prop)=>Object.keys(prop).some((key)=>key === 'near'));
|
|
16
|
-
}
|
|
17
15
|
if (!hasNearConstraint) {
|
|
18
16
|
sort = buildSortParam({
|
|
19
17
|
config: this.payload.config,
|
|
@@ -31,79 +29,57 @@ export const queryDrafts = async function queryDrafts({ collection, joins, limit
|
|
|
31
29
|
const versionQuery = await VersionModel.buildQuery({
|
|
32
30
|
locale,
|
|
33
31
|
payload: this.payload,
|
|
32
|
+
session,
|
|
34
33
|
where: combinedWhere
|
|
35
34
|
});
|
|
35
|
+
const versionFields = buildVersionCollectionFields(this.payload.config, collectionConfig, true);
|
|
36
36
|
const projection = buildProjectionFromSelect({
|
|
37
37
|
adapter: this,
|
|
38
|
-
fields:
|
|
38
|
+
fields: versionFields,
|
|
39
39
|
select
|
|
40
40
|
});
|
|
41
41
|
// useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
|
|
42
42
|
const useEstimatedCount = hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
pagination,
|
|
49
|
-
projection,
|
|
50
|
-
sort,
|
|
51
|
-
useEstimatedCount
|
|
52
|
-
};
|
|
53
|
-
if (this.collation) {
|
|
54
|
-
const defaultLocale = 'en';
|
|
55
|
-
paginationOptions.collation = {
|
|
56
|
-
locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,
|
|
57
|
-
...this.collation
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
if (!useEstimatedCount && Object.keys(versionQuery).length === 0 && this.disableIndexHints !== true) {
|
|
61
|
-
// Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding
|
|
62
|
-
// a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,
|
|
63
|
-
// which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses
|
|
64
|
-
// the correct indexed field
|
|
65
|
-
paginationOptions.useCustomCountFn = ()=>{
|
|
66
|
-
return Promise.resolve(VersionModel.countDocuments(versionQuery, {
|
|
67
|
-
hint: {
|
|
68
|
-
_id: 1
|
|
69
|
-
}
|
|
70
|
-
}));
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
if (limit > 0) {
|
|
74
|
-
paginationOptions.limit = limit;
|
|
75
|
-
// limit must also be set here, it's ignored when pagination is false
|
|
76
|
-
paginationOptions.options.limit = limit;
|
|
77
|
-
}
|
|
78
|
-
let result;
|
|
79
|
-
const aggregate = await buildJoinAggregation({
|
|
43
|
+
const collation = this.collation ? {
|
|
44
|
+
locale: locale && locale !== 'all' && locale !== '*' ? locale : 'en',
|
|
45
|
+
...this.collation
|
|
46
|
+
} : undefined;
|
|
47
|
+
const joinAgreggation = await buildJoinAggregation({
|
|
80
48
|
adapter: this,
|
|
81
49
|
collection,
|
|
82
50
|
collectionConfig,
|
|
83
51
|
joins,
|
|
84
52
|
locale,
|
|
85
53
|
projection,
|
|
86
|
-
|
|
54
|
+
session,
|
|
87
55
|
versions: true
|
|
88
56
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
57
|
+
const result = await findMany({
|
|
58
|
+
adapter: this,
|
|
59
|
+
collation,
|
|
60
|
+
collection: VersionModel.collection,
|
|
61
|
+
joinAgreggation,
|
|
62
|
+
limit,
|
|
63
|
+
page,
|
|
64
|
+
pagination,
|
|
65
|
+
projection,
|
|
66
|
+
query: versionQuery,
|
|
67
|
+
session,
|
|
68
|
+
sort,
|
|
69
|
+
useEstimatedCount
|
|
70
|
+
});
|
|
71
|
+
transform({
|
|
72
|
+
adapter: this,
|
|
73
|
+
data: result.docs,
|
|
74
|
+
fields: versionFields,
|
|
75
|
+
operation: 'read'
|
|
76
|
+
});
|
|
77
|
+
for(let i = 0; i < result.docs.length; i++){
|
|
78
|
+
const id = result.docs[i].parent;
|
|
79
|
+
result.docs[i] = result.docs[i].version;
|
|
80
|
+
result.docs[i].id = id;
|
|
94
81
|
}
|
|
95
|
-
|
|
96
|
-
return {
|
|
97
|
-
...result,
|
|
98
|
-
docs: docs.map((doc)=>{
|
|
99
|
-
doc = {
|
|
100
|
-
_id: doc.parent,
|
|
101
|
-
id: doc.parent,
|
|
102
|
-
...doc.version
|
|
103
|
-
};
|
|
104
|
-
return sanitizeInternalFields(doc);
|
|
105
|
-
})
|
|
106
|
-
};
|
|
82
|
+
return result;
|
|
107
83
|
};
|
|
108
84
|
|
|
109
85
|
//# sourceMappingURL=queryDrafts.js.map
|
package/dist/queryDrafts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { CollationOptions } from 'mongodb'\nimport type { PayloadRequest, QueryDrafts } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './getSession.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { findMany } from './utilities/findMany.js'\nimport { getHasNearConstraint } from './utilities/getHasNearConstraint.js'\nimport { transform } from './utilities/transform.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: MongooseAdapter,\n {\n collection,\n joins,\n limit,\n locale,\n page,\n pagination,\n req = {} as PayloadRequest,\n select,\n sort: sortArg,\n where,\n },\n) {\n const VersionModel = this.versions[collection]\n const collectionConfig = this.payload.collections[collection].config\n const session = await getSession(this, req)\n\n const hasNearConstraint = getHasNearConstraint(where)\n let sort\n\n if (!hasNearConstraint) {\n sort = buildSortParam({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n timestamps: true,\n })\n }\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const versionQuery = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n session,\n where: combinedWhere,\n })\n\n const versionFields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n const projection = buildProjectionFromSelect({\n adapter: this,\n fields: versionFields,\n select,\n })\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0\n\n const collation: CollationOptions | undefined = this.collation\n ? {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : 'en',\n ...this.collation,\n }\n : undefined\n\n const joinAgreggation = await buildJoinAggregation({\n adapter: this,\n collection,\n collectionConfig,\n joins,\n locale,\n projection,\n session,\n versions: true,\n })\n\n const result = await findMany({\n adapter: this,\n collation,\n collection: VersionModel.collection,\n joinAgreggation,\n limit,\n page,\n pagination,\n projection,\n query: versionQuery,\n session,\n sort,\n useEstimatedCount,\n })\n\n transform({\n adapter: this,\n data: result.docs,\n fields: versionFields,\n operation: 'read',\n })\n\n for (let i = 0; i < result.docs.length; i++) {\n const id = result.docs[i].parent\n result.docs[i] = result.docs[i].version\n result.docs[i].id = id\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","combineQueries","getSession","buildSortParam","buildJoinAggregation","buildProjectionFromSelect","findMany","getHasNearConstraint","transform","queryDrafts","collection","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","VersionModel","versions","collectionConfig","payload","collections","config","session","hasNearConstraint","fields","flattenedFields","defaultSort","timestamps","combinedWhere","latest","equals","versionQuery","buildQuery","versionFields","projection","adapter","useEstimatedCount","Object","keys","length","collation","undefined","joinAgreggation","result","query","data","docs","operation","i","id","parent","version"],"mappings":"AAGA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AAItE,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,QAAQ,QAAQ,0BAAyB;AAClD,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EACEC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACZ,WAAW;IAC9C,MAAMa,mBAAmB,IAAI,CAACC,OAAO,CAACC,WAAW,CAACf,WAAW,CAACgB,MAAM;IACpE,MAAMC,UAAU,MAAMzB,WAAW,IAAI,EAAEc;IAEvC,MAAMY,oBAAoBrB,qBAAqBa;IAC/C,IAAIF;IAEJ,IAAI,CAACU,mBAAmB;QACtBV,OAAOf,eAAe;YACpBuB,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;YAC3BG,QAAQN,iBAAiBO,eAAe;YACxCjB;YACAK,MAAMC,WAAWI,iBAAiBQ,WAAW;YAC7CC,YAAY;QACd;IACF;IAEA,MAAMC,gBAAgBhC,eAAe;QAAEiC,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGf;IAEnE,MAAMgB,eAAe,MAAMf,aAAagB,UAAU,CAAC;QACjDxB;QACAW,SAAS,IAAI,CAACA,OAAO;QACrBG;QACAP,OAAOa;IACT;IAEA,MAAMK,gBAAgBtC,6BAA6B,IAAI,CAACwB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAC1F,MAAMgB,aAAalC,0BAA0B;QAC3CmC,SAAS,IAAI;QACbX,QAAQS;QACRrB;IACF;IACA,4HAA4H;IAC5H,MAAMwB,oBACJb,qBAAqB,CAACQ,gBAAgBM,OAAOC,IAAI,CAACP,cAAcQ,MAAM,KAAK;IAE7E,MAAMC,YAA0C,IAAI,CAACA,SAAS,GAC1D;QACEhC,QAAQA,UAAUA,WAAW,SAASA,WAAW,MAAMA,SAAS;QAChE,GAAG,IAAI,CAACgC,SAAS;IACnB,IACAC;IAEJ,MAAMC,kBAAkB,MAAM3C,qBAAqB;QACjDoC,SAAS,IAAI;QACb9B;QACAa;QACAZ;QACAE;QACA0B;QACAZ;QACAL,UAAU;IACZ;IAEA,MAAM0B,SAAS,MAAM1C,SAAS;QAC5BkC,SAAS,IAAI;QACbK;QACAnC,YAAYW,aAAaX,UAAU;QACnCqC;QACAnC;QACAE;QACAC;QACAwB;QACAU,OAAOb;QACPT;QACAT;QACAuB;IACF;IAEAjC,UAAU;QACRgC,SAAS,IAAI;QACbU,MAAMF,OAAOG,IAAI;QACjBtB,QAAQS;QACRc,WAAW;IACb;IAEA,IAAK,IAAIC,IAAI,GAAGA,IAAIL,OAAOG,IAAI,CAACP,MAAM,EAAES,IAAK;QAC3C,MAAMC,KAAKN,OAAOG,IAAI,CAACE,EAAE,CAACE,MAAM;QAChCP,OAAOG,IAAI,CAACE,EAAE,GAAGL,OAAOG,IAAI,CAACE,EAAE,CAACG,OAAO;QACvCR,OAAOG,IAAI,CAACE,EAAE,CAACC,EAAE,GAAGA;IACtB;IAEA,OAAON;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAA;AAQ3D,eAAO,MAAM,YAAY,EAAE,YA8B1B,CAAA"}
|
package/dist/updateGlobal.js
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
|
+
import { getSession } from './getSession.js';
|
|
1
2
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
2
|
-
import {
|
|
3
|
-
import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
|
|
4
|
-
import { withSession } from './withSession.js';
|
|
3
|
+
import { transform } from './utilities/transform.js';
|
|
5
4
|
export const updateGlobal = async function updateGlobal({ slug, data, options: optionsArgs = {}, req = {}, select }) {
|
|
6
5
|
const Model = this.globals;
|
|
7
|
-
const fields = this.payload.config.globals.find((global)=>global.slug === slug).
|
|
8
|
-
const
|
|
6
|
+
const fields = this.payload.config.globals.find((global)=>global.slug === slug).flattenedFields;
|
|
7
|
+
const session = await getSession(this, req);
|
|
8
|
+
transform({
|
|
9
|
+
adapter: this,
|
|
10
|
+
data,
|
|
11
|
+
fields,
|
|
12
|
+
operation: 'update'
|
|
13
|
+
});
|
|
14
|
+
const result = await Model.collection.findOneAndUpdate({
|
|
15
|
+
globalType: slug
|
|
16
|
+
}, {
|
|
17
|
+
$set: data
|
|
18
|
+
}, {
|
|
9
19
|
...optionsArgs,
|
|
10
|
-
...await withSession(this, req),
|
|
11
|
-
lean: true,
|
|
12
|
-
new: true,
|
|
13
20
|
projection: buildProjectionFromSelect({
|
|
14
21
|
adapter: this,
|
|
15
|
-
fields
|
|
22
|
+
fields,
|
|
16
23
|
select
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
}),
|
|
25
|
+
returnDocument: 'after',
|
|
26
|
+
session
|
|
27
|
+
});
|
|
28
|
+
transform({
|
|
29
|
+
adapter: this,
|
|
30
|
+
data: result,
|
|
31
|
+
fields,
|
|
32
|
+
operation: 'read'
|
|
24
33
|
});
|
|
25
|
-
result = await Model.findOneAndUpdate({
|
|
26
|
-
globalType: slug
|
|
27
|
-
}, sanitizedData, options);
|
|
28
|
-
result = JSON.parse(JSON.stringify(result));
|
|
29
|
-
// custom id type reset
|
|
30
|
-
result.id = result._id;
|
|
31
|
-
result = sanitizeInternalFields(result);
|
|
32
34
|
return result;
|
|
33
35
|
};
|
|
34
36
|
|
package/dist/updateGlobal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { PayloadRequest, UpdateGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './getSession.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { transform } from './utilities/transform.js'\n\nexport const updateGlobal: UpdateGlobal = async function updateGlobal(\n this: MongooseAdapter,\n { slug, data, options: optionsArgs = {}, req = {} as PayloadRequest, select },\n) {\n const Model = this.globals\n const fields = this.payload.config.globals.find((global) => global.slug === slug).flattenedFields\n\n const session = await getSession(this, req)\n\n transform({ adapter: this, data, fields, operation: 'update' })\n\n const result: any = await Model.collection.findOneAndUpdate(\n { globalType: slug },\n { $set: data },\n {\n ...optionsArgs,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n returnDocument: 'after',\n session,\n },\n )\n\n transform({\n adapter: this,\n data: result,\n fields,\n operation: 'read',\n })\n\n return result\n}\n"],"names":["getSession","buildProjectionFromSelect","transform","updateGlobal","slug","data","options","optionsArgs","req","select","Model","globals","fields","payload","config","find","global","flattenedFields","session","adapter","operation","result","collection","findOneAndUpdate","globalType","$set","projection","returnDocument"],"mappings":"AAIA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,SAASC,cAAc,CAAC,CAAC,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAM,EAAE;IAE7E,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAC1B,MAAMC,SAAS,IAAI,CAACC,OAAO,CAACC,MAAM,CAACH,OAAO,CAACI,IAAI,CAAC,CAACC,SAAWA,OAAOZ,IAAI,KAAKA,MAAMa,eAAe;IAEjG,MAAMC,UAAU,MAAMlB,WAAW,IAAI,EAAEQ;IAEvCN,UAAU;QAAEiB,SAAS,IAAI;QAAEd;QAAMO;QAAQQ,WAAW;IAAS;IAE7D,MAAMC,SAAc,MAAMX,MAAMY,UAAU,CAACC,gBAAgB,CACzD;QAAEC,YAAYpB;IAAK,GACnB;QAAEqB,MAAMpB;IAAK,GACb;QACE,GAAGE,WAAW;QACdmB,YAAYzB,0BAA0B;YAAEkB,SAAS,IAAI;YAAEP;YAAQH;QAAO;QACtEkB,gBAAgB;QAChBT;IACF;IAGFhB,UAAU;QACRiB,SAAS,IAAI;QACbd,MAAMgB;QACNT;QACAQ,WAAW;IACb;IAEA,OAAOC;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,eAAe,EACrB,EACE,EAAE,EACF,MAAM,EAAE,UAAU,EAClB,MAAM,EACN,OAAO,EAAE,WAAgB,EACzB,GAA0B,EAC1B,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,uBAAuB,CAAC,CAAC,CAAC,gBAiD9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { buildVersionGlobalFields } from 'payload';
|
|
2
|
+
import { getSession } from './getSession.js';
|
|
2
3
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
3
|
-
import {
|
|
4
|
-
import { withSession } from './withSession.js';
|
|
4
|
+
import { transform } from './utilities/transform.js';
|
|
5
5
|
export async function updateGlobalVersion({ id, global: globalSlug, locale, options: optionsArgs = {}, req = {}, select, versionData, where }) {
|
|
6
6
|
const VersionModel = this.versions[globalSlug];
|
|
7
7
|
const whereToUse = where || {
|
|
@@ -9,38 +9,39 @@ export async function updateGlobalVersion({ id, global: globalSlug, locale, opti
|
|
|
9
9
|
equals: id
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const options = {
|
|
15
|
-
...optionsArgs,
|
|
16
|
-
...await withSession(this, req),
|
|
17
|
-
lean: true,
|
|
18
|
-
new: true,
|
|
19
|
-
projection: buildProjectionFromSelect({
|
|
20
|
-
adapter: this,
|
|
21
|
-
fields: buildVersionGlobalFields(this.payload.config, currentGlobal, true),
|
|
22
|
-
select
|
|
23
|
-
})
|
|
24
|
-
};
|
|
12
|
+
const fields = buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug), true);
|
|
13
|
+
const session = await getSession(this, req);
|
|
25
14
|
const query = await VersionModel.buildQuery({
|
|
26
15
|
locale,
|
|
27
16
|
payload: this.payload,
|
|
17
|
+
session,
|
|
28
18
|
where: whereToUse
|
|
29
19
|
});
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
transform({
|
|
21
|
+
adapter: this,
|
|
32
22
|
data: versionData,
|
|
33
|
-
fields
|
|
23
|
+
fields,
|
|
24
|
+
operation: 'update'
|
|
25
|
+
});
|
|
26
|
+
const doc = await VersionModel.collection.findOneAndUpdate(query, {
|
|
27
|
+
$set: versionData
|
|
28
|
+
}, {
|
|
29
|
+
...optionsArgs,
|
|
30
|
+
projection: buildProjectionFromSelect({
|
|
31
|
+
adapter: this,
|
|
32
|
+
fields,
|
|
33
|
+
select
|
|
34
|
+
}),
|
|
35
|
+
returnDocument: 'after',
|
|
36
|
+
session
|
|
37
|
+
});
|
|
38
|
+
transform({
|
|
39
|
+
adapter: this,
|
|
40
|
+
data: doc,
|
|
41
|
+
fields,
|
|
42
|
+
operation: 'read'
|
|
34
43
|
});
|
|
35
|
-
|
|
36
|
-
const result = JSON.parse(JSON.stringify(doc));
|
|
37
|
-
const verificationToken = doc._verificationToken;
|
|
38
|
-
// custom id type reset
|
|
39
|
-
result.id = result._id;
|
|
40
|
-
if (verificationToken) {
|
|
41
|
-
result._verificationToken = verificationToken;
|
|
42
|
-
}
|
|
43
|
-
return result;
|
|
44
|
+
return doc;
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
//# sourceMappingURL=updateGlobalVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import {\n buildVersionGlobalFields,\n type PayloadRequest,\n type TypeWithID,\n type UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './getSession.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { transform } from './utilities/transform.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: MongooseAdapter,\n {\n id,\n global: globalSlug,\n locale,\n options: optionsArgs = {},\n req = {} as PayloadRequest,\n select,\n versionData,\n where,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const VersionModel = this.versions[globalSlug]\n const whereToUse = where || { id: { equals: id } }\n const fields = buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n true,\n )\n\n const session = await getSession(this, req)\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n session,\n where: whereToUse,\n })\n\n transform({\n adapter: this,\n data: versionData,\n fields,\n operation: 'update',\n })\n\n const doc: any = await VersionModel.collection.findOneAndUpdate(\n query,\n { $set: versionData },\n {\n ...optionsArgs,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields,\n select,\n }),\n returnDocument: 'after',\n session,\n },\n )\n\n transform({\n adapter: this,\n data: doc,\n fields,\n operation: 'read',\n })\n\n return doc\n}\n"],"names":["buildVersionGlobalFields","getSession","buildProjectionFromSelect","transform","updateGlobalVersion","id","global","globalSlug","locale","options","optionsArgs","req","select","versionData","where","VersionModel","versions","whereToUse","equals","fields","payload","config","globals","find","slug","session","query","buildQuery","adapter","data","operation","doc","collection","findOneAndUpdate","$set","projection","returnDocument"],"mappings":"AAAA,SACEA,wBAAwB,QAInB,UAAS;AAIhB,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,QAAQC,UAAU,EAClBC,MAAM,EACNC,SAASC,cAAc,CAAC,CAAC,EACzBC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,WAAW,EACXC,KAAK,EACsB;IAE7B,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACT,WAAW;IAC9C,MAAMU,aAAaH,SAAS;QAAET,IAAI;YAAEa,QAAQb;QAAG;IAAE;IACjD,MAAMc,SAASnB,yBACb,IAAI,CAACoB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACC,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,CAACjB,SAAWA,OAAOkB,IAAI,KAAKjB,aAC7D;IAGF,MAAMkB,UAAU,MAAMxB,WAAW,IAAI,EAAEU;IAEvC,MAAMe,QAAQ,MAAMX,aAAaY,UAAU,CAAC;QAC1CnB;QACAY,SAAS,IAAI,CAACA,OAAO;QACrBK;QACAX,OAAOG;IACT;IAEAd,UAAU;QACRyB,SAAS,IAAI;QACbC,MAAMhB;QACNM;QACAW,WAAW;IACb;IAEA,MAAMC,MAAW,MAAMhB,aAAaiB,UAAU,CAACC,gBAAgB,CAC7DP,OACA;QAAEQ,MAAMrB;IAAY,GACpB;QACE,GAAGH,WAAW;QACdyB,YAAYjC,0BAA0B;YACpC0B,SAAS,IAAI;YACbT;YACAP;QACF;QACAwB,gBAAgB;QAChBX;IACF;IAGFtB,UAAU;QACRyB,SAAS,IAAI;QACbC,MAAME;QACNZ;QACAW,WAAW;IACb;IAEA,OAAOC;AACT"}
|
package/dist/updateOne.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,SAAS,CAAA;AASxD,eAAO,MAAM,SAAS,EAAE,SAuDvB,CAAA"}
|
package/dist/updateOne.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
import { getSession } from './getSession.js';
|
|
1
2
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
2
3
|
import { handleError } from './utilities/handleError.js';
|
|
3
|
-
import {
|
|
4
|
-
import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
|
|
5
|
-
import { withSession } from './withSession.js';
|
|
4
|
+
import { transform } from './utilities/transform.js';
|
|
6
5
|
export const updateOne = async function updateOne({ id, collection, data, locale, options: optionsArgs = {}, req = {}, select, where: whereArg }) {
|
|
7
6
|
const where = id ? {
|
|
8
7
|
id: {
|
|
@@ -10,31 +9,40 @@ export const updateOne = async function updateOne({ id, collection, data, locale
|
|
|
10
9
|
}
|
|
11
10
|
} : whereArg;
|
|
12
11
|
const Model = this.collections[collection];
|
|
13
|
-
const fields = this.payload.collections[collection].config.
|
|
14
|
-
const
|
|
15
|
-
...optionsArgs,
|
|
16
|
-
...await withSession(this, req),
|
|
17
|
-
lean: true,
|
|
18
|
-
new: true,
|
|
19
|
-
projection: buildProjectionFromSelect({
|
|
20
|
-
adapter: this,
|
|
21
|
-
fields: this.payload.collections[collection].config.flattenedFields,
|
|
22
|
-
select
|
|
23
|
-
})
|
|
24
|
-
};
|
|
12
|
+
const fields = this.payload.collections[collection].config.flattenedFields;
|
|
13
|
+
const session = await getSession(this, req);
|
|
25
14
|
const query = await Model.buildQuery({
|
|
26
15
|
locale,
|
|
27
16
|
payload: this.payload,
|
|
17
|
+
session,
|
|
28
18
|
where
|
|
29
19
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
config: this.payload.config,
|
|
20
|
+
transform({
|
|
21
|
+
adapter: this,
|
|
33
22
|
data,
|
|
34
|
-
fields
|
|
23
|
+
fields,
|
|
24
|
+
operation: 'update'
|
|
35
25
|
});
|
|
36
26
|
try {
|
|
37
|
-
result = await Model.findOneAndUpdate(query,
|
|
27
|
+
const result = await Model.collection.findOneAndUpdate(query, {
|
|
28
|
+
$set: data
|
|
29
|
+
}, {
|
|
30
|
+
...optionsArgs,
|
|
31
|
+
projection: buildProjectionFromSelect({
|
|
32
|
+
adapter: this,
|
|
33
|
+
fields,
|
|
34
|
+
select
|
|
35
|
+
}),
|
|
36
|
+
returnDocument: 'after',
|
|
37
|
+
session
|
|
38
|
+
});
|
|
39
|
+
transform({
|
|
40
|
+
adapter: this,
|
|
41
|
+
data: result,
|
|
42
|
+
fields,
|
|
43
|
+
operation: 'read'
|
|
44
|
+
});
|
|
45
|
+
return result;
|
|
38
46
|
} catch (error) {
|
|
39
47
|
handleError({
|
|
40
48
|
collection,
|
|
@@ -42,10 +50,6 @@ export const updateOne = async function updateOne({ id, collection, data, locale
|
|
|
42
50
|
req
|
|
43
51
|
});
|
|
44
52
|
}
|
|
45
|
-
result = JSON.parse(JSON.stringify(result));
|
|
46
|
-
result.id = result._id;
|
|
47
|
-
result = sanitizeInternalFields(result);
|
|
48
|
-
return result;
|
|
49
53
|
};
|
|
50
54
|
|
|
51
55
|
//# sourceMappingURL=updateOne.js.map
|
package/dist/updateOne.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { PayloadRequest, UpdateOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { getSession } from './getSession.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { handleError } from './utilities/handleError.js'\nimport { transform } from './utilities/transform.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: MongooseAdapter,\n {\n id,\n collection,\n data,\n locale,\n options: optionsArgs = {},\n req = {} as PayloadRequest,\n select,\n where: whereArg,\n },\n) {\n const where = id ? { id: { equals: id } } : whereArg\n const Model = this.collections[collection]\n const fields = this.payload.collections[collection].config.flattenedFields\n\n const session = await getSession(this, req)\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n session,\n where,\n })\n\n transform({\n adapter: this,\n data,\n fields,\n operation: 'update',\n })\n\n try {\n const result = await Model.collection.findOneAndUpdate(\n query,\n { $set: data },\n {\n ...optionsArgs,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n returnDocument: 'after',\n session,\n },\n )\n\n transform({\n adapter: this,\n data: result,\n fields,\n operation: 'read',\n })\n return result\n } catch (error) {\n handleError({ collection, error, req })\n }\n}\n"],"names":["getSession","buildProjectionFromSelect","handleError","transform","updateOne","id","collection","data","locale","options","optionsArgs","req","select","where","whereArg","equals","Model","collections","fields","payload","config","flattenedFields","session","query","buildQuery","adapter","operation","result","findOneAndUpdate","$set","projection","returnDocument","error"],"mappings":"AAIA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,UAAU,EACVC,IAAI,EACJC,MAAM,EACNC,SAASC,cAAc,CAAC,CAAC,EACzBC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,OAAOC,QAAQ,EAChB;IAED,MAAMD,QAAQR,KAAK;QAAEA,IAAI;YAAEU,QAAQV;QAAG;IAAE,IAAIS;IAC5C,MAAME,QAAQ,IAAI,CAACC,WAAW,CAACX,WAAW;IAC1C,MAAMY,SAAS,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACC,eAAe;IAE1E,MAAMC,UAAU,MAAMtB,WAAW,IAAI,EAAEW;IAEvC,MAAMY,QAAQ,MAAMP,MAAMQ,UAAU,CAAC;QACnChB;QACAW,SAAS,IAAI,CAACA,OAAO;QACrBG;QACAT;IACF;IAEAV,UAAU;QACRsB,SAAS,IAAI;QACblB;QACAW;QACAQ,WAAW;IACb;IAEA,IAAI;QACF,MAAMC,SAAS,MAAMX,MAAMV,UAAU,CAACsB,gBAAgB,CACpDL,OACA;YAAEM,MAAMtB;QAAK,GACb;YACE,GAAGG,WAAW;YACdoB,YAAY7B,0BAA0B;gBAAEwB,SAAS,IAAI;gBAAEP;gBAAQN;YAAO;YACtEmB,gBAAgB;YAChBT;QACF;QAGFnB,UAAU;YACRsB,SAAS,IAAI;YACblB,MAAMoB;YACNT;YACAQ,WAAW;QACb;QACA,OAAOC;IACT,EAAE,OAAOK,OAAO;QACd9B,YAAY;YAAEI;YAAY0B;YAAOrB;QAAI;IACvC;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ/F,eAAO,MAAM,aAAa,EAAE,aAgE3B,CAAA"}
|