@strapi/content-manager 5.45.0 → 5.46.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/admin/content-manager.js +26 -2
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs +26 -2
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/hooks/useContentTypeSchema.js +4 -1
- package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
- package/dist/admin/hooks/useContentTypeSchema.mjs +4 -1
- package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js +67 -45
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.mjs +67 -45
- package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.js +4 -1
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.mjs +4 -1
- package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js +7 -3
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.mjs +7 -3
- package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +21 -4
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +19 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +9 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +10 -7
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +1 -34
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +3 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +33 -18
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +34 -19
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/DefaultBlocksStore.js +22 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/DefaultBlocksStore.js.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/DefaultBlocksStore.mjs +20 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/DefaultBlocksStore.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +15 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +16 -5
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +26 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +26 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +31 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +31 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +3 -0
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs +3 -0
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +24 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +24 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
- package/dist/admin/preview/utils/previewScript.js +616 -78
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- package/dist/admin/preview/utils/previewScript.mjs +616 -78
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
- package/dist/admin/src/content-manager.d.ts +26 -0
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +14 -8
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/DefaultBlocksStore.d.ts +3 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCard.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +11 -1
- package/dist/server/homepage/services/homepage.js +12 -8
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +12 -8
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/services/metrics.js +1 -5
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +1 -5
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.js","sources":["../../../../server/src/homepage/services/homepage.ts"],"sourcesContent":["/* eslint-disable func-names */\nimport type { Core, Modules, Schema } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport type {\n GetCountDocuments,\n GetRecentDocuments,\n RecentDocument,\n} from '../../../../shared/contracts/homepage';\n\nconst createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {\n const MAX_DOCUMENTS = 4;\n\n const metadataService = strapi.plugin('content-manager').service('document-metadata');\n const permissionService = strapi.admin.services.permission;\n\n type ContentTypeConfiguration = {\n uid: RecentDocument['contentTypeUid'];\n settings: { mainField: string };\n };\n const getConfiguration = async (\n contentTypeUids: RecentDocument['contentTypeUid'][]\n ): Promise<ContentTypeConfiguration[]> => {\n /**\n * Don't use the strapi.store util because we need to make\n * more precise queries than exact key matches, in order to make as few queries as possible.\n */\n const coreStore = strapi.db.query('strapi::core-store');\n const rawConfigurations = await coreStore.findMany({\n where: {\n key: {\n $in: contentTypeUids.map(\n (contentType) => `plugin_content_manager_configuration_content_types::${contentType}`\n ),\n },\n },\n });\n\n return rawConfigurations.map((rawConfiguration) => {\n return JSON.parse(rawConfiguration.value);\n });\n };\n\n const getPermittedContentTypes = async () => {\n const readPermissions: Modules.Permissions.PermissionRule[] = await permissionService.findMany({\n where: {\n role: { users: { id: strapi.requestContext.get()?.state?.user.id } },\n action: 'plugin::content-manager.explorer.read',\n },\n });\n\n return readPermissions\n .map((permission) => permission.subject)\n .filter(Boolean) as RecentDocument['contentTypeUid'][];\n };\n\n type ContentTypeMeta = {\n fields: string[];\n mainField: string;\n contentType: Schema.ContentType;\n hasDraftAndPublish: boolean;\n uid: RecentDocument['contentTypeUid'];\n };\n\n const getContentTypesMeta = (\n allowedContentTypeUids: RecentDocument['contentTypeUid'][],\n configurations: ContentTypeConfiguration[]\n ): ContentTypeMeta[] => {\n return allowedContentTypeUids.map((uid) => {\n const configuration = configurations.find((config) => config.uid === uid);\n const contentType = strapi.contentType(uid);\n const fields = ['documentId', 'updatedAt'];\n\n // Add fields required to get the status if D&P is enabled\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n if (hasDraftAndPublish) {\n fields.push('publishedAt');\n }\n\n // Only add the main field if it's defined\n if (configuration?.settings.mainField) {\n fields.push(configuration.settings.mainField);\n }\n\n // Only add locale if it's localized\n const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;\n if (isLocalized) {\n fields.push('locale');\n }\n\n return {\n fields,\n mainField: configuration!.settings.mainField,\n contentType,\n hasDraftAndPublish,\n uid,\n };\n });\n };\n\n const formatDocuments = (\n documents: Modules.Documents.AnyDocument[],\n meta: ContentTypeMeta,\n populate?: string[]\n ) => {\n return documents.map((document) => {\n const additionalFields =\n populate?.reduce(\n (acc, key) => {\n acc[key] = document[key];\n return acc;\n },\n {} as Record<string, any>\n ) || {};\n return {\n documentId: document.documentId,\n locale: document.locale ?? null,\n updatedAt: new Date(document.updatedAt),\n title: document[meta.mainField ?? 'documentId'],\n publishedAt:\n meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,\n contentTypeUid: meta.uid,\n contentTypeDisplayName: meta.contentType.info.displayName,\n kind: meta.contentType.kind,\n ...additionalFields,\n };\n });\n };\n\n const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');\n const getPermissionChecker = (uid: string) =>\n permissionCheckerService.create({\n userAbility: strapi.requestContext.get()?.state.userAbility,\n model: uid,\n });\n\n return {\n async addStatusToDocuments(documents: RecentDocument[]): Promise<RecentDocument[]> {\n return Promise.all(\n documents.map(async (recentDocument) => {\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(\n strapi.contentType(recentDocument.contentTypeUid)\n );\n /**\n * Tries to query the other version of the document if draft and publish is enabled,\n * so that we know when to give the \"modified\" status.\n */\n const { availableStatus } = await metadataService.getMetadata(\n recentDocument.contentTypeUid,\n recentDocument,\n {\n availableStatus: hasDraftAndPublish,\n availableLocales: false,\n }\n );\n const status: RecentDocument['status'] = metadataService.getStatus(\n recentDocument,\n availableStatus\n );\n\n return {\n ...recentDocument,\n status: hasDraftAndPublish ? status : undefined,\n };\n })\n );\n },\n\n async queryLastDocuments(\n additionalQueryParams?: Record<string, unknown>,\n draftAndPublishOnly?: boolean\n ): Promise<RecentDocument[]> {\n const permittedContentTypes = await getPermittedContentTypes();\n const allowedContentTypeUids = draftAndPublishOnly\n ? permittedContentTypes.filter((uid) => {\n return contentTypes.hasDraftAndPublish(strapi.contentType(uid));\n })\n : permittedContentTypes;\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(allowedContentTypeUids);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);\n\n const recentDocuments = await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({\n limit: MAX_DOCUMENTS,\n fields: meta.fields,\n ...additionalQueryParams,\n locale: '*',\n });\n\n const docs = await strapi.documents(meta.uid).findMany(permissionQuery);\n const populate = additionalQueryParams?.populate as string[];\n\n return formatDocuments(docs, meta, populate);\n })\n );\n\n return recentDocuments\n .flat()\n .sort((a, b) => {\n switch (additionalQueryParams?.sort) {\n case 'publishedAt:desc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return b.publishedAt.valueOf() - a.publishedAt.valueOf();\n case 'publishedAt:asc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return a.publishedAt.valueOf() - b.publishedAt.valueOf();\n case 'updatedAt:desc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return b.updatedAt.valueOf() - a.updatedAt.valueOf();\n case 'updatedAt:asc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return a.updatedAt.valueOf() - b.updatedAt.valueOf();\n default:\n return 0;\n }\n })\n .slice(0, MAX_DOCUMENTS);\n },\n\n async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyPublishedDocuments = await this.queryLastDocuments(\n {\n sort: 'publishedAt:desc',\n status: 'published',\n },\n true\n );\n\n return this.addStatusToDocuments(recentlyPublishedDocuments);\n },\n\n async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyUpdatedDocuments = await this.queryLastDocuments({\n sort: 'updatedAt:desc',\n });\n\n return this.addStatusToDocuments(recentlyUpdatedDocuments);\n },\n\n async getCountDocuments(): Promise<GetCountDocuments.Response['data']> {\n const permittedContentTypes = await getPermittedContentTypes();\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(permittedContentTypes);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);\n\n const countDocuments = {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const strapiDBConnection = strapi.db.connection;\n const tableName = strapi.contentType(meta.uid).collectionName;\n if (tableName) {\n const draftDocuments = await strapiDBConnection(tableName)\n .whereNull('published_at')\n .whereIn('document_id', function () {\n this.select('document_id')\n .from(tableName)\n .groupBy('document_id')\n .havingRaw('COUNT(*) = 1');\n })\n .count('* as count')\n .first();\n countDocuments.draft += Number(draftDocuments?.count) || 0;\n\n const publishedDocuments = meta.hasDraftAndPublish\n ? await strapiDBConnection(tableName)\n .countDistinct('draft.document_id as count')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .first()\n : await strapiDBConnection(tableName)\n .countDistinct('document_id as count')\n .from(`${tableName}`)\n .first();\n countDocuments.published += Number(publishedDocuments?.count) || 0;\n\n const modifiedDocuments = await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '!=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first();\n countDocuments.modified += Number(modifiedDocuments?.count) || 0;\n }\n })\n );\n\n return countDocuments;\n },\n };\n};\n\nexport { createHomepageService };\n"],"names":["createHomepageService","strapi","MAX_DOCUMENTS","metadataService","plugin","service","permissionService","admin","services","permission","getConfiguration","contentTypeUids","coreStore","db","query","rawConfigurations","findMany","where","key","$in","map","contentType","rawConfiguration","JSON","parse","value","getPermittedContentTypes","readPermissions","role","users","id","requestContext","get","state","user","action","subject","filter","Boolean","getContentTypesMeta","allowedContentTypeUids","configurations","uid","configuration","find","config","fields","hasDraftAndPublish","contentTypes","push","settings","mainField","isLocalized","pluginOptions","i18n","localized","formatDocuments","documents","meta","populate","document","additionalFields","reduce","acc","documentId","locale","updatedAt","Date","title","publishedAt","contentTypeUid","contentTypeDisplayName","info","displayName","kind","permissionCheckerService","getPermissionChecker","create","userAbility","model","addStatusToDocuments","Promise","all","recentDocument","availableStatus","getMetadata","availableLocales","status","getStatus","undefined","queryLastDocuments","additionalQueryParams","draftAndPublishOnly","permittedContentTypes","contentTypesMeta","recentDocuments","permissionQuery","sanitizedQuery","read","limit","docs","flat","sort","a","b","valueOf","slice","getRecentlyPublishedDocuments","recentlyPublishedDocuments","getRecentlyUpdatedDocuments","recentlyUpdatedDocuments","getCountDocuments","countDocuments","draft","published","modified","strapiDBConnection","connection","tableName","collectionName","draftDocuments","whereNull","whereIn","select","from","groupBy","havingRaw","count","first","Number","publishedDocuments","countDistinct","join","on","andOn","andOnNull","andOnNotNull","modifiedDocuments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"homepage.js","sources":["../../../../server/src/homepage/services/homepage.ts"],"sourcesContent":["/* eslint-disable func-names */\nimport type { Core, Modules, Schema } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport type {\n GetCountDocuments,\n GetRecentDocuments,\n RecentDocument,\n} from '../../../../shared/contracts/homepage';\n\nconst createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {\n const MAX_DOCUMENTS = 4;\n\n const metadataService = strapi.plugin('content-manager').service('document-metadata');\n const permissionService = strapi.admin.services.permission;\n\n type ContentTypeConfiguration = {\n uid: RecentDocument['contentTypeUid'];\n settings: { mainField: string };\n };\n const getConfiguration = async (\n contentTypeUids: RecentDocument['contentTypeUid'][]\n ): Promise<ContentTypeConfiguration[]> => {\n /**\n * Don't use the strapi.store util because we need to make\n * more precise queries than exact key matches, in order to make as few queries as possible.\n */\n const coreStore = strapi.db.query('strapi::core-store');\n const rawConfigurations = await coreStore.findMany({\n where: {\n key: {\n $in: contentTypeUids.map(\n (contentType) => `plugin_content_manager_configuration_content_types::${contentType}`\n ),\n },\n },\n });\n\n return rawConfigurations.map((rawConfiguration) => {\n return JSON.parse(rawConfiguration.value);\n });\n };\n\n const getPermittedContentTypes = async () => {\n const readPermissions: Modules.Permissions.PermissionRule[] = await permissionService.findMany({\n where: {\n role: { users: { id: strapi.requestContext.get()?.state?.user.id } },\n action: 'plugin::content-manager.explorer.read',\n },\n });\n\n return readPermissions\n .map((permission) => permission.subject)\n .filter(Boolean) as RecentDocument['contentTypeUid'][];\n };\n\n type ContentTypeMeta = {\n fields: string[];\n mainField: string;\n contentType: Schema.ContentType;\n hasDraftAndPublish: boolean;\n uid: RecentDocument['contentTypeUid'];\n };\n\n const getContentTypesMeta = (\n allowedContentTypeUids: RecentDocument['contentTypeUid'][],\n configurations: ContentTypeConfiguration[]\n ): ContentTypeMeta[] => {\n return allowedContentTypeUids.map((uid) => {\n const configuration = configurations.find((config) => config.uid === uid);\n const contentType = strapi.contentType(uid);\n const fields = ['documentId', 'updatedAt'];\n\n // Add fields required to get the status if D&P is enabled\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n if (hasDraftAndPublish) {\n fields.push('publishedAt');\n }\n\n // Only add the main field if it's defined\n if (configuration?.settings.mainField) {\n fields.push(configuration.settings.mainField);\n }\n\n // Only add locale if it's localized\n const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;\n if (isLocalized) {\n fields.push('locale');\n }\n\n return {\n fields,\n mainField: configuration!.settings.mainField,\n contentType,\n hasDraftAndPublish,\n uid,\n };\n });\n };\n\n const formatDocuments = (\n documents: Modules.Documents.AnyDocument[],\n meta: ContentTypeMeta,\n populate?: string[]\n ) => {\n return documents.map((document) => {\n const additionalFields =\n populate?.reduce(\n (acc, key) => {\n acc[key] = document[key];\n return acc;\n },\n {} as Record<string, any>\n ) || {};\n return {\n documentId: document.documentId,\n locale: document.locale ?? null,\n updatedAt: new Date(document.updatedAt),\n title: document[meta.mainField ?? 'documentId'],\n publishedAt:\n meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,\n contentTypeUid: meta.uid,\n contentTypeDisplayName: meta.contentType.info.displayName,\n kind: meta.contentType.kind,\n ...additionalFields,\n };\n });\n };\n\n const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');\n const getPermissionChecker = (uid: string) =>\n permissionCheckerService.create({\n userAbility: strapi.requestContext.get()?.state.userAbility,\n model: uid,\n });\n\n return {\n async addStatusToDocuments(documents: RecentDocument[]): Promise<RecentDocument[]> {\n return Promise.all(\n documents.map(async (recentDocument) => {\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(\n strapi.contentType(recentDocument.contentTypeUid)\n );\n /**\n * Tries to query the other version of the document if draft and publish is enabled,\n * so that we know when to give the \"modified\" status.\n */\n const { availableStatus } = await metadataService.getMetadata(\n recentDocument.contentTypeUid,\n recentDocument,\n {\n availableStatus: hasDraftAndPublish,\n availableLocales: false,\n }\n );\n const status: RecentDocument['status'] = metadataService.getStatus(\n recentDocument,\n availableStatus\n );\n\n return {\n ...recentDocument,\n status: hasDraftAndPublish ? status : undefined,\n };\n })\n );\n },\n\n async queryLastDocuments(\n additionalQueryParams?: Record<string, unknown>,\n draftAndPublishOnly?: boolean\n ): Promise<RecentDocument[]> {\n const permittedContentTypes = await getPermittedContentTypes();\n const allowedContentTypeUids = draftAndPublishOnly\n ? permittedContentTypes.filter((uid) => {\n return contentTypes.hasDraftAndPublish(strapi.contentType(uid));\n })\n : permittedContentTypes;\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(allowedContentTypeUids);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);\n\n const recentDocuments = await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({\n limit: MAX_DOCUMENTS,\n fields: meta.fields,\n ...additionalQueryParams,\n locale: '*',\n });\n\n const docs = await strapi.documents(meta.uid).findMany(permissionQuery);\n const populate = additionalQueryParams?.populate as string[];\n\n return formatDocuments(docs, meta, populate);\n })\n );\n\n return recentDocuments\n .flat()\n .sort((a, b) => {\n switch (additionalQueryParams?.sort) {\n case 'publishedAt:desc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return b.publishedAt.valueOf() - a.publishedAt.valueOf();\n case 'publishedAt:asc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return a.publishedAt.valueOf() - b.publishedAt.valueOf();\n case 'updatedAt:desc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return b.updatedAt.valueOf() - a.updatedAt.valueOf();\n case 'updatedAt:asc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return a.updatedAt.valueOf() - b.updatedAt.valueOf();\n default:\n return 0;\n }\n })\n .slice(0, MAX_DOCUMENTS);\n },\n\n async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyPublishedDocuments = await this.queryLastDocuments(\n {\n sort: 'publishedAt:desc',\n status: 'published',\n },\n true\n );\n\n return this.addStatusToDocuments(recentlyPublishedDocuments);\n },\n\n async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyUpdatedDocuments = await this.queryLastDocuments({\n sort: 'updatedAt:desc',\n });\n\n return this.addStatusToDocuments(recentlyUpdatedDocuments);\n },\n\n async getCountDocuments(): Promise<GetCountDocuments.Response['data']> {\n const permittedContentTypes = await getPermittedContentTypes();\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(permittedContentTypes);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);\n\n const countDocuments = {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const strapiDBConnection = strapi.db.connection;\n const tableName = strapi.contentType(meta.uid).collectionName;\n if (tableName) {\n if (meta.hasDraftAndPublish) {\n const draftDocuments = await strapiDBConnection(tableName)\n .whereNull('published_at')\n .whereIn('document_id', function () {\n this.select('document_id')\n .from(tableName)\n .groupBy('document_id')\n .havingRaw('COUNT(*) = 1');\n })\n .count('* as count')\n .first();\n countDocuments.draft += Number(draftDocuments?.count) || 0;\n }\n\n const publishedDocuments = meta.hasDraftAndPublish\n ? await strapiDBConnection(tableName)\n .countDistinct('draft.document_id as count')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .first()\n : await strapiDBConnection(tableName)\n .countDistinct('document_id as count')\n .from(`${tableName}`)\n .first();\n countDocuments.published += Number(publishedDocuments?.count) || 0;\n\n if (meta.hasDraftAndPublish) {\n const modifiedDocuments = await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '!=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first();\n countDocuments.modified += Number(modifiedDocuments?.count) || 0;\n }\n }\n })\n );\n\n return countDocuments;\n },\n };\n};\n\nexport { createHomepageService };\n"],"names":["createHomepageService","strapi","MAX_DOCUMENTS","metadataService","plugin","service","permissionService","admin","services","permission","getConfiguration","contentTypeUids","coreStore","db","query","rawConfigurations","findMany","where","key","$in","map","contentType","rawConfiguration","JSON","parse","value","getPermittedContentTypes","readPermissions","role","users","id","requestContext","get","state","user","action","subject","filter","Boolean","getContentTypesMeta","allowedContentTypeUids","configurations","uid","configuration","find","config","fields","hasDraftAndPublish","contentTypes","push","settings","mainField","isLocalized","pluginOptions","i18n","localized","formatDocuments","documents","meta","populate","document","additionalFields","reduce","acc","documentId","locale","updatedAt","Date","title","publishedAt","contentTypeUid","contentTypeDisplayName","info","displayName","kind","permissionCheckerService","getPermissionChecker","create","userAbility","model","addStatusToDocuments","Promise","all","recentDocument","availableStatus","getMetadata","availableLocales","status","getStatus","undefined","queryLastDocuments","additionalQueryParams","draftAndPublishOnly","permittedContentTypes","contentTypesMeta","recentDocuments","permissionQuery","sanitizedQuery","read","limit","docs","flat","sort","a","b","valueOf","slice","getRecentlyPublishedDocuments","recentlyPublishedDocuments","getRecentlyUpdatedDocuments","recentlyUpdatedDocuments","getCountDocuments","countDocuments","draft","published","modified","strapiDBConnection","connection","tableName","collectionName","draftDocuments","whereNull","whereIn","select","from","groupBy","havingRaw","count","first","Number","publishedDocuments","countDistinct","join","on","andOn","andOnNull","andOnNotNull","modifiedDocuments"],"mappings":"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"}
|
|
@@ -173,18 +173,22 @@ const createHomepageService = ({ strapi })=>{
|
|
|
173
173
|
const strapiDBConnection = strapi.db.connection;
|
|
174
174
|
const tableName = strapi.contentType(meta.uid).collectionName;
|
|
175
175
|
if (tableName) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
if (meta.hasDraftAndPublish) {
|
|
177
|
+
const draftDocuments = await strapiDBConnection(tableName).whereNull('published_at').whereIn('document_id', function() {
|
|
178
|
+
this.select('document_id').from(tableName).groupBy('document_id').havingRaw('COUNT(*) = 1');
|
|
179
|
+
}).count('* as count').first();
|
|
180
|
+
countDocuments.draft += Number(draftDocuments?.count) || 0;
|
|
181
|
+
}
|
|
180
182
|
const publishedDocuments = meta.hasDraftAndPublish ? await strapiDBConnection(tableName).countDistinct('draft.document_id as count').from(`${tableName} as draft`).join(`${tableName} as published`, function() {
|
|
181
183
|
this.on('draft.document_id', '=', 'published.document_id').andOn('draft.updated_at', '=', 'published.updated_at').andOnNull('draft.published_at').andOnNotNull('published.published_at');
|
|
182
184
|
}).first() : await strapiDBConnection(tableName).countDistinct('document_id as count').from(`${tableName}`).first();
|
|
183
185
|
countDocuments.published += Number(publishedDocuments?.count) || 0;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
if (meta.hasDraftAndPublish) {
|
|
187
|
+
const modifiedDocuments = await strapiDBConnection(tableName).select('draft.document_id').from(`${tableName} as draft`).join(`${tableName} as published`, function() {
|
|
188
|
+
this.on('draft.document_id', '=', 'published.document_id').andOn('draft.updated_at', '!=', 'published.updated_at').andOnNull('draft.published_at').andOnNotNull('published.published_at');
|
|
189
|
+
}).countDistinct('draft.document_id as count').groupBy('draft.document_id').first();
|
|
190
|
+
countDocuments.modified += Number(modifiedDocuments?.count) || 0;
|
|
191
|
+
}
|
|
188
192
|
}
|
|
189
193
|
}));
|
|
190
194
|
return countDocuments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.mjs","sources":["../../../../server/src/homepage/services/homepage.ts"],"sourcesContent":["/* eslint-disable func-names */\nimport type { Core, Modules, Schema } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport type {\n GetCountDocuments,\n GetRecentDocuments,\n RecentDocument,\n} from '../../../../shared/contracts/homepage';\n\nconst createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {\n const MAX_DOCUMENTS = 4;\n\n const metadataService = strapi.plugin('content-manager').service('document-metadata');\n const permissionService = strapi.admin.services.permission;\n\n type ContentTypeConfiguration = {\n uid: RecentDocument['contentTypeUid'];\n settings: { mainField: string };\n };\n const getConfiguration = async (\n contentTypeUids: RecentDocument['contentTypeUid'][]\n ): Promise<ContentTypeConfiguration[]> => {\n /**\n * Don't use the strapi.store util because we need to make\n * more precise queries than exact key matches, in order to make as few queries as possible.\n */\n const coreStore = strapi.db.query('strapi::core-store');\n const rawConfigurations = await coreStore.findMany({\n where: {\n key: {\n $in: contentTypeUids.map(\n (contentType) => `plugin_content_manager_configuration_content_types::${contentType}`\n ),\n },\n },\n });\n\n return rawConfigurations.map((rawConfiguration) => {\n return JSON.parse(rawConfiguration.value);\n });\n };\n\n const getPermittedContentTypes = async () => {\n const readPermissions: Modules.Permissions.PermissionRule[] = await permissionService.findMany({\n where: {\n role: { users: { id: strapi.requestContext.get()?.state?.user.id } },\n action: 'plugin::content-manager.explorer.read',\n },\n });\n\n return readPermissions\n .map((permission) => permission.subject)\n .filter(Boolean) as RecentDocument['contentTypeUid'][];\n };\n\n type ContentTypeMeta = {\n fields: string[];\n mainField: string;\n contentType: Schema.ContentType;\n hasDraftAndPublish: boolean;\n uid: RecentDocument['contentTypeUid'];\n };\n\n const getContentTypesMeta = (\n allowedContentTypeUids: RecentDocument['contentTypeUid'][],\n configurations: ContentTypeConfiguration[]\n ): ContentTypeMeta[] => {\n return allowedContentTypeUids.map((uid) => {\n const configuration = configurations.find((config) => config.uid === uid);\n const contentType = strapi.contentType(uid);\n const fields = ['documentId', 'updatedAt'];\n\n // Add fields required to get the status if D&P is enabled\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n if (hasDraftAndPublish) {\n fields.push('publishedAt');\n }\n\n // Only add the main field if it's defined\n if (configuration?.settings.mainField) {\n fields.push(configuration.settings.mainField);\n }\n\n // Only add locale if it's localized\n const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;\n if (isLocalized) {\n fields.push('locale');\n }\n\n return {\n fields,\n mainField: configuration!.settings.mainField,\n contentType,\n hasDraftAndPublish,\n uid,\n };\n });\n };\n\n const formatDocuments = (\n documents: Modules.Documents.AnyDocument[],\n meta: ContentTypeMeta,\n populate?: string[]\n ) => {\n return documents.map((document) => {\n const additionalFields =\n populate?.reduce(\n (acc, key) => {\n acc[key] = document[key];\n return acc;\n },\n {} as Record<string, any>\n ) || {};\n return {\n documentId: document.documentId,\n locale: document.locale ?? null,\n updatedAt: new Date(document.updatedAt),\n title: document[meta.mainField ?? 'documentId'],\n publishedAt:\n meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,\n contentTypeUid: meta.uid,\n contentTypeDisplayName: meta.contentType.info.displayName,\n kind: meta.contentType.kind,\n ...additionalFields,\n };\n });\n };\n\n const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');\n const getPermissionChecker = (uid: string) =>\n permissionCheckerService.create({\n userAbility: strapi.requestContext.get()?.state.userAbility,\n model: uid,\n });\n\n return {\n async addStatusToDocuments(documents: RecentDocument[]): Promise<RecentDocument[]> {\n return Promise.all(\n documents.map(async (recentDocument) => {\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(\n strapi.contentType(recentDocument.contentTypeUid)\n );\n /**\n * Tries to query the other version of the document if draft and publish is enabled,\n * so that we know when to give the \"modified\" status.\n */\n const { availableStatus } = await metadataService.getMetadata(\n recentDocument.contentTypeUid,\n recentDocument,\n {\n availableStatus: hasDraftAndPublish,\n availableLocales: false,\n }\n );\n const status: RecentDocument['status'] = metadataService.getStatus(\n recentDocument,\n availableStatus\n );\n\n return {\n ...recentDocument,\n status: hasDraftAndPublish ? status : undefined,\n };\n })\n );\n },\n\n async queryLastDocuments(\n additionalQueryParams?: Record<string, unknown>,\n draftAndPublishOnly?: boolean\n ): Promise<RecentDocument[]> {\n const permittedContentTypes = await getPermittedContentTypes();\n const allowedContentTypeUids = draftAndPublishOnly\n ? permittedContentTypes.filter((uid) => {\n return contentTypes.hasDraftAndPublish(strapi.contentType(uid));\n })\n : permittedContentTypes;\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(allowedContentTypeUids);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);\n\n const recentDocuments = await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({\n limit: MAX_DOCUMENTS,\n fields: meta.fields,\n ...additionalQueryParams,\n locale: '*',\n });\n\n const docs = await strapi.documents(meta.uid).findMany(permissionQuery);\n const populate = additionalQueryParams?.populate as string[];\n\n return formatDocuments(docs, meta, populate);\n })\n );\n\n return recentDocuments\n .flat()\n .sort((a, b) => {\n switch (additionalQueryParams?.sort) {\n case 'publishedAt:desc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return b.publishedAt.valueOf() - a.publishedAt.valueOf();\n case 'publishedAt:asc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return a.publishedAt.valueOf() - b.publishedAt.valueOf();\n case 'updatedAt:desc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return b.updatedAt.valueOf() - a.updatedAt.valueOf();\n case 'updatedAt:asc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return a.updatedAt.valueOf() - b.updatedAt.valueOf();\n default:\n return 0;\n }\n })\n .slice(0, MAX_DOCUMENTS);\n },\n\n async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyPublishedDocuments = await this.queryLastDocuments(\n {\n sort: 'publishedAt:desc',\n status: 'published',\n },\n true\n );\n\n return this.addStatusToDocuments(recentlyPublishedDocuments);\n },\n\n async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyUpdatedDocuments = await this.queryLastDocuments({\n sort: 'updatedAt:desc',\n });\n\n return this.addStatusToDocuments(recentlyUpdatedDocuments);\n },\n\n async getCountDocuments(): Promise<GetCountDocuments.Response['data']> {\n const permittedContentTypes = await getPermittedContentTypes();\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(permittedContentTypes);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);\n\n const countDocuments = {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const strapiDBConnection = strapi.db.connection;\n const tableName = strapi.contentType(meta.uid).collectionName;\n if (tableName) {\n const draftDocuments = await strapiDBConnection(tableName)\n .whereNull('published_at')\n .whereIn('document_id', function () {\n this.select('document_id')\n .from(tableName)\n .groupBy('document_id')\n .havingRaw('COUNT(*) = 1');\n })\n .count('* as count')\n .first();\n countDocuments.draft += Number(draftDocuments?.count) || 0;\n\n const publishedDocuments = meta.hasDraftAndPublish\n ? await strapiDBConnection(tableName)\n .countDistinct('draft.document_id as count')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .first()\n : await strapiDBConnection(tableName)\n .countDistinct('document_id as count')\n .from(`${tableName}`)\n .first();\n countDocuments.published += Number(publishedDocuments?.count) || 0;\n\n const modifiedDocuments = await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '!=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first();\n countDocuments.modified += Number(modifiedDocuments?.count) || 0;\n }\n })\n );\n\n return countDocuments;\n },\n };\n};\n\nexport { createHomepageService };\n"],"names":["createHomepageService","strapi","MAX_DOCUMENTS","metadataService","plugin","service","permissionService","admin","services","permission","getConfiguration","contentTypeUids","coreStore","db","query","rawConfigurations","findMany","where","key","$in","map","contentType","rawConfiguration","JSON","parse","value","getPermittedContentTypes","readPermissions","role","users","id","requestContext","get","state","user","action","subject","filter","Boolean","getContentTypesMeta","allowedContentTypeUids","configurations","uid","configuration","find","config","fields","hasDraftAndPublish","contentTypes","push","settings","mainField","isLocalized","pluginOptions","i18n","localized","formatDocuments","documents","meta","populate","document","additionalFields","reduce","acc","documentId","locale","updatedAt","Date","title","publishedAt","contentTypeUid","contentTypeDisplayName","info","displayName","kind","permissionCheckerService","getPermissionChecker","create","userAbility","model","addStatusToDocuments","Promise","all","recentDocument","availableStatus","getMetadata","availableLocales","status","getStatus","undefined","queryLastDocuments","additionalQueryParams","draftAndPublishOnly","permittedContentTypes","contentTypesMeta","recentDocuments","permissionQuery","sanitizedQuery","read","limit","docs","flat","sort","a","b","valueOf","slice","getRecentlyPublishedDocuments","recentlyPublishedDocuments","getRecentlyUpdatedDocuments","recentlyUpdatedDocuments","getCountDocuments","countDocuments","draft","published","modified","strapiDBConnection","connection","tableName","collectionName","draftDocuments","whereNull","whereIn","select","from","groupBy","havingRaw","count","first","Number","publishedDocuments","countDistinct","join","on","andOn","andOnNull","andOnNotNull","modifiedDocuments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"homepage.mjs","sources":["../../../../server/src/homepage/services/homepage.ts"],"sourcesContent":["/* eslint-disable func-names */\nimport type { Core, Modules, Schema } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\nimport type {\n GetCountDocuments,\n GetRecentDocuments,\n RecentDocument,\n} from '../../../../shared/contracts/homepage';\n\nconst createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {\n const MAX_DOCUMENTS = 4;\n\n const metadataService = strapi.plugin('content-manager').service('document-metadata');\n const permissionService = strapi.admin.services.permission;\n\n type ContentTypeConfiguration = {\n uid: RecentDocument['contentTypeUid'];\n settings: { mainField: string };\n };\n const getConfiguration = async (\n contentTypeUids: RecentDocument['contentTypeUid'][]\n ): Promise<ContentTypeConfiguration[]> => {\n /**\n * Don't use the strapi.store util because we need to make\n * more precise queries than exact key matches, in order to make as few queries as possible.\n */\n const coreStore = strapi.db.query('strapi::core-store');\n const rawConfigurations = await coreStore.findMany({\n where: {\n key: {\n $in: contentTypeUids.map(\n (contentType) => `plugin_content_manager_configuration_content_types::${contentType}`\n ),\n },\n },\n });\n\n return rawConfigurations.map((rawConfiguration) => {\n return JSON.parse(rawConfiguration.value);\n });\n };\n\n const getPermittedContentTypes = async () => {\n const readPermissions: Modules.Permissions.PermissionRule[] = await permissionService.findMany({\n where: {\n role: { users: { id: strapi.requestContext.get()?.state?.user.id } },\n action: 'plugin::content-manager.explorer.read',\n },\n });\n\n return readPermissions\n .map((permission) => permission.subject)\n .filter(Boolean) as RecentDocument['contentTypeUid'][];\n };\n\n type ContentTypeMeta = {\n fields: string[];\n mainField: string;\n contentType: Schema.ContentType;\n hasDraftAndPublish: boolean;\n uid: RecentDocument['contentTypeUid'];\n };\n\n const getContentTypesMeta = (\n allowedContentTypeUids: RecentDocument['contentTypeUid'][],\n configurations: ContentTypeConfiguration[]\n ): ContentTypeMeta[] => {\n return allowedContentTypeUids.map((uid) => {\n const configuration = configurations.find((config) => config.uid === uid);\n const contentType = strapi.contentType(uid);\n const fields = ['documentId', 'updatedAt'];\n\n // Add fields required to get the status if D&P is enabled\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n if (hasDraftAndPublish) {\n fields.push('publishedAt');\n }\n\n // Only add the main field if it's defined\n if (configuration?.settings.mainField) {\n fields.push(configuration.settings.mainField);\n }\n\n // Only add locale if it's localized\n const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;\n if (isLocalized) {\n fields.push('locale');\n }\n\n return {\n fields,\n mainField: configuration!.settings.mainField,\n contentType,\n hasDraftAndPublish,\n uid,\n };\n });\n };\n\n const formatDocuments = (\n documents: Modules.Documents.AnyDocument[],\n meta: ContentTypeMeta,\n populate?: string[]\n ) => {\n return documents.map((document) => {\n const additionalFields =\n populate?.reduce(\n (acc, key) => {\n acc[key] = document[key];\n return acc;\n },\n {} as Record<string, any>\n ) || {};\n return {\n documentId: document.documentId,\n locale: document.locale ?? null,\n updatedAt: new Date(document.updatedAt),\n title: document[meta.mainField ?? 'documentId'],\n publishedAt:\n meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,\n contentTypeUid: meta.uid,\n contentTypeDisplayName: meta.contentType.info.displayName,\n kind: meta.contentType.kind,\n ...additionalFields,\n };\n });\n };\n\n const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');\n const getPermissionChecker = (uid: string) =>\n permissionCheckerService.create({\n userAbility: strapi.requestContext.get()?.state.userAbility,\n model: uid,\n });\n\n return {\n async addStatusToDocuments(documents: RecentDocument[]): Promise<RecentDocument[]> {\n return Promise.all(\n documents.map(async (recentDocument) => {\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(\n strapi.contentType(recentDocument.contentTypeUid)\n );\n /**\n * Tries to query the other version of the document if draft and publish is enabled,\n * so that we know when to give the \"modified\" status.\n */\n const { availableStatus } = await metadataService.getMetadata(\n recentDocument.contentTypeUid,\n recentDocument,\n {\n availableStatus: hasDraftAndPublish,\n availableLocales: false,\n }\n );\n const status: RecentDocument['status'] = metadataService.getStatus(\n recentDocument,\n availableStatus\n );\n\n return {\n ...recentDocument,\n status: hasDraftAndPublish ? status : undefined,\n };\n })\n );\n },\n\n async queryLastDocuments(\n additionalQueryParams?: Record<string, unknown>,\n draftAndPublishOnly?: boolean\n ): Promise<RecentDocument[]> {\n const permittedContentTypes = await getPermittedContentTypes();\n const allowedContentTypeUids = draftAndPublishOnly\n ? permittedContentTypes.filter((uid) => {\n return contentTypes.hasDraftAndPublish(strapi.contentType(uid));\n })\n : permittedContentTypes;\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(allowedContentTypeUids);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);\n\n const recentDocuments = await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({\n limit: MAX_DOCUMENTS,\n fields: meta.fields,\n ...additionalQueryParams,\n locale: '*',\n });\n\n const docs = await strapi.documents(meta.uid).findMany(permissionQuery);\n const populate = additionalQueryParams?.populate as string[];\n\n return formatDocuments(docs, meta, populate);\n })\n );\n\n return recentDocuments\n .flat()\n .sort((a, b) => {\n switch (additionalQueryParams?.sort) {\n case 'publishedAt:desc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return b.publishedAt.valueOf() - a.publishedAt.valueOf();\n case 'publishedAt:asc':\n if (!a.publishedAt || !b.publishedAt) return 0;\n return a.publishedAt.valueOf() - b.publishedAt.valueOf();\n case 'updatedAt:desc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return b.updatedAt.valueOf() - a.updatedAt.valueOf();\n case 'updatedAt:asc':\n if (!a.updatedAt || !b.updatedAt) return 0;\n return a.updatedAt.valueOf() - b.updatedAt.valueOf();\n default:\n return 0;\n }\n })\n .slice(0, MAX_DOCUMENTS);\n },\n\n async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyPublishedDocuments = await this.queryLastDocuments(\n {\n sort: 'publishedAt:desc',\n status: 'published',\n },\n true\n );\n\n return this.addStatusToDocuments(recentlyPublishedDocuments);\n },\n\n async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {\n const recentlyUpdatedDocuments = await this.queryLastDocuments({\n sort: 'updatedAt:desc',\n });\n\n return this.addStatusToDocuments(recentlyUpdatedDocuments);\n },\n\n async getCountDocuments(): Promise<GetCountDocuments.Response['data']> {\n const permittedContentTypes = await getPermittedContentTypes();\n // Fetch the configuration for each content type in a single query\n const configurations = await getConfiguration(permittedContentTypes);\n // Get the necessary metadata for the documents\n const contentTypesMeta = getContentTypesMeta(permittedContentTypes, configurations);\n\n const countDocuments = {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n await Promise.all(\n contentTypesMeta.map(async (meta) => {\n const strapiDBConnection = strapi.db.connection;\n const tableName = strapi.contentType(meta.uid).collectionName;\n if (tableName) {\n if (meta.hasDraftAndPublish) {\n const draftDocuments = await strapiDBConnection(tableName)\n .whereNull('published_at')\n .whereIn('document_id', function () {\n this.select('document_id')\n .from(tableName)\n .groupBy('document_id')\n .havingRaw('COUNT(*) = 1');\n })\n .count('* as count')\n .first();\n countDocuments.draft += Number(draftDocuments?.count) || 0;\n }\n\n const publishedDocuments = meta.hasDraftAndPublish\n ? await strapiDBConnection(tableName)\n .countDistinct('draft.document_id as count')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .first()\n : await strapiDBConnection(tableName)\n .countDistinct('document_id as count')\n .from(`${tableName}`)\n .first();\n countDocuments.published += Number(publishedDocuments?.count) || 0;\n\n if (meta.hasDraftAndPublish) {\n const modifiedDocuments = await strapiDBConnection(tableName)\n .select('draft.document_id')\n .from(`${tableName} as draft`)\n .join(`${tableName} as published`, function () {\n this.on('draft.document_id', '=', 'published.document_id')\n .andOn('draft.updated_at', '!=', 'published.updated_at')\n .andOnNull('draft.published_at')\n .andOnNotNull('published.published_at');\n })\n .countDistinct('draft.document_id as count')\n .groupBy('draft.document_id')\n .first();\n countDocuments.modified += Number(modifiedDocuments?.count) || 0;\n }\n }\n })\n );\n\n return countDocuments;\n },\n };\n};\n\nexport { createHomepageService };\n"],"names":["createHomepageService","strapi","MAX_DOCUMENTS","metadataService","plugin","service","permissionService","admin","services","permission","getConfiguration","contentTypeUids","coreStore","db","query","rawConfigurations","findMany","where","key","$in","map","contentType","rawConfiguration","JSON","parse","value","getPermittedContentTypes","readPermissions","role","users","id","requestContext","get","state","user","action","subject","filter","Boolean","getContentTypesMeta","allowedContentTypeUids","configurations","uid","configuration","find","config","fields","hasDraftAndPublish","contentTypes","push","settings","mainField","isLocalized","pluginOptions","i18n","localized","formatDocuments","documents","meta","populate","document","additionalFields","reduce","acc","documentId","locale","updatedAt","Date","title","publishedAt","contentTypeUid","contentTypeDisplayName","info","displayName","kind","permissionCheckerService","getPermissionChecker","create","userAbility","model","addStatusToDocuments","Promise","all","recentDocument","availableStatus","getMetadata","availableLocales","status","getStatus","undefined","queryLastDocuments","additionalQueryParams","draftAndPublishOnly","permittedContentTypes","contentTypesMeta","recentDocuments","permissionQuery","sanitizedQuery","read","limit","docs","flat","sort","a","b","valueOf","slice","getRecentlyPublishedDocuments","recentlyPublishedDocuments","getRecentlyUpdatedDocuments","recentlyUpdatedDocuments","getCountDocuments","countDocuments","draft","published","modified","strapiDBConnection","connection","tableName","collectionName","draftDocuments","whereNull","whereIn","select","from","groupBy","havingRaw","count","first","Number","publishedDocuments","countDistinct","join","on","andOn","andOnNull","andOnNotNull","modifiedDocuments"],"mappings":"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"}
|
|
@@ -20,11 +20,7 @@ var metrics = (({ strapi })=>{
|
|
|
20
20
|
displayedRelationalFields
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
await strapi.telemetry.send('didConfigureListView', data);
|
|
25
|
-
} catch (e) {
|
|
26
|
-
// silence
|
|
27
|
-
}
|
|
23
|
+
strapi.telemetry.send('didConfigureListView', data).catch(()=>{});
|
|
28
24
|
};
|
|
29
25
|
return {
|
|
30
26
|
sendDidConfigureListView
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n
|
|
1
|
+
{"version":3,"file":"metrics.js","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n strapi.telemetry.send('didConfigureListView', data).catch(() => {});\n };\n\n return {\n sendDidConfigureListView,\n };\n};\n"],"names":["getRelationalFields","relations","strapi","sendDidConfigureListView","contentType","configuration","displayedFields","prop","layouts","list","relationalFields","displayedRelationalFields","intersection","length","data","eventProperties","containsRelationalFields","Object","assign","telemetry","send","catch"],"mappings":";;;;;AAKA,MAAM,EAAEA,mBAAmB,EAAE,GAAGC,qBAAAA;AAEhC,cAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,wBAAAA,GAA2B,OAC/BC,WAAAA,EACAC,aAAAA,GAAAA;AAEA,QAAA,MAAMC,kBAAkBC,OAAAA,CAAK,QAAA,EAAUF,aAAAA,CAAcG,OAAO,CAACC,IAAI,CAAA;AACjE,QAAA,MAAMC,mBAAmBV,mBAAAA,CAAoBI,WAAAA,CAAAA;QAC7C,MAAMO,yBAAAA,GAA4BC,gBAChCF,gBAAAA,EACAL,aAAAA,CAAcG,OAAO,CAACC,IAAI,EAC1BI,MAAM;AAER,QAAA,MAAMC,IAAAA,GAAO;YACXC,eAAAA,EAAiB;AAAEC,gBAAAA,wBAAAA,EAA0B,CAAC,CAACL;AAA0B;AAC3E,SAAA;AAEA,QAAA,IAAIG,IAAAA,CAAKC,eAAe,CAACC,wBAAwB,EAAE;AACjDC,YAAAA,MAAAA,CAAOC,MAAM,CAACJ,IAAAA,CAAKC,eAAe,EAAE;AAClCT,gBAAAA,eAAAA;AACAK,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;QAEAT,MAAAA,CAAOiB,SAAS,CAACC,IAAI,CAAC,wBAAwBN,IAAAA,CAAAA,CAAMO,KAAK,CAAC,IAAA,CAAO,CAAA,CAAA;AACnE,IAAA,CAAA;IAEA,OAAO;AACLlB,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -18,11 +18,7 @@ var metrics = (({ strapi })=>{
|
|
|
18
18
|
displayedRelationalFields
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
await strapi.telemetry.send('didConfigureListView', data);
|
|
23
|
-
} catch (e) {
|
|
24
|
-
// silence
|
|
25
|
-
}
|
|
21
|
+
strapi.telemetry.send('didConfigureListView', data).catch(()=>{});
|
|
26
22
|
};
|
|
27
23
|
return {
|
|
28
24
|
sendDidConfigureListView
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.mjs","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n
|
|
1
|
+
{"version":3,"file":"metrics.mjs","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { intersection, prop } from 'lodash/fp';\nimport { relations } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport type { Configuration } from '../../../shared/contracts/content-types';\n\nconst { getRelationalFields } = relations;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const sendDidConfigureListView = async (\n contentType: Struct.ContentTypeSchema,\n configuration: Configuration\n ) => {\n const displayedFields = prop('length', configuration.layouts.list);\n const relationalFields = getRelationalFields(contentType);\n const displayedRelationalFields = intersection(\n relationalFields,\n configuration.layouts.list\n ).length;\n\n const data = {\n eventProperties: { containsRelationalFields: !!displayedRelationalFields },\n };\n\n if (data.eventProperties.containsRelationalFields) {\n Object.assign(data.eventProperties, {\n displayedFields,\n displayedRelationalFields,\n });\n }\n\n strapi.telemetry.send('didConfigureListView', data).catch(() => {});\n };\n\n return {\n sendDidConfigureListView,\n };\n};\n"],"names":["getRelationalFields","relations","strapi","sendDidConfigureListView","contentType","configuration","displayedFields","prop","layouts","list","relationalFields","displayedRelationalFields","intersection","length","data","eventProperties","containsRelationalFields","Object","assign","telemetry","send","catch"],"mappings":";;;AAKA,MAAM,EAAEA,mBAAmB,EAAE,GAAGC,SAAAA;AAEhC,cAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,wBAAAA,GAA2B,OAC/BC,WAAAA,EACAC,aAAAA,GAAAA;AAEA,QAAA,MAAMC,kBAAkBC,IAAAA,CAAK,QAAA,EAAUF,aAAAA,CAAcG,OAAO,CAACC,IAAI,CAAA;AACjE,QAAA,MAAMC,mBAAmBV,mBAAAA,CAAoBI,WAAAA,CAAAA;QAC7C,MAAMO,yBAAAA,GAA4BC,aAChCF,gBAAAA,EACAL,aAAAA,CAAcG,OAAO,CAACC,IAAI,EAC1BI,MAAM;AAER,QAAA,MAAMC,IAAAA,GAAO;YACXC,eAAAA,EAAiB;AAAEC,gBAAAA,wBAAAA,EAA0B,CAAC,CAACL;AAA0B;AAC3E,SAAA;AAEA,QAAA,IAAIG,IAAAA,CAAKC,eAAe,CAACC,wBAAwB,EAAE;AACjDC,YAAAA,MAAAA,CAAOC,MAAM,CAACJ,IAAAA,CAAKC,eAAe,EAAE;AAClCT,gBAAAA,eAAAA;AACAK,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;QAEAT,MAAAA,CAAOiB,SAAS,CAACC,IAAI,CAAC,wBAAwBN,IAAAA,CAAAA,CAAMO,KAAK,CAAC,IAAA,CAAO,CAAA,CAAA;AACnE,IAAA,CAAA;IAEA,OAAO;AACLlB,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../../server/src/homepage/services/homepage.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,eAAe,CAAC;AAG3D,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,uCAAuC,CAAC;AAE/C,QAAA,MAAM,qBAAqB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;oCA+HxB,cAAc,EAAE,GAAG,QAAQ,cAAc,EAAE,CAAC;+CAgCxD,OAAO,MAAM,EAAE,OAAO,CAAC,wBACzB,OAAO,GAC5B,QAAQ,cAAc,EAAE,CAAC;qCAmDW,QAAQ,2BAA2B,CAAC,MAAM,CAAC,CAAC;mCAY9C,QAAQ,2BAA2B,CAAC,MAAM,CAAC,CAAC;yBAQtD,QAAQ,0BAA0B,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../../server/src/homepage/services/homepage.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,eAAe,CAAC;AAG3D,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,uCAAuC,CAAC;AAE/C,QAAA,MAAM,qBAAqB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;oCA+HxB,cAAc,EAAE,GAAG,QAAQ,cAAc,EAAE,CAAC;+CAgCxD,OAAO,MAAM,EAAE,OAAO,CAAC,wBACzB,OAAO,GAC5B,QAAQ,cAAc,EAAE,CAAC;qCAmDW,QAAQ,2BAA2B,CAAC,MAAM,CAAC,CAAC;mCAY9C,QAAQ,2BAA2B,CAAC,MAAM,CAAC,CAAC;yBAQtD,QAAQ,0BAA0B,CAAC,MAAM,CAAC,CAAC;CAuEzE,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../server/src/services/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;qCAIjD;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;4CAElC,OAAO,iBAAiB,iBACtB,aAAa;;AAHhC,
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../server/src/services/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;qCAIjD;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;4CAElC,OAAO,iBAAiB,iBACtB,aAAa;;AAHhC,wBA6BE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/content-manager",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.46.0",
|
|
4
4
|
"description": "A powerful UI to easily manage your data.",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
"@sindresorhus/slugify": "1.1.0",
|
|
75
75
|
"@strapi/design-system": "2.2.0",
|
|
76
76
|
"@strapi/icons": "2.2.0",
|
|
77
|
-
"@strapi/types": "5.
|
|
78
|
-
"@strapi/utils": "5.
|
|
77
|
+
"@strapi/types": "5.46.0",
|
|
78
|
+
"@strapi/utils": "5.46.0",
|
|
79
79
|
"codemirror5": "npm:codemirror@^5.65.11",
|
|
80
80
|
"date-fns": "2.30.0",
|
|
81
81
|
"fractional-indexing": "3.2.0",
|
|
@@ -109,14 +109,14 @@
|
|
|
109
109
|
"yup": "0.32.9"
|
|
110
110
|
},
|
|
111
111
|
"devDependencies": {
|
|
112
|
-
"@strapi/admin": "5.
|
|
113
|
-
"@strapi/database": "5.
|
|
112
|
+
"@strapi/admin": "5.46.0",
|
|
113
|
+
"@strapi/database": "5.46.0",
|
|
114
114
|
"@testing-library/react": "16.3.0",
|
|
115
115
|
"@types/jest": "29.5.2",
|
|
116
116
|
"@types/lodash": "^4.14.191",
|
|
117
117
|
"@types/prismjs": "1.26.5",
|
|
118
118
|
"koa-body": "6.0.1",
|
|
119
|
-
"msw": "
|
|
119
|
+
"msw": "2.13.4",
|
|
120
120
|
"react": "18.3.1",
|
|
121
121
|
"react-dom": "18.3.1",
|
|
122
122
|
"react-router-dom": "6.30.3",
|