payload 4.0.0-internal.293e026 → 4.0.0-internal.2fddfc0
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/admin/fields/Row.d.ts +2 -2
- package/dist/admin/fields/Row.d.ts.map +1 -1
- package/dist/admin/fields/Row.js.map +1 -1
- package/dist/admin/forms/Description.d.ts +2 -2
- package/dist/admin/forms/Description.d.ts.map +1 -1
- package/dist/admin/forms/Description.js.map +1 -1
- package/dist/admin/forms/Field.d.ts +1 -3
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/types.d.ts +1 -1
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/document.d.ts +0 -4
- package/dist/admin/views/document.d.ts.map +1 -1
- package/dist/admin/views/document.js.map +1 -1
- package/dist/admin/views/list.d.ts +5 -0
- package/dist/admin/views/list.d.ts.map +1 -1
- package/dist/admin/views/list.js.map +1 -1
- package/dist/auth/baseFields/apiKey.d.ts +10 -2
- package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
- package/dist/auth/baseFields/apiKey.js +35 -24
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/getAuthFields.js +2 -2
- package/dist/auth/getAuthFields.js.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.js +1 -0
- package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.js +12 -0
- package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +1 -11
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +1 -0
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/endpoints/create.d.ts.map +1 -1
- package/dist/collections/endpoints/create.js +0 -2
- package/dist/collections/endpoints/create.js.map +1 -1
- package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
- package/dist/collections/endpoints/updateByID.js +1 -2
- package/dist/collections/endpoints/updateByID.js.map +1 -1
- package/dist/collections/operations/count.d.ts.map +1 -1
- package/dist/collections/operations/count.js +1 -0
- package/dist/collections/operations/count.js.map +1 -1
- package/dist/collections/operations/create.d.ts +0 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +14 -6
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +4 -8
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +1 -2
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/update.d.ts +0 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +8 -4
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +0 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +1 -5
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
- package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
- package/dist/collections/operations/utilities/update.d.ts +1 -2
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +48 -57
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +23 -0
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/config/types.d.ts +14 -17
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +1 -0
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/exports/migrations.d.ts +5 -13
- package/dist/exports/migrations.d.ts.map +1 -1
- package/dist/exports/migrations.js +5 -13
- package/dist/exports/migrations.js.map +1 -1
- package/dist/exports/shared.d.ts +1 -1
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +1 -1
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +10 -3
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +1 -6
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/endpoints/update.d.ts.map +1 -1
- package/dist/globals/endpoints/update.js +0 -2
- package/dist/globals/endpoints/update.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +4 -6
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +1 -2
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/update.d.ts +0 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +52 -58
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.bundled.d.ts +123 -107
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/query-presets/config.d.ts.map +1 -1
- package/dist/query-presets/config.js +73 -34
- package/dist/query-presets/config.js.map +1 -1
- package/dist/query-presets/constraints.d.ts.map +1 -1
- package/dist/query-presets/constraints.js +2 -1
- package/dist/query-presets/constraints.js.map +1 -1
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +8 -0
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/getFieldByPath.d.ts.map +1 -1
- package/dist/utilities/getFieldByPath.js.map +1 -1
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/mergeLocalizedData.d.ts +14 -4
- package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
- package/dist/utilities/mergeLocalizedData.js +49 -34
- package/dist/utilities/mergeLocalizedData.js.map +1 -1
- package/dist/utilities/mergeLocalizedData.spec.js +23 -23
- package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
- package/dist/utilities/parseParams/index.d.ts +2 -5
- package/dist/utilities/parseParams/index.d.ts.map +1 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseParams/index.spec.js +0 -9
- package/dist/utilities/parseParams/index.spec.js.map +1 -1
- package/dist/utilities/traverseFields.d.ts.map +1 -1
- package/dist/utilities/traverseFields.js.map +1 -1
- package/dist/versions/baseFields.d.ts +1 -2
- package/dist/versions/baseFields.d.ts.map +1 -1
- package/dist/versions/baseFields.js +0 -13
- package/dist/versions/baseFields.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -2
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -2
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
- package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
- package/dist/versions/buildSingleLocalePublishData.js +37 -0
- package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
- package/dist/versions/saveVersion.d.ts +0 -2
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +12 -17
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/schedule/job.d.ts.map +1 -1
- package/dist/versions/schedule/job.js +2 -9
- package/dist/versions/schedule/job.js.map +1 -1
- package/dist/versions/types.d.ts +2 -15
- package/dist/versions/types.d.ts.map +1 -1
- package/dist/versions/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
- package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
- package/dist/database/migrations/templates/localizeStatus.js +0 -54
- package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
- package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/index.js +0 -33
- package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
- package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
- package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
- package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
- package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
- package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
- package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
- package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
- package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
- package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
- package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
- package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
- package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
- package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
- package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
- package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
- package/dist/versions/saveSnapshot.d.ts +0 -18
- package/dist/versions/saveSnapshot.d.ts.map +0 -1
- package/dist/versions/saveSnapshot.js +0 -38
- package/dist/versions/saveSnapshot.js.map +0 -1
|
@@ -16,7 +16,6 @@ export type Arguments<TSlug extends CollectionSlug> = {
|
|
|
16
16
|
overwriteExistingFiles?: boolean;
|
|
17
17
|
populate?: PopulateType;
|
|
18
18
|
publishAllLocales?: boolean;
|
|
19
|
-
publishSpecificLocale?: string;
|
|
20
19
|
req: PayloadRequest;
|
|
21
20
|
showHiddenFields?: boolean;
|
|
22
21
|
trash?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAc5F,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,
|
|
1
|
+
{"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAc5F,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,GAAG,UAAU,EAE5D,cAAc,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA0MvD,CAAA"}
|
|
@@ -29,10 +29,7 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
29
29
|
operation: 'update',
|
|
30
30
|
overrideAccess: args.overrideAccess
|
|
31
31
|
});
|
|
32
|
-
|
|
33
|
-
args.req.locale = args.publishSpecificLocale;
|
|
34
|
-
}
|
|
35
|
-
const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales } = args;
|
|
32
|
+
const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales } = args;
|
|
36
33
|
if (!id) {
|
|
37
34
|
throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST);
|
|
38
35
|
}
|
|
@@ -133,7 +130,6 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
133
130
|
payload,
|
|
134
131
|
populate,
|
|
135
132
|
publishAllLocales,
|
|
136
|
-
publishSpecificLocale,
|
|
137
133
|
req,
|
|
138
134
|
select: select,
|
|
139
135
|
showHiddenFields: showHiddenFields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n const { data } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess({ data, req }, collectionConfig.access.delete)\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","initTransaction","killTransaction","resolveSelect","sanitizeSelect","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","publishSpecificLocale","locale","id","autosave","collectionConfig","depth","draft","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocales","fallbackLocale","payload","select","incomingSelect","showHiddenFields","trash","unpublishAllLocales","BAD_REQUEST","data","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","newFileData","files","filesToUpload","throwOnMissingFile","fields","flattenedFields","result","auth","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n const { data } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess({ data, req }, collectionConfig.access.delete)\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","initTransaction","killTransaction","resolveSelect","sanitizeSelect","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","id","autosave","collectionConfig","depth","draft","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocales","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","unpublishAllLocales","BAD_REQUEST","data","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","newFileData","files","filesToUpload","throwOnMissingFile","fields","flattenedFields","result","auth","error"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SanitizedConfig } from '../../../config/types.js';
|
|
2
|
+
import type { Field } from '../../../fields/config/types.js';
|
|
3
|
+
export declare const copyDataWithFreshRowIDs: ({ config, data, existingDoc, fields, }: {
|
|
4
|
+
config: SanitizedConfig;
|
|
5
|
+
data: Record<string, unknown>;
|
|
6
|
+
existingDoc: Record<string, unknown>;
|
|
7
|
+
fields: Field[];
|
|
8
|
+
}) => Record<string, unknown>;
|
|
9
|
+
//# sourceMappingURL=copyDataWithFreshRowIDs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyDataWithFreshRowIDs.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/copyDataWithFreshRowIDs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAkC,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAwP5F,eAAO,MAAM,uBAAuB,GAAI,wCAKrC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAUzB,CAAA"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { tabHasName } from '../../../fields/config/types.js';
|
|
2
|
+
import { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js';
|
|
3
|
+
import { traverseFields } from '../../../utilities/traverseFields.js';
|
|
4
|
+
const buildLevelMap = (fields, map = new Map())=>{
|
|
5
|
+
for (const field of fields){
|
|
6
|
+
if (field.type === 'row' || field.type === 'collapsible') {
|
|
7
|
+
buildLevelMap(field.fields, map);
|
|
8
|
+
} else if (field.type === 'tabs') {
|
|
9
|
+
for (const tab of field.tabs){
|
|
10
|
+
if (tabHasName(tab)) {
|
|
11
|
+
map.set(tab.name, {
|
|
12
|
+
type: 'subfields',
|
|
13
|
+
fields: tab.fields,
|
|
14
|
+
localized: Boolean(tab.localized)
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
buildLevelMap(tab.fields, map);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
} else if (field.type === 'group') {
|
|
21
|
+
if ('name' in field && field.name) {
|
|
22
|
+
map.set(field.name, {
|
|
23
|
+
type: 'subfields',
|
|
24
|
+
fields: field.fields,
|
|
25
|
+
localized: Boolean(field.localized)
|
|
26
|
+
});
|
|
27
|
+
} else {
|
|
28
|
+
buildLevelMap(field.fields, map);
|
|
29
|
+
}
|
|
30
|
+
} else if ((field.type === 'array' || field.type === 'blocks') && field.name) {
|
|
31
|
+
map.set(field.name, {
|
|
32
|
+
type: 'rows',
|
|
33
|
+
field,
|
|
34
|
+
localized: Boolean(field.localized)
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return map;
|
|
39
|
+
};
|
|
40
|
+
const isLocaleKeyed = (value, config)=>{
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const localeCodes = config.localization ? config.localization.localeCodes : [];
|
|
45
|
+
const keys = Object.keys(value);
|
|
46
|
+
return keys.length > 0 && keys.every((key)=>localeCodes.includes(key));
|
|
47
|
+
};
|
|
48
|
+
const resolveBlockFields = (field, blockType, config)=>{
|
|
49
|
+
if (typeof blockType !== 'string') {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
const block = config.blocks?.find((b)=>b.slug === blockType) ?? field.blocks.find((b)=>typeof b !== 'string' && b.slug === blockType);
|
|
53
|
+
return block?.fields ?? [];
|
|
54
|
+
};
|
|
55
|
+
const copyRow = ({ config, existingRowIDs, field, parentIsLocalized, row })=>{
|
|
56
|
+
if (!row || typeof row !== 'object') {
|
|
57
|
+
return deepCopyObjectSimple(row);
|
|
58
|
+
}
|
|
59
|
+
const subfields = field.type === 'array' ? field.fields : resolveBlockFields(field, row.blockType, config);
|
|
60
|
+
const newRow = copyObject({
|
|
61
|
+
config,
|
|
62
|
+
data: row,
|
|
63
|
+
existingRowIDs,
|
|
64
|
+
fields: subfields,
|
|
65
|
+
parentIsLocalized
|
|
66
|
+
});
|
|
67
|
+
if (typeof newRow.id === 'string' && !existingRowIDs.has(newRow.id)) {
|
|
68
|
+
delete newRow.id;
|
|
69
|
+
}
|
|
70
|
+
return newRow;
|
|
71
|
+
};
|
|
72
|
+
const copyObject = ({ config, data, existingRowIDs, fields, parentIsLocalized })=>{
|
|
73
|
+
const levelMap = buildLevelMap(fields);
|
|
74
|
+
const result = {};
|
|
75
|
+
for (const key of Object.keys(data)){
|
|
76
|
+
const value = data[key];
|
|
77
|
+
const entry = levelMap.get(key);
|
|
78
|
+
if (!entry || value === null || typeof value !== 'object') {
|
|
79
|
+
result[key] = deepCopyObjectSimple(value);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const childParentIsLocalized = parentIsLocalized || entry.localized;
|
|
83
|
+
if (entry.type === 'subfields') {
|
|
84
|
+
const valueIsLocaleKeyed = entry.localized && !parentIsLocalized && isLocaleKeyed(value, config);
|
|
85
|
+
result[key] = valueIsLocaleKeyed ? mapLocales(value, (localeValue)=>copyObject({
|
|
86
|
+
config,
|
|
87
|
+
data: localeValue,
|
|
88
|
+
existingRowIDs,
|
|
89
|
+
fields: entry.fields,
|
|
90
|
+
parentIsLocalized: true
|
|
91
|
+
})) : copyObject({
|
|
92
|
+
config,
|
|
93
|
+
data: value,
|
|
94
|
+
existingRowIDs,
|
|
95
|
+
fields: entry.fields,
|
|
96
|
+
parentIsLocalized: childParentIsLocalized
|
|
97
|
+
});
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const copyRows = (rows)=>Array.isArray(rows) ? rows.map((row)=>copyRow({
|
|
101
|
+
config,
|
|
102
|
+
existingRowIDs,
|
|
103
|
+
field: entry.field,
|
|
104
|
+
parentIsLocalized: childParentIsLocalized,
|
|
105
|
+
row
|
|
106
|
+
})) : deepCopyObjectSimple(rows);
|
|
107
|
+
result[key] = Array.isArray(value) ? copyRows(value) : mapLocales(value, copyRows);
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
};
|
|
111
|
+
const mapLocales = (value, copyLocaleValue)=>{
|
|
112
|
+
if (Array.isArray(value)) {
|
|
113
|
+
return deepCopyObjectSimple(value);
|
|
114
|
+
}
|
|
115
|
+
const out = {};
|
|
116
|
+
for (const locale of Object.keys(value)){
|
|
117
|
+
const localeValue = value[locale];
|
|
118
|
+
out[locale] = localeValue && typeof localeValue === 'object' ? copyLocaleValue(localeValue) : deepCopyObjectSimple(localeValue);
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
};
|
|
122
|
+
const collectExistingRowIDs = ({ config, existingDoc, fields })=>{
|
|
123
|
+
const existingRowIDs = new Set();
|
|
124
|
+
traverseFields({
|
|
125
|
+
callback: ({ field, ref })=>{
|
|
126
|
+
if (field.type !== 'array' && field.type !== 'blocks' || !('name' in field) || !field.name || !ref || typeof ref !== 'object') {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const value = ref[field.name];
|
|
130
|
+
const visitRows = (rows)=>{
|
|
131
|
+
if (!Array.isArray(rows)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
for (const row of rows){
|
|
135
|
+
if (row && typeof row === 'object' && typeof row.id === 'string') {
|
|
136
|
+
existingRowIDs.add(row.id);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
if (Array.isArray(value)) {
|
|
141
|
+
visitRows(value);
|
|
142
|
+
} else if (value && typeof value === 'object') {
|
|
143
|
+
for (const localeValue of Object.values(value)){
|
|
144
|
+
visitRows(localeValue);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
config,
|
|
149
|
+
fields,
|
|
150
|
+
fillEmpty: false,
|
|
151
|
+
ref: existingDoc
|
|
152
|
+
});
|
|
153
|
+
return existingRowIDs;
|
|
154
|
+
};
|
|
155
|
+
export const copyDataWithFreshRowIDs = ({ config, data, existingDoc, fields })=>{
|
|
156
|
+
const existingRowIDs = collectExistingRowIDs({
|
|
157
|
+
config,
|
|
158
|
+
existingDoc,
|
|
159
|
+
fields
|
|
160
|
+
});
|
|
161
|
+
return copyObject({
|
|
162
|
+
config,
|
|
163
|
+
data,
|
|
164
|
+
existingRowIDs,
|
|
165
|
+
fields,
|
|
166
|
+
parentIsLocalized: false
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
//# sourceMappingURL=copyDataWithFreshRowIDs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/collections/operations/utilities/copyDataWithFreshRowIDs.ts"],"sourcesContent":["import type { SanitizedConfig } from '../../../config/types.js'\nimport type { ArrayField, Block, BlocksField, Field } from '../../../fields/config/types.js'\n\nimport { tabHasName } from '../../../fields/config/types.js'\nimport { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from '../../../utilities/traverseFields.js'\n\ntype LevelEntry =\n | { field: ArrayField | BlocksField; localized: boolean; type: 'rows' }\n | { fields: Field[]; localized: boolean; type: 'subfields' }\n\nconst buildLevelMap = (fields: Field[], map: Map<string, LevelEntry> = new Map()) => {\n for (const field of fields) {\n if (field.type === 'row' || field.type === 'collapsible') {\n buildLevelMap(field.fields, map)\n } else if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n map.set(tab.name, {\n type: 'subfields',\n fields: tab.fields,\n localized: Boolean(tab.localized),\n })\n } else {\n buildLevelMap(tab.fields, map)\n }\n }\n } else if (field.type === 'group') {\n if ('name' in field && field.name) {\n map.set(field.name, {\n type: 'subfields',\n fields: field.fields,\n localized: Boolean(field.localized),\n })\n } else {\n buildLevelMap(field.fields, map)\n }\n } else if ((field.type === 'array' || field.type === 'blocks') && field.name) {\n map.set(field.name, { type: 'rows', field, localized: Boolean(field.localized) })\n }\n }\n return map\n}\n\nconst isLocaleKeyed = (value: object, config: SanitizedConfig): boolean => {\n if (Array.isArray(value)) {\n return false\n }\n const localeCodes = config.localization ? config.localization.localeCodes : []\n const keys = Object.keys(value)\n return keys.length > 0 && keys.every((key) => localeCodes.includes(key))\n}\n\nconst resolveBlockFields = (\n field: BlocksField,\n blockType: unknown,\n config: SanitizedConfig,\n): Field[] => {\n if (typeof blockType !== 'string') {\n return []\n }\n const block =\n config.blocks?.find((b) => b.slug === blockType) ??\n field.blocks.find((b): b is Block => typeof b !== 'string' && b.slug === blockType)\n return block?.fields ?? []\n}\n\nconst copyRow = ({\n config,\n existingRowIDs,\n field,\n parentIsLocalized,\n row,\n}: {\n config: SanitizedConfig\n existingRowIDs: Set<string>\n field: ArrayField | BlocksField\n parentIsLocalized: boolean\n row: unknown\n}): unknown => {\n if (!row || typeof row !== 'object') {\n return deepCopyObjectSimple(row as never)\n }\n\n const subfields =\n field.type === 'array'\n ? field.fields\n : resolveBlockFields(field, (row as Record<string, unknown>).blockType, config)\n\n const newRow = copyObject({\n config,\n data: row as Record<string, unknown>,\n existingRowIDs,\n fields: subfields,\n parentIsLocalized,\n })\n\n if (typeof newRow.id === 'string' && !existingRowIDs.has(newRow.id)) {\n delete newRow.id\n }\n\n return newRow\n}\n\nconst copyObject = ({\n config,\n data,\n existingRowIDs,\n fields,\n parentIsLocalized,\n}: {\n config: SanitizedConfig\n data: Record<string, unknown>\n existingRowIDs: Set<string>\n fields: Field[]\n parentIsLocalized: boolean\n}): Record<string, unknown> => {\n const levelMap = buildLevelMap(fields)\n const result: Record<string, unknown> = {}\n\n for (const key of Object.keys(data)) {\n const value = data[key]\n const entry = levelMap.get(key)\n\n if (!entry || value === null || typeof value !== 'object') {\n result[key] = deepCopyObjectSimple(value as never)\n continue\n }\n\n const childParentIsLocalized = parentIsLocalized || entry.localized\n\n if (entry.type === 'subfields') {\n const valueIsLocaleKeyed =\n entry.localized && !parentIsLocalized && isLocaleKeyed(value, config)\n\n result[key] = valueIsLocaleKeyed\n ? mapLocales(value, (localeValue) =>\n copyObject({\n config,\n data: localeValue,\n existingRowIDs,\n fields: entry.fields,\n parentIsLocalized: true,\n }),\n )\n : copyObject({\n config,\n data: value as Record<string, unknown>,\n existingRowIDs,\n fields: entry.fields,\n parentIsLocalized: childParentIsLocalized,\n })\n continue\n }\n\n const copyRows = (rows: unknown) =>\n Array.isArray(rows)\n ? rows.map((row) =>\n copyRow({\n config,\n existingRowIDs,\n field: entry.field,\n parentIsLocalized: childParentIsLocalized,\n row,\n }),\n )\n : deepCopyObjectSimple(rows as never)\n\n result[key] = Array.isArray(value) ? copyRows(value) : mapLocales(value, copyRows)\n }\n\n return result\n}\n\nconst mapLocales = (\n value: object,\n copyLocaleValue: (localeValue: Record<string, unknown>) => unknown,\n): unknown => {\n if (Array.isArray(value)) {\n return deepCopyObjectSimple(value as never)\n }\n const out: Record<string, unknown> = {}\n for (const locale of Object.keys(value)) {\n const localeValue = (value as Record<string, unknown>)[locale]\n out[locale] =\n localeValue && typeof localeValue === 'object'\n ? copyLocaleValue(localeValue as Record<string, unknown>)\n : deepCopyObjectSimple(localeValue as never)\n }\n return out\n}\n\nconst collectExistingRowIDs = ({\n config,\n existingDoc,\n fields,\n}: {\n config: SanitizedConfig\n existingDoc: Record<string, unknown>\n fields: Field[]\n}): Set<string> => {\n const existingRowIDs = new Set<string>()\n\n traverseFields({\n callback: ({ field, ref }) => {\n if (\n (field.type !== 'array' && field.type !== 'blocks') ||\n !('name' in field) ||\n !field.name ||\n !ref ||\n typeof ref !== 'object'\n ) {\n return\n }\n\n const value = (ref as Record<string, unknown>)[field.name]\n\n const visitRows = (rows: unknown) => {\n if (!Array.isArray(rows)) {\n return\n }\n for (const row of rows) {\n if (\n row &&\n typeof row === 'object' &&\n typeof (row as Record<string, unknown>).id === 'string'\n ) {\n existingRowIDs.add((row as Record<string, unknown>).id as string)\n }\n }\n }\n\n if (Array.isArray(value)) {\n visitRows(value)\n } else if (value && typeof value === 'object') {\n for (const localeValue of Object.values(value as Record<string, unknown>)) {\n visitRows(localeValue)\n }\n }\n },\n config,\n fields,\n fillEmpty: false,\n ref: existingDoc,\n })\n\n return existingRowIDs\n}\n\nexport const copyDataWithFreshRowIDs = ({\n config,\n data,\n existingDoc,\n fields,\n}: {\n config: SanitizedConfig\n data: Record<string, unknown>\n existingDoc: Record<string, unknown>\n fields: Field[]\n}): Record<string, unknown> => {\n const existingRowIDs = collectExistingRowIDs({ config, existingDoc, fields })\n\n return copyObject({\n config,\n data,\n existingRowIDs,\n fields,\n parentIsLocalized: false,\n })\n}\n"],"names":["tabHasName","deepCopyObjectSimple","traverseFields","buildLevelMap","fields","map","Map","field","type","tab","tabs","set","name","localized","Boolean","isLocaleKeyed","value","config","Array","isArray","localeCodes","localization","keys","Object","length","every","key","includes","resolveBlockFields","blockType","block","blocks","find","b","slug","copyRow","existingRowIDs","parentIsLocalized","row","subfields","newRow","copyObject","data","id","has","levelMap","result","entry","get","childParentIsLocalized","valueIsLocaleKeyed","mapLocales","localeValue","copyRows","rows","copyLocaleValue","out","locale","collectExistingRowIDs","existingDoc","Set","callback","ref","visitRows","add","values","fillEmpty","copyDataWithFreshRowIDs"],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ export type SharedUpdateDocumentArgs<TSlug extends CollectionSlug> = {
|
|
|
19
19
|
payload: Payload;
|
|
20
20
|
populate?: PopulateType;
|
|
21
21
|
publishAllLocales?: boolean;
|
|
22
|
-
publishSpecificLocale?: string;
|
|
23
22
|
req: PayloadRequest;
|
|
24
23
|
select: SelectType;
|
|
25
24
|
showHiddenFields: boolean;
|
|
@@ -38,5 +37,5 @@ export type SharedUpdateDocumentArgs<TSlug extends CollectionSlug> = {
|
|
|
38
37
|
* - afterChange - Fields
|
|
39
38
|
* - afterChange - Collection
|
|
40
39
|
*/
|
|
41
|
-
export declare const updateDocument: <TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug> = SelectType>({ id, autosave, collectionConfig, config, data, depth, docWithLocales, draftArg, fallbackLocale, filesToUpload, locale, overrideAccess, overrideLock, payload, populate, publishAllLocales: publishAllLocalesArg,
|
|
40
|
+
export declare const updateDocument: <TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug<TSlug> = SelectType>({ id, autosave, collectionConfig, config, data, depth, docWithLocales, draftArg, fallbackLocale, filesToUpload, locale, overrideAccess, overrideLock, payload, populate, publishAllLocales: publishAllLocalesArg, req, select, showHiddenFields, unpublishAllLocales: unpublishAllLocalesArg, }: SharedUpdateDocumentArgs<TSlug>) => Promise<TransformCollectionWithSelect<TSlug, TSelect>>;
|
|
42
41
|
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,cAAc,IAAI;IACnE,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,UAAU,GAAG,UAAU,CAAA;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,mBAAmB,CAAA;IACnC,aAAa,EAAE,UAAU,EAAE,CAAA;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,cAAc,IAAI;IACnE,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,UAAU,GAAG,UAAU,CAAA;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,mBAAmB,CAAA;IACnC,aAAa,EAAE,UAAU,EAAE,CAAA;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,GAAG,UAAU,EAC5D,iSAqBC,wBAAwB,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA2XzF,CAAA"}
|
|
@@ -4,12 +4,12 @@ import { afterChange } from '../../../fields/hooks/afterChange/index.js';
|
|
|
4
4
|
import { afterRead } from '../../../fields/hooks/afterRead/index.js';
|
|
5
5
|
import { beforeChange } from '../../../fields/hooks/beforeChange/index.js';
|
|
6
6
|
import { beforeValidate } from '../../../fields/hooks/beforeValidate/index.js';
|
|
7
|
-
import { deepCopyObjectSimple,
|
|
7
|
+
import { deepCopyObjectSimple, saveVersion } from '../../../index.js';
|
|
8
8
|
import { deleteAssociatedFiles } from '../../../uploads/deleteAssociatedFiles.js';
|
|
9
9
|
import { uploadFiles } from '../../../uploads/uploadFiles.js';
|
|
10
10
|
import { checkDocumentLockStatus } from '../../../utilities/checkDocumentLockStatus.js';
|
|
11
11
|
import { hasDraftsEnabled, hasDraftValidationEnabled, hasLocalizeStatusEnabled } from '../../../utilities/getVersionsConfig.js';
|
|
12
|
-
import {
|
|
12
|
+
import { buildLocalizedPublishData } from '../../../versions/buildSingleLocalePublishData.js';
|
|
13
13
|
/**
|
|
14
14
|
* This function is used to update a document in the DB and return the result.
|
|
15
15
|
*
|
|
@@ -22,9 +22,9 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
22
22
|
* - afterRead - Collection
|
|
23
23
|
* - afterChange - Fields
|
|
24
24
|
* - afterChange - Collection
|
|
25
|
-
*/ export const updateDocument = async ({ id, autosave, collectionConfig, config, data, depth, docWithLocales, draftArg, fallbackLocale, filesToUpload, locale, overrideAccess, overrideLock, payload, populate, publishAllLocales: publishAllLocalesArg,
|
|
25
|
+
*/ export const updateDocument = async ({ id, autosave, collectionConfig, config, data, depth, docWithLocales, draftArg, fallbackLocale, filesToUpload, locale, overrideAccess, overrideLock, payload, populate, publishAllLocales: publishAllLocalesArg, req, select, showHiddenFields, unpublishAllLocales: unpublishAllLocalesArg })=>{
|
|
26
26
|
const password = data?.password;
|
|
27
|
-
const publishAllLocales = !draftArg && (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(collectionConfig) ? false : true));
|
|
27
|
+
const publishAllLocales = !draftArg && (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(collectionConfig) && locale !== 'all' ? false : true));
|
|
28
28
|
const unpublishAllLocales = typeof unpublishAllLocalesArg === 'string' ? unpublishAllLocalesArg === 'true' : !!unpublishAllLocalesArg;
|
|
29
29
|
const isSavingDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig)) && data._status !== 'published' && !publishAllLocales;
|
|
30
30
|
const shouldSavePassword = Boolean(password && collectionConfig.auth && (!collectionConfig.auth.disableLocalStrategy || typeof collectionConfig.auth.disableLocalStrategy === 'object' && collectionConfig.auth.disableLocalStrategy.enableFields) && !isSavingDraft);
|
|
@@ -160,11 +160,17 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
160
160
|
// Handle Localized Data Merging
|
|
161
161
|
// /////////////////////////////////////
|
|
162
162
|
let result = await beforeChange(beforeChangeArgs);
|
|
163
|
-
|
|
163
|
+
if (config.localization && hasLocalizeStatusEnabled(collectionConfig) && typeof result._status === 'string') {
|
|
164
|
+
const statusStr = result._status;
|
|
165
|
+
result._status = {};
|
|
166
|
+
for (const localeCode of config.localization.localeCodes){
|
|
167
|
+
;
|
|
168
|
+
result._status[localeCode] = statusStr;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
let localizedPublishData = null;
|
|
164
172
|
if (config.localization && collectionConfig.versions) {
|
|
165
|
-
|
|
166
|
-
let currentDoc;
|
|
167
|
-
if (collectionConfig.versions.drafts && collectionConfig.versions.drafts.localizeStatus) {
|
|
173
|
+
if (hasLocalizeStatusEnabled(collectionConfig)) {
|
|
168
174
|
if (publishAllLocales || unpublishAllLocales) {
|
|
169
175
|
let accessibleLocaleCodes = config.localization.localeCodes;
|
|
170
176
|
if (config.localization.filterAvailableLocales) {
|
|
@@ -180,10 +186,10 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
180
186
|
for (const localeCode of accessibleLocaleCodes){
|
|
181
187
|
result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published';
|
|
182
188
|
}
|
|
183
|
-
} else if (!isSavingDraft) {
|
|
184
|
-
|
|
185
|
-
currentDoc = await payload.db.findOne({
|
|
189
|
+
} else if (!isSavingDraft && result._status && typeof result._status === 'object' && !Array.isArray(result._status) && result._status[locale] === 'published') {
|
|
190
|
+
const currentDoc = await payload.db.findOne({
|
|
186
191
|
collection: collectionConfig.slug,
|
|
192
|
+
locale: 'all',
|
|
187
193
|
req,
|
|
188
194
|
where: {
|
|
189
195
|
id: {
|
|
@@ -191,47 +197,18 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
191
197
|
}
|
|
192
198
|
}
|
|
193
199
|
});
|
|
194
|
-
|
|
200
|
+
localizedPublishData = buildLocalizedPublishData({
|
|
201
|
+
config,
|
|
202
|
+
currentDoc: currentDoc,
|
|
203
|
+
fields: collectionConfig.fields,
|
|
204
|
+
locale,
|
|
205
|
+
result
|
|
206
|
+
});
|
|
195
207
|
}
|
|
196
|
-
} else if (publishSpecificLocale) {
|
|
197
|
-
// previous way of publishing a single locale
|
|
198
|
-
currentDoc = await getLatestCollectionVersion({
|
|
199
|
-
id,
|
|
200
|
-
config: collectionConfig,
|
|
201
|
-
payload,
|
|
202
|
-
published: true,
|
|
203
|
-
query: {
|
|
204
|
-
collection: collectionConfig.slug,
|
|
205
|
-
locale: 'all',
|
|
206
|
-
req,
|
|
207
|
-
where: {
|
|
208
|
-
id: {
|
|
209
|
-
equals: id
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
req
|
|
214
|
-
});
|
|
215
|
-
snapshotData = {
|
|
216
|
-
...result,
|
|
217
|
-
_status: 'draft'
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
if (snapshotData) {
|
|
221
|
-
snapshotToSave = deepCopyObjectSimple(snapshotData || {});
|
|
222
|
-
result = mergeLocalizedData({
|
|
223
|
-
configBlockReferences: config.blocks,
|
|
224
|
-
dataWithLocales: result || {},
|
|
225
|
-
docWithLocales: currentDoc || {},
|
|
226
|
-
fields: collectionConfig.fields,
|
|
227
|
-
selectedLocales: [
|
|
228
|
-
locale
|
|
229
|
-
]
|
|
230
|
-
});
|
|
231
208
|
}
|
|
232
209
|
}
|
|
233
210
|
const dataToUpdate = {
|
|
234
|
-
...result
|
|
211
|
+
...localizedPublishData ?? result
|
|
235
212
|
};
|
|
236
213
|
// /////////////////////////////////////
|
|
237
214
|
// Handle potential password update
|
|
@@ -254,13 +231,29 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
254
231
|
if (!isSavingDraft) {
|
|
255
232
|
// Ensure updatedAt date is always updated
|
|
256
233
|
dataToUpdate.updatedAt = new Date().toISOString();
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
234
|
+
if (localizedPublishData) {
|
|
235
|
+
// Single-locale publish: save filtered data to main doc but keep full locale data for
|
|
236
|
+
// the version so draft fetches (replaceWithDraftIfAvailable) return complete data.
|
|
237
|
+
await req.payload.db.updateOne({
|
|
238
|
+
id,
|
|
239
|
+
collection: collectionConfig.slug,
|
|
240
|
+
data: dataToUpdate,
|
|
241
|
+
locale,
|
|
242
|
+
req
|
|
243
|
+
});
|
|
244
|
+
resultWithLocales = {
|
|
245
|
+
...result,
|
|
246
|
+
updatedAt: dataToUpdate.updatedAt
|
|
247
|
+
};
|
|
248
|
+
} else {
|
|
249
|
+
resultWithLocales = await req.payload.db.updateOne({
|
|
250
|
+
id,
|
|
251
|
+
collection: collectionConfig.slug,
|
|
252
|
+
data: dataToUpdate,
|
|
253
|
+
locale,
|
|
254
|
+
req
|
|
255
|
+
});
|
|
256
|
+
}
|
|
264
257
|
}
|
|
265
258
|
// /////////////////////////////////////
|
|
266
259
|
// Create version
|
|
@@ -274,9 +267,7 @@ import { mergeLocalizedData } from '../../../utilities/mergeLocalizedData.js';
|
|
|
274
267
|
draft: isSavingDraft,
|
|
275
268
|
operation: 'update',
|
|
276
269
|
payload,
|
|
277
|
-
publishSpecificLocale,
|
|
278
270
|
req,
|
|
279
|
-
snapshot: snapshotToSave,
|
|
280
271
|
unpublish: unpublishAllLocales
|
|
281
272
|
});
|
|
282
273
|
}
|