mirror of
https://github.com/strapi/strapi.git
synced 2025-11-03 11:25:17 +00:00
Merge branch 'develop' into chore/ctb-editor
This commit is contained in:
commit
76db82f48f
2
.github/actions/check-pr-status/package.json
vendored
2
.github/actions/check-pr-status/package.json
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "check-pr-status",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"main": "dist/index.js",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/admin-test-utils",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"description": "Test utilities for the Strapi administration panel",
|
||||
"license": "MIT",
|
||||
@ -84,10 +84,10 @@
|
||||
"devDependencies": {
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@testing-library/jest-dom": "6.4.5",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"jest-environment-jsdom": "29.6.1",
|
||||
"styled-components": "6.1.8",
|
||||
"tsconfig": "5.12.5"
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@reduxjs/toolkit": "^1.9.7",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/cloud-cli",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Commands to interact with the Strapi Cloud",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -47,7 +47,7 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"axios": "1.8.4",
|
||||
"boxen": "5.1.2",
|
||||
"chalk": "4.1.2",
|
||||
@ -72,8 +72,8 @@
|
||||
"@types/cli-progress": "3.11.5",
|
||||
"@types/eventsource": "1.1.15",
|
||||
"@types/lodash": "^4.14.191",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -9,7 +9,7 @@ export const CONFIG_FILENAME = 'config.json';
|
||||
|
||||
export type LocalConfig = {
|
||||
token?: string;
|
||||
deviceId?: string;
|
||||
installId?: string;
|
||||
};
|
||||
|
||||
async function checkDirectoryExists(directoryPath: string) {
|
||||
|
||||
@ -35,8 +35,8 @@ const cloudCommands = [
|
||||
async function initCloudCLIConfig() {
|
||||
const localConfig = await getLocalConfig();
|
||||
|
||||
if (!localConfig.deviceId) {
|
||||
localConfig.deviceId = crypto.randomUUID();
|
||||
if (!localConfig.installId) {
|
||||
localConfig.installId = crypto.randomUUID();
|
||||
}
|
||||
|
||||
await saveLocalConfig(localConfig);
|
||||
|
||||
@ -119,7 +119,7 @@ export async function cloudApiFactory(
|
||||
): Promise<CloudApiService> {
|
||||
const localConfig = await getLocalConfig();
|
||||
const customHeaders = {
|
||||
'x-device-id': localConfig.deviceId,
|
||||
'x-device-id': localConfig.installId,
|
||||
'x-app-version': packageJson.version,
|
||||
'x-os-name': os.type(),
|
||||
'x-os-version': os.version(),
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "create-strapi-app",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Generate a new Strapi application.",
|
||||
"keywords": [
|
||||
"create-strapi-app",
|
||||
@ -50,7 +50,7 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/cloud-cli": "5.12.5",
|
||||
"@strapi/cloud-cli": "5.12.6",
|
||||
"async-retry": "1.3.3",
|
||||
"chalk": "4.1.2",
|
||||
"commander": "8.3.0",
|
||||
@ -69,8 +69,8 @@
|
||||
"@types/async-retry": "^1",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/inquirer": "8.2.5",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -10,7 +10,7 @@ import { handleCloudLogin } from './cloud';
|
||||
import { createStrapi } from './create-strapi';
|
||||
import { checkNodeRequirements } from './utils/check-requirements';
|
||||
import { checkInstallPath } from './utils/check-install-path';
|
||||
import { machineID } from './utils/machine-id';
|
||||
import { installID } from './utils/install-id';
|
||||
import { trackError } from './utils/usage';
|
||||
import { addDatabaseDependencies, getDatabaseInfos } from './utils/database';
|
||||
|
||||
@ -124,6 +124,10 @@ async function run(args: string[]): Promise<void> {
|
||||
|
||||
const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);
|
||||
|
||||
const randomUUID = crypto.randomUUID();
|
||||
const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;
|
||||
const installId = installID(uuid);
|
||||
|
||||
const scope: Scope = {
|
||||
rootPath,
|
||||
name: basename(rootPath),
|
||||
@ -139,9 +143,9 @@ async function run(args: string[]): Promise<void> {
|
||||
packageJsonStrapi: {
|
||||
template: options.template,
|
||||
},
|
||||
uuid: (process.env.STRAPI_UUID_PREFIX || '') + crypto.randomUUID(),
|
||||
uuid,
|
||||
docker: process.env.DOCKER === 'true',
|
||||
deviceId: machineID(),
|
||||
installId,
|
||||
tmpPath,
|
||||
gitInit: true,
|
||||
devDependencies: {},
|
||||
|
||||
@ -56,7 +56,7 @@ export interface Scope {
|
||||
runApp?: boolean;
|
||||
isQuickstart?: boolean;
|
||||
uuid?: string;
|
||||
deviceId?: string;
|
||||
installId?: string;
|
||||
database: DatabaseInfo;
|
||||
tmpPath?: string;
|
||||
packageJsonStrapi?: Record<string, unknown>;
|
||||
|
||||
13
packages/cli/create-strapi-app/src/utils/install-id.ts
Normal file
13
packages/cli/create-strapi-app/src/utils/install-id.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import crypto from 'crypto';
|
||||
import { machineIdSync } from 'node-machine-id';
|
||||
|
||||
export function installID(projectId?: string) {
|
||||
try {
|
||||
const machineId = machineIdSync();
|
||||
return projectId
|
||||
? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')
|
||||
: crypto.randomUUID();
|
||||
} catch {
|
||||
return crypto.randomUUID();
|
||||
}
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
import { randomUUID } from 'crypto';
|
||||
import { machineIdSync } from 'node-machine-id';
|
||||
|
||||
export function machineID() {
|
||||
try {
|
||||
const deviceId = machineIdSync();
|
||||
return deviceId;
|
||||
} catch (error) {
|
||||
const deviceId = randomUUID();
|
||||
return deviceId;
|
||||
}
|
||||
}
|
||||
@ -22,6 +22,7 @@ export async function createPackageJSON(scope: Scope) {
|
||||
strapi: {
|
||||
...(scope.packageJsonStrapi ?? {}),
|
||||
uuid: scope.uuid,
|
||||
installId: scope.installId,
|
||||
},
|
||||
engines,
|
||||
};
|
||||
|
||||
@ -81,7 +81,7 @@ export async function trackError({ scope, error }: { scope: Scope; error?: Track
|
||||
|
||||
try {
|
||||
return await trackEvent('didNotCreateProject', {
|
||||
deviceId: scope.deviceId,
|
||||
deviceId: scope.installId,
|
||||
...properties,
|
||||
});
|
||||
} catch (err) {
|
||||
@ -103,7 +103,7 @@ export async function trackUsage({
|
||||
|
||||
try {
|
||||
return await trackEvent(event, {
|
||||
deviceId: scope.deviceId,
|
||||
deviceId: scope.installId,
|
||||
...properties,
|
||||
});
|
||||
} catch (err) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "create-strapi",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Generate a new Strapi application.",
|
||||
"keywords": [
|
||||
"create-strapi",
|
||||
@ -36,7 +36,7 @@
|
||||
"bin/"
|
||||
],
|
||||
"dependencies": {
|
||||
"create-strapi-app": "5.12.5"
|
||||
"create-strapi-app": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -61,4 +61,4 @@ class Widgets {
|
||||
}
|
||||
|
||||
export { Widgets };
|
||||
export type { WidgetArgs };
|
||||
export type { WidgetArgs, Widget };
|
||||
|
||||
@ -238,7 +238,10 @@ const AuthProvider = ({
|
||||
const matchingPermissions = actualUserPermissions.filter(
|
||||
(permission) =>
|
||||
permissions.findIndex(
|
||||
(perm) => perm.action === permission.action && perm.subject === permission.subject
|
||||
(perm) =>
|
||||
perm.action === permission.action &&
|
||||
// Only check the subject if it's provided
|
||||
(perm.subject == undefined || perm.subject === permission.subject)
|
||||
) >= 0
|
||||
);
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ import { useInitQuery, useTelemetryPropertiesQuery } from '../services/admin';
|
||||
|
||||
import { useAppInfo } from './AppInfo';
|
||||
import { useAuth } from './Auth';
|
||||
import { useStrapiApp } from './StrapiApp';
|
||||
|
||||
export interface TelemetryProperties {
|
||||
useTypescriptOnServer?: boolean;
|
||||
@ -39,6 +40,7 @@ export interface TrackingProviderProps {
|
||||
|
||||
const TrackingProvider = ({ children }: TrackingProviderProps) => {
|
||||
const token = useAuth('App', (state) => state.token);
|
||||
const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);
|
||||
const { data: initData } = useInitQuery();
|
||||
const { uuid } = initData ?? {};
|
||||
|
||||
@ -57,7 +59,11 @@ const TrackingProvider = ({ children }: TrackingProviderProps) => {
|
||||
event,
|
||||
userId: '',
|
||||
eventPropeties: {},
|
||||
groupProperties: { ...data, projectId: uuid },
|
||||
groupProperties: {
|
||||
...data,
|
||||
projectId: uuid,
|
||||
registeredWidgets: getAllWidgets().map((widget) => widget.uid),
|
||||
},
|
||||
}),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@ -68,7 +74,7 @@ const TrackingProvider = ({ children }: TrackingProviderProps) => {
|
||||
// silence is golden
|
||||
}
|
||||
}
|
||||
}, [data, uuid]);
|
||||
}, [data, uuid, getAllWidgets]);
|
||||
|
||||
const value = React.useMemo(
|
||||
() => ({
|
||||
|
||||
@ -69,6 +69,7 @@ export type {
|
||||
Entity,
|
||||
} from '../../shared/contracts/shared';
|
||||
export type { RBACContext, RBACMiddleware } from './core/apis/rbac';
|
||||
export type { Widget as WidgetType } from './core/apis/Widgets';
|
||||
|
||||
/**
|
||||
* Utils
|
||||
|
||||
@ -38,7 +38,6 @@ const AdminLayout = () => {
|
||||
const { showReleaseNotification } = useConfiguration('AuthenticatedApp');
|
||||
|
||||
const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();
|
||||
|
||||
const [tagName, setTagName] = React.useState<string>(strapiVersion);
|
||||
|
||||
React.useEffect(() => {
|
||||
|
||||
@ -2,7 +2,8 @@ import * as React from 'react';
|
||||
|
||||
import { Box, Flex, Grid, Main, Typography } from '@strapi/design-system';
|
||||
import { CheckCircle, Pencil, PuzzlePiece } from '@strapi/icons';
|
||||
import { MessageDescriptor, useIntl } from 'react-intl';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { Link as ReactRouterLink } from 'react-router-dom';
|
||||
|
||||
import { Layouts } from '../../components/Layouts/Layout';
|
||||
import { Page } from '../../components/PageHelpers';
|
||||
@ -14,21 +15,50 @@ import { useStrapiApp } from '../../features/StrapiApp';
|
||||
import { LastEditedWidget, LastPublishedWidget } from './components/ContentManagerWidgets';
|
||||
import { GuidedTour } from './components/GuidedTour';
|
||||
|
||||
import type { WidgetType } from '@strapi/admin/strapi-admin';
|
||||
|
||||
/* -------------------------------------------------------------------------------------------------
|
||||
* WidgetRoot
|
||||
* -----------------------------------------------------------------------------------------------*/
|
||||
|
||||
interface RootProps {
|
||||
title: MessageDescriptor;
|
||||
icon?: typeof import('@strapi/icons').PuzzlePiece;
|
||||
interface WidgetRootProps extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link'> {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
export const WidgetRoot = ({ title, icon = PuzzlePiece, children }: RootProps) => {
|
||||
export const WidgetRoot = ({
|
||||
title,
|
||||
icon = PuzzlePiece,
|
||||
permissions = [],
|
||||
children,
|
||||
link,
|
||||
}: WidgetRootProps) => {
|
||||
const { formatMessage } = useIntl();
|
||||
const id = React.useId();
|
||||
const Icon = icon;
|
||||
|
||||
const [permissionStatus, setPermissionStatus] = React.useState<
|
||||
'loading' | 'granted' | 'forbidden'
|
||||
>('loading');
|
||||
const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);
|
||||
React.useEffect(() => {
|
||||
const checkPermissions = async () => {
|
||||
const matchingPermissions = await checkUserHasPermissions(permissions);
|
||||
const shouldGrant = matchingPermissions.length >= permissions.length;
|
||||
setPermissionStatus(shouldGrant ? 'granted' : 'forbidden');
|
||||
};
|
||||
|
||||
if (
|
||||
// TODO: remove unstable check once widgets API is stable
|
||||
!window.strapi.future.isEnabled('unstableWidgetsApi') ||
|
||||
!permissions ||
|
||||
permissions.length === 0
|
||||
) {
|
||||
setPermissionStatus('granted');
|
||||
} else {
|
||||
checkPermissions();
|
||||
}
|
||||
}, [checkUserHasPermissions, permissions]);
|
||||
|
||||
return (
|
||||
<Flex
|
||||
width="100%"
|
||||
@ -43,14 +73,29 @@ export const WidgetRoot = ({ title, icon = PuzzlePiece, children }: RootProps) =
|
||||
padding={6}
|
||||
aria-labelledby={id}
|
||||
>
|
||||
<Flex direction="row" alignItems="center" gap={2} tag="header">
|
||||
<Icon fill="neutral500" aria-hidden />
|
||||
<Typography textColor="neutral500" variant="sigma" tag="h2" id={id}>
|
||||
{formatMessage(title)}
|
||||
</Typography>
|
||||
<Flex direction="row" gap={2} justifyContent="space-between" width="100%" tag="header">
|
||||
<Flex gap={2}>
|
||||
<Icon fill="neutral500" aria-hidden />
|
||||
<Typography textColor="neutral500" variant="sigma" tag="h2" id={id}>
|
||||
{formatMessage(title)}
|
||||
</Typography>
|
||||
</Flex>
|
||||
{link && (
|
||||
<Typography
|
||||
tag={ReactRouterLink}
|
||||
variant="omega"
|
||||
textColor="primary600"
|
||||
style={{ textDecoration: 'none' }}
|
||||
to={link.href}
|
||||
>
|
||||
{formatMessage(link.label)}
|
||||
</Typography>
|
||||
)}
|
||||
</Flex>
|
||||
<Box width="100%" height="261px" overflow="auto" tag="main">
|
||||
{children}
|
||||
{permissionStatus === 'loading' && <Widget.Loading />}
|
||||
{permissionStatus === 'forbidden' && <Widget.NoPermissions />}
|
||||
{permissionStatus === 'granted' && children}
|
||||
</Box>
|
||||
</Flex>
|
||||
);
|
||||
@ -86,6 +131,7 @@ const UnstableHomePageCe = () => {
|
||||
const { formatMessage } = useIntl();
|
||||
const user = useAuth('HomePageCE', (state) => state.user);
|
||||
const displayName = user?.firstname ?? user?.username ?? user?.email;
|
||||
|
||||
const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);
|
||||
|
||||
return (
|
||||
@ -110,7 +156,12 @@ const UnstableHomePageCe = () => {
|
||||
{getAllWidgets().map((widget) => {
|
||||
return (
|
||||
<Grid.Item col={6} s={12} key={widget.uid}>
|
||||
<WidgetRoot title={widget.title} icon={widget.icon}>
|
||||
<WidgetRoot
|
||||
title={widget.title}
|
||||
icon={widget.icon}
|
||||
permissions={widget.permissions}
|
||||
link={widget.link}
|
||||
>
|
||||
<WidgetComponent component={widget.component} />
|
||||
</WidgetRoot>
|
||||
</Grid.Item>
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
import React from 'react';
|
||||
|
||||
import { Box, IconButton, Status, Table, Tbody, Td, Tr, Typography } from '@strapi/design-system';
|
||||
import { Pencil } from '@strapi/icons';
|
||||
import { useIntl } from 'react-intl';
|
||||
|
||||
@ -15,7 +15,7 @@ const homepageService = adminApi
|
||||
Homepage.GetRecentDocuments.Response['data'],
|
||||
Homepage.GetRecentDocuments.Request['query']
|
||||
>({
|
||||
query: (params) => `/admin/homepage/recent-documents?action=${params.action}`,
|
||||
query: (params) => `/content-manager/homepage/recent-documents?action=${params.action}`,
|
||||
transformResponse: (response: Homepage.GetRecentDocuments.Response) => response.data,
|
||||
providesTags: (res, _err, { action }) => [
|
||||
{ type: 'RecentDocumentList' as const, id: action },
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/admin",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi Admin",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -86,10 +86,10 @@
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/permissions": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/typescript-utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/permissions": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/typescript-utils": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"@testing-library/dom": "10.1.0",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
@ -143,8 +143,8 @@
|
||||
"zod": "3.24.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin-test-utils": "5.12.5",
|
||||
"@strapi/data-transfer": "5.12.5",
|
||||
"@strapi/admin-test-utils": "5.12.6",
|
||||
"@strapi/data-transfer": "5.12.6",
|
||||
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/invariant": "2.2.36",
|
||||
|
||||
@ -10,7 +10,6 @@ import transfer from './transfer';
|
||||
import user from './user';
|
||||
import webhooks from './webhooks';
|
||||
import contentApi from './content-api';
|
||||
import { createHomepageController } from './homepage';
|
||||
|
||||
export default {
|
||||
admin,
|
||||
@ -23,5 +22,4 @@ export default {
|
||||
user,
|
||||
webhooks,
|
||||
'content-api': contentApi,
|
||||
homepage: createHomepageController,
|
||||
};
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
import type { Plugin } from '@strapi/types';
|
||||
|
||||
const info = { pluginName: 'admin', type: 'admin' };
|
||||
|
||||
export default [
|
||||
{
|
||||
method: 'GET',
|
||||
info,
|
||||
path: '/homepage/recent-documents',
|
||||
handler: 'homepage.getRecentDocuments',
|
||||
config: {
|
||||
policies: ['admin::isAuthenticatedAdmin'],
|
||||
},
|
||||
},
|
||||
] satisfies Plugin.LoadedPlugin['routes'][string]['routes'];
|
||||
@ -7,7 +7,6 @@ import webhooks from './webhooks';
|
||||
import apiTokens from './api-tokens';
|
||||
import contentApi from './content-api';
|
||||
import transfer from './transfer';
|
||||
import homepage from './homepage';
|
||||
|
||||
const routes = {
|
||||
admin: {
|
||||
@ -22,7 +21,6 @@ const routes = {
|
||||
...apiTokens,
|
||||
...contentApi,
|
||||
...transfer,
|
||||
...homepage,
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,222 +0,0 @@
|
||||
import type { Core, Modules, Schema } from '@strapi/types';
|
||||
import { contentTypes } from '@strapi/utils';
|
||||
import type { GetRecentDocuments, RecentDocument } from '../../../shared/contracts/homepage';
|
||||
|
||||
/**
|
||||
* TODO: Remove this service when the future flag for the widget api is removed
|
||||
*/
|
||||
const createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {
|
||||
const MAX_DOCUMENTS = 4;
|
||||
|
||||
const metadataService = strapi.plugin('content-manager').service('document-metadata');
|
||||
const permissionService = strapi.admin.services.permission as typeof import('./permission');
|
||||
|
||||
type ContentTypeConfiguration = {
|
||||
uid: RecentDocument['contentTypeUid'];
|
||||
settings: { mainField: string };
|
||||
};
|
||||
const getConfiguration = async (
|
||||
contentTypeUids: RecentDocument['contentTypeUid'][]
|
||||
): Promise<ContentTypeConfiguration[]> => {
|
||||
/**
|
||||
* Don't use the strapi.store util because we need to make
|
||||
* more precise queries than exact key matches, in order to make as few queries as possible.
|
||||
*/
|
||||
const coreStore = strapi.db.query('strapi::core-store');
|
||||
const rawConfigurations = await coreStore.findMany({
|
||||
where: {
|
||||
key: {
|
||||
$in: contentTypeUids.map(
|
||||
(contentType) => `plugin_content_manager_configuration_content_types::${contentType}`
|
||||
),
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return rawConfigurations.map((rawConfiguration) => {
|
||||
return JSON.parse(rawConfiguration.value);
|
||||
});
|
||||
};
|
||||
|
||||
const getPermittedContentTypes = async () => {
|
||||
const readPermissions = await permissionService.findMany({
|
||||
where: {
|
||||
role: { users: { id: strapi.requestContext.get()?.state?.user.id } },
|
||||
action: 'plugin::content-manager.explorer.read',
|
||||
},
|
||||
});
|
||||
|
||||
return readPermissions
|
||||
.map((permission) => permission.subject)
|
||||
.filter(Boolean) as RecentDocument['contentTypeUid'][];
|
||||
};
|
||||
|
||||
type ContentTypeMeta = {
|
||||
fields: string[];
|
||||
mainField: string;
|
||||
contentType: Schema.ContentType;
|
||||
hasDraftAndPublish: boolean;
|
||||
uid: RecentDocument['contentTypeUid'];
|
||||
};
|
||||
|
||||
const getContentTypesMeta = (
|
||||
allowedContentTypeUids: RecentDocument['contentTypeUid'][],
|
||||
configurations: ContentTypeConfiguration[]
|
||||
): ContentTypeMeta[] => {
|
||||
return allowedContentTypeUids.map((uid) => {
|
||||
const configuration = configurations.find((config) => config.uid === uid);
|
||||
const contentType = strapi.contentType(uid);
|
||||
const fields = ['documentId', 'updatedAt'];
|
||||
|
||||
// Add fields required to get the status if D&P is enabled
|
||||
const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);
|
||||
if (hasDraftAndPublish) {
|
||||
fields.push('publishedAt');
|
||||
}
|
||||
|
||||
// Only add the main field if it's defined
|
||||
if (configuration?.settings.mainField) {
|
||||
fields.push(configuration.settings.mainField);
|
||||
}
|
||||
|
||||
// Only add locale if it's localized
|
||||
const isLocalized = (contentType.pluginOptions?.i18n as any)?.localized;
|
||||
if (isLocalized) {
|
||||
fields.push('locale');
|
||||
}
|
||||
|
||||
return {
|
||||
fields,
|
||||
mainField: configuration!.settings.mainField,
|
||||
contentType,
|
||||
hasDraftAndPublish,
|
||||
uid,
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
const formatDocuments = (documents: Modules.Documents.AnyDocument[], meta: ContentTypeMeta) => {
|
||||
return documents.map((document) => {
|
||||
return {
|
||||
documentId: document.documentId,
|
||||
locale: document.locale ?? null,
|
||||
updatedAt: new Date(document.updatedAt),
|
||||
title: document[meta.mainField ?? 'documentId'],
|
||||
publishedAt:
|
||||
meta.hasDraftAndPublish && document.publishedAt ? new Date(document.publishedAt) : null,
|
||||
contentTypeUid: meta.uid,
|
||||
contentTypeDisplayName: meta.contentType.info.displayName,
|
||||
kind: meta.contentType.kind,
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
const addStatusToDocuments = async (documents: RecentDocument[]): Promise<RecentDocument[]> => {
|
||||
return Promise.all(
|
||||
documents.map(async (recentDocument) => {
|
||||
const hasDraftAndPublish = contentTypes.hasDraftAndPublish(
|
||||
strapi.contentType(recentDocument.contentTypeUid)
|
||||
);
|
||||
/**
|
||||
* Tries to query the other version of the document if draft and publish is enabled,
|
||||
* so that we know when to give the "modified" status.
|
||||
*/
|
||||
const { availableStatus } = await metadataService.getMetadata(
|
||||
recentDocument.contentTypeUid,
|
||||
recentDocument,
|
||||
{
|
||||
availableStatus: hasDraftAndPublish,
|
||||
availableLocales: false,
|
||||
}
|
||||
);
|
||||
const status: RecentDocument['status'] = metadataService.getStatus(
|
||||
recentDocument,
|
||||
availableStatus
|
||||
);
|
||||
|
||||
return {
|
||||
...recentDocument,
|
||||
status: hasDraftAndPublish ? status : undefined,
|
||||
};
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
const permissionCheckerService = strapi.plugin('content-manager').service('permission-checker');
|
||||
const getPermissionChecker = (uid: string) =>
|
||||
permissionCheckerService.create({
|
||||
userAbility: strapi.requestContext.get()?.state.userAbility,
|
||||
model: uid,
|
||||
});
|
||||
|
||||
return {
|
||||
async getRecentlyPublishedDocuments(): Promise<GetRecentDocuments.Response['data']> {
|
||||
const permittedContentTypes = await getPermittedContentTypes();
|
||||
const allowedContentTypeUids = permittedContentTypes.filter((uid) => {
|
||||
return contentTypes.hasDraftAndPublish(strapi.contentType(uid));
|
||||
});
|
||||
// Fetch the configuration for each content type in a single query
|
||||
const configurations = await getConfiguration(allowedContentTypeUids);
|
||||
// Get the necessary metadata for the documents
|
||||
const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);
|
||||
// Now actually fetch and format the documents
|
||||
const recentDocuments = await Promise.all(
|
||||
contentTypesMeta.map(async (meta) => {
|
||||
const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({
|
||||
limit: MAX_DOCUMENTS,
|
||||
sort: 'publishedAt:desc',
|
||||
fields: meta.fields,
|
||||
status: 'published',
|
||||
});
|
||||
|
||||
const docs = await strapi.documents(meta.uid).findMany(permissionQuery);
|
||||
|
||||
return formatDocuments(docs, meta);
|
||||
})
|
||||
);
|
||||
|
||||
const overallRecentDocuments = recentDocuments
|
||||
.flat()
|
||||
.sort((a, b) => {
|
||||
if (!a.publishedAt || !b.publishedAt) return 0;
|
||||
return b.publishedAt.valueOf() - a.publishedAt.valueOf();
|
||||
})
|
||||
.slice(0, MAX_DOCUMENTS);
|
||||
|
||||
return addStatusToDocuments(overallRecentDocuments);
|
||||
},
|
||||
|
||||
async getRecentlyUpdatedDocuments(): Promise<GetRecentDocuments.Response['data']> {
|
||||
const allowedContentTypeUids = await getPermittedContentTypes();
|
||||
// Fetch the configuration for each content type in a single query
|
||||
const configurations = await getConfiguration(allowedContentTypeUids);
|
||||
// Get the necessary metadata for the documents
|
||||
const contentTypesMeta = getContentTypesMeta(allowedContentTypeUids, configurations);
|
||||
// Now actually fetch and format the documents
|
||||
const recentDocuments = await Promise.all(
|
||||
contentTypesMeta.map(async (meta) => {
|
||||
const permissionQuery = await getPermissionChecker(meta.uid).sanitizedQuery.read({
|
||||
limit: MAX_DOCUMENTS,
|
||||
sort: 'updatedAt:desc',
|
||||
fields: meta.fields,
|
||||
});
|
||||
|
||||
const docs = await strapi.documents(meta.uid).findMany(permissionQuery);
|
||||
|
||||
return formatDocuments(docs, meta);
|
||||
})
|
||||
);
|
||||
|
||||
const overallRecentDocuments = recentDocuments
|
||||
.flat()
|
||||
.sort((a, b) => {
|
||||
return b.updatedAt.valueOf() - a.updatedAt.valueOf();
|
||||
})
|
||||
.slice(0, MAX_DOCUMENTS);
|
||||
|
||||
return addStatusToDocuments(overallRecentDocuments);
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export { createHomepageService };
|
||||
@ -13,7 +13,6 @@ import * as action from './action';
|
||||
import * as apiToken from './api-token';
|
||||
import * as transfer from './transfer';
|
||||
import * as projectSettings from './project-settings';
|
||||
import { createHomepageService } from './homepage';
|
||||
|
||||
// TODO: TS - Export services one by one as this export is cjs
|
||||
export default {
|
||||
@ -31,5 +30,4 @@ export default {
|
||||
'api-token': apiToken,
|
||||
transfer,
|
||||
'project-settings': projectSettings,
|
||||
homepage: createHomepageService,
|
||||
};
|
||||
|
||||
@ -9,7 +9,6 @@ import * as token from '../services/token';
|
||||
import * as apiToken from '../services/api-token';
|
||||
import * as projectSettings from '../services/project-settings';
|
||||
import * as transfer from '../services/transfer';
|
||||
import { createHomepageService } from '../services/homepage';
|
||||
|
||||
type S = {
|
||||
role: typeof role;
|
||||
@ -23,7 +22,6 @@ type S = {
|
||||
'api-token': typeof apiToken;
|
||||
'project-settings': typeof projectSettings;
|
||||
transfer: typeof transfer;
|
||||
homepage: ReturnType<typeof createHomepageService>;
|
||||
};
|
||||
|
||||
type Resolve<T> = T extends (...args: unknown[]) => unknown ? T : { [K in keyof T]: T[K] };
|
||||
|
||||
@ -439,6 +439,7 @@ const Component = ({
|
||||
<Accordion.Trigger>{displayValue}</Accordion.Trigger>
|
||||
<Accordion.Actions>
|
||||
<IconButton
|
||||
disabled={disabled}
|
||||
variant="ghost"
|
||||
onClick={onDeleteComponent}
|
||||
label={formatMessage({
|
||||
@ -449,6 +450,7 @@ const Component = ({
|
||||
<Trash />
|
||||
</IconButton>
|
||||
<IconButton
|
||||
disabled={disabled}
|
||||
ref={composedAccordionRefs}
|
||||
variant="ghost"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
|
||||
@ -2,25 +2,29 @@ import * as Homepage from '../../../shared/contracts/homepage';
|
||||
|
||||
import { contentManagerApi } from './api';
|
||||
|
||||
const homepageService = contentManagerApi.injectEndpoints({
|
||||
/**
|
||||
* TODO: Remove overrideExisting when we remove the future flag
|
||||
* and delete the old homepage service in the admin
|
||||
*/
|
||||
overrideExisting: true,
|
||||
endpoints: (builder) => ({
|
||||
getRecentDocuments: builder.query<
|
||||
Homepage.GetRecentDocuments.Response['data'],
|
||||
Homepage.GetRecentDocuments.Request['query']
|
||||
>({
|
||||
query: (params) => `/admin/homepage/recent-documents?action=${params.action}`,
|
||||
transformResponse: (response: Homepage.GetRecentDocuments.Response) => response.data,
|
||||
providesTags: (res, _err, { action }) => [
|
||||
{ type: 'RecentDocumentList' as const, id: action },
|
||||
],
|
||||
const homepageService = contentManagerApi
|
||||
.enhanceEndpoints({
|
||||
addTagTypes: ['RecentDocumentList'],
|
||||
})
|
||||
.injectEndpoints({
|
||||
/**
|
||||
* TODO: Remove overrideExisting when we remove the future flag
|
||||
* and delete the old homepage service in the admin
|
||||
*/
|
||||
overrideExisting: true,
|
||||
endpoints: (builder) => ({
|
||||
getRecentDocuments: builder.query<
|
||||
Homepage.GetRecentDocuments.Response['data'],
|
||||
Homepage.GetRecentDocuments.Request['query']
|
||||
>({
|
||||
query: (params) => `/content-manager/homepage/recent-documents?action=${params.action}`,
|
||||
transformResponse: (response: Homepage.GetRecentDocuments.Response) => response.data,
|
||||
providesTags: (res, _err, { action }) => [
|
||||
{ type: 'RecentDocumentList' as const, id: action },
|
||||
],
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
});
|
||||
});
|
||||
|
||||
const { useGetRecentDocumentsQuery } = homepageService;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/content-manager",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "A powerful UI to easily manage your data.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -66,8 +66,8 @@
|
||||
"@sindresorhus/slugify": "1.1.0",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"codemirror5": "npm:codemirror@^5.65.11",
|
||||
"date-fns": "2.30.0",
|
||||
"fractional-indexing": "3.2.0",
|
||||
@ -102,8 +102,8 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@types/jest": "29.5.2",
|
||||
"@types/lodash": "^4.14.191",
|
||||
|
||||
@ -7,6 +7,7 @@ import singleTypes from './single-types';
|
||||
import uid from './uid';
|
||||
import history from '../history';
|
||||
import preview from '../preview';
|
||||
import homepage from '../homepage';
|
||||
|
||||
export default {
|
||||
'collection-types': collectionTypes,
|
||||
@ -18,4 +19,5 @@ export default {
|
||||
uid,
|
||||
...(history.controllers ? history.controllers : {}),
|
||||
...(preview.controllers ? preview.controllers : {}),
|
||||
...homepage.controllers,
|
||||
};
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
import type { Core } from '@strapi/types';
|
||||
import * as yup from 'yup';
|
||||
import { errors } from '@strapi/utils';
|
||||
import { getService } from '../utils';
|
||||
import type { GetRecentDocuments } from '../../../shared/contracts/homepage';
|
||||
import type { GetRecentDocuments } from '../../../../shared/contracts/homepage';
|
||||
|
||||
const createHomepageController = () => {
|
||||
const homepageService = getService('homepage');
|
||||
const homepageService = strapi.plugin('content-manager').service('homepage');
|
||||
|
||||
const recentDocumentParamsSchema = yup.object().shape({
|
||||
action: yup
|
||||
@ -0,0 +1,10 @@
|
||||
import type { Plugin } from '@strapi/types';
|
||||
import { createHomepageController } from './homepage';
|
||||
|
||||
export const controllers = {
|
||||
homepage: createHomepageController,
|
||||
/**
|
||||
* Casting is needed because the types aren't aware that Strapi supports
|
||||
* passing a controller factory as the value, instead of a controller object directly
|
||||
*/
|
||||
} as unknown as Plugin.LoadedPlugin['controllers'];
|
||||
@ -0,0 +1,9 @@
|
||||
import { routes } from './routes';
|
||||
import { controllers } from './controllers';
|
||||
import { services } from './services';
|
||||
|
||||
export default {
|
||||
routes,
|
||||
controllers,
|
||||
services,
|
||||
};
|
||||
@ -0,0 +1,20 @@
|
||||
import type { Plugin } from '@strapi/types';
|
||||
|
||||
const info = { pluginName: 'content-manager', type: 'admin' };
|
||||
|
||||
const homepageRouter: Plugin.LoadedPlugin['routes'][string] = {
|
||||
type: 'admin',
|
||||
routes: [
|
||||
{
|
||||
method: 'GET',
|
||||
info,
|
||||
path: '/homepage/recent-documents',
|
||||
handler: 'homepage.getRecentDocuments',
|
||||
config: {
|
||||
policies: ['admin::isAuthenticatedAdmin'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export { homepageRouter };
|
||||
@ -0,0 +1,10 @@
|
||||
import type { Plugin } from '@strapi/types';
|
||||
import { homepageRouter } from './homepage';
|
||||
|
||||
/**
|
||||
* The routes will be merged with the other Content Manager routers,
|
||||
* so we need to avoid conficts in the router name, and to prefix the path for each route.
|
||||
*/
|
||||
export const routes = {
|
||||
homepage: homepageRouter,
|
||||
} satisfies Plugin.LoadedPlugin['routes'];
|
||||
@ -1,7 +1,7 @@
|
||||
import type { Core, Modules, Schema } from '@strapi/types';
|
||||
import { contentTypes } from '@strapi/utils';
|
||||
|
||||
import type { GetRecentDocuments, RecentDocument } from '../../../shared/contracts/homepage';
|
||||
import type { GetRecentDocuments, RecentDocument } from '../../../../shared/contracts/homepage';
|
||||
|
||||
const createHomepageService = ({ strapi }: { strapi: Core.Strapi }) => {
|
||||
const MAX_DOCUMENTS = 4;
|
||||
@ -0,0 +1,7 @@
|
||||
import type { Plugin } from '@strapi/types';
|
||||
|
||||
import { createHomepageService } from './homepage';
|
||||
|
||||
export const services = {
|
||||
homepage: createHomepageService,
|
||||
} satisfies Plugin.LoadedPlugin['services'];
|
||||
@ -22,8 +22,6 @@ const createPreviewService = ({ strapi }: { strapi: Core.Strapi }) => {
|
||||
strapi.log.error(`Failed to get preview URL: ${error}`);
|
||||
throw new errors.ApplicationError('Failed to get preview URL');
|
||||
}
|
||||
|
||||
return;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
import admin from './admin';
|
||||
import history from '../history';
|
||||
import preview from '../preview';
|
||||
import homepage from '../homepage';
|
||||
|
||||
export default {
|
||||
admin,
|
||||
...(history.routes ? history.routes : {}),
|
||||
...(preview.routes ? preview.routes : {}),
|
||||
...homepage.routes,
|
||||
};
|
||||
|
||||
@ -9,6 +9,7 @@ import populateBuilder from './populate-builder';
|
||||
import uid from './uid';
|
||||
import history from '../history';
|
||||
import preview from '../preview';
|
||||
import homepage from '../homepage';
|
||||
import documentMetadata from './document-metadata';
|
||||
import documentManager from './document-manager';
|
||||
|
||||
@ -26,4 +27,5 @@ export default {
|
||||
uid,
|
||||
...(history.services ? history.services : {}),
|
||||
...(preview.services ? preview.services : {}),
|
||||
...homepage.services,
|
||||
};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/content-releases",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi plugin for organizing and releasing content",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -59,11 +59,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"date-fns": "2.30.0",
|
||||
"date-fns-tz": "2.0.1",
|
||||
"formik": "2.4.5",
|
||||
@ -75,9 +75,9 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/admin-test-utils": "5.12.5",
|
||||
"@strapi/content-manager": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/admin-test-utils": "5.12.6",
|
||||
"@strapi/content-manager": "5.12.6",
|
||||
"@testing-library/dom": "10.1.0",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/content-type-builder",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Create and manage content types",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -67,9 +67,9 @@
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@sindresorhus/slugify": "1.1.0",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/generators": "5.12.5",
|
||||
"@strapi/generators": "5.12.6",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"date-fns": "2.30.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"immer": "9.0.21",
|
||||
@ -82,8 +82,8 @@
|
||||
"zod": "3.24.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/dom": "10.1.0",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/core",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Core of Strapi",
|
||||
"homepage": "https://strapi.io",
|
||||
"bugs": {
|
||||
@ -56,14 +56,14 @@
|
||||
"@koa/cors": "5.0.0",
|
||||
"@koa/router": "12.0.2",
|
||||
"@paralleldrive/cuid2": "2.2.2",
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/generators": "5.12.5",
|
||||
"@strapi/logger": "5.12.5",
|
||||
"@strapi/permissions": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/typescript-utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@strapi/generators": "5.12.6",
|
||||
"@strapi/logger": "5.12.6",
|
||||
"@strapi/permissions": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/typescript-utils": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"bcryptjs": "2.4.3",
|
||||
"boxen": "5.1.2",
|
||||
"chalk": "4.1.2",
|
||||
@ -126,9 +126,9 @@
|
||||
"@types/node": "18.19.24",
|
||||
"@types/node-schedule": "2.1.7",
|
||||
"@types/statuses": "2.0.1",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"supertest": "6.3.3",
|
||||
"tsconfig": "5.12.5"
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -60,6 +60,7 @@ export const loadConfiguration = (opts: StrapiOptions) => {
|
||||
autoReload,
|
||||
environment: process.env.NODE_ENV,
|
||||
uuid: _.get(pkgJSON, 'strapi.uuid'),
|
||||
installId: _.get(pkgJSON, 'strapi.installId'),
|
||||
packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),
|
||||
info: {
|
||||
...pkgJSON,
|
||||
|
||||
@ -3,7 +3,7 @@ import { join, resolve } from 'path';
|
||||
import crypto from 'crypto';
|
||||
import type { Core } from '@strapi/types';
|
||||
|
||||
import { machineID } from '@strapi/utils';
|
||||
import { generateInstallId } from '@strapi/utils';
|
||||
|
||||
interface LicenseInfo {
|
||||
type: 'bronze' | 'silver' | 'gold';
|
||||
@ -88,11 +88,17 @@ const fetchLicense = async (
|
||||
key: string,
|
||||
projectId: string
|
||||
) => {
|
||||
const { installId: installIdFromPackageJson } = strapi.config;
|
||||
|
||||
const response = await strapi
|
||||
.fetch(`https://license.strapi.io/api/licenses/validate`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ key, projectId, deviceId: machineID() }),
|
||||
body: JSON.stringify({
|
||||
key,
|
||||
projectId,
|
||||
deviceId: generateInstallId(projectId, installIdFromPackageJson),
|
||||
}), // NOTE: Doing nothing on the LR with the installId
|
||||
})
|
||||
.catch(throwError);
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ import type { Core } from '@strapi/types';
|
||||
*/
|
||||
const generateAdminUserHash = (strapi: Core.Strapi) => {
|
||||
const ctx = strapi?.requestContext?.get();
|
||||
|
||||
if (!ctx?.state?.user?.email) {
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ import _ from 'lodash';
|
||||
import isDocker from 'is-docker';
|
||||
import ciEnv from 'ci-info';
|
||||
import tsUtils from '@strapi/typescript-utils';
|
||||
import { env, machineID } from '@strapi/utils';
|
||||
import { env, generateInstallId } from '@strapi/utils';
|
||||
import type { Core } from '@strapi/types';
|
||||
import { generateAdminUserHash } from './admin-user-hash';
|
||||
|
||||
@ -40,8 +40,9 @@ const addPackageJsonStrapiMetadata = (metadata: Record<string, unknown>, strapi:
|
||||
* Create a send function for event with all the necessary metadata
|
||||
*/
|
||||
export default (strapi: Core.Strapi): Sender => {
|
||||
const { uuid } = strapi.config;
|
||||
const deviceId = machineID();
|
||||
const { uuid, installId: installIdFromPackageJson } = strapi.config;
|
||||
|
||||
const installId = generateInstallId(uuid, installIdFromPackageJson);
|
||||
|
||||
const serverRootPath = strapi.dirs.app.root;
|
||||
const adminRootPath = path.join(strapi.dirs.app.root, 'src', 'admin');
|
||||
@ -75,7 +76,7 @@ export default (strapi: Core.Strapi): Sender => {
|
||||
body: JSON.stringify({
|
||||
event,
|
||||
userId,
|
||||
deviceId,
|
||||
installId,
|
||||
eventProperties: payload.eventProperties,
|
||||
userProperties: userId ? { ...anonymousUserProperties, ...payload.userProperties } : {},
|
||||
groupProperties: {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/data-transfer",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Data transfer capabilities for Strapi",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -42,9 +42,9 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/logger": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/logger": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"chalk": "4.1.2",
|
||||
"cli-table3": "0.6.5",
|
||||
"commander": "8.3.0",
|
||||
@ -61,7 +61,7 @@
|
||||
"ws": "8.17.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/jest": "29.5.2",
|
||||
"@types/koa": "2.13.4",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/database",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi's database layer",
|
||||
"homepage": "https://strapi.io",
|
||||
"bugs": {
|
||||
@ -42,7 +42,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@paralleldrive/cuid2": "2.2.2",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"ajv": "8.16.0",
|
||||
"date-fns": "2.30.0",
|
||||
"debug": "4.3.4",
|
||||
@ -54,8 +54,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/email",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Easily configure your Strapi application to send emails.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -58,8 +58,8 @@
|
||||
"dependencies": {
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/provider-email-sendmail": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/provider-email-sendmail": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"koa2-ratelimit": "^1.1.3",
|
||||
"lodash": "4.17.21",
|
||||
"react-intl": "6.6.2",
|
||||
@ -67,8 +67,8 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@types/koa": "2.13.4",
|
||||
"@types/lodash": "^4.14.191",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/permissions",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi's permission layer.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -39,14 +39,14 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@casl/ability": "6.5.0",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"lodash": "4.17.21",
|
||||
"qs": "6.11.1",
|
||||
"sift": "16.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/review-workflows",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Review workflows for your content",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -59,7 +59,7 @@
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"fractional-indexing": "3.2.0",
|
||||
"react-dnd": "16.0.1",
|
||||
"react-dnd-html5-backend": "16.0.1",
|
||||
@ -69,9 +69,9 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/content-manager": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/content-manager": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"msw": "1.3.0",
|
||||
"react": "18.3.1",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/strapi",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -110,24 +110,24 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "0.5.15",
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/cloud-cli": "5.12.5",
|
||||
"@strapi/content-manager": "5.12.5",
|
||||
"@strapi/content-releases": "5.12.5",
|
||||
"@strapi/content-type-builder": "5.12.5",
|
||||
"@strapi/core": "5.12.5",
|
||||
"@strapi/data-transfer": "5.12.5",
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/email": "5.12.5",
|
||||
"@strapi/generators": "5.12.5",
|
||||
"@strapi/i18n": "5.12.5",
|
||||
"@strapi/logger": "5.12.5",
|
||||
"@strapi/permissions": "5.12.5",
|
||||
"@strapi/review-workflows": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/typescript-utils": "5.12.5",
|
||||
"@strapi/upload": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/cloud-cli": "5.12.6",
|
||||
"@strapi/content-manager": "5.12.6",
|
||||
"@strapi/content-releases": "5.12.6",
|
||||
"@strapi/content-type-builder": "5.12.6",
|
||||
"@strapi/core": "5.12.6",
|
||||
"@strapi/data-transfer": "5.12.6",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@strapi/email": "5.12.6",
|
||||
"@strapi/generators": "5.12.6",
|
||||
"@strapi/i18n": "5.12.6",
|
||||
"@strapi/logger": "5.12.6",
|
||||
"@strapi/permissions": "5.12.6",
|
||||
"@strapi/review-workflows": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@strapi/typescript-utils": "5.12.6",
|
||||
"@strapi/upload": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"@types/nodemon": "1.19.6",
|
||||
"@vitejs/plugin-react-swc": "3.6.0",
|
||||
"boxen": "5.1.2",
|
||||
@ -181,11 +181,11 @@
|
||||
"@types/node": "18.19.24",
|
||||
"@types/webpack-bundle-analyzer": "4.7.0",
|
||||
"@types/webpack-hot-middleware": "2.25.9",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"jest": "29.6.0",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"tsconfig": "5.12.5"
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^17.0.0 || ^18.0.0",
|
||||
|
||||
@ -11,8 +11,9 @@ const readPackageJSON = async (path: string) => {
|
||||
try {
|
||||
const packageObj = await fse.readJson(path);
|
||||
const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;
|
||||
const installId = packageObj.strapi ? packageObj.strapi.installId : null;
|
||||
|
||||
return { uuid, packageObj };
|
||||
return { uuid, installId, packageObj };
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
console.error(`${chalk.red('Error')}: ${err.message}`);
|
||||
@ -40,7 +41,7 @@ const action = async () => {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const { uuid, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};
|
||||
const { uuid, installId, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};
|
||||
|
||||
if ((packageObj.strapi && packageObj.strapi.telemetryDisabled) || !uuid) {
|
||||
console.log(`${chalk.yellow('Warning:')} telemetry is already disabled`);
|
||||
@ -66,7 +67,7 @@ const action = async () => {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
await sendEvent('didOptOutTelemetry', uuid);
|
||||
await sendEvent('didOptOutTelemetry', uuid, installId);
|
||||
console.log(`${chalk.green('Successfully opted out of Strapi telemetry')}`);
|
||||
process.exit(0);
|
||||
};
|
||||
|
||||
@ -11,6 +11,7 @@ import { sendEvent } from '../../utils/telemetry';
|
||||
type PackageJson = {
|
||||
strapi?: {
|
||||
uuid?: string;
|
||||
installId?: string;
|
||||
telemetryDisabled?: boolean;
|
||||
};
|
||||
};
|
||||
@ -94,7 +95,11 @@ const action = async () => {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
await sendEvent('didOptInTelemetry', updatedPackageJSON.strapi.uuid);
|
||||
await sendEvent(
|
||||
'didOptInTelemetry',
|
||||
updatedPackageJSON.strapi.uuid,
|
||||
updatedPackageJSON.strapi?.installId
|
||||
);
|
||||
console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);
|
||||
process.exit(0);
|
||||
};
|
||||
|
||||
@ -286,7 +286,7 @@ const loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {
|
||||
const speed =
|
||||
elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';
|
||||
|
||||
loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${
|
||||
loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transferred (${size}) (${elapsed}) ${
|
||||
!stageData?.endTime ? speed : ''
|
||||
}`;
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import { machineID } from '@strapi/utils';
|
||||
import { generateInstallId } from '@strapi/utils';
|
||||
|
||||
export const sendEvent = async (event: string, uuid: string) => {
|
||||
export const sendEvent = async (event: string, uuid: string, installId?: any) => {
|
||||
try {
|
||||
await fetch('https://analytics.strapi.io/api/v2/track', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
event,
|
||||
deviceId: machineID(),
|
||||
deviceId: generateInstallId(uuid, installId),
|
||||
groupProperties: { projectId: uuid },
|
||||
}),
|
||||
headers: {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/types",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Shared typescript types for Strapi internal use",
|
||||
"keywords": [
|
||||
"strapi"
|
||||
@ -46,10 +46,10 @@
|
||||
"@casl/ability": "6.5.0",
|
||||
"@koa/cors": "5.0.0",
|
||||
"@koa/router": "12.0.2",
|
||||
"@strapi/database": "5.12.5",
|
||||
"@strapi/logger": "5.12.5",
|
||||
"@strapi/permissions": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/database": "5.12.6",
|
||||
"@strapi/logger": "5.12.6",
|
||||
"@strapi/permissions": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"commander": "8.3.0",
|
||||
"koa": "2.15.4",
|
||||
"koa-body": "6.0.1",
|
||||
@ -64,9 +64,9 @@
|
||||
"@types/koa": "2.13.4",
|
||||
"@types/koa__router": "12.0.0",
|
||||
"@types/node-schedule": "2.1.7",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"lodash": "4.17.21",
|
||||
"tsconfig": "5.12.5",
|
||||
"tsconfig": "5.12.6",
|
||||
"typescript": "5.4.4",
|
||||
"undici": "6.21.2"
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/upload",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Makes it easy to upload images and files to your Strapi Application.",
|
||||
"license": "SEE LICENSE IN LICENSE",
|
||||
"author": {
|
||||
@ -63,8 +63,8 @@
|
||||
"@mux/mux-player-react": "3.1.0",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/provider-upload-local": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/provider-upload-local": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"byte-size": "8.1.1",
|
||||
"cropperjs": "1.6.1",
|
||||
"date-fns": "2.30.0",
|
||||
@ -86,8 +86,8 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/dom": "10.1.0",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/utils",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Shared utilities for the Strapi packages",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -61,10 +61,10 @@
|
||||
"@types/http-errors": "2.0.4",
|
||||
"@types/koa": "2.13.4",
|
||||
"@types/node": "18.19.24",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"koa": "2.15.4",
|
||||
"koa-body": "6.0.1",
|
||||
"tsconfig": "5.12.5"
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -4,7 +4,7 @@ export { default as setCreatorFields } from './set-creator-fields';
|
||||
export { default as providerFactory } from './provider-factory';
|
||||
export { default as traverseEntity } from './traverse-entity';
|
||||
export { default as importDefault } from './import-default';
|
||||
export { default as machineID } from './machine-id';
|
||||
export { generateInstallId } from './install-id';
|
||||
|
||||
export { validateYupSchema, validateYupSchemaSync } from './validators';
|
||||
export { isOperator, isOperatorOfType } from './operators';
|
||||
|
||||
14
packages/core/utils/src/install-id.ts
Normal file
14
packages/core/utils/src/install-id.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import crypto from 'crypto';
|
||||
import { machineIdSync } from 'node-machine-id';
|
||||
|
||||
export const generateInstallId = (projectId: string, installId: string) => {
|
||||
if (installId) return installId;
|
||||
try {
|
||||
const machineId = machineIdSync();
|
||||
return projectId
|
||||
? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')
|
||||
: crypto.randomUUID();
|
||||
} catch (error) {
|
||||
return crypto.randomUUID();
|
||||
}
|
||||
};
|
||||
@ -1,12 +0,0 @@
|
||||
import { randomUUID } from 'crypto';
|
||||
import { machineIdSync } from 'node-machine-id';
|
||||
|
||||
export default () => {
|
||||
try {
|
||||
const deviceId = machineIdSync();
|
||||
return deviceId;
|
||||
} catch (error) {
|
||||
const deviceId = randomUUID();
|
||||
return deviceId;
|
||||
}
|
||||
};
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/generators",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Interactive API generator.",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -49,8 +49,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@sindresorhus/slugify": "1.1.0",
|
||||
"@strapi/typescript-utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/typescript-utils": "5.12.6",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"chalk": "4.1.2",
|
||||
"copyfiles": "2.4.1",
|
||||
"fs-extra": "11.2.0",
|
||||
@ -60,8 +60,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-cloud",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Instructions to deploy your local project to Strapi Cloud",
|
||||
"license": "MIT",
|
||||
"author": {
|
||||
@ -45,13 +45,13 @@
|
||||
"react-intl": "6.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-router-dom": "6.22.3",
|
||||
"styled-components": "6.1.8",
|
||||
"tsconfig": "5.12.5",
|
||||
"tsconfig": "5.12.6",
|
||||
"typescript": "5.4.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-color-picker",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi maintained Custom Fields",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -63,7 +63,7 @@
|
||||
"react-intl": "6.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
"react": "18.3.1",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-documentation",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -59,10 +59,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"bcryptjs": "2.4.3",
|
||||
"cheerio": "^1.0.0",
|
||||
"formik": "2.4.5",
|
||||
@ -78,9 +78,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apidevtools/swagger-parser": "^10.1.0",
|
||||
"@strapi/admin-test-utils": "5.12.5",
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin-test-utils": "5.12.6",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-graphql",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Adds GraphQL endpoint with default API methods.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -59,7 +59,7 @@
|
||||
"@koa/cors": "5.0.0",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"graphql": "^16.8.1",
|
||||
"graphql-depth-limit": "^1.1.0",
|
||||
"graphql-playground-middleware-koa": "^1.6.21",
|
||||
@ -71,19 +71,19 @@
|
||||
"pluralize": "8.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@types/graphql-depth-limit": "1.1.5",
|
||||
"@types/koa-bodyparser": "4.3.12",
|
||||
"@types/koa__cors": "5.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"koa": "2.15.4",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-router-dom": "6.22.3",
|
||||
"styled-components": "6.1.8",
|
||||
"tsconfig": "5.12.5",
|
||||
"tsconfig": "5.12.6",
|
||||
"typescript": "5.4.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/i18n",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Create read and update content in different languages, both from the Admin Panel and from the API",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -59,7 +59,7 @@
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"lodash": "4.17.21",
|
||||
"qs": "6.11.1",
|
||||
"react-intl": "6.6.2",
|
||||
@ -67,10 +67,10 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/admin": "5.12.5",
|
||||
"@strapi/admin-test-utils": "5.12.5",
|
||||
"@strapi/content-manager": "5.12.5",
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/admin": "5.12.6",
|
||||
"@strapi/admin-test-utils": "5.12.6",
|
||||
"@strapi/content-manager": "5.12.6",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
"msw": "1.3.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-sentry",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Send Strapi error events to Sentry",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -58,7 +58,7 @@
|
||||
"@strapi/icons": "2.0.0-rc.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-router-dom": "6.22.3",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/plugin-users-permissions",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Protect your API with a full-authentication process based on JWT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -50,7 +50,7 @@
|
||||
"dependencies": {
|
||||
"@strapi/design-system": "2.0.0-rc.23",
|
||||
"@strapi/icons": "2.0.0-rc.23",
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"bcryptjs": "2.4.3",
|
||||
"formik": "2.4.5",
|
||||
"grant": "^5.4.8",
|
||||
@ -69,7 +69,7 @@
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/strapi": "5.12.5",
|
||||
"@strapi/strapi": "5.12.6",
|
||||
"@testing-library/dom": "10.1.0",
|
||||
"@testing-library/react": "15.0.7",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-email-amazon-ses",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Amazon SES provider for strapi email",
|
||||
"keywords": [
|
||||
"email",
|
||||
@ -44,12 +44,12 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"node-ses": "^3.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-email-mailgun",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Mailgun provider for strapi email plugin",
|
||||
"keywords": [
|
||||
"email",
|
||||
@ -46,13 +46,13 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"form-data": "^4.0.0",
|
||||
"mailgun.js": "10.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-email-nodemailer",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Nodemailer provider for Strapi 3",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -62,8 +62,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/nodemailer": "6.4.7",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-email-sendgrid",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Sendgrid provider for strapi email",
|
||||
"keywords": [
|
||||
"email",
|
||||
@ -45,11 +45,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@sendgrid/mail": "8.1.3",
|
||||
"@strapi/utils": "5.12.5"
|
||||
"@strapi/utils": "5.12.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-email-sendmail",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Sendmail provider for strapi email",
|
||||
"keywords": [
|
||||
"email",
|
||||
@ -43,13 +43,13 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"sendmail": "^1.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/sendmail": "1.4.4",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-upload-aws-s3",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "AWS S3 provider for strapi upload",
|
||||
"keywords": [
|
||||
"upload",
|
||||
@ -55,8 +55,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "29.5.2",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-upload-cloudinary",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Cloudinary provider for strapi upload",
|
||||
"keywords": [
|
||||
"upload",
|
||||
@ -44,13 +44,13 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"cloudinary": "^1.41.0",
|
||||
"into-stream": "^5.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/provider-upload-local",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Local provider for strapi upload",
|
||||
"keywords": [
|
||||
"upload",
|
||||
@ -45,16 +45,16 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"fs-extra": "11.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/jest": "29.5.2",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"memfs": "4.6.0",
|
||||
"tsconfig": "5.12.5"
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "api-tests",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"dotenv": "16.4.5",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "eslint-config-custom",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"main": "index.js"
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/logger",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Strapi's logger",
|
||||
"homepage": "https://strapi.io",
|
||||
"bugs": {
|
||||
@ -44,8 +44,8 @@
|
||||
"winston": "3.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"tsconfig": "5.12.5"
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"tsconfig": "5.12.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0 <=22.x.x",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tsconfig",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@tsconfig/node18": "18.2.2"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/typescript-utils",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "Typescript support for Strapi",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strapi/upgrade",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"description": "CLI to upgrade Strapi applications effortless",
|
||||
"keywords": [
|
||||
"strapi",
|
||||
@ -61,7 +61,7 @@
|
||||
"watch": "run -T rollup -c -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"@strapi/utils": "5.12.5",
|
||||
"@strapi/utils": "5.12.6",
|
||||
"chalk": "4.1.2",
|
||||
"cli-table3": "0.6.2",
|
||||
"commander": "8.3.0",
|
||||
@ -77,10 +77,10 @@
|
||||
"simple-git": "3.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@strapi/types": "5.12.5",
|
||||
"@strapi/types": "5.12.6",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/jscodeshift": "0.12.0",
|
||||
"eslint-config-custom": "5.12.5",
|
||||
"eslint-config-custom": "5.12.6",
|
||||
"rimraf": "5.0.5"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "scripts-front",
|
||||
"version": "5.12.5",
|
||||
"version": "5.12.6",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test:front": "jest --config jest.config.front.js"
|
||||
|
||||
@ -120,7 +120,7 @@ describe('Homepage API', () => {
|
||||
it('requires action param', async () => {
|
||||
const response = await rq({
|
||||
method: 'GET',
|
||||
url: '/admin/homepage/recent-documents',
|
||||
url: '/content-manager/homepage/recent-documents',
|
||||
});
|
||||
|
||||
expect(response.statusCode).toBe(400);
|
||||
@ -177,7 +177,7 @@ describe('Homepage API', () => {
|
||||
|
||||
const response = await rq({
|
||||
method: 'GET',
|
||||
url: '/admin/homepage/recent-documents?action=update',
|
||||
url: '/content-manager/homepage/recent-documents?action=update',
|
||||
});
|
||||
|
||||
// Assert the response
|
||||
@ -237,13 +237,13 @@ describe('Homepage API', () => {
|
||||
await strapi.documents(authorUid).update({
|
||||
documentId: author.documentId,
|
||||
data: {
|
||||
name: `John Lennon`,
|
||||
name: 'John Lennon',
|
||||
},
|
||||
});
|
||||
|
||||
const response = await rq({
|
||||
method: 'GET',
|
||||
url: '/admin/homepage/recent-documents?action=publish',
|
||||
url: '/content-manager/homepage/recent-documents?action=publish',
|
||||
});
|
||||
|
||||
expect(response.statusCode).toBe(200);
|
||||
@ -1,21 +1,81 @@
|
||||
'use strict';
|
||||
import { prop } from 'lodash/fp';
|
||||
import { createTestBuilder } from 'api-tests/builder';
|
||||
import { createStrapiInstance } from 'api-tests/strapi';
|
||||
import { createRequest, createAuthRequest } from 'api-tests/request';
|
||||
import { createUtils } from 'api-tests/utils';
|
||||
|
||||
const { prop } = require('lodash/fp');
|
||||
const { createTestBuilder } = require('api-tests/builder');
|
||||
const { createStrapiInstance } = require('api-tests/strapi');
|
||||
const { createRequest, createAuthRequest } = require('api-tests/request');
|
||||
const { createUtils } = require('api-tests/utils');
|
||||
interface Article {
|
||||
singularName: string;
|
||||
pluralName: string;
|
||||
displayName: string;
|
||||
attributes: {
|
||||
title: {
|
||||
type: string;
|
||||
};
|
||||
price: {
|
||||
type: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
interface Entry {
|
||||
name: string;
|
||||
price: number;
|
||||
documentId?: string;
|
||||
}
|
||||
|
||||
interface Role {
|
||||
id?: number;
|
||||
name: string;
|
||||
description: string;
|
||||
permissions?: Permission[];
|
||||
}
|
||||
|
||||
interface Permission {
|
||||
action: string;
|
||||
subject: string;
|
||||
fields: null;
|
||||
conditions: string[];
|
||||
}
|
||||
|
||||
interface User {
|
||||
id?: number;
|
||||
firstname?: string;
|
||||
lastName?: string;
|
||||
lastname?: string;
|
||||
firstName?: string;
|
||||
email: string;
|
||||
password?: string;
|
||||
roles?: number[];
|
||||
}
|
||||
|
||||
interface TestData {
|
||||
models: {
|
||||
article: Article;
|
||||
};
|
||||
entry: Entry;
|
||||
role: Role;
|
||||
permissions: Permission[];
|
||||
userPassword: string;
|
||||
users: User[];
|
||||
}
|
||||
|
||||
interface Requests {
|
||||
public: any;
|
||||
admin: any;
|
||||
[key: number]: any;
|
||||
}
|
||||
|
||||
describe('Admin Permissions - Conditions', () => {
|
||||
let strapi;
|
||||
let utils;
|
||||
let strapi: any;
|
||||
let utils: any;
|
||||
const builder = createTestBuilder();
|
||||
const requests = {
|
||||
const requests: Requests = {
|
||||
public: null,
|
||||
admin: null,
|
||||
};
|
||||
|
||||
const localTestData = {
|
||||
const localTestData: TestData = {
|
||||
models: {
|
||||
article: {
|
||||
singularName: 'article',
|
||||
@ -67,7 +127,7 @@ describe('Admin Permissions - Conditions', () => {
|
||||
],
|
||||
};
|
||||
|
||||
const createFixtures = async () => {
|
||||
const createFixtures = async (): Promise<void> => {
|
||||
// Login with admin and init admin tools
|
||||
requests.admin = await createAuthRequest({ strapi });
|
||||
requests.public = createRequest({ strapi });
|
||||
@ -84,7 +144,7 @@ describe('Admin Permissions - Conditions', () => {
|
||||
Object.assign(role, { permissions });
|
||||
|
||||
// Create users with the new roles & create associated auth requests
|
||||
const users = [];
|
||||
const users: User[] = [];
|
||||
|
||||
for (let i = 0; i < localTestData.users.length; i += 1) {
|
||||
const userFixture = localTestData.users[i];
|
||||
@ -105,10 +165,10 @@ describe('Admin Permissions - Conditions', () => {
|
||||
Object.assign(localTestData, { role, permissions, users });
|
||||
};
|
||||
|
||||
const getUserRequest = (idx) => requests[localTestData.users[idx].id];
|
||||
const getUserRequest = (idx: number) => requests[localTestData.users[idx].id];
|
||||
const getModelName = () => localTestData.models.article.singularName;
|
||||
|
||||
const deleteFixtures = async () => {
|
||||
const deleteFixtures = async (): Promise<void> => {
|
||||
// Delete users
|
||||
const usersId = localTestData.users.map(prop('id'));
|
||||
await utils.deleteUsersById(usersId);
|
||||
@ -174,7 +234,7 @@ describe('Admin Permissions - Conditions', () => {
|
||||
// The document should also be available in the homepage content manager widgets
|
||||
const homepageRecentlyUpdatedRes = await rq({
|
||||
method: 'GET',
|
||||
url: '/admin/homepage/recent-documents?action=update',
|
||||
url: '/content-manager/homepage/recent-documents?action=update',
|
||||
});
|
||||
|
||||
expect(homepageRecentlyUpdatedRes.statusCode).toBe(200);
|
||||
@ -198,7 +258,7 @@ describe('Admin Permissions - Conditions', () => {
|
||||
// The document should not be available in the homepage content manager widgets
|
||||
const homepageRecentlyUpdatedRes = await rq({
|
||||
method: 'GET',
|
||||
url: '/admin/homepage/recent-documents?action=update',
|
||||
url: '/content-manager/homepage/recent-documents?action=update',
|
||||
});
|
||||
|
||||
expect(homepageRecentlyUpdatedRes.statusCode).toBe(200);
|
||||
336
yarn.lock
336
yarn.lock
@ -8617,18 +8617,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/admin-test-utils@npm:5.12.5, @strapi/admin-test-utils@workspace:*, @strapi/admin-test-utils@workspace:packages/admin-test-utils":
|
||||
"@strapi/admin-test-utils@npm:5.12.6, @strapi/admin-test-utils@workspace:*, @strapi/admin-test-utils@workspace:packages/admin-test-utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/admin-test-utils@workspace:packages/admin-test-utils"
|
||||
dependencies:
|
||||
"@juggle/resize-observer": "npm:3.4.0"
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@testing-library/jest-dom": "npm:6.4.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
jest-environment-jsdom: "npm:29.6.1"
|
||||
jest-styled-components: "npm:7.1.1"
|
||||
styled-components: "npm:6.1.8"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
whatwg-fetch: "npm:3.6.2"
|
||||
peerDependencies:
|
||||
"@reduxjs/toolkit": ^1.9.7
|
||||
@ -8638,7 +8638,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/admin@npm:5.12.5, @strapi/admin@workspace:packages/core/admin":
|
||||
"@strapi/admin@npm:5.12.6, @strapi/admin@workspace:packages/core/admin":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/admin@workspace:packages/core/admin"
|
||||
dependencies:
|
||||
@ -8647,14 +8647,14 @@ __metadata:
|
||||
"@radix-ui/react-context": "npm:1.0.1"
|
||||
"@radix-ui/react-toolbar": "npm:1.0.4"
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@strapi/admin-test-utils": "npm:5.12.5"
|
||||
"@strapi/data-transfer": "npm:5.12.5"
|
||||
"@strapi/admin-test-utils": "npm:5.12.6"
|
||||
"@strapi/data-transfer": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/permissions": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/typescript-utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/permissions": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/typescript-utils": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/dom": "npm:10.1.0"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
@ -8739,11 +8739,11 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/cloud-cli@npm:5.12.5, @strapi/cloud-cli@workspace:packages/cli/cloud":
|
||||
"@strapi/cloud-cli@npm:5.12.6, @strapi/cloud-cli@workspace:packages/cli/cloud":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/cloud-cli@workspace:packages/cli/cloud"
|
||||
dependencies:
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/cli-progress": "npm:3.11.5"
|
||||
"@types/eventsource": "npm:1.1.15"
|
||||
"@types/lodash": "npm:^4.14.191"
|
||||
@ -8752,7 +8752,7 @@ __metadata:
|
||||
chalk: "npm:4.1.2"
|
||||
cli-progress: "npm:3.12.0"
|
||||
commander: "npm:8.3.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
eventsource: "npm:2.0.2"
|
||||
fast-safe-stringify: "npm:2.1.1"
|
||||
fs-extra: "npm:11.2.0"
|
||||
@ -8765,7 +8765,7 @@ __metadata:
|
||||
ora: "npm:5.4.1"
|
||||
pkg-up: "npm:3.1.0"
|
||||
tar: "npm:6.2.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
xdg-app-paths: "npm:8.3.0"
|
||||
yup: "npm:0.32.9"
|
||||
bin:
|
||||
@ -8773,19 +8773,19 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/content-manager@npm:5.12.5, @strapi/content-manager@workspace:packages/core/content-manager":
|
||||
"@strapi/content-manager@npm:5.12.6, @strapi/content-manager@workspace:packages/core/content-manager":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/content-manager@workspace:packages/core/content-manager"
|
||||
dependencies:
|
||||
"@radix-ui/react-toolbar": "npm:1.0.4"
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@sindresorhus/slugify": "npm:1.1.0"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
"@types/lodash": "npm:^4.14.191"
|
||||
@ -8837,19 +8837,19 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/content-releases@npm:5.12.5, @strapi/content-releases@workspace:packages/core/content-releases":
|
||||
"@strapi/content-releases@npm:5.12.6, @strapi/content-releases@workspace:packages/core/content-releases":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/content-releases@workspace:packages/core/content-releases"
|
||||
dependencies:
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin-test-utils": "npm:5.12.5"
|
||||
"@strapi/content-manager": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/admin-test-utils": "npm:5.12.6"
|
||||
"@strapi/content-manager": "npm:5.12.6"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/dom": "npm:10.1.0"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
@ -8881,7 +8881,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/content-type-builder@npm:5.12.5, @strapi/content-type-builder@workspace:packages/core/content-type-builder":
|
||||
"@strapi/content-type-builder@npm:5.12.6, @strapi/content-type-builder@workspace:packages/core/content-type-builder":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/content-type-builder@workspace:packages/core/content-type-builder"
|
||||
dependencies:
|
||||
@ -8891,12 +8891,12 @@ __metadata:
|
||||
"@dnd-kit/utilities": "npm:3.2.2"
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@sindresorhus/slugify": "npm:1.1.0"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/generators": "npm:5.12.5"
|
||||
"@strapi/generators": "npm:5.12.6"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/dom": "npm:10.1.0"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
@ -8928,22 +8928,22 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/core@npm:5.12.5, @strapi/core@workspace:packages/core/core":
|
||||
"@strapi/core@npm:5.12.6, @strapi/core@workspace:packages/core/core":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/core@workspace:packages/core/core"
|
||||
dependencies:
|
||||
"@koa/cors": "npm:5.0.0"
|
||||
"@koa/router": "npm:12.0.2"
|
||||
"@paralleldrive/cuid2": "npm:2.2.2"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/generators": "npm:5.12.5"
|
||||
"@strapi/logger": "npm:5.12.5"
|
||||
"@strapi/permissions": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/generators": "npm:5.12.6"
|
||||
"@strapi/logger": "npm:5.12.6"
|
||||
"@strapi/permissions": "npm:5.12.6"
|
||||
"@strapi/ts-zen": "npm:^0.2.0"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/typescript-utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/typescript-utils": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@swc/core": "npm:1.9.3"
|
||||
"@types/bcryptjs": "npm:2.4.3"
|
||||
"@types/configstore": "npm:5.0.1"
|
||||
@ -8973,7 +8973,7 @@ __metadata:
|
||||
debug: "npm:4.3.4"
|
||||
delegates: "npm:1.0.0"
|
||||
dotenv: "npm:16.4.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
execa: "npm:5.1.1"
|
||||
fs-extra: "npm:11.2.0"
|
||||
glob: "npm:10.3.10"
|
||||
@ -9002,21 +9002,21 @@ __metadata:
|
||||
semver: "npm:7.5.4"
|
||||
statuses: "npm:2.0.1"
|
||||
supertest: "npm:6.3.3"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
typescript: "npm:5.4.4"
|
||||
undici: "npm:6.21.2"
|
||||
yup: "npm:0.32.9"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/data-transfer@npm:5.12.5, @strapi/data-transfer@workspace:packages/core/data-transfer":
|
||||
"@strapi/data-transfer@npm:5.12.6, @strapi/data-transfer@workspace:packages/core/data-transfer":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/data-transfer@workspace:packages/core/data-transfer"
|
||||
dependencies:
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/logger": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/logger": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
"@types/koa": "npm:2.13.4"
|
||||
@ -9049,22 +9049,22 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/database@npm:5.12.5, @strapi/database@workspace:packages/core/database":
|
||||
"@strapi/database@npm:5.12.6, @strapi/database@workspace:packages/core/database":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/database@workspace:packages/core/database"
|
||||
dependencies:
|
||||
"@paralleldrive/cuid2": "npm:2.2.2"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
ajv: "npm:8.16.0"
|
||||
date-fns: "npm:2.30.0"
|
||||
debug: "npm:4.3.4"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
fs-extra: "npm:11.2.0"
|
||||
knex: "npm:3.0.1"
|
||||
lodash: "npm:4.17.21"
|
||||
semver: "npm:7.5.4"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
umzug: "npm:3.8.1"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@ -9107,16 +9107,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/email@npm:5.12.5, @strapi/email@workspace:packages/core/email":
|
||||
"@strapi/email@npm:5.12.6, @strapi/email@workspace:packages/core/email":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/email@workspace:packages/core/email"
|
||||
dependencies:
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/provider-email-sendmail": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/provider-email-sendmail": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@types/koa": "npm:2.13.4"
|
||||
"@types/lodash": "npm:^4.14.191"
|
||||
@ -9173,37 +9173,37 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/generators@npm:5.12.5, @strapi/generators@workspace:packages/generators/generators":
|
||||
"@strapi/generators@npm:5.12.6, @strapi/generators@workspace:packages/generators/generators":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/generators@workspace:packages/generators/generators"
|
||||
dependencies:
|
||||
"@sindresorhus/slugify": "npm:1.1.0"
|
||||
"@strapi/typescript-utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/typescript-utils": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
chalk: "npm:4.1.2"
|
||||
copyfiles: "npm:2.4.1"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
fs-extra: "npm:11.2.0"
|
||||
node-plop: "npm:0.26.3"
|
||||
plop: "npm:4.0.1"
|
||||
pluralize: "npm:8.0.0"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/i18n@npm:5.12.5, @strapi/i18n@workspace:packages/plugins/i18n":
|
||||
"@strapi/i18n@npm:5.12.6, @strapi/i18n@workspace:packages/plugins/i18n":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/i18n@workspace:packages/plugins/i18n"
|
||||
dependencies:
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin-test-utils": "npm:5.12.5"
|
||||
"@strapi/content-manager": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/admin-test-utils": "npm:5.12.6"
|
||||
"@strapi/content-manager": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
lodash: "npm:4.17.21"
|
||||
@ -9238,13 +9238,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/logger@npm:5.12.5, @strapi/logger@workspace:packages/utils/logger":
|
||||
"@strapi/logger@npm:5.12.6, @strapi/logger@workspace:packages/utils/logger":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/logger@workspace:packages/utils/logger"
|
||||
dependencies:
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
lodash: "npm:4.17.21"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
winston: "npm:3.10.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@ -9280,17 +9280,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/permissions@npm:5.12.5, @strapi/permissions@workspace:packages/core/permissions":
|
||||
"@strapi/permissions@npm:5.12.6, @strapi/permissions@workspace:packages/core/permissions":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/permissions@workspace:packages/core/permissions"
|
||||
dependencies:
|
||||
"@casl/ability": "npm:6.5.0"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
lodash: "npm:4.17.21"
|
||||
qs: "npm:6.11.1"
|
||||
sift: "npm:16.0.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9300,14 +9300,14 @@ __metadata:
|
||||
dependencies:
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
react: "npm:18.3.1"
|
||||
react-dom: "npm:18.3.1"
|
||||
react-intl: "npm:6.6.2"
|
||||
react-router-dom: "npm:6.22.3"
|
||||
styled-components: "npm:6.1.8"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
typescript: "npm:5.4.4"
|
||||
peerDependencies:
|
||||
"@strapi/strapi": ^5.0.0
|
||||
@ -9324,7 +9324,7 @@ __metadata:
|
||||
dependencies:
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
react: "npm:18.3.1"
|
||||
@ -9349,13 +9349,13 @@ __metadata:
|
||||
dependencies:
|
||||
"@apidevtools/swagger-parser": "npm:^10.1.0"
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin-test-utils": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/admin-test-utils": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
@ -9403,14 +9403,14 @@ __metadata:
|
||||
"@koa/cors": "npm:5.0.0"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/graphql-depth-limit": "npm:1.1.5"
|
||||
"@types/koa-bodyparser": "npm:4.3.12"
|
||||
"@types/koa__cors": "npm:5.0.0"
|
||||
cross-env: "npm:^7.0.3"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
graphql: "npm:^16.8.1"
|
||||
graphql-depth-limit: "npm:^1.1.0"
|
||||
graphql-playground-middleware-koa: "npm:^1.6.21"
|
||||
@ -9425,7 +9425,7 @@ __metadata:
|
||||
react-dom: "npm:18.3.1"
|
||||
react-router-dom: "npm:6.22.3"
|
||||
styled-components: "npm:6.1.8"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
typescript: "npm:5.4.4"
|
||||
peerDependencies:
|
||||
"@strapi/strapi": ^5.0.0
|
||||
@ -9443,7 +9443,7 @@ __metadata:
|
||||
"@sentry/node": "npm:7.112.2"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
react: "npm:18.3.1"
|
||||
react-dom: "npm:18.3.1"
|
||||
react-router-dom: "npm:6.22.3"
|
||||
@ -9463,8 +9463,8 @@ __metadata:
|
||||
dependencies:
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/strapi": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/strapi": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/dom": "npm:10.1.0"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
@ -9502,10 +9502,10 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/provider-email-amazon-ses@workspace:packages/providers/email-amazon-ses"
|
||||
dependencies:
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
node-ses: "npm:^3.0.3"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9513,11 +9513,11 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/provider-email-mailgun@workspace:packages/providers/email-mailgun"
|
||||
dependencies:
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
form-data: "npm:^4.0.0"
|
||||
mailgun.js: "npm:10.2.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9526,10 +9526,10 @@ __metadata:
|
||||
resolution: "@strapi/provider-email-nodemailer@workspace:packages/providers/email-nodemailer"
|
||||
dependencies:
|
||||
"@types/nodemailer": "npm:6.4.7"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
lodash: "npm:4.17.21"
|
||||
nodemailer: "npm:6.9.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9538,21 +9538,21 @@ __metadata:
|
||||
resolution: "@strapi/provider-email-sendgrid@workspace:packages/providers/email-sendgrid"
|
||||
dependencies:
|
||||
"@sendgrid/mail": "npm:8.1.3"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/provider-email-sendmail@npm:5.12.5, @strapi/provider-email-sendmail@workspace:packages/providers/email-sendmail":
|
||||
"@strapi/provider-email-sendmail@npm:5.12.6, @strapi/provider-email-sendmail@workspace:packages/providers/email-sendmail":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/provider-email-sendmail@workspace:packages/providers/email-sendmail"
|
||||
dependencies:
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/sendmail": "npm:1.4.4"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
sendmail: "npm:^1.6.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9565,9 +9565,9 @@ __metadata:
|
||||
"@aws-sdk/s3-request-presigner": "npm:3.433.0"
|
||||
"@aws-sdk/types": "npm:3.433.0"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
lodash: "npm:4.17.21"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -9575,40 +9575,40 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/provider-upload-cloudinary@workspace:packages/providers/upload-cloudinary"
|
||||
dependencies:
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
cloudinary: "npm:^1.41.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
into-stream: "npm:^5.1.0"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/provider-upload-local@npm:5.12.5, @strapi/provider-upload-local@workspace:packages/providers/upload-local":
|
||||
"@strapi/provider-upload-local@npm:5.12.6, @strapi/provider-upload-local@workspace:packages/providers/upload-local":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/provider-upload-local@workspace:packages/providers/upload-local"
|
||||
dependencies:
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
fs-extra: "npm:11.2.0"
|
||||
memfs: "npm:4.6.0"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/review-workflows@npm:5.12.5, @strapi/review-workflows@workspace:packages/core/review-workflows":
|
||||
"@strapi/review-workflows@npm:5.12.6, @strapi/review-workflows@workspace:packages/core/review-workflows":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/review-workflows@workspace:packages/core/review-workflows"
|
||||
dependencies:
|
||||
"@reduxjs/toolkit": "npm:1.9.7"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/content-manager": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/content-manager": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
fractional-indexing: "npm:3.2.0"
|
||||
msw: "npm:1.3.0"
|
||||
@ -9658,30 +9658,30 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/strapi@npm:5.12.5, @strapi/strapi@workspace:*, @strapi/strapi@workspace:packages/core/strapi":
|
||||
"@strapi/strapi@npm:5.12.6, @strapi/strapi@workspace:*, @strapi/strapi@workspace:packages/core/strapi":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/strapi@workspace:packages/core/strapi"
|
||||
dependencies:
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.15"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/cloud-cli": "npm:5.12.5"
|
||||
"@strapi/content-manager": "npm:5.12.5"
|
||||
"@strapi/content-releases": "npm:5.12.5"
|
||||
"@strapi/content-type-builder": "npm:5.12.5"
|
||||
"@strapi/core": "npm:5.12.5"
|
||||
"@strapi/data-transfer": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/email": "npm:5.12.5"
|
||||
"@strapi/generators": "npm:5.12.5"
|
||||
"@strapi/i18n": "npm:5.12.5"
|
||||
"@strapi/logger": "npm:5.12.5"
|
||||
"@strapi/permissions": "npm:5.12.5"
|
||||
"@strapi/review-workflows": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/cloud-cli": "npm:5.12.6"
|
||||
"@strapi/content-manager": "npm:5.12.6"
|
||||
"@strapi/content-releases": "npm:5.12.6"
|
||||
"@strapi/content-type-builder": "npm:5.12.6"
|
||||
"@strapi/core": "npm:5.12.6"
|
||||
"@strapi/data-transfer": "npm:5.12.6"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/email": "npm:5.12.6"
|
||||
"@strapi/generators": "npm:5.12.6"
|
||||
"@strapi/i18n": "npm:5.12.6"
|
||||
"@strapi/logger": "npm:5.12.6"
|
||||
"@strapi/permissions": "npm:5.12.6"
|
||||
"@strapi/review-workflows": "npm:5.12.6"
|
||||
"@strapi/ts-zen": "npm:^0.2.0"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/typescript-utils": "npm:5.12.5"
|
||||
"@strapi/upload": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/typescript-utils": "npm:5.12.6"
|
||||
"@strapi/upload": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
"@types/lodash": "npm:^4.14.191"
|
||||
@ -9705,7 +9705,7 @@ __metadata:
|
||||
dotenv: "npm:16.4.5"
|
||||
esbuild-loader: "npm:4.3.0"
|
||||
esbuild-register: "npm:3.5.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
execa: "npm:5.1.1"
|
||||
fork-ts-checker-webpack-plugin: "npm:8.0.0"
|
||||
fs-extra: "npm:11.2.0"
|
||||
@ -9728,7 +9728,7 @@ __metadata:
|
||||
resolve-from: "npm:5.0.0"
|
||||
semver: "npm:7.5.4"
|
||||
style-loader: "npm:3.3.4"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
typescript: "npm:5.4.4"
|
||||
vite: "npm:5.4.17"
|
||||
webpack: "npm:^5.90.3"
|
||||
@ -9757,29 +9757,29 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strapi/types@npm:5.12.5, @strapi/types@workspace:packages/core/types":
|
||||
"@strapi/types@npm:5.12.6, @strapi/types@workspace:packages/core/types":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/types@workspace:packages/core/types"
|
||||
dependencies:
|
||||
"@casl/ability": "npm:6.5.0"
|
||||
"@koa/cors": "npm:5.0.0"
|
||||
"@koa/router": "npm:12.0.2"
|
||||
"@strapi/database": "npm:5.12.5"
|
||||
"@strapi/logger": "npm:5.12.5"
|
||||
"@strapi/permissions": "npm:5.12.5"
|
||||
"@strapi/database": "npm:5.12.6"
|
||||
"@strapi/logger": "npm:5.12.6"
|
||||
"@strapi/permissions": "npm:5.12.6"
|
||||
"@strapi/ts-zen": "npm:^0.2.0"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/jest": "npm:29.5.2"
|
||||
"@types/koa": "npm:2.13.4"
|
||||
"@types/koa__router": "npm:12.0.0"
|
||||
"@types/node-schedule": "npm:2.1.7"
|
||||
commander: "npm:8.3.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
koa: "npm:2.15.4"
|
||||
koa-body: "npm:6.0.1"
|
||||
lodash: "npm:4.17.21"
|
||||
node-schedule: "npm:2.1.1"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
typedoc: "npm:0.25.10"
|
||||
typedoc-github-wiki-theme: "npm:1.1.0"
|
||||
typedoc-plugin-markdown: "npm:3.17.1"
|
||||
@ -9788,7 +9788,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/typescript-utils@npm:5.12.5, @strapi/typescript-utils@workspace:packages/utils/typescript":
|
||||
"@strapi/typescript-utils@npm:5.12.6, @strapi/typescript-utils@workspace:packages/utils/typescript":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/typescript-utils@workspace:packages/utils/typescript"
|
||||
dependencies:
|
||||
@ -9837,15 +9837,15 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/upgrade@workspace:packages/utils/upgrade"
|
||||
dependencies:
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jscodeshift": "npm:0.12.0"
|
||||
chalk: "npm:4.1.2"
|
||||
cli-table3: "npm:0.6.2"
|
||||
commander: "npm:8.3.0"
|
||||
esbuild-register: "npm:3.5.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
fast-glob: "npm:3.3.2"
|
||||
fs-extra: "npm:11.2.0"
|
||||
jscodeshift: "npm:17.1.2"
|
||||
@ -9861,17 +9861,17 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/upload@npm:5.12.5, @strapi/upload@workspace:packages/core/upload":
|
||||
"@strapi/upload@npm:5.12.6, @strapi/upload@workspace:packages/core/upload":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/upload@workspace:packages/core/upload"
|
||||
dependencies:
|
||||
"@mux/mux-player-react": "npm:3.1.0"
|
||||
"@strapi/admin": "npm:5.12.5"
|
||||
"@strapi/admin": "npm:5.12.6"
|
||||
"@strapi/design-system": "npm:2.0.0-rc.23"
|
||||
"@strapi/icons": "npm:2.0.0-rc.23"
|
||||
"@strapi/provider-upload-local": "npm:5.12.5"
|
||||
"@strapi/types": "npm:5.12.5"
|
||||
"@strapi/utils": "npm:5.12.5"
|
||||
"@strapi/provider-upload-local": "npm:5.12.6"
|
||||
"@strapi/types": "npm:5.12.6"
|
||||
"@strapi/utils": "npm:5.12.6"
|
||||
"@testing-library/dom": "npm:10.1.0"
|
||||
"@testing-library/react": "npm:15.0.7"
|
||||
"@testing-library/user-event": "npm:14.5.2"
|
||||
@ -9916,7 +9916,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@strapi/utils@npm:5.12.5, @strapi/utils@workspace:packages/core/utils":
|
||||
"@strapi/utils@npm:5.12.6, @strapi/utils@workspace:packages/core/utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/utils@workspace:packages/core/utils"
|
||||
dependencies:
|
||||
@ -9925,7 +9925,7 @@ __metadata:
|
||||
"@types/koa": "npm:2.13.4"
|
||||
"@types/node": "npm:18.19.24"
|
||||
date-fns: "npm:2.30.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
execa: "npm:5.1.1"
|
||||
http-errors: "npm:2.0.0"
|
||||
koa: "npm:2.15.4"
|
||||
@ -9934,7 +9934,7 @@ __metadata:
|
||||
node-machine-id: "npm:1.1.12"
|
||||
p-map: "npm:4.0.0"
|
||||
preferred-pm: "npm:3.1.2"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
yup: "npm:0.32.9"
|
||||
zod: "npm:3.24.2"
|
||||
languageName: unknown
|
||||
@ -15213,18 +15213,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"create-strapi-app@npm:5.12.5, create-strapi-app@workspace:*, create-strapi-app@workspace:packages/cli/create-strapi-app":
|
||||
"create-strapi-app@npm:5.12.6, create-strapi-app@workspace:*, create-strapi-app@workspace:packages/cli/create-strapi-app":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "create-strapi-app@workspace:packages/cli/create-strapi-app"
|
||||
dependencies:
|
||||
"@strapi/cloud-cli": "npm:5.12.5"
|
||||
"@strapi/cloud-cli": "npm:5.12.6"
|
||||
"@types/async-retry": "npm:^1"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/inquirer": "npm:8.2.5"
|
||||
async-retry: "npm:1.3.3"
|
||||
chalk: "npm:4.1.2"
|
||||
commander: "npm:8.3.0"
|
||||
eslint-config-custom: "npm:5.12.5"
|
||||
eslint-config-custom: "npm:5.12.6"
|
||||
execa: "npm:5.1.1"
|
||||
fs-extra: "npm:11.2.0"
|
||||
inquirer: "npm:8.2.5"
|
||||
@ -15235,7 +15235,7 @@ __metadata:
|
||||
semver: "npm:7.5.4"
|
||||
sort-package-json: "npm:2.10.0"
|
||||
tar: "npm:7.4.3"
|
||||
tsconfig: "npm:5.12.5"
|
||||
tsconfig: "npm:5.12.6"
|
||||
bin:
|
||||
create-strapi-app: ./bin/index.js
|
||||
languageName: unknown
|
||||
@ -15245,7 +15245,7 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "create-strapi@workspace:packages/cli/create-strapi"
|
||||
dependencies:
|
||||
create-strapi-app: "npm:5.12.5"
|
||||
create-strapi-app: "npm:5.12.6"
|
||||
bin:
|
||||
create-strapi: ./bin/index.js
|
||||
languageName: unknown
|
||||
@ -17078,7 +17078,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint-config-custom@npm:5.12.5, eslint-config-custom@workspace:packages/utils/eslint-config-custom":
|
||||
"eslint-config-custom@npm:5.12.6, eslint-config-custom@workspace:packages/utils/eslint-config-custom":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "eslint-config-custom@workspace:packages/utils/eslint-config-custom"
|
||||
languageName: unknown
|
||||
@ -30349,7 +30349,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tsconfig@npm:5.12.5, tsconfig@workspace:packages/utils/tsconfig":
|
||||
"tsconfig@npm:5.12.6, tsconfig@workspace:packages/utils/tsconfig":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "tsconfig@workspace:packages/utils/tsconfig"
|
||||
dependencies:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user