qcobjects-cli 2.3.42 → 2.3.49

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.42
1
+ 2.3.49
@@ -229,6 +229,7 @@ Package("org.quickcorp.qcobjects.cli",[
229
229
 
230
230
  },
231
231
  create:function (_appName, options){
232
+ const version = global.__get_version__();
232
233
  let switchCommander = this;
233
234
  let appName = (typeof _appName ==="undefined" || _appName === true)?("MyAppName"):(_appName);
234
235
 
@@ -246,117 +247,117 @@ Package("org.quickcorp.qcobjects.cli",[
246
247
  rl.close();
247
248
  let giturl = answer;
248
249
 
249
- let createAppCommandCustom = `
250
- {
251
- "name": "${appName.toLowerCase()}",
250
+ let createAppCommandCustom = `
251
+ {
252
+ "name": "${appName.toLowerCase()}",
252
253
  "version": "0.0.1",
253
- "repository": {
254
- "type": "git",
255
- "url": "${giturl}"
256
- },
257
- "description": "This is a custom NPM template app from ${options.createCustom} generated with QCObjects.",
254
+ "repository": {
255
+ "type": "git",
256
+ "url": "${giturl}"
257
+ },
258
+ "description": "This is a custom NPM template app from ${options.createCustom} generated with QCObjects.",
258
259
  "main": "js/init.js",
259
260
  "license": "LGPL-3.0-or-later",
260
- "scripts": {
261
- "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
262
- "sync": "git add . && git commit -am ",
263
- "preversion": "npm i --upgrade && npm test",
264
- "postversion": "git push && git push --tags",
265
- "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
266
- "start": "node app.js",
267
- "build": "exit 0"
268
- },
269
- "dependencies": {
270
- "${options.createCustom}": "latest",
271
- "qcobjects": "latest",
272
- "qcobjects-sdk": "latest"
273
- },
274
- "devDependencies":
261
+ "scripts": {
262
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
263
+ "sync": "git add . && git commit -am ",
264
+ "preversion": "npm i --upgrade && npm test",
265
+ "postversion": "git push && git push --tags",
266
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
267
+ "start": "node app.js",
268
+ "build": "exit 0"
269
+ },
270
+ "dependencies": {
271
+ "${options.createCustom}": "latest",
272
+ "qcobjects": "^${version.qcobjects}",
273
+ "qcobjects-sdk": "^${version.sdk}"
274
+ },
275
+ "devDependencies": {
275
276
  "eslint": "^8.2.0",
276
- "eslint-config-qcobjects": "latest",
277
- "jasmine": "latest",
278
- "qcobjects-cli": "latest",
279
- "grunt": "^1.4.1",
280
- "grunt-contrib-jasmine": "^2.0.2",
281
- "nyc": "^15.1.0"
282
- }
277
+ "eslint-config-qcobjects": "latest",
278
+ "jasmine": "latest",
279
+ "qcobjects-cli": "^${version.cli}",
280
+ "grunt": "^1.4.1",
281
+ "grunt-contrib-jasmine": "^2.0.2",
282
+ "nyc": "^15.1.0"
283
+ }
283
284
  }`;
284
285
 
285
- let createAppCommandPWA = `
286
- {
287
- "name": "${appName.toLowerCase()}",
286
+ let createAppCommandPWA = `
287
+ {
288
+ "name": "${appName.toLowerCase()}",
288
289
  "version": "0.0.1",
289
- "repository": {
290
- "type": "git",
291
- "url": "${giturl}"
292
- },
293
- "description": "Awesome PWA application that will help you achieve your dreams.",
294
- "main": "js/init.js",
295
- "license": "LGPL-3.0-or-later",
296
- "scripts": {
297
- "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
298
- "sync": "git add . && git commit -am ",
299
- "preversion": "npm i --upgrade && npm test",
300
- "postversion": "git push && git push --tags",
301
- "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
302
- "start": "node app.js",
303
- "build": "exit 0"
304
- },
305
- "dependencies": {
306
- "qcobjectsnewapp": "latest",
307
- "qcobjects": "latest",
308
- "qcobjects-sdk": "latest"
309
- },
290
+ "repository": {
291
+ "type": "git",
292
+ "url": "${giturl}"
293
+ },
294
+ "description": "Awesome PWA application that will help you achieve your dreams.",
295
+ "main": "js/init.js",
296
+ "license": "LGPL-3.0-or-later",
297
+ "scripts": {
298
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
299
+ "sync": "git add . && git commit -am ",
300
+ "preversion": "npm i --upgrade && npm test",
301
+ "postversion": "git push && git push --tags",
302
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
303
+ "start": "node app.js",
304
+ "build": "exit 0"
305
+ },
306
+ "dependencies": {
307
+ "qcobjectsnewapp": "latest",
308
+ "qcobjects": "^${version.qcobjects}",
309
+ "qcobjects-sdk": "^${version.sdk}"
310
+ },
310
311
  "devDependencies": {
311
312
  "eslint": "^8.2.0",
312
- "eslint-config-qcobjects": "latest",
313
- "jasmine": "latest",
314
- "qcobjects-cli": "latest",
315
- "grunt": "^1.4.1",
316
- "grunt-contrib-jasmine": "^2.0.2",
317
- "nyc": "^15.1.0"
318
- }
313
+ "eslint-config-qcobjects": "latest",
314
+ "jasmine": "latest",
315
+ "qcobjects-cli": "^${version.cli}",
316
+ "grunt": "^1.4.1",
317
+ "grunt-contrib-jasmine": "^2.0.2",
318
+ "nyc": "^15.1.0"
319
+ }
319
320
  }`;
320
321
 
321
- let createAppCommandAMP = `echo
322
- {
323
- "name": "${appName.toLowerCase()}",
322
+ let createAppCommandAMP = `echo
323
+ {
324
+ "name": "${appName.toLowerCase()}",
324
325
  "version": "0.0.1",
325
- "repository": {
326
- "type": "git",
327
- "url": "${giturl}"
328
- },
329
- "description": "Awesome AMP application that will help you achieve your dreams.",
330
- "main": "js/init.js",
331
- "license": "LGPL-3.0-or-later",
332
- "scripts": {
333
- "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
334
- "sync": "git add . && git commit -am ",
335
- "preversion": "npm i --upgrade && npm test",
336
- "postversion": "git push && git push --tags",
337
- "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
338
- "start": "node app.js",
339
- "build": "exit 0"
340
- },
341
- "dependencies": {
342
- "qcobjects-ecommerce-amp": "latest",
343
- "qcobjects": "latest",
344
- "qcobjects-sdk": "latest"
345
- },
326
+ "repository": {
327
+ "type": "git",
328
+ "url": "${giturl}"
329
+ },
330
+ "description": "Awesome AMP application that will help you achieve your dreams.",
331
+ "main": "js/init.js",
332
+ "license": "LGPL-3.0-or-later",
333
+ "scripts": {
334
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
335
+ "sync": "git add . && git commit -am ",
336
+ "preversion": "npm i --upgrade && npm test",
337
+ "postversion": "git push && git push --tags",
338
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
339
+ "start": "node app.js",
340
+ "build": "exit 0"
341
+ },
342
+ "dependencies": {
343
+ "qcobjects-ecommerce-amp": "latest",
344
+ "qcobjects": "^${version.qcobjects}",
345
+ "qcobjects-sdk": "^${version.sdk}"
346
+ },
346
347
  "devDependencies": {
347
348
  "eslint": "^8.2.0",
348
- "eslint-config-qcobjects": "latest",
349
- "jasmine": "latest",
350
- "qcobjects-cli": "latest",
351
- "grunt": "^1.4.1",
352
- "grunt-contrib-jasmine": "^2.0.2",
353
- "nyc": "^15.1.0"
354
- }
349
+ "eslint-config-qcobjects": "latest",
350
+ "jasmine": "latest",
351
+ "qcobjects-cli": "^${version.cli}",
352
+ "grunt": "^1.4.1",
353
+ "grunt-contrib-jasmine": "^2.0.2",
354
+ "nyc": "^15.1.0"
355
+ }
355
356
  }`;
356
357
 
357
- let createAppCommandPHP = `
358
- {
359
- "name": "${appName.toLowerCase()}",
358
+ let createAppCommandPHP = `
359
+ {
360
+ "name": "${appName.toLowerCase()}",
360
361
  "version": "0.0.1",
361
362
  "repository": {
362
363
  "type": "git",
@@ -365,29 +366,29 @@ Package("org.quickcorp.qcobjects.cli",[
365
366
  "description": "Awesome PHP application that will help you achieve your dreams.",
366
367
  "main": "js/init.js",
367
368
  "license": "LGPL-3.0-or-later",
368
- "scripts": {
369
- "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
370
- "sync": "git add . && git commit -am ",
371
- "preversion": "npm i --upgrade && npm test",
372
- "postversion": "git push && git push --tags",
373
- "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
374
- "start": "node app.js",
375
- "build": "exit 0"
376
- },
369
+ "scripts": {
370
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
371
+ "sync": "git add . && git commit -am ",
372
+ "preversion": "npm i --upgrade && npm test",
373
+ "postversion": "git push && git push --tags",
374
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
375
+ "start": "node app.js",
376
+ "build": "exit 0"
377
+ },
377
378
  "dependencies": {
378
379
  "qcobjectsnewphp": "latest",
379
- "qcobjects": "latest",
380
- "qcobjects-sdk": "latest"
381
- },
380
+ "qcobjects": "^${version.qcobjects}",
381
+ "qcobjects-sdk": "^${version.sdk}"
382
+ },
382
383
  "devDependencies": {
383
384
  "eslint": "^8.2.0",
384
- "eslint-config-qcobjects": "latest",
385
- "jasmine": "latest",
386
- "qcobjects-cli": "latest",
387
- "grunt": "^1.4.1",
388
- "grunt-contrib-jasmine": "^2.0.2",
389
- "nyc": "^15.1.0"
390
- }
385
+ "eslint-config-qcobjects": "latest",
386
+ "jasmine": "latest",
387
+ "qcobjects-cli": "^${version.cli}",
388
+ "grunt": "^1.4.1",
389
+ "grunt-contrib-jasmine": "^2.0.2",
390
+ "nyc": "^15.1.0"
391
+ }
391
392
  }`;
392
393
 
393
394
  let createAppCommand;
@@ -431,14 +432,14 @@ Package("org.quickcorp.qcobjects.cli",[
431
432
  process.exit(1);
432
433
  return;
433
434
  }
434
-
435
- exec("npm cache verify && npm i --save-dev ", (err, stdout, stderr) => {
435
+
436
+ exec("npm cache verify && npm i --save-dev --legacy-peer-deps", (err, stdout, stderr) => {
436
437
  if (err) {
437
438
  logger.warn(err);
438
439
  process.exit(1);
439
440
  return;
440
441
  }
441
-
442
+
442
443
  Promise.resolve(switchCommander.copyTemplate())
443
444
  .then(()=>{
444
445
  logger.info("Good! Your application is getting done. You can play with QCObjects now!");
@@ -449,7 +450,7 @@ Package("org.quickcorp.qcobjects.cli",[
449
450
  exec("npm uninstall "+appTemplateName+" --save && npm cache verify",(err,stdout,stderr)=>{
450
451
  switchCommander.generateServiceWorker(appName);
451
452
  });
452
-
453
+
453
454
  }).stdout.on("data", function(data) {
454
455
  console.log(data);
455
456
  });
@@ -457,7 +458,7 @@ Package("org.quickcorp.qcobjects.cli",[
457
458
  }).stdout.on("data", function(data) {
458
459
  console.log(data);
459
460
  });
460
-
461
+
461
462
  });
462
463
 
463
464
  }).stdout.on("data", function(data) {
@@ -480,7 +481,7 @@ Package("org.quickcorp.qcobjects.cli",[
480
481
  if (process.argv.length>1){
481
482
 
482
483
  switchCommander.program
483
- .version(global.__get_version__());
484
+ .version(global.__get_version_string__());
484
485
  switchCommander.program
485
486
  .command("create <appname>")
486
487
  .description("Creates an app with <appname>")
@@ -49,7 +49,16 @@ global.__get_version__ = function (){
49
49
  const package_config = require(absolutePath+"/package.json");
50
50
  const qcobjects_pkg_config = require("qcobjects/package.json");
51
51
  const qcobjects_sdk_pkg_config = require("qcobjects-sdk/package.json");
52
- return "QCObjects: v"+qcobjects_pkg_config.version+", SDK: v"+qcobjects_sdk_pkg_config.version+", CLI: v"+package_config.version;
52
+ return {
53
+ "qcobjects":qcobjects_pkg_config.version,
54
+ "sdk":qcobjects_sdk_pkg_config.version,
55
+ "cli":package_config.version
56
+ };
57
+ };
58
+
59
+ global.__get_version_string__ = function (){
60
+ const version = global.__get_version__();
61
+ return "QCObjects: v"+version.qcobjects+", SDK: v"+version.sdk+", CLI: v"+version.cli;
53
62
  };
54
63
 
55
64
 
@@ -118,3 +127,60 @@ try {
118
127
  logger.debug(e);
119
128
  logger.debug("Something went wrong trying to load config.json file in your project");
120
129
  }
130
+
131
+ (async function (){
132
+ /* Auto Discover dependencies (lib, handlers, commands) */
133
+ const path = require("path");
134
+ const projectPath = CONFIG.get("projectPath", `${process.cwd()}/`);
135
+ const hasKeyword = (p,keyword) => {
136
+ const {keywords} = require(`${findPackageNodePath(p)}/${p}/package.json`);
137
+ return typeof keywords !== "undefined" && keywords.includes(keyword);
138
+ };
139
+
140
+ const loadLibs = async () => {
141
+ let _ret_;
142
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_libs",false)){
143
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-lib")).map((p)=>Import(p))).then(()=>logger.info("Libs loaded"));
144
+ } else {
145
+ _ret_ = Promise.resolve();
146
+ logger.debug("To load libs, set autodiscover_libs to true in your config.json");
147
+ }
148
+ return _ret_;
149
+ };
150
+ const loadHandlers = async () => {
151
+ let _ret_;
152
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_handlers",false)){
153
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-handler")).map((p)=>Import(p))).then(()=>logger.info("Handlers loaded"));
154
+ } else {
155
+ _ret_ = Promise.resolve();
156
+ logger.debug("To load handlers, set autodiscover_handlers to true in your config.json");
157
+ }
158
+ return _ret_;
159
+ };
160
+ const loadCommands = async () => {
161
+ let _ret_;
162
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_commands",false)){
163
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-command")).map((p)=>Import(p))).then(()=>logger.info("Commands loaded"));
164
+ } else {
165
+ _ret_ = Promise.resolve();
166
+ logger.debug("To load commands, set autodiscover_commands to true in your config.json");
167
+ }
168
+ return _ret_;
169
+ };
170
+ if (CONFIG.get("autodiscover", false)
171
+ || CONFIG.get("autodiscover_libs",false)
172
+ || CONFIG.get("autodiscover_handlers",false)
173
+ || CONFIG.get("autodiscover_commands",false)
174
+ ){
175
+ logger.info("Auto discover is enabled");
176
+ } else if (!CONFIG.get("autodiscover", false)) {
177
+ logger.info("Auto discover is disabled");
178
+ logger.debug("To load all dependencies, set autodiscover to true in your config.json");
179
+ } else {
180
+ logger.info("Auto discover is disabled");
181
+ }
182
+
183
+ await loadLibs();
184
+ await loadHandlers();
185
+ await loadCommands();
186
+ })().then (()=>logger.info("Dependencies loaded"));
@@ -291,6 +291,7 @@ Package("org.quickcorp.qcobjects.main.http.gae.server",[
291
291
  response:"",
292
292
  server:null,
293
293
  scriptname:"",
294
+ interceptorInstances:[],
294
295
  showIPAddress:function (){
295
296
  var _ret_ = "";
296
297
  var os = require("os");
@@ -341,6 +342,26 @@ Package("org.quickcorp.qcobjects.main.http.gae.server",[
341
342
 
342
343
  server.on("error", (err) => console.error(err));
343
344
 
345
+ if (global.get("backendAvailable")){
346
+ logger.info("Loading backend interceptors...");
347
+ let interceptors = CONFIG.get("backend",{}).interceptors;
348
+ if (typeof interceptors !== "undefined"){
349
+ logger.info("Backend Interceptors Available");
350
+ interceptors.map(interceptor=>{
351
+ ImportMicroservice (interceptor.microservice);
352
+ var interceptorClassFactory = ClassFactory(interceptor.microservice+".Interceptor");
353
+ var interceptorInstance = New(interceptorClassFactory,{
354
+ domain:CONFIG.get("domain"),
355
+ basePath:CONFIG.get("basePath"),
356
+ projectPath:CONFIG.get("projectPath"),
357
+ interceptor:interceptor,
358
+ server:server
359
+ });
360
+ http2ServerInstance.interceptorInstances.push(interceptorInstance);
361
+ });
362
+ }
363
+ }
364
+
344
365
  server.on("request", (req, res) => {
345
366
 
346
367
  let request = Object.assign(New(HTTPServerRequest),require("url").parse(req.url));
@@ -291,6 +291,7 @@ Package("org.quickcorp.qcobjects.main.http.server",[
291
291
  response:"",
292
292
  server:null,
293
293
  scriptname:"",
294
+ interceptorInstances:[],
294
295
  showIPAddress:function (){
295
296
  var _ret_ = "";
296
297
  var os = require("os");
@@ -341,6 +342,26 @@ Package("org.quickcorp.qcobjects.main.http.server",[
341
342
 
342
343
  server.on("error", (err) => console.error(err));
343
344
 
345
+ if (global.get("backendAvailable")){
346
+ logger.info("Loading backend interceptors...");
347
+ let interceptors = CONFIG.get("backend",{}).interceptors;
348
+ if (typeof interceptors !== "undefined"){
349
+ logger.info("Backend Interceptors Available");
350
+ interceptors.map(interceptor=>{
351
+ ImportMicroservice (interceptor.microservice);
352
+ var interceptorClassFactory = ClassFactory(interceptor.microservice+".Interceptor");
353
+ var interceptorInstance = New(interceptorClassFactory,{
354
+ domain:CONFIG.get("domain"),
355
+ basePath:CONFIG.get("basePath"),
356
+ projectPath:CONFIG.get("projectPath"),
357
+ interceptor:interceptor,
358
+ server:server
359
+ });
360
+ http2ServerInstance.interceptorInstances.push(interceptorInstance);
361
+ });
362
+ }
363
+ }
364
+
344
365
  server.on("request", (req, res) => {
345
366
 
346
367
  let request = Object.assign(New(HTTPServerRequest),require("url").parse(req.url));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qcobjects-cli",
3
- "version": "2.3.42",
3
+ "version": "2.3.49",
4
4
  "description": "qcobjects cli command line tool",
5
5
  "main": "qcobjects-cli.js",
6
6
  "scripts": {
@@ -85,7 +85,7 @@ readline.emitKeypressEvents(process.stdin);
85
85
  if (process.stdin.isTTY)
86
86
  process.stdin.setRawMode(true);
87
87
 
88
- let qcobjects_version = global.__get_version__();
88
+ let qcobjects_version = global.__get_version_string__();
89
89
 
90
90
  const rl = readline.createInterface({
91
91
  input: process.stdin,