qcobjects-cli 2.4.66 → 2.5.104-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npmpublish-beta.yml +4 -4
- package/.github/workflows/npmpublish-lts.yml +4 -4
- package/.github/workflows/npmpublish-main.yml +4 -4
- package/VERSION +1 -1
- package/build-esbuild.js +70 -0
- package/eslint.config.mjs +88 -0
- package/package.json +118 -56
- package/public/browser/backend/com.qcobjects.backend.microservice.static.js +318 -0
- package/public/browser/backend/com.qcobjects.backend.microservice.static.js.map +7 -0
- package/public/browser/backend/org.qcobjects.backend.php.js +290 -0
- package/public/browser/backend/org.qcobjects.backend.php.js.map +7 -0
- package/public/browser/com.qcobjects.cli.commands.jira.client_services.js +83 -0
- package/public/browser/com.qcobjects.cli.commands.jira.client_services.js.map +7 -0
- package/public/browser/com.qcobjects.cli.commands.jira.js +162 -0
- package/public/browser/com.qcobjects.cli.commands.jira.js.map +7 -0
- package/public/browser/com.qcobjects.cli.commands.js +387 -0
- package/public/browser/com.qcobjects.cli.commands.js.map +7 -0
- package/public/browser/com.qcobjects.cli.commands.version.js +247 -0
- package/public/browser/com.qcobjects.cli.commands.version.js.map +7 -0
- package/public/browser/index.js +4126 -0
- package/public/browser/index.js.map +7 -0
- package/public/browser/org.qcobjects.common.pipelog.js +56 -0
- package/public/browser/org.qcobjects.common.pipelog.js.map +7 -0
- package/public/browser/org.qcobjects.enterprise.commands.js +160 -0
- package/public/browser/org.qcobjects.enterprise.commands.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.api.client_services.js +81 -0
- package/public/browser/org.quickcorp.qcobjects.api.client_services.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.cli.js +4086 -0
- package/public/browser/org.quickcorp.qcobjects.cli.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.collab.server.js +422 -0
- package/public/browser/org.quickcorp.qcobjects.collab.server.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.defaultsettings.js +397 -0
- package/public/browser/org.quickcorp.qcobjects.defaultsettings.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.main.file.js +248 -0
- package/public/browser/org.quickcorp.qcobjects.main.file.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.main.http.gae.server.js +538 -0
- package/public/browser/org.quickcorp.qcobjects.main.http.gae.server.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.main.http.server.js +600 -0
- package/public/browser/org.quickcorp.qcobjects.main.http.server.js.map +7 -0
- package/public/browser/org.quickcorp.qcobjects.main.http2.server.js +465 -0
- package/public/browser/org.quickcorp.qcobjects.main.http2.server.js.map +7 -0
- package/public/browser/qcobjects-cli.js +4118 -0
- package/public/browser/qcobjects-cli.js.map +7 -0
- package/public/browser/qcobjects-collab.js +41 -0
- package/public/browser/qcobjects-collab.js.map +7 -0
- package/public/browser/qcobjects-createcert.js +67 -0
- package/public/browser/qcobjects-createcert.js.map +7 -0
- package/public/browser/qcobjects-gae-http-server.js +41 -0
- package/public/browser/qcobjects-gae-http-server.js.map +7 -0
- package/public/browser/qcobjects-http-server.js +41 -0
- package/public/browser/qcobjects-http-server.js.map +7 -0
- package/public/browser/qcobjects-http2-server.js +44 -0
- package/public/browser/qcobjects-http2-server.js.map +7 -0
- package/public/browser/qcobjects-shell.js +50 -0
- package/public/browser/qcobjects-shell.js.map +7 -0
- package/public/browser/types/global/index.d.js +15 -0
- package/public/browser/types/global/index.d.js.map +7 -0
- package/public/cjs/backend/com.qcobjects.backend.microservice.static.cjs +305 -0
- package/public/cjs/backend/com.qcobjects.backend.microservice.static.cjs.map +7 -0
- package/public/cjs/backend/org.qcobjects.backend.php.cjs +273 -0
- package/public/cjs/backend/org.qcobjects.backend.php.cjs.map +7 -0
- package/public/cjs/com.qcobjects.cli.commands.cjs +384 -0
- package/public/cjs/com.qcobjects.cli.commands.cjs.map +7 -0
- package/public/cjs/com.qcobjects.cli.commands.jira.cjs +158 -0
- package/public/cjs/com.qcobjects.cli.commands.jira.cjs.map +7 -0
- package/public/cjs/com.qcobjects.cli.commands.jira.client_services.cjs +79 -0
- package/public/cjs/com.qcobjects.cli.commands.jira.client_services.cjs.map +7 -0
- package/public/cjs/com.qcobjects.cli.commands.version.cjs +243 -0
- package/public/cjs/com.qcobjects.cli.commands.version.cjs.map +7 -0
- package/public/cjs/index.cjs +4118 -0
- package/public/cjs/index.cjs.map +7 -0
- package/public/cjs/org.qcobjects.common.pipelog.cjs +52 -0
- package/public/cjs/org.qcobjects.common.pipelog.cjs.map +7 -0
- package/public/cjs/org.qcobjects.enterprise.commands.cjs +156 -0
- package/public/cjs/org.qcobjects.enterprise.commands.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.api.client_services.cjs +77 -0
- package/public/cjs/org.quickcorp.qcobjects.api.client_services.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.cli.cjs +4086 -0
- package/public/cjs/org.quickcorp.qcobjects.cli.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.collab.server.cjs +405 -0
- package/public/cjs/org.quickcorp.qcobjects.collab.server.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.defaultsettings.cjs +394 -0
- package/public/cjs/org.quickcorp.qcobjects.defaultsettings.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.main.file.cjs +235 -0
- package/public/cjs/org.quickcorp.qcobjects.main.file.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http.gae.server.cjs +525 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http.gae.server.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http.server.cjs +587 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http.server.cjs.map +7 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http2.server.cjs +452 -0
- package/public/cjs/org.quickcorp.qcobjects.main.http2.server.cjs.map +7 -0
- package/public/cjs/qcobjects-cli.cjs +4115 -0
- package/public/cjs/qcobjects-cli.cjs.map +7 -0
- package/public/cjs/qcobjects-collab.cjs +24 -0
- package/public/cjs/qcobjects-collab.cjs.map +7 -0
- package/public/cjs/qcobjects-createcert.cjs +50 -0
- package/public/cjs/qcobjects-createcert.cjs.map +7 -0
- package/public/cjs/qcobjects-gae-http-server.cjs +24 -0
- package/public/cjs/qcobjects-gae-http-server.cjs.map +7 -0
- package/public/cjs/qcobjects-http-server.cjs +24 -0
- package/public/cjs/qcobjects-http-server.cjs.map +7 -0
- package/public/cjs/qcobjects-http2-server.cjs +27 -0
- package/public/cjs/qcobjects-http2-server.cjs.map +7 -0
- package/public/cjs/qcobjects-shell.cjs +34 -0
- package/public/cjs/qcobjects-shell.cjs.map +7 -0
- package/public/cjs/types/global/index.d.cjs +2 -0
- package/public/cjs/types/global/index.d.cjs.map +7 -0
- package/public/esm/backend/com.qcobjects.backend.microservice.static.mjs +315 -0
- package/public/esm/backend/com.qcobjects.backend.microservice.static.mjs.map +7 -0
- package/public/esm/backend/org.qcobjects.backend.php.mjs +287 -0
- package/public/esm/backend/org.qcobjects.backend.php.mjs.map +7 -0
- package/public/esm/com.qcobjects.cli.commands.jira.client_services.mjs +62 -0
- package/public/esm/com.qcobjects.cli.commands.jira.client_services.mjs.map +7 -0
- package/public/esm/com.qcobjects.cli.commands.jira.mjs +139 -0
- package/public/esm/com.qcobjects.cli.commands.jira.mjs.map +7 -0
- package/public/esm/com.qcobjects.cli.commands.mjs +368 -0
- package/public/esm/com.qcobjects.cli.commands.mjs.map +7 -0
- package/public/esm/com.qcobjects.cli.commands.version.mjs +226 -0
- package/public/esm/com.qcobjects.cli.commands.version.mjs.map +7 -0
- package/public/esm/index.mjs +4108 -0
- package/public/esm/index.mjs.map +7 -0
- package/public/esm/org.qcobjects.common.pipelog.mjs +35 -0
- package/public/esm/org.qcobjects.common.pipelog.mjs.map +7 -0
- package/public/esm/org.qcobjects.enterprise.commands.mjs +139 -0
- package/public/esm/org.qcobjects.enterprise.commands.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.api.client_services.mjs +60 -0
- package/public/esm/org.quickcorp.qcobjects.api.client_services.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.cli.mjs +4068 -0
- package/public/esm/org.quickcorp.qcobjects.cli.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.collab.server.mjs +419 -0
- package/public/esm/org.quickcorp.qcobjects.collab.server.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.defaultsettings.mjs +376 -0
- package/public/esm/org.quickcorp.qcobjects.defaultsettings.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.main.file.mjs +245 -0
- package/public/esm/org.quickcorp.qcobjects.main.file.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.main.http.gae.server.mjs +535 -0
- package/public/esm/org.quickcorp.qcobjects.main.http.gae.server.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.main.http.server.mjs +597 -0
- package/public/esm/org.quickcorp.qcobjects.main.http.server.mjs.map +7 -0
- package/public/esm/org.quickcorp.qcobjects.main.http2.server.mjs +462 -0
- package/public/esm/org.quickcorp.qcobjects.main.http2.server.mjs.map +7 -0
- package/public/esm/qcobjects-cli.mjs +4100 -0
- package/public/esm/qcobjects-cli.mjs.map +7 -0
- package/public/esm/qcobjects-collab.mjs +38 -0
- package/public/esm/qcobjects-collab.mjs.map +7 -0
- package/public/esm/qcobjects-createcert.mjs +64 -0
- package/public/esm/qcobjects-createcert.mjs.map +7 -0
- package/public/esm/qcobjects-gae-http-server.mjs +38 -0
- package/public/esm/qcobjects-gae-http-server.mjs.map +7 -0
- package/public/esm/qcobjects-http-server.mjs +38 -0
- package/public/esm/qcobjects-http-server.mjs.map +7 -0
- package/public/esm/qcobjects-http2-server.mjs +41 -0
- package/public/esm/qcobjects-http2-server.mjs.map +7 -0
- package/public/esm/qcobjects-shell.mjs +26 -0
- package/public/esm/qcobjects-shell.mjs.map +7 -0
- package/public/esm/types/global/index.d.mjs +12 -0
- package/public/esm/types/global/index.d.mjs.map +7 -0
- package/public/index.d.ts +165 -0
- package/spec/support/jasmine.json +7 -4
- package/src/backend/{com.qcobjects.backend.microservice.static.js → com.qcobjects.backend.microservice.static.ts} +42 -28
- package/src/backend/org.qcobjects.backend.php.ts +348 -0
- package/src/{com.qcobjects.cli.commands.jira.client_services.js → com.qcobjects.cli.commands.jira.client_services.ts} +47 -33
- package/src/com.qcobjects.cli.commands.jira.ts +124 -0
- package/src/{com.qcobjects.cli.commands.js → com.qcobjects.cli.commands.ts} +3 -9
- package/src/com.qcobjects.cli.commands.version.ts +285 -0
- package/src/{index.mjs → index.cts} +1 -1
- package/src/index.mts +2 -0
- package/src/index.ts +1 -1
- package/src/{org.qcobjects.common.pipelog.js → org.qcobjects.common.pipelog.ts} +21 -18
- package/src/org.qcobjects.enterprise.commands.ts +174 -0
- package/src/{org.quickcorp.qcobjects.api.client_services.js → org.quickcorp.qcobjects.api.client_services.ts} +46 -32
- package/src/org.quickcorp.qcobjects.cli.ts +504 -0
- package/src/org.quickcorp.qcobjects.collab.server.ts +420 -0
- package/src/org.quickcorp.qcobjects.defaultsettings.ts +424 -0
- package/src/org.quickcorp.qcobjects.main.file.ts +180 -0
- package/src/org.quickcorp.qcobjects.main.http.gae.server.ts +507 -0
- package/src/org.quickcorp.qcobjects.main.http.server.ts +551 -0
- package/src/org.quickcorp.qcobjects.main.http2.server.ts +419 -0
- package/src/{qcobjects-cli.js → qcobjects-cli.ts} +10 -12
- package/src/{qcobjects-collab.js → qcobjects-collab.ts} +4 -4
- package/src/{qcobjects-createcert.js → qcobjects-createcert.ts} +5 -3
- package/src/{qcobjects-gae-http-server.js → qcobjects-gae-http-server.ts} +4 -4
- package/src/{qcobjects-http-server.js → qcobjects-http-server.ts} +4 -4
- package/src/{qcobjects-http2-server.js → qcobjects-http2-server.ts} +6 -8
- package/src/{qcobjects-shell.js → qcobjects-shell.ts} +11 -14
- package/src/types/global/index.d.ts +2 -0
- package/tsconfig.d.json +45 -3
- package/tsconfig.jasmine.json +39 -0
- package/tsconfig.json +50 -7
- package/.eslintignore +0 -5
- package/.eslintrc.cjs +0 -6
- package/src/backend/org.qcobjects.backend.php.js +0 -334
- package/src/com.qcobjects.cli.commands.jira.js +0 -144
- package/src/com.qcobjects.cli.commands.version.js +0 -285
- package/src/index.cjs +0 -2
- package/src/index.d.ts +0 -2
- package/src/org.qcobjects.enterprise.commands.js +0 -194
- package/src/org.quickcorp.qcobjects.cli.js +0 -523
- package/src/org.quickcorp.qcobjects.collab.server.js +0 -415
- package/src/org.quickcorp.qcobjects.defaultsettings.js +0 -397
- package/src/org.quickcorp.qcobjects.main.file.js +0 -159
- package/src/org.quickcorp.qcobjects.main.http.gae.server.js +0 -495
- package/src/org.quickcorp.qcobjects.main.http.server.js +0 -529
- package/src/org.quickcorp.qcobjects.main.http2.server.js +0 -392
- /package/spec/{testsSpec.js → testsSpec.ts} +0 -0
|
@@ -35,11 +35,10 @@ const path = require("path");
|
|
|
35
35
|
const absolutePath = path.resolve(__dirname, "./");
|
|
36
36
|
const mime = require("mime");
|
|
37
37
|
|
|
38
|
+
const {Package, BackendMicroservice, CONFIG, logger} = require("qcobjects");
|
|
39
|
+
|
|
38
40
|
Package("com.qcobjects.backend.microservice.static", [
|
|
39
41
|
class Microservice extends BackendMicroservice {
|
|
40
|
-
constructor (){
|
|
41
|
-
super(...arguments);
|
|
42
|
-
}
|
|
43
42
|
|
|
44
43
|
finishWithBody (){}
|
|
45
44
|
done() {
|
|
@@ -49,7 +48,7 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
49
48
|
const stream = microservice.stream;
|
|
50
49
|
const fileName = (!microservice.fileName.startsWith("/"))?(`${process.cwd()}/${microservice.fileName}`):(microservice.fileName);
|
|
51
50
|
|
|
52
|
-
const sendFileHTTP2 = function(stream, fileName) {
|
|
51
|
+
const sendFileHTTP2 = function(stream: { respondWithFD: (arg0: any, arg1: { "content-length": any; "last-modified": any; "content-type": any; "cache-control": any; }) => void; on: (arg0: string, arg1: { (): void; (): void; }) => void; end: () => void; respond: (arg0: { ":status": number; "content-type": any; }) => void; write: (arg0: string) => void; }, fileName: string) {
|
|
53
52
|
// read and send file content in the stream
|
|
54
53
|
|
|
55
54
|
try {
|
|
@@ -72,7 +71,7 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
72
71
|
});
|
|
73
72
|
stream.end();
|
|
74
73
|
|
|
75
|
-
} catch (e) {
|
|
74
|
+
} catch (e:any) {
|
|
76
75
|
logger.warn("[ERROR] Something went wrong when trying to send the response as file " + fileName);
|
|
77
76
|
if (e.errno == -2) {
|
|
78
77
|
const headers = {
|
|
@@ -90,7 +89,7 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
90
89
|
|
|
91
90
|
};
|
|
92
91
|
|
|
93
|
-
const sendFileLegacyHTTP = function(stream, fileName) {
|
|
92
|
+
const sendFileLegacyHTTP = function(stream: { writeHead: (arg0: number, arg1: { status: number; "Content-Type": string; }) => void; write: (arg0: string) => void; on: (arg0: string, arg1: { (): void; (): void; }) => void; end: () => void; }, fileName: string) {
|
|
94
93
|
// read and send file content in the stream
|
|
95
94
|
let headers;
|
|
96
95
|
try {
|
|
@@ -117,7 +116,7 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
117
116
|
logger.info("closing static file", fileName);
|
|
118
117
|
});
|
|
119
118
|
|
|
120
|
-
} catch (e){
|
|
119
|
+
} catch (e:any){
|
|
121
120
|
if (e.errno==-2){
|
|
122
121
|
headers = {
|
|
123
122
|
"status": 404,
|
|
@@ -144,10 +143,10 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
144
143
|
|
|
145
144
|
}
|
|
146
145
|
|
|
147
|
-
static(method, data) {
|
|
146
|
+
static(method: string, data: any) {
|
|
148
147
|
const microservice = this;
|
|
149
148
|
const redirect_to = microservice.route.redirect_to;
|
|
150
|
-
return new Promise(function(resolve, reject) {
|
|
149
|
+
return new Promise<void>(function(resolve, reject) {
|
|
151
150
|
const supported_methods = microservice.route.supported_methods;
|
|
152
151
|
let _method_allowed_ = false;
|
|
153
152
|
if (typeof supported_methods !== "undefined") {
|
|
@@ -169,11 +168,11 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
169
168
|
resolve();
|
|
170
169
|
} catch (e) {
|
|
171
170
|
logger.warn("\u{1F926} Something went wrong \u{1F926} when trying to deliver a static path: " + microservice.fileName);
|
|
172
|
-
reject();
|
|
171
|
+
reject(e as Error);
|
|
173
172
|
}
|
|
174
173
|
} else {
|
|
175
174
|
logger.info("There is no redirect_to setting declared in route properties. \n Skipping static delivery...");
|
|
176
|
-
reject();
|
|
175
|
+
reject(new Error ("There is no redirect_to setting declared in route properties. \n Skipping static delivery..."));
|
|
177
176
|
}
|
|
178
177
|
} else {
|
|
179
178
|
logger.debug("Method: " + method + " will be skipped");
|
|
@@ -183,15 +182,16 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
183
182
|
});
|
|
184
183
|
}
|
|
185
184
|
|
|
186
|
-
head(formData) {
|
|
185
|
+
head(formData: any) {
|
|
187
186
|
const microservice = this;
|
|
188
187
|
microservice.static("head", formData).then(response => {
|
|
189
188
|
microservice.body = response;
|
|
190
189
|
microservice.done();
|
|
191
|
-
})
|
|
190
|
+
})
|
|
191
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
get(formData) {
|
|
194
|
+
get(formData: any) {
|
|
195
195
|
const microservice = this;
|
|
196
196
|
microservice.static("get", formData).then(response => {
|
|
197
197
|
microservice.body = response;
|
|
@@ -201,60 +201,74 @@ Package("com.qcobjects.backend.microservice.static", [
|
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
post(formData) {
|
|
204
|
+
post(formData: any) {
|
|
205
205
|
const microservice = this;
|
|
206
206
|
microservice.static("post", formData).then(response => {
|
|
207
207
|
microservice.body = response;
|
|
208
208
|
microservice.done();
|
|
209
|
-
})
|
|
209
|
+
})
|
|
210
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
211
|
+
|
|
210
212
|
}
|
|
211
213
|
|
|
212
|
-
put(formData) {
|
|
214
|
+
put(formData: any) {
|
|
213
215
|
const microservice = this;
|
|
214
216
|
microservice.static("put", formData).then(response => {
|
|
215
217
|
microservice.body = response;
|
|
216
218
|
microservice.done();
|
|
217
|
-
})
|
|
219
|
+
})
|
|
220
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
221
|
+
|
|
218
222
|
}
|
|
219
223
|
|
|
220
|
-
delete(formData) {
|
|
224
|
+
delete(formData: any) {
|
|
221
225
|
const microservice = this;
|
|
222
226
|
microservice.static("delete", formData).then(response => {
|
|
223
227
|
microservice.body = response;
|
|
224
228
|
microservice.done();
|
|
225
|
-
})
|
|
229
|
+
})
|
|
230
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
231
|
+
|
|
226
232
|
}
|
|
227
233
|
|
|
228
|
-
connect(formData) {
|
|
234
|
+
connect(formData: any) {
|
|
229
235
|
const microservice = this;
|
|
230
236
|
microservice.static("connect", formData).then(response => {
|
|
231
237
|
microservice.body = response;
|
|
232
238
|
microservice.done();
|
|
233
|
-
})
|
|
239
|
+
})
|
|
240
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
241
|
+
|
|
234
242
|
}
|
|
235
243
|
|
|
236
|
-
options(formData) {
|
|
244
|
+
options(formData: any) {
|
|
237
245
|
const microservice = this;
|
|
238
246
|
microservice.static("options", formData).then(response => {
|
|
239
247
|
microservice.body = response;
|
|
240
248
|
microservice.done();
|
|
241
|
-
})
|
|
249
|
+
})
|
|
250
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
251
|
+
|
|
242
252
|
}
|
|
243
253
|
|
|
244
|
-
trace(formData) {
|
|
254
|
+
trace(formData: any) {
|
|
245
255
|
const microservice = this;
|
|
246
256
|
microservice.static("trace", formData).then(response => {
|
|
247
257
|
microservice.body = response;
|
|
248
258
|
microservice.done();
|
|
249
|
-
})
|
|
259
|
+
})
|
|
260
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
261
|
+
|
|
250
262
|
}
|
|
251
263
|
|
|
252
|
-
patch(formData) {
|
|
264
|
+
patch(formData: any) {
|
|
253
265
|
const microservice = this;
|
|
254
266
|
microservice.static("patch", formData).then(response => {
|
|
255
267
|
microservice.body = response;
|
|
256
268
|
microservice.done();
|
|
257
|
-
})
|
|
269
|
+
})
|
|
270
|
+
.catch((e:any) => {logger.warn(`An error ocurred: ${e}`);});
|
|
271
|
+
|
|
258
272
|
}
|
|
259
273
|
|
|
260
274
|
}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QCObjects CLI 2.3.x
|
|
3
|
+
* ________________
|
|
4
|
+
*
|
|
5
|
+
* Author: Jean Machuca <correojean@gmail.com>
|
|
6
|
+
*
|
|
7
|
+
* Cross Browser Javascript Framework for MVC Patterns
|
|
8
|
+
* QuickCorp/QCObjects is licensed under the
|
|
9
|
+
* GNU Lesser General Public License v3.0
|
|
10
|
+
* [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
|
|
11
|
+
*
|
|
12
|
+
* Permissions of this copyleft license are conditioned on making available
|
|
13
|
+
* complete source code of licensed works and modifications under the same
|
|
14
|
+
* license or the GNU GPLv3. Copyright and license notices must be preserved.
|
|
15
|
+
* Contributors provide an express grant of patent rights. However, a larger
|
|
16
|
+
* work using the licensed work through interfaces provided by the licensed
|
|
17
|
+
* work may be distributed under different terms and without source code for
|
|
18
|
+
* the larger work.
|
|
19
|
+
*
|
|
20
|
+
* Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
|
|
21
|
+
*
|
|
22
|
+
* Everyone is permitted to copy and distribute verbatim copies of this
|
|
23
|
+
* license document, but changing it is not allowed.
|
|
24
|
+
*/
|
|
25
|
+
/* eslint no-unused-vars: "off" */
|
|
26
|
+
/* eslint no-redeclare: "off" */
|
|
27
|
+
/* eslint no-empty: "off" */
|
|
28
|
+
/* eslint strict: "off" */
|
|
29
|
+
/* eslint no-mixed-operators: "off" */
|
|
30
|
+
/* eslint no-undef: "off" */
|
|
31
|
+
"use strict";
|
|
32
|
+
const fs = require("node:fs");
|
|
33
|
+
const os = require("node:os");
|
|
34
|
+
const {
|
|
35
|
+
exec,
|
|
36
|
+
execSync
|
|
37
|
+
} = require("node:child_process");
|
|
38
|
+
// MY_ENV_VAR="HELLO WORLD" php -f index.php
|
|
39
|
+
|
|
40
|
+
const {Package, BackendMicroservice, logger, CONFIG, Class} = require("qcobjects");
|
|
41
|
+
const path = require("node:path");
|
|
42
|
+
const absolutePath = path.resolve(__dirname, "./");
|
|
43
|
+
const {PipeLog} = require(absolutePath + "/org.qcobjects.common.pipelog.js");
|
|
44
|
+
|
|
45
|
+
const fixWinCmd = function (commandline: string) {
|
|
46
|
+
if (!process.platform.toLowerCase().startsWith("win")) {
|
|
47
|
+
commandline = commandline.replace(/(")/g, String.fromCharCode(92) + "\"");
|
|
48
|
+
}
|
|
49
|
+
return commandline;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class PHPMicroservice extends BackendMicroservice {
|
|
54
|
+
constructor() {
|
|
55
|
+
super();
|
|
56
|
+
const o = this;
|
|
57
|
+
|
|
58
|
+
logger.debug("PHP Microservice executing");
|
|
59
|
+
const microservice = this;
|
|
60
|
+
const request = microservice.request;
|
|
61
|
+
const stream = o.stream;
|
|
62
|
+
microservice.stream = stream;
|
|
63
|
+
stream.on("data", (data: any) => {
|
|
64
|
+
// data from POST, GET
|
|
65
|
+
const requestMethod = request.method.toLowerCase();
|
|
66
|
+
const supportedMethods:any = {
|
|
67
|
+
"post": microservice.post.bind(this),
|
|
68
|
+
};
|
|
69
|
+
if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
|
|
70
|
+
supportedMethods[requestMethod].call(microservice, data);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// data from POST, GET
|
|
75
|
+
const requestMethod = request.method.toLowerCase();
|
|
76
|
+
const supportedMethods:any = {
|
|
77
|
+
"get": microservice.get.bind(this),
|
|
78
|
+
"head": microservice.head.bind(this),
|
|
79
|
+
"put": microservice.put.bind(this),
|
|
80
|
+
"delete": microservice.delete.bind(this),
|
|
81
|
+
"connect": microservice.connect.bind(this),
|
|
82
|
+
"options": microservice.options.bind(this),
|
|
83
|
+
"trace": microservice.trace.bind(this),
|
|
84
|
+
"patch": microservice.patch.bind(this)
|
|
85
|
+
};
|
|
86
|
+
if (supportedMethods.hasOwnProperty.call(supportedMethods, requestMethod)) {
|
|
87
|
+
supportedMethods[requestMethod].call(microservice);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
get_php_headers_list() {
|
|
93
|
+
const phpheaders:any= {
|
|
94
|
+
"QUERY_STRING": `${this.request.query}`,
|
|
95
|
+
"REDIRECT_STATUS": "200",
|
|
96
|
+
"REQUEST_METHOD": `${this.request.method}`,
|
|
97
|
+
"SCRIPT_FILENAME": `${this.scriptFilePath}`,
|
|
98
|
+
"SCRIPT_NAME": `${this.scriptFilePath.toString()}`,
|
|
99
|
+
"PATH_INFO": `${this.request.path}`,
|
|
100
|
+
"SERVER_NAME": `${this.domain}`,
|
|
101
|
+
"SERVER_PROTOCOL": "HTTP/2",
|
|
102
|
+
"REQUEST_URI": `${this.request.href}`,
|
|
103
|
+
"HTTP_HOST": `${this.domain}`
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
function fixedEncodeURIComponent(str: string | number | boolean) {
|
|
107
|
+
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
|
|
108
|
+
}
|
|
109
|
+
for (const headername in this.request.headers) {
|
|
110
|
+
if (!headername.startsWith(":")) {
|
|
111
|
+
const phpheadername = headername.toUpperCase().replace(new RegExp("-", "g"), "_");
|
|
112
|
+
let headervalue = this.request.headers[headername];
|
|
113
|
+
if (typeof headervalue !== "string") {
|
|
114
|
+
headervalue = JSON.stringify(headervalue);
|
|
115
|
+
}
|
|
116
|
+
phpheaders["HTTP_" + phpheadername] = fixedEncodeURIComponent(headervalue);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return PipeLog.pipe(phpheaders);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
saveTempData(data: any, done: { (): void; (): void; call?: any; }) {
|
|
124
|
+
const filename = os.tmpdir() + this.tempFileName;
|
|
125
|
+
fs.writeFile(filename, data, (err: any) => {
|
|
126
|
+
if (err) throw err;
|
|
127
|
+
logger.debug("A temp data file has been saved!");
|
|
128
|
+
done.call(this);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
generateTempFileName() {
|
|
133
|
+
this.tempFileName = "temp" + Date.now().toString();
|
|
134
|
+
return this.tempFileName;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
trimSlash(pathname: string) {
|
|
138
|
+
if (pathname.startsWith("/")) {
|
|
139
|
+
pathname = pathname.slice(1);
|
|
140
|
+
}
|
|
141
|
+
if (pathname.endsWith("/")) {
|
|
142
|
+
pathname = pathname.slice(0, -1);
|
|
143
|
+
}
|
|
144
|
+
return pathname.replace("//", "/");
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
get() {
|
|
148
|
+
const microservice = this;
|
|
149
|
+
microservice.generateTempFileName();
|
|
150
|
+
|
|
151
|
+
microservice.saveTempData(this.request.query, function () {
|
|
152
|
+
try {
|
|
153
|
+
process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
|
|
154
|
+
} catch (e) {}
|
|
155
|
+
|
|
156
|
+
const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") &&
|
|
157
|
+
microservice.route.redirect_to !== "") ? (microservice.route.redirect_to) : (microservice.request.scriptname);
|
|
158
|
+
const pathname = microservice.trimSlash(microservice.request.pathname);
|
|
159
|
+
let documentRoot = CONFIG.get("documentRoot", "");
|
|
160
|
+
if (documentRoot == "./") {
|
|
161
|
+
documentRoot = "";
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
let scriptFilePath;
|
|
165
|
+
if (documentRoot !== "") {
|
|
166
|
+
scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
|
|
167
|
+
} else {
|
|
168
|
+
scriptFilePath = `${pathname}/${scriptFileName}`;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
scriptFilePath = scriptFilePath.replace("//", "/");
|
|
172
|
+
if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
|
|
173
|
+
scriptFilePath = scriptFilePath.slice(1);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
logger.debug(`Loading PHP file: ${scriptFilePath}`);
|
|
177
|
+
const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
|
|
178
|
+
|
|
179
|
+
microservice.scriptFilePath = scriptFilePath;
|
|
180
|
+
|
|
181
|
+
let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
|
|
182
|
+
<?php
|
|
183
|
+
$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
|
|
184
|
+
foreach ($_SERVER as $_k => $_v) {
|
|
185
|
+
if (array_key_exists($_k,$_ENV)){
|
|
186
|
+
$_SERVER[$_k] = $_ENV[$_k];
|
|
187
|
+
}
|
|
188
|
+
if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
|
|
189
|
+
$_SERVER[$_k]=urldecode($_v);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
|
|
193
|
+
@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_GET);
|
|
194
|
+
unlink(sys_get_temp_dir().'${microservice.tempFileName}');
|
|
195
|
+
include('${scriptFilePath}');
|
|
196
|
+
?>
|
|
197
|
+
EOF`;
|
|
198
|
+
commandline = fixWinCmd(commandline);
|
|
199
|
+
logger.debug(commandline);
|
|
200
|
+
try {
|
|
201
|
+
const php = exec(commandline, (err: any, stdout: any, stderr: any) => {
|
|
202
|
+
microservice.body = stdout;
|
|
203
|
+
console.log(stderr);
|
|
204
|
+
microservice.done();
|
|
205
|
+
});
|
|
206
|
+
} catch (ex:any) {
|
|
207
|
+
microservice.body = "500 - INTERNAL ERROR";
|
|
208
|
+
logger.debug(ex.toString());
|
|
209
|
+
console.log(ex);
|
|
210
|
+
microservice.done();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
head(formData: any) {
|
|
218
|
+
this.done();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
post(formData: any) {
|
|
222
|
+
logger.debug("POST DATA");
|
|
223
|
+
const microservice = this;
|
|
224
|
+
microservice.generateTempFileName();
|
|
225
|
+
|
|
226
|
+
microservice.saveTempData(formData, function () {
|
|
227
|
+
try {
|
|
228
|
+
process.chdir(CONFIG.get("documentRoot") + microservice.request.pathname.slice(1));
|
|
229
|
+
} catch (e) {}
|
|
230
|
+
|
|
231
|
+
const scriptFileName = (microservice.route.hasOwnProperty.call(microservice.route, "redirect_to") &&
|
|
232
|
+
microservice.route.redirect_to !== "") ? (microservice.route.redirect_to) : (microservice.request.scriptname);
|
|
233
|
+
const pathname = microservice.trimSlash(microservice.request.pathname);
|
|
234
|
+
let documentRoot = CONFIG.get("documentRoot", "");
|
|
235
|
+
if (documentRoot == "./") {
|
|
236
|
+
documentRoot = "";
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
let scriptFilePath;
|
|
240
|
+
if (documentRoot !== "") {
|
|
241
|
+
scriptFilePath = `${documentRoot}/${pathname}/${scriptFileName}`;
|
|
242
|
+
} else {
|
|
243
|
+
scriptFilePath = `${pathname}/${scriptFileName}`;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
scriptFilePath = scriptFilePath.replace("//", "/");
|
|
247
|
+
if (scriptFilePath.startsWith("/") && !documentRoot.startsWith("/")) {
|
|
248
|
+
scriptFilePath = scriptFilePath.slice(1);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
logger.debug(`Loading PHP file: ${scriptFilePath}`);
|
|
252
|
+
const PHPIncludePath = `.:${CONFIG.get("documentRoot")}:${CONFIG.get("projectPath")}`;
|
|
253
|
+
|
|
254
|
+
microservice.scriptFilePath = scriptFilePath;
|
|
255
|
+
|
|
256
|
+
let commandline = `echo $(cat ${os.tmpdir()}${microservice.tempFileName}) |` + microservice.get_php_headers_list() + ` php -d include_path="${PHPIncludePath}" -q <<- 'EOF'
|
|
257
|
+
<?php
|
|
258
|
+
$_payload = file_get_contents(sys_get_temp_dir().'${microservice.tempFileName}');
|
|
259
|
+
foreach ($_SERVER as $_k => $_v) {
|
|
260
|
+
if (array_key_exists($_k,$_ENV)){
|
|
261
|
+
$_SERVER[$_k] = $_ENV[$_k];
|
|
262
|
+
}
|
|
263
|
+
if ( substr($_k, 0, strlen('HTTP_')) == 'HTTP_' ){
|
|
264
|
+
$_SERVER[$_k]=urldecode($_v);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_REQUEST);
|
|
268
|
+
@parse_str(parse_url('?'.$_payload, PHP_URL_QUERY), $_POST);
|
|
269
|
+
unlink(sys_get_temp_dir().'${microservice.tempFileName}');
|
|
270
|
+
@include('${scriptFilePath}');
|
|
271
|
+
?>
|
|
272
|
+
EOF`;
|
|
273
|
+
commandline = fixWinCmd(commandline);
|
|
274
|
+
// logger.debug(commandline);
|
|
275
|
+
|
|
276
|
+
try {
|
|
277
|
+
microservice.body = execSync(commandline).toString();
|
|
278
|
+
} catch (ex:any) {
|
|
279
|
+
microservice.body = "500 - INTERNAL ERROR";
|
|
280
|
+
logger.debug(ex.toString());
|
|
281
|
+
}
|
|
282
|
+
microservice.done();
|
|
283
|
+
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
put(formData: any) {
|
|
289
|
+
this.done();
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
delete(formData: any) {
|
|
293
|
+
this.done();
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
connect(formData: any) {
|
|
297
|
+
this.done();
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
options(formData: any) {
|
|
301
|
+
this.done();
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
trace(formData: any) {
|
|
305
|
+
this.done();
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
patch(formData: any) {
|
|
309
|
+
this.done();
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
done() {
|
|
313
|
+
const microservice = this;
|
|
314
|
+
const stream = microservice.stream;
|
|
315
|
+
try {
|
|
316
|
+
stream.respond(microservice.headers);
|
|
317
|
+
} catch (e) {
|
|
318
|
+
//
|
|
319
|
+
}
|
|
320
|
+
if (microservice.body != null) {
|
|
321
|
+
microservice.finishWithBody.call(microservice, stream);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
finishWithBody(stream: { write: (arg0: any) => void; end: () => void; }) {
|
|
326
|
+
try {
|
|
327
|
+
stream.write(this.body);
|
|
328
|
+
stream.end();
|
|
329
|
+
} catch (e:any) {
|
|
330
|
+
logger.debug("Something wrong writing the response for microservice" + e.toString());
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
const Microservice = Class("Microservice", PHPMicroservice);
|
|
338
|
+
|
|
339
|
+
Package("org.quickcorp.backend.php", [
|
|
340
|
+
|
|
341
|
+
PHPMicroservice,
|
|
342
|
+
Microservice
|
|
343
|
+
]);
|
|
344
|
+
|
|
345
|
+
exports = {
|
|
346
|
+
PHPMicroservice,
|
|
347
|
+
Microservice
|
|
348
|
+
};
|
|
@@ -29,42 +29,56 @@
|
|
|
29
29
|
/*eslint no-mixed-operators: "off"*/
|
|
30
30
|
/*eslint no-undef: "off"*/
|
|
31
31
|
"use strict";
|
|
32
|
-
Package("com.qcobjects.cli.commands.jira.client_services", [
|
|
33
|
-
class JiraCloud extends Service {
|
|
34
|
-
constructor ({
|
|
35
|
-
name= "jira_cloud",
|
|
36
|
-
external= true,
|
|
37
|
-
useHTTP2= true,
|
|
38
|
-
cached= false,
|
|
39
|
-
method= "POST",
|
|
40
|
-
headers= {
|
|
41
|
-
"accept":"application/json",
|
|
42
|
-
"content-type":"application/json"
|
|
43
|
-
},
|
|
44
|
-
basePath= "",
|
|
45
|
-
url= "",
|
|
46
|
-
withCredentials= false
|
|
47
|
-
}){
|
|
48
|
-
super(...arguments);
|
|
49
|
-
var o = this;
|
|
50
|
-
this.domain = `${o.domain}`;
|
|
51
|
-
this.basePath = `https://${this.domain}/`;
|
|
52
|
-
this.username_password = `${o.username}:${o.password}`;
|
|
53
|
-
this.headers["authorization"] = `Basic ${Buffer.from(this.username_password).toString("base64")}`;
|
|
54
|
-
this.url = this.basePath + o.apiMethod;
|
|
55
|
-
this.data = o.data;
|
|
56
|
-
|
|
57
|
-
}
|
|
58
32
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
33
|
+
const { Package, Service, logger } = require("qcobjects");
|
|
34
|
+
|
|
35
|
+
export class JiraCloud extends Service {
|
|
36
|
+
constructor({
|
|
37
|
+
name = "jira_cloud",
|
|
38
|
+
external = true,
|
|
39
|
+
useHTTP2 = true,
|
|
40
|
+
cached = false,
|
|
41
|
+
method = "POST",
|
|
42
|
+
headers = {
|
|
43
|
+
"accept": "application/json",
|
|
44
|
+
"content-type": "application/json"
|
|
45
|
+
},
|
|
46
|
+
basePath = "",
|
|
47
|
+
url = "",
|
|
48
|
+
withCredentials = false
|
|
49
|
+
}) {
|
|
50
|
+
super({
|
|
51
|
+
name,
|
|
52
|
+
external,
|
|
53
|
+
useHTTP2,
|
|
54
|
+
cached,
|
|
55
|
+
method,
|
|
56
|
+
headers,
|
|
57
|
+
basePath,
|
|
58
|
+
url,
|
|
59
|
+
withCredentials
|
|
60
|
+
});
|
|
61
|
+
var o = this;
|
|
62
|
+
this.domain = `${o.domain}`;
|
|
63
|
+
this.basePath = `https://${this.domain}/`;
|
|
64
|
+
this.username_password = `${o.username}:${o.password}`;
|
|
65
|
+
this.headers["authorization"] = `Basic ${Buffer.from(this.username_password).toString("base64")}`;
|
|
66
|
+
this.url = this.basePath + o.apiMethod;
|
|
67
|
+
this.data = o.data;
|
|
63
68
|
|
|
64
|
-
|
|
65
|
-
logger.debug(e);
|
|
66
|
-
}
|
|
69
|
+
}
|
|
67
70
|
|
|
71
|
+
done(service: any, standardResponse: any) {
|
|
72
|
+
// service loaded
|
|
73
|
+
logger.debug(standardResponse);
|
|
68
74
|
}
|
|
69
75
|
|
|
76
|
+
fail(e: any) {
|
|
77
|
+
logger.debug(e);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
Package("com.qcobjects.cli.commands.jira.client_services", [
|
|
83
|
+
JiraCloud
|
|
70
84
|
]);
|