qcobjects-cli 2.5.143-beta → 2.5.144-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 +20 -13
  14. package/.github/workflows/npmpublish-lts.yml +20 -13
  15. package/.github/workflows/npmpublish-main.yml +19 -12
  16. package/.github/workflows/open-pr-to-development.yml +70 -0
  17. package/.gitlab-ci.yml +0 -0
  18. package/.opencode/instructions/git-workflow.md +46 -0
  19. package/.pre-commit-config.yaml +9 -0
  20. package/AGENTS.md +59 -0
  21. package/CHANGELOG.md +0 -0
  22. package/README.md +75 -0
  23. package/VERSION +1 -1
  24. package/build-esbuild-esm.js +180 -0
  25. package/build-esbuild.js +182 -208
  26. package/deno.json +0 -0
  27. package/dev-requirements.txt +5 -0
  28. package/eslint.config.mjs +0 -0
  29. package/mod.ts +0 -0
  30. package/package.json +45 -44
  31. package/public/browser/api-client_services.js.map +1 -1
  32. package/public/browser/backend/backend-microservice-static.js +211 -219
  33. package/public/browser/backend/backend-microservice-static.js.map +2 -2
  34. package/public/browser/backend/backend-php.js +227 -231
  35. package/public/browser/backend/backend-php.js.map +3 -3
  36. package/public/browser/cli-commands-build-esbuild.js +326 -0
  37. package/public/browser/cli-commands-build-esbuild.js.map +7 -0
  38. package/public/browser/cli-commands-build-typescript.js +114 -0
  39. package/public/browser/cli-commands-build-typescript.js.map +7 -0
  40. package/public/browser/cli-commands-jira.js.map +1 -1
  41. package/public/browser/cli-commands-version.js.map +1 -1
  42. package/public/browser/cli-commands.js +4 -0
  43. package/public/browser/cli-commands.js.map +2 -2
  44. package/public/browser/cli-main.js.map +1 -1
  45. package/public/browser/client_services.js.map +1 -1
  46. package/public/browser/collab-server.js.map +1 -1
  47. package/public/browser/common-pipelog.js.map +1 -1
  48. package/public/browser/defaultsettings.js +68 -27
  49. package/public/browser/defaultsettings.js.map +3 -3
  50. package/public/browser/enterprise-commands.js.map +1 -1
  51. package/public/browser/main-file.js.map +1 -1
  52. package/public/browser/main-http-gae-server.js.map +1 -1
  53. package/public/browser/main-http-server.js.map +1 -1
  54. package/public/browser/main-http2-server.js.map +1 -1
  55. package/public/browser/qcobjects-cli.js.map +1 -1
  56. package/public/browser/qcobjects-collab.js +16 -24
  57. package/public/browser/qcobjects-collab.js.map +2 -2
  58. package/public/browser/qcobjects-createcert.js +46 -54
  59. package/public/browser/qcobjects-createcert.js.map +2 -2
  60. package/public/browser/qcobjects-gae-http-server.js +16 -24
  61. package/public/browser/qcobjects-gae-http-server.js.map +2 -2
  62. package/public/browser/qcobjects-http-server.js +16 -24
  63. package/public/browser/qcobjects-http-server.js.map +2 -2
  64. package/public/browser/qcobjects-http2-server.js +21 -30
  65. package/public/browser/qcobjects-http2-server.js.map +2 -2
  66. package/public/browser/qcobjects-shell.js.map +1 -1
  67. package/public/browser/templates/apps/spa-local.html +0 -0
  68. package/public/browser/templates/apps/spa-local.js +0 -0
  69. package/public/browser/templates/pwa/sw.js +0 -0
  70. package/public/browser/types/global/index.d.js +0 -9
  71. package/public/browser/types/global/index.d.js.map +3 -3
  72. package/public/cjs/api-client_services.js +74 -0
  73. package/public/cjs/api-client_services.js.map +1 -0
  74. package/public/cjs/backend/backend-microservice-static.js +255 -0
  75. package/public/cjs/backend/backend-microservice-static.js.map +1 -0
  76. package/public/cjs/backend/backend-php.js +317 -0
  77. package/public/cjs/backend/backend-php.js.map +1 -0
  78. package/public/cjs/cli-commands-build-esbuild.js +341 -0
  79. package/public/cjs/cli-commands-build-esbuild.js.map +1 -0
  80. package/public/cjs/cli-commands-build-typescript.js +127 -0
  81. package/public/cjs/cli-commands-build-typescript.js.map +1 -0
  82. package/public/cjs/cli-commands-jira.js +115 -0
  83. package/public/cjs/cli-commands-jira.js.map +1 -0
  84. package/public/cjs/cli-commands-publish-static.js +108 -0
  85. package/public/cjs/cli-commands-publish-static.js.map +1 -0
  86. package/public/cjs/cli-commands-version.js +250 -0
  87. package/public/cjs/cli-commands-version.js.map +1 -0
  88. package/public/cjs/cli-commands.js +73 -0
  89. package/public/cjs/cli-commands.js.map +1 -0
  90. package/public/cjs/cli-main.js +487 -0
  91. package/public/cjs/cli-main.js.map +1 -0
  92. package/public/cjs/client_services.js +80 -0
  93. package/public/cjs/client_services.js.map +1 -0
  94. package/public/cjs/collab-server.js +404 -0
  95. package/public/cjs/collab-server.js.map +1 -0
  96. package/public/cjs/common-pipelog.js +57 -0
  97. package/public/cjs/common-pipelog.js.map +1 -0
  98. package/public/cjs/defaultsettings.js +496 -0
  99. package/public/cjs/defaultsettings.js.map +1 -0
  100. package/public/cjs/enterprise-commands.js +173 -0
  101. package/public/cjs/enterprise-commands.js.map +1 -0
  102. package/public/cjs/index.js +38 -0
  103. package/public/cjs/index.js.map +1 -0
  104. package/public/cjs/main-file.js +161 -0
  105. package/public/cjs/main-file.js.map +1 -0
  106. package/public/cjs/main-http-gae-server.js +498 -0
  107. package/public/cjs/main-http-gae-server.js.map +1 -0
  108. package/public/cjs/main-http-server.js +540 -0
  109. package/public/cjs/main-http-server.js.map +1 -0
  110. package/public/cjs/main-http2-server.js +398 -0
  111. package/public/cjs/main-http2-server.js.map +1 -0
  112. package/public/cjs/qcobjects-cli.js +105 -0
  113. package/public/cjs/qcobjects-cli.js.map +1 -0
  114. package/public/cjs/qcobjects-collab.js +51 -0
  115. package/public/cjs/qcobjects-collab.js.map +1 -0
  116. package/public/cjs/qcobjects-createcert.js +89 -0
  117. package/public/cjs/qcobjects-createcert.js.map +1 -0
  118. package/public/cjs/qcobjects-gae-http-server.js +51 -0
  119. package/public/cjs/qcobjects-gae-http-server.js.map +1 -0
  120. package/public/cjs/qcobjects-http-server.js +51 -0
  121. package/public/cjs/qcobjects-http-server.js.map +1 -0
  122. package/public/cjs/qcobjects-http2-server.js +54 -0
  123. package/public/cjs/qcobjects-http2-server.js.map +1 -0
  124. package/public/cjs/qcobjects-shell.js +145 -0
  125. package/public/cjs/qcobjects-shell.js.map +1 -0
  126. package/public/cjs/templates/apps/spa-local.html +0 -0
  127. package/public/cjs/templates/apps/spa-local.js +0 -0
  128. package/public/cjs/templates/pwa/sw.js +0 -0
  129. package/public/esm/api-client_services.mjs.map +1 -1
  130. package/public/esm/backend/backend-microservice-static.mjs +207 -216
  131. package/public/esm/backend/backend-microservice-static.mjs.map +2 -2
  132. package/public/esm/backend/backend-php.mjs +228 -232
  133. package/public/esm/backend/backend-php.mjs.map +2 -2
  134. package/public/esm/cli-commands-build-esbuild.mjs +295 -0
  135. package/public/esm/cli-commands-build-esbuild.mjs.map +7 -0
  136. package/public/esm/cli-commands-build-typescript.mjs +83 -0
  137. package/public/esm/cli-commands-build-typescript.mjs.map +7 -0
  138. package/public/esm/cli-commands-jira.mjs +1 -1
  139. package/public/esm/cli-commands-jira.mjs.map +1 -1
  140. package/public/esm/cli-commands-version.mjs.map +1 -1
  141. package/public/esm/cli-commands.mjs +7 -3
  142. package/public/esm/cli-commands.mjs.map +2 -2
  143. package/public/esm/cli-main.mjs +6 -6
  144. package/public/esm/cli-main.mjs.map +1 -1
  145. package/public/esm/client_services.mjs.map +1 -1
  146. package/public/esm/collab-server.mjs.map +1 -1
  147. package/public/esm/common-pipelog.mjs.map +1 -1
  148. package/public/esm/defaultsettings.mjs +68 -27
  149. package/public/esm/defaultsettings.mjs.map +3 -3
  150. package/public/esm/enterprise-commands.mjs.map +1 -1
  151. package/public/esm/index.mjs +1 -1
  152. package/public/esm/main-file.mjs.map +1 -1
  153. package/public/esm/main-http-gae-server.mjs +2 -2
  154. package/public/esm/main-http-gae-server.mjs.map +1 -1
  155. package/public/esm/main-http-server.mjs +2 -2
  156. package/public/esm/main-http-server.mjs.map +1 -1
  157. package/public/esm/main-http2-server.mjs +2 -2
  158. package/public/esm/main-http2-server.mjs.map +1 -1
  159. package/public/esm/qcobjects-cli.mjs +2 -2
  160. package/public/esm/qcobjects-cli.mjs.map +1 -1
  161. package/public/esm/qcobjects-collab.mjs +14 -23
  162. package/public/esm/qcobjects-collab.mjs.map +2 -2
  163. package/public/esm/qcobjects-createcert.mjs +43 -52
  164. package/public/esm/qcobjects-createcert.mjs.map +2 -2
  165. package/public/esm/qcobjects-gae-http-server.mjs +14 -23
  166. package/public/esm/qcobjects-gae-http-server.mjs.map +2 -2
  167. package/public/esm/qcobjects-http-server.mjs +14 -23
  168. package/public/esm/qcobjects-http-server.mjs.map +2 -2
  169. package/public/esm/qcobjects-http2-server.mjs +21 -31
  170. package/public/esm/qcobjects-http2-server.mjs.map +2 -2
  171. package/public/esm/qcobjects-shell.mjs +1 -1
  172. package/public/esm/qcobjects-shell.mjs.map +1 -1
  173. package/public/esm/templates/apps/spa-local.html +0 -0
  174. package/public/esm/templates/apps/spa-local.js +0 -0
  175. package/public/esm/templates/pwa/sw.js +0 -0
  176. package/public/esm/types/global/index.d.mjs +0 -9
  177. package/public/esm/types/global/index.d.mjs.map +3 -3
  178. package/public/types/index.d.ts +29 -3
  179. package/spec/support/jasmine.json +0 -0
  180. package/spec/testsSpec.ts +0 -0
  181. package/src/api-client_services.ts +1 -1
  182. package/src/backend/backend-microservice-static.ts +196 -196
  183. package/src/backend/backend-php.ts +240 -245
  184. package/src/cli-commands-build-esbuild.ts +375 -0
  185. package/src/cli-commands-build-typescript.ts +139 -0
  186. package/src/cli-commands-jira.ts +1 -1
  187. package/src/cli-commands-publish-static.ts +0 -0
  188. package/src/cli-commands-version.ts +1 -1
  189. package/src/cli-commands.ts +3 -1
  190. package/src/cli-main.ts +1 -1
  191. package/src/client_services.ts +1 -1
  192. package/src/collab-server.ts +1 -1
  193. package/src/common-pipelog.ts +1 -1
  194. package/src/defaultsettings.ts +65 -19
  195. package/src/enterprise-commands.ts +1 -1
  196. package/src/index.ts +0 -0
  197. package/src/main-file.ts +1 -1
  198. package/src/main-http-gae-server.ts +1 -1
  199. package/src/main-http-server.ts +1 -1
  200. package/src/main-http2-server.ts +1 -1
  201. package/src/qcobjects-cli.ts +1 -1
  202. package/src/qcobjects-collab.ts +1 -1
  203. package/src/qcobjects-createcert.ts +1 -1
  204. package/src/qcobjects-gae-http-server.ts +1 -1
  205. package/src/qcobjects-http-server.ts +1 -1
  206. package/src/qcobjects-http2-server.ts +4 -5
  207. package/src/qcobjects-shell.ts +1 -1
  208. package/src/templates/apps/spa-local.html +0 -0
  209. package/src/templates/apps/spa-local.js +0 -0
  210. package/src/templates/pwa/sw.js +0 -0
  211. package/src/types/global/index.d.ts +0 -0
  212. package/transpile.js +0 -0
  213. package/tsconfig.d.json +0 -0
  214. package/tsconfig.jasmine.json +0 -0
  215. package/tsconfig.json +3 -3
  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,317 @@
