steedos-cli 2.5.20-beta.8 → 2.5.20

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.
@@ -29,7 +29,7 @@ if(_.isEmpty(process.env.STEEDOS_AMIS_URL)) {
29
29
  process.env.STEEDOS_AMIS_URL = process.env.STEEDOS_AMIS_URL.replace(/\/+$/, "");
30
30
 
31
31
  if(_.isEmpty(process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS)) {
32
- process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS = process.env.STEEDOS_UNPKG_URL + "/@steedos-widgets/amis-object@1.3.9/dist/assets.json";
32
+ process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS = process.env.STEEDOS_UNPKG_URL + "/@steedos-widgets/amis-object@1.3.19/dist/assets.json";
33
33
  }
34
34
 
35
35
  if(_.isEmpty(process.env.SERIALIZER)){
@@ -94,12 +94,14 @@ email:
94
94
  secure: ${STEEDOS_EMAIL_PASSWORD}
95
95
  signname: ${STEEDOS_EMAIL_SIGNNAME}
96
96
  cron:
97
+ enabled: ${STEEDOS_CRON_ENABLED}
97
98
  instancerecordqueue_interval: ${STEEDOS_CRON_INSTANCERECORDQUEUE_INTERVAL}
98
99
  mailqueue_interval: ${STEEDOS_CRON_MAILQUEUE_INTERVAL}
99
100
  push_interval: ${STEEDOS_CRON_PUSH_INTERVAL}
100
101
  webhookqueue_interval: ${STEEDOS_CRON_WEBHOOKQUEUE_INTERVAL}
101
102
  build_index: ${STEEDOS_CRON_BUILD_INDEX}
102
103
  objectwebhooksqueue_interval: ${STEEDOS_CRON_OBJECTWEBHOOKSQUEUE_INTERVAL}
104
+ workflow_rule_interval: ${STEEDOS_CRON_WORKFLOW_RULE}
103
105
  instances_stat:
104
106
  schedule: ${STEEDOS_INSTANCES_STAT_SCHEDULE}
105
107
  dingtalk:
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const { Command, flags } = require('@oclif/command');
30
+ const path = require("path");
31
+ const moleculer_1 = require("moleculer");
32
+ const fs_1 = __importDefault(require("fs"));
33
+ const glob_1 = __importDefault(require("glob"));
34
+ const lodash_1 = __importDefault(require("lodash"));
35
+ const os_1 = __importDefault(require("os"));
36
+ const cluster_1 = __importDefault(require("cluster"));
37
+ const kleur_1 = __importDefault(require("kleur"));
38
+ const stopSignals = [
39
+ "SIGHUP",
40
+ "SIGINT",
41
+ "SIGQUIT",
42
+ "SIGILL",
43
+ "SIGTRAP",
44
+ "SIGABRT",
45
+ "SIGBUS",
46
+ "SIGFPE",
47
+ "SIGUSR1",
48
+ "SIGSEGV",
49
+ "SIGUSR2",
50
+ "SIGTERM"
51
+ ];
52
+ const logger = {
53
+ info(message) {
54
+ console.log(kleur_1.default.grey("[Runner]"), kleur_1.default.green().bold(message));
55
+ },
56
+ error(err) {
57
+ if (err instanceof Error)
58
+ console.error(kleur_1.default.grey("[Runner]"), kleur_1.default.red().bold(err.message), err);
59
+ else
60
+ console.error(kleur_1.default.grey("[Runner]"), kleur_1.default.red().bold(err));
61
+ }
62
+ };
63
+ class StartCommand extends Command {
64
+ async loadEnvFile() {
65
+ if (this.flags.env || this.flags.envfile) {
66
+ try {
67
+ const dotenv = await Promise.resolve().then(() => __importStar(require("dotenv")));
68
+ if (this.flags.envfile)
69
+ dotenv.config({ path: this.flags.envfile });
70
+ else
71
+ dotenv.config();
72
+ }
73
+ catch (err) {
74
+ throw new Error("The 'dotenv' package is missing! Please install it with 'npm install dotenv --save' command.");
75
+ }
76
+ }
77
+ }
78
+ fixDriveLetterCase(s) {
79
+ if (s && process.platform === "win32" && s.match(/^[A-Z]:/g)) {
80
+ return s.charAt(0).toLowerCase() + s.slice(1);
81
+ }
82
+ return s;
83
+ }
84
+ async loadConfigFile() {
85
+ let filePath;
86
+ if (process.env["MOLECULER_CONFIG"]) {
87
+ filePath = path.isAbsolute(process.env["MOLECULER_CONFIG"])
88
+ ? process.env["MOLECULER_CONFIG"]
89
+ : path.resolve(process.cwd(), process.env["MOLECULER_CONFIG"]);
90
+ }
91
+ else if (this.flags.config) {
92
+ filePath = path.isAbsolute(this.flags.config)
93
+ ? this.flags.config
94
+ : path.resolve(process.cwd(), this.flags.config);
95
+ if (!fs_1.default.existsSync(filePath)) {
96
+ filePath = null;
97
+ }
98
+ }
99
+ if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.mjs"))) {
100
+ filePath = path.resolve(process.cwd(), "moleculer.config.mjs");
101
+ }
102
+ if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.js"))) {
103
+ filePath = path.resolve(process.cwd(), "moleculer.config.js");
104
+ }
105
+ if (!filePath && fs_1.default.existsSync(path.resolve(process.cwd(), "moleculer.config.json"))) {
106
+ filePath = path.resolve(process.cwd(), "moleculer.config.json");
107
+ }
108
+ if (filePath) {
109
+ if (!fs_1.default.existsSync(filePath))
110
+ return Promise.reject(new Error(`Config file not found: ${filePath}`));
111
+ const ext = path.extname(filePath);
112
+ switch (ext) {
113
+ case ".json":
114
+ case ".js":
115
+ case ".mjs":
116
+ case ".ts": {
117
+ let content = require(filePath);
118
+ if (moleculer_1.Utils.isFunction(content))
119
+ content = await content.call(this);
120
+ break;
121
+ }
122
+ default:
123
+ return Promise.reject(new Error(`Not supported file extension: ${ext}`));
124
+ }
125
+ }
126
+ return;
127
+ }
128
+ normalizeEnvValue(value) {
129
+ if (value.toLowerCase() === "true" || value.toLowerCase() === "false") {
130
+ value = value === "true";
131
+ }
132
+ else if (!isNaN(value)) {
133
+ value = Number(value);
134
+ }
135
+ return value;
136
+ }
137
+ overwriteFromEnv(obj, prefix) {
138
+ Object.keys(obj).forEach(key => {
139
+ const envName = ((prefix ? prefix + "_" : "") + key).toUpperCase();
140
+ if (process.env[envName]) {
141
+ obj[key] = this.normalizeEnvValue(process.env[envName]);
142
+ }
143
+ if (moleculer_1.Utils.isPlainObject(obj[key]))
144
+ obj[key] = this.overwriteFromEnv(obj[key], (prefix ? prefix + "_" : "") + key);
145
+ });
146
+ if (prefix == null) {
147
+ const moleculerPrefix = "MOL_";
148
+ Object.keys(process.env)
149
+ .filter(key => key.startsWith(moleculerPrefix))
150
+ .map(key => ({
151
+ key,
152
+ withoutPrefix: key.substring(moleculerPrefix.length)
153
+ }))
154
+ .forEach(variable => {
155
+ const dotted = variable.withoutPrefix
156
+ .split("__")
157
+ .map(level => level.toLocaleLowerCase())
158
+ .map(level => level
159
+ .split("_")
160
+ .map((value, index) => {
161
+ if (index == 0) {
162
+ return value;
163
+ }
164
+ else {
165
+ return value[0].toUpperCase() + value.substring(1);
166
+ }
167
+ })
168
+ .join(""))
169
+ .join(".");
170
+ obj = moleculer_1.Utils.dotSet(obj, dotted, this.normalizeEnvValue(process.env[variable.key]));
171
+ });
172
+ }
173
+ return obj;
174
+ }
175
+ mergeOptions() {
176
+ this.config = lodash_1.default.defaultsDeep(this.configFile, moleculer_1.ServiceBroker.defaultOptions);
177
+ this.config = this.overwriteFromEnv(this.config);
178
+ if (this.flags.silent)
179
+ this.config.logger = false;
180
+ if (this.flags.hot)
181
+ this.config.steedosHotReload = true;
182
+ }
183
+ isDirectory(p) {
184
+ try {
185
+ return fs_1.default.lstatSync(p).isDirectory();
186
+ }
187
+ catch (_) {
188
+ }
189
+ return false;
190
+ }
191
+ isServiceFile(p) {
192
+ try {
193
+ return !fs_1.default.lstatSync(p).isDirectory();
194
+ }
195
+ catch (_) {
196
+ }
197
+ return false;
198
+ }
199
+ async loadServices() {
200
+ this.watchFolders.length = 0;
201
+ const fileMask = this.flags.mask || "**/*.service.js";
202
+ const serviceDir = process.env.SERVICEDIR || "";
203
+ const svcDir = path.isAbsolute(serviceDir)
204
+ ? serviceDir
205
+ : path.resolve(process.cwd(), serviceDir);
206
+ let patterns = this.servicePaths;
207
+ if (process.env.SERVICES || process.env.SERVICEDIR) {
208
+ if (this.isDirectory(svcDir) && !process.env.SERVICES) {
209
+ this.broker.loadServices(svcDir, fileMask);
210
+ if (this.config.hotReload) {
211
+ this.watchFolders.push(svcDir);
212
+ }
213
+ }
214
+ else if (process.env.SERVICES) {
215
+ patterns = Array.isArray(process.env.SERVICES)
216
+ ? process.env.SERVICES
217
+ : process.env.SERVICES.split(",");
218
+ }
219
+ }
220
+ if (patterns.length > 0) {
221
+ let serviceFiles = [];
222
+ patterns
223
+ .map(s => s.trim())
224
+ .forEach(p => {
225
+ const skipping = p[0] == "!";
226
+ if (skipping)
227
+ p = p.slice(1);
228
+ if (p.startsWith("npm:")) {
229
+ this.loadNpmModule(p.slice(4));
230
+ }
231
+ else {
232
+ let files;
233
+ const svcPath = path.isAbsolute(p) ? p : path.resolve(svcDir, p);
234
+ if (this.isDirectory(svcPath)) {
235
+ if (this.config.hotReload) {
236
+ this.watchFolders.push(svcPath);
237
+ }
238
+ files = glob_1.default.sync(svcPath + "/" + fileMask, { absolute: true });
239
+ if (files.length == 0)
240
+ return this.broker.logger.warn(kleur_1.default
241
+ .yellow()
242
+ .bold(`There is no service files in directory: '${svcPath}'`));
243
+ }
244
+ else if (this.isServiceFile(svcPath)) {
245
+ files = [svcPath.replace(/\\/g, "/")];
246
+ }
247
+ else if (this.isServiceFile(svcPath + ".service.js")) {
248
+ files = [svcPath.replace(/\\/g, "/") + ".service.js"];
249
+ }
250
+ else {
251
+ files = glob_1.default.sync(p, { cwd: svcDir, absolute: true });
252
+ if (files.length == 0)
253
+ this.broker.logger.warn(kleur_1.default
254
+ .yellow()
255
+ .bold(`There is no matched file for pattern: '${p}'`));
256
+ }
257
+ if (files && files.length > 0) {
258
+ if (skipping)
259
+ serviceFiles = serviceFiles.filter(f => files.indexOf(f) === -1);
260
+ else
261
+ serviceFiles.push(...files);
262
+ }
263
+ }
264
+ });
265
+ await Promise.all(lodash_1.default.uniq(serviceFiles).map(async (f) => {
266
+ try {
267
+ const content = require(f);
268
+ const svc = this.broker.createService(content);
269
+ svc.__filename = f;
270
+ }
271
+ catch (error) {
272
+ this.broker.logger.error(kleur_1.default.red().bold(`Failed to create service. The file is ${f} and the error: ${error.message}`));
273
+ }
274
+ }));
275
+ }
276
+ }
277
+ startWorkers(instances) {
278
+ let stopping = false;
279
+ cluster_1.default.on("exit", function (worker, code) {
280
+ if (!stopping) {
281
+ if (process.env.NODE_ENV === "production" && code !== 0) {
282
+ logger.info(`The worker #${worker.id} has disconnected`);
283
+ logger.info(`Worker #${worker.id} restarting...`);
284
+ cluster_1.default.fork();
285
+ logger.info(`Worker #${worker.id} restarted`);
286
+ }
287
+ else {
288
+ process.exit(code);
289
+ }
290
+ }
291
+ });
292
+ const workerCount = Number.isInteger(instances) && instances > 0 ? instances : os_1.default.cpus().length;
293
+ logger.info(`Starting ${workerCount} workers...`);
294
+ for (let i = 0; i < workerCount; i++) {
295
+ cluster_1.default.fork();
296
+ }
297
+ stopSignals.forEach(function (signal) {
298
+ process.on(signal, () => {
299
+ logger.info(`Got ${signal}, stopping workers...`);
300
+ stopping = true;
301
+ cluster_1.default.disconnect(function () {
302
+ logger.info("All workers stopped, exiting.");
303
+ process.exit(0);
304
+ });
305
+ });
306
+ });
307
+ }
308
+ async loadHotReloadService() {
309
+ if (this.config.steedosHotReload) {
310
+ const content = require('../start/hotReload');
311
+ this.broker.createService(content);
312
+ }
313
+ }
314
+ loadNpmModule(name) {
315
+ let svc = require(name);
316
+ return this.broker.createService(svc);
317
+ }
318
+ async startBroker() {
319
+ this.worker = cluster_1.default.worker;
320
+ if (this.worker) {
321
+ Object.assign(this.config, {
322
+ nodeID: (this.config.nodeID || moleculer_1.Utils.getNodeID()) + "-" + this.worker.id
323
+ });
324
+ }
325
+ this.broker = new moleculer_1.ServiceBroker(Object.assign({}, this.config));
326
+ this.broker.runner = this;
327
+ global.broker = this.broker;
328
+ await this.loadServices();
329
+ await this.loadHotReloadService();
330
+ if (this.watchFolders.length > 0)
331
+ this.broker.runner.folders = this.watchFolders;
332
+ return this.broker.start().then(() => {
333
+ if (this.flags.repl && (!this.worker || this.worker.id === 1))
334
+ this.broker.repl();
335
+ return this.broker;
336
+ });
337
+ }
338
+ _runMoleculer() {
339
+ return Promise.resolve()
340
+ .then(() => this.loadConfigFile())
341
+ .then(() => this.mergeOptions())
342
+ .then(() => this.startBroker())
343
+ .catch(err => {
344
+ logger.error(err);
345
+ process.exit(1);
346
+ });
347
+ }
348
+ restartBroker() {
349
+ if (this.broker && this.broker.started) {
350
+ return this.broker
351
+ .stop()
352
+ .catch(err => {
353
+ logger.error("Error while stopping ServiceBroker.");
354
+ logger.error(err);
355
+ })
356
+ .then(() => this._runMoleculer());
357
+ }
358
+ else {
359
+ return this._runMoleculer();
360
+ }
361
+ }
362
+ async run() {
363
+ const { args, flags, argv } = this.parse(StartCommand);
364
+ this.watchFolders = [];
365
+ this.flags = null;
366
+ this.configFile = null;
367
+ this.config = null;
368
+ this.servicePaths = null;
369
+ this.broker = null;
370
+ this.worker = null;
371
+ this.flags = flags;
372
+ this.servicePaths = lodash_1.default.compact(Object.values(argv));
373
+ if (this.flags.instances !== undefined && cluster_1.default.isMaster) {
374
+ this.instances = Number.parseInt(this.flags.instances) ? Number.parseInt(this.flags.instances) : 'max';
375
+ return this.startWorkers(this.instances);
376
+ }
377
+ return this._runMoleculer();
378
+ }
379
+ }
380
+ StartCommand.strict = false;
381
+ StartCommand.args = [
382
+ {
383
+ name: 'servicePaths',
384
+ required: false,
385
+ default: '',
386
+ description: 'service files or directories or glob masks',
387
+ }
388
+ ];
389
+ StartCommand.description = `run steedos packages`;
390
+ StartCommand.flags = {
391
+ repl: flags.boolean({ char: 'r', default: false, description: 'If true, it switches to REPL mode after broker started.' }),
392
+ silent: flags.boolean({ char: 's', default: false, description: 'Disable the broker logger. It prints nothing to the console.' }),
393
+ hot: flags.boolean({ char: 'h', default: false, description: 'Hot reload services when they change.' }),
394
+ config: flags.string({ char: 'c', default: 'steedos.config.js', description: 'Load configuration file from a different path or a different filename.' }),
395
+ env: flags.boolean({ char: 'e', default: false, description: 'Load environment variables from the ‘.env’ file from the current folder.' }),
396
+ envfile: flags.string({ char: 'E', description: 'Load environment variables from the specified file.' }),
397
+ instances: flags.string({ char: 'i', description: 'Launch [number] node instances or max for all cpu cores (with cluster module)' })
398
+ };
399
+ module.exports = StartCommand;
400
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/package/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":"2.5.20-beta.8","commands":{"i18n":{"id":"i18n","description":"sync i18n resources","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"serverDir":{"name":"serverDir","type":"option","char":"s","description":"Steedos Server Dir"},"packageDir":{"name":"packageDir","type":"option","char":"p","description":"Steedos Package Dir"}},"args":[{"name":"name","description":"language","required":true}]},"start":{"id":"start","description":"run steedos projects","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"repl":{"name":"repl","type":"boolean","char":"r","description":"If true, it switches to REPL mode after broker started.","allowNo":false},"silent":{"name":"silent","type":"boolean","char":"s","description":"Disable the broker logger. It prints nothing to the console.","allowNo":false},"hot":{"name":"hot","type":"boolean","char":"h","description":"Hot reload services when they change.","allowNo":false},"config":{"name":"config","type":"option","char":"c","description":"Load configuration file from a different path or a different filename.","default":"steedos.config.js"},"env":{"name":"env","type":"boolean","char":"e","description":"Load environment variables from the ‘.env’ file from the current folder.","allowNo":false},"envfile":{"name":"envfile","type":"option","char":"E","description":"Load environment variables from the specified file."},"instances":{"name":"instances","type":"option","char":"i","description":"Launch [number] node instances or max for all cpu cores (with cluster module)"}},"args":[{"name":"servicePaths","description":"service files or directories or glob masks","required":false,"default":""}]},"auth:login":{"id":"auth:login","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"username":{"name":"username","type":"option","char":"u","description":"user"},"password":{"name":"password","type":"option","char":"p","description":"password"}},"args":[]},"data:export":{"id":"data:export","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"objectName":{"name":"objectName","type":"option","char":"o","description":"objectName","required":true},"ids":{"name":"ids","type":"option","char":"i","description":"ids"},"fields":{"name":"fields","type":"option","char":"f","description":"fields"},"outputdir":{"name":"outputdir","type":"option","char":"d","description":"Directory to store generated files."},"prefix":{"name":"prefix","type":"option","char":"x","description":"Prefix of generated files."},"plan":{"name":"plan","type":"boolean","char":"p","description":"Generates multiple sObject tree files and a plan definition file for aggregated import.","allowNo":false}},"args":[]},"data:import":{"id":"data:import","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"sobjectfiles":{"name":"sobjectfiles","type":"option","char":"f","description":"Paths of JSON files containing a collection of record to insert. Either --sobjecttreefiles or --plan is required."},"plan":{"name":"plan","type":"option","char":"p","description":"Path to plan to insert multiple data files that have master-detail relationships. Either --sobjecttreefiles or --plan is required."}},"args":[]},"package:build":{"id":"package:build","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"appPath":{"name":"appPath","type":"option","char":"p","description":"appPath","required":true},"packageName":{"name":"packageName","type":"option","char":"n","description":"package name"},"loglevel":{"name":"loglevel","type":"option","char":"l","description":"(debug|info|warn) [default: warn] logging level for this command invocation"}},"args":[]},"source:config":{"id":"source:config","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"source:convert":{"id":"source:convert","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"oldFilesPath":{"name":"oldFilesPath","type":"option","char":"o","description":"oldFilesPath","required":true},"targetPath":{"name":"targetPath","type":"option","char":"t","description":"targetPath","required":true}},"args":[]},"source:delete":{"id":"source:delete","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"source:deploy":{"id":"source:deploy","description":" Use this command to deploy source (metadata that’s in source format)\nTo deploy metadata that’s in metadata format, use \"steedos source:deploy\".\n\nThe source you deploy overwrites the corresponding metadata on the server. This command does not attempt to merge your source with the versions on the server.\n\nExamples:\n\nTo deploy the source files in a directory:\n $ steedos source:deploy -p path/to/source\nTo deploy a specific custom object and the objects whose source is in a directory:\n $ steedos source:deploy -p \"path/to/custom/objects/myObject.object.yml\"\nor\"\n $ steedos source:deploy -p \"path/to/source/objects/my_object\"\n\n","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"sourcePath":{"name":"sourcePath","type":"option","char":"p","description":"Submit the local file under the path to the server"}},"args":[]},"source:retrieve":{"id":"source:retrieve","description":"Use this command to retrieve source (metadata that’s in source format)\nTo retrieve metadata that’s in metadata format, use \"steedos source:retrieve\".\n\nThe source you retrieve overwrites the corresponding source files in your local project. This command does not attempt to merge the source from your org with your local source files.\n\nExamples:\n\nTo retrieve the source files in a directory:\n $ steedos source:retrieve -p path/to/source\nTo retrieve a specific Custom object and the objects whose source is in a directory:\n $ steedos source:retrieve -p \"path/to/custom/objects/myObject.object.yml\"\nor\n $ steedos source:retrieve -p \"path/to/source/objects/my_object\"\nTo retrieve all Custom objects:\n $ steedos source:retrieve -m CustomObject\nTo retrieve a specific Custom object:\n $ steedos source:retrieve -m CustomObject:myObject\n\nTo retrieve all metadata components listed in a manifest:\n $ steedos source:retrieve -y path/to/package.yml\n\n\nMetaDataList:\n[\"ApprovalProcess\",\"Chart\",\"CustomAction\",\"CustomApplication\",\"CustomField\",\"CustomListview\",\"CustomObject\",\"CustomPermission\",\"CustomPermissionset\",\"CustomProfile\",\"CustomReport\",\"CustomValidationRule\",\"Dashboard\",\"Flow\",\"FlowRole\",\"Import\",\"Layout\",\"Page\",\"Process\",\"Query\",\"Question\",\"RestrictionRule\",\"Role\",\"ShareRule\",\"Tab\",\"Trigger\",\"Workflow\"]\n","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"serverDir":{"name":"serverDir","type":"option","char":"p","description":"generate request according to the path and update it"},"manifest":{"name":"manifest","type":"option","char":"y","description":"file path for manifest (package.yml) of components to deploy"},"metadata":{"name":"metadata","type":"option","char":"m","description":"metadata"}},"args":[]}}}
1
+ {"version":"2.5.20","commands":{"i18n":{"id":"i18n","description":"sync i18n resources","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"serverDir":{"name":"serverDir","type":"option","char":"s","description":"Steedos Server Dir"},"packageDir":{"name":"packageDir","type":"option","char":"p","description":"Steedos Package Dir"}},"args":[{"name":"name","description":"language","required":true}]},"start":{"id":"start","description":"run steedos projects","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"repl":{"name":"repl","type":"boolean","char":"r","description":"If true, it switches to REPL mode after broker started.","allowNo":false},"silent":{"name":"silent","type":"boolean","char":"s","description":"Disable the broker logger. It prints nothing to the console.","allowNo":false},"hot":{"name":"hot","type":"boolean","char":"h","description":"Hot reload services when they change.","allowNo":false},"config":{"name":"config","type":"option","char":"c","description":"Load configuration file from a different path or a different filename.","default":"steedos.config.js"},"env":{"name":"env","type":"boolean","char":"e","description":"Load environment variables from the ‘.env’ file from the current folder.","allowNo":false},"envfile":{"name":"envfile","type":"option","char":"E","description":"Load environment variables from the specified file."},"instances":{"name":"instances","type":"option","char":"i","description":"Launch [number] node instances or max for all cpu cores (with cluster module)"}},"args":[{"name":"servicePaths","description":"service files or directories or glob masks","required":false,"default":""}]},"auth:login":{"id":"auth:login","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"username":{"name":"username","type":"option","char":"u","description":"user"},"password":{"name":"password","type":"option","char":"p","description":"password"}},"args":[]},"data:export":{"id":"data:export","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"objectName":{"name":"objectName","type":"option","char":"o","description":"objectName","required":true},"ids":{"name":"ids","type":"option","char":"i","description":"ids"},"fields":{"name":"fields","type":"option","char":"f","description":"fields"},"outputdir":{"name":"outputdir","type":"option","char":"d","description":"Directory to store generated files."},"prefix":{"name":"prefix","type":"option","char":"x","description":"Prefix of generated files."},"plan":{"name":"plan","type":"boolean","char":"p","description":"Generates multiple sObject tree files and a plan definition file for aggregated import.","allowNo":false}},"args":[]},"data:import":{"id":"data:import","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"sobjectfiles":{"name":"sobjectfiles","type":"option","char":"f","description":"Paths of JSON files containing a collection of record to insert. Either --sobjecttreefiles or --plan is required."},"plan":{"name":"plan","type":"option","char":"p","description":"Path to plan to insert multiple data files that have master-detail relationships. Either --sobjecttreefiles or --plan is required."}},"args":[]},"package:build":{"id":"package:build","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"appPath":{"name":"appPath","type":"option","char":"p","description":"appPath","required":true},"packageName":{"name":"packageName","type":"option","char":"n","description":"package name"},"loglevel":{"name":"loglevel","type":"option","char":"l","description":"(debug|info|warn) [default: warn] logging level for this command invocation"}},"args":[]},"package:start":{"id":"package:start","description":"run steedos packages","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"repl":{"name":"repl","type":"boolean","char":"r","description":"If true, it switches to REPL mode after broker started.","allowNo":false},"silent":{"name":"silent","type":"boolean","char":"s","description":"Disable the broker logger. It prints nothing to the console.","allowNo":false},"hot":{"name":"hot","type":"boolean","char":"h","description":"Hot reload services when they change.","allowNo":false},"config":{"name":"config","type":"option","char":"c","description":"Load configuration file from a different path or a different filename.","default":"steedos.config.js"},"env":{"name":"env","type":"boolean","char":"e","description":"Load environment variables from the ‘.env’ file from the current folder.","allowNo":false},"envfile":{"name":"envfile","type":"option","char":"E","description":"Load environment variables from the specified file."},"instances":{"name":"instances","type":"option","char":"i","description":"Launch [number] node instances or max for all cpu cores (with cluster module)"}},"args":[{"name":"servicePaths","description":"service files or directories or glob masks","required":false,"default":""}]},"source:config":{"id":"source:config","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"source:convert":{"id":"source:convert","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"oldFilesPath":{"name":"oldFilesPath","type":"option","char":"o","description":"oldFilesPath","required":true},"targetPath":{"name":"targetPath","type":"option","char":"t","description":"targetPath","required":true}},"args":[]},"source:delete":{"id":"source:delete","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"source:deploy":{"id":"source:deploy","description":" Use this command to deploy source (metadata that’s in source format)\nTo deploy metadata that’s in metadata format, use \"steedos source:deploy\".\n\nThe source you deploy overwrites the corresponding metadata on the server. This command does not attempt to merge your source with the versions on the server.\n\nExamples:\n\nTo deploy the source files in a directory:\n $ steedos source:deploy -p path/to/source\nTo deploy a specific custom object and the objects whose source is in a directory:\n $ steedos source:deploy -p \"path/to/custom/objects/myObject.object.yml\"\nor\"\n $ steedos source:deploy -p \"path/to/source/objects/my_object\"\n\n","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"sourcePath":{"name":"sourcePath","type":"option","char":"p","description":"Submit the local file under the path to the server"}},"args":[]},"source:retrieve":{"id":"source:retrieve","description":"Use this command to retrieve source (metadata that’s in source format)\nTo retrieve metadata that’s in metadata format, use \"steedos source:retrieve\".\n\nThe source you retrieve overwrites the corresponding source files in your local project. This command does not attempt to merge the source from your org with your local source files.\n\nExamples:\n\nTo retrieve the source files in a directory:\n $ steedos source:retrieve -p path/to/source\nTo retrieve a specific Custom object and the objects whose source is in a directory:\n $ steedos source:retrieve -p \"path/to/custom/objects/myObject.object.yml\"\nor\n $ steedos source:retrieve -p \"path/to/source/objects/my_object\"\nTo retrieve all Custom objects:\n $ steedos source:retrieve -m CustomObject\nTo retrieve a specific Custom object:\n $ steedos source:retrieve -m CustomObject:myObject\n\nTo retrieve all metadata components listed in a manifest:\n $ steedos source:retrieve -y path/to/package.yml\n\n\nMetaDataList:\n[\"ApprovalProcess\",\"Chart\",\"CustomAction\",\"CustomApplication\",\"CustomField\",\"CustomListview\",\"CustomObject\",\"CustomPermission\",\"CustomPermissionset\",\"CustomProfile\",\"CustomReport\",\"CustomValidationRule\",\"Dashboard\",\"Flow\",\"FlowRole\",\"Import\",\"Layout\",\"Page\",\"Process\",\"Query\",\"Question\",\"RestrictionRule\",\"Role\",\"ShareRule\",\"Tab\",\"Trigger\",\"Workflow\"]\n","pluginName":"steedos-cli","pluginType":"core","aliases":[],"flags":{"serverDir":{"name":"serverDir","type":"option","char":"p","description":"generate request according to the path and update it"},"manifest":{"name":"manifest","type":"option","char":"y","description":"file path for manifest (package.yml) of components to deploy"},"metadata":{"name":"metadata","type":"option","char":"m","description":"metadata"}},"args":[]}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steedos-cli",
3
- "version": "2.5.20-beta.8",
3
+ "version": "2.5.20",
4
4
  "description": "Develop and run your enterprise apps in miniutes",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -38,8 +38,8 @@
38
38
  "@oclif/command": "^1.8.16",
39
39
  "@oclif/config": "^1.8.3",
40
40
  "@oclif/plugin-help": "^5.1.12",
41
- "@steedos/metadata-core": "2.5.20-beta.8",
42
- "@steedos/metadata-registrar": "2.5.20-beta.8",
41
+ "@steedos/metadata-core": "2.5.20",
42
+ "@steedos/metadata-registrar": "2.5.20",
43
43
  "archiver": "^5.0.2",
44
44
  "chalk": "2.4.2",
45
45
  "change-case": "^3.1.0",
@@ -82,5 +82,5 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "gitHead": "9501bbf23858aa74a7bb9dcf53f3c7ce4dc765b1"
85
+ "gitHead": "1e2c9a88c8eeddc492481195d2d8c5e3519680e8"
86
86
  }