qcobjects-cli 2.4.66 → 2.5.104-beta

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.
Files changed (205) hide show
  1. package/.github/workflows/npmpublish-beta.yml +4 -4
  2. package/.github/workflows/npmpublish-lts.yml +4 -4
  3. package/.github/workflows/npmpublish-main.yml +4 -4
  4. package/VERSION +1 -1
  5. package/build-esbuild.js +70 -0
  6. package/eslint.config.mjs +88 -0
  7. package/package.json +118 -56
  8. package/public/browser/backend/com.qcobjects.backend.microservice.static.js +318 -0
  9. package/public/browser/backend/com.qcobjects.backend.microservice.static.js.map +7 -0
  10. package/public/browser/backend/org.qcobjects.backend.php.js +290 -0
  11. package/public/browser/backend/org.qcobjects.backend.php.js.map +7 -0
  12. package/public/browser/com.qcobjects.cli.commands.jira.client_services.js +83 -0
  13. package/public/browser/com.qcobjects.cli.commands.jira.client_services.js.map +7 -0
  14. package/public/browser/com.qcobjects.cli.commands.jira.js +162 -0
  15. package/public/browser/com.qcobjects.cli.commands.jira.js.map +7 -0
  16. package/public/browser/com.qcobjects.cli.commands.js +387 -0
  17. package/public/browser/com.qcobjects.cli.commands.js.map +7 -0
  18. package/public/browser/com.qcobjects.cli.commands.version.js +247 -0
  19. package/public/browser/com.qcobjects.cli.commands.version.js.map +7 -0
  20. package/public/browser/index.js +4126 -0
  21. package/public/browser/index.js.map +7 -0
  22. package/public/browser/org.qcobjects.common.pipelog.js +56 -0
  23. package/public/browser/org.qcobjects.common.pipelog.js.map +7 -0
  24. package/public/browser/org.qcobjects.enterprise.commands.js +160 -0
  25. package/public/browser/org.qcobjects.enterprise.commands.js.map +7 -0
  26. package/public/browser/org.quickcorp.qcobjects.api.client_services.js +81 -0
  27. package/public/browser/org.quickcorp.qcobjects.api.client_services.js.map +7 -0
  28. package/public/browser/org.quickcorp.qcobjects.cli.js +4086 -0
  29. package/public/browser/org.quickcorp.qcobjects.cli.js.map +7 -0
  30. package/public/browser/org.quickcorp.qcobjects.collab.server.js +422 -0
  31. package/public/browser/org.quickcorp.qcobjects.collab.server.js.map +7 -0
  32. package/public/browser/org.quickcorp.qcobjects.defaultsettings.js +397 -0
  33. package/public/browser/org.quickcorp.qcobjects.defaultsettings.js.map +7 -0
  34. package/public/browser/org.quickcorp.qcobjects.main.file.js +248 -0
  35. package/public/browser/org.quickcorp.qcobjects.main.file.js.map +7 -0
  36. package/public/browser/org.quickcorp.qcobjects.main.http.gae.server.js +538 -0
  37. package/public/browser/org.quickcorp.qcobjects.main.http.gae.server.js.map +7 -0
  38. package/public/browser/org.quickcorp.qcobjects.main.http.server.js +600 -0
  39. package/public/browser/org.quickcorp.qcobjects.main.http.server.js.map +7 -0
  40. package/public/browser/org.quickcorp.qcobjects.main.http2.server.js +465 -0
  41. package/public/browser/org.quickcorp.qcobjects.main.http2.server.js.map +7 -0
  42. package/public/browser/qcobjects-cli.js +4118 -0
  43. package/public/browser/qcobjects-cli.js.map +7 -0
  44. package/public/browser/qcobjects-collab.js +41 -0
  45. package/public/browser/qcobjects-collab.js.map +7 -0
  46. package/public/browser/qcobjects-createcert.js +67 -0
  47. package/public/browser/qcobjects-createcert.js.map +7 -0
  48. package/public/browser/qcobjects-gae-http-server.js +41 -0
  49. package/public/browser/qcobjects-gae-http-server.js.map +7 -0
  50. package/public/browser/qcobjects-http-server.js +41 -0
  51. package/public/browser/qcobjects-http-server.js.map +7 -0
  52. package/public/browser/qcobjects-http2-server.js +44 -0
  53. package/public/browser/qcobjects-http2-server.js.map +7 -0
  54. package/public/browser/qcobjects-shell.js +50 -0
  55. package/public/browser/qcobjects-shell.js.map +7 -0
  56. package/public/browser/types/global/index.d.js +15 -0
  57. package/public/browser/types/global/index.d.js.map +7 -0
  58. package/public/cjs/backend/com.qcobjects.backend.microservice.static.cjs +305 -0
  59. package/public/cjs/backend/com.qcobjects.backend.microservice.static.cjs.map +7 -0
  60. package/public/cjs/backend/org.qcobjects.backend.php.cjs +273 -0
  61. package/public/cjs/backend/org.qcobjects.backend.php.cjs.map +7 -0
  62. package/public/cjs/com.qcobjects.cli.commands.cjs +384 -0
  63. package/public/cjs/com.qcobjects.cli.commands.cjs.map +7 -0
  64. package/public/cjs/com.qcobjects.cli.commands.jira.cjs +158 -0
  65. package/public/cjs/com.qcobjects.cli.commands.jira.cjs.map +7 -0
  66. package/public/cjs/com.qcobjects.cli.commands.jira.client_services.cjs +79 -0
  67. package/public/cjs/com.qcobjects.cli.commands.jira.client_services.cjs.map +7 -0
  68. package/public/cjs/com.qcobjects.cli.commands.version.cjs +243 -0
  69. package/public/cjs/com.qcobjects.cli.commands.version.cjs.map +7 -0
  70. package/public/cjs/index.cjs +4118 -0
  71. package/public/cjs/index.cjs.map +7 -0
  72. package/public/cjs/org.qcobjects.common.pipelog.cjs +52 -0
  73. package/public/cjs/org.qcobjects.common.pipelog.cjs.map +7 -0
  74. package/public/cjs/org.qcobjects.enterprise.commands.cjs +156 -0
  75. package/public/cjs/org.qcobjects.enterprise.commands.cjs.map +7 -0
  76. package/public/cjs/org.quickcorp.qcobjects.api.client_services.cjs +77 -0
  77. package/public/cjs/org.quickcorp.qcobjects.api.client_services.cjs.map +7 -0
  78. package/public/cjs/org.quickcorp.qcobjects.cli.cjs +4086 -0
  79. package/public/cjs/org.quickcorp.qcobjects.cli.cjs.map +7 -0
  80. package/public/cjs/org.quickcorp.qcobjects.collab.server.cjs +405 -0
  81. package/public/cjs/org.quickcorp.qcobjects.collab.server.cjs.map +7 -0
  82. package/public/cjs/org.quickcorp.qcobjects.defaultsettings.cjs +394 -0
  83. package/public/cjs/org.quickcorp.qcobjects.defaultsettings.cjs.map +7 -0
  84. package/public/cjs/org.quickcorp.qcobjects.main.file.cjs +235 -0
  85. package/public/cjs/org.quickcorp.qcobjects.main.file.cjs.map +7 -0
  86. package/public/cjs/org.quickcorp.qcobjects.main.http.gae.server.cjs +525 -0
  87. package/public/cjs/org.quickcorp.qcobjects.main.http.gae.server.cjs.map +7 -0
  88. package/public/cjs/org.quickcorp.qcobjects.main.http.server.cjs +587 -0
  89. package/public/cjs/org.quickcorp.qcobjects.main.http.server.cjs.map +7 -0
  90. package/public/cjs/org.quickcorp.qcobjects.main.http2.server.cjs +452 -0
  91. package/public/cjs/org.quickcorp.qcobjects.main.http2.server.cjs.map +7 -0
  92. package/public/cjs/qcobjects-cli.cjs +4115 -0
  93. package/public/cjs/qcobjects-cli.cjs.map +7 -0
  94. package/public/cjs/qcobjects-collab.cjs +24 -0
  95. package/public/cjs/qcobjects-collab.cjs.map +7 -0
  96. package/public/cjs/qcobjects-createcert.cjs +50 -0
  97. package/public/cjs/qcobjects-createcert.cjs.map +7 -0
  98. package/public/cjs/qcobjects-gae-http-server.cjs +24 -0
  99. package/public/cjs/qcobjects-gae-http-server.cjs.map +7 -0
  100. package/public/cjs/qcobjects-http-server.cjs +24 -0
  101. package/public/cjs/qcobjects-http-server.cjs.map +7 -0
  102. package/public/cjs/qcobjects-http2-server.cjs +27 -0
  103. package/public/cjs/qcobjects-http2-server.cjs.map +7 -0
  104. package/public/cjs/qcobjects-shell.cjs +34 -0
  105. package/public/cjs/qcobjects-shell.cjs.map +7 -0
  106. package/public/cjs/types/global/index.d.cjs +2 -0
  107. package/public/cjs/types/global/index.d.cjs.map +7 -0
  108. package/public/esm/backend/com.qcobjects.backend.microservice.static.mjs +315 -0
  109. package/public/esm/backend/com.qcobjects.backend.microservice.static.mjs.map +7 -0
  110. package/public/esm/backend/org.qcobjects.backend.php.mjs +287 -0
  111. package/public/esm/backend/org.qcobjects.backend.php.mjs.map +7 -0
  112. package/public/esm/com.qcobjects.cli.commands.jira.client_services.mjs +62 -0
  113. package/public/esm/com.qcobjects.cli.commands.jira.client_services.mjs.map +7 -0
  114. package/public/esm/com.qcobjects.cli.commands.jira.mjs +139 -0
  115. package/public/esm/com.qcobjects.cli.commands.jira.mjs.map +7 -0
  116. package/public/esm/com.qcobjects.cli.commands.mjs +368 -0
  117. package/public/esm/com.qcobjects.cli.commands.mjs.map +7 -0
  118. package/public/esm/com.qcobjects.cli.commands.version.mjs +226 -0
  119. package/public/esm/com.qcobjects.cli.commands.version.mjs.map +7 -0
  120. package/public/esm/index.mjs +4108 -0
  121. package/public/esm/index.mjs.map +7 -0
  122. package/public/esm/org.qcobjects.common.pipelog.mjs +35 -0
  123. package/public/esm/org.qcobjects.common.pipelog.mjs.map +7 -0
  124. package/public/esm/org.qcobjects.enterprise.commands.mjs +139 -0
  125. package/public/esm/org.qcobjects.enterprise.commands.mjs.map +7 -0
  126. package/public/esm/org.quickcorp.qcobjects.api.client_services.mjs +60 -0
  127. package/public/esm/org.quickcorp.qcobjects.api.client_services.mjs.map +7 -0
  128. package/public/esm/org.quickcorp.qcobjects.cli.mjs +4068 -0
  129. package/public/esm/org.quickcorp.qcobjects.cli.mjs.map +7 -0
  130. package/public/esm/org.quickcorp.qcobjects.collab.server.mjs +419 -0
  131. package/public/esm/org.quickcorp.qcobjects.collab.server.mjs.map +7 -0
  132. package/public/esm/org.quickcorp.qcobjects.defaultsettings.mjs +376 -0
  133. package/public/esm/org.quickcorp.qcobjects.defaultsettings.mjs.map +7 -0
  134. package/public/esm/org.quickcorp.qcobjects.main.file.mjs +245 -0
  135. package/public/esm/org.quickcorp.qcobjects.main.file.mjs.map +7 -0
  136. package/public/esm/org.quickcorp.qcobjects.main.http.gae.server.mjs +535 -0
  137. package/public/esm/org.quickcorp.qcobjects.main.http.gae.server.mjs.map +7 -0
  138. package/public/esm/org.quickcorp.qcobjects.main.http.server.mjs +597 -0
  139. package/public/esm/org.quickcorp.qcobjects.main.http.server.mjs.map +7 -0
  140. package/public/esm/org.quickcorp.qcobjects.main.http2.server.mjs +462 -0
  141. package/public/esm/org.quickcorp.qcobjects.main.http2.server.mjs.map +7 -0
  142. package/public/esm/qcobjects-cli.mjs +4100 -0
  143. package/public/esm/qcobjects-cli.mjs.map +7 -0
  144. package/public/esm/qcobjects-collab.mjs +38 -0
  145. package/public/esm/qcobjects-collab.mjs.map +7 -0
  146. package/public/esm/qcobjects-createcert.mjs +64 -0
  147. package/public/esm/qcobjects-createcert.mjs.map +7 -0
  148. package/public/esm/qcobjects-gae-http-server.mjs +38 -0
  149. package/public/esm/qcobjects-gae-http-server.mjs.map +7 -0
  150. package/public/esm/qcobjects-http-server.mjs +38 -0
  151. package/public/esm/qcobjects-http-server.mjs.map +7 -0
  152. package/public/esm/qcobjects-http2-server.mjs +41 -0
  153. package/public/esm/qcobjects-http2-server.mjs.map +7 -0
  154. package/public/esm/qcobjects-shell.mjs +26 -0
  155. package/public/esm/qcobjects-shell.mjs.map +7 -0
  156. package/public/esm/types/global/index.d.mjs +12 -0
  157. package/public/esm/types/global/index.d.mjs.map +7 -0
  158. package/public/index.d.ts +165 -0
  159. package/spec/support/jasmine.json +7 -4
  160. package/src/backend/{com.qcobjects.backend.microservice.static.js → com.qcobjects.backend.microservice.static.ts} +42 -28
  161. package/src/backend/org.qcobjects.backend.php.ts +348 -0
  162. package/src/{com.qcobjects.cli.commands.jira.client_services.js → com.qcobjects.cli.commands.jira.client_services.ts} +47 -33
  163. package/src/com.qcobjects.cli.commands.jira.ts +124 -0
  164. package/src/{com.qcobjects.cli.commands.js → com.qcobjects.cli.commands.ts} +3 -9
  165. package/src/com.qcobjects.cli.commands.version.ts +285 -0
  166. package/src/{index.mjs → index.cts} +1 -1
  167. package/src/index.mts +2 -0
  168. package/src/index.ts +1 -1
  169. package/src/{org.qcobjects.common.pipelog.js → org.qcobjects.common.pipelog.ts} +21 -18
  170. package/src/org.qcobjects.enterprise.commands.ts +174 -0
  171. package/src/{org.quickcorp.qcobjects.api.client_services.js → org.quickcorp.qcobjects.api.client_services.ts} +46 -32
  172. package/src/org.quickcorp.qcobjects.cli.ts +504 -0
  173. package/src/org.quickcorp.qcobjects.collab.server.ts +420 -0
  174. package/src/org.quickcorp.qcobjects.defaultsettings.ts +424 -0
  175. package/src/org.quickcorp.qcobjects.main.file.ts +180 -0
  176. package/src/org.quickcorp.qcobjects.main.http.gae.server.ts +507 -0
  177. package/src/org.quickcorp.qcobjects.main.http.server.ts +551 -0
  178. package/src/org.quickcorp.qcobjects.main.http2.server.ts +419 -0
  179. package/src/{qcobjects-cli.js → qcobjects-cli.ts} +10 -12
  180. package/src/{qcobjects-collab.js → qcobjects-collab.ts} +4 -4
  181. package/src/{qcobjects-createcert.js → qcobjects-createcert.ts} +5 -3
  182. package/src/{qcobjects-gae-http-server.js → qcobjects-gae-http-server.ts} +4 -4
  183. package/src/{qcobjects-http-server.js → qcobjects-http-server.ts} +4 -4
  184. package/src/{qcobjects-http2-server.js → qcobjects-http2-server.ts} +6 -8
  185. package/src/{qcobjects-shell.js → qcobjects-shell.ts} +11 -14
  186. package/src/types/global/index.d.ts +2 -0
  187. package/tsconfig.d.json +45 -3
  188. package/tsconfig.jasmine.json +39 -0
  189. package/tsconfig.json +50 -7
  190. package/.eslintignore +0 -5
  191. package/.eslintrc.cjs +0 -6
  192. package/src/backend/org.qcobjects.backend.php.js +0 -334
  193. package/src/com.qcobjects.cli.commands.jira.js +0 -144
  194. package/src/com.qcobjects.cli.commands.version.js +0 -285
  195. package/src/index.cjs +0 -2
  196. package/src/index.d.ts +0 -2
  197. package/src/org.qcobjects.enterprise.commands.js +0 -194
  198. package/src/org.quickcorp.qcobjects.cli.js +0 -523
  199. package/src/org.quickcorp.qcobjects.collab.server.js +0 -415
  200. package/src/org.quickcorp.qcobjects.defaultsettings.js +0 -397
  201. package/src/org.quickcorp.qcobjects.main.file.js +0 -159
  202. package/src/org.quickcorp.qcobjects.main.http.gae.server.js +0 -495
  203. package/src/org.quickcorp.qcobjects.main.http.server.js +0 -529
  204. package/src/org.quickcorp.qcobjects.main.http2.server.js +0 -392
  205. /package/spec/{testsSpec.js → testsSpec.ts} +0 -0
