@modern-js/bff-generator 1.1.5 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/node/index.js +209 -0
- package/dist/js/node/main.js +2945 -1456
- package/package.json +11 -8
- package/templates/function/app/ts/nest.ts.handlebars +3 -1
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.handleTemplateFile = exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _generatorUtils = require("@modern-js/generator-utils");
|
|
11
|
+
|
|
12
|
+
var _codesmithApiApp = require("@modern-js/codesmith-api-app");
|
|
13
|
+
|
|
14
|
+
var _codesmithApiJson = require("@modern-js/codesmith-api-json");
|
|
15
|
+
|
|
16
|
+
var _generatorCommon = require("@modern-js/generator-common");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
|
+
|
|
24
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
+
|
|
26
|
+
function isEmptyApiDir(apiDir) {
|
|
27
|
+
const files = _generatorUtils.fs.readdirSync(apiDir);
|
|
28
|
+
|
|
29
|
+
if (files.length === 0) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return files.every(file => {
|
|
34
|
+
if (_generatorUtils.fs.statSync(_path.default.join(apiDir, file)).isDirectory()) {
|
|
35
|
+
const childFiles = _generatorUtils.fs.readdirSync(_path.default.join(apiDir, file));
|
|
36
|
+
|
|
37
|
+
return childFiles.length === 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return false;
|
|
41
|
+
});
|
|
42
|
+
} // eslint-disable-next-line max-statements
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
const handleTemplateFile = async (context, generator, appApi) => {
|
|
46
|
+
const jsonAPI = new _codesmithApiJson.JsonAPI(generator);
|
|
47
|
+
const ans = await appApi.getInputBySchema(_generatorCommon.BFFSchema, context.config);
|
|
48
|
+
const appDir = context.materials.default.basePath;
|
|
49
|
+
|
|
50
|
+
const apiDir = _path.default.join(appDir, 'api');
|
|
51
|
+
|
|
52
|
+
if (_generatorUtils.fs.existsSync(apiDir) && !isEmptyApiDir(apiDir)) {
|
|
53
|
+
const files = _generatorUtils.fs.readdirSync(apiDir);
|
|
54
|
+
|
|
55
|
+
if (files.length > 0) {
|
|
56
|
+
generator.logger.warn("'api' is already exist");
|
|
57
|
+
throw Error("'api' is already exist");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const {
|
|
62
|
+
bffType,
|
|
63
|
+
framework
|
|
64
|
+
} = ans;
|
|
65
|
+
const language = (0, _generatorUtils.isTsProject)(appDir) ? _generatorCommon.Language.TS : _generatorCommon.Language.JS;
|
|
66
|
+
|
|
67
|
+
if (language === _generatorCommon.Language.JS && framework === _generatorCommon.Framework.Nest) {
|
|
68
|
+
generator.logger.warn('nest not support js project');
|
|
69
|
+
throw Error('nest not support js project');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
let updateInfo = {};
|
|
73
|
+
|
|
74
|
+
if (framework === _generatorCommon.Framework.Express || framework === _generatorCommon.Framework.Koa) {
|
|
75
|
+
updateInfo = {
|
|
76
|
+
[`devDependencies.@types/${framework}`]: `^${await (0, _generatorUtils.getPackageVersion)(`@types/${framework}`)}`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (framework === _generatorCommon.Framework.Nest) {
|
|
81
|
+
updateInfo = {
|
|
82
|
+
'dependencies.@nestjs/core': `^${await (0, _generatorUtils.getPackageVersion)('@nestjs/core')}`,
|
|
83
|
+
'dependencies.@nestjs/common': `^${await (0, _generatorUtils.getPackageVersion)('@nestjs/common')}`
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
if (bffType === _generatorCommon.BFFType.Func) {
|
|
87
|
+
updateInfo['dependencies.express'] = `^${await (0, _generatorUtils.getPackageVersion)('express')}`;
|
|
88
|
+
updateInfo['devDependencies.@types/express'] = `^${await (0, _generatorUtils.getPackageVersion)('@types/express')}`;
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
updateInfo = _objectSpread(_objectSpread({}, updateInfo), {}, {
|
|
92
|
+
[`dependencies.${framework}`]: `^${await (0, _generatorUtils.getPackageVersion)(framework)}`
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
await jsonAPI.update(context.materials.default.get(_path.default.join(appDir, 'package.json')), {
|
|
97
|
+
query: {},
|
|
98
|
+
update: {
|
|
99
|
+
$set: _objectSpread({
|
|
100
|
+
'dependencies.@modern-js/plugin-bff': `^${await (0, _generatorUtils.getPackageVersion)('@modern-js/plugin-bff')}`,
|
|
101
|
+
[`dependencies.@modern-js/plugin-${framework}`]: `^${await (0, _generatorUtils.getPackageVersion)(`@modern-js/plugin-${framework}`)}`
|
|
102
|
+
}, updateInfo)
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
if (language === _generatorCommon.Language.TS) {
|
|
107
|
+
const tsconfigJSON = (0, _generatorUtils.readTsConfigByFile)(_path.default.join(appDir, 'tsconfig.json'));
|
|
108
|
+
|
|
109
|
+
if (!(tsconfigJSON.include || []).includes('api')) {
|
|
110
|
+
await jsonAPI.update(context.materials.default.get(_path.default.join(appDir, 'tsconfig.json')), {
|
|
111
|
+
query: {},
|
|
112
|
+
update: {
|
|
113
|
+
$set: {
|
|
114
|
+
include: [...(tsconfigJSON.include || []), 'api']
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
} else {
|
|
120
|
+
await appApi.forgeTemplate('templates/js-template/**/*', undefined, resourceKey => resourceKey.replace('templates/js-template/', 'api/').replace('.handlebars', `.${language}`));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (bffType === _generatorCommon.BFFType.Func) {
|
|
124
|
+
if (language === _generatorCommon.Language.TS) {
|
|
125
|
+
await jsonAPI.update(context.materials.default.get(_path.default.join(appDir, 'tsconfig.json')), {
|
|
126
|
+
query: {},
|
|
127
|
+
update: {
|
|
128
|
+
$set: {
|
|
129
|
+
'compilerOptions.paths.@api/*': ['./api/*']
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
await appApi.forgeTemplate('templates/function/base/*', undefined, resourceKey => resourceKey.replace('templates/function/base/', 'api/').replace('.handlebars', `.${language}`));
|
|
136
|
+
await appApi.forgeTemplate(`templates/function/info/*`, resourceKey => resourceKey.includes(language), resourceKey => resourceKey.replace('templates/function/info/', 'api/info/').replace('.handlebars', ``));
|
|
137
|
+
await appApi.forgeTemplate(`templates/function/app/${language}/${framework}.${language}.handlebars`, undefined, resourceKey => resourceKey.replace(`templates/function/app/${language}/${framework}.${language}.handlebars`, `api/_app.${language}`));
|
|
138
|
+
} else {
|
|
139
|
+
if (language === _generatorCommon.Language.TS) {
|
|
140
|
+
await jsonAPI.update(context.materials.default.get(_path.default.join(appDir, 'tsconfig.json')), {
|
|
141
|
+
query: {},
|
|
142
|
+
update: {
|
|
143
|
+
$set: {
|
|
144
|
+
'compilerOptions.paths.@api/*': ['./api/lambda/*']
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
await appApi.forgeTemplate(`templates/framework/lambda/*`, undefined, resourceKey => resourceKey.replace(`templates/framework/`, 'api/').replace('.handlebars', `.${language}`));
|
|
151
|
+
await appApi.forgeTemplate(`templates/framework/app/${framework}/**/*`, resourceKey => framework === _generatorCommon.Framework.Egg || framework === _generatorCommon.Framework.Koa ? resourceKey.includes(language) : true, resourceKey => resourceKey.replace(`templates/framework/app/${framework}/`, 'api/').replace('.handlebars', framework === _generatorCommon.Framework.Express ? `.${language}` : ''));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const appendTypeContent = _generatorCommon.FrameworkAppendTypeContent[framework];
|
|
155
|
+
|
|
156
|
+
if (appendTypeContent) {
|
|
157
|
+
const typePath = _path.default.join(appDir, 'src', 'modern-app-env.d.ts');
|
|
158
|
+
|
|
159
|
+
if (_generatorUtils.fs.existsSync(typePath)) {
|
|
160
|
+
const npmrc = _generatorUtils.fs.readFileSync(typePath, 'utf-8');
|
|
161
|
+
|
|
162
|
+
if (!npmrc.includes(appendTypeContent)) {
|
|
163
|
+
_generatorUtils.fs.writeFileSync(typePath, `${npmrc}${appendTypeContent}\n`, 'utf-8');
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
_generatorUtils.fs.ensureFileSync(typePath);
|
|
167
|
+
|
|
168
|
+
_generatorUtils.fs.writeFileSync(typePath, appendTypeContent, 'utf-8');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
exports.handleTemplateFile = handleTemplateFile;
|
|
174
|
+
|
|
175
|
+
var _default = async (context, generator) => {
|
|
176
|
+
const appApi = new _codesmithApiApp.AppAPI(context, generator);
|
|
177
|
+
const {
|
|
178
|
+
locale
|
|
179
|
+
} = context.config;
|
|
180
|
+
|
|
181
|
+
_generatorCommon.i18n.changeLanguage({
|
|
182
|
+
locale
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
appApi.i18n.changeLanguage({
|
|
186
|
+
locale
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
if (!(await appApi.checkEnvironment())) {
|
|
190
|
+
// eslint-disable-next-line no-process-exit
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
generator.logger.debug(`start run @modern-js/bff-generator`);
|
|
195
|
+
generator.logger.debug(`context=${JSON.stringify(context)}`);
|
|
196
|
+
generator.logger.debug(`context.data=${JSON.stringify(context.data)}`);
|
|
197
|
+
|
|
198
|
+
try {
|
|
199
|
+
await handleTemplateFile(context, generator, appApi);
|
|
200
|
+
} catch (e) {
|
|
201
|
+
// eslint-disable-next-line no-process-exit
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
await appApi.runInstall();
|
|
206
|
+
generator.logger.debug(`forge @modern-js/bff-generator succeed `);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
exports.default = _default;
|