chore: apply feedbacks

This commit is contained in:
Alexandre Bodin 2024-03-28 15:20:11 +01:00
parent 55ae34e5dc
commit 26a9719787
17 changed files with 79 additions and 79 deletions

View File

@ -15,11 +15,11 @@ export default async (ctx: Context, next: Next) => {
return ctx.send({ error: 'contentType.notFound' }, 404);
}
let target;
let controllers;
if (!ct.plugin || ct.plugin === 'admin') {
target = strapi.admin!;
controllers = strapi.admin.controllers;
} else {
target = strapi.plugin(ct.plugin);
controllers = strapi.plugin(ct.plugin).controllers;
}
const { route }: { route: Core.Route } = ctx.state;
@ -41,7 +41,7 @@ export default async (ctx: Context, next: Next) => {
const [controller, action] = actionConfig.split('.');
if (controller && action) {
return target.controllers[controller.toLowerCase()][action](ctx, next);
return controllers[controller.toLowerCase()][action](ctx, next);
}
}

View File

@ -15,8 +15,13 @@ const mockGraphQlShadowCrud = jest.fn(() => ({
}));
describe('register', () => {
const strapi = {
service() {
return this.admin.services.permission;
service(name: string) {
switch (name) {
case 'admin::permission':
return this.admin.services.permission;
default:
throw new Error(`Service ${name} not found`);
}
},
ee: {
features: {

View File

@ -57,8 +57,6 @@ class Strapi extends Container implements Core.Strapi {
}
get EE(): boolean {
// @ts-expect-error: init is private
this.ee.init(this.dirs.app.root, this.log);
return utils.ee.isEE;
}
@ -391,6 +389,9 @@ class Strapi extends Container implements Core.Strapi {
}
async register() {
// @ts-expect-error: init is internal
this.ee.init(this.dirs.app.root, this.log);
for (const provider of providers) {
await provider.register?.(this);
}

View File

@ -1,23 +1,22 @@
import type { Core } from '@strapi/types';
import { defineProvider } from './provider';
import loadAdmin from '../loaders/admin';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi.add('admin', () => require('@strapi/admin/strapi-server'));
},
async register(strapi: Core.Strapi) {
async register(strapi) {
await loadAdmin(strapi);
await strapi.get('admin')?.register({ strapi });
},
async bootstrap(strapi: Core.Strapi) {
async bootstrap(strapi) {
await strapi.get('admin')?.bootstrap({ strapi });
},
async destroy(strapi: Core.Strapi) {
async destroy(strapi) {
await strapi.get('admin')?.destroy({ strapi });
},
};
});

View File

@ -1,10 +1,9 @@
import type { Core } from '@strapi/types';
import { defineProvider } from './provider';
import { createCoreStore, coreStoreModel } from '../services/core-store';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi.get('models').add(coreStoreModel);
strapi.add('coreStore', () => createCoreStore({ db: strapi.db }));
},
};
});

View File

@ -1,12 +1,11 @@
import type { Core } from '@strapi/types';
import { defineProvider } from './provider';
import createCronService from '../services/cron';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi.add('cron', () => createCronService());
},
async bootstrap(strapi: Core.Strapi) {
async bootstrap(strapi) {
if (strapi.config.get('server.cron.enabled', true)) {
const cronTasks = strapi.config.get('server.cron.tasks', {});
strapi.get('cron').add(cronTasks);
@ -14,7 +13,7 @@ export default {
strapi.get('cron').start();
},
async destroy(strapi: Core.Strapi) {
async destroy(strapi) {
strapi.get('cron').destroy();
},
};
});

View File

@ -5,11 +5,6 @@ import registries from './registries';
import telemetry from './telemetry';
import webhooks from './webhooks';
type Provider = {
init?: (strapi: any) => void;
register?: (strapi: any) => Promise<void>;
bootstrap?: (strapi: any) => Promise<void>;
destroy?: (strapi: any) => Promise<void>;
};
import type { Provider } from './provider';
export const providers: Provider[] = [registries, admin, coreStore, webhooks, telemetry, cron];

View File

@ -0,0 +1,10 @@
import type { Core } from '@strapi/types';
export type Provider = {
init?: (strapi: Core.Strapi) => void;
register?: (strapi: Core.Strapi) => Promise<void>;
bootstrap?: (strapi: Core.Strapi) => Promise<void>;
destroy?: (strapi: Core.Strapi) => Promise<void>;
};
export const defineProvider = (provider: Provider) => provider;

View File

@ -1,12 +1,12 @@
import type { Core } from '@strapi/types';
import { hooks } from '@strapi/utils';
import { defineProvider } from './provider';
import * as registries from '../registries';
import { loadApplicationContext } from '../loaders';
import * as draftAndPublishSync from '../migrations/draft-publish';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi
.add('content-types', () => registries.contentTypes())
.add('components', () => registries.components())
@ -23,7 +23,7 @@ export default {
.add('sanitizers', registries.sanitizers())
.add('validators', registries.validators());
},
async register(strapi: Core.Strapi) {
async register(strapi) {
await loadApplicationContext(strapi);
strapi.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());
@ -32,7 +32,4 @@ export default {
strapi.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);
strapi.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);
},
// async bootstrap(strapi: Core.Strapi) {
// },
// async destroy(strapi: Core.Strapi) {},
};
});

View File