@@ -0,0 +1,424 @@
1
+ /**
2
+ * QCObjects CLI 2.4.x
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ /*eslint no-unused-vars: "off"*/
26
+ /*eslint no-redeclare: "off"*/
27
+ /*eslint no-empty: "off"*/
28
+ /*eslint strict: "off"*/
29
+ /*eslint no-mixed-operators: "off"*/
30
+ /*eslint no-undef: "off"*/
31
+ "use strict";
32
+
33
+ require ("qcobjects");
34
+
35
+ const { CONFIG, global, logger, _Crypt, findPackageNodePath, Export } = require("qcobjects");
36
+
37
+ export const __get_version__ = () => {
38
+ const path = require("path");
39
+
40
+ const absolutePath = path.resolve(__dirname, "./");
41
+ const package_config = require(path.resolve(process.cwd(), "package.json"));
42
+ const qcobjects_pkg_config = require("qcobjects/package.json");
43
+ const qcobjects_sdk_pkg_config = require("qcobjects-sdk/package.json");
44
+ return {
45
+ "qcobjects": qcobjects_pkg_config.version,
46
+ "sdk": qcobjects_sdk_pkg_config.version,
47
+ "cli": package_config.version
48
+ };
49
+ };
50
+
51
+ export const __get_version_string__ = () => {
52
+ const version = __get_version__();
53
+ return "QCObjects: v" + version.qcobjects + ", SDK: v" + version.sdk + ", CLI: v" + version.cli;
54
+ };
55
+
56
+ Export(__get_version__);
57
+ Export(__get_version_string__);
58
+
59
+
60
+ const __load_default_settings__ = () => {
61
+ CONFIG.set("documentRootFileIndex", "index.html");
62
+ CONFIG.set("projectPath", `${process.cwd()}/`);
63
+ CONFIG.set("useConfigService", false); // this is only true useful for client web side
64
+ CONFIG.set("documentRoot", "./");
65
+ CONFIG.set("serverPortHTTP", 80);
66
+ CONFIG.set("serverPortHTTPS", 443);
67
+ CONFIG.set("private-key-pem", "localhost-privkey.pem");
68
+ CONFIG.set("private-cert-pem", "localhost-cert.pem");
69
+ CONFIG.set("allowHTTP1", true);
70
+ CONFIG.set("useTemplate", false);
71
+ CONFIG.set("domain", "localhost");
72
+
73
+
74
+
75
+ const setDevMode = (devmode: string) => {
76
+ if (typeof devmode !== "undefined") {
77
+ switch (true) {
78
+ case devmode == "debug":
79
+ logger.debugEnabled = true;
80
+ logger.warnEnabled = true;
81
+ logger.infoEnabled = true;
82
+ break;
83
+ case devmode == "warn":
84
+ logger.debugEnabled = false;
85
+ logger.warnEnabled = true;
86
+ logger.infoEnabled = true;
87
+ break;
88
+ case devmode == "info":
89
+ logger.debugEnabled = false;
90
+ logger.warnEnabled = false;
91
+ logger.infoEnabled = true;
92
+ break;
93
+
94
+ default:
95
+ logger.debugEnabled = false;
96
+ logger.warnEnabled = false;
97
+ logger.infoEnabled = false;
98
+ break;
99
+ }
100
+ } else {
101
+ logger.debugEnabled = false;
102
+ logger.warnEnabled = false;
103
+ logger.infoEnabled = false;
104
+ }
105
+
106
+ };
107
+
108
+ try {
109
+ var _config = require(CONFIG.get("projectPath") + "config.json");
110
+ logger.debug("Loading settings from your config.json");
111
+
112
+ const _secretKey = (Object.hasOwn(_config, "domain")) ? (_config["domain"]) : ("_secret_");
113
+
114
+ if (Object.hasOwn(_config, "__encoded__")) {
115
+ _config = JSON.parse(_Crypt.decrypt(_config.__encoded__, _secretKey));
116
+ }
117
+ for (var k in _config) {
118
+ CONFIG.set(k, _config[k]);
119
+ }
120
+
121
+ setDevMode(CONFIG.get("devmode", ""));
122
+
123
+ if (typeof CONFIG.get("backend") !== "undefined") {
124
+ global.set("backendAvailable", true);
125
+
126
+ if (typeof CONFIG.get("basePath") !== "undefined") {
127
+ logger.debug(`Changing the current directory: ${process.cwd()}`);
128
+ try {
129
+ process.chdir(CONFIG.get("basePath"));
130
+ logger.debug(`New directory: ${process.cwd()}`);
131
+ } catch (err: any) {
132
+ logger.warn(`It was impossible to change the current chdir: ${err}`);
133
+ }
134
+ }
135
+ }
136
+ } catch (e) {
137
+ logger.debug(e);
138
+ logger.debug("Something went wrong trying to load config.json file in your project");
139
+ }
140
+
141
+ (async function () {
142
+ const path = require("path");
143
+ const projectPath = CONFIG.get("projectPath", `${process.cwd()}/`);
144
+ const loadDefaultRoutes = async () => {
145
+ return await new Promise<void>((resolve, reject) => {
146
+ const sdkPath = path.resolve(findPackageNodePath("qcobjects-sdk"), "qcobjects-sdk");
147
+ const qcobjectsPath = path.resolve(findPackageNodePath("qcobjects"), "qcobjects");
148
+ let backend = CONFIG.get("backend");
149
+ if (typeof backend === "undefined") {
150
+ backend = {};
151
+ }
152
+ if (typeof backend.routes === "undefined") {
153
+ backend.routes = [];
154
+ }
155
+ backend.routes = backend.routes.concat([{
156
+ "name": "QCObjects.js",
157
+ "description": "Redirection of QCObjects.js",
158
+ "path": "^/QCObjects.js$",
159
+ "microservice": "com.qcobjects.backend.microservice.static",
160
+ "redirect_to": path.resolve(qcobjectsPath, "src", "QCObjects.js"),
161
+ "responseHeaders": {},
162
+ "cors": {
163
+ "allow_origins": "*"
164
+ }
165
+ },
166
+ {
167
+ "name": "QCObjects-SDK.js",
168
+ "description": "Redirection of QCObjects SDK",
169
+ "path": "^/js/packages/QCObjects-SDK.js$",
170
+ "microservice": "com.qcobjects.backend.microservice.static",
171
+ "redirect_to": path.resolve(sdkPath, "src/QCObjects-SDK.js"),
172
+ "responseHeaders": {},
173
+ "cors": {
174
+ "allow_origins": "*"
175
+ }
176
+ },
177
+ {
178
+ "name": "QCObjects-SDK Components",
179
+ "description": "Redirection of QCObjects SDK",
180
+ "path": "^/qcobjects-sdk/(.*)$",
181
+ "microservice": "com.qcobjects.backend.microservice.static",
182
+ "redirect_to": path.resolve(sdkPath, "$1"),
183
+ "responseHeaders": {},
184
+ "cors": {
185
+ "allow_origins": "*"
186
+ }
187
+ }
188
+
189
+ ]);
190
+ CONFIG.set("backend", backend);
191
+ resolve();
192
+ });
193
+ };
194
+ await loadDefaultRoutes();
195
+ })()
196
+ .then(() => logger.info("Default routes loaded"))
197
+ .catch((e: any) => { logger.warn(`An error ocurred loading default settings: ${e}`); });
198
+
199
+ (function () {
200
+ /* Auto Discover dependencies (lib, handlers, commands) */
201
+ const path = require("path");
202
+ const fs = require("fs");
203
+ const projectPath = CONFIG.get("projectPath", `${process.cwd()}/`);
204
+ logger.debug(`CONFIG.projectPath is set to ${projectPath}`);
205
+ const findPath = (p: string) => {
206
+ const packagePath = path.resolve(findPackageNodePath(p), p);
207
+ return packagePath;
208
+ };
209
+
210
+ const getPackageJSON = (p: string) => {
211
+ let _json;
212
+ try {
213
+ const packagePath = findPath(p);
214
+ if (typeof packagePath !== "undefined") {
215
+ _json = JSON.parse(fs.readFileSync(path.resolve(`${packagePath}`, "./package.json")).toString());
216
+ } else {
217
+ _json = {};
218
+ }
219
+ } catch (e: any) {
220
+ logger.debug(`It was impossible to get the package.json from ${p}: ${e}`);
221
+ _json = {};
222
+ }
223
+ return _json;
224
+ };
225
+
226
+ const hasKeyword = (() => {
227
+ let keywords: { [key: string]: string[] } = {};
228
+ return (p: string, keyword: string) => {
229
+ if (typeof keywords === "undefined") {
230
+ keywords = {};
231
+ }
232
+ try {
233
+ if (typeof keywords[p] === "undefined") {
234
+ keywords[p] = getPackageJSON(p).keywords;
235
+ }
236
+ } catch (e) {
237
+ throw Error(`Something went wrong when trying to get the keywords of ${p}`);
238
+ }
239
+ return typeof keywords[p] !== "undefined" && keywords[p].includes(keyword);
240
+ };
241
+ })();
242
+
243
+ const setBackendValue = (name: string, value: any) => {
244
+ const backend = CONFIG.get("backend", {});
245
+ if (typeof value !== "undefined") {
246
+ backend[name] = value;
247
+ }
248
+ CONFIG.set("backend", backend);
249
+ };
250
+
251
+ const dependencies = (() => {
252
+ let deps: string[] = [];
253
+ return () => {
254
+ if (typeof deps === "undefined") {
255
+ deps = Object.keys(JSON.parse(fs.readFileSync(path.resolve(`${projectPath}`, "./package.json")).toString()).dependencies);
256
+ setBackendValue("dependencies", deps);
257
+ }
258
+ return deps;
259
+ };
260
+ })();
261
+
262
+ const devDependencies = (() => {
263
+ let deps: string[] = [];
264
+ return () => {
265
+ if (typeof deps === "undefined") {
266
+ deps = Object.keys(JSON.parse(fs.readFileSync(path.resolve(`${projectPath}`, "./package.json")).toString()).devDependencies);
267
+ setBackendValue("devDependencies", deps);
268
+ }
269
+ return deps;
270
+ };
271
+ })();
272
+
273
+ const loadLibs = () => {
274
+ let _ret_;
275
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_libs", false)) {
276
+ const libs = dependencies().filter((p) => hasKeyword(p, "qcobjects-lib"));
277
+ setBackendValue("libs", libs);
278
+ if (libs.length > 0) {
279
+ logger.debug(`Plugin Libs found: ${libs.join(",")}`);
280
+ _ret_ = Promise.all(libs.map((p) => { return require(findPath(p)); })).then(() => logger.info("Libs loaded"));
281
+ } else {
282
+ logger.debug("No Plugin Libs found.");
283
+ _ret_ = Promise.resolve();
284
+ }
285
+ } else {
286
+ logger.debug("To load libs, set autodiscover_libs to true in your config.json");
287
+ _ret_ = Promise.resolve();
288
+ }
289
+ return _ret_;
290
+ };
291
+ const loadHandlers = () => {
292
+ let _ret_;
293
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_handlers", false)) {
294
+ const handlers = dependencies().filter((p) => hasKeyword(p, "qcobjects-handler"));
295
+ setBackendValue("handlers", handlers);
296
+ if (handlers.length > 0) {
297
+ logger.debug(`Plugin Handlers found: ${handlers.join(",")}`);
298
+ _ret_ = Promise.all(handlers.map((p) => { return require(findPath(p)); })).then(() => logger.info("Handlers loaded"));
299
+ } else {
300
+ logger.debug("No Plugin Handlers found.");
301
+ _ret_ = Promise.resolve();
302
+ }
303
+ } else {
304
+ logger.debug("To load handlers, set autodiscover_handlers to true in your config.json");
305
+ _ret_ = Promise.resolve();
306
+ }
307
+ return _ret_;
308
+ };
309
+ const loadCommands = () => {
310
+ let _ret_;
311
+ logger.debug(`Looking for custom commands as dependencies in: ${projectPath}/package.json`);
312
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_commands", false)) {
313
+ const commands = dependencies().filter((p) => hasKeyword(p, "qcobjects-command"));
314
+ setBackendValue("commands", commands);
315
+ if (commands.length > 0) {
316
+ logger.debug(`Plugin Commands found: ${commands.join(",")}`);
317
+ _ret_ = Promise.all(commands.map((p) => { return require(findPath(p)); })).then(() => logger.info("Commands loaded"));
318
+ } else {
319
+ logger.debug("No Plugin Commands found.");
320
+ _ret_ = Promise.resolve();
321
+ }
322
+ } else {
323
+ logger.debug("To load commands, set autodiscover_commands to true in your config.json");
324
+ _ret_ = Promise.resolve();
325
+ }
326
+ return _ret_;
327
+ };
328
+ const loadDevCommands = () => {
329
+ let _ret_;
330
+ logger.debug(`Looking for custom commands as dev dependencies in: ${projectPath}/package.json`);
331
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_commands", false)) {
332
+ const commands = devDependencies().filter((p) => hasKeyword(p, "qcobjects-command"));
333
+ setBackendValue("devCommands", commands);
334
+ if (commands.length > 0) {
335
+ logger.debug(`Dev Plugin Commands found: ${commands.join(",")}`);
336
+ _ret_ = Promise.all(commands.map((p) => { return require(findPath(p)); })).then(() => logger.info("Commands loaded"));
337
+ } else {
338
+ logger.debug("No Plugin Commands found in dev dependencies.");
339
+ _ret_ = Promise.resolve();
340
+ }
341
+ } else {
342
+ logger.debug("To load commands, set autodiscover_commands to true in your config.json");
343
+ _ret_ = Promise.resolve();
344
+ }
345
+ return _ret_;
346
+ };
347
+
348
+ if (CONFIG.get("autodiscover", false) ||
349
+ CONFIG.get("autodiscover_libs", false) ||
350
+ CONFIG.get("autodiscover_handlers", false) ||
351
+ CONFIG.get("autodiscover_commands", false)
352
+ ) {
353
+ logger.info("Auto discover is enabled");
354
+ } else if (!CONFIG.get("autodiscover", false)) {
355
+ logger.info("Auto discover is disabled");
356
+ logger.debug("To load all dependencies, set autodiscover to true in your config.json");
357
+ } else {
358
+ logger.info("Auto discover is disabled");
359
+ }
360
+
361
+ try {
362
+ logger.debug("Loading Libs...");
363
+ loadLibs().catch((e: any) => {
364
+ logger.warn(`An error ocurred loading libs: ${e}`);
365
+ });
366
+ } catch (e: any) {
367
+ throw Error(`Something went wrong trying to load libs: ${e.message}`);
368
+ }
369
+ try {
370
+ logger.debug("Loading Handlers...");
371
+ loadHandlers().catch((e: any) => {
372
+ logger.warn(`An error ocurred loading handlers: ${e}`);
373
+ });
374
+ } catch (e: any) {
375
+ throw Error(`Something went wrong trying to load handler: ${e.message}`);
376
+ }
377
+ try {
378
+ logger.debug("Loading Commands...");
379
+ loadCommands().catch((e: any) => {
380
+ logger.warn(`An error ocurred loading commands: ${e}`);
381
+ });
382
+ } catch (e: any) {
383
+ throw Error(`Something went wrong trying to load commands: ${e.message}`);
384
+ }
385
+ try {
386
+ logger.debug("Loading Dev Commands...");
387
+ loadDevCommands().catch((e: any) => {
388
+ logger.warn(`An error ocurred loading dev commands: ${e}`);
389
+ });
390
+ } catch (e: any) {
391
+ throw Error(`Something went wrong trying to load Dev commands: ${e.message}`);
392
+ }
393
+
394
+ try {
395
+ const commands = CONFIG.get("backend", { commands: [] }).commands || [];
396
+ const devCommands = CONFIG.get("backend", { devCommands: [] }).devCommands || [];
397
+ setBackendValue("plugins", commands.concat(devCommands));
398
+ } catch (e: any) {
399
+ throw Error(`Something went wrong trying to load plugins list: ${e.message}`);
400
+ }
401
+
402
+ logger.info("Dependencies loaded");
403
+
404
+ process.once("SIGTERM", () => {
405
+ console.log("\x1b[33m%s\x1b[0m", "Bye bye!");
406
+ process.exit();
407
+ });
408
+ })();
409
+ };
410
+
411
+ global.__load_default_settings__ = __load_default_settings__;
412
+ global.__load_default_settings__();
413
+
414
+ const cleanCache = () => {
415
+ Object.keys(require.cache).forEach((key) => { delete require.cache[key]; });
416
+ };
417
+
418
+ const __reset_settings__ = () => {
419
+ cleanCache();
420
+ global.__load_default_settings__();
421
+ };
422
+
423
+ global.__reset_settings__ = __reset_settings__;
424
+
@@ -0,0 +1,180 @@
1
+ /**
2
+ * QCObjects CLI 2.4.x
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ /*eslint no-unused-vars: "off"*/
26
+ /*eslint no-redeclare: "off"*/
27
+ /*eslint no-empty: "off"*/
28
+ /*eslint strict: "off"*/
29
+ /*eslint no-mixed-operators: "off"*/
30
+ /*eslint no-undef: "off"*/
31
+ "use strict";
32
+ const path = require("path");
33
+ const fs = require("fs");
34
+ const mime = require("mime");
35
+
36
+ const {InheritClass, CONFIG, logger, New, Component, Package} = require("qcobjects");
37
+
38
+ const absolutePath = path.resolve(__dirname, "./");
39
+
40
+ class FileDispatcher extends InheritClass {
41
+ constructor({
42
+ name = CONFIG.get("documentRootFileIndex"),
43
+ template = "",
44
+ templateURI = CONFIG.get("documentRootFileIndex"),
45
+ headers = {},
46
+ body = "",
47
+ filename = "",
48
+ done
49
+ }:{
50
+ name:string, template:string, templateURI:string, headers:any, body:string, filename:string,
51
+ done:(headers:any, body:any, templateURI?:string,isTemplate?:boolean) => any
52
+ }) {
53
+ super({
54
+ name,
55
+ template,
56
+ templateURI,
57
+ headers,
58
+ body,
59
+ filename,
60
+ done
61
+ });
62
+
63
+ var o = this;
64
+
65
+ var scriptname = o.scriptname;
66
+ this.filename = scriptname;
67
+ var pathname = (o.pathname !== "") ? (o.pathname + "/") : ("");
68
+ var appTemplateInstance = this;
69
+ if (typeof appTemplateInstance.headers === "undefined"){
70
+ appTemplateInstance.headers = {
71
+ ":status": 500,
72
+ "content-type": "text/html"
73
+ };
74
+ }
75
+
76
+ appTemplateInstance.done = o.done.bind(appTemplateInstance);
77
+ appTemplateInstance.templateURI = CONFIG.get("documentRoot") + pathname + scriptname;
78
+ appTemplateInstance.templateURI = appTemplateInstance.templateURI.replace("//", "/");
79
+
80
+ if (appTemplateInstance.isTemplate()) {
81
+ fs.readFile(appTemplateInstance.templateURI, function (err:any, data:any) {
82
+ logger.debug("reading data from " + appTemplateInstance.templateURI);
83
+ if (typeof data !== "undefined") {
84
+ appTemplateInstance.template = data.toString();
85
+ appTemplateInstance._done();
86
+ } else {
87
+ appTemplateInstance.headers = {
88
+ ":status": 404,
89
+ "content-type": "text/html"
90
+ };
91
+ appTemplateInstance.done(
92
+ appTemplateInstance.headers,
93
+ "FILE NOT FOUND", "notfound.html", false);
94
+ logger.debug("file not found");
95
+ }
96
+ });
97
+ } else {
98
+ appTemplateInstance.headers[":status"] = 200;
99
+ appTemplateInstance.headers["content-type"] = mime.getType(appTemplateInstance.templateURI);
100
+ appTemplateInstance.done(
101
+ appTemplateInstance.headers,
102
+ "", appTemplateInstance.templateURI, false);
103
+ }
104
+
105
+ logger.info("FileDispatcher initialized");
106
+
107
+ }
108
+
109
+ file_extension() {
110
+ return this.filename.substr(this.filename.indexOf("."));
111
+ }
112
+ isTemplate() {
113
+ return CONFIG.get("useTemplate") && (this.file_extension() == ".html" || this.file_extension() == ".tpl.html");
114
+ }
115
+ _done() {
116
+ var appTemplateInstance = this;
117
+ const source = appTemplateInstance.template;
118
+ if (appTemplateInstance.isTemplate()) {
119
+
120
+ (New(Component, {
121
+ name: "static_source",
122
+ template: source,
123
+ cached: false,
124
+ tplsource: "inline",
125
+ data: {
126
+ title: "QCObjects"
127
+ },
128
+ done({
129
+ request,
130
+ component
131
+ }:{request:any, component:any}) {
132
+ appTemplateInstance.body = component.parsedAssignmentText;
133
+ return Promise.resolve({
134
+ request,
135
+ component
136
+ });
137
+ }
138
+ }));
139
+
140
+ } else {
141
+ appTemplateInstance.body = source;
142
+ }
143
+
144
+ if ([".png",
145
+ ".jpg",
146
+ ".jpeg",
147
+ ".json",
148
+ ".html",
149
+ ".tpl.html",
150
+ ".css",
151
+ ".js",
152
+ ".svg"
153
+ ].includes(appTemplateInstance.file_extension())) {
154
+ appTemplateInstance.headers["content-type"] = mime.getType(appTemplateInstance.templateURI);
155
+ appTemplateInstance.headers["cache-control"] = CONFIG.get("cacheControl", "max-age=31536000");
156
+ appTemplateInstance.done(
157
+ appTemplateInstance.headers,
158
+ appTemplateInstance.body,
159
+ appTemplateInstance.templateURI,
160
+ appTemplateInstance.isTemplate());
161
+ } else {
162
+ appTemplateInstance.done({
163
+ ":status": 403,
164
+ "content-type": "text/plain"
165
+ },
166
+ "FORBIDDEN", "notfound.html", false);
167
+ }
168
+ }
169
+ done(headers:any, body:any, templateURI = "", isTemplate = false) {}
170
+
171
+ }
172
+
173
+
174
+ Package("org.quickcorp.qcobjects.main.file", [
175
+ FileDispatcher
176
+ ]);
177
+
178
+ exports = {
179
+ FileDispatcher
180
+ };