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
@@ -4,152 +4,151 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
4
4
  var __commonJS = (cb, mod) => function __require() {
5
5
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
6
6
  };
7
- import { PipeLog } from "../common-pipelog.mjs";
7
+ import { PipeLog } from "../common-pipelog";
8
+ import fs from "fs";
9
+ import os from "os";
10
+ import { exec, execSync } from "child_process";
11
+ import path from "node:path";
12
+ import { Package, BackendMicroservice, logger, CONFIG, Class } from "qcobjects";
8
13
  var require_backend_php = __commonJS({
9
14
  "src/backend/backend-php.ts"(exports) {
10
- (async () => {
11
- const fs = await import("node:fs");
12
- const os = await import("node:os");
13
- const { exec, execSync } = await import("node:child_process");
14
- const { Package, BackendMicroservice, logger, CONFIG, Class } = await import("qcobjects");
15
- const path = await import("node:path");
16
- const absolutePath = path.resolve(__dirname, "./");
17
- const fixWinCmd = /* @__PURE__ */ __name(function(commandline) {
18
- if (!process.platform.toLowerCase().startsWith("win")) {
19
- commandline = commandline.replace(/(")/g, String.fromCharCode(92) + '"');
20
- }
21
- return commandline;
22
- }, "fixWinCmd");
23
- class PHPMicroservice extends BackendMicroservice {
24
- static {
25
- __name(this, "PHPMicroservice");
26
- }
27
- request;
28
- stream;
29
- scriptFilePath;
30
- domain;
31
- tempFileName;
32
- route;
33
- body;
34
- headers;
35
- constructor() {
36
- super();
37
- const o = this;
38
- logger.debug("PHP Microservice executing");
39
- const microservice = this;
40
- const request = microservice.request;
41
- const stream = o.stream;
42
- microservice.stream = stream;
43
- stream.on("data", (data) => {
44
- const requestMethod2 = request.method.toLowerCase();
45
- const supportedMethods2 = {
46
- "post": microservice.post.bind(this)
47
- };
48
- if (supportedMethods2.hasOwnProperty.call(supportedMethods2, requestMethod2)) {
49
- supportedMethods2[requestMethod2].call(microservice, data);
50
- }
51
- });
52
- const requestMethod = request.method.toLowerCase();
53
- const supportedMethods = {
54
- "get": microservice.get.bind(this),
55
- "head": microservice.head.bind(this),
56
- "put": microservice.put.bind(this),
57
- "delete": microservice.delete.bind(this),
58
- "connect": microservice.connect.bind(this),
59
- "options": microservice.options.bind(this),
60
- "trace": microservice.trace.bind(this),
61
- "patch": microservice.patch.bind(this)
15
+ const absolutePath = path.resolve(__dirname, "./");
16
+ const fixWinCmd = /* @__PURE__ */ __name(function(commandline) {
17
+ if (!process.platform.toLowerCase().startsWith("win")) {
18
+ commandline = commandline.replace(/(")/g, String.fromCharCode(92) + '"');
19
+ }
20
+ return commandline;
21
+ }, "fixWinCmd");
22
+ class PHPMicroservice extends BackendMicroservice {
23
+ static {
24
+ __name(this, "PHPMicroservice");
25
+ }
26
+ request;
27
+ stream;
28
+ scriptFilePath;
29
+ domain;
30
+ tempFileName;
31
+ route;
32
+ body;
33
+ headers;
34
+ constructor() {
35
+ super();
36
+ const o = this;
37
+ logger.debug("PHP Microservice executing");
38
+ const microservice = this;
39
+ const request = microservice.request;
40
+ const stream = o.stream;
41
+ microservice.stream = stream;
42
+ stream.on("data", (data) => {
43
+ const requestMethod2 = request.method.toLowerCase();
44
+ const supportedMethods2 = {
45
+ "post": microservice.post.bind(this)
62
46
  };
63
- if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
64
- supportedMethods[requestMethod].call(microservice);
47
+ if (supportedMethods2.hasOwnProperty.call(supportedMethods2, requestMethod2)) {
48
+ supportedMethods2[requestMethod2].call(microservice, data);
65
49
  }
50
+ });
51
+ const requestMethod = request.method.toLowerCase();
52
+ const supportedMethods = {
53
+ "get": microservice.get.bind(this),
54
+ "head": microservice.head.bind(this),
55
+ "put": microservice.put.bind(this),
56
+ "delete": microservice.delete.bind(this),
57
+ "connect": microservice.connect.bind(this),
58
+ "options": microservice.options.bind(this),
59
+ "trace": microservice.trace.bind(this),
60
+ "patch": microservice.patch.bind(this)
61
+ };
62
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
63
+ supportedMethods[requestMethod].call(microservice);
66
64
  }
67
- get_php_headers_list() {
68
- const phpheaders = {
69
- "QUERY_STRING": `${this.request.query}`,
70
- "REDIRECT_STATUS": "200",
71
- "REQUEST_METHOD": `${this.request.method}`,
72
- "SCRIPT_FILENAME": `${this.scriptFilePath}`,
73
- "SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
74
- "PATH_INFO": `${this.request.path}`,
75
- "SERVER_NAME": `${this.domain}`,
76
- "SERVER_PROTOCOL": "HTTP/2",
77
- "REQUEST_URI": `${this.request.href}`,
78
- "HTTP_HOST": `${this.domain}`
79
- };
80
- function fixedEncodeURIComponent(str) {
81
- return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
82
- }
83
- __name(fixedEncodeURIComponent, "fixedEncodeURIComponent");
84
- for (const headername in this.request.headers) {
85
- if (!headername.startsWith(":")) {
86
- const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
87
- let headervalue = this.request.headers[headername];
88
- if (typeof headervalue !== "string") {
89
- headervalue = JSON.stringify(headervalue);
90
- }
91
- phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
65
+ }
66
+ get_php_headers_list() {
67
+ const phpheaders = {
68
+ "QUERY_STRING": `${this.request.query}`,
69
+ "REDIRECT_STATUS": "200",
70
+ "REQUEST_METHOD": `${this.request.method}`,
71
+ "SCRIPT_FILENAME": `${this.scriptFilePath}`,
72
+ "SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
73
+ "PATH_INFO": `${this.request.path}`,
74
+ "SERVER_NAME": `${this.domain}`,
75
+ "SERVER_PROTOCOL": "HTTP/2",
76
+ "REQUEST_URI": `${this.request.href}`,
77
+ "HTTP_HOST": `${this.domain}`
78
+ };
79
+ function fixedEncodeURIComponent(str) {
80
+ return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
81
+ }
82
+ __name(fixedEncodeURIComponent, "fixedEncodeURIComponent");
83
+ for (const headername in this.request.headers) {
84
+ if (!headername.startsWith(":")) {
85
+ const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
86
+ let headervalue = this.request.headers[headername];
87
+ if (typeof headervalue !== "string") {
88
+ headervalue = JSON.stringify(headervalue);
92
89
  }
90
+ phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
93
91
  }
94
- return PipeLog.pipe(phpheaders);
95
92
  }
96
- saveTempData(data, done) {
97
- const filename = os.tmpdir() + this.tempFileName;
98
- fs.writeFile(filename, data, (err) => {
99
- if (err) throw err;
100
- logger.debug("A temp data file has been saved!");
101
- done.call(this);
102
- });
93
+ return PipeLog.pipe(phpheaders);
94
+ }
95
+ saveTempData(data, done) {
96
+ const filename = os.tmpdir() + this.tempFileName;
97
+ fs.writeFile(filename, data, (err) => {
98
+ if (err) throw err;
99
+ logger.debug("A temp data file has been saved!");
100
+ done.call(this);
101
+ });
102
+ }
103
+ generateTempFileName() {
104
+ this.tempFileName = "temp" + Date.now().toString();
105
+ return this.tempFileName;
106
+ }
107
+ trimSlash(pathname) {
108
+ if (pathname.startsWith("/")) {
109
+ pathname = pathname.slice(1);
103
110
  }
104
- generateTempFileName() {
105
- this.tempFileName = "temp" + Date.now().toString();
106
- return this.tempFileName;
111
+ if (pathname.endsWith("/")) {
112
+ pathname = pathname.slice(0, -1);
107
113
  }
108
- trimSlash(pathname) {
109
- if (pathname.startsWith("/")) {
110
- pathname = pathname.slice(1);
114
+ return pathname.replace("//", "/");
115
+ }
116
+ get() {
117
+ const microservice = this;
118
+ microservice.generateTempFileName();
119
+ microservice.saveTempData(this.request.query, function() {
120
+ try {
121
+ process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
122
+ } catch (e) {
111
123
  }
112
- if (pathname.endsWith("/")) {
113
- pathname = pathname.slice(0, -1);
124
+ const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
125
+ const pathname = microservice.trimSlash(microservice.request.pathname);
126
+ let documentRoot = CONFIG.get("documentRoot", "");
127
+ if (documentRoot == "./") {
128
+ documentRoot = "";
114
129
  }
115
- return pathname.replace("//", "/");
116
- }
117
- get() {
118
- const microservice = this;
119
- microservice.generateTempFileName();
120
- microservice.saveTempData(this.request.query, function() {
121
- try {
122
- process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
123
- } catch (e) {
124
- }
125
- const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
126
- const pathname = microservice.trimSlash(microservice.request.pathname);
127
- let documentRoot = CONFIG.get("documentRoot", "");
128
- if (documentRoot == "./") {
129
- documentRoot = "";
130
- }
131
- let scriptFilePath;
132
- if (documentRoot !== "") {
133
- scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
134
- } else {
135
- scriptFilePath = `${pathname}/${scriptFileName}`;
136
- }
137
- scriptFilePath = scriptFilePath.replace("//", "/");
138
- if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
139
- scriptFilePath = scriptFilePath.slice(1);
140
- }
141
- logger.debug(`Loading PHP file: ${scriptFilePath}`);
142
- const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
143
- microservice.scriptFilePath = scriptFilePath;
144
- let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
130
+ let scriptFilePath;
131
+ if (documentRoot !== "") {
132
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
133
+ } else {
134
+ scriptFilePath = `${pathname}/${scriptFileName}`;
135
+ }
136
+ scriptFilePath = scriptFilePath.replace("//", "/");
137
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
138
+ scriptFilePath = scriptFilePath.slice(1);
139
+ }
140
+ logger.debug(`Loading PHP file: ${scriptFilePath}`);
141
+ const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
142
+ microservice.scriptFilePath = scriptFilePath;
143
+ let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
145
144
  <?php
146
145
  $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
147
146
  foreach ($_SERVER as $_k => $_v) {
148
147
  if (array_key_exists($_k,$_ENV)){
149
- $_SERVER[$_k] = $_ENV[$_k];
148
+ $_SERVER[$_k] = $_ENV[$_k];
150
149
  }
151
150
  if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
152
- $_SERVER[$_k]=urldecode($_v);
151
+ $_SERVER[$_k]=urldecode($_v);
153
152
  }
154
153
  }
155
154
  @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
@@ -158,62 +157,62 @@ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
158
157
  include('${scriptFilePath}');
159
158
  ?>
160
159
  EOF`;
161
- commandline = fixWinCmd(commandline);
162
- logger.debug(commandline);
163
- try {
164
- const php = exec(commandline, (err, stdout, stderr) => {
165
- microservice.body = stdout;
166
- console.log(stderr);
167
- microservice.done();
168
- });
169
- } catch (ex) {
170
- microservice.body = "500 - INTERNAL ERROR";
171
- logger.debug(ex.toString());
172
- console.log(ex);
160
+ commandline = fixWinCmd(commandline);
161
+ logger.debug(commandline);
162
+ try {
163
+ const php = exec(commandline, (err, stdout, stderr) => {
164
+ microservice.body = stdout;
165
+ console.log(stderr);
173
166
  microservice.done();
174
- }
175
- });
176
- }
177
- head(formData) {
178
- this.done();
179
- }
180
- post(formData) {
181
- logger.debug("POST DATA");
182
- const microservice = this;
183
- microservice.generateTempFileName();
184
- microservice.saveTempData(formData, function() {
185
- try {
186
- process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
187
- } catch (e) {
188
- }
189
- const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
190
- const pathname = microservice.trimSlash(microservice.request.pathname);
191
- let documentRoot = CONFIG.get("documentRoot", "");
192
- if (documentRoot == "./") {
193
- documentRoot = "";
194
- }
195
- let scriptFilePath;
196
- if (documentRoot !== "") {
197
- scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
198
- } else {
199
- scriptFilePath = `${pathname}/${scriptFileName}`;
200
- }
201
- scriptFilePath = scriptFilePath.replace("//", "/");
202
- if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
203
- scriptFilePath = scriptFilePath.slice(1);
204
- }
205
- logger.debug(`Loading PHP file: ${scriptFilePath}`);
206
- const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
207
- microservice.scriptFilePath = scriptFilePath;
208
- let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
167
+ });
168
+ } catch (ex) {
169
+ microservice.body = "500 - INTERNAL ERROR";
170
+ logger.debug(ex.toString());
171
+ console.log(ex);
172
+ microservice.done();
173
+ }
174
+ });
175
+ }
176
+ head(formData) {
177
+ this.done();
178
+ }
179
+ post(formData) {
180
+ logger.debug("POST DATA");
181
+ const microservice = this;
182
+ microservice.generateTempFileName();
183
+ microservice.saveTempData(formData, function() {
184
+ try {
185
+ process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
186
+ } catch (e) {
187
+ }
188
+ const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
189
+ const pathname = microservice.trimSlash(microservice.request.pathname);
190
+ let documentRoot = CONFIG.get("documentRoot", "");
191
+ if (documentRoot == "./") {
192
+ documentRoot = "";
193
+ }
194
+ let scriptFilePath;
195
+ if (documentRoot !== "") {
196
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
197
+ } else {
198
+ scriptFilePath = `${pathname}/${scriptFileName}`;
199
+ }
200
+ scriptFilePath = scriptFilePath.replace("//", "/");
201
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
202
+ scriptFilePath = scriptFilePath.slice(1);
203
+ }
204
+ logger.debug(`Loading PHP file: ${scriptFilePath}`);
205
+ const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
206
+ microservice.scriptFilePath = scriptFilePath;
207
+ let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
209
208
  <?php
210
209
  $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
211
210
  foreach ($_SERVER as $_k => $_v) {
212
211
  if (array_key_exists($_k,$_ENV)){
213
- $_SERVER[$_k] = $_ENV[$_k];
212
+ $_SERVER[$_k] = $_ENV[$_k];
214
213
  }
215
214
  if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
216
- $_SERVER[$_k]=urldecode($_v);
215
+ $_SERVER[$_k]=urldecode($_v);
217
216
  }
218
217
  }
219
218
  @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
@@ -222,66 +221,63 @@ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
222
221
  @include('${scriptFilePath}');
223
222
  ?>
224
223
  EOF`;
225
- commandline = fixWinCmd(commandline);
226
- try {
227
- microservice.body = execSync(commandline).toString();
228
- } catch (ex) {
229
- microservice.body = "500 - INTERNAL ERROR";
230
- logger.debug(ex.toString());
231
- }
232
- microservice.done();
233
- });
234
- }
235
- put(formData) {
236
- this.done();
237
- }
238
- delete(formData) {
239
- this.done();
240
- }
241
- connect(formData) {
242
- this.done();
243
- }
244
- options(formData) {
245
- this.done();
246
- }
247
- trace(formData) {
248
- this.done();
249
- }
250
- patch(formData) {
251
- this.done();
252
- }
253
- done() {
254
- const microservice = this;
255
- const stream = microservice.stream;
224
+ commandline = fixWinCmd(commandline);
256
225
  try {
257
- stream.respond(microservice.headers);
258
- } catch (e) {
259
- }
260
- if (microservice.body != null) {
261
- microservice.finishWithBody.call(microservice, stream);
226
+ microservice.body = execSync(commandline).toString();
227
+ } catch (ex) {
228
+ microservice.body = "500 - INTERNAL ERROR";
229
+ logger.debug(ex.toString());
262
230
  }
231
+ microservice.done();
232
+ });
233
+ }
234
+ put(formData) {
235
+ this.done();
236
+ }
237
+ delete(formData) {
238
+ this.done();
239
+ }
240
+ connect(formData) {
241
+ this.done();
242
+ }
243
+ options(formData) {
244
+ this.done();
245
+ }
246
+ trace(formData) {
247
+ this.done();
248
+ }
249
+ patch(formData) {
250
+ this.done();
251
+ }
252
+ done() {
253
+ const microservice = this;
254
+ const stream = microservice.stream;
255
+ try {
256
+ stream.respond(microservice.headers);
257
+ } catch (e) {
263
258
  }
264
- finishWithBody(stream) {
265
- try {
266
- stream.write(this.body);
267
- stream.end();
268
- } catch (e) {
269
- logger.debug("Something wrong writing the response for microservice" + e.toString());
270
- }
259
+ if (microservice.body != null) {
260
+ microservice.finishWithBody.call(microservice, stream);
261
+ }
262
+ }
263
+ finishWithBody(stream) {
264
+ try {
265
+ stream.write(this.body);
266
+ stream.end();
267
+ } catch (e) {
268
+ logger.debug("Something wrong writing the response for microservice" + e.toString());
271
269
  }
272
270
  }
273
- const Microservice = Class("Microservice", PHPMicroservice);
274
- Package("org.quickcorp.backend.php", [
275
- PHPMicroservice,
276
- Microservice
277
- ]);
278
- exports = {
279
- PHPMicroservice,
280
- Microservice
281
- };
282
- })().catch((e) => {
283
- console.error(e);
284
- });
271
+ }
272
+ const Microservice = Class("Microservice", PHPMicroservice);
273
+ Package("org.quickcorp.backend.php", [
274
+ PHPMicroservice,
275
+ Microservice
276
+ ]);
277
+ exports = {
278
+ PHPMicroservice,
279
+ Microservice
280
+ };
285
281
  }
286
282
  });
287
283
  export default require_backend_php();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/backend/backend-php.ts"],
4
- "sourcesContent": ["/**\n * QCObjects CLI 2.3.x\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint strict: \"off\" */\n/* eslint no-mixed-operators: \"off\" */\n/* eslint no-undef: \"off\" */\n\"use strict\";\nimport { PipeLog } from \"../common-pipelog\";\n\n(async () => {\n const fs = await import(\"node:fs\");\n const os = await import(\"node:os\");\n const { exec, execSync } = await import(\"node:child_process\");\n // MY_ENV_VAR=\"HELLO WORLD\" php -f index.php\n\n const { Package, BackendMicroservice, logger, CONFIG, Class } = await import(\"qcobjects\");\n const path = await import(\"node:path\");\n const absolutePath = path.resolve(__dirname, \"./\");\n\n const fixWinCmd = function (commandline: string) {\n if (!process.platform.toLowerCase().startsWith(\"win\")) {\n commandline = commandline.replace(/(\")/g, String.fromCharCode(92) + \"\\\"\");\n }\n return commandline;\n };\n\n\n class PHPMicroservice extends BackendMicroservice {\n request: any;\n stream: any;\n scriptFilePath: any;\n domain: any;\n tempFileName!: string;\n route: any;\n body: any;\n headers:any;\n constructor() {\n super();\n const o = this;\n\n logger.debug(\"PHP Microservice executing\");\n const microservice = this;\n const request = microservice.request;\n const stream = o.stream;\n microservice.stream = stream;\n stream.on(\"data\", (data: any) => {\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"post\": microservice.post.bind(this),\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice, data);\n }\n });\n\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"get\": microservice.get.bind(this),\n \"head\": microservice.head.bind(this),\n \"put\": microservice.put.bind(this),\n \"delete\": microservice.delete.bind(this),\n \"connect\": microservice.connect.bind(this),\n \"options\": microservice.options.bind(this),\n \"trace\": microservice.trace.bind(this),\n \"patch\": microservice.patch.bind(this)\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice);\n }\n\n }\n\n get_php_headers_list() {\n const phpheaders: any = {\n \"QUERY_STRING\": `${this.request.query}`,\n \"REDIRECT_STATUS\": \"200\",\n \"REQUEST_METHOD\": `${this.request.method}`,\n \"SCRIPT_FILENAME\": `${this.scriptFilePath}`,\n \"SCRIPT_NAME\": `${this.scriptFilePath.toString()}`,\n \"PATH_INFO\": `${this.request.path}`,\n \"SERVER_NAME\": `${this.domain}`,\n \"SERVER_PROTOCOL\": \"HTTP/2\",\n \"REQUEST_URI\": `${this.request.href}`,\n \"HTTP_HOST\": `${this.domain}`\n };\n\n function fixedEncodeURIComponent(str: string | number | boolean) {\n return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\\*/g, \"%2A\");\n }\n for (const headername in this.request.headers) {\n if (!headername.startsWith(\":\")) {\n const phpheadername = headername.toUpperCase().replace(new RegExp(\"-\", \"g\"), \"_\");\n let headervalue = this.request.headers[headername];\n if (typeof headervalue !== \"string\") {\n headervalue = JSON.stringify(headervalue);\n }\n phpheaders[\"HTTP_\" + phpheadername] = fixedEncodeURIComponent(headervalue);\n }\n }\n\n return PipeLog.pipe(phpheaders);\n }\n\n saveTempData(data: any, done: { (): void; (): void; call?: any; }) {\n const filename = os.tmpdir() + this.tempFileName;\n fs.writeFile(filename, data, (err: any) => {\n if (err) throw err;\n logger.debug(\"A temp data file has been saved!\");\n done.call(this);\n });\n }\n\n generateTempFileName() {\n this.tempFileName = \"temp\" + Date.now().toString();\n return this.tempFileName;\n }\n\n trimSlash(pathname: string) {\n if (pathname.startsWith(\"/\")) {\n pathname = pathname.slice(1);\n }\n if (pathname.endsWith(\"/\")) {\n pathname = pathname.slice(0, -1);\n }\n return pathname.replace(\"//\", \"/\");\n }\n\n get() {\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(this.request.query, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n $_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n $_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_GET);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\ninclude('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n logger.debug(commandline);\n try {\n const php = exec(commandline, (err: any, stdout: any, stderr: any) => {\n microservice.body = stdout;\n console.log(stderr);\n microservice.done();\n });\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n console.log(ex);\n microservice.done();\n }\n\n });\n\n }\n\n head(formData: any) {\n this.done();\n }\n\n post(formData: any) {\n logger.debug(\"POST DATA\");\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(formData, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n $_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n $_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_POST);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\n@include('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n // logger.debug(commandline);\n\n try {\n microservice.body = execSync(commandline).toString();\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n }\n microservice.done();\n\n });\n\n }\n\n put(formData: any) {\n this.done();\n }\n\n delete(formData: any) {\n this.done();\n }\n\n connect(formData: any) {\n this.done();\n }\n\n options(formData: any) {\n this.done();\n }\n\n trace(formData: any) {\n this.done();\n }\n\n patch(formData: any) {\n this.done();\n }\n\n done() {\n const microservice = this;\n const stream = microservice.stream;\n try {\n stream.respond(microservice.headers);\n } catch (e) {\n //\n }\n if (microservice.body != null) {\n microservice.finishWithBody.call(microservice, stream);\n }\n }\n\n finishWithBody(stream: { write: (arg0: any) => void; end: () => void; }) {\n try {\n stream.write(this.body);\n stream.end();\n } catch (e: any) {\n logger.debug(\"Something wrong writing the response for microservice\" + e.toString());\n }\n }\n\n\n }\n\n const Microservice = Class(\"Microservice\", PHPMicroservice);\n\n Package(\"org.quickcorp.backend.php\", [\n\n PHPMicroservice,\n Microservice\n ]);\n\n exports = {\n PHPMicroservice,\n Microservice\n };\n})()\n.catch(e => {console.error(e);});"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * QCObjects CLI 2.3.x\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint strict: \"off\" */\n/* eslint no-mixed-operators: \"off\" */\n/* eslint no-undef: \"off\" */\n\"use strict\";\nimport { PipeLog } from \"../common-pipelog\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport { exec, execSync } from \"child_process\";\nimport path from \"node:path\";\nconst absolutePath = path.resolve(__dirname, \"./\");\n\nimport { Package, BackendMicroservice, logger, CONFIG, Class } from \"qcobjects\";\n\nconst fixWinCmd = function (commandline: string) {\n if (!process.platform.toLowerCase().startsWith(\"win\")) {\n commandline = commandline.replace(/(\")/g, String.fromCharCode(92) + \"\\\"\");\n }\n return commandline;\n};\n\n\nclass PHPMicroservice extends BackendMicroservice {\n request: any;\n stream: any;\n scriptFilePath: any;\n domain: any;\n tempFileName!: string;\n route: any;\n body: any;\n headers:any;\n constructor() {\n super();\n const o = this;\n\n logger.debug(\"PHP Microservice executing\");\n const microservice = this;\n const request = microservice.request;\n const stream = o.stream;\n microservice.stream = stream;\n stream.on(\"data\", (data: any) => {\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"post\": microservice.post.bind(this),\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice, data);\n }\n });\n\n // data from POST, GET\n const requestMethod = request.method.toLowerCase();\n const supportedMethods: any = {\n \"get\": microservice.get.bind(this),\n \"head\": microservice.head.bind(this),\n \"put\": microservice.put.bind(this),\n \"delete\": microservice.delete.bind(this),\n \"connect\": microservice.connect.bind(this),\n \"options\": microservice.options.bind(this),\n \"trace\": microservice.trace.bind(this),\n \"patch\": microservice.patch.bind(this)\n };\n if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {\n supportedMethods[requestMethod].call(microservice);\n }\n\n }\n\n get_php_headers_list() {\n const phpheaders: any = {\n \"QUERY_STRING\": `${this.request.query}`,\n \"REDIRECT_STATUS\": \"200\",\n \"REQUEST_METHOD\": `${this.request.method}`,\n \"SCRIPT_FILENAME\": `${this.scriptFilePath}`,\n \"SCRIPT_NAME\": `${this.scriptFilePath.toString()}`,\n \"PATH_INFO\": `${this.request.path}`,\n \"SERVER_NAME\": `${this.domain}`,\n \"SERVER_PROTOCOL\": \"HTTP/2\",\n \"REQUEST_URI\": `${this.request.href}`,\n \"HTTP_HOST\": `${this.domain}`\n };\n\n function fixedEncodeURIComponent(str: string | number | boolean) {\n return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\\*/g, \"%2A\");\n }\n for (const headername in this.request.headers) {\n if (!headername.startsWith(\":\")) {\n const phpheadername = headername.toUpperCase().replace(new RegExp(\"-\", \"g\"), \"_\");\n let headervalue = this.request.headers[headername];\n if (typeof headervalue !== \"string\") {\n headervalue = JSON.stringify(headervalue);\n }\n phpheaders[\"HTTP_\" + phpheadername] = fixedEncodeURIComponent(headervalue);\n }\n }\n\n return PipeLog.pipe(phpheaders);\n }\n\n saveTempData(data: any, done: { (): void; (): void; call?: any; }) {\n const filename = os.tmpdir() + this.tempFileName;\n fs.writeFile(filename, data, (err: any) => {\n if (err) throw err;\n logger.debug(\"A temp data file has been saved!\");\n done.call(this);\n });\n }\n\n generateTempFileName() {\n this.tempFileName = \"temp\" + Date.now().toString();\n return this.tempFileName;\n }\n\n trimSlash(pathname: string) {\n if (pathname.startsWith(\"/\")) {\n pathname = pathname.slice(1);\n }\n if (pathname.endsWith(\"/\")) {\n pathname = pathname.slice(0, -1);\n }\n return pathname.replace(\"//\", \"/\");\n }\n\n get() {\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(this.request.query, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n$_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n$_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_GET);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\ninclude('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n logger.debug(commandline);\n try {\n const php = exec(commandline, (err: any, stdout: any, stderr: any) => {\n microservice.body = stdout;\n console.log(stderr);\n microservice.done();\n });\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n console.log(ex);\n microservice.done();\n }\n\n });\n\n }\n\n head(formData: any) {\n this.done();\n }\n\n post(formData: any) {\n logger.debug(\"POST DATA\");\n const microservice = this;\n microservice.generateTempFileName();\n\n microservice.saveTempData(formData, function () {\n try {\n process.chdir(CONFIG.get(\"documentRoot\") + microservice.request.pathname.slice(1));\n } catch (e) { }\n\n const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, \"redirect_to\") &&\n microservice.route.redirect_to !== \"\") ? (microservice.route.redirect_to) : (microservice.request.scriptname);\n const pathname = microservice.trimSlash(microservice.request.pathname);\n let documentRoot = CONFIG.get(\"documentRoot\", \"\");\n if (documentRoot == \"./\") {\n documentRoot = \"\";\n }\n\n let scriptFilePath;\n if (documentRoot !== \"\") {\n scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;\n } else {\n scriptFilePath = `${pathname}/${scriptFileName}`;\n }\n\n scriptFilePath = scriptFilePath.replace(\"//\", \"/\");\n if (scriptFilePath.startsWith(\"/\") && !documentRoot.startsWith(\"/\")) {\n scriptFilePath = scriptFilePath.slice(1);\n }\n\n logger.debug(`Loading PHP file: ${scriptFilePath}`);\n const PHPIncludePath = `.:${CONFIG.get(\"documentRoot\")}:${CONFIG.get(\"projectPath\")}`;\n\n microservice.scriptFilePath = scriptFilePath;\n\n let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path=\"${PHPIncludePath}\" -q <<- 'EOF'\n<?php\n$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');\nforeach ($_SERVER as $_k => $_v) {\nif (array_key_exists($_k,$_ENV)){\n$_SERVER[$_k] = $_ENV[$_k];\n}\nif ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){\n$_SERVER[$_k]=urldecode($_v);\n}\n}\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);\n@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_POST);\nunlink(sys_get_temp_dir().'${microservice.tempFileName}');\n@include('${scriptFilePath}');\n?>\nEOF`;\n commandline = fixWinCmd(commandline);\n // logger.debug(commandline);\n\n try {\n microservice.body = execSync(commandline).toString();\n } catch (ex: any) {\n microservice.body = \"500 - INTERNAL ERROR\";\n logger.debug(ex.toString());\n }\n microservice.done();\n\n });\n\n }\n\n put(formData: any) {\n this.done();\n }\n\n delete(formData: any) {\n this.done();\n }\n\n connect(formData: any) {\n this.done();\n }\n\n options(formData: any) {\n this.done();\n }\n\n trace(formData: any) {\n this.done();\n }\n\n patch(formData: any) {\n this.done();\n }\n\n done() {\n const microservice = this;\n const stream = microservice.stream;\n try {\n stream.respond(microservice.headers);\n } catch (e) {\n //\n }\n if (microservice.body != null) {\n microservice.finishWithBody.call(microservice, stream);\n }\n }\n\n finishWithBody(stream: { write: (arg0: any) => void; end: () => void; }) {\n try {\n stream.write(this.body);\n stream.end();\n } catch (e: any) {\n logger.debug(\"Something wrong writing the response for microservice\" + e.toString());\n }\n }\n\n\n}\n\nconst Microservice = Class(\"Microservice\", PHPMicroservice);\n\nPackage(\"org.quickcorp.backend.php\", [\n\n PHPMicroservice,\n Microservice\n]);\n\nexports = {\n PHPMicroservice,\n Microservice\n};"],
5
+ "mappings": "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",
6
6
  "names": ["requestMethod", "supportedMethods"]
7
7
  }