1
+ /**
2
+ * QCObjects CLI 2.3.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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const common_pipelog_1 = require("../common-pipelog");
37
+ const fs_1 = __importDefault(require("fs"));
38
+ const os_1 = __importDefault(require("os"));
39
+ const child_process_1 = require("child_process");
40
+ const node_path_1 = __importDefault(require("node:path"));
41
+ const absolutePath = node_path_1.default.resolve(__dirname, "./");
42
+ const qcobjects_1 = require("qcobjects");
43
+ const fixWinCmd = function (commandline) {
44
+ if (!process.platform.toLowerCase().startsWith("win")) {
45
+ commandline = commandline.replace(/(")/g, String.fromCharCode(92) + "\"");
46
+ }
47
+ return commandline;
48
+ };
49
+ class PHPMicroservice extends qcobjects_1.BackendMicroservice {
50
+ request;
51
+ stream;
52
+ scriptFilePath;
53
+ domain;
54
+ tempFileName;
55
+ route;
56
+ body;
57
+ headers;
58
+ constructor() {
59
+ super();
60
+ const o = this;
61
+ qcobjects_1.logger.debug("PHP Microservice executing");
62
+ const microservice = this;
63
+ const request = microservice.request;
64
+ const stream = o.stream;
65
+ microservice.stream = stream;
66
+ stream.on("data", (data) => {
67
+ // data from POST, GET
68
+ const requestMethod = request.method.toLowerCase();
69
+ const supportedMethods = {
70
+ "post": microservice.post.bind(this),
71
+ };
72
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
73
+ supportedMethods[requestMethod].call(microservice, data);
74
+ }
75
+ });
76
+ // data from POST, GET
77
+ const requestMethod = request.method.toLowerCase();
78
+ const supportedMethods = {
79
+ "get": microservice.get.bind(this),
80
+ "head": microservice.head.bind(this),
81
+ "put": microservice.put.bind(this),
82
+ "delete": microservice.delete.bind(this),
83
+ "connect": microservice.connect.bind(this),
84
+ "options": microservice.options.bind(this),
85
+ "trace": microservice.trace.bind(this),
86
+ "patch": microservice.patch.bind(this)
87
+ };
88
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
89
+ supportedMethods[requestMethod].call(microservice);
90
+ }
91
+ }
92
+ get_php_headers_list() {
93
+ const phpheaders = {
94
+ "QUERY_STRING": `${this.request.query}`,
95
+ "REDIRECT_STATUS": "200",
96
+ "REQUEST_METHOD": `${this.request.method}`,
97
+ "SCRIPT_FILENAME": `${this.scriptFilePath}`,
98
+ "SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
99
+ "PATH_INFO": `${this.request.path}`,
100
+ "SERVER_NAME": `${this.domain}`,
101
+ "SERVER_PROTOCOL": "HTTP/2",
102
+ "REQUEST_URI": `${this.request.href}`,
103
+ "HTTP_HOST": `${this.domain}`
104
+ };
105
+ function fixedEncodeURIComponent(str) {
106
+ return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
107
+ }
108
+ for (const headername in this.request.headers) {
109
+ if (!headername.startsWith(":")) {
110
+ const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
111
+ let headervalue = this.request.headers[headername];
112
+ if (typeof headervalue !== "string") {
113
+ headervalue = JSON.stringify(headervalue);
114
+ }
115
+ phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
116
+ }
117
+ }
118
+ return common_pipelog_1.PipeLog.pipe(phpheaders);
119
+ }
120
+ saveTempData(data, done) {
121
+ const filename = os_1.default.tmpdir() + this.tempFileName;
122
+ fs_1.default.writeFile(filename, data, (err) => {
123
+ if (err)
124
+ throw err;
125
+ qcobjects_1.logger.debug("A temp data file has been saved!");
126
+ done.call(this);
127
+ });
128
+ }
129
+ generateTempFileName() {
130
+ this.tempFileName = "temp" + Date.now().toString();
131
+ return this.tempFileName;
132
+ }
133
+ trimSlash(pathname) {
134
+ if (pathname.startsWith("/")) {
135
+ pathname = pathname.slice(1);
136
+ }
137
+ if (pathname.endsWith("/")) {
138
+ pathname = pathname.slice(0, -1);
139
+ }
140
+ return pathname.replace("//", "/");
141
+ }
142
+ get() {
143
+ const microservice = this;
144
+ microservice.generateTempFileName();
145
+ microservice.saveTempData(this.request.query, function () {
146
+ try {
147
+ process.chdir(qcobjects_1.CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
148
+ }
149
+ catch (e) { }
150
+ const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") &&
151
+ microservice.route.redirect_to !== "") ? (microservice.route.redirect_to) : (microservice.request.scriptname);
152
+ const pathname = microservice.trimSlash(microservice.request.pathname);
153
+ let documentRoot = qcobjects_1.CONFIG.get("documentRoot", "");
154
+ if (documentRoot == "./") {
155
+ documentRoot = "";
156
+ }
157
+ let scriptFilePath;
158
+ if (documentRoot !== "") {
159
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
160
+ }
161
+ else {
162
+ scriptFilePath = `${pathname}/${scriptFileName}`;
163
+ }
164
+ scriptFilePath = scriptFilePath.replace("//", "/");
165
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
166
+ scriptFilePath = scriptFilePath.slice(1);
167
+ }
168
+ qcobjects_1.logger.debug(`Loading PHP file: ${scriptFilePath}`);
169
+ const PHPIncludePath = `.:${qcobjects_1.CONFIG.get("documentRoot")}:${qcobjects_1.CONFIG.get("projectPath")}`;
170
+ microservice.scriptFilePath = scriptFilePath;
171
+ let commandline = `echo $(cat ${os_1.default.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
172
+ <?php
173
+ $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
174
+ foreach ($_SERVER as $_k => $_v) {
175
+ if (array_key_exists($_k,$_ENV)){
176
+ $_SERVER[$_k] = $_ENV[$_k];
177
+ }
178
+ if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
179
+ $_SERVER[$_k]=urldecode($_v);
180
+ }
181
+ }
182
+ @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
183
+ @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_GET);
184
+ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
185
+ include('${scriptFilePath}');
186
+ ?>
187
+ EOF`;
188
+ commandline = fixWinCmd(commandline);
189
+ qcobjects_1.logger.debug(commandline);
190
+ try {
191
+ const php = (0, child_process_1.exec)(commandline, (err, stdout, stderr) => {
192
+ microservice.body = stdout;
193
+ console.log(stderr);
194
+ microservice.done();
195
+ });
196
+ }
197
+ catch (ex) {
198
+ microservice.body = "500 - INTERNAL ERROR";
199
+ qcobjects_1.logger.debug(ex.toString());
200
+ console.log(ex);
201
+ microservice.done();
202
+ }
203
+ });
204
+ }
205
+ head(formData) {
206
+ this.done();
207
+ }
208
+ post(formData) {
209
+ qcobjects_1.logger.debug("POST DATA");
210
+ const microservice = this;
211
+ microservice.generateTempFileName();
212
+ microservice.saveTempData(formData, function () {
213
+ try {
214
+ process.chdir(qcobjects_1.CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
215
+ }
216
+ catch (e) { }
217
+ const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") &&
218
+ microservice.route.redirect_to !== "") ? (microservice.route.redirect_to) : (microservice.request.scriptname);
219
+ const pathname = microservice.trimSlash(microservice.request.pathname);
220
+ let documentRoot = qcobjects_1.CONFIG.get("documentRoot", "");
221
+ if (documentRoot == "./") {
222
+ documentRoot = "";
223
+ }
224
+ let scriptFilePath;
225
+ if (documentRoot !== "") {
226
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
227
+ }
228
+ else {
229
+ scriptFilePath = `${pathname}/${scriptFileName}`;
230
+ }
231
+ scriptFilePath = scriptFilePath.replace("//", "/");
232
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
233
+ scriptFilePath = scriptFilePath.slice(1);
234
+ }
235
+ qcobjects_1.logger.debug(`Loading PHP file: ${scriptFilePath}`);
236
+ const PHPIncludePath = `.:${qcobjects_1.CONFIG.get("documentRoot")}:${qcobjects_1.CONFIG.get("projectPath")}`;
237
+ microservice.scriptFilePath = scriptFilePath;
238
+ let commandline = `echo $(cat ${os_1.default.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
239
+ <?php
240
+ $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
241
+ foreach ($_SERVER as $_k => $_v) {
242
+ if (array_key_exists($_k,$_ENV)){
243
+ $_SERVER[$_k] = $_ENV[$_k];
244
+ }
245
+ if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
246
+ $_SERVER[$_k]=urldecode($_v);
247
+ }
248
+ }
249
+ @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
250
+ @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_POST);
251
+ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
252
+ @include('${scriptFilePath}');
253
+ ?>
254
+ EOF`;
255
+ commandline = fixWinCmd(commandline);
256
+ // logger.debug(commandline);
257
+ try {
258
+ microservice.body = (0, child_process_1.execSync)(commandline).toString();
259
+ }
260
+ catch (ex) {
261
+ microservice.body = "500 - INTERNAL ERROR";
262
+ qcobjects_1.logger.debug(ex.toString());
263
+ }
264
+ microservice.done();
265
+ });
266
+ }
267
+ put(formData) {
268
+ this.done();
269
+ }
270
+ delete(formData) {
271
+ this.done();
272
+ }
273
+ connect(formData) {
274
+ this.done();
275
+ }
276
+ options(formData) {
277
+ this.done();
278
+ }
279
+ trace(formData) {
280
+ this.done();
281
+ }
282
+ patch(formData) {
283
+ this.done();
284
+ }
285
+ done() {
286
+ const microservice = this;
287
+ const stream = microservice.stream;
288
+ try {
289
+ stream.respond(microservice.headers);
290
+ }
291
+ catch (e) {
292
+ //
293
+ }
294
+ if (microservice.body != null) {
295
+ microservice.finishWithBody.call(microservice, stream);
296
+ }
297
+ }
298
+ finishWithBody(stream) {
299
+ try {
300
+ stream.write(this.body);
301
+ stream.end();
302
+ }
303
+ catch (e) {
304
+ qcobjects_1.logger.debug("Something wrong writing the response for microservice" + e.toString());
305
+ }
306
+ }
307
+ }
308
+ const Microservice = (0, qcobjects_1.Class)("Microservice", PHPMicroservice);
309
+ (0, qcobjects_1.Package)("org.quickcorp.backend.php", [
310
+ PHPMicroservice,
311
+ Microservice
312
+ ]);
313
+ exports = {
314
+ PHPMicroservice,
315
+ Microservice
316
+ };
317
+ //# sourceMappingURL=backend-php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-php.js","sourceRoot":"","sources":["../../../src/backend/backend-php.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,341 @@
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.CommandHandler = void 0;
37
+ const node_path_1 = __importDefault(require("node:path"));
38
+ const node_fs_1 = require("node:fs");
39
+ const promises_1 = __importDefault(require("node:fs/promises"));
40
+ const glob_1 = __importDefault(require("glob"));
41
+ const esbuild_1 = __importDefault(require("esbuild"));
42
+ const esbuild_plugin_alias_1 = __importDefault(require("esbuild-plugin-alias"));
43
+ const qcobjects_1 = require("qcobjects");
44
+ const externalPackages = [
45
+ "node:fs", "node:path", "node:os", "node:util", "node:events",
46
+ "node:stream", "node:http", "node:https", "node:crypto", "node:zlib",
47
+ "node:buffer", "node:url", "node:querystring", "node:child_process",
48
+ "node:cluster", "node:dgram", "node:dns", "node:net", "node:readline",
49
+ "node:repl", "node:tls", "node:tty", "node:vm", "node:worker_threads"
50
+ ];
51
+ // Function to detect and add the extension
52
+ const nameToExtension = (name, ext, settings) => {
53
+ function isPackage(name) {
54
+ return !name.startsWith(".") && !name.startsWith("/") && !name.includes("/");
55
+ }
56
+ const hasExtension = /\.[^/\\]+$/.test(name);
57
+ const isExternalPackage = name.startsWith("qcobjects") ||
58
+ name.startsWith("qcobjects-sdk") ||
59
+ name.startsWith("node:") ||
60
+ name.startsWith("fs") ||
61
+ name.startsWith("path") ||
62
+ name.startsWith("os") ||
63
+ name.startsWith("util") ||
64
+ name.startsWith("events") ||
65
+ name.startsWith("stream") ||
66
+ name.startsWith("http") ||
67
+ name.startsWith("https") ||
68
+ name.startsWith("crypto") ||
69
+ name.startsWith("zlib") ||
70
+ name.startsWith("buffer") ||
71
+ name.startsWith("url") ||
72
+ name.startsWith("querystring") ||
73
+ name.startsWith("child_process") ||
74
+ name.startsWith("cluster") ||
75
+ name.startsWith("dgram") ||
76
+ name.startsWith("dns") ||
77
+ name.startsWith("net") ||
78
+ name.startsWith("readline") ||
79
+ name.startsWith("repl") ||
80
+ name.startsWith("tls") ||
81
+ name.startsWith("tty") ||
82
+ name.startsWith("vm") ||
83
+ name.startsWith("worker_threads")
84
+ || externalPackages.includes(name);
85
+ if (!hasExtension && !isPackage(name) && !isExternalPackage) {
86
+ name += ext;
87
+ }
88
+ return name;
89
+ };
90
+ // Function to add .cjs and .mjs extensions to import/export/require statements
91
+ const addExtensions = (filePath, toExt, settings) => {
92
+ const content = (0, node_fs_1.readFileSync)(filePath, "utf8");
93
+ const updatedContent = content
94
+ .replace(/(from\s+['"])(.*?)(['"])/g, (match, p1, p2, p3) => {
95
+ return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;
96
+ })
97
+ .replace(/(import\s+['"])(.*?)(['"])/g, (match, p1, p2, p3) => {
98
+ return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;
99
+ })
100
+ .replace(/(export\s+['"])(.*?)(['"])/g, (match, p1, p2, p3) => {
101
+ return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;
102
+ })
103
+ .replace(/(require\s*\(\s*['"])(.*?)(['"]\s*\))/g, (match, p1, p2, p3) => {
104
+ return `${p1}${nameToExtension(p2, toExt, settings)}${p3}`;
105
+ });
106
+ (0, node_fs_1.writeFileSync)(filePath, updatedContent, "utf8");
107
+ };
108
+ const copyDir = async (source, dest, exclude) => {
109
+ source = node_path_1.default.resolve(source);
110
+ dest = node_path_1.default.resolve(dest);
111
+ const dname = node_path_1.default.basename(source);
112
+ const dirExcluded = exclude.includes(dname);
113
+ const isDir = async (d) => {
114
+ try {
115
+ const stat = await promises_1.default.stat(d);
116
+ return stat.isDirectory();
117
+ }
118
+ catch {
119
+ return false;
120
+ }
121
+ };
122
+ const isFile = async (d) => {
123
+ try {
124
+ const stat = await promises_1.default.stat(d);
125
+ return stat.isFile();
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ };
131
+ if (await isDir(source) && !dirExcluded) {
132
+ await promises_1.default.mkdir(dest, { recursive: true });
133
+ const paths = await promises_1.default.readdir(source, { withFileTypes: true });
134
+ const dirs = paths.filter(d => d.isDirectory());
135
+ const files = paths.filter(f => f.isFile());
136
+ for (const f of files) {
137
+ const sourceFile = node_path_1.default.resolve(source, f.name);
138
+ const destFile = node_path_1.default.resolve(dest, f.name);
139
+ const fileExcluded = exclude.includes(f.name);
140
+ if (await isFile(sourceFile) && !fileExcluded) {
141
+ qcobjects_1.logger.debug(`[build:esbuild] Copying files from ${sourceFile} to ${destFile} excluding ${exclude}...`);
142
+ await promises_1.default.copyFile(sourceFile, destFile);
143
+ qcobjects_1.logger.debug(`[build:esbuild] Copying files from ${sourceFile} to ${destFile} excluding ${exclude}...DONE!`);
144
+ }
145
+ }
146
+ for (const d of dirs) {
147
+ const sourceDir = node_path_1.default.resolve(source, d.name);
148
+ const destDir = node_path_1.default.resolve(dest, d.name);
149
+ await copyDir(sourceDir, destDir, exclude);
150
+ }
151
+ }
152
+ };
153
+ const ignorePlugin = {
154
+ name: "transform-qcobjects-imports",
155
+ setup(build) {
156
+ build.onResolve({ filter: /^(qcobjects|qcobjects-sdk)$/ }, (args) => {
157
+ if (args.kind === "dynamic-import") {
158
+ return {
159
+ path: args.path,
160
+ namespace: "qcobjects-transform"
161
+ };
162
+ }
163
+ return {
164
+ external: true,
165
+ path: args.path
166
+ };
167
+ });
168
+ build.onResolve({ filter: /.*/, namespace: "file" }, (args) => {
169
+ if (args.kind === "dynamic-import") {
170
+ return {
171
+ external: true,
172
+ path: args.path
173
+ };
174
+ }
175
+ return null;
176
+ });
177
+ build.onLoad({ filter: /.*/, namespace: "qcobjects-transform" }, (args) => {
178
+ return {
179
+ contents: `
180
+ module.exports = __toESM(require("${args.path}"), true);
181
+ `,
182
+ loader: "js"
183
+ };
184
+ });
185
+ }
186
+ };
187
+ class CommandHandler extends qcobjects_1.InheritClass {
188
+ choiceOption;
189
+ constructor({ switchCommander }) {
190
+ super({ switchCommander });
191
+ this.choiceOption = {
192
+ async build_esbuild() {
193
+ try {
194
+ qcobjects_1.logger.info("[build:esbuild] Starting esbuild process...");
195
+ // Get all TypeScript entry points
196
+ const entryPoints = glob_1.default.sync("src/**/*.ts");
197
+ // Copy templates
198
+ await copyDir("./src/templates", "./build/templates", []);
199
+ await copyDir("./src/templates", "./public/cjs/templates", []);
200
+ await copyDir("./src/templates", "./public/esm/templates", []);
201
+ await copyDir("./src/templates", "./public/browser/templates", []);
202
+ const baseSettings = {
203
+ entryPoints,
204
+ bundle: false,
205
+ outdir: "public/cjs",
206
+ format: "cjs",
207
+ target: ["node22"],
208
+ tsconfig: "tsconfig.json",
209
+ globalName: "global",
210
+ minify: false,
211
+ keepNames: true,
212
+ sourcemap: true,
213
+ splitting: false,
214
+ chunkNames: "chunks/[name]-[hash]",
215
+ plugins: [
216
+ ignorePlugin,
217
+ (0, esbuild_plugin_alias_1.default)({
218
+ "types": node_path_1.default.join(process.cwd(), "src/types/global/index.d.ts")
219
+ })
220
+ ]
221
+ };
222
+ const cjsSettings = {
223
+ ...baseSettings,
224
+ outdir: "public/cjs",
225
+ format: "cjs",
226
+ platform: "node",
227
+ outExtension: {
228
+ ".js": ".cjs"
229
+ },
230
+ plugins: [
231
+ ignorePlugin,
232
+ {
233
+ name: "transform-dynamic-imports",
234
+ setup(build) {
235
+ build.onEnd(() => {
236
+ const files = glob_1.default.sync("public/cjs/**/*.cjs");
237
+ for (const file of files) {
238
+ let content = (0, node_fs_1.readFileSync)(file, "utf8");
239
+ content = content.replace(/await\s+import\(['"]([^'"]+)['"]\)/g, "__toESM(require(\"$1\"), true)");
240
+ (0, node_fs_1.writeFileSync)(file, content, "utf8");
241
+ }
242
+ });
243
+ }
244
+ },
245
+ {
246
+ name: "add-extensions",
247
+ setup(build) {
248
+ build.onEnd(() => {
249
+ entryPoints.forEach((entry) => {
250
+ const outputFilePath = node_path_1.default.join("./public/cjs", entry.replace("src/", "").replace(".ts", ".cjs"));
251
+ addExtensions(outputFilePath, ".cjs", cjsSettings);
252
+ });
253
+ });
254
+ }
255
+ }
256
+ ]
257
+ };
258
+ const esmSettings = {
259
+ ...baseSettings,
260
+ outdir: "public/esm",
261
+ format: "esm",
262
+ platform: "browser",
263
+ outExtension: {
264
+ ".js": ".mjs"
265
+ },
266
+ plugins: [
267
+ {
268
+ name: "transform-requires",
269
+ setup(build) {
270
+ build.onEnd(() => {
271
+ const files = glob_1.default.sync("public/esm/**/*.mjs");
272
+ for (const file of files) {
273
+ let content = (0, node_fs_1.readFileSync)(file, "utf8");
274
+ // Transform require statements to dynamic imports
275
+ content = content.replace(/const\s+{([^}]+)}\s*=\s*require\(['"]([^'"]+)['"]\)/g, "import { $1 } from \"$2\"");
276
+ content = content.replace(/const\s+([^=]+)\s*=\s*require\(['"]([^'"]+)['"]\)/g, "import $1 from \"$2\"");
277
+ (0, node_fs_1.writeFileSync)(file, content, "utf8");
278
+ }
279
+ });
280
+ }
281
+ },
282
+ {
283
+ name: "add-extensions",
284
+ setup(build) {
285
+ build.onEnd(() => {
286
+ entryPoints.forEach((entry) => {
287
+ const outputFilePath = node_path_1.default.join("./public/esm", entry.replace("src/", "").replace(".ts", ".mjs"));
288
+ addExtensions(outputFilePath, ".mjs", esmSettings);
289
+ });
290
+ });
291
+ }
292
+ }
293
+ ]
294
+ };
295
+ const browserSettings = {
296
+ ...baseSettings,
297
+ outdir: "public/browser",
298
+ format: "iife",
299
+ platform: "browser",
300
+ outExtension: {
301
+ ".js": ".js"
302
+ }
303
+ };
304
+ // Build all formats
305
+ await Promise.all([
306
+ esbuild_1.default.build(cjsSettings),
307
+ esbuild_1.default.build(esmSettings),
308
+ esbuild_1.default.build(browserSettings)
309
+ ]);
310
+ qcobjects_1.logger.info("[build:esbuild] Build process completed successfully!");
311
+ }
312
+ catch (e) {
313
+ qcobjects_1.logger.error(`[build:esbuild] Build process failed: ${e.message}`);
314
+ process.exit(1);
315
+ }
316
+ }
317
+ };
318
+ const commandHandler = this;
319
+ qcobjects_1.logger.debug("Loading command build:esbuild...");
320
+ // Register both commands
321
+ switchCommander.program.command("build:esbuild")
322
+ .allowExcessArguments(false)
323
+ .description("Builds the project using esbuild for CJS, ESM, and browser formats")
324
+ .action(function () {
325
+ commandHandler.choiceOption.build_esbuild.call(commandHandler);
326
+ });
327
+ // Add alias
328
+ switchCommander.program.command("build:esb")
329
+ .allowExcessArguments(false)
330
+ .description("Alias for build:esbuild - Builds the project using esbuild")
331
+ .action(function () {
332
+ commandHandler.choiceOption.build_esbuild.call(commandHandler);
333
+ });
334
+ qcobjects_1.logger.debug("Loading command build:esbuild... DONE.");
335
+ }
336
+ }
337
+ exports.CommandHandler = CommandHandler;
338
+ (0, qcobjects_1.Package)("com.qcobjects.cli.commands.build.esbuild", [
339
+ CommandHandler
340
+ ]);
341
+ //# sourceMappingURL=cli-commands-build-esbuild.js.map