@payloadcms/db-mongodb 4.0.0-internal.e55ccef → 4.0.0-internal.ea6e8f8
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/connect.d.ts.map +1 -1
- package/dist/connect.js +9 -2
- package/dist/connect.js.map +1 -1
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +33 -4
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.d.ts.map +1 -1
- package/dist/countGlobalVersions.js +1 -0
- package/dist/countGlobalVersions.js.map +1 -1
- package/dist/countVersions.d.ts.map +1 -1
- package/dist/countVersions.js +36 -4
- package/dist/countVersions.js.map +1 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +2 -1
- package/dist/create.js.map +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +23 -1
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +9 -2
- package/dist/createMigration.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +17 -4
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteBranchGlobal.d.ts +10 -0
- package/dist/deleteBranchGlobal.d.ts.map +1 -0
- package/dist/deleteBranchGlobal.js +22 -0
- package/dist/deleteBranchGlobal.js.map +1 -0
- package/dist/deleteMany.d.ts.map +1 -1
- package/dist/deleteMany.js +1 -0
- package/dist/deleteMany.js.map +1 -1
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +20 -1
- package/dist/deleteOne.js.map +1 -1
- package/dist/deleteVersions.d.ts.map +1 -1
- package/dist/deleteVersions.js +1 -0
- package/dist/deleteVersions.js.map +1 -1
- package/dist/exports/migration-utils.d.ts +2 -0
- package/dist/exports/migration-utils.d.ts.map +1 -1
- package/dist/exports/migration-utils.js +2 -0
- package/dist/exports/migration-utils.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +44 -8
- package/dist/find.js.map +1 -1
- package/dist/findDistinct.d.ts.map +1 -1
- package/dist/findDistinct.js +115 -12
- package/dist/findDistinct.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +34 -5
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +10 -2
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +43 -5
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +49 -5
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +89 -67
- package/dist/init.js.map +1 -1
- package/dist/migrateFresh.d.ts +4 -2
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +21 -6
- package/dist/migrateFresh.js.map +1 -1
- package/dist/models/buildCollectionSchema.d.ts +8 -2
- package/dist/models/buildCollectionSchema.d.ts.map +1 -1
- package/dist/models/buildCollectionSchema.js +4 -2
- package/dist/models/buildCollectionSchema.js.map +1 -1
- package/dist/models/buildGlobalModel.d.ts +5 -1
- package/dist/models/buildGlobalModel.d.ts.map +1 -1
- package/dist/models/buildGlobalModel.js +34 -3
- package/dist/models/buildGlobalModel.js.map +1 -1
- package/dist/models/buildSchema.d.ts +4 -0
- package/dist/models/buildSchema.d.ts.map +1 -1
- package/dist/models/buildSchema.js +94 -36
- package/dist/models/buildSchema.js.map +1 -1
- package/dist/models/schemaBuildContext.d.ts +21 -0
- package/dist/models/schemaBuildContext.d.ts.map +1 -0
- package/dist/models/schemaBuildContext.js +29 -0
- package/dist/models/schemaBuildContext.js.map +1 -0
- package/dist/predefinedMigrations/branching.d.ts +4 -0
- package/dist/predefinedMigrations/branching.d.ts.map +1 -0
- package/dist/predefinedMigrations/branching.js +9 -0
- package/dist/predefinedMigrations/branching.js.map +1 -0
- package/dist/predefinedMigrations/migrateBranching.d.ts +15 -0
- package/dist/predefinedMigrations/migrateBranching.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateBranching.js +88 -0
- package/dist/predefinedMigrations/migrateBranching.js.map +1 -0
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.d.ts.map +1 -1
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js +4 -4
- package/dist/predefinedMigrations/migrateRelationshipsV2_V3.js.map +1 -1
- package/dist/predefinedMigrations/migrateSizesToVariants.d.ts +13 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.d.ts.map +1 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.js +368 -0
- package/dist/predefinedMigrations/migrateSizesToVariants.js.map +1 -0
- package/dist/predefinedMigrations/sizes-to-variants.d.ts +5 -0
- package/dist/predefinedMigrations/sizes-to-variants.d.ts.map +1 -0
- package/dist/predefinedMigrations/sizes-to-variants.js +8 -0
- package/dist/predefinedMigrations/sizes-to-variants.js.map +1 -0
- package/dist/queries/buildAndOrConditions.d.ts +4 -2
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +3 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildBranchVisibility.d.ts +11 -0
- package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
- package/dist/queries/buildBranchVisibility.js +204 -0
- package/dist/queries/buildBranchVisibility.js.map +1 -0
- package/dist/queries/buildQuery.d.ts +4 -2
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +3 -1
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/buildSearchParams.d.ts +4 -2
- package/dist/queries/buildSearchParams.d.ts.map +1 -1
- package/dist/queries/buildSearchParams.js +338 -24
- package/dist/queries/buildSearchParams.js.map +1 -1
- package/dist/queries/getBuildQueryPlugin.d.ts +3 -1
- package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
- package/dist/queries/getBuildQueryPlugin.js +3 -1
- package/dist/queries/getBuildQueryPlugin.js.map +1 -1
- package/dist/queries/parseParams.d.ts +4 -2
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +5 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +38 -7
- package/dist/queryDrafts.js.map +1 -1
- package/dist/transactions/commitTransaction.d.ts.map +1 -1
- package/dist/transactions/commitTransaction.js +55 -7
- package/dist/transactions/commitTransaction.js.map +1 -1
- package/dist/transactions/rollbackTransaction.d.ts.map +1 -1
- package/dist/transactions/rollbackTransaction.js +10 -9
- package/dist/transactions/rollbackTransaction.js.map +1 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +89 -9
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +3 -2
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +71 -14
- package/dist/updateJobs.js.map +1 -1
- package/dist/updateMany.d.ts.map +1 -1
- package/dist/updateMany.js +3 -2
- package/dist/updateMany.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +30 -4
- package/dist/updateOne.js.map +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +3 -2
- package/dist/updateVersion.js.map +1 -1
- package/dist/upsertBranchGlobalChange.d.ts +3 -0
- package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
- package/dist/upsertBranchGlobalChange.js +28 -0
- package/dist/upsertBranchGlobalChange.js.map +1 -0
- package/dist/utilities/aggregatePaginate.d.ts +2 -1
- package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
- package/dist/utilities/aggregatePaginate.js +21 -5
- package/dist/utilities/aggregatePaginate.js.map +1 -1
- package/dist/utilities/buildJoinAggregation.d.ts +4 -2
- package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
- package/dist/utilities/buildJoinAggregation.js +107 -8
- package/dist/utilities/buildJoinAggregation.js.map +1 -1
- package/dist/utilities/resolveJoins.d.ts +6 -2
- package/dist/utilities/resolveJoins.d.ts.map +1 -1
- package/dist/utilities/resolveJoins.js +114 -26
- package/dist/utilities/resolveJoins.js.map +1 -1
- package/dist/utilities/transform.d.ts.map +1 -1
- package/dist/utilities/transform.js +15 -0
- package/dist/utilities/transform.js.map +1 -1
- package/package.json +6 -6
- package/dist/queries/buildSortParam.spec.js +0 -123
- package/dist/queries/buildSortParam.spec.js.map +0 -1
- package/dist/queries/getLocalizedSortProperty.spec.js +0 -215
- package/dist/queries/getLocalizedSortProperty.spec.js.map +0 -1
- package/dist/utilities/transform.spec.js +0 -479
- package/dist/utilities/transform.spec.js.map +0 -1
package/dist/findDistinct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type { FindDistinct, FlattenedField } from 'payload'\n\nimport { getFieldByPath } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nconst sanitizeGroupID = (id: any) => {\n if (id && typeof id === 'object' && '_field' in id) {\n return id._field\n }\n\n return id\n}\n\nconst getSortAggregation = ({\n fieldPath,\n hasSortAggregationAndHasMany,\n sortDirection,\n sortProperty,\n}: {\n fieldPath: string\n hasSortAggregationAndHasMany: boolean\n sortDirection: -1 | 1\n sortProperty: string\n}): Record<string, -1 | 1> => {\n let resolvedSortProperty: string\n\n if (hasSortAggregationAndHasMany) {\n if (sortProperty === fieldPath) {\n resolvedSortProperty = `_id._field`\n } else {\n resolvedSortProperty = `_id._sort`\n }\n } else {\n resolvedSortProperty = sortProperty === fieldPath ? '_id' : '_sort'\n }\n\n return { [`${resolvedSortProperty}`]: sortDirection }\n}\n\nexport const findDistinct: FindDistinct = async function (this: MongooseAdapter, args) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: args.collection,\n })\n\n const { where = {} } = args\n\n let sortAggregation: PipelineStage[] = []\n\n const sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n sortAggregation,\n timestamps: true,\n })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n where,\n })\n\n const fieldPathResult = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n let fieldPath = args.field\n if (fieldPathResult?.pathHasLocalized && args.locale) {\n fieldPath = fieldPathResult.localizedPath.replace('<locale>', args.locale)\n }\n\n const page = args.page || 1\n\n let sortProperty = Object.keys(sort)[0]! // assert because buildSortParam always returns at least 1 key.\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n let currentFields = collectionConfig.flattenedFields\n let foundField: FlattenedField | null = null\n\n let rels: {\n fieldPath: string\n relationTo: string\n }[] = []\n\n let tempPath = ''\n let insideRelation = false\n\n const segments = args.field.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]\n const field = currentFields.find((e) => e.name === segment)\n if (rels.length) {\n insideRelation = true\n }\n\n if (!field) {\n break\n }\n\n if (tempPath) {\n tempPath = `${tempPath}.${field.name}`\n } else {\n tempPath = field.name\n }\n\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n continue\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n if (i === segments.length - 2 && segments[i + 1] === 'id') {\n foundField = field\n fieldPath = tempPath\n break\n }\n rels.push({ fieldPath: tempPath, relationTo: field.relationTo })\n currentFields = this.payload.collections[field.relationTo]?.config\n .flattenedFields as FlattenedField[]\n continue\n }\n foundField = field\n }\n\n const resolvedField = foundField || fieldPathResult?.field\n const isHasManyValue = resolvedField && 'hasMany' in resolvedField && resolvedField\n\n let relationLookup: null | PipelineStage[] = null\n\n if (!insideRelation) {\n rels = []\n }\n\n if (rels.length) {\n if (sortProperty.startsWith('_')) {\n const sortWithoutRelationPrefix = sortProperty.replace(/^_+/, '')\n const lastFieldPath = rels.at(-1)?.fieldPath as string\n if (sortWithoutRelationPrefix.startsWith(lastFieldPath)) {\n sortProperty = sortWithoutRelationPrefix\n }\n }\n relationLookup = rels.reduce<PipelineStage[]>((acc, { fieldPath, relationTo }) => {\n sortAggregation = sortAggregation.filter((each) => {\n if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {\n return false\n }\n\n return true\n })\n const { Model: foreignModel } = getCollection({ adapter: this, collectionSlug: relationTo })\n acc.push({\n $lookup: {\n as: fieldPath,\n foreignField: '_id',\n from: foreignModel.collection.name,\n localField: fieldPath,\n },\n })\n acc.push({ $unwind: `$${fieldPath}` })\n return acc\n }, [])\n }\n\n let $unwind: any = ''\n let $group: any = null\n if (\n isHasManyValue &&\n sortAggregation.length &&\n sortAggregation[0] &&\n '$lookup' in sortAggregation[0]\n ) {\n $unwind = { path: `$${sortAggregation[0].$lookup.as}`, preserveNullAndEmptyArrays: true }\n $group = {\n _id: {\n _field: `$${sortAggregation[0].$lookup.as}._id`,\n _sort: `$${sortProperty}`,\n },\n }\n } else if (isHasManyValue) {\n $unwind = { path: `$${args.field}`, preserveNullAndEmptyArrays: true }\n }\n\n if (!$group) {\n $group = {\n _id: `$${fieldPath}`,\n ...(sortProperty === fieldPath\n ? {}\n : {\n _sort: { $max: `$${sortProperty}` },\n }),\n }\n }\n\n const pipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n {\n $sort: getSortAggregation({\n fieldPath,\n hasSortAggregationAndHasMany: Boolean(isHasManyValue) && Boolean(sortAggregation.length),\n sortDirection,\n sortProperty,\n }),\n },\n ]\n\n const session = await getSession(this, args.req)\n\n const getValues = async () => {\n return Model.aggregate(pipeline, { session }).then((res) =>\n res.map((each) => ({\n [args.field]: JSON.parse(JSON.stringify(sanitizeGroupID(each._id))),\n })),\n )\n }\n\n if (args.limit) {\n pipeline.push({\n $skip: (page - 1) * args.limit,\n })\n pipeline.push({ $limit: args.limit })\n\n // Build count pipeline with the same structure as the main pipeline\n // to ensure relationship lookups are included\n const countPipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n { $count: 'count' },\n ]\n\n const totalDocs = await Model.aggregate(countPipeline, {\n session,\n }).then((res) => res[0]?.count ?? 0)\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values: await getValues(),\n }\n }\n\n const values = await getValues()\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["getFieldByPath","buildQuery","buildSortParam","getCollection","getSession","sanitizeGroupID","id","_field","getSortAggregation","fieldPath","hasSortAggregationAndHasMany","sortDirection","sortProperty","resolvedSortProperty","findDistinct","args","collectionConfig","Model","adapter","collectionSlug","collection","where","sortAggregation","sort","config","payload","fields","flattenedFields","locale","field","timestamps","query","fieldPathResult","includeRelationships","path","pathHasLocalized","localizedPath","replace","page","Object","keys","currentFields","foundField","rels","tempPath","insideRelation","segments","split","i","length","segment","find","e","name","type","relationTo","push","collections","resolvedField","isHasManyValue","relationLookup","startsWith","sortWithoutRelationPrefix","lastFieldPath","at","reduce","acc","filter","each","$lookup","as","foreignModel","foreignField","from","localField","$unwind","$group","preserveNullAndEmptyArrays","_id","_sort","$max","pipeline","$match","$sort","Boolean","session","req","getValues","aggregate","then","res","map","JSON","parse","stringify","limit","$skip","$limit","countPipeline","$count","totalDocs","count","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage","values"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type { FindDistinct, FlattenedField } from 'payload'\n\nimport {\n getFieldByPath,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nconst sanitizeGroupID = (id: any) => {\n if (id && typeof id === 'object' && '_field' in id) {\n return id._field\n }\n\n return id\n}\n\nconst getSortAggregation = ({\n fieldPath,\n hasSortAggregationAndHasMany,\n sortDirection,\n sortProperty,\n}: {\n fieldPath: string\n hasSortAggregationAndHasMany: boolean\n sortDirection: -1 | 1\n sortProperty: string\n}): Record<string, -1 | 1> => {\n let resolvedSortProperty: string\n\n if (hasSortAggregationAndHasMany) {\n if (sortProperty === fieldPath) {\n resolvedSortProperty = `_id._field`\n } else {\n resolvedSortProperty = `_id._sort`\n }\n } else {\n resolvedSortProperty = sortProperty === fieldPath ? '_id' : '_sort'\n }\n\n return { [`${resolvedSortProperty}`]: sortDirection }\n}\n\nexport const findDistinct: FindDistinct = async function (this: MongooseAdapter, args) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: args.collection,\n })\n const branchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n })\n\n // Distinct values describe the documents the caller can see, so they are subject to\n // the same branch predicate as a list read. Without it a branch's shadow rows fed\n // main's distinct values and the branch's own edits were invisible in its own.\n const where = branchReadState.useBranching\n ? (rewriteBranchIDs(args.where) ?? {})\n : ((await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n where: args.where,\n })) ?? {})\n const branchVisibility = branchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug: args.collection,\n })\n : []\n\n let sortAggregation: PipelineStage[] = []\n\n const sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n sortAggregation,\n timestamps: true,\n })\n\n const query = await buildQuery({\n adapter: this,\n branch: args.branch,\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n req: args.req,\n where,\n })\n\n const fieldPathResult = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n let fieldPath = args.field === 'id' ? '_id' : args.field\n if (fieldPathResult?.pathHasLocalized && args.locale) {\n fieldPath = fieldPathResult.localizedPath.replace('<locale>', args.locale)\n }\n\n const page = args.page || 1\n\n let sortProperty = Object.keys(sort)[0]! // assert because buildSortParam always returns at least 1 key.\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n let currentFields = collectionConfig.flattenedFields\n let foundField: FlattenedField | null = null\n\n let rels: {\n fieldPath: string\n relationTo: string\n }[] = []\n\n let tempPath = ''\n let insideRelation = false\n\n const segments = args.field.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]\n const field = currentFields.find((e) => e.name === segment)\n if (rels.length) {\n insideRelation = true\n }\n\n if (!field) {\n break\n }\n\n if (tempPath) {\n tempPath = `${tempPath}.${field.name}`\n } else {\n tempPath = field.name\n }\n\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n continue\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n if (i === segments.length - 2 && segments[i + 1] === 'id') {\n foundField = field\n fieldPath = tempPath\n break\n }\n rels.push({ fieldPath: tempPath, relationTo: field.relationTo })\n currentFields = this.payload.collections[field.relationTo]?.config\n .flattenedFields as FlattenedField[]\n continue\n }\n foundField = field\n }\n\n const resolvedField = foundField || fieldPathResult?.field\n const isHasManyValue = resolvedField && 'hasMany' in resolvedField && resolvedField\n\n let relationLookup: null | PipelineStage[] = null\n\n if (!insideRelation) {\n rels = []\n }\n\n if (rels.length) {\n if (sortProperty.startsWith('_')) {\n const sortWithoutRelationPrefix = sortProperty.replace(/^_+/, '')\n const lastFieldPath = rels.at(-1)?.fieldPath as string\n if (sortWithoutRelationPrefix.startsWith(lastFieldPath)) {\n sortProperty = sortWithoutRelationPrefix\n }\n }\n relationLookup = []\n for (const { fieldPath, relationTo } of rels) {\n sortAggregation = sortAggregation.filter((each) => {\n if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {\n return false\n }\n\n return true\n })\n const { collectionConfig: foreignCollectionConfig, Model: foreignModel } = getCollection({\n adapter: this,\n collectionSlug: relationTo,\n })\n const relatedAccess = args.relatedAccess?.[fieldPath]\n const relatedBranchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: relationTo,\n req: args.req,\n })\n const relatedWhere = relatedBranchReadState.useBranching\n ? rewriteBranchIDs(relatedAccess)\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: relationTo,\n req: args.req,\n where: relatedAccess,\n })\n const relatedQuery =\n relatedWhere && Object.keys(relatedWhere).length\n ? await buildQuery({\n adapter: this,\n branch: args.branch,\n collectionSlug: relationTo,\n fields: foreignCollectionConfig.flattenedFields,\n locale: args.locale,\n req: args.req,\n where: relatedWhere,\n })\n : null\n const relatedBranchVisibility = relatedBranchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter: this,\n branch: relatedBranchReadState.branch,\n collectionSlug: relationTo,\n })\n : []\n\n relationLookup.push({\n $lookup: {\n as: fieldPath,\n from: foreignModel.collection.name,\n ...(relatedQuery || relatedBranchVisibility.length\n ? {\n let: { relatedIDs: `$${fieldPath}` },\n pipeline: [\n {\n $match: {\n $and: [\n {\n $expr: {\n $cond: {\n else: {\n $eq: [{ $ifNull: ['$_branchDocID', '$_id'] }, '$$relatedIDs'],\n },\n if: { $isArray: '$$relatedIDs' },\n then: {\n $in: [{ $ifNull: ['$_branchDocID', '$_id'] }, '$$relatedIDs'],\n },\n },\n },\n },\n ...(relatedQuery ? [relatedQuery] : []),\n ],\n },\n },\n ...relatedBranchVisibility,\n ],\n }\n : {\n foreignField: '_id',\n localField: fieldPath,\n }),\n },\n })\n relationLookup.push({ $unwind: `$${fieldPath}` })\n }\n }\n\n let $unwind: any = ''\n let $group: any = null\n if (\n isHasManyValue &&\n sortAggregation.length &&\n sortAggregation[0] &&\n '$lookup' in sortAggregation[0]\n ) {\n $unwind = { path: `$${sortAggregation[0].$lookup.as}`, preserveNullAndEmptyArrays: true }\n $group = {\n _id: {\n _field: `$${sortAggregation[0].$lookup.as}._id`,\n _sort: `$${sortProperty}`,\n },\n }\n } else if (isHasManyValue) {\n $unwind = { path: `$${args.field}`, preserveNullAndEmptyArrays: true }\n }\n\n if (!$group) {\n $group = {\n _id:\n args.field === 'id' && branchReadState.useBranching\n ? { $ifNull: ['$_branchDocID', '$_id'] }\n : `$${fieldPath}`,\n ...(sortProperty === fieldPath\n ? {}\n : {\n _sort: { $max: `$${sortProperty}` },\n }),\n }\n }\n\n const pipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...branchVisibility,\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n {\n $sort: getSortAggregation({\n fieldPath,\n hasSortAggregationAndHasMany: Boolean(isHasManyValue) && Boolean(sortAggregation.length),\n sortDirection,\n sortProperty,\n }),\n },\n ]\n\n const session = await getSession(this, args.req)\n\n const getValues = async () => {\n return Model.aggregate(pipeline, { session }).then((res) =>\n res.map((each) => ({\n [args.field]: JSON.parse(JSON.stringify(sanitizeGroupID(each._id))),\n })),\n )\n }\n\n if (args.limit) {\n pipeline.push({\n $skip: (page - 1) * args.limit,\n })\n pipeline.push({ $limit: args.limit })\n\n // Build count pipeline with the same structure as the main pipeline\n // to ensure relationship lookups are included\n const countPipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...branchVisibility,\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n { $count: 'count' },\n ]\n\n const totalDocs = await Model.aggregate(countPipeline, {\n session,\n }).then((res) => res[0]?.count ?? 0)\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values: await getValues(),\n }\n }\n\n const values = await getValues()\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["getFieldByPath","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","buildBranchVisibilityStages","buildQuery","buildSortParam","getCollection","getSession","sanitizeGroupID","id","_field","getSortAggregation","fieldPath","hasSortAggregationAndHasMany","sortDirection","sortProperty","resolvedSortProperty","findDistinct","args","collectionConfig","Model","adapter","collectionSlug","collection","branchReadState","branch","req","where","useBranching","branchVisibility","sortAggregation","sort","config","payload","fields","flattenedFields","locale","field","timestamps","query","fieldPathResult","includeRelationships","path","pathHasLocalized","localizedPath","replace","page","Object","keys","currentFields","foundField","rels","tempPath","insideRelation","segments","split","i","length","segment","find","e","name","type","relationTo","push","collections","resolvedField","isHasManyValue","relationLookup","startsWith","sortWithoutRelationPrefix","lastFieldPath","at","filter","each","$lookup","as","foreignCollectionConfig","foreignModel","relatedAccess","relatedBranchReadState","relatedWhere","relatedQuery","relatedBranchVisibility","from","let","relatedIDs","pipeline","$match","$and","$expr","$cond","else","$eq","$ifNull","if","$isArray","then","$in","foreignField","localField","$unwind","$group","preserveNullAndEmptyArrays","_id","_sort","$max","$sort","Boolean","session","getValues","aggregate","res","map","JSON","parse","stringify","limit","$skip","$limit","countPipeline","$count","totalDocs","count","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage","values"],"mappings":"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"}
|
package/dist/findGlobal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAmBzC,eAAO,MAAM,UAAU,EAAE,UAuDxB,CAAA"}
|
package/dist/findGlobal.js
CHANGED
|
@@ -1,36 +1,65 @@
|
|
|
1
|
-
import { combineQueries } from 'payload';
|
|
1
|
+
import { branchGlobalNeedsBothRows, combineQueries, pickBranchGlobal, resolveBranch, resolveBranchGlobalQuery, withBranchGlobalSelect } from 'payload';
|
|
2
2
|
import { buildQuery } from './queries/buildQuery.js';
|
|
3
3
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
4
4
|
import { getGlobal } from './utilities/getEntity.js';
|
|
5
5
|
import { getSession } from './utilities/getSession.js';
|
|
6
6
|
import { transform } from './utilities/transform.js';
|
|
7
|
-
export const findGlobal = async function findGlobal({ slug: globalSlug, locale, req, select, where = {} }) {
|
|
7
|
+
export const findGlobal = async function findGlobal({ slug: globalSlug, branch, locale, req, select, where = {} }) {
|
|
8
8
|
const { globalConfig, Model } = getGlobal({
|
|
9
9
|
adapter: this,
|
|
10
10
|
globalSlug
|
|
11
11
|
});
|
|
12
12
|
const fields = globalConfig.flattenedFields;
|
|
13
|
+
const branchedWhere = resolveBranchGlobalQuery({
|
|
14
|
+
branch,
|
|
15
|
+
globalSlug,
|
|
16
|
+
req,
|
|
17
|
+
where
|
|
18
|
+
});
|
|
13
19
|
const query = await buildQuery({
|
|
14
20
|
adapter: this,
|
|
21
|
+
branch,
|
|
15
22
|
fields,
|
|
16
23
|
globalSlug,
|
|
17
24
|
locale,
|
|
25
|
+
req,
|
|
18
26
|
where: combineQueries({
|
|
19
27
|
globalType: {
|
|
20
28
|
equals: globalSlug
|
|
21
29
|
}
|
|
22
|
-
},
|
|
30
|
+
}, branchedWhere ?? {})
|
|
23
31
|
});
|
|
24
32
|
const options = {
|
|
25
33
|
lean: true,
|
|
26
34
|
select: buildProjectionFromSelect({
|
|
27
35
|
adapter: this,
|
|
28
36
|
fields,
|
|
29
|
-
select
|
|
37
|
+
select: withBranchGlobalSelect({
|
|
38
|
+
branch,
|
|
39
|
+
globalSlug,
|
|
40
|
+
req,
|
|
41
|
+
select
|
|
42
|
+
})
|
|
30
43
|
}),
|
|
31
44
|
session: await getSession(this, req)
|
|
32
45
|
};
|
|
33
|
-
|
|
46
|
+
// A global is one document, so the branch's row and main's row can be fetched
|
|
47
|
+
// together and the branch's preferred in memory. There is no result set to
|
|
48
|
+
// paginate, so nothing a post-query step could get wrong.
|
|
49
|
+
let doc;
|
|
50
|
+
if (branchGlobalNeedsBothRows({
|
|
51
|
+
branch,
|
|
52
|
+
globalSlug,
|
|
53
|
+
req
|
|
54
|
+
})) {
|
|
55
|
+
const rows = await Model.find(query, {}, {
|
|
56
|
+
...options,
|
|
57
|
+
limit: 2
|
|
58
|
+
}).lean();
|
|
59
|
+
doc = pickBranchGlobal(rows, branch || resolveBranch(req));
|
|
60
|
+
} else {
|
|
61
|
+
doc = await Model.findOne(query, {}, options);
|
|
62
|
+
}
|
|
34
63
|
if (!doc) {
|
|
35
64
|
return null;
|
|
36
65
|
}
|
package/dist/findGlobal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { FindGlobal } from 'payload'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { FindGlobal } from 'payload'\n\nimport {\n branchGlobalNeedsBothRows,\n combineQueries,\n pickBranchGlobal,\n resolveBranch,\n resolveBranchGlobalQuery,\n withBranchGlobalSelect,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getGlobal } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: MongooseAdapter,\n { slug: globalSlug, branch, locale, req, select, where = {} },\n) {\n const { globalConfig, Model } = getGlobal({ adapter: this, globalSlug })\n\n const fields = globalConfig.flattenedFields\n\n const branchedWhere = resolveBranchGlobalQuery({ branch, globalSlug, req, where })\n\n const query = await buildQuery({\n adapter: this,\n branch,\n fields,\n globalSlug,\n locale,\n req,\n where: combineQueries({ globalType: { equals: globalSlug } }, branchedWhere ?? {}),\n })\n\n const options: QueryOptions = {\n lean: true,\n select: buildProjectionFromSelect({\n adapter: this,\n fields,\n select: withBranchGlobalSelect({ branch, globalSlug, req, select }),\n }),\n session: await getSession(this, req),\n }\n\n // A global is one document, so the branch's row and main's row can be fetched\n // together and the branch's preferred in memory. There is no result set to\n // paginate, so nothing a post-query step could get wrong.\n let doc: any\n\n if (branchGlobalNeedsBothRows({ branch, globalSlug, req })) {\n const rows = await Model.find(query, {}, { ...options, limit: 2 }).lean()\n\n doc = pickBranchGlobal(rows as Record<string, any>[], branch || resolveBranch(req as never))\n } else {\n doc = await Model.findOne(query, {}, options)\n }\n\n if (!doc) {\n return null\n }\n\n transform({\n adapter: this,\n data: doc,\n fields: globalConfig.fields,\n operation: 'read',\n })\n\n return doc\n}\n"],"names":["branchGlobalNeedsBothRows","combineQueries","pickBranchGlobal","resolveBranch","resolveBranchGlobalQuery","withBranchGlobalSelect","buildQuery","buildProjectionFromSelect","getGlobal","getSession","transform","findGlobal","slug","globalSlug","branch","locale","req","select","where","globalConfig","Model","adapter","fields","flattenedFields","branchedWhere","query","globalType","equals","options","lean","session","doc","rows","find","limit","findOne","data","operation"],"mappings":"AAGA,SACEA,yBAAyB,EACzBC,cAAc,EACdC,gBAAgB,EAChBC,aAAa,EACbC,wBAAwB,EACxBC,sBAAsB,QACjB,UAAS;AAIhB,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,SAAS,QAAQ,2BAA0B;AACpD,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,MAAMC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,QAAQ,CAAC,CAAC,EAAE;IAE7D,MAAM,EAAEC,YAAY,EAAEC,KAAK,EAAE,GAAGZ,UAAU;QAAEa,SAAS,IAAI;QAAER;IAAW;IAEtE,MAAMS,SAASH,aAAaI,eAAe;IAE3C,MAAMC,gBAAgBpB,yBAAyB;QAAEU;QAAQD;QAAYG;QAAKE;IAAM;IAEhF,MAAMO,QAAQ,MAAMnB,WAAW;QAC7Be,SAAS,IAAI;QACbP;QACAQ;QACAT;QACAE;QACAC;QACAE,OAAOjB,eAAe;YAAEyB,YAAY;gBAAEC,QAAQd;YAAW;QAAE,GAAGW,iBAAiB,CAAC;IAClF;IAEA,MAAMI,UAAwB;QAC5BC,MAAM;QACNZ,QAAQV,0BAA0B;YAChCc,SAAS,IAAI;YACbC;YACAL,QAAQZ,uBAAuB;gBAAES;gBAAQD;gBAAYG;gBAAKC;YAAO;QACnE;QACAa,SAAS,MAAMrB,WAAW,IAAI,EAAEO;IAClC;IAEA,8EAA8E;IAC9E,2EAA2E;IAC3E,0DAA0D;IAC1D,IAAIe;IAEJ,IAAI/B,0BAA0B;QAAEc;QAAQD;QAAYG;IAAI,IAAI;QAC1D,MAAMgB,OAAO,MAAMZ,MAAMa,IAAI,CAACR,OAAO,CAAC,GAAG;YAAE,GAAGG,OAAO;YAAEM,OAAO;QAAE,GAAGL,IAAI;QAEvEE,MAAM7B,iBAAiB8B,MAA+BlB,UAAUX,cAAca;IAChF,OAAO;QACLe,MAAM,MAAMX,MAAMe,OAAO,CAACV,OAAO,CAAC,GAAGG;IACvC;IAEA,IAAI,CAACG,KAAK;QACR,OAAO;IACT;IAEArB,UAAU;QACRW,SAAS,IAAI;QACbe,MAAML;QACNT,QAAQH,aAAaG,MAAM;QAC3Be,WAAW;IACb;IAEA,OAAON;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findGlobalVersions.d.ts","sourceRoot":"","sources":["../src/findGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findGlobalVersions.d.ts","sourceRoot":"","sources":["../src/findGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAkBjD,eAAO,MAAM,kBAAkB,EAAE,kBAsIhC,CAAA"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import { buildVersionGlobalFields, flattenWhereToOperators } from 'payload';
|
|
1
|
+
import { buildVersionGlobalFields, flattenWhereToOperators, resolveBranchGlobalVersionQuery } from 'payload';
|
|
2
2
|
import { buildQuery } from './queries/buildQuery.js';
|
|
3
3
|
import { buildSortParam } from './queries/buildSortParam.js';
|
|
4
4
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
5
5
|
import { getGlobal } from './utilities/getEntity.js';
|
|
6
6
|
import { getSession } from './utilities/getSession.js';
|
|
7
7
|
import { transform } from './utilities/transform.js';
|
|
8
|
-
export const findGlobalVersions = async function findGlobalVersions({ global: globalSlug, limit = 0, locale, page, pagination, req, select, sort: sortArg, where = {} }) {
|
|
8
|
+
export const findGlobalVersions = async function findGlobalVersions({ branch, global: globalSlug, limit = 0, locale, page, pagination, req, select, sort: sortArg, where = {} }) {
|
|
9
9
|
const { globalConfig, Model } = getGlobal({
|
|
10
10
|
adapter: this,
|
|
11
11
|
globalSlug,
|
|
12
12
|
versions: true
|
|
13
13
|
});
|
|
14
|
+
where = resolveBranchGlobalVersionQuery({
|
|
15
|
+
branch,
|
|
16
|
+
globalSlug,
|
|
17
|
+
req,
|
|
18
|
+
where
|
|
19
|
+
}) ?? {};
|
|
14
20
|
const versionFields = buildVersionGlobalFields(this.payload.config, globalConfig, true);
|
|
15
21
|
let hasNearConstraint = false;
|
|
16
22
|
if (where) {
|
|
@@ -30,8 +36,10 @@ export const findGlobalVersions = async function findGlobalVersions({ global: gl
|
|
|
30
36
|
}
|
|
31
37
|
const query = await buildQuery({
|
|
32
38
|
adapter: this,
|
|
39
|
+
branch,
|
|
33
40
|
fields: versionFields,
|
|
34
41
|
locale,
|
|
42
|
+
req,
|
|
35
43
|
where
|
|
36
44
|
});
|
|
37
45
|
const session = await getSession(this, req);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { PaginateOptions, QueryOptions } from 'mongoose'\nimport type { FindGlobalVersions } from 'payload'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { PaginateOptions, QueryOptions } from 'mongoose'\nimport type { FindGlobalVersions } from 'payload'\n\nimport {\n APIError,\n buildVersionGlobalFields,\n flattenWhereToOperators,\n resolveBranchGlobalVersionQuery,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getGlobal } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: MongooseAdapter,\n {\n branch,\n global: globalSlug,\n limit = 0,\n locale,\n page,\n pagination,\n req,\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { globalConfig, Model } = getGlobal({ adapter: this, globalSlug, versions: true })\n\n where = resolveBranchGlobalVersionQuery({ branch, globalSlug, req, where }) ?? {}\n\n const versionFields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n let sort\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: versionFields,\n locale,\n sort: sortArg || '-updatedAt',\n timestamps: true,\n })\n }\n\n const query = await buildQuery({\n adapter: this,\n branch,\n fields: versionFields,\n locale,\n req,\n where,\n })\n\n const session = await getSession(this, req)\n // Calculate skip from page for cases where pagination is disabled but offset is still needed\n const skip = typeof page === 'number' && page > 1 ? (page - 1) * (limit || 0) : undefined\n const options: QueryOptions = {\n limit,\n session,\n skip,\n }\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 = hasNearConstraint || !query || Object.keys(query).length === 0\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n limit,\n options,\n page,\n pagination,\n projection: buildProjectionFromSelect({ adapter: this, fields: versionFields, select }),\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const localizationConfig = this.payload.config.localization\n const defaultLocale =\n (typeof localizationConfig === 'object' && localizationConfig?.defaultLocale) || 'en'\n\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n hint: { _id: 1 },\n session,\n }),\n )\n }\n } else if (!useEstimatedCount && this.collation) {\n // Workaround for mongoose-paginate-v2 bug: chaining .collation() on countDocuments breaks\n // session context in transactions (mongoose 8.x). Provide custom count function that passes\n // collation as an option instead. See: https://github.com/aravindnc/mongoose-paginate-v2/pull/240\n // TODO: Remove this workaround once mongoose-paginate-v2 is updated with the fix.\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n session,\n }),\n )\n }\n }\n\n if (limit >= 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n\n // Disable pagination if limit is 0\n if (limit === 0) {\n paginationOptions.pagination = false\n }\n }\n\n const result = await Model.paginate(query, paginationOptions)\n\n transform({\n adapter: this,\n data: result.docs,\n fields: buildVersionGlobalFields(this.payload.config, globalConfig),\n operation: 'read',\n })\n\n return result\n}\n"],"names":["buildVersionGlobalFields","flattenWhereToOperators","resolveBranchGlobalVersionQuery","buildQuery","buildSortParam","buildProjectionFromSelect","getGlobal","getSession","transform","findGlobalVersions","branch","global","globalSlug","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","Model","adapter","versions","versionFields","payload","config","hasNearConstraint","constraints","some","prop","Object","keys","key","fields","timestamps","query","session","skip","undefined","options","useEstimatedCount","length","paginationOptions","lean","leanWithId","projection","collation","localizationConfig","localization","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","paginate","data","docs","operation"],"mappings":"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"}
|
package/dist/findOne.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,OAAO,EAKb,MAAM,SAAS,CAAA;AAchB,eAAO,MAAM,OAAO,EAAE,OAkGrB,CAAA"}
|
package/dist/findOne.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { applyBranchIDProjection, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
|
|
2
|
+
import { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js';
|
|
1
3
|
import { buildQuery } from './queries/buildQuery.js';
|
|
2
4
|
import { aggregatePaginate } from './utilities/aggregatePaginate.js';
|
|
3
5
|
import { buildJoinAggregation } from './utilities/buildJoinAggregation.js';
|
|
@@ -6,32 +8,57 @@ import { getCollection } from './utilities/getEntity.js';
|
|
|
6
8
|
import { getSession } from './utilities/getSession.js';
|
|
7
9
|
import { resolveJoins } from './utilities/resolveJoins.js';
|
|
8
10
|
import { transform } from './utilities/transform.js';
|
|
9
|
-
export const findOne = async function findOne({ collection: collectionSlug, draftsEnabled, joins, locale, req, select, where = {} }) {
|
|
11
|
+
export const findOne = async function findOne({ branch, collection: collectionSlug, draftsEnabled, joins, locale, req, select, where = {} }) {
|
|
10
12
|
const { collectionConfig, Model } = getCollection({
|
|
11
13
|
adapter: this,
|
|
12
14
|
collectionSlug
|
|
13
15
|
});
|
|
16
|
+
const branchReadState = resolveBranchReadState({
|
|
17
|
+
branch,
|
|
18
|
+
collectionSlug,
|
|
19
|
+
req
|
|
20
|
+
});
|
|
21
|
+
where = branchReadState.useBranching ? rewriteBranchIDs(where) ?? {} : await resolveBranchQuery({
|
|
22
|
+
branch,
|
|
23
|
+
collectionSlug,
|
|
24
|
+
req,
|
|
25
|
+
where
|
|
26
|
+
}) ?? {};
|
|
27
|
+
const branchVisibility = branchReadState.useBranching ? buildBranchVisibilityStages({
|
|
28
|
+
adapter: this,
|
|
29
|
+
branch: branchReadState.branch,
|
|
30
|
+
collectionSlug
|
|
31
|
+
}) : [];
|
|
14
32
|
const query = await buildQuery({
|
|
15
33
|
adapter: this,
|
|
34
|
+
branch,
|
|
16
35
|
collectionSlug,
|
|
17
36
|
fields: collectionConfig.flattenedFields,
|
|
18
37
|
locale,
|
|
38
|
+
req,
|
|
19
39
|
where
|
|
20
40
|
});
|
|
21
41
|
const projection = buildProjectionFromSelect({
|
|
22
42
|
adapter: this,
|
|
23
43
|
fields: collectionConfig.flattenedFields,
|
|
24
|
-
select
|
|
44
|
+
select: withBranchIDSelect({
|
|
45
|
+
branch,
|
|
46
|
+
collectionSlug,
|
|
47
|
+
req,
|
|
48
|
+
select
|
|
49
|
+
})
|
|
25
50
|
});
|
|
26
51
|
const aggregate = await buildJoinAggregation({
|
|
27
52
|
adapter: this,
|
|
53
|
+
branch,
|
|
28
54
|
collection: collectionSlug,
|
|
29
55
|
collectionConfig,
|
|
30
56
|
draftsEnabled,
|
|
31
57
|
joins,
|
|
32
58
|
locale,
|
|
33
59
|
projection,
|
|
34
|
-
query
|
|
60
|
+
query,
|
|
61
|
+
req
|
|
35
62
|
});
|
|
36
63
|
const session = await getSession(this, req);
|
|
37
64
|
const options = {
|
|
@@ -39,9 +66,10 @@ export const findOne = async function findOne({ collection: collectionSlug, draf
|
|
|
39
66
|
session
|
|
40
67
|
};
|
|
41
68
|
let doc;
|
|
42
|
-
if (aggregate) {
|
|
69
|
+
if (aggregate.length > 0 || branchVisibility.length > 0) {
|
|
43
70
|
const { docs } = await aggregatePaginate({
|
|
44
71
|
adapter: this,
|
|
72
|
+
branchVisibility,
|
|
45
73
|
joinAggregation: aggregate,
|
|
46
74
|
limit: 1,
|
|
47
75
|
Model,
|
|
@@ -59,12 +87,14 @@ export const findOne = async function findOne({ collection: collectionSlug, draf
|
|
|
59
87
|
if (doc && !this.useJoinAggregations) {
|
|
60
88
|
await resolveJoins({
|
|
61
89
|
adapter: this,
|
|
90
|
+
branch,
|
|
62
91
|
collectionSlug,
|
|
63
92
|
docs: [
|
|
64
93
|
doc
|
|
65
94
|
],
|
|
66
95
|
joins,
|
|
67
|
-
locale
|
|
96
|
+
locale,
|
|
97
|
+
req
|
|
68
98
|
});
|
|
69
99
|
}
|
|
70
100
|
if (!doc) {
|
|
@@ -76,6 +106,14 @@ export const findOne = async function findOne({ collection: collectionSlug, draf
|
|
|
76
106
|
fields: collectionConfig.fields,
|
|
77
107
|
operation: 'read'
|
|
78
108
|
});
|
|
109
|
+
applyBranchIDProjection({
|
|
110
|
+
branch,
|
|
111
|
+
collectionSlug,
|
|
112
|
+
docs: [
|
|
113
|
+
doc
|
|
114
|
+
],
|
|
115
|
+
req
|
|
116
|
+
});
|
|
79
117
|
return doc;
|
|
80
118
|
};
|
|
81
119
|
|
package/dist/findOne.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { AggregateOptions, QueryOptions } from 'mongoose'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { AggregateOptions, QueryOptions } from 'mongoose'\n\nimport {\n applyBranchIDProjection,\n type FindOne,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { resolveJoins } from './utilities/resolveJoins.js'\nimport { transform } from './utilities/transform.js'\n\nexport const findOne: FindOne = async function findOne(\n this: MongooseAdapter,\n { branch, collection: collectionSlug, draftsEnabled, joins, locale, req, select, where = {} },\n) {\n const { collectionConfig, Model } = getCollection({ adapter: this, collectionSlug })\n const branchReadState = resolveBranchReadState({ branch, collectionSlug, req })\n\n where = branchReadState.useBranching\n ? (rewriteBranchIDs(where) ?? {})\n : ((await resolveBranchQuery({ branch, collectionSlug, req, where })) ?? {})\n const branchVisibility = branchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug,\n })\n : []\n\n const query = await buildQuery({\n adapter: this,\n branch,\n collectionSlug,\n fields: collectionConfig.flattenedFields,\n locale,\n req,\n where,\n })\n\n const projection = buildProjectionFromSelect({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n select: withBranchIDSelect({ branch, collectionSlug, req, select }),\n })\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n branch,\n collection: collectionSlug,\n collectionConfig,\n draftsEnabled,\n joins,\n locale,\n projection,\n query,\n req,\n })\n\n const session = await getSession(this, req)\n const options: AggregateOptions & QueryOptions = {\n lean: true,\n session,\n }\n\n let doc\n if (aggregate.length > 0 || branchVisibility.length > 0) {\n const { docs } = await aggregatePaginate({\n adapter: this,\n branchVisibility,\n joinAggregation: aggregate,\n limit: 1,\n Model,\n pagination: false,\n projection,\n query,\n session,\n })\n doc = docs[0]\n } else {\n ;(options as Record<string, unknown>).projection = projection\n doc = await Model.findOne(query, {}, options)\n }\n\n if (doc && !this.useJoinAggregations) {\n await resolveJoins({\n adapter: this,\n branch,\n collectionSlug,\n docs: [doc] as Record<string, unknown>[],\n joins,\n locale,\n req,\n })\n }\n\n if (!doc) {\n return null\n }\n\n transform({ adapter: this, data: doc, fields: collectionConfig.fields, operation: 'read' })\n\n applyBranchIDProjection({\n branch,\n collectionSlug,\n docs: [doc as Record<string, unknown>],\n req,\n })\n\n return doc\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","buildBranchVisibilityStages","buildQuery","aggregatePaginate","buildJoinAggregation","buildProjectionFromSelect","getCollection","getSession","resolveJoins","transform","findOne","branch","collection","collectionSlug","draftsEnabled","joins","locale","req","select","where","collectionConfig","Model","adapter","branchReadState","useBranching","branchVisibility","query","fields","flattenedFields","projection","aggregate","session","options","lean","doc","length","docs","joinAggregation","limit","pagination","useJoinAggregations","data","operation"],"mappings":"AAEA,SACEA,uBAAuB,EAEvBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,UAAS;AAIhB,SAASC,2BAA2B,QAAQ,qCAAoC;AAChF,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,SAAS,QAAQ,2BAA0B;AAEpD,OAAO,MAAMC,UAAmB,eAAeA,QAE7C,EAAEC,MAAM,EAAEC,YAAYC,cAAc,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,QAAQ,CAAC,CAAC,EAAE;IAE7F,MAAM,EAAEC,gBAAgB,EAAEC,KAAK,EAAE,GAAGf,cAAc;QAAEgB,SAAS,IAAI;QAAET;IAAe;IAClF,MAAMU,kBAAkBzB,uBAAuB;QAAEa;QAAQE;QAAgBI;IAAI;IAE7EE,QAAQI,gBAAgBC,YAAY,GAC/BzB,iBAAiBoB,UAAU,CAAC,IAC5B,AAAC,MAAMtB,mBAAmB;QAAEc;QAAQE;QAAgBI;QAAKE;IAAM,MAAO,CAAC;IAC5E,MAAMM,mBAAmBF,gBAAgBC,YAAY,GACjDvB,4BAA4B;QAC1BqB,SAAS,IAAI;QACbX,QAAQY,gBAAgBZ,MAAM;QAC9BE;IACF,KACA,EAAE;IAEN,MAAMa,QAAQ,MAAMxB,WAAW;QAC7BoB,SAAS,IAAI;QACbX;QACAE;QACAc,QAAQP,iBAAiBQ,eAAe;QACxCZ;QACAC;QACAE;IACF;IAEA,MAAMU,aAAaxB,0BAA0B;QAC3CiB,SAAS,IAAI;QACbK,QAAQP,iBAAiBQ,eAAe;QACxCV,QAAQlB,mBAAmB;YAAEW;YAAQE;YAAgBI;YAAKC;QAAO;IACnE;IAEA,MAAMY,YAAY,MAAM1B,qBAAqB;QAC3CkB,SAAS,IAAI;QACbX;QACAC,YAAYC;QACZO;QACAN;QACAC;QACAC;QACAa;QACAH;QACAT;IACF;IAEA,MAAMc,UAAU,MAAMxB,WAAW,IAAI,EAAEU;IACvC,MAAMe,UAA2C;QAC/CC,MAAM;QACNF;IACF;IAEA,IAAIG;IACJ,IAAIJ,UAAUK,MAAM,GAAG,KAAKV,iBAAiBU,MAAM,GAAG,GAAG;QACvD,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMjC,kBAAkB;YACvCmB,SAAS,IAAI;YACbG;YACAY,iBAAiBP;YACjBQ,OAAO;YACPjB;YACAkB,YAAY;YACZV;YACAH;YACAK;QACF;QACAG,MAAME,IAAI,CAAC,EAAE;IACf,OAAO;;QACHJ,QAAoCH,UAAU,GAAGA;QACnDK,MAAM,MAAMb,MAAMX,OAAO,CAACgB,OAAO,CAAC,GAAGM;IACvC;IAEA,IAAIE,OAAO,CAAC,IAAI,CAACM,mBAAmB,EAAE;QACpC,MAAMhC,aAAa;YACjBc,SAAS,IAAI;YACbX;YACAE;YACAuB,MAAM;gBAACF;aAAI;YACXnB;YACAC;YACAC;QACF;IACF;IAEA,IAAI,CAACiB,KAAK;QACR,OAAO;IACT;IAEAzB,UAAU;QAAEa,SAAS,IAAI;QAAEmB,MAAMP;QAAKP,QAAQP,iBAAiBO,MAAM;QAAEe,WAAW;IAAO;IAEzF9C,wBAAwB;QACtBe;QACAE;QACAuB,MAAM;YAACF;SAA+B;QACtCjB;IACF;IAEA,OAAOiB;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAuB3C,eAAO,MAAM,YAAY,EAAE,YA+K1B,CAAA"}
|
package/dist/findVersions.js
CHANGED
|
@@ -1,16 +1,35 @@
|
|
|
1
|
-
import { buildVersionCollectionFields, flattenWhereToOperators } from 'payload';
|
|
1
|
+
import { buildVersionCollectionFields, flattenWhereToOperators, projectBranchVersionParents, resolveBranchReadState, resolveBranchVersionHistoryQuery, rewriteBranchVersionParents, withBranchVersionSelect } from 'payload';
|
|
2
|
+
import { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js';
|
|
2
3
|
import { buildQuery } from './queries/buildQuery.js';
|
|
3
4
|
import { buildSortParam } from './queries/buildSortParam.js';
|
|
5
|
+
import { aggregatePaginate } from './utilities/aggregatePaginate.js';
|
|
4
6
|
import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
|
|
5
7
|
import { getCollection } from './utilities/getEntity.js';
|
|
6
8
|
import { getSession } from './utilities/getSession.js';
|
|
7
9
|
import { transform } from './utilities/transform.js';
|
|
8
|
-
export const findVersions = async function findVersions({ collection: collectionSlug, limit = 0, locale, page, pagination, req = {}, select, sort: sortArg, where = {} }) {
|
|
10
|
+
export const findVersions = async function findVersions({ branch, collection: collectionSlug, limit = 0, locale, page, pagination, req = {}, select, sort: sortArg, where = {} }) {
|
|
9
11
|
const { collectionConfig, Model } = getCollection({
|
|
10
12
|
adapter: this,
|
|
11
13
|
collectionSlug,
|
|
12
14
|
versions: true
|
|
13
15
|
});
|
|
16
|
+
const branchReadState = resolveBranchReadState({
|
|
17
|
+
branch,
|
|
18
|
+
collectionSlug,
|
|
19
|
+
req
|
|
20
|
+
});
|
|
21
|
+
where = branchReadState.useBranching ? rewriteBranchVersionParents(where) ?? {} : await resolveBranchVersionHistoryQuery({
|
|
22
|
+
branch,
|
|
23
|
+
collectionSlug,
|
|
24
|
+
req,
|
|
25
|
+
where
|
|
26
|
+
}) ?? {};
|
|
27
|
+
const branchVisibility = branchReadState.useBranching ? buildBranchVisibilityStages({
|
|
28
|
+
adapter: this,
|
|
29
|
+
branch: branchReadState.branch,
|
|
30
|
+
collectionSlug,
|
|
31
|
+
mode: 'history'
|
|
32
|
+
}) : [];
|
|
14
33
|
let hasNearConstraint = false;
|
|
15
34
|
if (where) {
|
|
16
35
|
const constraints = flattenWhereToOperators(where);
|
|
@@ -30,8 +49,10 @@ export const findVersions = async function findVersions({ collection: collection
|
|
|
30
49
|
const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true);
|
|
31
50
|
const query = await buildQuery({
|
|
32
51
|
adapter: this,
|
|
52
|
+
branch,
|
|
33
53
|
fields,
|
|
34
54
|
locale,
|
|
55
|
+
req,
|
|
35
56
|
where
|
|
36
57
|
});
|
|
37
58
|
const session = await getSession(this, req);
|
|
@@ -43,7 +64,7 @@ export const findVersions = async function findVersions({ collection: collection
|
|
|
43
64
|
skip
|
|
44
65
|
};
|
|
45
66
|
// useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
|
|
46
|
-
const useEstimatedCount = hasNearConstraint || !query || Object.keys(query).length === 0;
|
|
67
|
+
const useEstimatedCount = !branchVisibility.length && (hasNearConstraint || !query || Object.keys(query).length === 0);
|
|
47
68
|
const paginationOptions = {
|
|
48
69
|
lean: true,
|
|
49
70
|
leanWithId: true,
|
|
@@ -54,7 +75,12 @@ export const findVersions = async function findVersions({ collection: collection
|
|
|
54
75
|
projection: buildProjectionFromSelect({
|
|
55
76
|
adapter: this,
|
|
56
77
|
fields,
|
|
57
|
-
select
|
|
78
|
+
select: withBranchVersionSelect({
|
|
79
|
+
branch,
|
|
80
|
+
collectionSlug,
|
|
81
|
+
req,
|
|
82
|
+
select
|
|
83
|
+
})
|
|
58
84
|
}),
|
|
59
85
|
sort,
|
|
60
86
|
useEstimatedCount
|
|
@@ -102,13 +128,31 @@ export const findVersions = async function findVersions({ collection: collection
|
|
|
102
128
|
paginationOptions.pagination = false;
|
|
103
129
|
}
|
|
104
130
|
}
|
|
105
|
-
const result = await
|
|
131
|
+
const result = branchVisibility.length ? await aggregatePaginate({
|
|
132
|
+
adapter: this,
|
|
133
|
+
branchVisibility,
|
|
134
|
+
collation: paginationOptions.collation,
|
|
135
|
+
limit: paginationOptions.limit,
|
|
136
|
+
Model,
|
|
137
|
+
page: paginationOptions.page,
|
|
138
|
+
pagination: paginationOptions.pagination,
|
|
139
|
+
projection: paginationOptions.projection,
|
|
140
|
+
query,
|
|
141
|
+
session: paginationOptions.options?.session ?? undefined,
|
|
142
|
+
sort: paginationOptions.sort,
|
|
143
|
+
useEstimatedCount: false
|
|
144
|
+
}) : await Model.paginate(query, paginationOptions);
|
|
106
145
|
transform({
|
|
107
146
|
adapter: this,
|
|
108
147
|
data: result.docs,
|
|
109
148
|
fields: buildVersionCollectionFields(this.payload.config, collectionConfig),
|
|
110
149
|
operation: 'read'
|
|
111
150
|
});
|
|
151
|
+
if (branchReadState.useBranching) {
|
|
152
|
+
// A branch version hangs off the shadow row, so its `parent` is that row rather
|
|
153
|
+
// than the document the history belongs to.
|
|
154
|
+
projectBranchVersionParents(result.docs);
|
|
155
|
+
}
|
|
112
156
|
return result;
|
|
113
157
|
};
|
|
114
158
|
|
package/dist/findVersions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { PaginateOptions, QueryOptions } from 'mongoose'\nimport type { FindVersions } from 'payload'\n\nimport { buildVersionCollectionFields, flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const findVersions: FindVersions = async function findVersions(\n this: MongooseAdapter,\n {\n collection: collectionSlug,\n limit = 0,\n locale,\n page,\n pagination,\n req = {},\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n let sort\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale,\n sort: sortArg || '-updatedAt',\n timestamps: true,\n })\n }\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const query = await buildQuery({\n adapter: this,\n fields,\n locale,\n where,\n })\n\n const session = await getSession(this, req)\n // Calculate skip from page for cases where pagination is disabled but offset is still needed\n const skip = typeof page === 'number' && page > 1 ? (page - 1) * (limit || 0) : undefined\n const options: QueryOptions = {\n limit,\n session,\n skip,\n }\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 = hasNearConstraint || !query || Object.keys(query).length === 0\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n limit,\n options,\n page,\n pagination,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields,\n select,\n }),\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const localizationConfig = this.payload.config.localization\n const defaultLocale =\n (typeof localizationConfig === 'object' && localizationConfig?.defaultLocale) || 'en'\n\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n hint: { _id: 1 },\n session,\n }),\n )\n }\n } else if (!useEstimatedCount && this.collation) {\n // Workaround for mongoose-paginate-v2 bug: chaining .collation() on countDocuments breaks\n // session context in transactions (mongoose 8.x). Provide custom count function that passes\n // collation as an option instead. See: https://github.com/aravindnc/mongoose-paginate-v2/pull/240\n // TODO: Remove this workaround once mongoose-paginate-v2 is updated with the fix.\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n session,\n }),\n )\n }\n }\n\n if (limit >= 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n\n // Disable pagination if limit is 0\n if (limit === 0) {\n paginationOptions.pagination = false\n }\n }\n\n const result = await Model.paginate(query, paginationOptions)\n\n transform({\n adapter: this,\n data: result.docs,\n fields: buildVersionCollectionFields(this.payload.config, collectionConfig),\n operation: 'read',\n })\n\n return result\n}\n"],"names":["buildVersionCollectionFields","flattenWhereToOperators","buildQuery","buildSortParam","buildProjectionFromSelect","getCollection","getSession","transform","findVersions","collection","collectionSlug","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","Model","adapter","versions","hasNearConstraint","constraints","some","prop","Object","keys","key","config","payload","fields","flattenedFields","timestamps","query","session","skip","undefined","options","useEstimatedCount","length","paginationOptions","lean","leanWithId","projection","collation","localizationConfig","localization","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","paginate","data","docs","operation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { PaginateOptions, QueryOptions } from 'mongoose'\nimport type { FindVersions } from 'payload'\n\nimport {\n buildVersionCollectionFields,\n flattenWhereToOperators,\n projectBranchVersionParents,\n resolveBranchReadState,\n resolveBranchVersionHistoryQuery,\n rewriteBranchVersionParents,\n withBranchVersionSelect,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildBranchVisibilityStages } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { aggregatePaginate } from './utilities/aggregatePaginate.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\nimport { transform } from './utilities/transform.js'\n\nexport const findVersions: FindVersions = async function findVersions(\n this: MongooseAdapter,\n {\n branch,\n collection: collectionSlug,\n limit = 0,\n locale,\n page,\n pagination,\n req = {},\n select,\n sort: sortArg,\n where = {},\n },\n) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug,\n versions: true,\n })\n const branchReadState = resolveBranchReadState({ branch, collectionSlug, req })\n\n where = branchReadState.useBranching\n ? (rewriteBranchVersionParents(where) ?? {})\n : ((await resolveBranchVersionHistoryQuery({ branch, collectionSlug, req, where })) ?? {})\n const branchVisibility = branchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug,\n mode: 'history',\n })\n : []\n\n let hasNearConstraint = false\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n let sort\n if (!hasNearConstraint) {\n sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale,\n sort: sortArg || '-updatedAt',\n timestamps: true,\n })\n }\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const query = await buildQuery({\n adapter: this,\n branch,\n fields,\n locale,\n req,\n where,\n })\n\n const session = await getSession(this, req)\n // Calculate skip from page for cases where pagination is disabled but offset is still needed\n const skip = typeof page === 'number' && page > 1 ? (page - 1) * (limit || 0) : undefined\n const options: QueryOptions = {\n limit,\n session,\n skip,\n }\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 !branchVisibility.length && (hasNearConstraint || !query || Object.keys(query).length === 0)\n const paginationOptions: PaginateOptions = {\n lean: true,\n leanWithId: true,\n limit,\n options,\n page,\n pagination,\n projection: buildProjectionFromSelect({\n adapter: this,\n fields,\n select: withBranchVersionSelect({ branch, collectionSlug, req, select }),\n }),\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const localizationConfig = this.payload.config.localization\n const defaultLocale =\n (typeof localizationConfig === 'object' && localizationConfig?.defaultLocale) || 'en'\n\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (!useEstimatedCount && Object.keys(query).length === 0 && this.disableIndexHints !== true) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n hint: { _id: 1 },\n session,\n }),\n )\n }\n } else if (!useEstimatedCount && this.collation) {\n // Workaround for mongoose-paginate-v2 bug: chaining .collation() on countDocuments breaks\n // session context in transactions (mongoose 8.x). Provide custom count function that passes\n // collation as an option instead. See: https://github.com/aravindnc/mongoose-paginate-v2/pull/240\n // TODO: Remove this workaround once mongoose-paginate-v2 is updated with the fix.\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n Model.countDocuments(query, {\n collation: paginationOptions.collation,\n session,\n }),\n )\n }\n }\n\n if (limit >= 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n\n paginationOptions.options!.limit = limit\n\n // Disable pagination if limit is 0\n if (limit === 0) {\n paginationOptions.pagination = false\n }\n }\n\n const result = branchVisibility.length\n ? await aggregatePaginate({\n adapter: this,\n branchVisibility,\n collation: paginationOptions.collation,\n limit: paginationOptions.limit,\n Model,\n page: paginationOptions.page,\n pagination: paginationOptions.pagination,\n projection: paginationOptions.projection,\n query,\n session: paginationOptions.options?.session ?? undefined,\n sort: paginationOptions.sort as object,\n useEstimatedCount: false,\n })\n : await Model.paginate(query, paginationOptions)\n\n transform({\n adapter: this,\n data: result.docs,\n fields: buildVersionCollectionFields(this.payload.config, collectionConfig),\n operation: 'read',\n })\n\n if (branchReadState.useBranching) {\n // A branch version hangs off the shadow row, so its `parent` is that row rather\n // than the document the history belongs to.\n projectBranchVersionParents(result.docs as Record<string, unknown>[])\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","flattenWhereToOperators","projectBranchVersionParents","resolveBranchReadState","resolveBranchVersionHistoryQuery","rewriteBranchVersionParents","withBranchVersionSelect","buildBranchVisibilityStages","buildQuery","buildSortParam","aggregatePaginate","buildProjectionFromSelect","getCollection","getSession","transform","findVersions","branch","collection","collectionSlug","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","Model","adapter","versions","branchReadState","useBranching","branchVisibility","mode","hasNearConstraint","constraints","some","prop","Object","keys","key","config","payload","fields","flattenedFields","timestamps","query","session","skip","undefined","options","useEstimatedCount","length","paginationOptions","lean","leanWithId","projection","collation","localizationConfig","localization","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","paginate","data","docs","operation"],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,EAEV,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,EAEV,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAqCnB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEhE,MAAM,WAAW,IAAI;IACnB,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1E,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACxE;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;OAMG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IAEzC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;IAE5C,wBAAwB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAA;IACzE,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,gOAAgO;IAChO,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;IACtC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAEpC,kBAAkB,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAA;IAE/C,qFAAqF;IACrF,GAAG,EAAE,KAAK,GAAG,MAAM,CAAA;IAEnB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAA;IAEpC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1E,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACxE,+BAA+B,EAAE,OAAO,CAAA;IACxC,WAAW,EAAE;QACX,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;KAChC,CAAA;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,iBAAiB,EAAE,kBAAkB,CAAA;IACrC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC3C,EAAE,CAAA;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,CAAA;IAChD,0BAA0B,EAAE,OAAO,CAAA;IACnC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,uBAAuB,EAAE,OAAO,CAAA;IAChC,QAAQ,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;KAChC,CAAA;CACF,GAAG,IAAI,GACN,mBAAmB,CAAA;AAErB,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAiB,eACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAC3C,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAC5B,WAAW,EAAE;YACX,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;SAChC,CAAA;QACD,UAAU,EAAE,UAAU,CAAA;QACtB,aAAa,EAAE,OAAO,CAAA;QACtB,OAAO,EAAE,WAAW,CAAA;QACpB,iBAAiB,EAAE,kBAAkB,CAAA;QACrC,cAAc,CAAC,EAAE;YACf,IAAI,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9C,IAAI,EAAE,MAAM,CAAA;YACZ,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;SAC3C,EAAE,CAAA;QACH,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,CAAA;QAChD,kBAAkB,EAAE,kBAAkB,CAAA;QACtC,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,YAAY,CAAA;SAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,KACnD,OAAO,CAAC,CAAC,CAAC,CAAA;QACf,mBAAmB,EAAE,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EACrD,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,YAAY,CAAA;SAAE,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAC1D,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhC,SAAS,EAAE,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,YAAY,CAAA;SAAE,GAAG,aAAa,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;QAClF,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAC/C,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,YAAY,CAAA;SAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,KACpD,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,0BAA0B,EAAE,OAAO,CAAA;QACnC,qBAAqB,EAAE,OAAO,CAAA;QAC9B,mBAAmB,EAAE,OAAO,CAAA;QAC5B,uBAAuB,EAAE,OAAO,CAAA;QAChC,QAAQ,EAAE;YACR,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;SAChC,CAAA;KACF;CACF;AAED,wBAAgB,eAAe,CAAC,EAC9B,qBAAqB,EACrB,mBAAmB,EACnB,mBAA2B,EAC3B,eAAuB,EACvB,iBAAwB,EACxB,+BAAuC,EACvC,SAAS,EACT,wBAA6B,EAC7B,cAAc,EACd,mBAA2B,EAC3B,iBAAyB,EACzB,aAAqB,EACrB,YAAY,EAAE,eAAe,EAC7B,iBAAiB,EACjB,cAAc,EACd,kBAAuB,EACvB,GAAG,EACH,0BAAkC,EAClC,qBAA6B,EAC7B,mBAA0B,EAC1B,uBAA8B,GAC/B,EAAE,IAAI,GAAG,kBAAkB,CAqF3B;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA"}
|