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
@@ -29,149 +29,148 @@ var global = (() => {
29
29
  var require_backend_php = __commonJS({
30
30
  "src/backend/backend-php.ts"(exports) {
31
31
  var import_common_pipelog = require("../common-pipelog");
32
- (async () => {
33
- const fs = await import("node:fs");
34
- const os = await import("node:os");
35
- const { exec, execSync } = await import("node:child_process");
36
- const { Package, BackendMicroservice, logger, CONFIG, Class } = await import("qcobjects");
37
- const path = await import("node:path");
38
- const absolutePath = path.resolve(__dirname, "./");
39
- const fixWinCmd = /* @__PURE__ */ __name(function(commandline) {
40
- if (!process.platform.toLowerCase().startsWith("win")) {
41
- commandline = commandline.replace(/(")/g, String.fromCharCode(92) + '"');
42
- }
43
- return commandline;
44
- }, "fixWinCmd");
45
- class PHPMicroservice extends BackendMicroservice {
46
- static {
47
- __name(this, "PHPMicroservice");
48
- }
49
- request;
50
- stream;
51
- scriptFilePath;
52
- domain;
53
- tempFileName;
54
- route;
55
- body;
56
- headers;
57
- constructor() {
58
- super();
59
- const o = this;
60
- logger.debug("PHP Microservice executing");
61
- const microservice = this;
62
- const request = microservice.request;
63
- const stream = o.stream;
64
- microservice.stream = stream;
65
- stream.on("data", (data) => {
66
- const requestMethod2 = request.method.toLowerCase();
67
- const supportedMethods2 = {
68
- "post": microservice.post.bind(this)
69
- };
70
- if (supportedMethods2.hasOwnProperty.call(supportedMethods2, requestMethod2)) {
71
- supportedMethods2[requestMethod2].call(microservice, data);
72
- }
73
- });
74
- const requestMethod = request.method.toLowerCase();
75
- const supportedMethods = {
76
- "get": microservice.get.bind(this),
77
- "head": microservice.head.bind(this),
78
- "put": microservice.put.bind(this),
79
- "delete": microservice.delete.bind(this),
80
- "connect": microservice.connect.bind(this),
81
- "options": microservice.options.bind(this),
82
- "trace": microservice.trace.bind(this),
83
- "patch": microservice.patch.bind(this)
32
+ var import_fs = __toESM(require("fs"));
33
+ var import_os = __toESM(require("os"));
34
+ var import_child_process = require("child_process");
35
+ var import_node_path = __toESM(require("node:path"));
36
+ var import_qcobjects = require("qcobjects");
37
+ const absolutePath = import_node_path.default.resolve(__dirname, "./");
38
+ const fixWinCmd = /* @__PURE__ */ __name(function(commandline) {
39
+ if (!process.platform.toLowerCase().startsWith("win")) {
40
+ commandline = commandline.replace(/(")/g, String.fromCharCode(92) + '"');
41
+ }
42
+ return commandline;
43
+ }, "fixWinCmd");
44
+ class PHPMicroservice extends import_qcobjects.BackendMicroservice {
45
+ static {
46
+ __name(this, "PHPMicroservice");
47
+ }
48
+ request;
49
+ stream;
50
+ scriptFilePath;
51
+ domain;
52
+ tempFileName;
53
+ route;
54
+ body;
55
+ headers;
56
+ constructor() {
57
+ super();
58
+ const o = this;
59
+ import_qcobjects.logger.debug("PHP Microservice executing");
60
+ const microservice = this;
61
+ const request = microservice.request;
62
+ const stream = o.stream;
63
+ microservice.stream = stream;
64
+ stream.on("data", (data) => {
65
+ const requestMethod2 = request.method.toLowerCase();
66
+ const supportedMethods2 = {
67
+ "post": microservice.post.bind(this)
84
68
  };
85
- if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
86
- supportedMethods[requestMethod].call(microservice);
69
+ if (supportedMethods2.hasOwnProperty.call(supportedMethods2, requestMethod2)) {
70
+ supportedMethods2[requestMethod2].call(microservice, data);
87
71
  }
72
+ });
73
+ const requestMethod = request.method.toLowerCase();
74
+ const supportedMethods = {
75
+ "get": microservice.get.bind(this),
76
+ "head": microservice.head.bind(this),
77
+ "put": microservice.put.bind(this),
78
+ "delete": microservice.delete.bind(this),
79
+ "connect": microservice.connect.bind(this),
80
+ "options": microservice.options.bind(this),
81
+ "trace": microservice.trace.bind(this),
82
+ "patch": microservice.patch.bind(this)
83
+ };
84
+ if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
85
+ supportedMethods[requestMethod].call(microservice);
88
86
  }
89
- get_php_headers_list() {
90
- const phpheaders = {
91
- "QUERY_STRING": `${this.request.query}`,
92
- "REDIRECT_STATUS": "200",
93
- "REQUEST_METHOD": `${this.request.method}`,
94
- "SCRIPT_FILENAME": `${this.scriptFilePath}`,
95
- "SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
96
- "PATH_INFO": `${this.request.path}`,
97
- "SERVER_NAME": `${this.domain}`,
98
- "SERVER_PROTOCOL": "HTTP/2",
99
- "REQUEST_URI": `${this.request.href}`,
100
- "HTTP_HOST": `${this.domain}`
101
- };
102
- function fixedEncodeURIComponent(str) {
103
- return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
104
- }
105
- __name(fixedEncodeURIComponent, "fixedEncodeURIComponent");
106
- for (const headername in this.request.headers) {
107
- if (!headername.startsWith(":")) {
108
- const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
109
- let headervalue = this.request.headers[headername];
110
- if (typeof headervalue !== "string") {
111
- headervalue = JSON.stringify(headervalue);
112
- }
113
- phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
87
+ }
88
+ get_php_headers_list() {
89
+ const phpheaders = {
90
+ "QUERY_STRING": `${this.request.query}`,
91
+ "REDIRECT_STATUS": "200",
92
+ "REQUEST_METHOD": `${this.request.method}`,
93
+ "SCRIPT_FILENAME": `${this.scriptFilePath}`,
94
+ "SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
95
+ "PATH_INFO": `${this.request.path}`,
96
+ "SERVER_NAME": `${this.domain}`,
97
+ "SERVER_PROTOCOL": "HTTP/2",
98
+ "REQUEST_URI": `${this.request.href}`,
99
+ "HTTP_HOST": `${this.domain}`
100
+ };
101
+ function fixedEncodeURIComponent(str) {
102
+ return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
103
+ }
104
+ __name(fixedEncodeURIComponent, "fixedEncodeURIComponent");
105
+ for (const headername in this.request.headers) {
106
+ if (!headername.startsWith(":")) {
107
+ const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
108
+ let headervalue = this.request.headers[headername];
109
+ if (typeof headervalue !== "string") {
110
+ headervalue = JSON.stringify(headervalue);
114
111
  }
112
+ phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
115
113
  }
116
- return import_common_pipelog.PipeLog.pipe(phpheaders);
117
114
  }
118
- saveTempData(data, done) {
119
- const filename = os.tmpdir() + this.tempFileName;
120
- fs.writeFile(filename, data, (err) => {
121
- if (err) throw err;
122
- logger.debug("A temp data file has been saved!");
123
- done.call(this);
124
- });
115
+ return import_common_pipelog.PipeLog.pipe(phpheaders);
116
+ }
117
+ saveTempData(data, done) {
118
+ const filename = import_os.default.tmpdir() + this.tempFileName;
119
+ import_fs.default.writeFile(filename, data, (err) => {
120
+ if (err) throw err;
121
+ import_qcobjects.logger.debug("A temp data file has been saved!");
122
+ done.call(this);
123
+ });
124
+ }
125
+ generateTempFileName() {
126
+ this.tempFileName = "temp" + Date.now().toString();
127
+ return this.tempFileName;
128
+ }
129
+ trimSlash(pathname) {
130
+ if (pathname.startsWith("/")) {
131
+ pathname = pathname.slice(1);
125
132
  }
126
- generateTempFileName() {
127
- this.tempFileName = "temp" + Date.now().toString();
128
- return this.tempFileName;
133
+ if (pathname.endsWith("/")) {
134
+ pathname = pathname.slice(0, -1);
129
135
  }
130
- trimSlash(pathname) {
131
- if (pathname.startsWith("/")) {
132
- pathname = pathname.slice(1);
136
+ return pathname.replace("//", "/");
137
+ }
138
+ get() {
139
+ const microservice = this;
140
+ microservice.generateTempFileName();
141
+ microservice.saveTempData(this.request.query, function() {
142
+ try {
143
+ process.chdir(import_qcobjects.CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
144
+ } catch (e) {
133
145
  }
134
- if (pathname.endsWith("/")) {
135
- pathname = pathname.slice(0, -1);
146
+ const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
147
+ const pathname = microservice.trimSlash(microservice.request.pathname);
148
+ let documentRoot = import_qcobjects.CONFIG.get("documentRoot", "");
149
+ if (documentRoot == "./") {
150
+ documentRoot = "";
136
151
  }
137
- return pathname.replace("//", "/");
138
- }
139
- get() {
140
- const microservice = this;
141
- microservice.generateTempFileName();
142
- microservice.saveTempData(this.request.query, function() {
143
- try {
144
- process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
145
- } catch (e) {
146
- }
147
- const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
148
- const pathname = microservice.trimSlash(microservice.request.pathname);
149
- let documentRoot = CONFIG.get("documentRoot", "");
150
- if (documentRoot == "./") {
151
- documentRoot = "";
152
- }
153
- let scriptFilePath;
154
- if (documentRoot !== "") {
155
- scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
156
- } else {
157
- scriptFilePath = `${pathname}/${scriptFileName}`;
158
- }
159
- scriptFilePath = scriptFilePath.replace("//", "/");
160
- if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
161
- scriptFilePath = scriptFilePath.slice(1);
162
- }
163
- logger.debug(`Loading PHP file: ${scriptFilePath}`);
164
- const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
165
- microservice.scriptFilePath = scriptFilePath;
166
- let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
152
+ let scriptFilePath;
153
+ if (documentRoot !== "") {
154
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
155
+ } else {
156
+ scriptFilePath = `${pathname}/${scriptFileName}`;
157
+ }
158
+ scriptFilePath = scriptFilePath.replace("//", "/");
159
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
160
+ scriptFilePath = scriptFilePath.slice(1);
161
+ }
162
+ import_qcobjects.logger.debug(`Loading PHP file: ${scriptFilePath}`);
163
+ const PHPIncludePath = `.:${import_qcobjects.CONFIG.get("documentRoot")}:${import_qcobjects.CONFIG.get("projectPath")}`;
164
+ microservice.scriptFilePath = scriptFilePath;
165
+ let commandline = `echo $(cat ${import_os.default.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
167
166
  <?php
168
167
  $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
169
168
  foreach ($_SERVER as $_k => $_v) {
170
169
  if (array_key_exists($_k,$_ENV)){
171
- $_SERVER[$_k] = $_ENV[$_k];
170
+ $_SERVER[$_k] = $_ENV[$_k];
172
171
  }
173
172
  if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
174
- $_SERVER[$_k]=urldecode($_v);
173
+ $_SERVER[$_k]=urldecode($_v);
175
174
  }
176
175
  }
177
176
  @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
@@ -180,62 +179,62 @@ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
180
179
  include('${scriptFilePath}');
181
180
  ?>
182
181
  EOF`;
183
- commandline = fixWinCmd(commandline);
184
- logger.debug(commandline);
185
- try {
186
- const php = exec(commandline, (err, stdout, stderr) => {
187
- microservice.body = stdout;
188
- console.log(stderr);
189
- microservice.done();
190
- });
191
- } catch (ex) {
192
- microservice.body = "500 - INTERNAL ERROR";
193
- logger.debug(ex.toString());
194
- console.log(ex);
182
+ commandline = fixWinCmd(commandline);
183
+ import_qcobjects.logger.debug(commandline);
184
+ try {
185
+ const php = (0, import_child_process.exec)(commandline, (err, stdout, stderr) => {
186
+ microservice.body = stdout;
187
+ console.log(stderr);
195
188
  microservice.done();
196
- }
197
- });
198
- }
199
- head(formData) {
200
- this.done();
201
- }
202
- post(formData) {
203
- logger.debug("POST DATA");
204
- const microservice = this;
205
- microservice.generateTempFileName();
206
- microservice.saveTempData(formData, function() {
207
- try {
208
- process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
209
- } catch (e) {
210
- }
211
- const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
212
- const pathname = microservice.trimSlash(microservice.request.pathname);
213
- let documentRoot = CONFIG.get("documentRoot", "");
214
- if (documentRoot == "./") {
215
- documentRoot = "";
216
- }
217
- let scriptFilePath;
218
- if (documentRoot !== "") {
219
- scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
220
- } else {
221
- scriptFilePath = `${pathname}/${scriptFileName}`;
222
- }
223
- scriptFilePath = scriptFilePath.replace("//", "/");
224
- if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
225
- scriptFilePath = scriptFilePath.slice(1);
226
- }
227
- logger.debug(`Loading PHP file: ${scriptFilePath}`);
228
- const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
229
- microservice.scriptFilePath = scriptFilePath;
230
- let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
189
+ });
190
+ } catch (ex) {
191
+ microservice.body = "500 - INTERNAL ERROR";
192
+ import_qcobjects.logger.debug(ex.toString());
193
+ console.log(ex);
194
+ microservice.done();
195
+ }
196
+ });
197
+ }
198
+ head(formData) {
199
+ this.done();
200
+ }
201
+ post(formData) {
202
+ import_qcobjects.logger.debug("POST DATA");
203
+ const microservice = this;
204
+ microservice.generateTempFileName();
205
+ microservice.saveTempData(formData, function() {
206
+ try {
207
+ process.chdir(import_qcobjects.CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
208
+ } catch (e) {
209
+ }
210
+ const scriptFileName = microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") && microservice.route.redirect_to !== "" ? microservice.route.redirect_to : microservice.request.scriptname;
211
+ const pathname = microservice.trimSlash(microservice.request.pathname);
212
+ let documentRoot = import_qcobjects.CONFIG.get("documentRoot", "");
213
+ if (documentRoot == "./") {
214
+ documentRoot = "";
215
+ }
216
+ let scriptFilePath;
217
+ if (documentRoot !== "") {
218
+ scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
219
+ } else {
220
+ scriptFilePath = `${pathname}/${scriptFileName}`;
221
+ }
222
+ scriptFilePath = scriptFilePath.replace("//", "/");
223
+ if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
224
+ scriptFilePath = scriptFilePath.slice(1);
225
+ }
226
+ import_qcobjects.logger.debug(`Loading PHP file: ${scriptFilePath}`);
227
+ const PHPIncludePath = `.:${import_qcobjects.CONFIG.get("documentRoot")}:${import_qcobjects.CONFIG.get("projectPath")}`;
228
+ microservice.scriptFilePath = scriptFilePath;
229
+ let commandline = `echo $(cat ${import_os.default.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
231
230
  <?php
232
231
  $_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
233
232
  foreach ($_SERVER as $_k => $_v) {
234
233
  if (array_key_exists($_k,$_ENV)){
235
- $_SERVER[$_k] = $_ENV[$_k];
234
+ $_SERVER[$_k] = $_ENV[$_k];
236
235
  }
237
236
  if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
238
- $_SERVER[$_k]=urldecode($_v);
237
+ $_SERVER[$_k]=urldecode($_v);
239
238
  }
240
239
  }
241
240
  @parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
@@ -244,66 +243,63 @@ unlink(sys_get_temp_dir().'${microservice.tempFileName}');
244
243
  @include('${scriptFilePath}');
245
244
  ?>
246
245
  EOF`;
247
- commandline = fixWinCmd(commandline);
248
- try {
249
- microservice.body = execSync(commandline).toString();
250
- } catch (ex) {
251
- microservice.body = "500 - INTERNAL ERROR";
252
- logger.debug(ex.toString());
253
- }
254
- microservice.done();
255
- });
256
- }
257
- put(formData) {
258
- this.done();
259
- }
260
- delete(formData) {
261
- this.done();
262
- }
263
- connect(formData) {
264
- this.done();
265
- }
266
- options(formData) {
267
- this.done();
268
- }
269
- trace(formData) {
270
- this.done();
271
- }
272
- patch(formData) {
273
- this.done();
274
- }
275
- done() {
276
- const microservice = this;
277
- const stream = microservice.stream;
246
+ commandline = fixWinCmd(commandline);
278
247
  try {
279
- stream.respond(microservice.headers);
280
- } catch (e) {
281
- }
282
- if (microservice.body != null) {
283
- microservice.finishWithBody.call(microservice, stream);
248
+ microservice.body = (0, import_child_process.execSync)(commandline).toString();
249
+ } catch (ex) {
250
+ microservice.body = "500 - INTERNAL ERROR";
251
+ import_qcobjects.logger.debug(ex.toString());
284
252
  }
253
+ microservice.done();
254
+ });
255
+ }
256
+ put(formData) {
257
+ this.done();
258
+ }
259
+ delete(formData) {
260
+ this.done();
261
+ }
262
+ connect(formData) {
263
+ this.done();
264
+ }
265
+ options(formData) {
266
+ this.done();
267
+ }
268
+ trace(formData) {
269
+ this.done();
270
+ }
271
+ patch(formData) {
272
+ this.done();
273
+ }
274
+ done() {
275
+ const microservice = this;
276
+ const stream = microservice.stream;
277
+ try {
278
+ stream.respond(microservice.headers);
279
+ } catch (e) {
285
280
  }
286
- finishWithBody(stream) {
287
- try {
288
- stream.write(this.body);
289
- stream.end();
290
- } catch (e) {
291
- logger.debug("Something wrong writing the response for microservice" + e.toString());
292
- }
281
+ if (microservice.body != null) {
282
+ microservice.finishWithBody.call(microservice, stream);
283
+ }
284
+ }
285
+ finishWithBody(stream) {
286
+ try {
287
+ stream.write(this.body);
288
+ stream.end();
289
+ } catch (e) {
290
+ import_qcobjects.logger.debug("Something wrong writing the response for microservice" + e.toString());
293
291
  }
294
292
  }
295
- const Microservice = Class("Microservice", PHPMicroservice);
296
- Package("org.quickcorp.backend.php", [
297
- PHPMicroservice,
298
- Microservice
299
- ]);
300
- exports = {
301
- PHPMicroservice,
302
- Microservice
303
- };
304
- })().catch((e) => {
305
- console.error(e);
306
- });
293
+ }
294
+ const Microservice = (0, import_qcobjects.Class)("Microservice", PHPMicroservice);
295
+ (0, import_qcobjects.Package)("org.quickcorp.backend.php", [
296
+ PHPMicroservice,
297
+ Microservice
298
+ ]);
299
+ exports = {
300
+ PHPMicroservice,
301
+ Microservice
302
+ };
307
303
  }
308
304
  });
309
305
  return 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AA+BA,kCAAwB;AAExB,OAAC,YAAY;AACX,cAAM,KAAK,MAAM,OAAO,SAAS;AACjC,cAAM,KAAK,MAAM,OAAO,SAAS;AACjC,cAAM,EAAE,MAAM,SAAS,IAAI,MAAM,OAAO,oBAAoB;AAG5D,cAAM,EAAE,SAAS,qBAAqB,QAAQ,QAAQ,MAAM,IAAI,MAAM,OAAO,WAAW;AACxF,cAAM,OAAO,MAAM,OAAO,WAAW;AACrC,cAAM,eAAe,KAAK,QAAQ,WAAW,IAAI;AAEjD,cAAM,YAAY,gCAAU,aAAqB;AAC/C,cAAI,CAAC,QAAQ,SAAS,YAAY,EAAE,WAAW,KAAK,GAAG;AACrD,0BAAc,YAAY,QAAQ,QAAQ,OAAO,aAAa,EAAE,IAAI,GAAI;AAAA,UAC1E;AACA,iBAAO;AAAA,QACT,GALkB;AAAA,QAQlB,MAAM,wBAAwB,oBAAoB;AAAA,UAnDpD,OAmDoD;AAAA;AAAA;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc;AACZ,kBAAM;AACN,kBAAM,IAAI;AAEV,mBAAO,MAAM,4BAA4B;AACzC,kBAAM,eAAe;AACrB,kBAAM,UAAU,aAAa;AAC7B,kBAAM,SAAS,EAAE;AACjB,yBAAa,SAAS;AACtB,mBAAO,GAAG,QAAQ,CAAC,SAAc;AAE/B,oBAAMA,iBAAgB,QAAQ,OAAO,YAAY;AACjD,oBAAMC,oBAAwB;AAAA,gBAC5B,QAAQ,aAAa,KAAK,KAAK,IAAI;AAAA,cACrC;AACA,kBAAIA,kBAAiB,eAAe,KAAKA,mBAAkBD,cAAa,GAAG;AACzE,gBAAAC,kBAAiBD,cAAa,EAAE,KAAK,cAAc,IAAI;AAAA,cACzD;AAAA,YACF,CAAC;AAGD,kBAAM,gBAAgB,QAAQ,OAAO,YAAY;AACjD,kBAAM,mBAAwB;AAAA,cAC5B,OAAO,aAAa,IAAI,KAAK,IAAI;AAAA,cACjC,QAAQ,aAAa,KAAK,KAAK,IAAI;AAAA,cACnC,OAAO,aAAa,IAAI,KAAK,IAAI;AAAA,cACjC,UAAU,aAAa,OAAO,KAAK,IAAI;AAAA,cACvC,WAAW,aAAa,QAAQ,KAAK,IAAI;AAAA,cACzC,WAAW,aAAa,QAAQ,KAAK,IAAI;AAAA,cACzC,SAAS,aAAa,MAAM,KAAK,IAAI;AAAA,cACrC,SAAS,aAAa,MAAM,KAAK,IAAI;AAAA,YACvC;AACA,gBAAI,iBAAiB,eAAe,KAAK,kBAAkB,aAAa,GAAG;AACzE,+BAAiB,aAAa,EAAE,KAAK,YAAY;AAAA,YACnD;AAAA,UAEF;AAAA,UAEA,uBAAuB;AACrB,kBAAM,aAAkB;AAAA,cACtB,gBAAgB,GAAG,KAAK,QAAQ,KAAK;AAAA,cACrC,mBAAmB;AAAA,cACnB,kBAAkB,GAAG,KAAK,QAAQ,MAAM;AAAA,cACxC,mBAAmB,GAAG,KAAK,cAAc;AAAA,cACzC,eAAe,GAAG,KAAK,eAAe,SAAS,CAAC;AAAA,cAChD,aAAa,GAAG,KAAK,QAAQ,IAAI;AAAA,cACjC,eAAe,GAAG,KAAK,MAAM;AAAA,cAC7B,mBAAmB;AAAA,cACnB,eAAe,GAAG,KAAK,QAAQ,IAAI;AAAA,cACnC,aAAa,GAAG,KAAK,MAAM;AAAA,YAC7B;AAEA,qBAAS,wBAAwB,KAAgC;AAC/D,qBAAO,mBAAmB,GAAG,EAAE,QAAQ,WAAW,MAAM,EAAE,QAAQ,OAAO,KAAK;AAAA,YAChF;AAFS;AAGT,uBAAW,cAAc,KAAK,QAAQ,SAAS;AAC7C,kBAAI,CAAC,WAAW,WAAW,GAAG,GAAG;AAC/B,sBAAM,gBAAgB,WAAW,YAAY,EAAE,QAAQ,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG;AAChF,oBAAI,cAAc,KAAK,QAAQ,QAAQ,UAAU;AACjD,oBAAI,OAAO,gBAAgB,UAAU;AACnC,gCAAc,KAAK,UAAU,WAAW;AAAA,gBAC1C;AACA,2BAAW,UAAU,aAAa,IAAI,wBAAwB,WAAW;AAAA,cAC3E;AAAA,YACF;AAEA,mBAAO,8BAAQ,KAAK,UAAU;AAAA,UAChC;AAAA,UAEA,aAAa,MAAW,MAA2C;AACjE,kBAAM,WAAW,GAAG,OAAO,IAAI,KAAK;AACpC,eAAG,UAAU,UAAU,MAAM,CAAC,QAAa;AACzC,kBAAI,IAAK,OAAM;AACf,qBAAO,MAAM,kCAAkC;AAC/C,mBAAK,KAAK,IAAI;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,UAEA,uBAAuB;AACrB,iBAAK,eAAe,SAAS,KAAK,IAAI,EAAE,SAAS;AACjD,mBAAO,KAAK;AAAA,UACd;AAAA,UAEA,UAAU,UAAkB;AAC1B,gBAAI,SAAS,WAAW,GAAG,GAAG;AAC5B,yBAAW,SAAS,MAAM,CAAC;AAAA,YAC7B;AACA,gBAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,yBAAW,SAAS,MAAM,GAAG,EAAE;AAAA,YACjC;AACA,mBAAO,SAAS,QAAQ,MAAM,GAAG;AAAA,UACnC;AAAA,UAEA,MAAM;AACJ,kBAAM,eAAe;AACrB,yBAAa,qBAAqB;AAElC,yBAAa,aAAa,KAAK,QAAQ,OAAO,WAAY;AACxD,kBAAI;AACF,wBAAQ,MAAM,OAAO,IAAI,cAAc,IAAI,aAAa,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,cACnF,SAAS,GAAG;AAAA,cAAE;AAEd,oBAAM,iBAAkB,aAAa,MAAM,eAAe,KAAK,aAAa,OAAO,aAAa,KAC9F,aAAa,MAAM,gBAAgB,KAAO,aAAa,MAAM,cAAgB,aAAa,QAAQ;AACpG,oBAAM,WAAW,aAAa,UAAU,aAAa,QAAQ,QAAQ;AACrE,kBAAI,eAAe,OAAO,IAAI,gBAAgB,EAAE;AAChD,kBAAI,gBAAgB,MAAM;AACxB,+BAAe;AAAA,cACjB;AAEA,kBAAI;AACJ,kBAAI,iBAAiB,IAAI;AACvB,iCAAiB,GAAG,YAAY,IAAI,QAAQ,IAAI,cAAc;AAAA,cAChE,OAAO;AACL,iCAAiB,GAAG,QAAQ,IAAI,cAAc;AAAA,cAChD;AAEA,+BAAiB,eAAe,QAAQ,MAAM,GAAG;AACjD,kBAAI,eAAe,WAAW,GAAG,KAAK,CAAC,aAAa,WAAW,GAAG,GAAG;AACnE,iCAAiB,eAAe,MAAM,CAAC;AAAA,cACzC;AAEA,qBAAO,MAAM,qBAAqB,cAAc,EAAE;AAClD,oBAAM,iBAAiB,KAAK,OAAO,IAAI,cAAc,CAAC,IAAI,OAAO,IAAI,aAAa,CAAC;AAEnF,2BAAa,iBAAiB;AAE9B,kBAAI,cAAc,cAAc,GAAG,OAAO,CAAC,GAAG,aAAa,YAAY,QAAQ,aAAa,qBAAqB,IAAI,yBAAyB,cAAc;AAAA;AAAA,oDAEhH,aAAa,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAWhD,aAAa,YAAY;AAAA,WAC3C,cAAc;AAAA;AAAA;AAGjB,4BAAc,UAAU,WAAW;AACnC,qBAAO,MAAM,WAAW;AACxB,kBAAI;AACF,sBAAM,MAAM,KAAK,aAAa,CAAC,KAAU,QAAa,WAAgB;AACpE,+BAAa,OAAO;AACpB,0BAAQ,IAAI,MAAM;AAClB,+BAAa,KAAK;AAAA,gBACpB,CAAC;AAAA,cACH,SAAS,IAAS;AAChB,6BAAa,OAAO;AACpB,uBAAO,MAAM,GAAG,SAAS,CAAC;AAC1B,wBAAQ,IAAI,EAAE;AACd,6BAAa,KAAK;AAAA,cACpB;AAAA,YAEF,CAAC;AAAA,UAEH;AAAA,UAEA,KAAK,UAAe;AAClB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,KAAK,UAAe;AAClB,mBAAO,MAAM,WAAW;AACxB,kBAAM,eAAe;AACrB,yBAAa,qBAAqB;AAElC,yBAAa,aAAa,UAAU,WAAY;AAC9C,kBAAI;AACF,wBAAQ,MAAM,OAAO,IAAI,cAAc,IAAI,aAAa,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,cACnF,SAAS,GAAG;AAAA,cAAE;AAEd,oBAAM,iBAAkB,aAAa,MAAM,eAAe,KAAK,aAAa,OAAO,aAAa,KAC9F,aAAa,MAAM,gBAAgB,KAAO,aAAa,MAAM,cAAgB,aAAa,QAAQ;AACpG,oBAAM,WAAW,aAAa,UAAU,aAAa,QAAQ,QAAQ;AACrE,kBAAI,eAAe,OAAO,IAAI,gBAAgB,EAAE;AAChD,kBAAI,gBAAgB,MAAM;AACxB,+BAAe;AAAA,cACjB;AAEA,kBAAI;AACJ,kBAAI,iBAAiB,IAAI;AACvB,iCAAiB,GAAG,YAAY,IAAI,QAAQ,IAAI,cAAc;AAAA,cAChE,OAAO;AACL,iCAAiB,GAAG,QAAQ,IAAI,cAAc;AAAA,cAChD;AAEA,+BAAiB,eAAe,QAAQ,MAAM,GAAG;AACjD,kBAAI,eAAe,WAAW,GAAG,KAAK,CAAC,aAAa,WAAW,GAAG,GAAG;AACnE,iCAAiB,eAAe,MAAM,CAAC;AAAA,cACzC;AAEA,qBAAO,MAAM,qBAAqB,cAAc,EAAE;AAClD,oBAAM,iBAAiB,KAAK,OAAO,IAAI,cAAc,CAAC,IAAI,OAAO,IAAI,aAAa,CAAC;AAEnF,2BAAa,iBAAiB;AAE9B,kBAAI,cAAc,cAAc,GAAG,OAAO,CAAC,GAAG,aAAa,YAAY,QAAQ,aAAa,qBAAqB,IAAI,yBAAyB,cAAc;AAAA;AAAA,oDAEhH,aAAa,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAWhD,aAAa,YAAY;AAAA,YAC1C,cAAc;AAAA;AAAA;AAGlB,4BAAc,UAAU,WAAW;AAGnC,kBAAI;AACF,6BAAa,OAAO,SAAS,WAAW,EAAE,SAAS;AAAA,cACrD,SAAS,IAAS;AAChB,6BAAa,OAAO;AACpB,uBAAO,MAAM,GAAG,SAAS,CAAC;AAAA,cAC5B;AACA,2BAAa,KAAK;AAAA,YAEpB,CAAC;AAAA,UAEH;AAAA,UAEA,IAAI,UAAe;AACjB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,OAAO,UAAe;AACpB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,QAAQ,UAAe;AACrB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,QAAQ,UAAe;AACrB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,MAAM,UAAe;AACnB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,MAAM,UAAe;AACnB,iBAAK,KAAK;AAAA,UACZ;AAAA,UAEA,OAAO;AACL,kBAAM,eAAe;AACrB,kBAAM,SAAS,aAAa;AAC5B,gBAAI;AACF,qBAAO,QAAQ,aAAa,OAAO;AAAA,YACrC,SAAS,GAAG;AAAA,YAEZ;AACA,gBAAI,aAAa,QAAQ,MAAM;AAC7B,2BAAa,eAAe,KAAK,cAAc,MAAM;AAAA,YACvD;AAAA,UACF;AAAA,UAEA,eAAe,QAA0D;AACvE,gBAAI;AACF,qBAAO,MAAM,KAAK,IAAI;AACtB,qBAAO,IAAI;AAAA,YACb,SAAS,GAAQ;AACf,qBAAO,MAAM,0DAA0D,EAAE,SAAS,CAAC;AAAA,YACrF;AAAA,UACF;AAAA,QAGF;AAEA,cAAM,eAAe,MAAM,gBAAgB,eAAe;AAE1D,gBAAQ,6BAA6B;AAAA,UAEnC;AAAA,UACA;AAAA,QACF,CAAC;AAED,kBAAU;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF,GAAG,EACF,MAAM,OAAK;AAAC,gBAAQ,MAAM,CAAC;AAAA,MAAE,CAAC;AAAA;AAAA;",
6
- "names": ["requestMethod", "supportedMethods"]
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
+ "names": ["path", "requestMethod", "supportedMethods", "os", "fs"]
7
7
  }