@strapi/core 0.0.0-experimental.fc1ac2acd58c8a5a858679956b6d102ac5ee4011 → 5.0.0-alpha.0
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/Strapi.d.ts +5 -3
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +23 -11
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +23 -11
- package/dist/Strapi.mjs.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs.map +1 -1
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +2 -2
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +2 -2
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/migrations/draft-publish.d.ts.map +1 -1
- package/dist/migrations/draft-publish.js +1 -1
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs +1 -1
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js +6 -4
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs +3 -1
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/middlewares/errors.d.ts +6 -0
- package/dist/services/document-service/middlewares/errors.d.ts.map +1 -0
- package/dist/services/document-service/middlewares/errors.js +25 -0
- package/dist/services/document-service/middlewares/errors.js.map +1 -0
- package/dist/services/document-service/middlewares/errors.mjs +25 -0
- package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
- package/dist/services/document-service/middlewares/index.d.ts +3 -0
- package/dist/services/document-service/middlewares/index.d.ts.map +1 -0
- package/dist/services/document-service/{middlewares.d.ts → middlewares/middleware-manager.d.ts} +3 -4
- package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -0
- package/dist/services/document-service/{middlewares.js → middlewares/middleware-manager.js} +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
- package/dist/services/document-service/{middlewares.mjs → middlewares/middleware-manager.mjs} +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +28 -37
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +28 -37
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.js +9 -4
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.mjs +9 -4
- package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts +8 -1
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.js +4 -4
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs +4 -4
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/entity-service/components.d.ts +1 -4
- package/dist/services/entity-service/components.d.ts.map +1 -1
- package/dist/services/entity-service/components.js +7 -93
- package/dist/services/entity-service/components.js.map +1 -1
- package/dist/services/entity-service/components.mjs +7 -93
- package/dist/services/entity-service/components.mjs.map +1 -1
- package/dist/services/entity-service/index.d.ts +1 -3
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-service/index.js +34 -199
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +27 -192
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/entity-validator/index.js +1 -1
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +1 -1
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/utils/is-initialized.js +1 -1
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs +1 -1
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/package.json +15 -15
- package/dist/services/document-service/middlewares.d.ts.map +0 -1
- package/dist/services/document-service/middlewares.js.map +0 -1
- package/dist/services/document-service/middlewares.mjs.map +0 -1
- package/dist/services/document-service/transform/filters.d.ts +0 -3
- package/dist/services/document-service/transform/filters.d.ts.map +0 -1
- package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -4
- package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
- package/dist/services/document-service/transform/sort.d.ts +0 -5
- package/dist/services/document-service/transform/sort.d.ts.map +0 -1
- package/dist/services/document-service/transform/utils.d.ts +0 -9
- package/dist/services/document-service/transform/utils.d.ts.map +0 -1
- package/dist/services/utils/upload-files.d.ts +0 -8
- package/dist/services/utils/upload-files.d.ts.map +0 -1
- package/dist/services/utils/upload-files.js +0 -64
- package/dist/services/utils/upload-files.js.map +0 -1
- package/dist/services/utils/upload-files.mjs +0 -63
- package/dist/services/utils/upload-files.mjs.map +0 -1
@@ -1,10 +1,10 @@
|
|
1
|
-
import { curry, assoc, omit } from "lodash/fp";
|
1
|
+
import { curry, assoc, omit, merge } from "lodash/fp";
|
2
2
|
import { convertQueryParams, contentTypes, async } from "@strapi/utils";
|
3
3
|
import { wrapInTransaction } from "./common.mjs";
|
4
4
|
import { defaultToDraft as defaultToDraftCurry, statusToLookup as statusToLookupCurry, filterDataPublishedAt as filterDataPublishedAtCurry, setStatusToDraft as setStatusToDraftCurry, statusToData as statusToDataCurry, defaultStatus as defaultStatusCurry } from "./draft-and-publish.mjs";
|
5
5
|
import { defaultLocale as defaultLocaleCurry, localeToLookup as localeToLookupCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToData as localeToDataCurry } from "./internationalization.mjs";
|
6
6
|
import { transformParamsDocumentId as curriedTransformParamsDocumentId } from "./transform/id-transform.mjs";
|
7
|
-
import {
|
7
|
+
import { updateComponents, omitComponentData, getComponents, deleteComponents, createComponents } from "../entity-service/components.mjs";
|
8
8
|
import { pickSelectionParams } from "../entity-service/params.mjs";
|
9
9
|
import entityValidator from "../entity-validator/index.mjs";
|
10
10
|
import { applyTransforms } from "../entity-service/attributes/index.mjs";
|
@@ -70,7 +70,7 @@ const createContentTypeRepository = (uid) => {
|
|
70
70
|
}
|
71
71
|
const entriesToDelete = await strapi.db.query(uid).findMany(query);
|
72
72
|
await async.map(entriesToDelete, (entryToDelete) => deleteEntry(entryToDelete.id));
|
73
|
-
return { deletedEntries: entriesToDelete
|
73
|
+
return { deletedEntries: entriesToDelete };
|
74
74
|
}
|
75
75
|
async function createEntry(params = {}) {
|
76
76
|
const { data, ...restParams } = await curriedTransformParamsDocumentId(uid, params);
|
@@ -108,40 +108,31 @@ const createContentTypeRepository = (uid) => {
|
|
108
108
|
async function clone(documentId, params = {}) {
|
109
109
|
const queryParams = await async.pipe(
|
110
110
|
filterDataPublishedAtCurry,
|
111
|
-
|
111
|
+
defaultLocaleCurry(contentType),
|
112
|
+
multiLocaleToLookupCurry(contentType)
|
112
113
|
)(params);
|
113
|
-
const
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
const newDocumentId = createDocumentId();
|
124
|
-
const versions = await async.map(entries, async (entryToClone) => {
|
125
|
-
const isDraft = contentTypes.isDraft(data, model);
|
126
|
-
const validData = await entityValidator.validateEntityUpdate(
|
127
|
-
model,
|
128
|
-
// Omit id fields, the cloned entity id will be generated by the database
|
129
|
-
omit(["id"], data),
|
130
|
-
{ isDraft, ...queryParams?.lookup },
|
131
|
-
entryToClone
|
132
|
-
);
|
133
|
-
const componentData = await cloneComponents(uid, entryToClone, validData);
|
134
|
-
const entityData = applyTransforms(
|
135
|
-
Object.assign(omitComponentData(model, validData), componentData),
|
136
|
-
{ contentType: model }
|
137
|
-
);
|
138
|
-
return strapi.db.query(uid).clone(entryToClone.id, {
|
139
|
-
...query,
|
140
|
-
// Allows entityData to override the documentId (e.g. when publishing)
|
141
|
-
data: { documentId: newDocumentId, ...entityData, locale: entryToClone.locale }
|
142
|
-
});
|
114
|
+
const entriesToClone = await strapi.db?.query(uid).findMany({
|
115
|
+
where: {
|
116
|
+
...queryParams?.lookup,
|
117
|
+
documentId,
|
118
|
+
// DP Enabled: Clone drafts
|
119
|
+
// DP Disabled: Clone only the existing version (published)
|
120
|
+
publishedAt: { $null: hasDraftAndPublish }
|
121
|
+
},
|
122
|
+
populate: getDeepPopulate(uid, { relationalFields: ["id"] })
|
143
123
|
});
|
144
|
-
|
124
|
+
const clonedEntries = await async.map(
|
125
|
+
entriesToClone,
|
126
|
+
async.pipe(
|
127
|
+
omit("id"),
|
128
|
+
// assign new documentId
|
129
|
+
assoc("documentId", createDocumentId()),
|
130
|
+
// Merge new data into it
|
131
|
+
(data) => merge(data, queryParams.data),
|
132
|
+
(data) => createEntry({ ...queryParams, data, status: "draft" })
|
133
|
+
)
|
134
|
+
);
|
135
|
+
return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };
|
145
136
|
}
|
146
137
|
async function update(documentId, params = {}) {
|
147
138
|
const queryParams = await async.pipe(
|
@@ -216,7 +207,7 @@ const createContentTypeRepository = (uid) => {
|
|
216
207
|
documentId,
|
217
208
|
publishedAt: null
|
218
209
|
},
|
219
|
-
populate: getDeepPopulate(uid)
|
210
|
+
populate: getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
|
220
211
|
});
|
221
212
|
const publishedEntries = await async.map(
|
222
213
|
entriesToPublish,
|
@@ -265,7 +256,7 @@ const createContentTypeRepository = (uid) => {
|
|
265
256
|
documentId,
|
266
257
|
publishedAt: { $ne: null }
|
267
258
|
},
|
268
|
-
populate: getDeepPopulate(uid)
|
259
|
+
populate: getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
|
269
260
|
});
|
270
261
|
const draftEntries = await async.map(
|
271
262
|
entriesToDraft,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"repository.mjs","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, curry } from 'lodash/fp';\n\nimport { async, convertQueryParams, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { transformParamsDocumentId } from './transform/id-transform';\n\nimport {\n cloneComponents,\n createComponents,\n deleteComponents,\n getComponents,\n omitComponentData,\n updateComponents,\n} from '../entity-service/components';\n\nimport { pickSelectionParams } from './params';\nimport entityValidator from '../entity-validator';\nimport { applyTransforms } from '../entity-service/attributes';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformData } from './transform/data';\n\nconst transformParamsToQuery = curry((uid: Common.UID.Schema, params: any) => {\n const query = convertQueryParams.transformParamsToQuery(uid, params);\n\n return assoc('where', { ...params?.lookup, ...query.where }, query);\n});\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (uid) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(documentId: string, params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await getComponents(uid, { id });\n\n await strapi.db.query(uid).delete({ where: { id } });\n\n await deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n }\n\n async function deleteFn(documentId: string, params = {} as any) {\n const query = await async.pipe(\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n await async.map(entriesToDelete, (entryToDelete: any) => deleteEntry(entryToDelete.id));\n\n return { deletedEntries: entriesToDelete.length };\n }\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!params.data) {\n throw new Error('Create requires data attribute');\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data as object, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await createComponents(uid, validData as any);\n const entryData = applyTransforms(\n Object.assign(omitComponentData(contentType, validData), componentData),\n { contentType }\n );\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function create(params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await createEntry(queryParams);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish(doc.documentId, params).then((doc) => doc.versions[0]);\n }\n\n return doc;\n }\n\n async function clone(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n i18n.localeToLookup(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any);\n // Param parsing\n\n // Validation\n const model = strapi.contentType(uid);\n // Find all locales of the document\n const entries = await strapi.db.query(uid).findMany({\n ...query,\n where: { ...queryParams?.lookup, ...query.where, documentId },\n });\n\n // Document does not exist\n if (!entries.length) {\n return null;\n }\n\n const newDocumentId = createDocumentId();\n\n const versions = await async.map(entries, async (entryToClone: any) => {\n const isDraft = contentTypesUtils.isDraft(data as object, model);\n // Todo: Merge data with entry to clone\n const validData = await entityValidator.validateEntityUpdate(\n model,\n // Omit id fields, the cloned entity id will be generated by the database\n omit(['id'], data),\n { isDraft, ...queryParams?.lookup },\n entryToClone\n );\n\n const componentData = await cloneComponents(uid, entryToClone, validData);\n const entityData = applyTransforms(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n // TODO: Transform params to query\n return strapi.db.query(uid).clone(entryToClone.id, {\n ...query,\n // Allows entityData to override the documentId (e.g. when publishing)\n data: { documentId: newDocumentId, ...entityData, locale: entryToClone.locale },\n });\n });\n\n return { documentId: newDocumentId, versions };\n }\n\n async function update(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n const model = strapi.contentType(uid);\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n const validData = await entityValidator.validateEntityUpdate(\n model,\n data,\n {\n isDraft: !queryParams?.data?.publishedAt, // Always update the draft version\n locale: queryParams?.locale,\n },\n entryToUpdate\n );\n\n // Component handling\n const componentData = await updateComponents(uid, entryToUpdate, validData as any);\n const entryData = applyTransforms(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n updatedDraft = await strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await createEntry({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish(documentId, params).then((doc) => doc.versions[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n await deleteFn(documentId, {\n ...queryParams,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n // Get deep populate\n const entriesToPublish = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n populate: getDeepPopulate(uid),\n });\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(\n entriesToPublish,\n async.pipe(\n // Updated at value is used to know if draft has been modified\n // If both versions share the same value, it means the draft has not been modified\n (draft) => assoc('updatedAt', draft.updatedAt, draft),\n assoc('publishedAt', new Date()),\n assoc('documentId', documentId),\n omit('id'),\n // Transform relations to target published versions\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'published', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the published entry\n (data) => createEntry({ ...queryParams, data, locale: data.locale, status: 'published' })\n )\n );\n\n return { versions: publishedEntries };\n }\n\n async function unpublish(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const { deletedEntries } = await deleteFn(documentId, {\n ...params,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n return { versions: deletedEntries };\n }\n\n async function discardDraft(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n await deleteFn(documentId, {\n ...queryParams,\n // Delete all drafts that match query\n lookup: { ...queryParams?.lookup, publishedAt: null },\n });\n\n // Get deep populate of published versions\n const entriesToDraft = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n populate: getDeepPopulate(uid),\n });\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(\n entriesToDraft,\n async.pipe(\n assoc('publishedAt', null),\n assoc('documentId', documentId),\n omit('id'),\n // Transform relations to target draft versions\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...queryParams, locale: data.locale, data, status: 'draft' })\n )\n );\n\n return { versions: draftEntries };\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteFn),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n };\n};\n"],"names":["contentTypesUtils","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","transformParamsDocumentId","query","i18n.multiLocaleToLookup","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","DP.defaultStatus"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"repository.mjs","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, curry, merge } from 'lodash/fp';\n\nimport { async, convertQueryParams, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { transformParamsDocumentId } from './transform/id-transform';\n\nimport {\n createComponents,\n deleteComponents,\n getComponents,\n omitComponentData,\n updateComponents,\n} from '../entity-service/components';\n\nimport { pickSelectionParams } from './params';\nimport entityValidator from '../entity-validator';\nimport { applyTransforms } from '../entity-service/attributes';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformData } from './transform/data';\n\nconst transformParamsToQuery = curry((uid: Common.UID.Schema, params: any) => {\n const query = convertQueryParams.transformParamsToQuery(uid, params);\n\n return assoc('where', { ...params?.lookup, ...query.where }, query);\n});\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (uid) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(documentId: string, params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteEntry(id: number) {\n const componentsToDelete = await getComponents(uid, { id });\n\n await strapi.db.query(uid).delete({ where: { id } });\n\n await deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n }\n\n async function deleteFn(documentId: string, params = {} as any) {\n const query = await async.pipe(\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n await async.map(entriesToDelete, (entryToDelete: any) => deleteEntry(entryToDelete.id));\n\n return { deletedEntries: entriesToDelete };\n }\n\n async function createEntry(params = {} as any) {\n const { data, ...restParams } = await transformParamsDocumentId(uid, params);\n\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams) as any); // select / populate\n\n // Validation\n if (!params.data) {\n throw new Error('Create requires data attribute');\n }\n\n const validData = await entityValidator.validateEntityCreation(contentType, data as object, {\n // Note: publishedAt value will always be set when DP is disabled\n isDraft: !params?.data?.publishedAt,\n locale: params?.locale,\n });\n\n // Component handling\n const componentData = await createComponents(uid, validData as any);\n const entryData = applyTransforms(\n Object.assign(omitComponentData(contentType, validData), componentData),\n { contentType }\n );\n\n const doc = await strapi.db.query(uid).create({ ...query, data: entryData });\n\n return doc;\n }\n\n async function create(params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await createEntry(queryParams);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish(doc.documentId, params).then((doc) => doc.versions[0]);\n }\n\n return doc;\n }\n\n async function clone(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n omit('id'),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => createEntry({ ...queryParams, data, status: 'draft' })\n )\n );\n\n return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };\n }\n\n async function update(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n const model = strapi.contentType(uid);\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n const validData = await entityValidator.validateEntityUpdate(\n model,\n data,\n {\n isDraft: !queryParams?.data?.publishedAt, // Always update the draft version\n locale: queryParams?.locale,\n },\n entryToUpdate\n );\n\n // Component handling\n const componentData = await updateComponents(uid, entryToUpdate, validData as any);\n const entryData = applyTransforms(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n updatedDraft = await strapi.db\n .query(uid)\n .update({ ...query, where: { id: entryToUpdate.id }, data: entryData });\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await createEntry({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish(documentId, params).then((doc) => doc.versions[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n await deleteFn(documentId, {\n ...queryParams,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n // Get deep populate\n const entriesToPublish = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n });\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(\n entriesToPublish,\n async.pipe(\n // Updated at value is used to know if draft has been modified\n // If both versions share the same value, it means the draft has not been modified\n (draft) => assoc('updatedAt', draft.updatedAt, draft),\n assoc('publishedAt', new Date()),\n assoc('documentId', documentId),\n omit('id'),\n // Transform relations to target published versions\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'published', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the published entry\n (data) => createEntry({ ...queryParams, data, locale: data.locale, status: 'published' })\n )\n );\n\n return { versions: publishedEntries };\n }\n\n async function unpublish(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const { deletedEntries } = await deleteFn(documentId, {\n ...params,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n return { versions: deletedEntries };\n }\n\n async function discardDraft(documentId: string, params = {} as any) {\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n await deleteFn(documentId, {\n ...queryParams,\n // Delete all drafts that match query\n lookup: { ...queryParams?.lookup, publishedAt: null },\n });\n\n // Get deep populate of published versions\n const entriesToDraft = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n });\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(\n entriesToDraft,\n async.pipe(\n assoc('publishedAt', null),\n assoc('documentId', documentId),\n omit('id'),\n // Transform relations to target draft versions\n (entry) => {\n const opts = { uid, locale: entry.locale, status: 'draft', allowMissingId: true };\n return transformData(entry, opts);\n },\n // Create the draft entry\n (data) => createEntry({ ...queryParams, locale: data.locale, data, status: 'draft' })\n )\n );\n\n return { versions: draftEntries };\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteFn),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n };\n};\n"],"names":["contentTypesUtils","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","transformParamsDocumentId","query","i18n.multiLocaleToLookup","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","DP.defaultStatus"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dp.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEpC,eAAO,MAAM,uBAAuB,aACxB,KAAK,gBAAgB,EAAE,YAAY,GAAG,QAAQ,CAAC,QACnD;IACJ,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA,MAAM,
|
1
|
+
{"version":3,"file":"dp.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEpC,eAAO,MAAM,uBAAuB,aACxB,KAAK,gBAAgB,EAAE,YAAY,GAAG,QAAQ,CAAC,QACnD;IACJ,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA,MAAM,EA2CR,CAAC"}
|
@@ -10,15 +10,20 @@ const getRelationTargetStatus = (relation, opts) => {
|
|
10
10
|
if (!targetHasDP) {
|
11
11
|
return ["published"];
|
12
12
|
}
|
13
|
+
if (sourceHasDP && !_.isNil(opts.sourceStatus)) {
|
14
|
+
return [opts.sourceStatus];
|
15
|
+
}
|
13
16
|
if (relation.status) {
|
14
|
-
|
17
|
+
switch (relation.status) {
|
18
|
+
case "published":
|
19
|
+
return ["published"];
|
20
|
+
default:
|
21
|
+
return ["draft"];
|
22
|
+
}
|
15
23
|
}
|
16
24
|
if (!sourceHasDP) {
|
17
25
|
return ["draft", "published"];
|
18
26
|
}
|
19
|
-
if (!_.isNil(opts.sourceStatus)) {
|
20
|
-
return [opts.sourceStatus];
|
21
|
-
}
|
22
27
|
return ["draft"];
|
23
28
|
};
|
24
29
|
exports.getRelationTargetStatus = getRelationTargetStatus;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dp.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n
|
1
|
+
{"version":3,"file":"dp.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n /**\n * If both source and target have DP enabled,\n * connect it to the same status as the source status\n */\n if (sourceHasDP && !isNil(opts.sourceStatus)) {\n return [opts.sourceStatus];\n }\n\n /**\n * Use the status from the relation if it's set\n */\n if (relation.status) {\n switch (relation.status) {\n case 'published':\n return ['published'];\n default:\n // Default to draft if it's an invalid status (e.g. modified)\n return ['draft'];\n }\n }\n\n /**\n * If DP is disabled and relation does not specify any status\n * Connect to both draft and published versions\n */\n if (!sourceHasDP) {\n return ['draft', 'published'];\n }\n\n // Default to draft as a fallback\n return ['draft'];\n};\n"],"names":["contentTypes","isNil"],"mappings":";;;;AASa,MAAA,0BAA0B,CACrC,UACA,SAKa;AAEb,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AACxD,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AAElD,QAAA,cAAcA,YAAAA,aAAa,mBAAmB,iBAAiB;AAC/D,QAAA,cAAcA,YAAAA,aAAa,mBAAmB,iBAAiB;AAErE,MAAI,CAAC,aAAa;AAChB,WAAO,CAAC,WAAW;AAAA,EACrB;AAMA,MAAI,eAAe,CAACC,EAAAA,MAAM,KAAK,YAAY,GAAG;AACrC,WAAA,CAAC,KAAK,YAAY;AAAA,EAC3B;AAKA,MAAI,SAAS,QAAQ;AACnB,YAAQ,SAAS,QAAQ;AAAA,MACvB,KAAK;AACH,eAAO,CAAC,WAAW;AAAA,MACrB;AAEE,eAAO,CAAC,OAAO;AAAA,IACnB;AAAA,EACF;AAMA,MAAI,CAAC,aAAa;AACT,WAAA,CAAC,SAAS,WAAW;AAAA,EAC9B;AAGA,SAAO,CAAC,OAAO;AACjB;;"}
|
@@ -8,15 +8,20 @@ const getRelationTargetStatus = (relation, opts) => {
|
|
8
8
|
if (!targetHasDP) {
|
9
9
|
return ["published"];
|
10
10
|
}
|
11
|
+
if (sourceHasDP && !isNil(opts.sourceStatus)) {
|
12
|
+
return [opts.sourceStatus];
|
13
|
+
}
|
11
14
|
if (relation.status) {
|
12
|
-
|
15
|
+
switch (relation.status) {
|
16
|
+
case "published":
|
17
|
+
return ["published"];
|
18
|
+
default:
|
19
|
+
return ["draft"];
|
20
|
+
}
|
13
21
|
}
|
14
22
|
if (!sourceHasDP) {
|
15
23
|
return ["draft", "published"];
|
16
24
|
}
|
17
|
-
if (!isNil(opts.sourceStatus)) {
|
18
|
-
return [opts.sourceStatus];
|
19
|
-
}
|
20
25
|
return ["draft"];
|
21
26
|
};
|
22
27
|
export {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n
|
1
|
+
{"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { Common } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n /**\n * If both source and target have DP enabled,\n * connect it to the same status as the source status\n */\n if (sourceHasDP && !isNil(opts.sourceStatus)) {\n return [opts.sourceStatus];\n }\n\n /**\n * Use the status from the relation if it's set\n */\n if (relation.status) {\n switch (relation.status) {\n case 'published':\n return ['published'];\n default:\n // Default to draft if it's an invalid status (e.g. modified)\n return ['draft'];\n }\n }\n\n /**\n * If DP is disabled and relation does not specify any status\n * Connect to both draft and published versions\n */\n if (!sourceHasDP) {\n return ['draft', 'published'];\n }\n\n // Default to draft as a fallback\n return ['draft'];\n};\n"],"names":[],"mappings":";;AASa,MAAA,0BAA0B,CACrC,UACA,SAKa;AAEb,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AACxD,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AAElD,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAC/D,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAErE,MAAI,CAAC,aAAa;AAChB,WAAO,CAAC,WAAW;AAAA,EACrB;AAMA,MAAI,eAAe,CAAC,MAAM,KAAK,YAAY,GAAG;AACrC,WAAA,CAAC,KAAK,YAAY;AAAA,EAC3B;AAKA,MAAI,SAAS,QAAQ;AACnB,YAAQ,SAAS,QAAQ;AAAA,MACvB,KAAK;AACH,eAAO,CAAC,WAAW;AAAA,MACrB;AAEE,eAAO,CAAC,OAAO;AAAA,IACnB;AAAA,EACF;AAMA,MAAI,CAAC,aAAa;AACT,WAAA,CAAC,SAAS,WAAW;AAAA,EAC9B;AAGA,SAAO,CAAC,OAAO;AACjB;"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { Common } from '@strapi/types';
|
2
2
|
import { LongHandDocument } from './types';
|
3
3
|
export declare const isLocalizedContentType: (uid: Common.UID.Schema) => any;
|
4
|
-
export declare const getDefaultLocale: () =>
|
4
|
+
export declare const getDefaultLocale: () => any;
|
5
5
|
export declare const getRelationTargetLocale: (relation: LongHandDocument, opts: {
|
6
6
|
targetUid: Common.UID.Schema;
|
7
7
|
sourceUid: Common.UID.Schema;
|
8
8
|
sourceLocale?: string | null;
|
9
|
-
}) =>
|
9
|
+
}) => any;
|
10
10
|
//# sourceMappingURL=i18n.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAS,OAAO,GAAG,CAAC,MAAM,QAG5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAS,OAAO,GAAG,CAAC,MAAM,QAG5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAG5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,aACxB,gBAAgB,QACpB;IACJ,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,QAuBF,CAAC"}
|
@@ -6,7 +6,7 @@ const isLocalizedContentType = (uid) => {
|
|
6
6
|
return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
|
7
7
|
};
|
8
8
|
const getDefaultLocale = () => {
|
9
|
-
return "
|
9
|
+
return strapi.plugin("i18n").service("locales").getDefaultLocale();
|
10
10
|
};
|
11
11
|
const getRelationTargetLocale = (relation, opts) => {
|
12
12
|
const defaultLocale = getDefaultLocale();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO:
|
1
|
+
{"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO: V5 make this more performant\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const defaultLocale = getDefaultLocale();\n const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Locale validations\n if (isSourceLocalized && isTargetLocalized) {\n // Check the targetLocale matches\n if (targetLocale !== opts.sourceLocale) {\n throw new errors.ValidationError(\n `Relation locale does not match the source locale ${JSON.stringify(relation)}`\n );\n }\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":["errors"],"mappings":";;;AAIa,MAAA,yBAAyB,CAAC,QAA2B;AAC1D,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AAEpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACH,QAAM,gBAAgB;AACtB,QAAM,eAAe,SAAS,UAAU,KAAK,gBAAgB;AAEvD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAEtC,QAAA,iBAAiB,KAAK,cAAc;AACtC,YAAM,IAAIA,YAAO,OAAA;AAAA,QACf,oDAAoD,KAAK,UAAU,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEhF;AAAA,EACF;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;;;;"}
|
@@ -4,7 +4,7 @@ const isLocalizedContentType = (uid) => {
|
|
4
4
|
return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
|
5
5
|
};
|
6
6
|
const getDefaultLocale = () => {
|
7
|
-
return "
|
7
|
+
return strapi.plugin("i18n").service("locales").getDefaultLocale();
|
8
8
|
};
|
9
9
|
const getRelationTargetLocale = (relation, opts) => {
|
10
10
|
const defaultLocale = getDefaultLocale();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO:
|
1
|
+
{"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO: V5 make this more performant\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const defaultLocale = getDefaultLocale();\n const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Locale validations\n if (isSourceLocalized && isTargetLocalized) {\n // Check the targetLocale matches\n if (targetLocale !== opts.sourceLocale) {\n throw new errors.ValidationError(\n `Relation locale does not match the source locale ${JSON.stringify(relation)}`\n );\n }\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":";AAIa,MAAA,yBAAyB,CAAC,QAA2B;AAC1D,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AAEpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACH,QAAM,gBAAgB;AACtB,QAAM,eAAe,SAAS,UAAU,KAAK,gBAAgB;AAEvD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAEtC,QAAA,iBAAiB,KAAK,cAAc;AACtC,YAAM,IAAI,OAAO;AAAA,QACf,oDAAoD,KAAK,UAAU,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEhF;AAAA,EACF;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;"}
|
@@ -1,3 +1,10 @@
|
|
1
1
|
import { Common } from '@strapi/types';
|
2
|
-
|
2
|
+
interface Options {
|
3
|
+
/**
|
4
|
+
* Fields to select when populating relations
|
5
|
+
*/
|
6
|
+
relationalFields?: string[];
|
7
|
+
}
|
8
|
+
export declare const getDeepPopulate: (uid: Common.UID.Schema, opts?: Options) => any;
|
9
|
+
export {};
|
3
10
|
//# sourceMappingURL=populate.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/utils/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
1
|
+
{"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/utils/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,UAAU,OAAO;IACf;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAGD,eAAO,MAAM,eAAe,QAAS,OAAO,GAAG,CAAC,MAAM,SAAQ,OAAO,QA8CpE,CAAC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
3
|
const strapiUtils = require("@strapi/utils");
|
4
|
-
const getDeepPopulate = (uid) => {
|
4
|
+
const getDeepPopulate = (uid, opts = {}) => {
|
5
5
|
const model = strapi.getModel(uid);
|
6
6
|
const attributes = Object.entries(model.attributes);
|
7
7
|
return attributes.reduce((acc, [attributeName, attribute]) => {
|
@@ -9,7 +9,7 @@ const getDeepPopulate = (uid) => {
|
|
9
9
|
case "relation": {
|
10
10
|
const isVisible = strapiUtils.contentTypes.isVisibleAttribute(model, attributeName);
|
11
11
|
if (isVisible) {
|
12
|
-
acc[attributeName] = { select:
|
12
|
+
acc[attributeName] = { select: opts.relationalFields };
|
13
13
|
}
|
14
14
|
break;
|
15
15
|
}
|
@@ -18,14 +18,14 @@ const getDeepPopulate = (uid) => {
|
|
18
18
|
break;
|
19
19
|
}
|
20
20
|
case "component": {
|
21
|
-
const populate = getDeepPopulate(attribute.component);
|
21
|
+
const populate = getDeepPopulate(attribute.component, opts);
|
22
22
|
acc[attributeName] = { populate };
|
23
23
|
break;
|
24
24
|
}
|
25
25
|
case "dynamiczone": {
|
26
26
|
const populatedComponents = (attribute.components || []).reduce(
|
27
27
|
(acc2, componentUID) => {
|
28
|
-
acc2[componentUID] = { populate: getDeepPopulate(componentUID) };
|
28
|
+
acc2[componentUID] = { populate: getDeepPopulate(componentUID, opts) };
|
29
29
|
return acc2;
|
30
30
|
},
|
31
31
|
{}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Should this just be a plain list?\n // Ignore createdBy, updatedBy, ...\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n if (isVisible) {\n acc[attributeName] = { select:
|
1
|
+
{"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ninterface Options {\n /**\n * Fields to select when populating relations\n */\n relationalFields?: string[];\n}\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: Common.UID.Schema, opts: Options = {}) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Should this just be a plain list?\n // Ignore createdBy, updatedBy, ...\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n if (isVisible) {\n acc[attributeName] = { select: opts.relationalFields };\n }\n break;\n }\n\n case 'media': {\n acc[attributeName] = { select: ['id'] };\n break;\n }\n\n case 'component': {\n const populate = getDeepPopulate(attribute.component, opts);\n acc[attributeName] = { populate };\n break;\n }\n\n case 'dynamiczone': {\n // Use fragments to populate the dynamic zone components\n const populatedComponents = (attribute.components || []).reduce(\n (acc: any, componentUID: Common.UID.Component) => {\n acc[componentUID] = { populate: getDeepPopulate(componentUID, opts) };\n return acc;\n },\n {}\n );\n\n acc[attributeName] = { on: populatedComponents };\n break;\n }\n default:\n break;\n }\n\n return acc;\n }, {});\n};\n"],"names":["contentTypes","acc"],"mappings":";;;AAWO,MAAM,kBAAkB,CAAC,KAAwB,OAAgB,OAAO;AACvE,QAAA,QAAQ,OAAO,SAAS,GAAG;AACjC,QAAM,aAAa,OAAO,QAAQ,MAAM,UAAU;AAElD,SAAO,WAAW,OAAO,CAAC,KAAU,CAAC,eAAe,SAAS,MAAM;AACjE,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,YAAY;AAGf,cAAM,YAAYA,YAAA,aAAa,mBAAmB,OAAO,aAAa;AACtE,YAAI,WAAW;AACb,cAAI,aAAa,IAAI,EAAE,QAAQ,KAAK,iBAAiB;AAAA,QACvD;AACA;AAAA,MACF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,WAAW,gBAAgB,UAAU,WAAW,IAAI;AACtD,YAAA,aAAa,IAAI,EAAE;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAElB,cAAM,uBAAuB,UAAU,cAAc,CAAI,GAAA;AAAA,UACvD,CAACC,MAAU,iBAAuC;AAChDA,iBAAI,YAAY,IAAI,EAAE,UAAU,gBAAgB,cAAc,IAAI;AAC3DA,mBAAAA;AAAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,aAAa,IAAI,EAAE,IAAI,oBAAoB;AAC/C;AAAA,MACF;AAAA,IAGF;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;;"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { contentTypes } from "@strapi/utils";
|
2
|
-
const getDeepPopulate = (uid) => {
|
2
|
+
const getDeepPopulate = (uid, opts = {}) => {
|
3
3
|
const model = strapi.getModel(uid);
|
4
4
|
const attributes = Object.entries(model.attributes);
|
5
5
|
return attributes.reduce((acc, [attributeName, attribute]) => {
|
@@ -7,7 +7,7 @@ const getDeepPopulate = (uid) => {
|
|
7
7
|
case "relation": {
|
8
8
|
const isVisible = contentTypes.isVisibleAttribute(model, attributeName);
|
9
9
|
if (isVisible) {
|
10
|
-
acc[attributeName] = { select:
|
10
|
+
acc[attributeName] = { select: opts.relationalFields };
|
11
11
|
}
|
12
12
|
break;
|
13
13
|
}
|
@@ -16,14 +16,14 @@ const getDeepPopulate = (uid) => {
|
|
16
16
|
break;
|
17
17
|
}
|
18
18
|
case "component": {
|
19
|
-
const populate = getDeepPopulate(attribute.component);
|
19
|
+
const populate = getDeepPopulate(attribute.component, opts);
|
20
20
|
acc[attributeName] = { populate };
|
21
21
|
break;
|
22
22
|
}
|
23
23
|
case "dynamiczone": {
|
24
24
|
const populatedComponents = (attribute.components || []).reduce(
|
25
25
|
(acc2, componentUID) => {
|
26
|
-
acc2[componentUID] = { populate: getDeepPopulate(componentUID) };
|
26
|
+
acc2[componentUID] = { populate: getDeepPopulate(componentUID, opts) };
|
27
27
|
return acc2;
|
28
28
|
},
|
29
29
|
{}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"populate.mjs","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Should this just be a plain list?\n // Ignore createdBy, updatedBy, ...\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n if (isVisible) {\n acc[attributeName] = { select:
|
1
|
+
{"version":3,"file":"populate.mjs","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ninterface Options {\n /**\n * Fields to select when populating relations\n */\n relationalFields?: string[];\n}\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: Common.UID.Schema, opts: Options = {}) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Should this just be a plain list?\n // Ignore createdBy, updatedBy, ...\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n if (isVisible) {\n acc[attributeName] = { select: opts.relationalFields };\n }\n break;\n }\n\n case 'media': {\n acc[attributeName] = { select: ['id'] };\n break;\n }\n\n case 'component': {\n const populate = getDeepPopulate(attribute.component, opts);\n acc[attributeName] = { populate };\n break;\n }\n\n case 'dynamiczone': {\n // Use fragments to populate the dynamic zone components\n const populatedComponents = (attribute.components || []).reduce(\n (acc: any, componentUID: Common.UID.Component) => {\n acc[componentUID] = { populate: getDeepPopulate(componentUID, opts) };\n return acc;\n },\n {}\n );\n\n acc[attributeName] = { on: populatedComponents };\n break;\n }\n default:\n break;\n }\n\n return acc;\n }, {});\n};\n"],"names":["acc"],"mappings":";AAWO,MAAM,kBAAkB,CAAC,KAAwB,OAAgB,OAAO;AACvE,QAAA,QAAQ,OAAO,SAAS,GAAG;AACjC,QAAM,aAAa,OAAO,QAAQ,MAAM,UAAU;AAElD,SAAO,WAAW,OAAO,CAAC,KAAU,CAAC,eAAe,SAAS,MAAM;AACjE,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,YAAY;AAGf,cAAM,YAAY,aAAa,mBAAmB,OAAO,aAAa;AACtE,YAAI,WAAW;AACb,cAAI,aAAa,IAAI,EAAE,QAAQ,KAAK,iBAAiB;AAAA,QACvD;AACA;AAAA,MACF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,WAAW,gBAAgB,UAAU,WAAW,IAAI;AACtD,YAAA,aAAa,IAAI,EAAE;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAElB,cAAM,uBAAuB,UAAU,cAAc,CAAI,GAAA;AAAA,UACvD,CAACA,MAAU,iBAAuC;AAChDA,iBAAI,YAAY,IAAI,EAAE,UAAU,gBAAgB,cAAc,IAAI;AAC3DA,mBAAAA;AAAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,aAAa,IAAI,EAAE,IAAI,oBAAoB;AAC/C;AAAA,MACF;AAAA,IAGF;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;"}
|
@@ -15,9 +15,6 @@ declare const updateComponents: <TUID extends Common.UID.Schema, TData extends P
|
|
15
15
|
declare const deleteComponents: <TUID extends Common.UID.Schema, TEntity extends Attribute.GetValues<TUID, Attribute.GetKeys<TUID>>>(uid: TUID, entityToDelete: TEntity, { loadComponents }?: {
|
16
16
|
loadComponents?: boolean | undefined;
|
17
17
|
}) => Promise<void>;
|
18
|
-
declare const cloneComponents: <TUID extends Common.UID.Schema>(uid: TUID, entityToClone: {
|
19
|
-
id: EntityService.Params.Attribute.ID;
|
20
|
-
}, data: EntityService.Params.Data.Input<TUID>) => Promise<ComponentBody>;
|
21
18
|
declare const deleteComponent: <TUID extends `${string}.${string}`>(uid: TUID, componentToDelete: Attribute.GetValues<TUID, Attribute.GetKeys<TUID>>) => Promise<void>;
|
22
|
-
export { omitComponentData, getComponents, createComponents, updateComponents, deleteComponents, deleteComponent,
|
19
|
+
export { omitComponentData, getComponents, createComponents, updateComponents, deleteComponents, deleteComponent, };
|
23
20
|
//# sourceMappingURL=components.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/entity-service/components.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAS,aAAa,EAAE,MAAM,eAAe,CAAC;AAGrF,KAAK,gBAAgB,CAAC,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,CACzE,IAAI,EACJ,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAC,CAC3D,CAAC;AAMF,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAC7B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,GAChD,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAC/C,SAAS,CAAC,WAAW,CACxB,CAAC;CACH,CAAC;AAIF,iBAAS,iBAAiB,CACxB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAC/D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,iBAAS,iBAAiB,CACxB,WAAW,EAAE,MAAM,CAAC,SAAS,EAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAC7D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAcrE,QAAA,MAAM,gBAAgB,yIAqGrB,CAAC;AAEF,QAAA,MAAM,aAAa,sDAET;IAAE,EAAE,EAAE,cAAc,MAAM,UAAU,CAAC,EAAE,CAAA;CAAE,oCASlD,CAAC;AAMF,QAAA,MAAM,gBAAgB,4HAKJ;IAAE,EAAE,EAAE,cAAc,MAAM,UAAU,CAAC,EAAE,CAAA;CAAE,wCA2F1D,CAAC;AAkGF,QAAA,MAAM,gBAAgB;;mBAkDrB,CAAC;
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/entity-service/components.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAS,aAAa,EAAE,MAAM,eAAe,CAAC;AAGrF,KAAK,gBAAgB,CAAC,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,CACzE,IAAI,EACJ,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAC,CAC3D,CAAC;AAMF,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAC7B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,GAChD,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAC/C,SAAS,CAAC,WAAW,CACxB,CAAC;CACH,CAAC;AAIF,iBAAS,iBAAiB,CACxB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAC/D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,iBAAS,iBAAiB,CACxB,WAAW,EAAE,MAAM,CAAC,SAAS,EAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAC7D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAcrE,QAAA,MAAM,gBAAgB,yIAqGrB,CAAC;AAEF,QAAA,MAAM,aAAa,sDAET;IAAE,EAAE,EAAE,cAAc,MAAM,UAAU,CAAC,EAAE,CAAA;CAAE,oCASlD,CAAC;AAMF,QAAA,MAAM,gBAAgB,4HAKJ;IAAE,EAAE,EAAE,cAAc,MAAM,UAAU,CAAC,EAAE,CAAA;CAAE,wCA2F1D,CAAC;AAkGF,QAAA,MAAM,gBAAgB;;mBAkDrB,CAAC;AA8DF,QAAA,MAAM,eAAe,yIAMpB,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,CAAC"}
|