@directus/extensions-sdk 9.24.0 → 9.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +1 -1
- package/dist/{cjs/cli → cli}/commands/add.d.ts +0 -1
- package/dist/{esm/cli → cli}/commands/add.js +16 -18
- package/dist/{esm/cli → cli}/commands/build.d.ts +0 -1
- package/dist/{esm/cli → cli}/commands/build.js +23 -29
- package/dist/{cjs/cli → cli}/commands/create.d.ts +0 -1
- package/dist/{esm/cli → cli}/commands/create.js +12 -13
- package/dist/{cjs/cli → cli}/commands/helpers/copy-template.d.ts +2 -3
- package/dist/{esm/cli → cli}/commands/helpers/copy-template.js +2 -2
- package/dist/cli/commands/helpers/generate-bundle-entrypoint.d.ts +2 -0
- package/dist/{esm/cli → cli}/commands/helpers/generate-bundle-entrypoint.js +3 -3
- package/dist/{cjs/cli → cli}/commands/helpers/get-extension-dev-deps.d.ts +2 -3
- package/dist/{esm/cli → cli}/commands/helpers/get-extension-dev-deps.js +4 -4
- package/dist/cli/commands/helpers/load-config.d.ts +2 -0
- package/dist/{esm/cli → cli}/commands/helpers/load-config.js +2 -2
- package/dist/cli/commands/helpers/validate-cli-options.d.ts +2 -0
- package/dist/{esm/cli → cli}/commands/helpers/validate-cli-options.js +1 -1
- package/dist/{cjs/cli → cli}/commands/link.d.ts +0 -1
- package/dist/{esm/cli → cli}/commands/link.js +4 -5
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +3 -0
- package/dist/{esm/cli → cli}/run.js +4 -4
- package/dist/{esm/cli → cli}/types.d.ts +2 -3
- package/dist/cli/types.js +1 -0
- package/dist/{cjs/cli → cli}/utils/detect-json-indent.d.ts +0 -1
- package/dist/{esm/cli → cli}/utils/detect-json-indent.js +1 -2
- package/dist/{cjs/cli → cli}/utils/get-package-manager-agent.d.ts +0 -1
- package/dist/{esm/cli → cli}/utils/get-package-manager-agent.js +1 -1
- package/dist/cli/utils/get-package-manager-agent.test.d.ts +1 -0
- package/dist/{esm/cli → cli}/utils/get-package-manager-agent.test.js +3 -3
- package/dist/{cjs/cli → cli}/utils/get-package-manager.d.ts +0 -1
- package/dist/{esm/cli → cli}/utils/get-package-manager.js +3 -3
- package/dist/cli/utils/get-package-manager.test.d.ts +1 -0
- package/dist/{esm/cli → cli}/utils/get-package-manager.test.js +3 -3
- package/dist/{cjs/cli → cli}/utils/get-package-version.d.ts +0 -1
- package/dist/{cjs/cli → cli}/utils/get-sdk-version.d.ts +0 -1
- package/dist/cli/utils/get-sdk-version.js +8 -0
- package/dist/{cjs/cli → cli}/utils/get-template-path.d.ts +0 -1
- package/dist/{cjs/cli → cli}/utils/languages.d.ts +1 -2
- package/dist/{esm/cli → cli}/utils/languages.js +1 -1
- package/dist/{cjs/cli → cli}/utils/logger.d.ts +0 -1
- package/dist/cli/utils/try-parse-json.d.ts +2 -0
- package/dist/{cjs/index.d.ts → index.d.ts} +2 -3
- package/dist/{esm/index.js → index.js} +2 -2
- package/package.json +14 -25
- package/dist/cjs/cli/commands/add.js +0 -243
- package/dist/cjs/cli/commands/build.d.ts +0 -11
- package/dist/cjs/cli/commands/build.js +0 -446
- package/dist/cjs/cli/commands/create.js +0 -125
- package/dist/cjs/cli/commands/helpers/copy-template.js +0 -53
- package/dist/cjs/cli/commands/helpers/generate-bundle-entrypoint.d.ts +0 -3
- package/dist/cjs/cli/commands/helpers/generate-bundle-entrypoint.js +0 -24
- package/dist/cjs/cli/commands/helpers/get-extension-dev-deps.js +0 -27
- package/dist/cjs/cli/commands/helpers/load-config.d.ts +0 -3
- package/dist/cjs/cli/commands/helpers/load-config.js +0 -21
- package/dist/cjs/cli/commands/helpers/validate-cli-options.d.ts +0 -3
- package/dist/cjs/cli/commands/helpers/validate-cli-options.js +0 -23
- package/dist/cjs/cli/commands/link.js +0 -54
- package/dist/cjs/cli/index.d.ts +0 -4
- package/dist/cjs/cli/index.js +0 -10
- package/dist/cjs/cli/run.d.ts +0 -2
- package/dist/cjs/cli/run.js +0 -39
- package/dist/cjs/cli/types.d.ts +0 -13
- package/dist/cjs/cli/types.js +0 -2
- package/dist/cjs/cli/utils/detect-json-indent.js +0 -14
- package/dist/cjs/cli/utils/get-package-manager-agent.js +0 -15
- package/dist/cjs/cli/utils/get-package-manager-agent.test.d.ts +0 -2
- package/dist/cjs/cli/utils/get-package-manager-agent.test.js +0 -24
- package/dist/cjs/cli/utils/get-package-manager.js +0 -20
- package/dist/cjs/cli/utils/get-package-manager.test.d.ts +0 -2
- package/dist/cjs/cli/utils/get-package-manager.test.js +0 -42
- package/dist/cjs/cli/utils/get-package-version.js +0 -12
- package/dist/cjs/cli/utils/get-sdk-version.js +0 -7
- package/dist/cjs/cli/utils/get-template-path.js +0 -10
- package/dist/cjs/cli/utils/languages.js +0 -30
- package/dist/cjs/cli/utils/logger.js +0 -32
- package/dist/cjs/cli/utils/try-parse-json.d.ts +0 -3
- package/dist/cjs/cli/utils/try-parse-json.js +0 -11
- package/dist/cjs/index.js +0 -24
- package/dist/esm/cli/commands/add.d.ts +0 -2
- package/dist/esm/cli/commands/create.d.ts +0 -6
- package/dist/esm/cli/commands/helpers/copy-template.d.ts +0 -4
- package/dist/esm/cli/commands/helpers/generate-bundle-entrypoint.d.ts +0 -3
- package/dist/esm/cli/commands/helpers/get-extension-dev-deps.d.ts +0 -4
- package/dist/esm/cli/commands/helpers/load-config.d.ts +0 -3
- package/dist/esm/cli/commands/helpers/validate-cli-options.d.ts +0 -3
- package/dist/esm/cli/commands/link.d.ts +0 -2
- package/dist/esm/cli/index.d.ts +0 -4
- package/dist/esm/cli/index.js +0 -3
- package/dist/esm/cli/run.d.ts +0 -2
- package/dist/esm/cli/utils/detect-json-indent.d.ts +0 -2
- package/dist/esm/cli/utils/get-package-manager-agent.d.ts +0 -5
- package/dist/esm/cli/utils/get-package-manager-agent.test.d.ts +0 -2
- package/dist/esm/cli/utils/get-package-manager.d.ts +0 -5
- package/dist/esm/cli/utils/get-package-manager.test.d.ts +0 -2
- package/dist/esm/cli/utils/get-package-version.d.ts +0 -2
- package/dist/esm/cli/utils/get-sdk-version.d.ts +0 -2
- package/dist/esm/cli/utils/get-sdk-version.js +0 -4
- package/dist/esm/cli/utils/get-template-path.d.ts +0 -2
- package/dist/esm/cli/utils/languages.d.ts +0 -5
- package/dist/esm/cli/utils/logger.d.ts +0 -3
- package/dist/esm/cli/utils/try-parse-json.d.ts +0 -3
- package/dist/esm/index.d.ts +0 -3
- package/license +0 -674
- package/readme.md +0 -3
- /package/dist/{esm/cli/types.js → cli/run.d.ts} +0 -0
- /package/dist/{esm/cli → cli}/utils/get-package-version.js +0 -0
- /package/dist/{esm/cli → cli}/utils/get-template-path.js +0 -0
- /package/dist/{esm/cli → cli}/utils/logger.js +0 -0
- /package/dist/{esm/cli → cli}/utils/try-parse-json.js +0 -0
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const constants_1 = require("@directus/shared/constants");
|
|
7
|
-
const types_1 = require("@directus/shared/types");
|
|
8
|
-
const utils_1 = require("@directus/shared/utils");
|
|
9
|
-
const plugin_commonjs_1 = __importDefault(require("@rollup/plugin-commonjs"));
|
|
10
|
-
const plugin_json_1 = __importDefault(require("@rollup/plugin-json"));
|
|
11
|
-
const plugin_node_resolve_1 = require("@rollup/plugin-node-resolve");
|
|
12
|
-
const plugin_replace_1 = __importDefault(require("@rollup/plugin-replace"));
|
|
13
|
-
const plugin_terser_1 = __importDefault(require("@rollup/plugin-terser"));
|
|
14
|
-
const plugin_virtual_1 = __importDefault(require("@rollup/plugin-virtual"));
|
|
15
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
17
|
-
const ora_1 = __importDefault(require("ora"));
|
|
18
|
-
const path_1 = __importDefault(require("path"));
|
|
19
|
-
const rollup_1 = require("rollup");
|
|
20
|
-
const rollup_plugin_esbuild_1 = __importDefault(require("rollup-plugin-esbuild"));
|
|
21
|
-
const rollup_plugin_styles_1 = __importDefault(require("rollup-plugin-styles"));
|
|
22
|
-
const rollup_plugin_vue_1 = __importDefault(require("rollup-plugin-vue"));
|
|
23
|
-
const languages_1 = require("../utils/languages");
|
|
24
|
-
const logger_1 = require("../utils/logger");
|
|
25
|
-
const try_parse_json_1 = __importDefault(require("../utils/try-parse-json"));
|
|
26
|
-
const generate_bundle_entrypoint_1 = __importDefault(require("./helpers/generate-bundle-entrypoint"));
|
|
27
|
-
const load_config_1 = __importDefault(require("./helpers/load-config"));
|
|
28
|
-
const validate_cli_options_1 = require("./helpers/validate-cli-options");
|
|
29
|
-
async function build(options) {
|
|
30
|
-
var _a, _b, _c;
|
|
31
|
-
const watch = (_a = options.watch) !== null && _a !== void 0 ? _a : false;
|
|
32
|
-
const sourcemap = (_b = options.sourcemap) !== null && _b !== void 0 ? _b : false;
|
|
33
|
-
const minify = (_c = options.minify) !== null && _c !== void 0 ? _c : false;
|
|
34
|
-
if (!options.type && !options.input && !options.output) {
|
|
35
|
-
const packagePath = path_1.default.resolve('package.json');
|
|
36
|
-
if (!(await fs_extra_1.default.pathExists(packagePath))) {
|
|
37
|
-
(0, logger_1.log)(`Current directory is not a valid package.`, 'error');
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
40
|
-
let extensionManifest;
|
|
41
|
-
try {
|
|
42
|
-
extensionManifest = types_1.ExtensionManifest.parse(await fs_extra_1.default.readJSON(packagePath));
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
(0, logger_1.log)(`Current directory is not a valid Directus extension.`, 'error');
|
|
46
|
-
process.exit(1);
|
|
47
|
-
}
|
|
48
|
-
const extensionOptions = extensionManifest[constants_1.EXTENSION_PKG_KEY];
|
|
49
|
-
if (extensionOptions.type === 'bundle') {
|
|
50
|
-
await buildBundleExtension({
|
|
51
|
-
entries: extensionOptions.entries,
|
|
52
|
-
outputApp: extensionOptions.path.app,
|
|
53
|
-
outputApi: extensionOptions.path.api,
|
|
54
|
-
watch,
|
|
55
|
-
sourcemap,
|
|
56
|
-
minify,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
else if ((0, utils_1.isTypeIn)(extensionOptions, constants_1.HYBRID_EXTENSION_TYPES)) {
|
|
60
|
-
await buildHybridExtension({
|
|
61
|
-
inputApp: extensionOptions.source.app,
|
|
62
|
-
inputApi: extensionOptions.source.api,
|
|
63
|
-
outputApp: extensionOptions.path.app,
|
|
64
|
-
outputApi: extensionOptions.path.api,
|
|
65
|
-
watch,
|
|
66
|
-
sourcemap,
|
|
67
|
-
minify,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
await buildAppOrApiExtension({
|
|
72
|
-
type: extensionOptions.type,
|
|
73
|
-
input: extensionOptions.source,
|
|
74
|
-
output: extensionOptions.path,
|
|
75
|
-
watch,
|
|
76
|
-
sourcemap,
|
|
77
|
-
minify,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
const type = options.type;
|
|
83
|
-
const input = options.input;
|
|
84
|
-
const output = options.output;
|
|
85
|
-
if (!type) {
|
|
86
|
-
(0, logger_1.log)(`Extension type has to be specified using the ${chalk_1.default.blue('[-t, --type <type>]')} option.`, 'error');
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
if (!(0, utils_1.isIn)(type, constants_1.EXTENSION_TYPES)) {
|
|
90
|
-
(0, logger_1.log)(`Extension type ${chalk_1.default.bold(type)} is not supported. Available extension types: ${constants_1.EXTENSION_TYPES.map((t) => chalk_1.default.bold.magenta(t)).join(', ')}.`, 'error');
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
if (!input) {
|
|
94
|
-
(0, logger_1.log)(`Extension entrypoint has to be specified using the ${chalk_1.default.blue('[-i, --input <file>]')} option.`, 'error');
|
|
95
|
-
process.exit(1);
|
|
96
|
-
}
|
|
97
|
-
if (!output) {
|
|
98
|
-
(0, logger_1.log)(`Extension output file has to be specified using the ${chalk_1.default.blue('[-o, --output <file>]')} option.`, 'error');
|
|
99
|
-
process.exit(1);
|
|
100
|
-
}
|
|
101
|
-
if (type === 'bundle') {
|
|
102
|
-
const entries = types_1.ExtensionOptionsBundleEntries.safeParse((0, try_parse_json_1.default)(input));
|
|
103
|
-
const splitOutput = (0, try_parse_json_1.default)(output);
|
|
104
|
-
if (entries.success === false) {
|
|
105
|
-
(0, logger_1.log)(`Input option needs to be of the format ${chalk_1.default.blue(`[-i '[{"type":"<extension-type>","name":"<extension-name>","source":<entrypoint>}]']`)}.`, 'error');
|
|
106
|
-
process.exit(1);
|
|
107
|
-
}
|
|
108
|
-
if (!(0, validate_cli_options_1.validateSplitEntrypointOption)(splitOutput)) {
|
|
109
|
-
(0, logger_1.log)(`Output option needs to be of the format ${chalk_1.default.blue(`[-o '{"app":"<app-entrypoint>","api":"<api-entrypoint>"}']`)}.`, 'error');
|
|
110
|
-
process.exit(1);
|
|
111
|
-
}
|
|
112
|
-
await buildBundleExtension({
|
|
113
|
-
entries: entries.data,
|
|
114
|
-
outputApp: splitOutput.app,
|
|
115
|
-
outputApi: splitOutput.api,
|
|
116
|
-
watch,
|
|
117
|
-
sourcemap,
|
|
118
|
-
minify,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
else if ((0, utils_1.isIn)(type, constants_1.HYBRID_EXTENSION_TYPES)) {
|
|
122
|
-
const splitInput = (0, try_parse_json_1.default)(input);
|
|
123
|
-
const splitOutput = (0, try_parse_json_1.default)(output);
|
|
124
|
-
if (!(0, validate_cli_options_1.validateSplitEntrypointOption)(splitInput)) {
|
|
125
|
-
(0, logger_1.log)(`Input option needs to be of the format ${chalk_1.default.blue(`[-i '{"app":"<app-entrypoint>","api":"<api-entrypoint>"}']`)}.`, 'error');
|
|
126
|
-
process.exit(1);
|
|
127
|
-
}
|
|
128
|
-
if (!(0, validate_cli_options_1.validateSplitEntrypointOption)(splitOutput)) {
|
|
129
|
-
(0, logger_1.log)(`Output option needs to be of the format ${chalk_1.default.blue(`[-o '{"app":"<app-entrypoint>","api":"<api-entrypoint>"}']`)}.`, 'error');
|
|
130
|
-
process.exit(1);
|
|
131
|
-
}
|
|
132
|
-
await buildHybridExtension({
|
|
133
|
-
inputApp: splitInput.app,
|
|
134
|
-
inputApi: splitInput.api,
|
|
135
|
-
outputApp: splitOutput.app,
|
|
136
|
-
outputApi: splitOutput.api,
|
|
137
|
-
watch,
|
|
138
|
-
sourcemap,
|
|
139
|
-
minify,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
await buildAppOrApiExtension({
|
|
144
|
-
type,
|
|
145
|
-
input,
|
|
146
|
-
output,
|
|
147
|
-
watch,
|
|
148
|
-
sourcemap,
|
|
149
|
-
minify,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.default = build;
|
|
155
|
-
async function buildAppOrApiExtension({ type, input, output, watch, sourcemap, minify, }) {
|
|
156
|
-
var _a;
|
|
157
|
-
if (!(await fs_extra_1.default.pathExists(input)) || !(await fs_extra_1.default.stat(input)).isFile()) {
|
|
158
|
-
(0, logger_1.log)(`Entrypoint ${chalk_1.default.bold(input)} does not exist.`, 'error');
|
|
159
|
-
process.exit(1);
|
|
160
|
-
}
|
|
161
|
-
if (output.length === 0) {
|
|
162
|
-
(0, logger_1.log)(`Output file can not be empty.`, 'error');
|
|
163
|
-
process.exit(1);
|
|
164
|
-
}
|
|
165
|
-
const language = (0, languages_1.getLanguageFromPath)(input);
|
|
166
|
-
if (!(0, languages_1.isLanguage)(language)) {
|
|
167
|
-
(0, logger_1.log)(`Language ${chalk_1.default.bold(language)} is not supported.`, 'error');
|
|
168
|
-
process.exit(1);
|
|
169
|
-
}
|
|
170
|
-
const config = await (0, load_config_1.default)();
|
|
171
|
-
const plugins = (_a = config.plugins) !== null && _a !== void 0 ? _a : [];
|
|
172
|
-
const mode = (0, utils_1.isIn)(type, constants_1.APP_EXTENSION_TYPES) ? 'browser' : 'node';
|
|
173
|
-
const rollupOptions = getRollupOptions({ mode, input, language, sourcemap, minify, plugins });
|
|
174
|
-
const rollupOutputOptions = getRollupOutputOptions({ mode, output, sourcemap });
|
|
175
|
-
if (watch) {
|
|
176
|
-
await watchExtension({ rollupOptions, rollupOutputOptions });
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
await buildExtension({ rollupOptions, rollupOutputOptions });
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
async function buildHybridExtension({ inputApp, inputApi, outputApp, outputApi, watch, sourcemap, minify, }) {
|
|
183
|
-
var _a;
|
|
184
|
-
if (!(await fs_extra_1.default.pathExists(inputApp)) || !(await fs_extra_1.default.stat(inputApp)).isFile()) {
|
|
185
|
-
(0, logger_1.log)(`App entrypoint ${chalk_1.default.bold(inputApp)} does not exist.`, 'error');
|
|
186
|
-
process.exit(1);
|
|
187
|
-
}
|
|
188
|
-
if (!(await fs_extra_1.default.pathExists(inputApi)) || !(await fs_extra_1.default.stat(inputApi)).isFile()) {
|
|
189
|
-
(0, logger_1.log)(`API entrypoint ${chalk_1.default.bold(inputApi)} does not exist.`, 'error');
|
|
190
|
-
process.exit(1);
|
|
191
|
-
}
|
|
192
|
-
if (outputApp.length === 0) {
|
|
193
|
-
(0, logger_1.log)(`App output file can not be empty.`, 'error');
|
|
194
|
-
process.exit(1);
|
|
195
|
-
}
|
|
196
|
-
if (outputApi.length === 0) {
|
|
197
|
-
(0, logger_1.log)(`API output file can not be empty.`, 'error');
|
|
198
|
-
process.exit(1);
|
|
199
|
-
}
|
|
200
|
-
const languageApp = (0, languages_1.getLanguageFromPath)(inputApp);
|
|
201
|
-
const languageApi = (0, languages_1.getLanguageFromPath)(inputApi);
|
|
202
|
-
if (!(0, languages_1.isLanguage)(languageApp)) {
|
|
203
|
-
(0, logger_1.log)(`App language ${chalk_1.default.bold(languageApp)} is not supported.`, 'error');
|
|
204
|
-
process.exit(1);
|
|
205
|
-
}
|
|
206
|
-
if (!(0, languages_1.isLanguage)(languageApi)) {
|
|
207
|
-
(0, logger_1.log)(`API language ${chalk_1.default.bold(languageApi)} is not supported.`, 'error');
|
|
208
|
-
process.exit(1);
|
|
209
|
-
}
|
|
210
|
-
const config = await (0, load_config_1.default)();
|
|
211
|
-
const plugins = (_a = config.plugins) !== null && _a !== void 0 ? _a : [];
|
|
212
|
-
const rollupOptionsApp = getRollupOptions({
|
|
213
|
-
mode: 'browser',
|
|
214
|
-
input: inputApp,
|
|
215
|
-
language: languageApp,
|
|
216
|
-
sourcemap,
|
|
217
|
-
minify,
|
|
218
|
-
plugins,
|
|
219
|
-
});
|
|
220
|
-
const rollupOptionsApi = getRollupOptions({
|
|
221
|
-
mode: 'node',
|
|
222
|
-
input: inputApi,
|
|
223
|
-
language: languageApi,
|
|
224
|
-
sourcemap,
|
|
225
|
-
minify,
|
|
226
|
-
plugins,
|
|
227
|
-
});
|
|
228
|
-
const rollupOutputOptionsApp = getRollupOutputOptions({ mode: 'browser', output: outputApp, sourcemap });
|
|
229
|
-
const rollupOutputOptionsApi = getRollupOutputOptions({ mode: 'node', output: outputApi, sourcemap });
|
|
230
|
-
const rollupOptionsAll = [
|
|
231
|
-
{ rollupOptions: rollupOptionsApp, rollupOutputOptions: rollupOutputOptionsApp },
|
|
232
|
-
{ rollupOptions: rollupOptionsApi, rollupOutputOptions: rollupOutputOptionsApi },
|
|
233
|
-
];
|
|
234
|
-
if (watch) {
|
|
235
|
-
await watchExtension(rollupOptionsAll);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
await buildExtension(rollupOptionsAll);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
async function buildBundleExtension({ entries, outputApp, outputApi, watch, sourcemap, minify, }) {
|
|
242
|
-
var _a;
|
|
243
|
-
if (outputApp.length === 0) {
|
|
244
|
-
(0, logger_1.log)(`App output file can not be empty.`, 'error');
|
|
245
|
-
process.exit(1);
|
|
246
|
-
}
|
|
247
|
-
if (outputApi.length === 0) {
|
|
248
|
-
(0, logger_1.log)(`API output file can not be empty.`, 'error');
|
|
249
|
-
process.exit(1);
|
|
250
|
-
}
|
|
251
|
-
const languagesApp = new Set();
|
|
252
|
-
const languagesApi = new Set();
|
|
253
|
-
for (const entry of entries) {
|
|
254
|
-
if ((0, utils_1.isTypeIn)(entry, constants_1.HYBRID_EXTENSION_TYPES)) {
|
|
255
|
-
const inputApp = entry.source.app;
|
|
256
|
-
const inputApi = entry.source.api;
|
|
257
|
-
if (!(await fs_extra_1.default.pathExists(inputApp)) || !(await fs_extra_1.default.stat(inputApp)).isFile()) {
|
|
258
|
-
(0, logger_1.log)(`App entrypoint ${chalk_1.default.bold(inputApp)} does not exist.`, 'error');
|
|
259
|
-
process.exit(1);
|
|
260
|
-
}
|
|
261
|
-
if (!(await fs_extra_1.default.pathExists(inputApi)) || !(await fs_extra_1.default.stat(inputApi)).isFile()) {
|
|
262
|
-
(0, logger_1.log)(`API entrypoint ${chalk_1.default.bold(inputApi)} does not exist.`, 'error');
|
|
263
|
-
process.exit(1);
|
|
264
|
-
}
|
|
265
|
-
const languageApp = (0, languages_1.getLanguageFromPath)(inputApp);
|
|
266
|
-
const languageApi = (0, languages_1.getLanguageFromPath)(inputApi);
|
|
267
|
-
if (!(0, languages_1.isLanguage)(languageApp)) {
|
|
268
|
-
(0, logger_1.log)(`App language ${chalk_1.default.bold(languageApp)} is not supported.`, 'error');
|
|
269
|
-
process.exit(1);
|
|
270
|
-
}
|
|
271
|
-
if (!(0, languages_1.isLanguage)(languageApi)) {
|
|
272
|
-
(0, logger_1.log)(`API language ${chalk_1.default.bold(languageApi)} is not supported.`, 'error');
|
|
273
|
-
process.exit(1);
|
|
274
|
-
}
|
|
275
|
-
languagesApp.add(languageApp);
|
|
276
|
-
languagesApi.add(languageApi);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
const input = entry.source;
|
|
280
|
-
if (!(await fs_extra_1.default.pathExists(input)) || !(await fs_extra_1.default.stat(input)).isFile()) {
|
|
281
|
-
(0, logger_1.log)(`Entrypoint ${chalk_1.default.bold(input)} does not exist.`, 'error');
|
|
282
|
-
process.exit(1);
|
|
283
|
-
}
|
|
284
|
-
const language = (0, languages_1.getLanguageFromPath)(input);
|
|
285
|
-
if (!(0, languages_1.isLanguage)(language)) {
|
|
286
|
-
(0, logger_1.log)(`Language ${chalk_1.default.bold(language)} is not supported.`, 'error');
|
|
287
|
-
process.exit(1);
|
|
288
|
-
}
|
|
289
|
-
if ((0, utils_1.isIn)(entry.type, constants_1.APP_EXTENSION_TYPES)) {
|
|
290
|
-
languagesApp.add(language);
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
languagesApi.add(language);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
const config = await (0, load_config_1.default)();
|
|
298
|
-
const plugins = (_a = config.plugins) !== null && _a !== void 0 ? _a : [];
|
|
299
|
-
const entrypointApp = (0, generate_bundle_entrypoint_1.default)('app', entries);
|
|
300
|
-
const entrypointApi = (0, generate_bundle_entrypoint_1.default)('api', entries);
|
|
301
|
-
const rollupOptionsApp = getRollupOptions({
|
|
302
|
-
mode: 'browser',
|
|
303
|
-
input: { entry: entrypointApp },
|
|
304
|
-
language: Array.from(languagesApp),
|
|
305
|
-
sourcemap,
|
|
306
|
-
minify,
|
|
307
|
-
plugins,
|
|
308
|
-
});
|
|
309
|
-
const rollupOptionsApi = getRollupOptions({
|
|
310
|
-
mode: 'node',
|
|
311
|
-
input: { entry: entrypointApi },
|
|
312
|
-
language: Array.from(languagesApi),
|
|
313
|
-
sourcemap,
|
|
314
|
-
minify,
|
|
315
|
-
plugins,
|
|
316
|
-
});
|
|
317
|
-
const rollupOutputOptionsApp = getRollupOutputOptions({ mode: 'browser', output: outputApp, sourcemap });
|
|
318
|
-
const rollupOutputOptionsApi = getRollupOutputOptions({ mode: 'node', output: outputApi, sourcemap });
|
|
319
|
-
const rollupOptionsAll = [
|
|
320
|
-
{ rollupOptions: rollupOptionsApp, rollupOutputOptions: rollupOutputOptionsApp },
|
|
321
|
-
{ rollupOptions: rollupOptionsApi, rollupOutputOptions: rollupOutputOptionsApi },
|
|
322
|
-
];
|
|
323
|
-
if (watch) {
|
|
324
|
-
await watchExtension(rollupOptionsAll);
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
await buildExtension(rollupOptionsAll);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
async function buildExtension(config) {
|
|
331
|
-
const configs = Array.isArray(config) ? config : [config];
|
|
332
|
-
const spinner = (0, ora_1.default)(chalk_1.default.bold('Building Directus extension...')).start();
|
|
333
|
-
const result = await Promise.all(configs.map(async (c) => {
|
|
334
|
-
try {
|
|
335
|
-
const bundle = await (0, rollup_1.rollup)(c.rollupOptions);
|
|
336
|
-
await bundle.write(c.rollupOutputOptions);
|
|
337
|
-
await bundle.close();
|
|
338
|
-
}
|
|
339
|
-
catch (error) {
|
|
340
|
-
return formatRollupError(error);
|
|
341
|
-
}
|
|
342
|
-
return null;
|
|
343
|
-
}));
|
|
344
|
-
const resultErrors = result.filter((r) => r !== null);
|
|
345
|
-
if (resultErrors.length > 0) {
|
|
346
|
-
spinner.fail(chalk_1.default.bold('Failed'));
|
|
347
|
-
(0, logger_1.log)(resultErrors.join('\n\n'));
|
|
348
|
-
process.exit(1);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
spinner.succeed(chalk_1.default.bold('Done'));
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
async function watchExtension(config) {
|
|
355
|
-
const configs = Array.isArray(config) ? config : [config];
|
|
356
|
-
const spinner = (0, ora_1.default)(chalk_1.default.bold('Building Directus extension...'));
|
|
357
|
-
let buildCount = 0;
|
|
358
|
-
for (const c of configs) {
|
|
359
|
-
const watcher = (0, rollup_1.watch)({
|
|
360
|
-
...c.rollupOptions,
|
|
361
|
-
output: c.rollupOutputOptions,
|
|
362
|
-
});
|
|
363
|
-
watcher.on('event', async (event) => {
|
|
364
|
-
switch (event.code) {
|
|
365
|
-
case 'BUNDLE_START':
|
|
366
|
-
if (buildCount === 0) {
|
|
367
|
-
(0, logger_1.clear)();
|
|
368
|
-
spinner.start();
|
|
369
|
-
}
|
|
370
|
-
buildCount++;
|
|
371
|
-
break;
|
|
372
|
-
case 'BUNDLE_END':
|
|
373
|
-
await event.result.close();
|
|
374
|
-
buildCount--;
|
|
375
|
-
if (buildCount === 0) {
|
|
376
|
-
spinner.succeed(chalk_1.default.bold('Done'));
|
|
377
|
-
(0, logger_1.log)(chalk_1.default.bold.green('Watching files for changes...'));
|
|
378
|
-
}
|
|
379
|
-
break;
|
|
380
|
-
case 'ERROR': {
|
|
381
|
-
buildCount--;
|
|
382
|
-
spinner.fail(chalk_1.default.bold('Failed'));
|
|
383
|
-
(0, logger_1.log)(formatRollupError(event.error));
|
|
384
|
-
if (buildCount > 0) {
|
|
385
|
-
spinner.start();
|
|
386
|
-
}
|
|
387
|
-
break;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
function getRollupOptions({ mode, input, language, sourcemap, minify, plugins, }) {
|
|
394
|
-
const languages = Array.isArray(language) ? language : [language];
|
|
395
|
-
return {
|
|
396
|
-
input: typeof input !== 'string' ? 'entry' : input,
|
|
397
|
-
external: mode === 'browser' ? constants_1.APP_SHARED_DEPS : constants_1.API_SHARED_DEPS,
|
|
398
|
-
plugins: [
|
|
399
|
-
typeof input !== 'string' ? (0, plugin_virtual_1.default)(input) : null,
|
|
400
|
-
mode === 'browser' ? (0, rollup_plugin_vue_1.default)({ preprocessStyles: true }) : null,
|
|
401
|
-
languages.includes('typescript') ? (0, rollup_plugin_esbuild_1.default)({ include: /\.tsx?$/, sourceMap: sourcemap }) : null,
|
|
402
|
-
mode === 'browser' ? (0, rollup_plugin_styles_1.default)() : null,
|
|
403
|
-
...plugins,
|
|
404
|
-
(0, plugin_node_resolve_1.nodeResolve)({ browser: mode === 'browser' }),
|
|
405
|
-
(0, plugin_commonjs_1.default)({ esmExternals: mode === 'browser', sourceMap: sourcemap }),
|
|
406
|
-
(0, plugin_json_1.default)(),
|
|
407
|
-
(0, plugin_replace_1.default)({
|
|
408
|
-
values: {
|
|
409
|
-
'process.env.NODE_ENV': JSON.stringify('production'),
|
|
410
|
-
},
|
|
411
|
-
preventAssignment: true,
|
|
412
|
-
}),
|
|
413
|
-
minify ? (0, plugin_terser_1.default)() : null,
|
|
414
|
-
],
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
function getRollupOutputOptions({ mode, output, sourcemap, }) {
|
|
418
|
-
return {
|
|
419
|
-
file: output,
|
|
420
|
-
format: mode === 'browser' ? 'es' : 'cjs',
|
|
421
|
-
exports: 'auto',
|
|
422
|
-
inlineDynamicImports: true,
|
|
423
|
-
sourcemap,
|
|
424
|
-
};
|
|
425
|
-
}
|
|
426
|
-
function formatRollupError(error) {
|
|
427
|
-
var _a;
|
|
428
|
-
let message = '';
|
|
429
|
-
message += `${chalk_1.default.bold.red(`[${error.name}]`)} ${error.message}${error.plugin ? ` (plugin ${error.plugin})` : ''}\n`;
|
|
430
|
-
if (error.url) {
|
|
431
|
-
message += '\n' + chalk_1.default.green(error.url);
|
|
432
|
-
}
|
|
433
|
-
if (error.loc) {
|
|
434
|
-
message += '\n' + chalk_1.default.green(`${(_a = error.loc.file) !== null && _a !== void 0 ? _a : error.id}:${error.loc.line}:${error.loc.column}`);
|
|
435
|
-
}
|
|
436
|
-
else if (error.id) {
|
|
437
|
-
message += '\n' + chalk_1.default.green(error.id);
|
|
438
|
-
}
|
|
439
|
-
if (error.frame) {
|
|
440
|
-
message += '\n' + chalk_1.default.dim(error.frame);
|
|
441
|
-
}
|
|
442
|
-
if (error.stack) {
|
|
443
|
-
message += '\n' + chalk_1.default.dim(error.stack);
|
|
444
|
-
}
|
|
445
|
-
return message;
|
|
446
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
-
const execa_1 = __importDefault(require("execa"));
|
|
10
|
-
const ora_1 = __importDefault(require("ora"));
|
|
11
|
-
const constants_1 = require("@directus/shared/constants");
|
|
12
|
-
const utils_1 = require("@directus/shared/utils");
|
|
13
|
-
const logger_1 = require("../utils/logger");
|
|
14
|
-
const languages_1 = require("../utils/languages");
|
|
15
|
-
const get_sdk_version_1 = __importDefault(require("../utils/get-sdk-version"));
|
|
16
|
-
const get_extension_dev_deps_1 = __importDefault(require("./helpers/get-extension-dev-deps"));
|
|
17
|
-
const copy_template_1 = __importDefault(require("./helpers/copy-template"));
|
|
18
|
-
const get_package_manager_1 = __importDefault(require("../utils/get-package-manager"));
|
|
19
|
-
async function create(type, name, options) {
|
|
20
|
-
var _a;
|
|
21
|
-
const targetDir = name.substring(name.lastIndexOf('/') + 1);
|
|
22
|
-
const targetPath = path_1.default.resolve(targetDir);
|
|
23
|
-
if (!(0, utils_1.isIn)(type, constants_1.EXTENSION_TYPES)) {
|
|
24
|
-
(0, logger_1.log)(`Extension type ${chalk_1.default.bold(type)} is not supported. Available extension types: ${constants_1.EXTENSION_TYPES.map((t) => chalk_1.default.bold.magenta(t)).join(', ')}.`, 'error');
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
if (targetDir.length === 0) {
|
|
28
|
-
(0, logger_1.log)(`Extension name can not be empty.`, 'error');
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
if (await fs_extra_1.default.pathExists(targetPath)) {
|
|
32
|
-
const info = await fs_extra_1.default.stat(targetPath);
|
|
33
|
-
if (!info.isDirectory()) {
|
|
34
|
-
(0, logger_1.log)(`Destination ${chalk_1.default.bold(targetDir)} already exists and is not a directory.`, 'error');
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
const files = await fs_extra_1.default.readdir(targetPath);
|
|
38
|
-
if (files.length > 0) {
|
|
39
|
-
(0, logger_1.log)(`Destination ${chalk_1.default.bold(targetDir)} already exists and is not empty.`, 'error');
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if ((0, utils_1.isIn)(type, constants_1.BUNDLE_EXTENSION_TYPES)) {
|
|
44
|
-
await createPackageExtension({ type, name, targetDir, targetPath });
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const language = (_a = options.language) !== null && _a !== void 0 ? _a : 'javascript';
|
|
48
|
-
await createLocalExtension({ type, name, targetDir, targetPath, language });
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.default = create;
|
|
52
|
-
async function createPackageExtension({ type, name, targetDir, targetPath, }) {
|
|
53
|
-
const spinner = (0, ora_1.default)(chalk_1.default.bold('Scaffolding Directus extension...')).start();
|
|
54
|
-
await fs_extra_1.default.ensureDir(targetPath);
|
|
55
|
-
await (0, copy_template_1.default)(type, targetPath);
|
|
56
|
-
const host = `^${(0, get_sdk_version_1.default)()}`;
|
|
57
|
-
const options = { type, path: { app: 'dist/app.js', api: 'dist/api.js' }, entries: [], host };
|
|
58
|
-
const packageManifest = getPackageManifest(name, options, await (0, get_extension_dev_deps_1.default)(type));
|
|
59
|
-
await fs_extra_1.default.writeJSON(path_1.default.join(targetPath, 'package.json'), packageManifest, { spaces: '\t' });
|
|
60
|
-
const packageManager = (0, get_package_manager_1.default)();
|
|
61
|
-
await (0, execa_1.default)(packageManager, ['install'], { cwd: targetPath });
|
|
62
|
-
spinner.succeed(chalk_1.default.bold('Done'));
|
|
63
|
-
(0, logger_1.log)(getDoneMessage(type, targetDir, targetPath, packageManager));
|
|
64
|
-
}
|
|
65
|
-
async function createLocalExtension({ type, name, targetDir, targetPath, language, }) {
|
|
66
|
-
if (!(0, languages_1.isLanguage)(language)) {
|
|
67
|
-
(0, logger_1.log)(`Language ${chalk_1.default.bold(language)} is not supported. Available languages: ${constants_1.EXTENSION_LANGUAGES.map((t) => chalk_1.default.bold.magenta(t)).join(', ')}.`, 'error');
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
const spinner = (0, ora_1.default)(chalk_1.default.bold('Scaffolding Directus extension...')).start();
|
|
71
|
-
await fs_extra_1.default.ensureDir(targetPath);
|
|
72
|
-
await (0, copy_template_1.default)(type, targetPath, 'src', language);
|
|
73
|
-
const host = `^${(0, get_sdk_version_1.default)()}`;
|
|
74
|
-
const options = (0, utils_1.isIn)(type, constants_1.HYBRID_EXTENSION_TYPES)
|
|
75
|
-
? {
|
|
76
|
-
type,
|
|
77
|
-
path: { app: 'dist/app.js', api: 'dist/api.js' },
|
|
78
|
-
source: { app: `src/app.${(0, languages_1.languageToShort)(language)}`, api: `src/api.${(0, languages_1.languageToShort)(language)}` },
|
|
79
|
-
host,
|
|
80
|
-
}
|
|
81
|
-
: {
|
|
82
|
-
type,
|
|
83
|
-
path: 'dist/index.js',
|
|
84
|
-
source: `src/index.${(0, languages_1.languageToShort)(language)}`,
|
|
85
|
-
host,
|
|
86
|
-
};
|
|
87
|
-
const packageManifest = getPackageManifest(name, options, await (0, get_extension_dev_deps_1.default)(type, language));
|
|
88
|
-
await fs_extra_1.default.writeJSON(path_1.default.join(targetPath, 'package.json'), packageManifest, { spaces: '\t' });
|
|
89
|
-
const packageManager = (0, get_package_manager_1.default)();
|
|
90
|
-
await (0, execa_1.default)(packageManager, ['install'], { cwd: targetPath });
|
|
91
|
-
spinner.succeed(chalk_1.default.bold('Done'));
|
|
92
|
-
(0, logger_1.log)(getDoneMessage(type, targetDir, targetPath, packageManager));
|
|
93
|
-
}
|
|
94
|
-
function getPackageManifest(name, options, deps) {
|
|
95
|
-
const packageManifest = {
|
|
96
|
-
name: constants_1.EXTENSION_NAME_REGEX.test(name) ? name : `directus-extension-${name}`,
|
|
97
|
-
description: 'Please enter a description for your extension',
|
|
98
|
-
icon: 'extension',
|
|
99
|
-
version: '1.0.0',
|
|
100
|
-
keywords: ['directus', 'directus-extension', `directus-custom-${options.type}`],
|
|
101
|
-
[constants_1.EXTENSION_PKG_KEY]: options,
|
|
102
|
-
scripts: {
|
|
103
|
-
build: 'directus-extension build',
|
|
104
|
-
dev: 'directus-extension build -w --no-minify',
|
|
105
|
-
link: 'directus-extension link',
|
|
106
|
-
},
|
|
107
|
-
devDependencies: deps,
|
|
108
|
-
};
|
|
109
|
-
if (options.type === 'bundle') {
|
|
110
|
-
packageManifest.scripts['add'] = 'directus-extension add';
|
|
111
|
-
}
|
|
112
|
-
return packageManifest;
|
|
113
|
-
}
|
|
114
|
-
function getDoneMessage(type, targetDir, targetPath, packageManager) {
|
|
115
|
-
return `
|
|
116
|
-
Your ${type} extension has been created at ${chalk_1.default.green(targetPath)}
|
|
117
|
-
|
|
118
|
-
To start developing, run:
|
|
119
|
-
${chalk_1.default.blue('cd')} ${targetDir}
|
|
120
|
-
${chalk_1.default.blue(`${packageManager} run`)} dev
|
|
121
|
-
|
|
122
|
-
and then to build for production, run:
|
|
123
|
-
${chalk_1.default.blue(`${packageManager} run`)} build
|
|
124
|
-
`;
|
|
125
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
-
const get_template_path_1 = __importDefault(require("../../utils/get-template-path"));
|
|
9
|
-
async function copyTemplateFile(templateFile, extensionPath, sourcePath) {
|
|
10
|
-
if (sourcePath !== undefined) {
|
|
11
|
-
const oldName = path_1.default.basename(templateFile.path);
|
|
12
|
-
const newName = oldName.startsWith('_') ? `.${oldName.substring(1)}` : oldName;
|
|
13
|
-
const targetPath = templateFile.type === 'config'
|
|
14
|
-
? path_1.default.join(extensionPath, newName)
|
|
15
|
-
: path_1.default.resolve(extensionPath, sourcePath, newName);
|
|
16
|
-
await fs_extra_1.default.copy(templateFile.path, targetPath, { overwrite: false });
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
async function getFilesInDir(templatePath) {
|
|
20
|
-
if (!(await fs_extra_1.default.pathExists(templatePath)))
|
|
21
|
-
return [];
|
|
22
|
-
const files = await fs_extra_1.default.readdir(templatePath);
|
|
23
|
-
return files.map((file) => path_1.default.join(templatePath, file));
|
|
24
|
-
}
|
|
25
|
-
async function getLanguageTemplateFiles(templateLanguagePath) {
|
|
26
|
-
const [configFiles, sourceFiles] = await Promise.all([
|
|
27
|
-
getFilesInDir(path_1.default.join(templateLanguagePath, 'config')),
|
|
28
|
-
getFilesInDir(path_1.default.join(templateLanguagePath, 'source')),
|
|
29
|
-
]);
|
|
30
|
-
const configTemplateFiles = configFiles.map((file) => ({ type: 'config', path: file }));
|
|
31
|
-
const sourceTemplateFiles = sourceFiles.map((file) => ({ type: 'source', path: file }));
|
|
32
|
-
return [...configTemplateFiles, ...sourceTemplateFiles];
|
|
33
|
-
}
|
|
34
|
-
async function getTypeTemplateFiles(templateTypePath, language) {
|
|
35
|
-
const [commonTemplateFiles, languageTemplateFiles] = await Promise.all([
|
|
36
|
-
getLanguageTemplateFiles(path_1.default.join(templateTypePath, 'common')),
|
|
37
|
-
language ? getLanguageTemplateFiles(path_1.default.join(templateTypePath, language)) : null,
|
|
38
|
-
]);
|
|
39
|
-
return [...commonTemplateFiles, ...(languageTemplateFiles ? languageTemplateFiles : [])];
|
|
40
|
-
}
|
|
41
|
-
async function getTemplateFiles(type, language) {
|
|
42
|
-
const templatePath = (0, get_template_path_1.default)();
|
|
43
|
-
const [commonTemplateFiles, typeTemplateFiles] = await Promise.all([
|
|
44
|
-
getTypeTemplateFiles(path_1.default.join(templatePath, 'common'), language),
|
|
45
|
-
getTypeTemplateFiles(path_1.default.join(templatePath, type), language),
|
|
46
|
-
]);
|
|
47
|
-
return [...commonTemplateFiles, ...typeTemplateFiles];
|
|
48
|
-
}
|
|
49
|
-
async function copyTemplate(type, extensionPath, sourcePath, language) {
|
|
50
|
-
const templateFiles = await getTemplateFiles(type, language);
|
|
51
|
-
await Promise.all(templateFiles.map((templateFile) => copyTemplateFile(templateFile, extensionPath, sourcePath)));
|
|
52
|
-
}
|
|
53
|
-
exports.default = copyTemplate;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const constants_1 = require("@directus/shared/constants");
|
|
8
|
-
const utils_1 = require("@directus/shared/utils");
|
|
9
|
-
const node_1 = require("@directus/shared/utils/node");
|
|
10
|
-
function generateBundleEntrypoint(mode, entries) {
|
|
11
|
-
const types = [...(mode === 'app' ? constants_1.APP_EXTENSION_TYPES : constants_1.API_EXTENSION_TYPES), ...constants_1.HYBRID_EXTENSION_TYPES];
|
|
12
|
-
const entriesForTypes = entries.filter((entry) => (0, utils_1.isIn)(entry.type, types));
|
|
13
|
-
const imports = entriesForTypes.map((entry, i) => `import e${i} from './${(0, node_1.pathToRelativeUrl)(path_1.default.resolve((0, utils_1.isTypeIn)(entry, constants_1.HYBRID_EXTENSION_TYPES)
|
|
14
|
-
? mode === 'app'
|
|
15
|
-
? entry.source.app
|
|
16
|
-
: entry.source.api
|
|
17
|
-
: entry.source))}';`);
|
|
18
|
-
const exports = types.map((type) => `export const ${(0, utils_1.pluralize)(type)} = [${entriesForTypes
|
|
19
|
-
.map((entry, i) => entry.type === type ? (mode === 'app' ? `e${i}` : `{name:'${entry.name}',config:e${i}}`) : null)
|
|
20
|
-
.filter((e) => e !== null)
|
|
21
|
-
.join(',')}];`);
|
|
22
|
-
return `${imports.join('')}${exports.join('')}`;
|
|
23
|
-
}
|
|
24
|
-
exports.default = generateBundleEntrypoint;
|