@ -1,18 +1,17 @@
import type { Core } from '@strapi/types';
import { defineProvider } from './provider';
import createTelemetry from '../services/metrics';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi.add('telemetry', () => createTelemetry(strapi));
},
async register(strapi: Core.Strapi) {
async register(strapi) {
strapi.get('telemetry').register();
},
async bootstrap(strapi: Core.Strapi) {
async bootstrap(strapi) {
strapi.get('telemetry').bootstrap();
},
async destroy(strapi: Core.Strapi) {
async destroy(strapi) {
strapi.get('telemetry').destroy();
},
};
});

View File

@ -1,10 +1,9 @@
import type { Core } from '@strapi/types';
import { defineProvider } from './provider';
import { createWebhookStore, webhookModel } from '../services/webhook-store';
import createWebhookRunner from '../services/webhook-runner';
export default {
init(strapi: Core.Strapi) {
export default defineProvider({
init(strapi) {
strapi.get('models').add(webhookModel);
strapi.add('webhookStore', () => createWebhookStore({ db: strapi.db }));
@ -17,7 +16,7 @@ export default {
})
);
},
async bootstrap(strapi: Core.Strapi) {
async bootstrap(strapi) {
const webhooks = await strapi.get('webhookStore').findWebhooks();
if (!webhooks) {
return;
@ -27,4 +26,4 @@ export default {
strapi.get('webhookRunner').add(webhook);
}
},
};
});

View File

@ -9,7 +9,7 @@ type Config = Record<string, unknown>;
export const createConfigProvider = (
initialConfig: Record<string, unknown> = {},
strapi?: Core.Strapi | Core.Strapi
strapi?: Core.Strapi
): Core.ConfigProvider => {
const state: State = {
config: { ...initialConfig }, // not deep clone because it would break some config

View File

@ -31,7 +31,7 @@ export default (strapi: Core.Strapi) => {
const registerAdminRoutes = (strapi: Core.Strapi) => {
const generateRouteScope = createRouteScopeGenerator(`admin::`);
_.forEach(strapi.admin!.routes, (router) => {
_.forEach(strapi.admin.routes, (router) => {
router.type = router.type || 'admin';
router.prefix = router.prefix || `/admin`;
router.routes.forEach((route) => {

View File

@ -43,6 +43,7 @@ export const createUpdateNotifier = (strapi: Core.Strapi) => {
} catch {
// we don't have write access to the file system
// we silence the error
return;
}
const checkUpdate = async (checkInterval: number) => {
@ -83,21 +84,17 @@ export const createUpdateNotifier = (strapi: Core.Strapi) => {
console.log(message);
};
function notify({ checkInterval = CHECK_INTERVAL, notifInterval = NOTIF_INTERVAL } = {}) {
// TODO v6: Remove this warning
if (env.bool('STRAPI_DISABLE_UPDATE_NOTIFICATION', false)) {
strapi.log.warn(
'STRAPI_DISABLE_UPDATE_NOTIFICATION is no longer supported. Instead, set logger.updates.enabled to false in your server configuration.'
);
}
if (!strapi.config.get('server.logger.updates.enabled') || !config) {
return;
}
display(notifInterval);
checkUpdate(checkInterval); // doesn't need to await
// TODO v6: Remove this warning
if (env.bool('STRAPI_DISABLE_UPDATE_NOTIFICATION', false)) {
strapi.log.warn(
'STRAPI_DISABLE_UPDATE_NOTIFICATION is no longer supported. Instead, set logger.updates.enabled to false in your server configuration.'
);
}
notify();
if (!strapi.config.get('server.logger.updates.enabled') || !config) {
return;
}
display(NOTIF_INTERVAL);
checkUpdate(CHECK_INTERVAL); // doesn't need to await
};

View File

@ -1,4 +1,4 @@
import type { LoadedStrapi, Schema } from '@strapi/types';
import type { Core, Schema } from '@strapi/types';
import { resolveComponentUID } from '../components';
const baseContentType: Schema.ContentType = {
@ -43,7 +43,7 @@ describe('resolveComponentUID', () => {
},
uid,
}),
} as unknown as LoadedStrapi;
} as unknown as Core.Strapi;
const paths = ['relsRepeatable', '0', 'id'];
const data = {
@ -74,7 +74,7 @@ describe('resolveComponentUID', () => {
},
uid,
}),
} as unknown as LoadedStrapi;
} as unknown as Core.Strapi;
const paths = ['rels', 'id'];
const data = {
@ -104,7 +104,7 @@ describe('resolveComponentUID', () => {
},
uid,
}),
} as unknown as LoadedStrapi;
} as unknown as Core.Strapi;
const paths = ['dz', '0', 'id'];
const data = {

View File

@ -488,7 +488,7 @@ const resolveComponentUID = ({
contentType,
}: {
paths: string[];
strapi: Core.LoadedStrapi;
strapi: Core.Strapi;
data: any;
contentType: Schema.ContentType;
}): UID.Schema | undefined => {

View File

@ -55,7 +55,7 @@ export const createTestSetup = async (
bootstrapBuilder(resources, builder);
await builder.build();
const strapi = (await createStrapiInstance()) as Core.Strapi;
const strapi = await createStrapiInstance();
const rqAdmin = await createAuthRequest({ strapi });
const data = await builder.sanitizedFixtures(strapi);