directus

Форк
0
/
get-shared-deps-mapping.ts 
34 строки · 1.2 Кб
1
import { useEnv } from '@directus/env';
2
import { resolvePackage } from '@directus/utils/node';
3
import { escapeRegExp } from 'lodash-es';
4
import { readdir } from 'node:fs/promises';
5
import { dirname } from 'node:path';
6
import { fileURLToPath } from 'node:url';
7
import path from 'path';
8
import { useLogger } from '../../logger.js';
9
import { Url } from '../../utils/url.js';
10

11
const __dirname = dirname(fileURLToPath(import.meta.url));
12

13
export const getSharedDepsMapping = async (deps: string[]): Promise<Record<string, string>> => {
14
	const env = useEnv();
15
	const logger = useLogger();
16

17
	const appDir = await readdir(path.join(resolvePackage('@directus/app', __dirname), 'dist', 'assets'));
18
	const depsMapping: Record<string, string> = {};
19

20
	for (const dep of deps) {
21
		const depRegex = new RegExp(`${escapeRegExp(dep.replace(/\//g, '_'))}\\.[a-zA-Z0-9_-]{8}\\.entry\\.js`);
22
		const depName = appDir.find((file) => depRegex.test(file));
23

24
		if (depName) {
25
			const depUrl = new Url(env['PUBLIC_URL'] as string).addPath('admin', 'assets', depName);
26

27
			depsMapping[dep] = depUrl.toString({ rootRelative: true });
28
		} else {
29
			logger.warn(`Couldn't find shared extension dependency "${dep}"`);
30
		}
31
	}
32

33
	return depsMapping;
34
};
35

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.