qcobjects-cli 2.5.143-beta → 2.5.145-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 (270) hide show
  1. package/.cursor/rules/collaboration-features.mdc +25 -0
  2. package/.cursor/rules/development-guidelines.mdc +37 -0
  3. package/.cursor/rules/project-structure.mdc +36 -0
  4. package/.dockerignore +0 -0
  5. package/.github/FUNDING.yml +0 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  7. package/.github/ISSUE_TEMPLATE/custom.md +0 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. package/.github/ISSUE_TEMPLATE/issue-template.md +0 -0
  10. package/.github/workflows/ci.yml +26 -0
  11. package/.github/workflows/codeql-analysis.yml +0 -0
  12. package/.github/workflows/main-pr-source.yml +26 -0
  13. package/.github/workflows/npmpublish-beta.yml +18 -14
  14. package/.github/workflows/npmpublish-lts.yml +18 -14
  15. package/.github/workflows/npmpublish-main.yml +17 -13
  16. package/.github/workflows/open-pr-to-development.yml +70 -0
  17. package/.opencode/instructions/git-workflow.md +46 -0
  18. package/.pre-commit-config.yaml +9 -0
  19. package/AGENTS.md +59 -0
  20. package/CHANGELOG.md +0 -0
  21. package/README.md +75 -0
  22. package/VERSION +1 -1
  23. package/build-esbuild-esm.js +180 -0
  24. package/build-esbuild.js +182 -208
  25. package/deno.json +0 -0
  26. package/dev-requirements.txt +5 -0
  27. package/eslint.config.mjs +0 -0
  28. package/mod.ts +0 -0
  29. package/package.json +45 -44
  30. package/public/browser/api-client_services.js.map +1 -1
  31. package/public/browser/backend/backend-microservice-static.js +211 -219
  32. package/public/browser/backend/backend-microservice-static.js.map +2 -2
  33. package/public/browser/backend/backend-php.js +227 -231
  34. package/public/browser/backend/backend-php.js.map +3 -3
  35. package/public/browser/cli-commands-build-esbuild.js +326 -0
  36. package/public/browser/cli-commands-build-esbuild.js.map +7 -0
  37. package/public/browser/cli-commands-build-typescript.js +114 -0
  38. package/public/browser/cli-commands-build-typescript.js.map +7 -0
  39. package/public/browser/cli-commands-jira.js.map +1 -1
  40. package/public/browser/cli-commands-version.js.map +1 -1
  41. package/public/browser/cli-commands.js +4 -0
  42. package/public/browser/cli-commands.js.map +2 -2
  43. package/public/browser/cli-main.js.map +1 -1
  44. package/public/browser/client_services.js.map +1 -1
  45. package/public/browser/collab-server.js.map +1 -1
  46. package/public/browser/common-pipelog.js.map +1 -1
  47. package/public/browser/defaultsettings.js +68 -27
  48. package/public/browser/defaultsettings.js.map +3 -3
  49. package/public/browser/enterprise-commands.js.map +1 -1
  50. package/public/browser/main-file.js.map +1 -1
  51. package/public/browser/main-http-gae-server.js.map +1 -1
  52. package/public/browser/main-http-server.js.map +1 -1
  53. package/public/browser/main-http2-server.js.map +1 -1
  54. package/public/browser/qcobjects-cli.js.map +1 -1
  55. package/public/browser/qcobjects-collab.js +16 -24
  56. package/public/browser/qcobjects-collab.js.map +2 -2
  57. package/public/browser/qcobjects-createcert.js +46 -54
  58. package/public/browser/qcobjects-createcert.js.map +2 -2
  59. package/public/browser/qcobjects-gae-http-server.js +16 -24
  60. package/public/browser/qcobjects-gae-http-server.js.map +2 -2
  61. package/public/browser/qcobjects-http-server.js +16 -24
  62. package/public/browser/qcobjects-http-server.js.map +2 -2
  63. package/public/browser/qcobjects-http2-server.js +21 -30
  64. package/public/browser/qcobjects-http2-server.js.map +2 -2
  65. package/public/browser/qcobjects-shell.js.map +1 -1
  66. package/public/browser/templates/apps/spa-local.html +0 -0
  67. package/public/browser/templates/apps/spa-local.js +0 -0
  68. package/public/browser/templates/pwa/sw.js +0 -0
  69. package/public/browser/types/global/index.d.js +0 -9
  70. package/public/browser/types/global/index.d.js.map +3 -3
  71. package/public/cjs/api-client_services.js +74 -0
  72. package/public/cjs/api-client_services.js.map +1 -0
  73. package/public/cjs/backend/backend-microservice-static.js +255 -0
  74. package/public/cjs/backend/backend-microservice-static.js.map +1 -0
  75. package/public/cjs/backend/backend-php.js +317 -0
  76. package/public/cjs/backend/backend-php.js.map +1 -0
  77. package/public/cjs/cli-commands-build-esbuild.js +341 -0
  78. package/public/cjs/cli-commands-build-esbuild.js.map +1 -0
  79. package/public/cjs/cli-commands-build-typescript.js +127 -0
  80. package/public/cjs/cli-commands-build-typescript.js.map +1 -0
  81. package/public/cjs/cli-commands-jira.js +115 -0
  82. package/public/cjs/cli-commands-jira.js.map +1 -0
  83. package/public/cjs/cli-commands-publish-static.js +108 -0
  84. package/public/cjs/cli-commands-publish-static.js.map +1 -0
  85. package/public/cjs/cli-commands-version.js +250 -0
  86. package/public/cjs/cli-commands-version.js.map +1 -0
  87. package/public/cjs/cli-commands.js +73 -0
  88. package/public/cjs/cli-commands.js.map +1 -0
  89. package/public/cjs/cli-main.js +487 -0
  90. package/public/cjs/cli-main.js.map +1 -0
  91. package/public/cjs/client_services.js +80 -0
  92. package/public/cjs/client_services.js.map +1 -0
  93. package/public/cjs/collab-server.js +404 -0
  94. package/public/cjs/collab-server.js.map +1 -0
  95. package/public/cjs/common-pipelog.js +57 -0
  96. package/public/cjs/common-pipelog.js.map +1 -0
  97. package/public/cjs/defaultsettings.js +496 -0
  98. package/public/cjs/defaultsettings.js.map +1 -0
  99. package/public/cjs/enterprise-commands.js +173 -0
  100. package/public/cjs/enterprise-commands.js.map +1 -0
  101. package/public/cjs/index.js +38 -0
  102. package/public/cjs/index.js.map +1 -0
  103. package/public/cjs/main-file.js +161 -0
  104. package/public/cjs/main-file.js.map +1 -0
  105. package/public/cjs/main-http-gae-server.js +498 -0
  106. package/public/cjs/main-http-gae-server.js.map +1 -0
  107. package/public/cjs/main-http-server.js +540 -0
  108. package/public/cjs/main-http-server.js.map +1 -0
  109. package/public/cjs/main-http2-server.js +398 -0
  110. package/public/cjs/main-http2-server.js.map +1 -0
  111. package/public/cjs/qcobjects-cli.js +105 -0
  112. package/public/cjs/qcobjects-cli.js.map +1 -0
  113. package/public/cjs/qcobjects-collab.js +51 -0
  114. package/public/cjs/qcobjects-collab.js.map +1 -0
  115. package/public/cjs/qcobjects-createcert.js +89 -0
  116. package/public/cjs/qcobjects-createcert.js.map +1 -0
  117. package/public/cjs/qcobjects-gae-http-server.js +51 -0
  118. package/public/cjs/qcobjects-gae-http-server.js.map +1 -0
  119. package/public/cjs/qcobjects-http-server.js +51 -0
  120. package/public/cjs/qcobjects-http-server.js.map +1 -0
  121. package/public/cjs/qcobjects-http2-server.js +54 -0
  122. package/public/cjs/qcobjects-http2-server.js.map +1 -0
  123. package/public/cjs/qcobjects-shell.js +145 -0
  124. package/public/cjs/qcobjects-shell.js.map +1 -0
  125. package/public/cjs/templates/apps/spa-local.html +0 -0
  126. package/public/cjs/templates/apps/spa-local.js +0 -0
  127. package/public/cjs/templates/pwa/sw.js +0 -0
  128. package/public/esm/api-client_services.mjs.map +1 -1
  129. package/public/esm/backend/backend-microservice-static.mjs +207 -216
  130. package/public/esm/backend/backend-microservice-static.mjs.map +2 -2
  131. package/public/esm/backend/backend-php.mjs +228 -232
  132. package/public/esm/backend/backend-php.mjs.map +2 -2
  133. package/public/esm/cli-commands-build-esbuild.mjs +295 -0
  134. package/public/esm/cli-commands-build-esbuild.mjs.map +7 -0
  135. package/public/esm/cli-commands-build-typescript.mjs +83 -0
  136. package/public/esm/cli-commands-build-typescript.mjs.map +7 -0
  137. package/public/esm/cli-commands-jira.mjs +1 -1
  138. package/public/esm/cli-commands-jira.mjs.map +1 -1
  139. package/public/esm/cli-commands-version.mjs.map +1 -1
  140. package/public/esm/cli-commands.mjs +7 -3
  141. package/public/esm/cli-commands.mjs.map +2 -2
  142. package/public/esm/cli-main.mjs +6 -6
  143. package/public/esm/cli-main.mjs.map +1 -1
  144. package/public/esm/client_services.mjs.map +1 -1
  145. package/public/esm/collab-server.mjs.map +1 -1
  146. package/public/esm/common-pipelog.mjs.map +1 -1
  147. package/public/esm/defaultsettings.mjs +68 -27
  148. package/public/esm/defaultsettings.mjs.map +3 -3
  149. package/public/esm/enterprise-commands.mjs.map +1 -1
  150. package/public/esm/index.mjs +1 -1
  151. package/public/esm/main-file.mjs.map +1 -1
  152. package/public/esm/main-http-gae-server.mjs +2 -2
  153. package/public/esm/main-http-gae-server.mjs.map +1 -1
  154. package/public/esm/main-http-server.mjs +2 -2
  155. package/public/esm/main-http-server.mjs.map +1 -1
  156. package/public/esm/main-http2-server.mjs +2 -2
  157. package/public/esm/main-http2-server.mjs.map +1 -1
  158. package/public/esm/qcobjects-cli.mjs +2 -2
  159. package/public/esm/qcobjects-cli.mjs.map +1 -1
  160. package/public/esm/qcobjects-collab.mjs +14 -23
  161. package/public/esm/qcobjects-collab.mjs.map +2 -2
  162. package/public/esm/qcobjects-createcert.mjs +43 -52
  163. package/public/esm/qcobjects-createcert.mjs.map +2 -2
  164. package/public/esm/qcobjects-gae-http-server.mjs +14 -23
  165. package/public/esm/qcobjects-gae-http-server.mjs.map +2 -2
  166. package/public/esm/qcobjects-http-server.mjs +14 -23
  167. package/public/esm/qcobjects-http-server.mjs.map +2 -2
  168. package/public/esm/qcobjects-http2-server.mjs +21 -31
  169. package/public/esm/qcobjects-http2-server.mjs.map +2 -2
  170. package/public/esm/qcobjects-shell.mjs +1 -1
  171. package/public/esm/qcobjects-shell.mjs.map +1 -1
  172. package/public/esm/templates/apps/spa-local.html +0 -0
  173. package/public/esm/templates/apps/spa-local.js +0 -0
  174. package/public/esm/templates/pwa/sw.js +0 -0
  175. package/public/esm/types/global/index.d.mjs +0 -9
  176. package/public/esm/types/global/index.d.mjs.map +3 -3
  177. package/public/types/index.d.ts +29 -3
  178. package/spec/support/jasmine.json +0 -0
  179. package/spec/testsSpec.ts +0 -0
  180. package/src/api-client_services.ts +1 -1
  181. package/src/backend/backend-microservice-static.ts +196 -196
  182. package/src/backend/backend-php.ts +240 -245
  183. package/src/cli-commands-build-esbuild.ts +375 -0
  184. package/src/cli-commands-build-typescript.ts +139 -0
  185. package/src/cli-commands-jira.ts +1 -1
  186. package/src/cli-commands-publish-static.ts +0 -0
  187. package/src/cli-commands-version.ts +1 -1
  188. package/src/cli-commands.ts +3 -1
  189. package/src/cli-main.ts +1 -1
  190. package/src/client_services.ts +1 -1
  191. package/src/collab-server.ts +1 -1
  192. package/src/common-pipelog.ts +1 -1
  193. package/src/defaultsettings.ts +65 -19
  194. package/src/enterprise-commands.ts +1 -1
  195. package/src/index.ts +0 -0
  196. package/src/main-file.ts +1 -1
  197. package/src/main-http-gae-server.ts +1 -1
  198. package/src/main-http-server.ts +1 -1
  199. package/src/main-http2-server.ts +1 -1
  200. package/src/qcobjects-cli.ts +1 -1
  201. package/src/qcobjects-collab.ts +1 -1
  202. package/src/qcobjects-createcert.ts +1 -1
  203. package/src/qcobjects-gae-http-server.ts +1 -1
  204. package/src/qcobjects-http-server.ts +1 -1
  205. package/src/qcobjects-http2-server.ts +4 -5
  206. package/src/qcobjects-shell.ts +1 -1
  207. package/src/templates/apps/spa-local.html +0 -0
  208. package/src/templates/apps/spa-local.js +0 -0
  209. package/src/templates/pwa/sw.js +0 -0
  210. package/src/types/global/index.d.ts +0 -0
  211. package/transpile.js +0 -0
  212. package/tsconfig.d.json +0 -0
  213. package/tsconfig.jasmine.json +0 -0
  214. package/tsconfig.json +3 -3
  215. package/.gitlab-ci.yml +0 -16
  216. package/public/cjs/api-client_services.cjs +0 -79
  217. package/public/cjs/api-client_services.cjs.map +0 -7
  218. package/public/cjs/backend/backend-microservice-static.cjs +0 -245
  219. package/public/cjs/backend/backend-microservice-static.cjs.map +0 -7
  220. package/public/cjs/backend/backend-php.cjs +0 -301
  221. package/public/cjs/backend/backend-php.cjs.map +0 -7
  222. package/public/cjs/cli-commands-jira.cjs +0 -112
  223. package/public/cjs/cli-commands-jira.cjs.map +0 -7
  224. package/public/cjs/cli-commands-publish-static.cjs +0 -109
  225. package/public/cjs/cli-commands-publish-static.cjs.map +0 -7
  226. package/public/cjs/cli-commands-version.cjs +0 -252
  227. package/public/cjs/cli-commands-version.cjs.map +0 -7
  228. package/public/cjs/cli-commands.cjs +0 -45
  229. package/public/cjs/cli-commands.cjs.map +0 -7
  230. package/public/cjs/cli-main.cjs +0 -417
  231. package/public/cjs/cli-main.cjs.map +0 -7
  232. package/public/cjs/client_services.cjs +0 -86
  233. package/public/cjs/client_services.cjs.map +0 -7
  234. package/public/cjs/collab-server.cjs +0 -444
  235. package/public/cjs/collab-server.cjs.map +0 -7
  236. package/public/cjs/common-pipelog.cjs +0 -50
  237. package/public/cjs/common-pipelog.cjs.map +0 -7
  238. package/public/cjs/defaultsettings.cjs +0 -432
  239. package/public/cjs/defaultsettings.cjs.map +0 -7
  240. package/public/cjs/enterprise-commands.cjs +0 -175
  241. package/public/cjs/enterprise-commands.cjs.map +0 -7
  242. package/public/cjs/index.cjs +0 -36
  243. package/public/cjs/index.cjs.map +0 -7
  244. package/public/cjs/main-file.cjs +0 -194
  245. package/public/cjs/main-file.cjs.map +0 -7
  246. package/public/cjs/main-http-gae-server.cjs +0 -522
  247. package/public/cjs/main-http-gae-server.cjs.map +0 -7
  248. package/public/cjs/main-http-server.cjs +0 -588
  249. package/public/cjs/main-http-server.cjs.map +0 -7
  250. package/public/cjs/main-http2-server.cjs +0 -431
  251. package/public/cjs/main-http2-server.cjs.map +0 -7
  252. package/public/cjs/qcobjects-cli.cjs +0 -92
  253. package/public/cjs/qcobjects-cli.cjs.map +0 -7
  254. package/public/cjs/qcobjects-collab.cjs +0 -43
  255. package/public/cjs/qcobjects-collab.cjs.map +0 -7
  256. package/public/cjs/qcobjects-createcert.cjs +0 -75
  257. package/public/cjs/qcobjects-createcert.cjs.map +0 -7
  258. package/public/cjs/qcobjects-gae-http-server.cjs +0 -43
  259. package/public/cjs/qcobjects-gae-http-server.cjs.map +0 -7
  260. package/public/cjs/qcobjects-http-server.cjs +0 -43
  261. package/public/cjs/qcobjects-http-server.cjs.map +0 -7
  262. package/public/cjs/qcobjects-http2-server.cjs +0 -49
  263. package/public/cjs/qcobjects-http2-server.cjs.map +0 -7
  264. package/public/cjs/qcobjects-shell.cjs +0 -185
  265. package/public/cjs/qcobjects-shell.cjs.map +0 -7
  266. package/public/cjs/types/global/index.d.cjs +0 -2
  267. package/public/cjs/types/global/index.d.cjs.map +0 -7
  268. package/public/types/index.d.ts.map +0 -1
  269. package/src/index.cts +0 -2
  270. package/src/index.mts +0 -2
