steedos-cli 3.0.0-beta.7 → 3.0.0-beta.71
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/bin/run +0 -1
- package/dist/commands/start.js +30 -363
- package/dist/commands/start.js.map +1 -1
- package/package.json +4 -4
- package/default.steedos.config.js +0 -356
- package/default.steedos.settings.yml +0 -148
- package/dist/start/hotReload.d.ts +0 -1
- package/dist/start/hotReload.js +0 -48
- package/dist/start/hotReload.js.map +0 -1
- package/dist/start/index.d.ts +0 -9
- package/dist/start/index.js +0 -143
- package/dist/start/index.js.map +0 -1
package/bin/run
CHANGED
package/dist/commands/start.js
CHANGED
|
@@ -32,376 +32,43 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
const path = require("path");
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const glob_1 = __importDefault(require("glob"));
|
|
45
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
46
|
-
const os_1 = __importDefault(require("os"));
|
|
47
|
-
const cluster_1 = __importDefault(require("cluster"));
|
|
48
|
-
const kleur_1 = __importDefault(require("kleur"));
|
|
49
|
-
const start_1 = require("../start");
|
|
50
|
-
const stopSignals = [
|
|
51
|
-
"SIGHUP",
|
|
52
|
-
"SIGINT",
|
|
53
|
-
"SIGQUIT",
|
|
54
|
-
"SIGILL",
|
|
55
|
-
"SIGTRAP",
|
|
56
|
-
"SIGABRT",
|
|
57
|
-
"SIGBUS",
|
|
58
|
-
"SIGFPE",
|
|
59
|
-
"SIGUSR1",
|
|
60
|
-
"SIGSEGV",
|
|
61
|
-
"SIGUSR2",
|
|
62
|
-
"SIGTERM"
|
|
63
|
-
];
|
|
64
|
-
const logger = {
|
|
65
|
-
info(message) {
|
|
66
|
-
console.log(kleur_1.default.grey("[Runner]"), kleur_1.default.green().bold(message));
|
|
67
|
-
},
|
|
68
|
-
error(err) {
|
|
69
|
-
if (err instanceof Error)
|
|
70
|
-
console.error(kleur_1.default.grey("[Runner]"), kleur_1.default.red().bold(err.message), err);
|
|
71
|
-
else
|
|
72
|
-
console.error(kleur_1.default.grey("[Runner]"), kleur_1.default.red().bold(err));
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
class StartCommand extends Command {
|
|
76
|
-
async loadEnvFile() {
|
|
77
|
-
if (this.flags.env || this.flags.envfile) {
|
|
78
|
-
try {
|
|
79
|
-
const dotenv = await Promise.resolve().then(() => __importStar(require("dotenv")));
|
|
80
|
-
if (this.flags.envfile)
|
|
81
|
-
dotenv.config({ path: this.flags.envfile });
|
|
82
|
-
else
|
|
83
|
-
dotenv.config();
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
throw new Error("The 'dotenv' package is missing! Please install it with 'npm install dotenv --save' command.");
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
fixDriveLetterCase(s) {
|
|
91
|
-
if (s && process.platform === "win32" && s.match(/^[A-Z]:/g)) {
|
|
92
|
-
return s.charAt(0).toLowerCase() + s.slice(1);
|
|
93
|
-
}
|
|
94
|
-
return s;
|
|
95
|
-
}
|
|
96
|
-
async loadConfigFile() {
|
|
97
|
-
let filePath;
|
|
98
|
-
if (process.env["MOLECULER_CONFIG"]) {
|
|
99
|
-
filePath = path.isAbsolute(process.env["MOLECULER_CONFIG"])
|
|
100
|
-
? process.env["MOLECULER_CONFIG"]
|
|
101
|
-
: path.resolve(process.cwd(), process.env["MOLECULER_CONFIG"]);
|
|
102
|
-
}
|
|
103
|
-
else if (this.flags.config) {
|
|
104
|
-
filePath = path.isAbsolute(this.flags.config)
|
|
105
|
-
? this.flags.config
|
|
106
|
-
: path.resolve(process.cwd(), this.flags.config);
|
|
107
|
-
if (!fs_1.default.existsSync(filePath)) {
|
|
108
|
-
filePath = null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.mjs"))) {
|
|
112
|
-
filePath = path.resolve(process.cwd(), "moleculer.config.mjs");
|
|
113
|
-
}
|
|
114
|
-
if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.js"))) {
|
|
115
|
-
filePath = path.resolve(process.cwd(), "moleculer.config.js");
|
|
116
|
-
}
|
|
117
|
-
if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.json"))) {
|
|
118
|
-
filePath = path.resolve(process.cwd(), "moleculer.config.json");
|
|
119
|
-
}
|
|
120
|
-
if (filePath) {
|
|
121
|
-
if (!fs_1.default.existsSync(filePath))
|
|
122
|
-
return Promise.reject(new Error(`Config file not found: ${filePath}`));
|
|
123
|
-
const ext = path.extname(filePath);
|
|
124
|
-
switch (ext) {
|
|
125
|
-
case ".json":
|
|
126
|
-
case ".js":
|
|
127
|
-
case ".mjs":
|
|
128
|
-
case ".ts": {
|
|
129
|
-
let content = require(filePath);
|
|
130
|
-
if (moleculer_1.Utils.isFunction(content))
|
|
131
|
-
content = await content.call(this);
|
|
132
|
-
this.configFile = await start_1.Start.mergeConfig(content);
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
default:
|
|
136
|
-
return Promise.reject(new Error(`Not supported file extension: ${ext}`));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
normalizeEnvValue(value) {
|
|
142
|
-
if (value.toLowerCase() === "true" || value.toLowerCase() === "false") {
|
|
143
|
-
value = value === "true";
|
|
144
|
-
}
|
|
145
|
-
else if (!isNaN(value)) {
|
|
146
|
-
value = Number(value);
|
|
147
|
-
}
|
|
148
|
-
return value;
|
|
149
|
-
}
|
|
150
|
-
overwriteFromEnv(obj, prefix) {
|
|
151
|
-
Object.keys(obj).forEach(key => {
|
|
152
|
-
const envName = ((prefix ? prefix + "_" : "") + key).toUpperCase();
|
|
153
|
-
if (process.env[envName]) {
|
|
154
|
-
obj[key] = this.normalizeEnvValue(process.env[envName]);
|
|
155
|
-
}
|
|
156
|
-
if (moleculer_1.Utils.isPlainObject(obj[key]))
|
|
157
|
-
obj[key] = this.overwriteFromEnv(obj[key], (prefix ? prefix + "_" : "") + key);
|
|
158
|
-
});
|
|
159
|
-
if (prefix == null) {
|
|
160
|
-
const moleculerPrefix = "MOL_";
|
|
161
|
-
Object.keys(process.env)
|
|
162
|
-
.filter(key => key.startsWith(moleculerPrefix))
|
|
163
|
-
.map(key => ({
|
|
164
|
-
key,
|
|
165
|
-
withoutPrefix: key.substring(moleculerPrefix.length)
|
|
166
|
-
}))
|
|
167
|
-
.forEach(variable => {
|
|
168
|
-
const dotted = variable.withoutPrefix
|
|
169
|
-
.split("__")
|
|
170
|
-
.map(level => level.toLocaleLowerCase())
|
|
171
|
-
.map(level => level
|
|
172
|
-
.split("_")
|
|
173
|
-
.map((value, index) => {
|
|
174
|
-
if (index == 0) {
|
|
175
|
-
return value;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
return value[0].toUpperCase() + value.substring(1);
|
|
179
|
-
}
|
|
180
|
-
})
|
|
181
|
-
.join(""))
|
|
182
|
-
.join(".");
|
|
183
|
-
obj = moleculer_1.Utils.dotSet(obj, dotted, this.normalizeEnvValue(process.env[variable.key]));
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
return obj;
|
|
187
|
-
}
|
|
188
|
-
mergeOptions() {
|
|
189
|
-
this.config = lodash_1.default.defaultsDeep(this.configFile, moleculer_1.ServiceBroker.defaultOptions);
|
|
190
|
-
this.config = this.overwriteFromEnv(this.config);
|
|
191
|
-
if (this.flags.silent)
|
|
192
|
-
this.config.logger = false;
|
|
193
|
-
if (this.flags.hot)
|
|
194
|
-
this.config.steedosHotReload = true;
|
|
195
|
-
}
|
|
196
|
-
isDirectory(p) {
|
|
36
|
+
const command_1 = require("@oclif/command");
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class StartCommand extends command_1.Command {
|
|
40
|
+
async run() {
|
|
197
41
|
try {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
42
|
+
this.checkModuleExists("@builder6/server");
|
|
43
|
+
this.checkModuleExists("@steedos/server");
|
|
44
|
+
const serverPath = require.resolve("@builder6/server");
|
|
45
|
+
const steedosPath = require.resolve("@steedos/server");
|
|
46
|
+
const appConfig = require(steedosPath);
|
|
47
|
+
const server = require(serverPath);
|
|
48
|
+
const { version } = require("@steedos/server/package.json");
|
|
49
|
+
const i18n = require("@steedos/i18n");
|
|
50
|
+
global.t = i18n.t;
|
|
51
|
+
global._ = require("underscore");
|
|
52
|
+
process.env.STEEDOS_VERSION = version;
|
|
53
|
+
server.bootstrap(appConfig);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.error(error.message, { exit: 1 });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
checkModuleExists(moduleName) {
|
|
205
60
|
try {
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
catch (_) {
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
async loadServices() {
|
|
213
|
-
this.watchFolders.length = 0;
|
|
214
|
-
const fileMask = this.flags.mask || "**/*.service.js";
|
|
215
|
-
const serviceDir = process.env.SERVICEDIR || "";
|
|
216
|
-
const svcDir = path.isAbsolute(serviceDir)
|
|
217
|
-
? serviceDir
|
|
218
|
-
: path.resolve(process.cwd(), serviceDir);
|
|
219
|
-
let patterns = this.servicePaths;
|
|
220
|
-
if (process.env.SERVICES || process.env.SERVICEDIR) {
|
|
221
|
-
if (this.isDirectory(svcDir) && !process.env.SERVICES) {
|
|
222
|
-
this.broker.loadServices(svcDir, fileMask);
|
|
223
|
-
if (this.config.hotReload) {
|
|
224
|
-
this.watchFolders.push(svcDir);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
else if (process.env.SERVICES) {
|
|
228
|
-
patterns = Array.isArray(process.env.SERVICES)
|
|
229
|
-
? process.env.SERVICES
|
|
230
|
-
: process.env.SERVICES.split(",");
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (patterns.length > 0) {
|
|
234
|
-
let serviceFiles = [];
|
|
235
|
-
patterns
|
|
236
|
-
.map(s => s.trim())
|
|
237
|
-
.forEach(p => {
|
|
238
|
-
const skipping = p[0] == "!";
|
|
239
|
-
if (skipping)
|
|
240
|
-
p = p.slice(1);
|
|
241
|
-
if (p.startsWith("npm:")) {
|
|
242
|
-
this.loadNpmModule(p.slice(4));
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
let files;
|
|
246
|
-
const svcPath = path.isAbsolute(p) ? p : path.resolve(svcDir, p);
|
|
247
|
-
if (this.isDirectory(svcPath)) {
|
|
248
|
-
if (this.config.hotReload) {
|
|
249
|
-
this.watchFolders.push(svcPath);
|
|
250
|
-
}
|
|
251
|
-
files = glob_1.default.sync(svcPath + "/" + fileMask, { absolute: true });
|
|
252
|
-
if (files.length == 0)
|
|
253
|
-
return this.broker.logger.warn(kleur_1.default
|
|
254
|
-
.yellow()
|
|
255
|
-
.bold(`There is no service files in directory: '${svcPath}'`));
|
|
256
|
-
}
|
|
257
|
-
else if (this.isServiceFile(svcPath)) {
|
|
258
|
-
files = [svcPath.replace(/\\/g, "/")];
|
|
259
|
-
}
|
|
260
|
-
else if (this.isServiceFile(svcPath + ".service.js")) {
|
|
261
|
-
files = [svcPath.replace(/\\/g, "/") + ".service.js"];
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
files = glob_1.default.sync(p, { cwd: svcDir, absolute: true });
|
|
265
|
-
if (files.length == 0)
|
|
266
|
-
this.broker.logger.warn(kleur_1.default
|
|
267
|
-
.yellow()
|
|
268
|
-
.bold(`There is no matched file for pattern: '${p}'`));
|
|
269
|
-
}
|
|
270
|
-
if (files && files.length > 0) {
|
|
271
|
-
if (skipping)
|
|
272
|
-
serviceFiles = serviceFiles.filter(f => files.indexOf(f) === -1);
|
|
273
|
-
else
|
|
274
|
-
serviceFiles.push(...files);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
await Promise.all(lodash_1.default.uniq(serviceFiles).map(async (f) => {
|
|
279
|
-
const content = require(f);
|
|
280
|
-
const svc = this.broker.createService(content);
|
|
281
|
-
svc.__filename = f;
|
|
282
|
-
}));
|
|
61
|
+
require.resolve(moduleName);
|
|
283
62
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
if (!stopping) {
|
|
289
|
-
if (process.env.NODE_ENV === "production" && code !== 0) {
|
|
290
|
-
logger.info(`The worker #${worker.id} has disconnected`);
|
|
291
|
-
logger.info(`Worker #${worker.id} restarting...`);
|
|
292
|
-
cluster_1.default.fork();
|
|
293
|
-
logger.info(`Worker #${worker.id} restarted`);
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
process.exit(code);
|
|
297
|
-
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const modulePath = path.join(process.cwd(), "node_modules", moduleName);
|
|
65
|
+
if (!fs.existsSync(modulePath)) {
|
|
66
|
+
throw new Error(`Required module '${moduleName}' is not installed. Please run 'npm install ${moduleName}'`);
|
|
298
67
|
}
|
|
299
|
-
|
|
300
|
-
const workerCount = Number.isInteger(instances) && instances > 0 ? instances : os_1.default.cpus().length;
|
|
301
|
-
logger.info(`Starting ${workerCount} workers...`);
|
|
302
|
-
for (let i = 0; i < workerCount; i++) {
|
|
303
|
-
cluster_1.default.fork();
|
|
304
|
-
}
|
|
305
|
-
stopSignals.forEach(function (signal) {
|
|
306
|
-
process.on(signal, () => {
|
|
307
|
-
logger.info(`Got ${signal}, stopping workers...`);
|
|
308
|
-
stopping = true;
|
|
309
|
-
cluster_1.default.disconnect(function () {
|
|
310
|
-
logger.info("All workers stopped, exiting.");
|
|
311
|
-
process.exit(0);
|
|
312
|
-
});
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
async loadHotReloadService() {
|
|
317
|
-
if (this.config.steedosHotReload) {
|
|
318
|
-
const content = require('../start/hotReload');
|
|
319
|
-
this.broker.createService(content);
|
|
68
|
+
throw new Error(`Failed to resolve module '${moduleName}'. ${err.message}`);
|
|
320
69
|
}
|
|
321
70
|
}
|
|
322
|
-
loadNpmModule(name) {
|
|
323
|
-
let svc = require(name);
|
|
324
|
-
return this.broker.createService(svc);
|
|
325
|
-
}
|
|
326
|
-
async startBroker() {
|
|
327
|
-
this.worker = cluster_1.default.worker;
|
|
328
|
-
if (this.worker) {
|
|
329
|
-
Object.assign(this.config, {
|
|
330
|
-
nodeID: (this.config.nodeID || moleculer_1.Utils.getNodeID()) + "-" + this.worker.id
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
this.broker = new moleculer_1.ServiceBroker(Object.assign({}, this.config));
|
|
334
|
-
this.broker.runner = this;
|
|
335
|
-
global.broker = this.broker;
|
|
336
|
-
await this.loadServices();
|
|
337
|
-
await this.loadHotReloadService();
|
|
338
|
-
if (this.watchFolders.length > 0)
|
|
339
|
-
this.broker.runner.folders = this.watchFolders;
|
|
340
|
-
return this.broker.start().then(() => {
|
|
341
|
-
if (this.flags.repl && (!this.worker || this.worker.id === 1))
|
|
342
|
-
this.broker.repl();
|
|
343
|
-
return this.broker;
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
_runMoleculer() {
|
|
347
|
-
return Promise.resolve()
|
|
348
|
-
.then(() => this.loadConfigFile())
|
|
349
|
-
.then(() => this.mergeOptions())
|
|
350
|
-
.then(() => this.startBroker())
|
|
351
|
-
.catch(err => {
|
|
352
|
-
logger.error(err);
|
|
353
|
-
process.exit(1);
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
restartBroker() {
|
|
357
|
-
if (this.broker && this.broker.started) {
|
|
358
|
-
return this.broker
|
|
359
|
-
.stop()
|
|
360
|
-
.catch(err => {
|
|
361
|
-
logger.error("Error while stopping ServiceBroker.");
|
|
362
|
-
logger.error(err);
|
|
363
|
-
})
|
|
364
|
-
.then(() => this._runMoleculer());
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
return this._runMoleculer();
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
async run() {
|
|
371
|
-
const { args, flags } = this.parse(StartCommand);
|
|
372
|
-
this.watchFolders = [];
|
|
373
|
-
this.flags = null;
|
|
374
|
-
this.configFile = null;
|
|
375
|
-
this.config = null;
|
|
376
|
-
this.servicePaths = null;
|
|
377
|
-
this.broker = null;
|
|
378
|
-
this.worker = null;
|
|
379
|
-
this.flags = flags;
|
|
380
|
-
this.servicePaths = lodash_1.default.compact(Object.values(args));
|
|
381
|
-
if (this.flags.instances !== undefined && cluster_1.default.isMaster) {
|
|
382
|
-
this.instances = Number.parseInt(this.flags.instances) ? Number.parseInt(this.flags.instances) : 'max';
|
|
383
|
-
return this.startWorkers(this.instances);
|
|
384
|
-
}
|
|
385
|
-
return this._runMoleculer();
|
|
386
|
-
}
|
|
387
71
|
}
|
|
388
|
-
StartCommand.
|
|
389
|
-
{
|
|
390
|
-
name: 'servicePaths',
|
|
391
|
-
required: false,
|
|
392
|
-
default: '',
|
|
393
|
-
description: 'service files or directories or glob masks',
|
|
394
|
-
}
|
|
395
|
-
];
|
|
396
|
-
StartCommand.description = `run steedos projects`;
|
|
397
|
-
StartCommand.flags = {
|
|
398
|
-
repl: flags.boolean({ char: 'r', default: false, description: 'If true, it switches to REPL mode after broker started.' }),
|
|
399
|
-
silent: flags.boolean({ char: 's', default: false, description: 'Disable the broker logger. It prints nothing to the console.' }),
|
|
400
|
-
hot: flags.boolean({ char: 'h', default: false, description: 'Hot reload services when they change.' }),
|
|
401
|
-
config: flags.string({ char: 'c', default: 'steedos.config.js', description: 'Load configuration file from a different path or a different filename.' }),
|
|
402
|
-
env: flags.boolean({ char: 'e', default: false, description: 'Load environment variables from the ‘.env’ file from the current folder.' }),
|
|
403
|
-
envfile: flags.string({ char: 'E', description: 'Load environment variables from the specified file.' }),
|
|
404
|
-
instances: flags.string({ char: 'i', description: 'Launch [number] node instances or max for all cpu cores (with cluster module)' })
|
|
405
|
-
};
|
|
72
|
+
StartCommand.description = `Run Steedos projects`;
|
|
406
73
|
module.exports = StartCommand;
|
|
407
74
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,YAAa,SAAQ,iBAAO;IAChC,KAAK,CAAC,GAAG;QACP,IAAI,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAE1C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAEvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAGnC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAG5D,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAElB,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;YAEtC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,UAAkB;QAC1C,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,oBAAoB,UAAU,+CAA+C,UAAU,GAAG,CAC3F,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CACb,6BAA6B,UAAU,MAAM,GAAG,CAAC,OAAO,EAAE,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,YAAY,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "steedos-cli",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.71",
|
|
4
4
|
"description": "Develop and run your enterprise apps in miniutes",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@oclif/command": "^1.8.16",
|
|
34
34
|
"@oclif/config": "^1.8.3",
|
|
35
35
|
"@oclif/plugin-help": "^5.1.12",
|
|
36
|
-
"@steedos/metadata-core": "3.0.0-beta.
|
|
37
|
-
"@steedos/metadata-registrar": "3.0.0-beta.
|
|
36
|
+
"@steedos/metadata-core": "3.0.0-beta.71",
|
|
37
|
+
"@steedos/metadata-registrar": "3.0.0-beta.71",
|
|
38
38
|
"archiver": "^5.0.2",
|
|
39
39
|
"chalk": "2.4.2",
|
|
40
40
|
"change-case": "^3.1.0",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"publishConfig": {
|
|
78
78
|
"access": "public"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "32cf4e8cafda54a3e30a46a6506eaa021fa25fb7"
|
|
81
81
|
}
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const _ = require("lodash")
|
|
3
|
-
|
|
4
|
-
global.__startDate = new Date();
|
|
5
|
-
|
|
6
|
-
require('dotenv-flow').config(
|
|
7
|
-
{
|
|
8
|
-
path: process.cwd(),
|
|
9
|
-
silent: true
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
if (_.isEmpty(process.env.STEEDOS_TENANT_ENABLE_PASSWORD_LOGIN)) {
|
|
13
|
-
process.env.STEEDOS_TENANT_ENABLE_PASSWORD_LOGIN = 'true';
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (_.isEmpty(process.env.STEEDOS_UNPKG_URL)) {
|
|
17
|
-
process.env.STEEDOS_UNPKG_URL = 'https://unpkg.steedos.cn';
|
|
18
|
-
}
|
|
19
|
-
process.env.STEEDOS_UNPKG_URL = process.env.STEEDOS_UNPKG_URL.replace(/\/+$/, "");
|
|
20
|
-
|
|
21
|
-
if (_.isEmpty(process.env.STEEDOS_BUILDER_URL)) {
|
|
22
|
-
process.env.STEEDOS_BUILDER_URL = 'https://6-3.builder.steedos.com';
|
|
23
|
-
}
|
|
24
|
-
process.env.STEEDOS_BUILDER_URL = process.env.STEEDOS_BUILDER_URL.replace(/\/+$/, "");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (_.isEmpty(process.env.STEEDOS_AMIS_VERSION)) {
|
|
28
|
-
process.env.STEEDOS_AMIS_VERSION = '6.3.0-patch.3';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (_.isEmpty(process.env.STEEDOS_AMIS_URL)) {
|
|
32
|
-
// process.env.STEEDOS_AMIS_URL = process.env.STEEDOS_UNPKG_URL + '/amis@' + process.env.STEEDOS_AMIS_VERSION;
|
|
33
|
-
// 默认加载 https://unpkg.steedos.cn/@steedos-widgets/amis@3.6.3-patch.2, STEEDOS_AMIS_VERSION可变更版本号
|
|
34
|
-
process.env.STEEDOS_AMIS_URL = process.env.STEEDOS_UNPKG_URL + '/@steedos-widgets/amis@' + process.env.STEEDOS_AMIS_VERSION;
|
|
35
|
-
} else {
|
|
36
|
-
process.env.STEEDOS_AMIS_URL = process.env.STEEDOS_AMIS_URL.replace("https://unpkg.com", process.env.STEEDOS_UNPKG_URL)
|
|
37
|
-
}
|
|
38
|
-
process.env.STEEDOS_AMIS_URL = process.env.STEEDOS_AMIS_URL.replace(/\/+$/, "");
|
|
39
|
-
|
|
40
|
-
if (_.isEmpty(process.env.STEEDOS_WIDGETS_VERSION)) {
|
|
41
|
-
process.env.STEEDOS_WIDGETS_VERSION = 'v6.10.1-beta.13';
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (_.isEmpty(process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS)) {
|
|
45
|
-
const widgetsVersion = process.env.STEEDOS_WIDGETS_VERSION;
|
|
46
|
-
const unpkgUrl = process.env.STEEDOS_UNPKG_URL;
|
|
47
|
-
let steedosPublicPageAsseturls = `${unpkgUrl}/@steedos-widgets/amis-object@${widgetsVersion}/dist/assets.json`;
|
|
48
|
-
if (!_.isEmpty(process.env.STEEDOS_WIDGETS_ADDITIONAL)) {
|
|
49
|
-
process.env.STEEDOS_WIDGETS_ADDITIONAL.split(',').forEach(additional => {
|
|
50
|
-
const lastAtIndex = additional.lastIndexOf('@');
|
|
51
|
-
let packageName = additional;
|
|
52
|
-
let versionToUse = widgetsVersion;
|
|
53
|
-
|
|
54
|
-
// 只有当 '@' 不在字符串开头(即大于0的位置)才视为存在版本信息
|
|
55
|
-
if (lastAtIndex > 0) {
|
|
56
|
-
packageName = additional.substring(0, lastAtIndex);
|
|
57
|
-
versionToUse = additional.substring(lastAtIndex + 1) || widgetsVersion;
|
|
58
|
-
}
|
|
59
|
-
steedosPublicPageAsseturls += `,${unpkgUrl}/${packageName}@${versionToUse}/dist/assets.json`;
|
|
60
|
-
})
|
|
61
|
-
}
|
|
62
|
-
process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS = steedosPublicPageAsseturls
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (_.isEmpty(process.env.SERIALIZER)) {
|
|
66
|
-
process.env.SERIALIZER = 'JSON'
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (_.isEmpty(process.env.ROOT_URL)) {
|
|
70
|
-
console.error("ERROR: Environment variable ROOT_URL is not defined.")
|
|
71
|
-
process.env.ROOT_URL = "http://localhost"
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
process.env.ROOT_URL = process.env.ROOT_URL.replace(/\/+$/, "");
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Steedos ServiceBroker configuration file
|
|
78
|
-
*
|
|
79
|
-
* More info about options:
|
|
80
|
-
* https://moleculer.services/docs/0.14/configuration.html
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* Overwriting options in production:
|
|
84
|
-
* ================================
|
|
85
|
-
* You can overwrite any option with environment variables.
|
|
86
|
-
* For example to overwrite the "logLevel" value, use `LOGLEVEL=warn` env var.
|
|
87
|
-
* To overwrite a nested parameter, e.g. retryPolicy.retries, use `RETRYPOLICY_RETRIES=10` env var.
|
|
88
|
-
*
|
|
89
|
-
* To overwrite broker’s deeply nested default options, which are not presented in "steedos.config.js",
|
|
90
|
-
* use the `MOL_` prefix and double underscore `__` for nested properties in .env file.
|
|
91
|
-
* For example, to set the cacher prefix to `MYCACHE`, you should declare an env var as `MOL_CACHER__OPTIONS__PREFIX=mycache`.
|
|
92
|
-
* It will set this:
|
|
93
|
-
* {
|
|
94
|
-
* cacher: {
|
|
95
|
-
* options: {
|
|
96
|
-
* prefix: "mycache"
|
|
97
|
-
* }
|
|
98
|
-
* }
|
|
99
|
-
* }
|
|
100
|
-
*/
|
|
101
|
-
module.exports = {
|
|
102
|
-
// Namespace of nodes to segment your nodes on the same network.
|
|
103
|
-
namespace: "steedos",
|
|
104
|
-
// Unique node identifier. Must be unique in a namespace.
|
|
105
|
-
nodeID: process.env.STEEDOS_NODEID,
|
|
106
|
-
// Custom metadata store. Store here what you want. Accessing: `this.broker.metadata`
|
|
107
|
-
metadata: {},
|
|
108
|
-
|
|
109
|
-
// Enable/disable logging or use custom logger. More info: https://moleculer.services/docs/0.14/logging.html
|
|
110
|
-
// Available logger types: "Console", "File", "Pino", "Winston", "Bunyan", "debug", "Log4js", "Datadog"
|
|
111
|
-
logger: [{
|
|
112
|
-
type: "Console",
|
|
113
|
-
options: {
|
|
114
|
-
// level: "warn",
|
|
115
|
-
// Using colors on the output
|
|
116
|
-
colors: true,
|
|
117
|
-
// Print module names with different colors (like docker-compose for containers)
|
|
118
|
-
moduleColors: false,
|
|
119
|
-
// Line formatter. It can be "json", "short", "simple", "full", a `Function` or a template string like "{timestamp} {level} {nodeID}/{mod}: {msg}"
|
|
120
|
-
formatter: "full",
|
|
121
|
-
// Custom object printer. If not defined, it uses the `util.inspect` method.
|
|
122
|
-
objectPrinter: null,
|
|
123
|
-
// Auto-padding the module name in order to messages begin at the same column.
|
|
124
|
-
autoPadding: false
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: "File",
|
|
129
|
-
options: {
|
|
130
|
-
// Logging level
|
|
131
|
-
// level: "warn",
|
|
132
|
-
// Folder path to save files. You can use {nodeID} & {namespace} variables.
|
|
133
|
-
folder: "./logs",
|
|
134
|
-
// Filename template. You can use {date}, {nodeID} & {namespace} variables.
|
|
135
|
-
filename: "{nodeID}-{date}.log",
|
|
136
|
-
// Line formatter. It can be "json", "short", "simple", "full", a `Function` or a template string like "{timestamp} {level} {nodeID}/{mod}: {msg}"
|
|
137
|
-
formatter: "json",
|
|
138
|
-
// Custom object printer. If not defined, it uses the `util.inspect` method.
|
|
139
|
-
objectPrinter: null,
|
|
140
|
-
// End of line. Default values comes from the OS settings.
|
|
141
|
-
eol: "\n",
|
|
142
|
-
// File appending interval in milliseconds.
|
|
143
|
-
interval: 1 * 1000
|
|
144
|
-
},
|
|
145
|
-
},
|
|
146
|
-
],
|
|
147
|
-
|
|
148
|
-
// Default log level for built-in console logger. It can be overwritten in logger options above.
|
|
149
|
-
// Available values: trace, debug, info, warn, error, fatal
|
|
150
|
-
logLevel: process.env.STEEDOS_LOG_LEVEL || "warn",
|
|
151
|
-
|
|
152
|
-
// Define transporter.
|
|
153
|
-
// More info: https://moleculer.services/docs/0.14/networking.html
|
|
154
|
-
// Note: During the development, you don't need to define it because all services will be loaded locally.
|
|
155
|
-
// In production you can set it via `TRANSPORTER=nats://localhost:4222` environment variable.
|
|
156
|
-
transporter: function () {
|
|
157
|
-
try {
|
|
158
|
-
return JSON.parse(process.env.STEEDOS_TRANSPORTER);
|
|
159
|
-
} catch (error) {
|
|
160
|
-
return process.env.STEEDOS_TRANSPORTER;
|
|
161
|
-
}
|
|
162
|
-
}(), //process.env.STEEDOS_TRANSPORTER,
|
|
163
|
-
|
|
164
|
-
// Define a cacher.
|
|
165
|
-
// More info: https://moleculer.services/docs/0.14/caching.html
|
|
166
|
-
cacher: function () {
|
|
167
|
-
try {
|
|
168
|
-
return JSON.parse(process.env.STEEDOS_CACHER);
|
|
169
|
-
} catch (error) {
|
|
170
|
-
return process.env.STEEDOS_CACHER;
|
|
171
|
-
}
|
|
172
|
-
}(),
|
|
173
|
-
|
|
174
|
-
// Define a serializer.
|
|
175
|
-
// Available values: "JSON", "Avro", "ProtoBuf", "MsgPack", "Notepack", "Thrift".
|
|
176
|
-
// More info: https://moleculer.services/docs/0.14/networking.html#Serialization
|
|
177
|
-
serializer: process.env.SERIALIZER || "JSON",
|
|
178
|
-
|
|
179
|
-
// Number of milliseconds to wait before reject a request with a RequestTimeout error. Disabled: 0
|
|
180
|
-
requestTimeout: 0,
|
|
181
|
-
|
|
182
|
-
// Retry policy settings. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Retry
|
|
183
|
-
retryPolicy: {
|
|
184
|
-
// Enable feature
|
|
185
|
-
enabled: false,
|
|
186
|
-
// Count of retries
|
|
187
|
-
retries: 5,
|
|
188
|
-
// First delay in milliseconds.
|
|
189
|
-
delay: 100,
|
|
190
|
-
// Maximum delay in milliseconds.
|
|
191
|
-
maxDelay: 1000,
|
|
192
|
-
// Backoff factor for delay. 2 means exponential backoff.
|
|
193
|
-
factor: 2,
|
|
194
|
-
// A function to check failed requests.
|
|
195
|
-
check: err => err && !!err.retryable
|
|
196
|
-
},
|
|
197
|
-
|
|
198
|
-
// Limit of calling level. If it reaches the limit, broker will throw an MaxCallLevelError error. (Infinite loop protection)
|
|
199
|
-
maxCallLevel: 100,
|
|
200
|
-
|
|
201
|
-
// Number of seconds to send heartbeat packet to other nodes.
|
|
202
|
-
heartbeatInterval: 10,
|
|
203
|
-
// Number of seconds to wait before setting node to unavailable status.
|
|
204
|
-
heartbeatTimeout: 30,
|
|
205
|
-
|
|
206
|
-
// Cloning the params of context if enabled. High performance impact, use it with caution!
|
|
207
|
-
contextParamsCloning: false,
|
|
208
|
-
|
|
209
|
-
// Tracking requests and waiting for running requests before shuting down. More info: https://moleculer.services/docs/0.14/context.html#Context-tracking
|
|
210
|
-
tracking: {
|
|
211
|
-
// Enable feature
|
|
212
|
-
enabled: false,
|
|
213
|
-
// Number of milliseconds to wait before shuting down the process.
|
|
214
|
-
shutdownTimeout: 5000,
|
|
215
|
-
},
|
|
216
|
-
|
|
217
|
-
// Disable built-in request & emit balancer. (Transporter must support it, as well.). More info: https://moleculer.services/docs/0.14/networking.html#Disabled-balancer
|
|
218
|
-
disableBalancer: false,
|
|
219
|
-
|
|
220
|
-
// Settings of Service Registry. More info: https://moleculer.services/docs/0.14/registry.html
|
|
221
|
-
registry: {
|
|
222
|
-
// Define balancing strategy. More info: https://moleculer.services/docs/0.14/balancing.html
|
|
223
|
-
// Available values: "RoundRobin", "Random", "CpuUsage", "Latency", "Shard"
|
|
224
|
-
strategy: "RoundRobin",
|
|
225
|
-
// Enable local action call preferring. Always call the local action instance if available.
|
|
226
|
-
preferLocal: true
|
|
227
|
-
},
|
|
228
|
-
|
|
229
|
-
// Settings of Circuit Breaker. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Circuit-Breaker
|
|
230
|
-
circuitBreaker: {
|
|
231
|
-
// Enable feature
|
|
232
|
-
enabled: false,
|
|
233
|
-
// Threshold value. 0.5 means that 50% should be failed for tripping.
|
|
234
|
-
threshold: 0.5,
|
|
235
|
-
// Minimum request count. Below it, CB does not trip.
|
|
236
|
-
minRequestCount: 20,
|
|
237
|
-
// Number of seconds for time window.
|
|
238
|
-
windowTime: 60,
|
|
239
|
-
// Number of milliseconds to switch from open to half-open state
|
|
240
|
-
halfOpenTime: 10 * 1000,
|
|
241
|
-
// A function to check failed requests.
|
|
242
|
-
check: err => err && err.code >= 500
|
|
243
|
-
},
|
|
244
|
-
|
|
245
|
-
// Settings of bulkhead feature. More info: https://moleculer.services/docs/0.14/fault-tolerance.html#Bulkhead
|
|
246
|
-
bulkhead: {
|
|
247
|
-
// Enable feature.
|
|
248
|
-
enabled: false,
|
|
249
|
-
// Maximum concurrent executions.
|
|
250
|
-
concurrency: 10,
|
|
251
|
-
// Maximum size of queue
|
|
252
|
-
maxQueueSize: 100,
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
// Enable action & event parameter validation. More info: https://moleculer.services/docs/0.14/validating.html
|
|
256
|
-
validator: true,
|
|
257
|
-
|
|
258
|
-
errorHandler: null,
|
|
259
|
-
|
|
260
|
-
// Enable/disable built-in metrics function. More info: https://moleculer.services/docs/0.14/metrics.html
|
|
261
|
-
metrics: {
|
|
262
|
-
enabled: false,
|
|
263
|
-
// Available built-in reporters: "Console", "CSV", "Event", "Prometheus", "Datadog", "StatsD"
|
|
264
|
-
reporter: [
|
|
265
|
-
{
|
|
266
|
-
type: "Prometheus",
|
|
267
|
-
options: {
|
|
268
|
-
// HTTP port
|
|
269
|
-
port: 3030,
|
|
270
|
-
// HTTP URL path
|
|
271
|
-
path: "/metrics",
|
|
272
|
-
// Default labels which are appended to all metrics labels
|
|
273
|
-
defaultLabels: registry => ({
|
|
274
|
-
namespace: registry.broker.namespace,
|
|
275
|
-
nodeID: registry.broker.nodeID
|
|
276
|
-
})
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
]
|
|
280
|
-
},
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
tracing: {
|
|
284
|
-
enabled: true,
|
|
285
|
-
tags: {
|
|
286
|
-
action: {
|
|
287
|
-
// Add `user.userId` value from `ctx.meta`
|
|
288
|
-
meta: ["user.userId", "user.spaceId"],
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
exporter: {
|
|
292
|
-
type: "Event",
|
|
293
|
-
options: {
|
|
294
|
-
// Name of event
|
|
295
|
-
eventName: "$tracing.spans",
|
|
296
|
-
// Send event when a span started
|
|
297
|
-
sendStartSpan: false,
|
|
298
|
-
// Send event when a span finished
|
|
299
|
-
sendFinishSpan: true,
|
|
300
|
-
// Broadcast or emit event
|
|
301
|
-
broadcast: false,
|
|
302
|
-
// Event groups
|
|
303
|
-
groups: null,
|
|
304
|
-
// Sending time interval in seconds
|
|
305
|
-
interval: 5,
|
|
306
|
-
// Custom span object converter before sending
|
|
307
|
-
spanConverter: null,
|
|
308
|
-
// Default tags. They will be added into all span tags.
|
|
309
|
-
defaultTags: null
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
},
|
|
313
|
-
|
|
314
|
-
// Register custom middlewares
|
|
315
|
-
middlewares: [],
|
|
316
|
-
|
|
317
|
-
// Register custom REPL commands.
|
|
318
|
-
replCommands: null,
|
|
319
|
-
|
|
320
|
-
skipProcessEventRegistration: true,
|
|
321
|
-
|
|
322
|
-
// Called after broker created.
|
|
323
|
-
created(broker) {
|
|
324
|
-
// Clear all cache entries
|
|
325
|
-
broker.logger.warn('Clear all cache entries on startup.')
|
|
326
|
-
broker.cacher.clean();
|
|
327
|
-
console.log(`Clear all cache entries on startup===1>`)
|
|
328
|
-
const objectql = require(require.resolve('@steedos/objectql', { paths: [process.cwd()] }));
|
|
329
|
-
console.log(`Clear all cache entries on startup===2>`)
|
|
330
|
-
objectql.broker.init(broker);
|
|
331
|
-
console.log(`Clear all cache entries on startup===init>`)
|
|
332
|
-
//TODO 此处不考虑多个node服务模式.
|
|
333
|
-
process.on('SIGTERM', close.bind(broker, 'SIGTERM'));
|
|
334
|
-
process.on('SIGINT', close.bind(broker, 'SIGINT'));
|
|
335
|
-
async function close(signal) {
|
|
336
|
-
try {
|
|
337
|
-
await this.cacher.clean(); //TODO 此clean 有问题,如果在启动过程中就停止服务,则会清理不干净。尝试试用reids client 原生clean(flushdb)。
|
|
338
|
-
await this.cacher.close();
|
|
339
|
-
} catch (error) {
|
|
340
|
-
// console.log(`error`, error)
|
|
341
|
-
}
|
|
342
|
-
console.log(`[${signal}]服务已停止: namespace: ${this.namespace}, nodeID: ${this.nodeID}`);
|
|
343
|
-
process.exit(0);
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
|
|
347
|
-
// Called after broker started.
|
|
348
|
-
started(broker) {
|
|
349
|
-
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
// Called after broker stopped.
|
|
353
|
-
stopped(broker) {
|
|
354
|
-
|
|
355
|
-
}
|
|
356
|
-
};
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
datasources:
|
|
2
|
-
default:
|
|
3
|
-
connection:
|
|
4
|
-
url: ${MONGO_URL}
|
|
5
|
-
objectFiles:
|
|
6
|
-
- "./steedos-app/**"
|
|
7
|
-
public:
|
|
8
|
-
NODE_ENV: ${NODE_ENV}
|
|
9
|
-
amis:
|
|
10
|
-
map_ak: ${STEEDOS_AMIS_MAP_KEY}
|
|
11
|
-
map_vendor: ${STEEDOS_AMIS_MAP_VENDER}
|
|
12
|
-
cfs:
|
|
13
|
-
store: ${STEEDOS_CFS_STORE}
|
|
14
|
-
templateSpaceId: 'template'
|
|
15
|
-
enable_saas: ${STEEDOS_TENANT_ENABLE_SAAS}
|
|
16
|
-
use_open_api: ${STEEDOS_PUBLIC_USE_OPEN_API}
|
|
17
|
-
webservices:
|
|
18
|
-
jsreport:
|
|
19
|
-
url: ${JSREPORT_URL}
|
|
20
|
-
urlProvideForJsreport: ${JSREPORT_TO_ACQUIRE_DATA_URL}
|
|
21
|
-
app_exchange:
|
|
22
|
-
url: ${STEEDOS_APP_EXCHANGE_URL}
|
|
23
|
-
analytics:
|
|
24
|
-
enabled: ${STEEDOS_PUBLIC_ANALYTICS_ENABLED}
|
|
25
|
-
baidu:
|
|
26
|
-
id: ${STEEDOS_PUBLIC_ANALYTICS_BAIDU_ID}
|
|
27
|
-
posthog:
|
|
28
|
-
id: ${STEEDOS_PUBLIC_ANALYTICS_POSTHOG_ID}
|
|
29
|
-
api_host: ${STEEDOS_PUBLIC_ANALYTICS_POSTHOG_API_HOST}
|
|
30
|
-
workflow:
|
|
31
|
-
traceShowSignImage: ${STEEDOS_WORKFLOW_TRACE_SHOW_SIGN_IMAGE}
|
|
32
|
-
sentry:
|
|
33
|
-
enabled: ${STEEDOS_SENTRY_ENABLED}
|
|
34
|
-
dsn: ${STEEDOS_SENTRY_DSN}
|
|
35
|
-
vconsole:
|
|
36
|
-
url: ${STEEDOS_PUBLIC_SCRIPT_VCONSOLE}
|
|
37
|
-
accounts:
|
|
38
|
-
username_min_length: ${STEEDOS_ACCOUNT_USERNAME_MIN_LENGTH}
|
|
39
|
-
UTF8_Names_Validation: ${STEEDOS_ACCOUNT_NAME_VALIDATION}
|
|
40
|
-
enable_query_auth: ${STEEDOS_ENABLE_QUERY_AUTH}
|
|
41
|
-
cfs:
|
|
42
|
-
store: ${STEEDOS_CFS_STORE}
|
|
43
|
-
local:
|
|
44
|
-
folder: ${STEEDOS_STORAGE_DIR}
|
|
45
|
-
aliyun:
|
|
46
|
-
region: ${STEEDOS_CFS_ALIYUN_REGION}
|
|
47
|
-
bucket: ${STEEDOS_CFS_ALIYUN_BUCKET}
|
|
48
|
-
folder: ${STEEDOS_CFS_ALIYUN_FOLDER}
|
|
49
|
-
accessKeyId: ${STEEDOS_CFS_ALIYUN_ACCESSKEYID}
|
|
50
|
-
secretAccessKey: ${STEEDOS_CFS_ALIYUN_SECRETACCESSKEY}
|
|
51
|
-
aws:
|
|
52
|
-
region: ${STEEDOS_CFS_AWS_S3_REGION}
|
|
53
|
-
endpoint: ${STEEDOS_CFS_AWS_S3_ENDPOINT}
|
|
54
|
-
bucket: ${STEEDOS_CFS_AWS_S3_BUCKET}
|
|
55
|
-
accessKeyId: ${STEEDOS_CFS_AWS_S3_ACCESS_KEY_ID}
|
|
56
|
-
secretAccessKey: ${STEEDOS_CFS_AWS_S3_SECRET_ACCESS_KEY}
|
|
57
|
-
s3ForcePathStyle: ${STEEDOS_CFS_AWS_S3_FORCE_PATH_STYLE}
|
|
58
|
-
signatureVersion: ${STEEDOS_CFS_AWS_S3_SIGNATURE_VERSION}
|
|
59
|
-
steedosCloud:
|
|
60
|
-
region: ${STEEDOS_CFS_CLOUD_REGION}
|
|
61
|
-
bucket: ${STEEDOS_CFS_CLOUD_BUCKET}
|
|
62
|
-
endpoint: ${STEEDOS_CFS_CLOUD_ENDPOINT}
|
|
63
|
-
accessKeyId: ${STEEDOS_CFS_CLOUD_ACCESSKEYID}
|
|
64
|
-
secretAccessKey: ${STEEDOS_CFS_CLOUD_SECRETACCESSKEY}
|
|
65
|
-
tenant:
|
|
66
|
-
_id: ${STEEDOS_TENANT_ID}
|
|
67
|
-
name: 华炎魔方
|
|
68
|
-
logo_url: ${STEEDOS_TENANT_LOGO_URL}
|
|
69
|
-
logo_square_url: ${STEEDOS_TENANT_LOGO_SQUARE_URL}
|
|
70
|
-
background_url: ${STEEDOS_TENANT_BACKGROUND_URL}
|
|
71
|
-
enable_activation: ${STEEDOS_TENANT_ENABLE_ACTIVATION} # 启用初始化向导
|
|
72
|
-
enable_register: ${STEEDOS_TENANT_ENABLE_REGISTER} # 启用注册功能 true / false
|
|
73
|
-
enable_forget_password: ${STEEDOS_TENANT_ENABLE_FORGET_PASSWORD}
|
|
74
|
-
enable_create_tenant: ${STEEDOS_TENANT_ENABLE_SAAS}
|
|
75
|
-
enable_password_login: ${STEEDOS_TENANT_ENABLE_PASSWORD_LOGIN}
|
|
76
|
-
enable_mobile_code_login: ${STEEDOS_TENANT_ENABLE_MOBILE_CODE_LOGIN}
|
|
77
|
-
enable_email_code_login: ${STEEDOS_TENANT_ENABLE_EMAIL_CODE_LOGIN}
|
|
78
|
-
enable_bind_email: ${STEEDOS_TENANT_ENABLE_BIND_EMAIL}
|
|
79
|
-
enable_bind_mobile: ${STEEDOS_TENANT_ENABLE_BIND_MOBILE}
|
|
80
|
-
tokenSecret: ${STEEDOS_TENANT_TOKEN_SECRET} # 默认值 43位字符串, 每次重启服务时生成新的值
|
|
81
|
-
accessTokenExpiresIn: ${STEEDOS_TENANT_ACCESS_TOKEN_EXPIRES_IN} # 默认值 90d
|
|
82
|
-
refreshTokenExpiresIn: ${STEEDOS_TENANT_REFRESH_TOKEN_EXPIRES_IN} # 默认值 7d
|
|
83
|
-
sms:
|
|
84
|
-
qcloud:
|
|
85
|
-
smsqueue_interval: ${STEEDOS_CRON_SMSQUEUE_INTERVAL}
|
|
86
|
-
sdkappid: ${STEEDOS_SMS_QCLOUD_SDKAPPID}
|
|
87
|
-
appkey: ${STEEDOS_SMS_QCLOUD_APPKEY}
|
|
88
|
-
signname: ${STEEDOS_SMS_QCLOUD_SIGNNAME}
|
|
89
|
-
email:
|
|
90
|
-
from: ${STEEDOS_EMAIL_FROM}
|
|
91
|
-
url: ${STEEDOS_EMAIL_URL}
|
|
92
|
-
host: ${STEEDOS_EMAIL_HOST}
|
|
93
|
-
port: ${STEEDOS_EMAIL_PORT}
|
|
94
|
-
username: ${STEEDOS_EMAIL_USERNAME}
|
|
95
|
-
password: ${STEEDOS_EMAIL_PASSWORD}
|
|
96
|
-
secure: ${STEEDOS_EMAIL_PASSWORD}
|
|
97
|
-
signname: ${STEEDOS_EMAIL_SIGNNAME}
|
|
98
|
-
cron:
|
|
99
|
-
enabled: ${STEEDOS_CRON_ENABLED}
|
|
100
|
-
instancerecordqueue_interval: ${STEEDOS_CRON_INSTANCERECORDQUEUE_INTERVAL}
|
|
101
|
-
mailqueue_interval: ${STEEDOS_CRON_MAILQUEUE_INTERVAL}
|
|
102
|
-
push_interval: ${STEEDOS_CRON_PUSH_INTERVAL}
|
|
103
|
-
webhookqueue_interval: ${STEEDOS_CRON_WEBHOOKQUEUE_INTERVAL}
|
|
104
|
-
build_index: ${STEEDOS_CRON_BUILD_INDEX}
|
|
105
|
-
objectwebhooksqueue_interval: ${STEEDOS_CRON_OBJECTWEBHOOKSQUEUE_INTERVAL}
|
|
106
|
-
workflow_rule_interval: ${STEEDOS_CRON_WORKFLOW_RULE}
|
|
107
|
-
instances_stat:
|
|
108
|
-
schedule: ${STEEDOS_INSTANCES_STAT_SCHEDULE}
|
|
109
|
-
dingtalk:
|
|
110
|
-
api_Key: ${APIKEY}
|
|
111
|
-
log_path: ${DING_LOGPATH}
|
|
112
|
-
qywx:
|
|
113
|
-
api_Key: ${APIKEY}
|
|
114
|
-
log_path: ${QYWX_LOGPATH}
|
|
115
|
-
push:
|
|
116
|
-
apn:
|
|
117
|
-
keyData: ${STEEDOS_PUSH_APN_DATA}
|
|
118
|
-
certData: ${STEEDOS_PUSH_APN_DATA}
|
|
119
|
-
gcm:
|
|
120
|
-
apiKey: ${STEEDOS_GCM_APIKEY}
|
|
121
|
-
projectNumber: ${STEEDOS_GCM_PROJECT_NUMBER}
|
|
122
|
-
xinge:
|
|
123
|
-
accessId: ${STEEDOS_PUSH_XINGE_ACCESSID}
|
|
124
|
-
secretKey: ${STEEDOS_PUSH_XINGE_SECRETKEY}
|
|
125
|
-
huawei:
|
|
126
|
-
appId: ${STEEDOS_PUSH_HUAWEI_APPID}
|
|
127
|
-
appSecret: ${STEEDOS_PUSH_HUAWEI_APPSECRET}
|
|
128
|
-
appPkgName: ${STEEDOS_PUSH_HUAWEI_APPPKGNAME}
|
|
129
|
-
debug: ${STEEDOS_PUSH_HUAWEI_DEBUG}
|
|
130
|
-
mi:
|
|
131
|
-
appSecret: ${STEEDOS_PUSH_MI_APPSECRET}
|
|
132
|
-
production: ${STEEDOS_PUSH_MI_PRODUCTION}
|
|
133
|
-
pay:
|
|
134
|
-
weixin:
|
|
135
|
-
appid: ${PAY_WEIXIN_APPID}
|
|
136
|
-
mch_id: ${PAY_WEIXIN_MCH_ID}
|
|
137
|
-
partner_key: ${PAY_WEIXIN_PARTNER_KEY}
|
|
138
|
-
sso:
|
|
139
|
-
oidc:
|
|
140
|
-
config_url: ${STEEDOS_IDENTITY_OIDC_CONFIG_URL}
|
|
141
|
-
client_id: ${STEEDOS_IDENTITY_OIDC_CLIENT_ID}
|
|
142
|
-
client_secret: ${STEEDOS_IDENTITY_OIDC_CLIENT_SECRET}
|
|
143
|
-
name: ${STEEDOS_IDENTITY_OIDC_NAME}
|
|
144
|
-
label: ${STEEDOS_IDENTITY_OIDC_LABEL}
|
|
145
|
-
logo: ${STEEDOS_IDENTITY_OIDC_LOGO}
|
|
146
|
-
require_local_account: ${STEEDOS_IDENTITY_OIDC_REQUIRE_LOCAL_ACCOUNT}
|
|
147
|
-
db:
|
|
148
|
-
auto_migrate: ${STEEDOS_DB_AUTO_MIGRATE}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/start/hotReload.js
DELETED
|
@@ -1,48 +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 = require('path');
|
|
7
|
-
const chokidar = require('chokidar');
|
|
8
|
-
const underscore_1 = __importDefault(require("underscore"));
|
|
9
|
-
let changePackages = [];
|
|
10
|
-
let timeoutId = null;
|
|
11
|
-
const reloadPackage = (broker, packagePath) => {
|
|
12
|
-
changePackages.push(packagePath);
|
|
13
|
-
if (!timeoutId) {
|
|
14
|
-
clearTimeout(timeoutId);
|
|
15
|
-
}
|
|
16
|
-
timeoutId = setTimeout(() => {
|
|
17
|
-
const _changePackages = underscore_1.default.clone(changePackages);
|
|
18
|
-
changePackages = [];
|
|
19
|
-
underscore_1.default.each(underscore_1.default.uniq(underscore_1.default.compact(_changePackages)), (_packagePath) => {
|
|
20
|
-
const packageJson = require(path.join(_packagePath, 'package.json'));
|
|
21
|
-
if (packageJson) {
|
|
22
|
-
const servicePath = path.join(_packagePath, 'package.service.js');
|
|
23
|
-
const serviceJson = require(servicePath);
|
|
24
|
-
if (serviceJson) {
|
|
25
|
-
delete require.cache[require.resolve(servicePath)];
|
|
26
|
-
}
|
|
27
|
-
broker.call(`@steedos/service-project.reloadPackage`, { module: packageJson.name });
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}, 3000);
|
|
31
|
-
};
|
|
32
|
-
module.exports = {
|
|
33
|
-
name: "steedos-dx-develop",
|
|
34
|
-
namespace: "steedos",
|
|
35
|
-
started() {
|
|
36
|
-
const appPath = path.join(process.cwd(), 'steedos-app');
|
|
37
|
-
chokidar.watch(appPath).on('change', (_path, stats) => {
|
|
38
|
-
reloadPackage(this.broker, appPath);
|
|
39
|
-
});
|
|
40
|
-
const packagesPath = path.join(process.cwd(), 'steedos-packages');
|
|
41
|
-
chokidar.watch(packagesPath).on('change', (_path, stats) => {
|
|
42
|
-
const rP = path.relative(packagesPath, _path);
|
|
43
|
-
const packagePath = path.join(packagesPath, rP.split(path.sep)[0]);
|
|
44
|
-
reloadPackage(this.broker, packagePath);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=hotReload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hotReload.js","sourceRoot":"","sources":["../../src/start/hotReload.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AACb,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACrC,4DAA2B;AAC3B,IAAI,cAAc,GAAa,EAAE,CAAC;AAElC,IAAI,SAAS,GAAQ,IAAI,CAAC;AAE1B,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IAC1C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAA;IAC3B,CAAC;IACD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QACxB,MAAM,eAAe,GAAG,oBAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAChD,cAAc,GAAG,EAAE,CAAA;QACnB,oBAAC,CAAC,IAAI,CAAC,oBAAC,CAAC,IAAI,CAAC,oBAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;YACxD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;YACrE,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;gBACjE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzC,IAAI,WAAW,EAAE,CAAC;oBACd,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;YACvF,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,EAAE,IAAI,CAAC,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,OAAO,GAAG;IACb,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,SAAS;IACpB,OAAO;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAA;QACvD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAClD,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAClE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAClE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"}
|
package/dist/start/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare class Start {
|
|
2
|
-
static loadSettings: (filePath: string) => any;
|
|
3
|
-
static loadDefaultSettings(): any;
|
|
4
|
-
static loadProjectSettings(): any;
|
|
5
|
-
static loadDefaultConfig(): Promise<any>;
|
|
6
|
-
static mergeConfig(projectConfig: any): Promise<any>;
|
|
7
|
-
static mergeSchemaLifecycleHandlers(src: any, target: any): unknown[];
|
|
8
|
-
static flatten(arr: any): any;
|
|
9
|
-
}
|
package/dist/start/index.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Start = void 0;
|
|
4
|
-
const lodash_1 = require("lodash");
|
|
5
|
-
const util_1 = require("../util");
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
const clone = require("clone");
|
|
9
|
-
const validator = require('validator');
|
|
10
|
-
const yaml = require('js-yaml');
|
|
11
|
-
function calcString(str, content = process.env) {
|
|
12
|
-
if (!(0, lodash_1.isString)(str)) {
|
|
13
|
-
return str;
|
|
14
|
-
}
|
|
15
|
-
let calcFun = null;
|
|
16
|
-
var reg = /(\${[^{}]*\})/g;
|
|
17
|
-
let rev = str.replace(reg, function (m, $1) {
|
|
18
|
-
return $1.replace(/\{\s*/, "{args[\"").replace(/\s*\}/, "\"]}");
|
|
19
|
-
});
|
|
20
|
-
eval(`calcFun = function(args){return \`${rev}\`}`);
|
|
21
|
-
let val = calcFun.call({}, content);
|
|
22
|
-
if ((0, lodash_1.isString)(val) && val) {
|
|
23
|
-
return val.replace(/\\r/g, '\r').replace(/\\n/g, '\n').replace(/undefined/g, '');
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function calcSteedosConfig(config) {
|
|
30
|
-
(0, lodash_1.each)(config, (v, k) => {
|
|
31
|
-
if ((0, util_1.isJsonMap)(v)) {
|
|
32
|
-
let _d = (0, lodash_1.get)(config, k);
|
|
33
|
-
if ((0, util_1.isJsonMap)(_d)) {
|
|
34
|
-
config[k] = calcSteedosConfig(clone(_d));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
config[k] = calcString(v);
|
|
38
|
-
if (k && (0, lodash_1.isString)(k) && k.startsWith('enable_') && config[k] && (0, lodash_1.isString)(config[k])) {
|
|
39
|
-
config[k] = validator.toBoolean(config[k], true);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
config[k] = calcString(v);
|
|
45
|
-
if (k && (0, lodash_1.isString)(k) && k.startsWith('enable_') && config[k] && (0, lodash_1.isString)(config[k])) {
|
|
46
|
-
config[k] = validator.toBoolean(config[k], true);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
return config;
|
|
51
|
-
}
|
|
52
|
-
class Start {
|
|
53
|
-
static loadDefaultSettings() {
|
|
54
|
-
const filePath = path.join(__dirname, '../', '../', "default.steedos.settings.yml");
|
|
55
|
-
if (fs.existsSync(filePath) && !fs.statSync(filePath).isDirectory()) {
|
|
56
|
-
return Start.loadSettings(filePath);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
static loadProjectSettings() {
|
|
63
|
-
let configPath = path.join((0, util_1.getBaseDirectory)(), 'steedos-config.yml');
|
|
64
|
-
if (fs.existsSync(configPath) && !fs.statSync(configPath).isDirectory()) {
|
|
65
|
-
return Start.loadSettings(configPath);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
static async loadDefaultConfig() {
|
|
69
|
-
const filePath = path.join(__dirname, '../', '../', "default.steedos.config.js");
|
|
70
|
-
if (filePath) {
|
|
71
|
-
if (!fs.existsSync(filePath))
|
|
72
|
-
return Promise.reject(new Error(`Config file not found: ${filePath}`));
|
|
73
|
-
return require(filePath);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
static async mergeConfig(projectConfig) {
|
|
77
|
-
const loadProjectSettings = Start.loadProjectSettings();
|
|
78
|
-
const _projectConfig = (0, lodash_1.defaultsDeep)(projectConfig, { settings: loadProjectSettings });
|
|
79
|
-
const defaultConfig = await Start.loadDefaultConfig();
|
|
80
|
-
const defaultSettings = Start.loadDefaultSettings();
|
|
81
|
-
const _defaultConfig = (0, lodash_1.defaultsDeep)(defaultConfig, { settings: defaultSettings });
|
|
82
|
-
const res = (0, lodash_1.cloneDeep)(_defaultConfig);
|
|
83
|
-
const mods = (0, lodash_1.cloneDeep)(_projectConfig);
|
|
84
|
-
Object.keys(mods).forEach(key => {
|
|
85
|
-
if (["created", "started", "stopped"].indexOf(key) !== -1) {
|
|
86
|
-
const functionArray = Start.mergeSchemaLifecycleHandlers(mods[key], res[key]);
|
|
87
|
-
if (functionArray.length > 0) {
|
|
88
|
-
res[key] = function (broker) {
|
|
89
|
-
functionArray.forEach((fn) => fn.call(this, broker));
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else if (["tracing", "metrics", "logger"].indexOf(key) !== -1) {
|
|
94
|
-
res[key] = mods[key];
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
res[key] = (0, lodash_1.defaultsDeep)({ [key]: mods[key] }, { [key]: res[key] })[key];
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return res;
|
|
101
|
-
}
|
|
102
|
-
static mergeSchemaLifecycleHandlers(src, target) {
|
|
103
|
-
return (0, lodash_1.compact)(Start.flatten([target, src]));
|
|
104
|
-
}
|
|
105
|
-
static flatten(arr) {
|
|
106
|
-
return Array.prototype.reduce.call(arr, (a, b) => a.concat(b), []);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
exports.Start = Start;
|
|
110
|
-
Start.loadSettings = (filePath) => {
|
|
111
|
-
try {
|
|
112
|
-
const settings = yaml.load(fs.readFileSync(filePath, 'utf8'));
|
|
113
|
-
if (settings.env) {
|
|
114
|
-
(0, lodash_1.each)(settings.env, function (item, key) {
|
|
115
|
-
process.env[key] = calcString(item);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
let emailConfig = settings.email;
|
|
119
|
-
if (emailConfig) {
|
|
120
|
-
if (!emailConfig.url && emailConfig.host && emailConfig.port && emailConfig.username && emailConfig.password) {
|
|
121
|
-
let url = `smtps://${emailConfig.username}:${emailConfig.password}@${emailConfig.host}:${emailConfig.port}/`;
|
|
122
|
-
emailConfig.url = url;
|
|
123
|
-
}
|
|
124
|
-
if (emailConfig.url) {
|
|
125
|
-
process.env["MAIL_URL"] = calcString(emailConfig.url);
|
|
126
|
-
}
|
|
127
|
-
if (emailConfig.from) {
|
|
128
|
-
process.env["MAIL_FROM"] = calcString(emailConfig.from);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const res = calcSteedosConfig(settings);
|
|
132
|
-
if (res) {
|
|
133
|
-
res.setTenant = (tenant) => {
|
|
134
|
-
res.tenant = (0, lodash_1.defaultsDeep)(tenant, res.tenant);
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
return res;
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
console.error('loadFile error', filePath, error);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
//# sourceMappingURL=index.js.map
|
package/dist/start/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/start/index.ts"],"names":[],"mappings":"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"}
|