@strapi/core 0.0.0-experimental.90ca9123352ed07e0a9cedaf4bcad1475e74137f → 0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b
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/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.js +2 -2
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +2 -2
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/single-type.d.ts +3 -2
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/core-api/service/single-type.js +15 -3
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +15 -3
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/services/document-service/common.d.ts +2 -2
- package/dist/services/document-service/common.d.ts.map +1 -1
- package/dist/services/document-service/common.js.map +1 -1
- package/dist/services/document-service/common.mjs.map +1 -1
- package/dist/services/document-service/document-engine.d.ts.map +1 -1
- package/dist/services/document-service/document-engine.js +12 -20
- package/dist/services/document-service/document-engine.js.map +1 -1
- package/dist/services/document-service/document-engine.mjs +13 -21
- package/dist/services/document-service/document-engine.mjs.map +1 -1
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js +4 -4
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs +2 -2
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +2 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +14 -0
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +15 -1
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/repositories/content-type.d.ts +3 -0
- package/dist/services/document-service/repositories/content-type.d.ts.map +1 -0
- package/dist/services/document-service/{collection-type.js → repositories/content-type.js} +27 -33
- package/dist/services/document-service/repositories/content-type.js.map +1 -0
- package/dist/services/document-service/{collection-type.mjs → repositories/content-type.mjs} +27 -33
- package/dist/services/document-service/repositories/content-type.mjs.map +1 -0
- package/dist/services/document-service/transform/fields.d.ts.map +1 -1
- package/dist/services/document-service/transform/fields.js +11 -10
- package/dist/services/document-service/transform/fields.js.map +1 -1
- package/dist/services/document-service/transform/fields.mjs +11 -10
- package/dist/services/document-service/transform/fields.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.d.ts +2 -9
- package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-transform.js +2 -32
- package/dist/services/document-service/transform/id-transform.js.map +1 -1
- package/dist/services/document-service/transform/id-transform.mjs +2 -32
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
- package/dist/services/document-service/transform/populate.d.ts.map +1 -1
- package/dist/services/document-service/transform/populate.js +0 -10
- package/dist/services/document-service/transform/populate.js.map +1 -1
- package/dist/services/document-service/transform/populate.mjs +0 -10
- package/dist/services/document-service/transform/populate.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +7 -4
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs +7 -4
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +11 -9
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +11 -9
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/data.d.ts +2 -4
- package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/data.js +1 -1
- package/dist/services/document-service/transform/relations/utils/data.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/data.mjs +1 -1
- package/dist/services/document-service/transform/relations/utils/data.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.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/types.d.ts +5 -1
- package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +174 -3
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +80 -41
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +79 -41
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +14 -14
- package/dist/services/document-service/collection-type.d.ts +0 -4
- package/dist/services/document-service/collection-type.d.ts.map +0 -1
- package/dist/services/document-service/collection-type.js.map +0 -1
- package/dist/services/document-service/collection-type.mjs.map +0 -1
- package/dist/services/document-service/repository-factory.d.ts +0 -3
- package/dist/services/document-service/repository-factory.d.ts.map +0 -1
- package/dist/services/document-service/repository-factory.js +0 -12
- package/dist/services/document-service/repository-factory.js.map +0 -1
- package/dist/services/document-service/repository-factory.mjs +0 -12
- package/dist/services/document-service/repository-factory.mjs.map +0 -1
- package/dist/services/document-service/single-type.d.ts +0 -4
- package/dist/services/document-service/single-type.d.ts.map +0 -1
- package/dist/services/document-service/single-type.js +0 -92
- package/dist/services/document-service/single-type.js.map +0 -1
- package/dist/services/document-service/single-type.mjs +0 -92
- package/dist/services/document-service/single-type.mjs.map +0 -1
- package/dist/services/document-service/transform/filters.js +0 -49
- package/dist/services/document-service/transform/filters.js.map +0 -1
- package/dist/services/document-service/transform/filters.mjs +0 -49
- package/dist/services/document-service/transform/filters.mjs.map +0 -1
- package/dist/services/document-service/transform/relations/transform/output-ids.js +0 -26
- package/dist/services/document-service/transform/relations/transform/output-ids.js.map +0 -1
- package/dist/services/document-service/transform/relations/transform/output-ids.mjs +0 -26
- package/dist/services/document-service/transform/relations/transform/output-ids.mjs.map +0 -1
- package/dist/services/document-service/transform/sort.js +0 -44
- package/dist/services/document-service/transform/sort.js.map +0 -1
- package/dist/services/document-service/transform/sort.mjs +0 -44
- package/dist/services/document-service/transform/sort.mjs.map +0 -1
- package/dist/services/document-service/transform/utils.js +0 -23
- package/dist/services/document-service/transform/utils.js.map +0 -1
- package/dist/services/document-service/transform/utils.mjs +0 -23
- package/dist/services/document-service/transform/utils.mjs.map +0 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@strapi/core",
|
3
|
-
"version": "0.0.0-experimental.
|
3
|
+
"version": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
4
4
|
"description": "Core of Strapi",
|
5
5
|
"homepage": "https://strapi.io",
|
6
6
|
"bugs": {
|
@@ -55,16 +55,16 @@
|
|
55
55
|
"@koa/cors": "3.4.3",
|
56
56
|
"@koa/router": "10.1.1",
|
57
57
|
"@paralleldrive/cuid2": "2.2.2",
|
58
|
-
"@strapi/admin": "0.0.0-experimental.
|
59
|
-
"@strapi/database": "0.0.0-experimental.
|
60
|
-
"@strapi/generate-new": "0.0.0-experimental.
|
61
|
-
"@strapi/generators": "0.0.0-experimental.
|
62
|
-
"@strapi/logger": "0.0.0-experimental.
|
63
|
-
"@strapi/pack-up": "0.0.0-experimental.
|
64
|
-
"@strapi/permissions": "0.0.0-experimental.
|
65
|
-
"@strapi/types": "0.0.0-experimental.
|
66
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
67
|
-
"@strapi/utils": "0.0.0-experimental.
|
58
|
+
"@strapi/admin": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
59
|
+
"@strapi/database": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
60
|
+
"@strapi/generate-new": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
61
|
+
"@strapi/generators": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
62
|
+
"@strapi/logger": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
63
|
+
"@strapi/pack-up": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
64
|
+
"@strapi/permissions": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
65
|
+
"@strapi/types": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
66
|
+
"@strapi/typescript-utils": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
67
|
+
"@strapi/utils": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
68
68
|
"bcryptjs": "2.4.3",
|
69
69
|
"boxen": "5.1.2",
|
70
70
|
"chalk": "4.1.2",
|
@@ -122,13 +122,13 @@
|
|
122
122
|
"@types/node": "18.18.4",
|
123
123
|
"@types/node-schedule": "2.1.0",
|
124
124
|
"@types/statuses": "2.0.1",
|
125
|
-
"eslint-config-custom": "0.0.0-experimental.
|
125
|
+
"eslint-config-custom": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b",
|
126
126
|
"supertest": "6.3.3",
|
127
|
-
"tsconfig": "0.0.0-experimental.
|
127
|
+
"tsconfig": "0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b"
|
128
128
|
},
|
129
129
|
"engines": {
|
130
130
|
"node": ">=18.0.0 <=20.x.x",
|
131
131
|
"npm": ">=6.0.0"
|
132
132
|
},
|
133
|
-
"gitHead": "
|
133
|
+
"gitHead": "a407f3bc8fb79a53cf7975140864526b6ddbac4b"
|
134
134
|
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"collection-type.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/collection-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAK3E,eAAO,MAAM,8BAA8B,EAAE,uBAAuB,CAAC,MAAM,CAAC,cAAc,CA2KzF,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"collection-type.js","sources":["../../../src/services/document-service/collection-type.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\n\nimport type { Schema } from '@strapi/types';\nimport { pipeAsync } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport createDocumentEngine from './document-engine';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\n\nexport const createCollectionTypeRepository: RepositoryFactoryMethod<Schema.CollectionType> = (\n contentType\n) => {\n const { uid } = contentType;\n\n // TODO: move the code back into here instead of using the document-engine\n const documents = createDocumentEngine({ strapi, db: strapi?.db });\n\n async function findMany(params = {} as any) {\n // TODO: replace with chaining\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findMany(uid, queryParams);\n }\n\n async function findFirst(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findFirst(uid, queryParams);\n }\n\n async function findOne(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findOne(uid, id, queryParams);\n }\n\n async function deleteFn(id: string, params = {} as any) {\n const queryParams = await pipeAsync(omit('status'), i18n.localeToLookup(contentType))(params);\n\n return documents.delete(uid, id, queryParams);\n }\n\n async function create(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToData,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await documents.create(uid, queryParams);\n\n if (params.status === 'published') {\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: doc.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return doc;\n }\n\n async function clone(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.filterDataPublishedAt,\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.clone(uid, id, queryParams);\n }\n\n async function update(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToLookup,\n DP.statusToData,\n DP.filterDataPublishedAt,\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 let updatedDraft = await documents.update(uid, id, queryParams);\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId: id } });\n\n if (documentExists) {\n updatedDraft = await create({\n ...queryParams,\n data: { ...queryParams.data, documentId: id },\n });\n }\n }\n\n if (updatedDraft && params.status === 'published') {\n await documents.delete(uid, id, {\n ...queryParams,\n status: 'published',\n lookup: { ...params?.lookup, publishedAt: { $notNull: true } },\n });\n\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: updatedDraft.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.count(uid, queryParams);\n }\n\n async function publish(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.publish(uid, id, queryParams);\n }\n\n async function unpublish(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.unpublish(uid, id, queryParams);\n }\n\n async function discardDraft(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.discardDraft(uid, id, queryParams);\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: wrapInTransaction(publish),\n unpublish: wrapInTransaction(unpublish),\n discardDraft: wrapInTransaction(discardDraft),\n };\n};\n"],"names":["createDocumentEngine","pipeAsync","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","omit","DP.setStatusToDraft","DP.statusToData","DP.filterDataPublishedAt","i18n.localeToData","wrapInTransaction"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"collection-type.mjs","sources":["../../../src/services/document-service/collection-type.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\n\nimport type { Schema } from '@strapi/types';\nimport { pipeAsync } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport createDocumentEngine from './document-engine';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\n\nexport const createCollectionTypeRepository: RepositoryFactoryMethod<Schema.CollectionType> = (\n contentType\n) => {\n const { uid } = contentType;\n\n // TODO: move the code back into here instead of using the document-engine\n const documents = createDocumentEngine({ strapi, db: strapi?.db });\n\n async function findMany(params = {} as any) {\n // TODO: replace with chaining\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findMany(uid, queryParams);\n }\n\n async function findFirst(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findFirst(uid, queryParams);\n }\n\n async function findOne(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findOne(uid, id, queryParams);\n }\n\n async function deleteFn(id: string, params = {} as any) {\n const queryParams = await pipeAsync(omit('status'), i18n.localeToLookup(contentType))(params);\n\n return documents.delete(uid, id, queryParams);\n }\n\n async function create(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToData,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await documents.create(uid, queryParams);\n\n if (params.status === 'published') {\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: doc.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return doc;\n }\n\n async function clone(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.filterDataPublishedAt,\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.clone(uid, id, queryParams);\n }\n\n async function update(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToLookup,\n DP.statusToData,\n DP.filterDataPublishedAt,\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 let updatedDraft = await documents.update(uid, id, queryParams);\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId: id } });\n\n if (documentExists) {\n updatedDraft = await create({\n ...queryParams,\n data: { ...queryParams.data, documentId: id },\n });\n }\n }\n\n if (updatedDraft && params.status === 'published') {\n await documents.delete(uid, id, {\n ...queryParams,\n status: 'published',\n lookup: { ...params?.lookup, publishedAt: { $notNull: true } },\n });\n\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: updatedDraft.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.count(uid, queryParams);\n }\n\n async function publish(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.publish(uid, id, queryParams);\n }\n\n async function unpublish(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.unpublish(uid, id, queryParams);\n }\n\n async function discardDraft(id: string, params = {} as any) {\n const queryParams = i18n.localeToLookup(contentType, params);\n\n return documents.discardDraft(uid, id, queryParams);\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: wrapInTransaction(publish),\n unpublish: wrapInTransaction(unpublish),\n discardDraft: wrapInTransaction(discardDraft),\n };\n};\n"],"names":["DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","DP.setStatusToDraft","DP.statusToData","DP.filterDataPublishedAt","i18n.localeToData"],"mappings":"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"}
|
@@ -1,3 +0,0 @@
|
|
1
|
-
import type { Schema, Documents } from '@strapi/types';
|
2
|
-
export declare const createContentTypeRepository: (contentType: Schema.SingleType | Schema.CollectionType) => Documents.ServiceInstance<Schema.SingleType | Schema.CollectionType>;
|
3
|
-
//# sourceMappingURL=repository-factory.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"repository-factory.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAKvD,eAAO,MAAM,2BAA2B,gBACzB,OAAO,UAAU,GAAG,OAAO,cAAc,KACrD,UAAU,eAAe,CAAC,OAAO,UAAU,GAAG,OAAO,cAAc,CAKrE,CAAC"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const singleType = require("./single-type.js");
|
4
|
-
const collectionType = require("./collection-type.js");
|
5
|
-
const createContentTypeRepository = (contentType) => {
|
6
|
-
if (contentType.kind === "singleType") {
|
7
|
-
return singleType.createSingleTypeRepository(contentType);
|
8
|
-
}
|
9
|
-
return collectionType.createCollectionTypeRepository(contentType);
|
10
|
-
};
|
11
|
-
exports.createContentTypeRepository = createContentTypeRepository;
|
12
|
-
//# sourceMappingURL=repository-factory.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"repository-factory.js","sources":["../../../src/services/document-service/repository-factory.ts"],"sourcesContent":["import type { Schema, Documents } from '@strapi/types';\n\nimport { createSingleTypeRepository } from './single-type';\nimport { createCollectionTypeRepository } from './collection-type';\n\nexport const createContentTypeRepository = (\n contentType: Schema.SingleType | Schema.CollectionType\n): Documents.ServiceInstance<Schema.SingleType | Schema.CollectionType> => {\n if (contentType.kind === 'singleType') {\n return createSingleTypeRepository(contentType);\n }\n return createCollectionTypeRepository(contentType);\n};\n"],"names":["createSingleTypeRepository","createCollectionTypeRepository"],"mappings":";;;;AAKa,MAAA,8BAA8B,CACzC,gBACyE;AACrE,MAAA,YAAY,SAAS,cAAc;AACrC,WAAOA,WAAAA,2BAA2B,WAAW;AAAA,EAC/C;AACA,SAAOC,eAAAA,+BAA+B,WAAW;AACnD;;"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import { createSingleTypeRepository } from "./single-type.mjs";
|
2
|
-
import { createCollectionTypeRepository } from "./collection-type.mjs";
|
3
|
-
const createContentTypeRepository = (contentType) => {
|
4
|
-
if (contentType.kind === "singleType") {
|
5
|
-
return createSingleTypeRepository(contentType);
|
6
|
-
}
|
7
|
-
return createCollectionTypeRepository(contentType);
|
8
|
-
};
|
9
|
-
export {
|
10
|
-
createContentTypeRepository
|
11
|
-
};
|
12
|
-
//# sourceMappingURL=repository-factory.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"repository-factory.mjs","sources":["../../../src/services/document-service/repository-factory.ts"],"sourcesContent":["import type { Schema, Documents } from '@strapi/types';\n\nimport { createSingleTypeRepository } from './single-type';\nimport { createCollectionTypeRepository } from './collection-type';\n\nexport const createContentTypeRepository = (\n contentType: Schema.SingleType | Schema.CollectionType\n): Documents.ServiceInstance<Schema.SingleType | Schema.CollectionType> => {\n if (contentType.kind === 'singleType') {\n return createSingleTypeRepository(contentType);\n }\n return createCollectionTypeRepository(contentType);\n};\n"],"names":[],"mappings":";;AAKa,MAAA,8BAA8B,CACzC,gBACyE;AACrE,MAAA,YAAY,SAAS,cAAc;AACrC,WAAO,2BAA2B,WAAW;AAAA,EAC/C;AACA,SAAO,+BAA+B,WAAW;AACnD;"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"single-type.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/single-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAK3E,eAAO,MAAM,0BAA0B,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAiHjF,CAAC"}
|
@@ -1,92 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const _ = require("lodash/fp");
|
4
|
-
const strapiUtils = require("@strapi/utils");
|
5
|
-
const common = require("./common.js");
|
6
|
-
const documentEngine = require("./document-engine.js");
|
7
|
-
const draftAndPublish = require("./draft-and-publish.js");
|
8
|
-
const internationalization = require("./internationalization.js");
|
9
|
-
const createSingleTypeRepository = (contentType) => {
|
10
|
-
const { uid } = contentType;
|
11
|
-
const documents = documentEngine({ strapi, db: strapi?.db });
|
12
|
-
async function find(params = {}) {
|
13
|
-
const queryParams = await strapiUtils.pipeAsync(
|
14
|
-
draftAndPublish.defaultToDraft,
|
15
|
-
draftAndPublish.statusToLookup,
|
16
|
-
internationalization.defaultLocale(contentType),
|
17
|
-
internationalization.localeToLookup(contentType)
|
18
|
-
)(params);
|
19
|
-
return documents.findFirst(uid, queryParams);
|
20
|
-
}
|
21
|
-
async function update(params = {}) {
|
22
|
-
const queryParams = await strapiUtils.pipeAsync(
|
23
|
-
draftAndPublish.setStatusToDraft,
|
24
|
-
draftAndPublish.statusToLookup,
|
25
|
-
draftAndPublish.statusToData,
|
26
|
-
draftAndPublish.filterDataPublishedAt,
|
27
|
-
// Default locale will be set if not provided
|
28
|
-
internationalization.defaultLocale(contentType),
|
29
|
-
internationalization.localeToLookup(contentType),
|
30
|
-
internationalization.localeToData(contentType)
|
31
|
-
)(params);
|
32
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
33
|
-
let doc;
|
34
|
-
if (!existingDoc) {
|
35
|
-
doc = await documents.create(uid, queryParams);
|
36
|
-
} else {
|
37
|
-
doc = await documents.update(uid, existingDoc.documentId, queryParams);
|
38
|
-
if (!doc) {
|
39
|
-
doc = await documents.create(uid, {
|
40
|
-
...queryParams,
|
41
|
-
data: { ...queryParams.data, documentId: existingDoc.documentId }
|
42
|
-
});
|
43
|
-
}
|
44
|
-
}
|
45
|
-
if (params.status === "published") {
|
46
|
-
await documents.delete(uid, doc.id, {
|
47
|
-
...queryParams,
|
48
|
-
status: "published",
|
49
|
-
lookup: { ...params?.lookup, publishedAt: { $notNull: true } }
|
50
|
-
});
|
51
|
-
return documents.create(uid, {
|
52
|
-
...queryParams,
|
53
|
-
data: {
|
54
|
-
...queryParams.data,
|
55
|
-
documentId: doc.id,
|
56
|
-
publishedAt: params?.data?.publishedAt ?? /* @__PURE__ */ new Date()
|
57
|
-
}
|
58
|
-
});
|
59
|
-
}
|
60
|
-
return doc;
|
61
|
-
}
|
62
|
-
async function deleteFn(params = {}) {
|
63
|
-
const queryParams = await strapiUtils.pipeAsync(_.omit("status"), internationalization.localeToLookup(contentType))(params);
|
64
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
65
|
-
return documents.delete(uid, existingDoc.documentId, queryParams);
|
66
|
-
}
|
67
|
-
async function publish(params = {}) {
|
68
|
-
const queryParams = internationalization.localeToLookup(contentType, params);
|
69
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
70
|
-
return documents.publish(uid, existingDoc.documentId, queryParams);
|
71
|
-
}
|
72
|
-
async function unpublish(params = {}) {
|
73
|
-
const queryParams = internationalization.localeToLookup(contentType, params);
|
74
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
75
|
-
return documents.unpublish(uid, existingDoc.documentId, queryParams);
|
76
|
-
}
|
77
|
-
async function discardDraft(params = {}) {
|
78
|
-
const queryParams = internationalization.localeToLookup(contentType, params);
|
79
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
80
|
-
return documents.discardDraft(uid, existingDoc.documentId, queryParams);
|
81
|
-
}
|
82
|
-
return {
|
83
|
-
find: common.wrapInTransaction(find),
|
84
|
-
delete: common.wrapInTransaction(deleteFn),
|
85
|
-
update: common.wrapInTransaction(update),
|
86
|
-
publish: common.wrapInTransaction(publish),
|
87
|
-
unpublish: common.wrapInTransaction(unpublish),
|
88
|
-
discardDraft: common.wrapInTransaction(discardDraft)
|
89
|
-
};
|
90
|
-
};
|
91
|
-
exports.createSingleTypeRepository = createSingleTypeRepository;
|
92
|
-
//# sourceMappingURL=single-type.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"single-type.js","sources":["../../../src/services/document-service/single-type.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\n\nimport type { Documents, Schema } from '@strapi/types';\nimport { pipeAsync } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport createDocumentEngine from './document-engine';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\n\nexport const createSingleTypeRepository: RepositoryFactoryMethod<Schema.SingleType> = (\n contentType\n): Documents.ServiceInstance<Schema.SingleType> => {\n const { uid } = contentType;\n\n // TODO: move the code back into here instead of using the document-engine\n const documents = createDocumentEngine({ strapi, db: strapi?.db });\n\n async function find(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findFirst(uid, queryParams);\n }\n\n async function update(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToLookup,\n DP.statusToData,\n DP.filterDataPublishedAt,\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 existingDoc = await strapi.db.query(contentType.uid).findOne();\n let doc: Documents.AnyDocument | null;\n\n if (!existingDoc) {\n doc = await documents.create(uid, queryParams);\n } else {\n doc = await documents.update(uid, existingDoc.documentId, queryParams);\n\n if (!doc) {\n doc = await documents.create(uid, {\n ...queryParams,\n data: { ...queryParams.data, documentId: existingDoc.documentId },\n });\n }\n }\n\n if (params.status === 'published') {\n // @ts-expect-error invalid ID type\n await documents.delete(uid, doc.id, {\n ...queryParams,\n status: 'published',\n lookup: { ...params?.lookup, publishedAt: { $notNull: true } },\n });\n\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: doc.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return doc;\n }\n\n async function deleteFn(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n // always delete both draft & published\n const queryParams = await pipeAsync(omit('status'), i18n.localeToLookup(contentType))(params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.delete(uid, existingDoc.documentId, queryParams);\n }\n\n async function publish(params = {} as any) {\n // TODO: Apply default locale like update\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.publish(uid, existingDoc.documentId, queryParams);\n }\n\n async function unpublish(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.unpublish(uid, existingDoc.documentId, queryParams);\n }\n\n async function discardDraft(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.discardDraft(uid, existingDoc.documentId, queryParams);\n }\n\n return {\n find: wrapInTransaction(find),\n delete: wrapInTransaction(deleteFn),\n update: wrapInTransaction(update),\n publish: wrapInTransaction(publish),\n unpublish: wrapInTransaction(unpublish),\n discardDraft: wrapInTransaction(discardDraft),\n };\n};\n"],"names":["createDocumentEngine","pipeAsync","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","DP.setStatusToDraft","DP.statusToData","DP.filterDataPublishedAt","i18n.localeToData","omit","wrapInTransaction"],"mappings":"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"}
|
@@ -1,92 +0,0 @@
|
|
1
|
-
import { omit } from "lodash/fp";
|
2
|
-
import { pipeAsync } from "@strapi/utils";
|
3
|
-
import { wrapInTransaction } from "./common.mjs";
|
4
|
-
import createDocumentEngine from "./document-engine.mjs";
|
5
|
-
import { defaultToDraft, statusToLookup, setStatusToDraft, statusToData, filterDataPublishedAt } from "./draft-and-publish.mjs";
|
6
|
-
import { defaultLocale as defaultLocaleCurry, localeToLookup as localeToLookupCurry, localeToData as localeToDataCurry } from "./internationalization.mjs";
|
7
|
-
const createSingleTypeRepository = (contentType) => {
|
8
|
-
const { uid } = contentType;
|
9
|
-
const documents = createDocumentEngine({ strapi, db: strapi?.db });
|
10
|
-
async function find(params = {}) {
|
11
|
-
const queryParams = await pipeAsync(
|
12
|
-
defaultToDraft,
|
13
|
-
statusToLookup,
|
14
|
-
defaultLocaleCurry(contentType),
|
15
|
-
localeToLookupCurry(contentType)
|
16
|
-
)(params);
|
17
|
-
return documents.findFirst(uid, queryParams);
|
18
|
-
}
|
19
|
-
async function update(params = {}) {
|
20
|
-
const queryParams = await pipeAsync(
|
21
|
-
setStatusToDraft,
|
22
|
-
statusToLookup,
|
23
|
-
statusToData,
|
24
|
-
filterDataPublishedAt,
|
25
|
-
// Default locale will be set if not provided
|
26
|
-
defaultLocaleCurry(contentType),
|
27
|
-
localeToLookupCurry(contentType),
|
28
|
-
localeToDataCurry(contentType)
|
29
|
-
)(params);
|
30
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
31
|
-
let doc;
|
32
|
-
if (!existingDoc) {
|
33
|
-
doc = await documents.create(uid, queryParams);
|
34
|
-
} else {
|
35
|
-
doc = await documents.update(uid, existingDoc.documentId, queryParams);
|
36
|
-
if (!doc) {
|
37
|
-
doc = await documents.create(uid, {
|
38
|
-
...queryParams,
|
39
|
-
data: { ...queryParams.data, documentId: existingDoc.documentId }
|
40
|
-
});
|
41
|
-
}
|
42
|
-
}
|
43
|
-
if (params.status === "published") {
|
44
|
-
await documents.delete(uid, doc.id, {
|
45
|
-
...queryParams,
|
46
|
-
status: "published",
|
47
|
-
lookup: { ...params?.lookup, publishedAt: { $notNull: true } }
|
48
|
-
});
|
49
|
-
return documents.create(uid, {
|
50
|
-
...queryParams,
|
51
|
-
data: {
|
52
|
-
...queryParams.data,
|
53
|
-
documentId: doc.id,
|
54
|
-
publishedAt: params?.data?.publishedAt ?? /* @__PURE__ */ new Date()
|
55
|
-
}
|
56
|
-
});
|
57
|
-
}
|
58
|
-
return doc;
|
59
|
-
}
|
60
|
-
async function deleteFn(params = {}) {
|
61
|
-
const queryParams = await pipeAsync(omit("status"), localeToLookupCurry(contentType))(params);
|
62
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
63
|
-
return documents.delete(uid, existingDoc.documentId, queryParams);
|
64
|
-
}
|
65
|
-
async function publish(params = {}) {
|
66
|
-
const queryParams = localeToLookupCurry(contentType, params);
|
67
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
68
|
-
return documents.publish(uid, existingDoc.documentId, queryParams);
|
69
|
-
}
|
70
|
-
async function unpublish(params = {}) {
|
71
|
-
const queryParams = localeToLookupCurry(contentType, params);
|
72
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
73
|
-
return documents.unpublish(uid, existingDoc.documentId, queryParams);
|
74
|
-
}
|
75
|
-
async function discardDraft(params = {}) {
|
76
|
-
const queryParams = localeToLookupCurry(contentType, params);
|
77
|
-
const existingDoc = await strapi.db.query(contentType.uid).findOne();
|
78
|
-
return documents.discardDraft(uid, existingDoc.documentId, queryParams);
|
79
|
-
}
|
80
|
-
return {
|
81
|
-
find: wrapInTransaction(find),
|
82
|
-
delete: wrapInTransaction(deleteFn),
|
83
|
-
update: wrapInTransaction(update),
|
84
|
-
publish: wrapInTransaction(publish),
|
85
|
-
unpublish: wrapInTransaction(unpublish),
|
86
|
-
discardDraft: wrapInTransaction(discardDraft)
|
87
|
-
};
|
88
|
-
};
|
89
|
-
export {
|
90
|
-
createSingleTypeRepository
|
91
|
-
};
|
92
|
-
//# sourceMappingURL=single-type.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"single-type.mjs","sources":["../../../src/services/document-service/single-type.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\n\nimport type { Documents, Schema } from '@strapi/types';\nimport { pipeAsync } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport createDocumentEngine from './document-engine';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\n\nexport const createSingleTypeRepository: RepositoryFactoryMethod<Schema.SingleType> = (\n contentType\n): Documents.ServiceInstance<Schema.SingleType> => {\n const { uid } = contentType;\n\n // TODO: move the code back into here instead of using the document-engine\n const documents = createDocumentEngine({ strapi, db: strapi?.db });\n\n async function find(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findFirst(uid, queryParams);\n }\n\n async function update(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToLookup,\n DP.statusToData,\n DP.filterDataPublishedAt,\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 existingDoc = await strapi.db.query(contentType.uid).findOne();\n let doc: Documents.AnyDocument | null;\n\n if (!existingDoc) {\n doc = await documents.create(uid, queryParams);\n } else {\n doc = await documents.update(uid, existingDoc.documentId, queryParams);\n\n if (!doc) {\n doc = await documents.create(uid, {\n ...queryParams,\n data: { ...queryParams.data, documentId: existingDoc.documentId },\n });\n }\n }\n\n if (params.status === 'published') {\n // @ts-expect-error invalid ID type\n await documents.delete(uid, doc.id, {\n ...queryParams,\n status: 'published',\n lookup: { ...params?.lookup, publishedAt: { $notNull: true } },\n });\n\n return documents.create(uid, {\n ...queryParams,\n data: {\n ...queryParams.data,\n documentId: doc.id,\n publishedAt: params?.data?.publishedAt ?? new Date(),\n },\n });\n }\n\n return doc;\n }\n\n async function deleteFn(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n // always delete both draft & published\n const queryParams = await pipeAsync(omit('status'), i18n.localeToLookup(contentType))(params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.delete(uid, existingDoc.documentId, queryParams);\n }\n\n async function publish(params = {} as any) {\n // TODO: Apply default locale like update\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.publish(uid, existingDoc.documentId, queryParams);\n }\n\n async function unpublish(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.unpublish(uid, existingDoc.documentId, queryParams);\n }\n\n async function discardDraft(params = {} as any) {\n // TODO: Apply default locale like update ?\n // TODO: allow action on multiple locales with array or all locales with *\n\n const queryParams = i18n.localeToLookup(contentType, params);\n const existingDoc = await strapi.db.query(contentType.uid).findOne();\n return documents.discardDraft(uid, existingDoc.documentId, queryParams);\n }\n\n return {\n find: wrapInTransaction(find),\n delete: wrapInTransaction(deleteFn),\n update: wrapInTransaction(update),\n publish: wrapInTransaction(publish),\n unpublish: wrapInTransaction(unpublish),\n discardDraft: wrapInTransaction(discardDraft),\n };\n};\n"],"names":["DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","DP.setStatusToDraft","DP.statusToData","DP.filterDataPublishedAt","i18n.localeToData"],"mappings":"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"}
|
@@ -1,49 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const strapiUtils = require("@strapi/utils");
|
4
|
-
const fields = require("./fields.js");
|
5
|
-
const utils = require("./utils.js");
|
6
|
-
const logicalOperatorIdReplacement = (filter) => {
|
7
|
-
return Object.keys(filter).forEach((key) => {
|
8
|
-
if (key.startsWith("$")) {
|
9
|
-
if (Array.isArray(filter[key])) {
|
10
|
-
filter[key].forEach((item) => {
|
11
|
-
if (typeof item === "object") {
|
12
|
-
logicalOperatorIdReplacement(item);
|
13
|
-
}
|
14
|
-
});
|
15
|
-
} else if (typeof filter[key] === "object") {
|
16
|
-
logicalOperatorIdReplacement(filter[key]);
|
17
|
-
}
|
18
|
-
} else if (key === "id") {
|
19
|
-
utils.switchDocumentIdForId(filter);
|
20
|
-
}
|
21
|
-
});
|
22
|
-
};
|
23
|
-
const transformFilters = async (data, opts) => {
|
24
|
-
utils.switchDocumentIdForId(data);
|
25
|
-
logicalOperatorIdReplacement(data);
|
26
|
-
return strapiUtils.traverse.traverseQueryFilters(
|
27
|
-
async ({ attribute, key, value }, { set }) => {
|
28
|
-
if (!attribute || !value) {
|
29
|
-
return;
|
30
|
-
}
|
31
|
-
if (attribute.type === "relation") {
|
32
|
-
(Array.isArray(value) ? value : [value]).forEach((item) => {
|
33
|
-
if (typeof item === "object") {
|
34
|
-
logicalOperatorIdReplacement(item);
|
35
|
-
}
|
36
|
-
});
|
37
|
-
set(key, value);
|
38
|
-
} else if (key === "filters") {
|
39
|
-
set(key, await transformFilters(value, opts));
|
40
|
-
} else if (key === "fields") {
|
41
|
-
set(key, fields.transformFields(value));
|
42
|
-
}
|
43
|
-
},
|
44
|
-
{ schema: strapi.getModel(opts.uid) },
|
45
|
-
data
|
46
|
-
);
|
47
|
-
};
|
48
|
-
exports.transformFilters = transformFilters;
|
49
|
-
//# sourceMappingURL=filters.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"filters.js","sources":["../../../../src/services/document-service/transform/filters.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { transformFields } from './fields';\n\nimport { type Data, type Options } from './types';\nimport { switchDocumentIdForId } from './utils';\n\nconst logicalOperatorIdReplacement = (filter: Data) => {\n return Object.keys(filter).forEach((key) => {\n // If the key is a logical operator ($and, $or, $nor)\n // recursively call this function on the value of the key\n // To find any nested ids that need to be replaced\n if (key.startsWith('$')) {\n if (Array.isArray(filter[key])) {\n filter[key].forEach((item: Data) => {\n if (typeof item === 'object') {\n logicalOperatorIdReplacement(item);\n }\n });\n } else if (typeof filter[key] === 'object') {\n logicalOperatorIdReplacement(filter[key]);\n }\n } else if (key === 'id') {\n // If the key is 'id', replace it with 'documentId'\n switchDocumentIdForId(filter);\n }\n });\n};\n\nexport const transformFilters = async (data: Data, opts: Options) => {\n // Before doing the filters traversal change any top level 'id' properties to 'documentId'\n switchDocumentIdForId(data);\n logicalOperatorIdReplacement(data);\n\n return traverse.traverseQueryFilters(\n async ({ attribute, key, value }, { set }) => {\n if (!attribute || !value) {\n return;\n }\n\n if (attribute.type === 'relation') {\n /*\n If the attribute is a relation\n and the value is an object\n and the object contains an id field\n then we replace the value with the documentId\n \n If the value is an array of objects\n we apply the same logic to each object in the array\n */\n (Array.isArray(value) ? value : [value]).forEach((item) => {\n if (typeof item === 'object') {\n logicalOperatorIdReplacement(item as Data);\n }\n });\n\n set(key, value);\n } else if (key === 'filters') {\n set(key, await transformFilters(value as any, opts));\n } else if (key === 'fields') {\n set(key, transformFields(value as any) as any);\n }\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":["switchDocumentIdForId","traverse","transformFields"],"mappings":";;;;;AAMA,MAAM,+BAA+B,CAAC,WAAiB;AACrD,SAAO,OAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AAItC,QAAA,IAAI,WAAW,GAAG,GAAG;AACvB,UAAI,MAAM,QAAQ,OAAO,GAAG,CAAC,GAAG;AAC9B,eAAO,GAAG,EAAE,QAAQ,CAAC,SAAe;AAC9B,cAAA,OAAO,SAAS,UAAU;AAC5B,yCAA6B,IAAI;AAAA,UACnC;AAAA,QAAA,CACD;AAAA,MACQ,WAAA,OAAO,OAAO,GAAG,MAAM,UAAU;AACb,qCAAA,OAAO,GAAG,CAAC;AAAA,MAC1C;AAAA,IAAA,WACS,QAAQ,MAAM;AAEvBA,YAAA,sBAAsB,MAAM;AAAA,IAC9B;AAAA,EAAA,CACD;AACH;AAEa,MAAA,mBAAmB,OAAO,MAAY,SAAkB;AAEnEA,QAAA,sBAAsB,IAAI;AAC1B,+BAA6B,IAAI;AAEjC,SAAOC,YAAS,SAAA;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AACxC,UAAA,CAAC,aAAa,CAAC,OAAO;AACxB;AAAA,MACF;AAEI,UAAA,UAAU,SAAS,YAAY;AAUhC,SAAA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,SAAS;AACrD,cAAA,OAAO,SAAS,UAAU;AAC5B,yCAA6B,IAAY;AAAA,UAC3C;AAAA,QAAA,CACD;AAED,YAAI,KAAK,KAAK;AAAA,MAAA,WACL,QAAQ,WAAW;AAC5B,YAAI,KAAK,MAAM,iBAAiB,OAAc,IAAI,CAAC;AAAA,MAAA,WAC1C,QAAQ,UAAU;AACvB,YAAA,KAAKC,uBAAgB,KAAY,CAAQ;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;;"}
|
@@ -1,49 +0,0 @@
|
|
1
|
-
import { traverse } from "@strapi/utils";
|
2
|
-
import { transformFields } from "./fields.mjs";
|
3
|
-
import { switchDocumentIdForId } from "./utils.mjs";
|
4
|
-
const logicalOperatorIdReplacement = (filter) => {
|
5
|
-
return Object.keys(filter).forEach((key) => {
|
6
|
-
if (key.startsWith("$")) {
|
7
|
-
if (Array.isArray(filter[key])) {
|
8
|
-
filter[key].forEach((item) => {
|
9
|
-
if (typeof item === "object") {
|
10
|
-
logicalOperatorIdReplacement(item);
|
11
|
-
}
|
12
|
-
});
|
13
|
-
} else if (typeof filter[key] === "object") {
|
14
|
-
logicalOperatorIdReplacement(filter[key]);
|
15
|
-
}
|
16
|
-
} else if (key === "id") {
|
17
|
-
switchDocumentIdForId(filter);
|
18
|
-
}
|
19
|
-
});
|
20
|
-
};
|
21
|
-
const transformFilters = async (data, opts) => {
|
22
|
-
switchDocumentIdForId(data);
|
23
|
-
logicalOperatorIdReplacement(data);
|
24
|
-
return traverse.traverseQueryFilters(
|
25
|
-
async ({ attribute, key, value }, { set }) => {
|
26
|
-
if (!attribute || !value) {
|
27
|
-
return;
|
28
|
-
}
|
29
|
-
if (attribute.type === "relation") {
|
30
|
-
(Array.isArray(value) ? value : [value]).forEach((item) => {
|
31
|
-
if (typeof item === "object") {
|
32
|
-
logicalOperatorIdReplacement(item);
|
33
|
-
}
|
34
|
-
});
|
35
|
-
set(key, value);
|
36
|
-
} else if (key === "filters") {
|
37
|
-
set(key, await transformFilters(value, opts));
|
38
|
-
} else if (key === "fields") {
|
39
|
-
set(key, transformFields(value));
|
40
|
-
}
|
41
|
-
},
|
42
|
-
{ schema: strapi.getModel(opts.uid) },
|
43
|
-
data
|
44
|
-
);
|
45
|
-
};
|
46
|
-
export {
|
47
|
-
transformFilters
|
48
|
-
};
|
49
|
-
//# sourceMappingURL=filters.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"filters.mjs","sources":["../../../../src/services/document-service/transform/filters.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { transformFields } from './fields';\n\nimport { type Data, type Options } from './types';\nimport { switchDocumentIdForId } from './utils';\n\nconst logicalOperatorIdReplacement = (filter: Data) => {\n return Object.keys(filter).forEach((key) => {\n // If the key is a logical operator ($and, $or, $nor)\n // recursively call this function on the value of the key\n // To find any nested ids that need to be replaced\n if (key.startsWith('$')) {\n if (Array.isArray(filter[key])) {\n filter[key].forEach((item: Data) => {\n if (typeof item === 'object') {\n logicalOperatorIdReplacement(item);\n }\n });\n } else if (typeof filter[key] === 'object') {\n logicalOperatorIdReplacement(filter[key]);\n }\n } else if (key === 'id') {\n // If the key is 'id', replace it with 'documentId'\n switchDocumentIdForId(filter);\n }\n });\n};\n\nexport const transformFilters = async (data: Data, opts: Options) => {\n // Before doing the filters traversal change any top level 'id' properties to 'documentId'\n switchDocumentIdForId(data);\n logicalOperatorIdReplacement(data);\n\n return traverse.traverseQueryFilters(\n async ({ attribute, key, value }, { set }) => {\n if (!attribute || !value) {\n return;\n }\n\n if (attribute.type === 'relation') {\n /*\n If the attribute is a relation\n and the value is an object\n and the object contains an id field\n then we replace the value with the documentId\n \n If the value is an array of objects\n we apply the same logic to each object in the array\n */\n (Array.isArray(value) ? value : [value]).forEach((item) => {\n if (typeof item === 'object') {\n logicalOperatorIdReplacement(item as Data);\n }\n });\n\n set(key, value);\n } else if (key === 'filters') {\n set(key, await transformFilters(value as any, opts));\n } else if (key === 'fields') {\n set(key, transformFields(value as any) as any);\n }\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":[],"mappings":";;;AAMA,MAAM,+BAA+B,CAAC,WAAiB;AACrD,SAAO,OAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AAItC,QAAA,IAAI,WAAW,GAAG,GAAG;AACvB,UAAI,MAAM,QAAQ,OAAO,GAAG,CAAC,GAAG;AAC9B,eAAO,GAAG,EAAE,QAAQ,CAAC,SAAe;AAC9B,cAAA,OAAO,SAAS,UAAU;AAC5B,yCAA6B,IAAI;AAAA,UACnC;AAAA,QAAA,CACD;AAAA,MACQ,WAAA,OAAO,OAAO,GAAG,MAAM,UAAU;AACb,qCAAA,OAAO,GAAG,CAAC;AAAA,MAC1C;AAAA,IAAA,WACS,QAAQ,MAAM;AAEvB,4BAAsB,MAAM;AAAA,IAC9B;AAAA,EAAA,CACD;AACH;AAEa,MAAA,mBAAmB,OAAO,MAAY,SAAkB;AAEnE,wBAAsB,IAAI;AAC1B,+BAA6B,IAAI;AAEjC,SAAO,SAAS;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AACxC,UAAA,CAAC,aAAa,CAAC,OAAO;AACxB;AAAA,MACF;AAEI,UAAA,UAAU,SAAS,YAAY;AAUhC,SAAA,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,SAAS;AACrD,cAAA,OAAO,SAAS,UAAU;AAC5B,yCAA6B,IAAY;AAAA,UAC3C;AAAA,QAAA,CACD;AAED,YAAI,KAAK,KAAK;AAAA,MAAA,WACL,QAAQ,WAAW;AAC5B,YAAI,KAAK,MAAM,iBAAiB,OAAc,IAAI,CAAC;AAAA,MAAA,WAC1C,QAAQ,UAAU;AACvB,YAAA,KAAK,gBAAgB,KAAY,CAAQ;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;"}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const strapiUtils = require("@strapi/utils");
|
4
|
-
const _ = require("lodash/fp");
|
5
|
-
const utils = require("../../utils.js");
|
6
|
-
const transformOutputIds = async (uid, output) => {
|
7
|
-
return strapiUtils.traverseEntity(
|
8
|
-
({ key, value, attribute }, { set }) => {
|
9
|
-
if (attribute.type === "relation") {
|
10
|
-
if (Array.isArray(value)) {
|
11
|
-
set(key, value.map(utils.switchIdForDocumentId));
|
12
|
-
return;
|
13
|
-
}
|
14
|
-
if (!_.isObject(value))
|
15
|
-
return;
|
16
|
-
if ("id" in value && "documentId" in value) {
|
17
|
-
set(key, utils.switchIdForDocumentId(value));
|
18
|
-
}
|
19
|
-
}
|
20
|
-
},
|
21
|
-
{ schema: strapi.getModel(uid) },
|
22
|
-
output
|
23
|
-
);
|
24
|
-
};
|
25
|
-
exports.transformOutputIds = transformOutputIds;
|
26
|
-
//# sourceMappingURL=output-ids.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"output-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/output-ids.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { traverseEntity } from '@strapi/utils';\nimport { isObject } from 'lodash/fp';\nimport { switchIdForDocumentId } from '../../utils';\n\nconst transformOutputIds = async (uid: Common.UID.Schema, output: Record<string, any>) => {\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n // Find relational attributes, and return the document ids\n if (attribute.type === 'relation') {\n // XToMany relations\n if (Array.isArray(value)) {\n // @ts-expect-error - TODO: Fix type\n set(key, value.map(switchIdForDocumentId));\n return;\n }\n\n if (!isObject(value)) return;\n // XToOne relations\n // If document id is in the response, switch it to be the id\n if ('id' in value && 'documentId' in value) {\n set(key, switchIdForDocumentId(value));\n }\n }\n },\n { schema: strapi.getModel(uid) },\n output\n );\n};\n\nexport { transformOutputIds };\n"],"names":["traverseEntity","switchIdForDocumentId","isObject"],"mappings":";;;;;AAKM,MAAA,qBAAqB,OAAO,KAAwB,WAAgC;AACjF,SAAAA,YAAA;AAAA,IACL,CAAC,EAAE,KAAK,OAAO,aAAa,EAAE,UAAU;AAElC,UAAA,UAAU,SAAS,YAAY;AAE7B,YAAA,MAAM,QAAQ,KAAK,GAAG;AAExB,cAAI,KAAK,MAAM,IAAIC,MAAAA,qBAAqB,CAAC;AACzC;AAAA,QACF;AAEI,YAAA,CAACC,WAAS,KAAK;AAAG;AAGlB,YAAA,QAAQ,SAAS,gBAAgB,OAAO;AACtC,cAAA,KAAKD,4BAAsB,KAAK,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,GAAG,EAAE;AAAA,IAC/B;AAAA,EAAA;AAEJ;;"}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { traverseEntity } from "@strapi/utils";
|
2
|
-
import { isObject } from "lodash/fp";
|
3
|
-
import { switchIdForDocumentId } from "../../utils.mjs";
|
4
|
-
const transformOutputIds = async (uid, output) => {
|
5
|
-
return traverseEntity(
|
6
|
-
({ key, value, attribute }, { set }) => {
|
7
|
-
if (attribute.type === "relation") {
|
8
|
-
if (Array.isArray(value)) {
|
9
|
-
set(key, value.map(switchIdForDocumentId));
|
10
|
-
return;
|
11
|
-
}
|
12
|
-
if (!isObject(value))
|
13
|
-
return;
|
14
|
-
if ("id" in value && "documentId" in value) {
|
15
|
-
set(key, switchIdForDocumentId(value));
|
16
|
-
}
|
17
|
-
}
|
18
|
-
},
|
19
|
-
{ schema: strapi.getModel(uid) },
|
20
|
-
output
|
21
|
-
);
|
22
|
-
};
|
23
|
-
export {
|
24
|
-
transformOutputIds
|
25
|
-
};
|
26
|
-
//# sourceMappingURL=output-ids.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"output-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/output-ids.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { traverseEntity } from '@strapi/utils';\nimport { isObject } from 'lodash/fp';\nimport { switchIdForDocumentId } from '../../utils';\n\nconst transformOutputIds = async (uid: Common.UID.Schema, output: Record<string, any>) => {\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n // Find relational attributes, and return the document ids\n if (attribute.type === 'relation') {\n // XToMany relations\n if (Array.isArray(value)) {\n // @ts-expect-error - TODO: Fix type\n set(key, value.map(switchIdForDocumentId));\n return;\n }\n\n if (!isObject(value)) return;\n // XToOne relations\n // If document id is in the response, switch it to be the id\n if ('id' in value && 'documentId' in value) {\n set(key, switchIdForDocumentId(value));\n }\n }\n },\n { schema: strapi.getModel(uid) },\n output\n );\n};\n\nexport { transformOutputIds };\n"],"names":[],"mappings":";;;AAKM,MAAA,qBAAqB,OAAO,KAAwB,WAAgC;AACjF,SAAA;AAAA,IACL,CAAC,EAAE,KAAK,OAAO,aAAa,EAAE,UAAU;AAElC,UAAA,UAAU,SAAS,YAAY;AAE7B,YAAA,MAAM,QAAQ,KAAK,GAAG;AAExB,cAAI,KAAK,MAAM,IAAI,qBAAqB,CAAC;AACzC;AAAA,QACF;AAEI,YAAA,CAAC,SAAS,KAAK;AAAG;AAGlB,YAAA,QAAQ,SAAS,gBAAgB,OAAO;AACtC,cAAA,KAAK,sBAAsB,KAAK,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,GAAG,EAAE;AAAA,IAC/B;AAAA,EAAA;AAEJ;"}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const strapiUtils = require("@strapi/utils");
|
4
|
-
const utils = require("./utils.js");
|
5
|
-
const rootIdReplacement = (sort) => {
|
6
|
-
if (typeof sort === "object") {
|
7
|
-
return utils.switchDocumentIdForId(sort);
|
8
|
-
}
|
9
|
-
if (typeof sort === "string") {
|
10
|
-
let sortCopy = sort;
|
11
|
-
let suffix = "";
|
12
|
-
const match = sort.match(/:(\w+)$/);
|
13
|
-
if (match) {
|
14
|
-
suffix = match[0];
|
15
|
-
sortCopy = sort.replace(suffix, "");
|
16
|
-
}
|
17
|
-
if (sortCopy === "id") {
|
18
|
-
sortCopy = "documentId";
|
19
|
-
} else {
|
20
|
-
sortCopy = sortCopy.split(",").map((value) => value === "id" ? "documentId" : value).join(",");
|
21
|
-
}
|
22
|
-
return sortCopy + suffix;
|
23
|
-
}
|
24
|
-
return sort;
|
25
|
-
};
|
26
|
-
const transformSort = async (sort, opts) => {
|
27
|
-
let mappedSort;
|
28
|
-
if (Array.isArray(sort)) {
|
29
|
-
mappedSort = sort.map(rootIdReplacement);
|
30
|
-
} else {
|
31
|
-
mappedSort = rootIdReplacement(sort);
|
32
|
-
}
|
33
|
-
return strapiUtils.traverse.traverseQuerySort(
|
34
|
-
({ attribute, value, key }, { set }) => {
|
35
|
-
if (attribute?.type === "relation") {
|
36
|
-
set(key, rootIdReplacement(value));
|
37
|
-
}
|
38
|
-
},
|
39
|
-
{ schema: strapi.getModel(opts.uid) },
|
40
|
-
mappedSort
|
41
|
-
);
|
42
|
-
};
|
43
|
-
exports.transformSort = transformSort;
|
44
|
-
//# sourceMappingURL=sort.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"sort.js","sources":["../../../../src/services/document-service/transform/sort.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { Options, Data } from './types';\nimport { switchDocumentIdForId } from './utils';\n\ntype Sort = Data | string;\n\nconst rootIdReplacement = (sort: Sort) => {\n if (typeof sort === 'object') {\n return switchDocumentIdForId(sort);\n }\n\n if (typeof sort === 'string') {\n let sortCopy = sort;\n let suffix = '';\n const match = sort.match(/:(\\w+)$/);\n if (match) {\n suffix = match[0];\n\n // TODO is there a regex to match :ASC or :DESC?\n sortCopy = sort.replace(suffix, '');\n }\n\n if (sortCopy === 'id') {\n sortCopy = 'documentId';\n } else {\n sortCopy = sortCopy\n .split(',')\n .map((value: any) => (value === 'id' ? 'documentId' : value))\n .join(',');\n }\n\n return sortCopy + suffix;\n }\n\n return sort;\n};\n\nexport const transformSort = async (sort: Sort | Sort[], opts: Options) => {\n let mappedSort;\n\n // Replace any top level 'id' properties with 'documentId'\n if (Array.isArray(sort)) {\n mappedSort = sort.map(rootIdReplacement);\n } else {\n mappedSort = rootIdReplacement(sort);\n }\n\n return traverse.traverseQuerySort(\n ({ attribute, value, key }, { set }) => {\n if (attribute?.type === 'relation') {\n // Replace any relation 'id' properties with 'documentId'\n set(key, rootIdReplacement(value as any));\n }\n },\n { schema: strapi.getModel(opts.uid) },\n mappedSort\n );\n};\n"],"names":["switchDocumentIdForId","traverse"],"mappings":";;;;AAMA,MAAM,oBAAoB,CAAC,SAAe;AACpC,MAAA,OAAO,SAAS,UAAU;AAC5B,WAAOA,MAAAA,sBAAsB,IAAI;AAAA,EACnC;AAEI,MAAA,OAAO,SAAS,UAAU;AAC5B,QAAI,WAAW;AACf,QAAI,SAAS;AACP,UAAA,QAAQ,KAAK,MAAM,SAAS;AAClC,QAAI,OAAO;AACT,eAAS,MAAM,CAAC;AAGL,iBAAA,KAAK,QAAQ,QAAQ,EAAE;AAAA,IACpC;AAEA,QAAI,aAAa,MAAM;AACV,iBAAA;AAAA,IAAA,OACN;AACL,iBAAW,SACR,MAAM,GAAG,EACT,IAAI,CAAC,UAAgB,UAAU,OAAO,eAAe,KAAM,EAC3D,KAAK,GAAG;AAAA,IACb;AAEA,WAAO,WAAW;AAAA,EACpB;AAEO,SAAA;AACT;AAEa,MAAA,gBAAgB,OAAO,MAAqB,SAAkB;AACrE,MAAA;AAGA,MAAA,MAAM,QAAQ,IAAI,GAAG;AACV,iBAAA,KAAK,IAAI,iBAAiB;AAAA,EAAA,OAClC;AACL,iBAAa,kBAAkB,IAAI;AAAA,EACrC;AAEA,SAAOC,YAAS,SAAA;AAAA,IACd,CAAC,EAAE,WAAW,OAAO,OAAO,EAAE,UAAU;AAClC,UAAA,WAAW,SAAS,YAAY;AAE9B,YAAA,KAAK,kBAAkB,KAAY,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;;"}
|