@@ -0,0 +1,498 @@
1
+ /**
2
+ * QCObjects CLI 2.5
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.HTTPServer = void 0;
37
+ const qcobjects_1 = require("qcobjects");
38
+ const node_os_1 = __importDefault(require("node:os"));
39
+ const node_path_1 = __importDefault(require("node:path"));
40
+ const node_fs_1 = __importDefault(require("node:fs"));
41
+ const node_http_1 = __importDefault(require("node:http"));
42
+ const mime_1 = __importDefault(require("mime"));
43
+ const url_1 = require("url");
44
+ const main_file_1 = require("./main-file");
45
+ const common_pipelog_1 = require("./common-pipelog");
46
+ class HTTPServer extends qcobjects_1.InheritClass {
47
+ interceptorInstances;
48
+ server;
49
+ request;
50
+ response;
51
+ constructor({ request = null, response = "", server = null, scriptname = "", interceptorInstances = [] }) {
52
+ super({
53
+ request,
54
+ response,
55
+ server,
56
+ scriptname,
57
+ interceptorInstances
58
+ });
59
+ const oHTTPServer = this;
60
+ const welcometo = "Welcome to \n";
61
+ const instructions = "QCObjects Legacy HTTPServer \n";
62
+ const logo = " .d88888b. .d8888b. .d88888b. 888 d8b 888 \r\nd88P\" \"Y88bd88P Y88bd88P\" \"Y88b888 Y8P 888 \r\n888 888888 888888 888888 888 \r\n888 888888 888 88888888b. 8888 .d88b. .d8888b888888.d8888b \r\n888 888888 888 888888 \"88b \"888d8P Y8bd88P\" 888 88K \r\n888 Y8b 888888 888888 888888 888 88888888888888 888 \"Y8888b. \r\nY88b.Y8b88PY88b d88PY88b. .d88P888 d88P 888Y8b. Y88b. Y88b. X88 \r\n \"Y888888\" \"Y8888P\" \"Y88888P\" 88888P\" 888 \"Y8888 \"Y8888P \"Y888 88888P' \r\n Y8b 888 \r\n d88P \r\n 888P\" ";
63
+ console.log(welcometo);
64
+ console.log(logo);
65
+ console.log(instructions);
66
+ qcobjects_1.logger.debug(this.showIPAddress());
67
+ qcobjects_1.logger.info("Listening on HTTP PORT: " + qcobjects_1.CONFIG.get("serverPortHTTP").toString());
68
+ qcobjects_1.logger.info("Go to: \n" + this.showPossibleURL());
69
+ this.interceptorInstances = interceptorInstances;
70
+ oHTTPServer.server = node_http_1.default.createServer((req, res) => {
71
+ });
72
+ server = oHTTPServer.server;
73
+ server?.on("error", (err) => console.error(err));
74
+ if (qcobjects_1.global.get("backendAvailable")) {
75
+ qcobjects_1.logger.info("Loading backend interceptors...");
76
+ const interceptors = qcobjects_1.CONFIG.get("backend", {}).interceptors;
77
+ if (typeof interceptors !== "undefined") {
78
+ qcobjects_1.logger.info("Backend Interceptors Available");
79
+ interceptors.map((interceptor) => {
80
+ ImportMicroservice(interceptor.microservice);
81
+ var interceptorClassFactory = (0, qcobjects_1.ClassFactory)(interceptor.microservice + ".Interceptor");
82
+ var interceptorInstance = (0, qcobjects_1.New)(interceptorClassFactory, {
83
+ domain: qcobjects_1.CONFIG.get("domain"),
84
+ basePath: qcobjects_1.CONFIG.get("basePath"),
85
+ projectPath: qcobjects_1.CONFIG.get("projectPath"),
86
+ interceptor: interceptor,
87
+ server: server
88
+ });
89
+ oHTTPServer.interceptorInstances.push(interceptorInstance);
90
+ });
91
+ }
92
+ }
93
+ server.on("request", (req, res) => {
94
+ const request = Object.assign((0, qcobjects_1.New)(HTTPServerRequest), url_1.URL.parse(req.url));
95
+ request.headers = req.headers;
96
+ this.request = request;
97
+ this.request.method = req.method;
98
+ this.request.path = req.url;
99
+ server.setMaxListeners(9999999999);
100
+ qcobjects_1.CONFIG.set("backendTimeout", qcobjects_1.CONFIG.get("backendTimeout") || 20000);
101
+ var timeoutHandler = () => {
102
+ // end the stream on timeout
103
+ try {
104
+ if (!res.destroyed) {
105
+ qcobjects_1.logger.info("A timeout occurred..." + qcobjects_1.CONFIG.get("backendTimeout").toString());
106
+ qcobjects_1.logger.info("Killing session...");
107
+ res.writeHeader(500, {
108
+ "content-type": "text/html"
109
+ });
110
+ res.on("error", () => { });
111
+ res.write("<h1>500 - INTERNAL SERVER ERROR (TIMEOUT)</h1>");
112
+ res.end();
113
+ }
114
+ else {
115
+ qcobjects_1.logger.debug("Session was normally finishing...");
116
+ }
117
+ }
118
+ catch (e) {
119
+ qcobjects_1.logger.debug("An unhandled error occurred during timeout catching...");
120
+ qcobjects_1.logger.debug(e.message);
121
+ }
122
+ server.removeListener("timeout", timeoutHandler);
123
+ };
124
+ if (!res.destroyed) {
125
+ server.setTimeout(qcobjects_1.CONFIG.get("backendTimeout"), timeoutHandler);
126
+ }
127
+ if (this.request.pathname.indexOf(".") < 0) {
128
+ this.request.scriptname = qcobjects_1.CONFIG.get("documentRootFileIndex");
129
+ }
130
+ else {
131
+ this.request.scriptname = this.request.pathname.split("/").reverse()[0];
132
+ }
133
+ this.request.pathname = this.request.pathname.substr(0, this.request.pathname.lastIndexOf("/"));
134
+ qcobjects_1.logger.debug(common_pipelog_1.PipeLog.pipe(this.request));
135
+ if (qcobjects_1.global.get("backendAvailable")) {
136
+ qcobjects_1.logger.info("Backend GAE Microservices Available");
137
+ const routes = qcobjects_1.CONFIG.get("backend").routes;
138
+ const selectedRoute = routes.filter((route) => {
139
+ const standardRoutePath = route.path.replace(/{(.*?)}/g, "(?<$1>.*)");
140
+ return (new RegExp(standardRoutePath, "g")).test(request.path);
141
+ });
142
+ if (selectedRoute.length > 0) {
143
+ selectedRoute.map((route) => {
144
+ const standardRoutePath = route.path.replace(/{(.*?)}/g, "(?<$1>.*)"); //allowing {param}
145
+ const selectedRouteParams = {
146
+ ...[...request.path.matchAll((new RegExp(standardRoutePath, "g")))][0]["groups"]
147
+ };
148
+ ImportMicroservice(route.microservice);
149
+ var microServiceClassFactory = (0, qcobjects_1.ClassFactory)(route.microservice + ".Microservice");
150
+ this.response = (0, qcobjects_1.New)(microServiceClassFactory, {
151
+ domain: qcobjects_1.CONFIG.get("domain"),
152
+ basePath: qcobjects_1.CONFIG.get("basePath"),
153
+ projectPath: qcobjects_1.CONFIG.get("projectPath"),
154
+ route: route,
155
+ routeParams: selectedRouteParams,
156
+ server: server,
157
+ stream: res,
158
+ req: req,
159
+ request: request
160
+ });
161
+ });
162
+ }
163
+ else {
164
+ this.response = (0, qcobjects_1.New)(HTTPServerResponse, {
165
+ server: server,
166
+ stream: res,
167
+ request: this.request
168
+ });
169
+ }
170
+ }
171
+ else {
172
+ // ...
173
+ this.response = (0, qcobjects_1.New)(HTTPServerResponse, {
174
+ server: server,
175
+ stream: res,
176
+ request: this.request
177
+ });
178
+ }
179
+ });
180
+ }
181
+ showIPAddress() {
182
+ var _ret_ = "";
183
+ var ifaces = node_os_1.default.networkInterfaces();
184
+ Object.keys(ifaces).forEach(function (iface) {
185
+ ifaces[iface]?.forEach(function (ipGroup) {
186
+ _ret_ += iface + ": " + common_pipelog_1.PipeLog.pipe(ipGroup) + "\n";
187
+ });
188
+ });
189
+ return _ret_;
190
+ }
191
+ showPossibleURL() {
192
+ var _ret_ = "";
193
+ var ifaces = node_os_1.default.networkInterfaces();
194
+ Object.keys(ifaces).forEach(function (iface) {
195
+ ifaces[iface]?.forEach((ipGroup) => {
196
+ if (ipGroup["family"].toLowerCase() == "ipv4") {
197
+ _ret_ += "http://" + ipGroup["address"] + ":" + qcobjects_1.CONFIG.get("serverPortHTTP").toString() + "/\n";
198
+ }
199
+ });
200
+ });
201
+ return _ret_;
202
+ }
203
+ start() {
204
+ var server = this.server;
205
+ server.listen(process.env.PORT || qcobjects_1.CONFIG.get("serverPortHTTP"));
206
+ }
207
+ }
208
+ exports.HTTPServer = HTTPServer;
209
+ const absolutePath = node_path_1.default.resolve(__dirname, "./");
210
+ const ImportMicroservice = function (microservicePackage) {
211
+ var _ret_;
212
+ var standardPath = (0, qcobjects_1.findPackageNodePath)(microservicePackage) || (0, qcobjects_1.findPackageNodePath)(microservicePackage + ".js");
213
+ if (standardPath !== null) {
214
+ _ret_ = (0, qcobjects_1.Import)(microservicePackage);
215
+ }
216
+ else {
217
+ var nonStandardPath = (0, qcobjects_1.findPackageNodePath)(absolutePath + "/backend/" + microservicePackage) || (0, qcobjects_1.findPackageNodePath)(absolutePath + "/backend/" + microservicePackage + ".js");
218
+ if (nonStandardPath !== null) {
219
+ _ret_ = (0, qcobjects_1.Import)(absolutePath + "/backend/" + microservicePackage);
220
+ }
221
+ else {
222
+ _ret_ = Promise.resolve(async () => (await import(microservicePackage))());
223
+ }
224
+ }
225
+ return _ret_;
226
+ };
227
+ class BackendMicroservice extends qcobjects_1.InheritClass {
228
+ domain;
229
+ basePath;
230
+ server;
231
+ request;
232
+ req;
233
+ get;
234
+ route;
235
+ headers;
236
+ body;
237
+ stream;
238
+ constructor(o) {
239
+ super(o);
240
+ this.domain = qcobjects_1.CONFIG.get("domain");
241
+ this.basePath = qcobjects_1.CONFIG.get("basePath");
242
+ qcobjects_1.logger.debug("Executing GAE HTTP BackendMicroservice ");
243
+ const microservice = this;
244
+ const server = microservice.server;
245
+ const request = microservice.request;
246
+ this.cors();
247
+ microservice.req.on("data", (data) => {
248
+ // data from POST, GET
249
+ var requestMethod = request.method.toLowerCase();
250
+ var supportedMethods = {
251
+ "post": microservice.post.bind(this),
252
+ };
253
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
254
+ supportedMethods[requestMethod].call(microservice, data);
255
+ }
256
+ });
257
+ // data from POST, GET
258
+ var requestMethod = request.method.toLowerCase();
259
+ var supportedMethods = {
260
+ "get": microservice.get.bind(this),
261
+ "head": microservice.head.bind(this),
262
+ "put": microservice.put.bind(this),
263
+ "delete": microservice.delete.bind(this),
264
+ "connect": microservice.connect.bind(this),
265
+ "options": microservice.options.bind(this),
266
+ "trace": microservice.trace.bind(this),
267
+ "patch": microservice.patch.bind(this)
268
+ };
269
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
270
+ supportedMethods[requestMethod].call(microservice);
271
+ }
272
+ }
273
+ cors() {
274
+ if (this.route.cors) {
275
+ const { allow_origins, allow_credentials, allow_methods, allow_headers } = this.route.cors;
276
+ var microservice = this;
277
+ if (typeof microservice.headers !== "object") {
278
+ microservice.headers = {};
279
+ }
280
+ if (typeof allow_origins !== "undefined") {
281
+ // an example of allow_origins is ['https://example.com','http://www.example.com']
282
+ if (allow_origins == "*" || (typeof microservice.request.headers.origin == "undefined") || [...allow_origins].indexOf(microservice.request.headers.origin) !== -1) {
283
+ // for compatibility with all browsers allways return a wildcard when the origin is allowed
284
+ microservice.headers["Access-Control-Allow-Origin"] = "*";
285
+ }
286
+ else {
287
+ qcobjects_1.logger.debug("Origin is not allowed: " + microservice.request.headers.origin);
288
+ qcobjects_1.logger.debug("Forcing to finish the response...");
289
+ this.body = {};
290
+ try {
291
+ this.done();
292
+ }
293
+ catch (e) { }
294
+ }
295
+ }
296
+ else {
297
+ microservice.headers["Access-Control-Allow-Origin"] = "*";
298
+ }
299
+ if (typeof allow_credentials !== "undefined") {
300
+ microservice.headers["Access-Control-Allow-Credentials"] = allow_credentials.toString();
301
+ }
302
+ else {
303
+ microservice.headers["Access-Control-Allow-Credentials"] = "true";
304
+ }
305
+ if (typeof allow_methods !== "undefined") {
306
+ microservice.headers["Access-Control-Allow-Methods"] = [...allow_methods].join(",");
307
+ }
308
+ else {
309
+ microservice.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS, POST";
310
+ }
311
+ if (typeof allow_headers !== "undefined") {
312
+ microservice.headers["Access-Control-Allow-Headers"] = [...allow_headers].join(",");
313
+ }
314
+ else {
315
+ microservice.headers["Access-Control-Allow-Headers"] = "*";
316
+ }
317
+ }
318
+ }
319
+ head(formData) {
320
+ this.done();
321
+ }
322
+ post(formData) {
323
+ this.done();
324
+ }
325
+ put(formData) {
326
+ this.done();
327
+ }
328
+ delete(formData) {
329
+ this.done();
330
+ }
331
+ connect(formData) {
332
+ this.done();
333
+ }
334
+ options(formData) {
335
+ this.done();
336
+ }
337
+ trace(formData) {
338
+ this.done();
339
+ }
340
+ patch(formData) {
341
+ this.done();
342
+ }
343
+ finishWithBody(stream) {
344
+ try {
345
+ stream.write(JSON.stringify(this.body));
346
+ stream.end();
347
+ }
348
+ catch (e) {
349
+ qcobjects_1.logger.debug("Something wrong writing the response for microservice" + e.toString());
350
+ }
351
+ }
352
+ done() {
353
+ var microservice = this;
354
+ var stream = microservice.stream;
355
+ try {
356
+ stream.writeHead(200, microservice.headers);
357
+ }
358
+ catch (e) {
359
+ qcobjects_1.logger.debug("Something went wront while sending headers in http...");
360
+ qcobjects_1.logger.debug(e.toString());
361
+ }
362
+ if (microservice.body != null) {
363
+ microservice.finishWithBody.call(microservice, stream);
364
+ }
365
+ }
366
+ }
367
+ (0, qcobjects_1.Export)(BackendMicroservice);
368
+ class HTTPServerResponse extends qcobjects_1.InheritClass {
369
+ body;
370
+ stream;
371
+ headers;
372
+ fileDispatcher;
373
+ request;
374
+ constructor(o) {
375
+ super(o);
376
+ var self = this;
377
+ self.body = "";
378
+ self.request = o.request || {};
379
+ self.stream = o.stream;
380
+ self.headers = o.headers;
381
+ self.fileDispatcher = o.fileDispatcher;
382
+ // Initialize request properties if not set
383
+ if (!self.request.scriptname || !self.request.pathname) {
384
+ const defaultPath = "/";
385
+ self.request.pathname = self.request.pathname || defaultPath;
386
+ self.request.scriptname = self.request.scriptname || qcobjects_1.CONFIG.get("documentRootFileIndex", "index.html");
387
+ }
388
+ // Ensure documentRoot is set
389
+ if (!qcobjects_1.CONFIG.get("documentRoot")) {
390
+ qcobjects_1.CONFIG.set("documentRoot", node_path_1.default.join(process.cwd(), "public"));
391
+ }
392
+ self._generateResponse();
393
+ this.headers = {
394
+ ":status": 200,
395
+ "content-type": "text/html"
396
+ };
397
+ }
398
+ sendFile(stream, fileName) {
399
+ // read and send file content in the stream
400
+ try {
401
+ console.log("trying to read " + fileName);
402
+ const fd = node_fs_1.default.openSync(fileName, "r");
403
+ const stat = node_fs_1.default.fstatSync(fd);
404
+ const headers = {
405
+ "content-length": stat.size,
406
+ "last-modified": stat.mtime.toUTCString(),
407
+ "content-type": mime_1.default.getType(fileName),
408
+ "cache-control": qcobjects_1.CONFIG.get("cacheControl", "max-age=31536000")
409
+ };
410
+ qcobjects_1.logger.debug("closing file " + fileName);
411
+ node_fs_1.default.closeSync(fd);
412
+ stream.setHeader("content-length", headers["content-length"]);
413
+ stream.setHeader("last-modified", headers["last-modified"]);
414
+ stream.setHeader("content-type", headers["content-type"]);
415
+ stream.setHeader("cache-control", headers["cache-control"]);
416
+ // This line opens the file as a readable stream
417
+ var readStream = node_fs_1.default.createReadStream(fileName);
418
+ // This will wait until we know the readable stream is actually valid before piping
419
+ readStream.on("open", function () {
420
+ // This just pipes the read stream to the response object (which goes to the client)
421
+ readStream.pipe(stream);
422
+ });
423
+ readStream.on("end", function () {
424
+ stream.end();
425
+ });
426
+ // This catches any errors that happen while creating the readable stream (usually invalid names)
427
+ readStream.on("error", function (err) {
428
+ stream.end(err);
429
+ });
430
+ }
431
+ catch (e) {
432
+ if (e.errno == -2) {
433
+ const headers = {
434
+ ":status": 404,
435
+ "content-type": "text/html"
436
+ };
437
+ stream.write("<h1>404 - FILE NOT FOUND</h1>");
438
+ stream.on("close", () => {
439
+ console.log("closing file", fileName);
440
+ });
441
+ stream.end();
442
+ }
443
+ }
444
+ }
445
+ _generateResponse() {
446
+ var response = this;
447
+ response.fileDispatcher = (0, qcobjects_1.New)(main_file_1.FileDispatcher, {
448
+ scriptname: response.request.scriptname,
449
+ pathname: response.request.pathname,
450
+ done(headers, body, templateURI, isTemplate) {
451
+ response.headers = headers;
452
+ var stream = response.stream;
453
+ if (isTemplate) {
454
+ qcobjects_1.logger.debug("TEMPLATE");
455
+ response.body = body;
456
+ // stream.respond(response.headers);
457
+ stream.write(response.body);
458
+ stream.end();
459
+ }
460
+ else if (headers[":status"] == 200) {
461
+ response.sendFile(stream, templateURI);
462
+ }
463
+ else {
464
+ qcobjects_1.logger.debug("NONE ");
465
+ // stream.respond(response.headers);
466
+ stream.end();
467
+ }
468
+ }
469
+ });
470
+ }
471
+ }
472
+ class HTTPServerRequest extends qcobjects_1.InheritClass {
473
+ constructor({ scriptname = "", path = "", method = "", url = "", headers = null, flags = null, protocol = null, slashes = null, auth = null, host = null, port = null, hostname = null, hash = null, search = "", query = "", pathname = "", href = "" }) {
474
+ super({
475
+ scriptname,
476
+ path,
477
+ method,
478
+ url,
479
+ headers,
480
+ flags,
481
+ protocol,
482
+ slashes,
483
+ auth,
484
+ host,
485
+ port,
486
+ hostname,
487
+ hash,
488
+ search,
489
+ query,
490
+ pathname,
491
+ href
492
+ });
493
+ }
494
+ }
495
+ (0, qcobjects_1.Package)("org.quickcorp.qcobjects.main.http.gae.server", [
496
+ BackendMicroservice, HTTPServer, HTTPServerRequest, HTTPServerResponse
497
+ ]);
498
+ //# sourceMappingURL=main-http-gae-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-http-gae-server.js","sourceRoot":"","sources":["../../src/main-http-gae-server.ts"],"names":[],"mappings":"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"}