miqro 1.6.6 → 1.6.10
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/README.md +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/cmds/new.js +5 -5
- package/dist/cmds/new.js.map +1 -1
- package/dist/cmds/test.d.ts +1 -0
- package/dist/cmds/test.js +36 -0
- package/dist/cmds/test.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/test/common/app.d.ts +5 -0
- package/dist/test/common/app.js +51 -0
- package/dist/test/common/app.js.map +1 -0
- package/dist/test/common/common.d.ts +6 -0
- package/dist/test/common/common.js +15 -0
- package/dist/test/common/common.js.map +1 -0
- package/dist/test/common/index.d.ts +3 -0
- package/dist/test/common/index.js +16 -0
- package/dist/test/common/index.js.map +1 -0
- package/dist/test/common/runner.d.ts +34 -0
- package/dist/test/common/runner.js +88 -0
- package/dist/test/common/runner.js.map +1 -0
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.js +14 -0
- package/dist/test/index.js.map +1 -0
- package/dist/utils/doc/index.d.ts +1 -0
- package/dist/utils/doc/index.js +5 -1
- package/dist/utils/doc/index.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +3 -0
- package/src/cmds/new.ts +2 -2
- package/src/cmds/test.ts +45 -0
- package/src/index.ts +1 -2
- package/src/test/common/app.ts +47 -0
- package/src/test/common/common.ts +17 -0
- package/src/test/common/index.ts +3 -0
- package/src/test/common/runner.ts +121 -0
- package/src/test/index.ts +1 -0
- package/src/utils/doc/index.ts +6 -1
package/README.md
CHANGED
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ const core_1 = require("@miqro/core");
|
|
|
6
6
|
const start_1 = require("./cmds/start");
|
|
7
7
|
const new_1 = require("./cmds/new");
|
|
8
8
|
const new_2 = require("./cmds/new");
|
|
9
|
+
const test_1 = require("./cmds/test");
|
|
9
10
|
const doc_json_1 = require("./cmds/doc-json");
|
|
10
11
|
const doc_md_1 = require("./cmds/doc-md");
|
|
11
12
|
const config_init_1 = require("./cmds/config-init");
|
|
@@ -38,6 +39,7 @@ core_1.CLIUtil.cliFlow({
|
|
|
38
39
|
["start"]: { section: "cluster start", cb: start_1.main, description: "\t\t\t\tstart a nodejs script in cluster mode and restart if crash." },
|
|
39
40
|
["doc"]: { section: "api documentation", cb: doc_json_1.main, description: "\t\t\t\toutputs to stdout an api folder auto doc as a json" },
|
|
40
41
|
["doc:md"]: { cb: doc_md_1.main, description: "\t\t\t\toutputs to a file an api folder auto doc as a markdown" },
|
|
42
|
+
["test"]: { cb: test_1.main, description: "\t\t\t\trun test files." },
|
|
41
43
|
["db:console"]: { section: "sequelize helpers", cb: db_console_1.main, description: "\t\t\truns a readline interface that send the input as a query" },
|
|
42
44
|
["db:dump:data"]: { cb: db_dump_data_1.main, description: "\t\t\tdump the data of the database (only defined models)" },
|
|
43
45
|
["db:push:data"]: { cb: db_push_data_1.main, description: "\t\t\tpush a dump to the database" },
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,aAAa;AACb,sCAAsC;AACtC,wCAA6C;AAC7C,oCAA6C;AAC7C,oCAA6C;AAC7C,8CAAqD;AACrD,0CAAiD;AACjD,oDAAwD;AACxD,0CAA+C;AAC/C,oDAAwD;AACxD,kDAAsD;AACtD,sEAA+D;AAC/D,8DAA0D;AAC1D,iBAAiB;AACjB,4CAAgD;AAChD,gEAAkE;AAClE,0EAA2E;AAC3E,kDAAuD;AACvD,0DAA4D;AAC5D,sDAAuD;AACvD,sDAAuD;AAEvD,uCAAuC;AACvC,cAAO,CAAC,OAAO,CAAC;IAEd,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC3F,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAEvF,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,uBAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE;IACvG,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,2BAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAEzE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,aAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACtH,CAAC,aAAa,CAAC,EAAE;QACf,EAAE,EAAE,kBAAU;QACd,WAAW,EAAE,qDAAqD;KACnE;IACD,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,iBAAS,EAAE,WAAW,EAAE,kDAAkD,EAAE;IAClG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAU,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAElF,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,qEAAqE,EAAE;IAEtI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,eAAU,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACpI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,aAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAE3G,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,iBAAU,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAC/I,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,mBAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;IAC5G,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,mBAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACpF,CAAC,mBAAmB,CAAC,EAAE;QACrB,EAAE,EAAE,wBAAc;QAClB,WAAW,EAAE,yDAAyD;KACvE;IACD,CAAC,qCAAqC,CAAC,EAAE;QACvC,EAAE,EAAE,6BAAkB;QACtB,WAAW,EAAE,8HAA8H;KAC5I;IACD,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,cAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACjF,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,qBAAW,EAAE,WAAW,EAAE,gCAAgC,EAAE;CACxF,EAAE,4BAA4B,EAAE,OAAO,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,aAAa;AACb,sCAAsC;AACtC,wCAA6C;AAC7C,oCAA6C;AAC7C,oCAA6C;AAC7C,sCAA+C;AAC/C,8CAAqD;AACrD,0CAAiD;AACjD,oDAAwD;AACxD,0CAA+C;AAC/C,oDAAwD;AACxD,kDAAsD;AACtD,sEAA+D;AAC/D,8DAA0D;AAC1D,iBAAiB;AACjB,4CAAgD;AAChD,gEAAkE;AAClE,0EAA2E;AAC3E,kDAAuD;AACvD,0DAA4D;AAC5D,sDAAuD;AACvD,sDAAuD;AAEvD,uCAAuC;AACvC,cAAO,CAAC,OAAO,CAAC;IAEd,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC3F,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAEvF,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,uBAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE;IACvG,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,2BAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAEzE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,aAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACtH,CAAC,aAAa,CAAC,EAAE;QACf,EAAE,EAAE,kBAAU;QACd,WAAW,EAAE,qDAAqD;KACnE;IACD,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,iBAAS,EAAE,WAAW,EAAE,kDAAkD,EAAE;IAClG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAU,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAElF,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,YAAK,EAAE,WAAW,EAAE,qEAAqE,EAAE;IAEtI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,eAAU,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACpI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,aAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAE3G,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,WAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAElE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,iBAAU,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAC/I,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,mBAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;IAC5G,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,mBAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACpF,CAAC,mBAAmB,CAAC,EAAE;QACrB,EAAE,EAAE,wBAAc;QAClB,WAAW,EAAE,yDAAyD;KACvE;IACD,CAAC,qCAAqC,CAAC,EAAE;QACvC,EAAE,EAAE,6BAAkB;QACtB,WAAW,EAAE,8HAA8H;KAC5I;IACD,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,cAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACjF,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,qBAAW,EAAE,WAAW,EAAE,gCAAgC,EAAE;CACxF,EAAE,4BAA4B,EAAE,OAAO,CAAC,CAAC"}
|
package/dist/cmds/new.js
CHANGED
|
@@ -86,12 +86,12 @@ const mainJS = (typescript = false) => {
|
|
|
86
86
|
"src"
|
|
87
87
|
]
|
|
88
88
|
}`);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
(0, utils_1.execSync)(`npm install @types/node --save-dev`, {
|
|
93
|
-
cwd: appFolder
|
|
89
|
+
/*execSync(`npm install typescript --save-dev`, {
|
|
90
|
+
cwd: appFolder
|
|
94
91
|
});
|
|
92
|
+
execSync(`npm install @types/node --save-dev`, {
|
|
93
|
+
cwd: appFolder
|
|
94
|
+
});*/
|
|
95
95
|
}
|
|
96
96
|
(0, utils_1.execSync)(`npx miqro new:main src_main`, {
|
|
97
97
|
cwd: appFolder
|
package/dist/cmds/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/cmds/new.ts"],"names":[],"mappings":";;;AAAA,2BAA0D;AAC1D,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;;EAef;IACA,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;EAcf;CACD,CAAA;AAEM,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,EAAQ,EAAE;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;KACjD;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;IAErC,IAAA,cAAS,EAAC,SAAS,EAAE;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzG,IAAA,gBAAQ,EACN,8BAA8B,EAC9B;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAA,gBAAQ,EACN,gCAAgC,EAChC;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAI,UAAU,EAAE;QACd,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrD,CAAC,CAAC;QACA
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/cmds/new.ts"],"names":[],"mappings":";;;AAAA,2BAA0D;AAC1D,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;;EAef;IACA,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;EAcf;CACD,CAAA;AAEM,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,EAAQ,EAAE;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;KACjD;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;IAErC,IAAA,cAAS,EAAC,SAAS,EAAE;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzG,IAAA,gBAAQ,EACN,8BAA8B,EAC9B;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAA,gBAAQ,EACN,gCAAgC,EAChC;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAI,UAAU,EAAE;QACd,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrD,CAAC,CAAC;QACA;;;;;aAKK;KACN;IAED,IAAA,gBAAQ,EACN,6BAA6B,EAC7B;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAA,gBAAQ,EACN,oCAAoC,EACpC;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;AACJ,CAAC,CAAA;AAnFY,QAAA,MAAM,UAmFlB;AAEM,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;AAAlC,QAAA,MAAM,UAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const main: () => Promise<void>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const core_1 = require("@miqro/core");
|
|
6
|
+
const test_1 = require("../test");
|
|
7
|
+
const main = async () => {
|
|
8
|
+
if (process.argv.length < 4) {
|
|
9
|
+
throw new Error(`bad arguments`);
|
|
10
|
+
}
|
|
11
|
+
const startMS = Date.now();
|
|
12
|
+
const args = core_1.CLIUtil.extractFlags(process.argv.slice(3));
|
|
13
|
+
const modules = args.cmds.map(m => (0, path_1.resolve)(process.cwd(), m));
|
|
14
|
+
const name = args.flags.n ? args.flags.n : "all";
|
|
15
|
+
const logger = console;
|
|
16
|
+
const ret = await (0, test_1.runTestModules)(modules, typeof name === "string" && name.toLowerCase() === "all" ? undefined : name, console);
|
|
17
|
+
const took = Date.now() - startMS;
|
|
18
|
+
ret.failed.forEach(e => {
|
|
19
|
+
logger.log("");
|
|
20
|
+
logger.log("");
|
|
21
|
+
logger.error("\x1b[31m%s\x1b[0m", e.fullName);
|
|
22
|
+
logger.error(e.error);
|
|
23
|
+
logger.log("");
|
|
24
|
+
logger.log("");
|
|
25
|
+
});
|
|
26
|
+
logger.log("");
|
|
27
|
+
logger.log("");
|
|
28
|
+
logger.log(ret.passed + " tests pased");
|
|
29
|
+
logger.log(ret.failed.length + " failed");
|
|
30
|
+
logger.log("took " + took + "ms");
|
|
31
|
+
logger.log("");
|
|
32
|
+
logger.log("");
|
|
33
|
+
process.exit(ret.failed.length > 0 ? 1 : 0);
|
|
34
|
+
};
|
|
35
|
+
exports.main = main;
|
|
36
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/cmds/test.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,sCAAsC;AACtC,kCAAyC;AAElC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IAE1C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;KACpC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,cAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjD,MAAM,MAAM,GAAG,OAAO,CAAC;IAEvB,MAAM,GAAG,GAAG,MAAM,IAAA,qBAAc,EAAC,OAAO,EAAE,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEhI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAElC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,CAAC,CAAA;AAvCY,QAAA,IAAI,QAuChB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from "
|
|
2
|
-
export * from "@miqro/runner";
|
|
1
|
+
export * from "./test";
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("
|
|
14
|
-
__exportStar(require("@miqro/runner"), exports);
|
|
13
|
+
__exportStar(require("./test"), exports);
|
|
15
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RequestOptions, RequestResponse } from "@miqro/core";
|
|
2
|
+
import { RequestListener } from "http";
|
|
3
|
+
export declare const TestHelper: (app: {
|
|
4
|
+
listener: RequestListener;
|
|
5
|
+
}, options: RequestOptions, cb?: ((response: RequestResponse) => void) | undefined) => Promise<RequestResponse>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestHelper = void 0;
|
|
4
|
+
const core_1 = require("@miqro/core");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const http_1 = require("http");
|
|
7
|
+
const TestHelper = async (app, options, cb) => {
|
|
8
|
+
const unixSocket = `/tmp/socket.test.helper${Date.now()}`;
|
|
9
|
+
if ((0, fs_1.existsSync)(unixSocket)) {
|
|
10
|
+
(0, fs_1.unlinkSync)(unixSocket);
|
|
11
|
+
}
|
|
12
|
+
const server = (0, http_1.createServer)(app.listener);
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
server.listen(unixSocket, () => {
|
|
15
|
+
(0, core_1.request)({
|
|
16
|
+
disableThrow: true,
|
|
17
|
+
...options,
|
|
18
|
+
socketPath: unixSocket
|
|
19
|
+
}).then((response) => {
|
|
20
|
+
server.close(() => {
|
|
21
|
+
if (cb) {
|
|
22
|
+
try {
|
|
23
|
+
cb(response);
|
|
24
|
+
}
|
|
25
|
+
catch (ee) {
|
|
26
|
+
reject(ee);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
resolve(response);
|
|
30
|
+
});
|
|
31
|
+
}).catch((e) => {
|
|
32
|
+
server.close(() => {
|
|
33
|
+
if (cb) {
|
|
34
|
+
try {
|
|
35
|
+
cb(e);
|
|
36
|
+
}
|
|
37
|
+
catch (ee) {
|
|
38
|
+
reject(ee);
|
|
39
|
+
}
|
|
40
|
+
resolve(undefined);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
reject(e);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
exports.TestHelper = TestHelper;
|
|
51
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/test/common/app.ts"],"names":[],"mappings":";;;AAAA,sCAAuE;AAEvE,2BAA4C;AAC5C,+BAAqD;AAE9C,MAAM,UAAU,GAAG,KAAK,EAAE,GAEhC,EAAE,OAAuB,EAAE,EAAwC,EAA4B,EAAE;IAChG,MAAM,UAAU,GAAG,0BAA0B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1D,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE;QAC1B,IAAA,eAAU,EAAC,UAAU,CAAC,CAAC;KACxB;IACD,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE;YAC7B,IAAA,cAAO,EAAC;gBACN,YAAY,EAAE,IAAI;gBAClB,GAAG,OAAO;gBACV,UAAU,EAAE,UAAU;aACvB,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,EAAE;wBACN,IAAI;4BACF,EAAE,CAAC,QAAQ,CAAC,CAAC;yBACd;wBAAC,OAAO,EAAE,EAAE;4BACX,MAAM,CAAC,EAAE,CAAC,CAAC;yBACZ;qBACF;oBACD,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;gBAClB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,EAAE;wBACN,IAAI;4BACF,EAAE,CAAC,CAAQ,CAAC,CAAC;yBACd;wBAAC,OAAO,EAAE,EAAE;4BACX,MAAM,CAAC,EAAE,CAAC,CAAC;yBACZ;wBACD,OAAO,CAAC,SAAgB,CAAC,CAAC;qBAC3B;yBAAM;wBACL,MAAM,CAAC,CAAC,CAAC,CAAC;qBACX;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAA;AAzCY,QAAA,UAAU,cAyCtB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fake = void 0;
|
|
4
|
+
const fake = (cb) => {
|
|
5
|
+
const ret = (...args) => {
|
|
6
|
+
ret.callCount++;
|
|
7
|
+
ret.callArgs.push(args);
|
|
8
|
+
return cb(...args);
|
|
9
|
+
};
|
|
10
|
+
ret.callCount = 0;
|
|
11
|
+
ret.callArgs = [];
|
|
12
|
+
return ret;
|
|
13
|
+
};
|
|
14
|
+
exports.fake = fake;
|
|
15
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/test/common/common.ts"],"names":[],"mappings":";;;AAOO,MAAM,IAAI,GAAG,CAAC,EAAY,EAAgB,EAAE;IACjD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QAC7B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,QAAQ,GAAG,EAAS,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC,CAAA;AATY,QAAA,IAAI,QAShB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./common"), exports);
|
|
14
|
+
__exportStar(require("./app"), exports);
|
|
15
|
+
__exportStar(require("./runner"), exports);
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,wCAAsB;AACtB,2CAAyB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Console } from "console";
|
|
3
|
+
export declare type TestFunction = () => void | Promise<void>;
|
|
4
|
+
export declare const getTestCount: () => number;
|
|
5
|
+
export declare const it: (title: string, impl: TestFunction, options?: {
|
|
6
|
+
category?: string | undefined;
|
|
7
|
+
timeout?: number | undefined;
|
|
8
|
+
before?: TestFunction | undefined;
|
|
9
|
+
after?: TestFunction | undefined;
|
|
10
|
+
} | undefined, logger?: Console | {
|
|
11
|
+
log: (...args: any[]) => void;
|
|
12
|
+
}) => void;
|
|
13
|
+
export declare const runTests: (title?: string | string[] | undefined, logger?: Console | {
|
|
14
|
+
error: (...args: any[]) => void;
|
|
15
|
+
}) => Promise<{
|
|
16
|
+
passed: number;
|
|
17
|
+
total: number;
|
|
18
|
+
ignored: number;
|
|
19
|
+
failed: {
|
|
20
|
+
error: any;
|
|
21
|
+
fullName: string;
|
|
22
|
+
}[];
|
|
23
|
+
}>;
|
|
24
|
+
export declare const runTestModules: (modules: string[], title?: string | string[] | undefined, logger?: Console | {
|
|
25
|
+
error: (...args: any[]) => void;
|
|
26
|
+
}) => Promise<{
|
|
27
|
+
passed: number;
|
|
28
|
+
total: number;
|
|
29
|
+
ignored: number;
|
|
30
|
+
failed: {
|
|
31
|
+
error: any;
|
|
32
|
+
fullName: string;
|
|
33
|
+
}[];
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runTestModules = exports.runTests = exports.it = exports.getTestCount = void 0;
|
|
4
|
+
const console_1 = require("console");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const DEFAULT_TIMEOUT = 2000;
|
|
7
|
+
const tests = [];
|
|
8
|
+
const getTestCount = () => tests.length;
|
|
9
|
+
exports.getTestCount = getTestCount;
|
|
10
|
+
const it = (title, impl, options, logger = new console_1.Console(process.stdout)) => {
|
|
11
|
+
const category = options && options.category ? options.category : undefined;
|
|
12
|
+
const fullName = `${category ? `${category} [` : ""}${title}${category ? "]" : ""}`;
|
|
13
|
+
tests.push({
|
|
14
|
+
run: () => new Promise((resolve, reject) => {
|
|
15
|
+
const timeoutMS = options && options.timeout ? options.timeout : DEFAULT_TIMEOUT;
|
|
16
|
+
const timeout = setTimeout(() => {
|
|
17
|
+
reject(new Error((0, util_1.format)("%s failed\x1b[31m\n%s timeout %o\x1b", fullName, fullName, timeoutMS)));
|
|
18
|
+
}, timeoutMS);
|
|
19
|
+
try {
|
|
20
|
+
(async () => {
|
|
21
|
+
if (options && options.before) {
|
|
22
|
+
await options.before();
|
|
23
|
+
}
|
|
24
|
+
const startMS = Date.now();
|
|
25
|
+
await impl();
|
|
26
|
+
const took = Date.now() - startMS;
|
|
27
|
+
if (options && options.after) {
|
|
28
|
+
await options.after();
|
|
29
|
+
}
|
|
30
|
+
return took;
|
|
31
|
+
})().then((took) => {
|
|
32
|
+
clearTimeout(timeout);
|
|
33
|
+
logger.log("\x1b[32mpassed %s (took %sms)\x1b[0m", fullName, took);
|
|
34
|
+
resolve();
|
|
35
|
+
}).catch(e => {
|
|
36
|
+
clearTimeout(timeout);
|
|
37
|
+
reject(new Error((0, util_1.format)("%s failed\n%s finished with errors %o", fullName, fullName, e)));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
clearTimeout(timeout);
|
|
42
|
+
reject(new Error((0, util_1.format)("%s failed\n%s finished with errors %o", fullName, fullName, e)));
|
|
43
|
+
}
|
|
44
|
+
}), title,
|
|
45
|
+
category,
|
|
46
|
+
fullName
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
exports.it = it;
|
|
50
|
+
const runTests = async (title, logger = new console_1.Console(process.stdout)) => {
|
|
51
|
+
const titles = title ? title instanceof Array ? title : [title] : [undefined];
|
|
52
|
+
const ret = {
|
|
53
|
+
total: tests.length,
|
|
54
|
+
ignored: 0,
|
|
55
|
+
passed: 0,
|
|
56
|
+
failed: []
|
|
57
|
+
};
|
|
58
|
+
for (const test of tests) {
|
|
59
|
+
for (const title of titles) {
|
|
60
|
+
if (title && test.fullName.indexOf(title) !== -1 || !title) {
|
|
61
|
+
try {
|
|
62
|
+
await test.run();
|
|
63
|
+
ret.passed++;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
logger.error("\x1b[31m%s\x1b[0m", e);
|
|
67
|
+
ret.failed.push({
|
|
68
|
+
error: e,
|
|
69
|
+
fullName: test.fullName
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
ret.ignored++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return ret;
|
|
79
|
+
};
|
|
80
|
+
exports.runTests = runTests;
|
|
81
|
+
const runTestModules = async (modules, title, logger = new console_1.Console(process.stdout)) => {
|
|
82
|
+
for (const path of modules) {
|
|
83
|
+
require(path);
|
|
84
|
+
}
|
|
85
|
+
return await (0, exports.runTests)(title, logger);
|
|
86
|
+
};
|
|
87
|
+
exports.runTestModules = runTestModules;
|
|
88
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/test/common/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./common";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./common"), exports);
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB"}
|
|
@@ -7,6 +7,7 @@ export declare const getDOCJSON: ({ dirname, subPath }: {
|
|
|
7
7
|
method?: Method | Method[];
|
|
8
8
|
description?: string;
|
|
9
9
|
policy?: GroupPolicy;
|
|
10
|
+
headers?: ParseOptions | ParseOptions[];
|
|
10
11
|
session?: false | true | SessionHandlerOptions;
|
|
11
12
|
params?: false | ParseOptions | ParseOptions[];
|
|
12
13
|
query?: false | ParseOptions | ParseOptions[];
|
package/dist/utils/doc/index.js
CHANGED
|
@@ -7,10 +7,14 @@ const path_1 = require("path");
|
|
|
7
7
|
const getDOCJSON = ({ dirname, subPath }, logger) => {
|
|
8
8
|
const apiTraverse = (0, api_router_utils_1.traverseAPIRouteDir)((0, path_1.basename)(dirname).toUpperCase(), (0, path_1.resolve)(core_1.ConfigPathResolver.getBaseDirname(), dirname), subPath, undefined, logger);
|
|
9
9
|
const docJSON = Object.keys(apiTraverse).map(featureName => {
|
|
10
|
-
const {
|
|
10
|
+
const { path, method, options } = apiTraverse[featureName];
|
|
11
|
+
const { session, policy, description } = options ? options : { session: undefined, policy: undefined, description: undefined };
|
|
12
|
+
const { params, query, body, headers } = options && options.request ? options.request : { params: undefined, query: undefined, body: undefined, headers: undefined };
|
|
13
|
+
const result = options && options.response !== true ? options.response : undefined;
|
|
11
14
|
return {
|
|
12
15
|
path,
|
|
13
16
|
method,
|
|
17
|
+
headers,
|
|
14
18
|
session: session ? typeof session === "function" ? true : session : false,
|
|
15
19
|
policy,
|
|
16
20
|
params,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/doc/index.ts"],"names":[],"mappings":";;;AAAA,sCAAmH;AACnH,gFAAgF;AAChF,+BAAyC;AAElC,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAyC,EAAE,MAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/doc/index.ts"],"names":[],"mappings":";;;AAAA,sCAAmH;AACnH,gFAAgF;AAChF,+BAAyC;AAElC,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAyC,EAAE,MAAc,EAYlG,EAAE;IACJ,MAAM,WAAW,GAAG,IAAA,sCAAmB,EAAC,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,IAAA,cAAO,EAAC,yBAAkB,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5J,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC/H,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACrK,MAAM,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,OAAO;YACL,IAAI;YACJ,MAAM;YACN,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACzE,MAAM;YACN,MAAM;YACN,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;YAChC,WAAW;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA;AA/BY,QAAA,UAAU,cA+BtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "miqro",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"author": "claukers",
|
|
19
19
|
"license": "ISC",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@miqro/core": "^1.
|
|
21
|
+
"@miqro/core": "^1.4.1",
|
|
22
22
|
"@miqro/runner": "^1.1.6"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
package/src/cli.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { CLIUtil } from "@miqro/core";
|
|
|
4
4
|
import { main as start } from "./cmds/start";
|
|
5
5
|
import { mainJS as newJS } from "./cmds/new";
|
|
6
6
|
import { mainTS as newTS } from "./cmds/new";
|
|
7
|
+
import { main as testMain } from "./cmds/test";
|
|
7
8
|
import { main as apiDocJSON } from "./cmds/doc-json";
|
|
8
9
|
import { main as apiDocMD } from "./cmds/doc-md";
|
|
9
10
|
import { main as configInit } from "./cmds/config-init";
|
|
@@ -43,6 +44,8 @@ CLIUtil.cliFlow({
|
|
|
43
44
|
["doc"]: { section: "api documentation", cb: apiDocJSON, description: "\t\t\t\toutputs to stdout an api folder auto doc as a json" },
|
|
44
45
|
["doc:md"]: { cb: apiDocMD, description: "\t\t\t\toutputs to a file an api folder auto doc as a markdown" },
|
|
45
46
|
|
|
47
|
+
["test"]: { cb: testMain, description: "\t\t\t\trun test files." },
|
|
48
|
+
|
|
46
49
|
["db:console"]: { section: "sequelize helpers", cb: consoleCMD, description: "\t\t\truns a readline interface that send the input as a query" },
|
|
47
50
|
["db:dump:data"]: { cb: dumpData, description: "\t\t\tdump the data of the database (only defined models)" },
|
|
48
51
|
["db:push:data"]: { cb: pushData, description: "\t\t\tpush a dump to the database" },
|
package/src/cmds/new.ts
CHANGED
|
@@ -102,12 +102,12 @@ export const mainJS = (typescript = false): void => {
|
|
|
102
102
|
"src"
|
|
103
103
|
]
|
|
104
104
|
}`);
|
|
105
|
-
execSync(`npm install typescript --save-dev`, {
|
|
105
|
+
/*execSync(`npm install typescript --save-dev`, {
|
|
106
106
|
cwd: appFolder
|
|
107
107
|
});
|
|
108
108
|
execSync(`npm install @types/node --save-dev`, {
|
|
109
109
|
cwd: appFolder
|
|
110
|
-
})
|
|
110
|
+
});*/
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
execSync(
|
package/src/cmds/test.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
2
|
+
import { CLIUtil } from "@miqro/core";
|
|
3
|
+
import { runTestModules } from "../test";
|
|
4
|
+
|
|
5
|
+
export const main = async (): Promise<void> => {
|
|
6
|
+
|
|
7
|
+
if (process.argv.length < 4) {
|
|
8
|
+
throw new Error(`bad arguments`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const startMS = Date.now();
|
|
12
|
+
|
|
13
|
+
const args = CLIUtil.extractFlags(process.argv.slice(3));
|
|
14
|
+
|
|
15
|
+
const modules = args.cmds.map(m => resolve(process.cwd(), m));
|
|
16
|
+
|
|
17
|
+
const name = args.flags.n ? args.flags.n : "all";
|
|
18
|
+
|
|
19
|
+
const logger = console;
|
|
20
|
+
|
|
21
|
+
const ret = await runTestModules(modules, typeof name === "string" && name.toLowerCase() === "all" ? undefined : name, console);
|
|
22
|
+
|
|
23
|
+
const took = Date.now() - startMS;
|
|
24
|
+
|
|
25
|
+
ret.failed.forEach(e => {
|
|
26
|
+
logger.log("");
|
|
27
|
+
logger.log("");
|
|
28
|
+
logger.error("\x1b[31m%s\x1b[0m", e.fullName);
|
|
29
|
+
logger.error(e.error);
|
|
30
|
+
logger.log("");
|
|
31
|
+
logger.log("");
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
logger.log("");
|
|
35
|
+
logger.log("");
|
|
36
|
+
logger.log(ret.passed + " tests pased");
|
|
37
|
+
logger.log(ret.failed.length + " failed");
|
|
38
|
+
logger.log("took " + took + "ms");
|
|
39
|
+
logger.log("");
|
|
40
|
+
logger.log("");
|
|
41
|
+
|
|
42
|
+
process.exit(ret.failed.length > 0 ? 1 : 0);
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
package/src/index.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from "
|
|
2
|
-
export * from "@miqro/runner";
|
|
1
|
+
export * from "./test";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { request, RequestOptions, RequestResponse } from "@miqro/core";
|
|
2
|
+
|
|
3
|
+
import { existsSync, unlinkSync } from "fs";
|
|
4
|
+
import { createServer, RequestListener } from "http";
|
|
5
|
+
|
|
6
|
+
export const TestHelper = async (app: {
|
|
7
|
+
listener: RequestListener;
|
|
8
|
+
}, options: RequestOptions, cb?: (response: RequestResponse) => void): Promise<RequestResponse> => {
|
|
9
|
+
const unixSocket = `/tmp/socket.test.helper${Date.now()}`;
|
|
10
|
+
if (existsSync(unixSocket)) {
|
|
11
|
+
unlinkSync(unixSocket);
|
|
12
|
+
}
|
|
13
|
+
const server = createServer(app.listener);
|
|
14
|
+
return new Promise<RequestResponse>((resolve, reject) => {
|
|
15
|
+
server.listen(unixSocket, () => {
|
|
16
|
+
request({
|
|
17
|
+
disableThrow: true,
|
|
18
|
+
...options,
|
|
19
|
+
socketPath: unixSocket
|
|
20
|
+
}).then((response) => {
|
|
21
|
+
server.close(() => {
|
|
22
|
+
if (cb) {
|
|
23
|
+
try {
|
|
24
|
+
cb(response);
|
|
25
|
+
} catch (ee) {
|
|
26
|
+
reject(ee);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
resolve(response);
|
|
30
|
+
});
|
|
31
|
+
}).catch((e: any) => {
|
|
32
|
+
server.close(() => {
|
|
33
|
+
if (cb) {
|
|
34
|
+
try {
|
|
35
|
+
cb(e as any);
|
|
36
|
+
} catch (ee) {
|
|
37
|
+
reject(ee);
|
|
38
|
+
}
|
|
39
|
+
resolve(undefined as any);
|
|
40
|
+
} else {
|
|
41
|
+
reject(e);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Callback<T = any> = (...args: any[]) => T;
|
|
2
|
+
|
|
3
|
+
export interface FakeCallback<T = any> extends Callback<T> {
|
|
4
|
+
callCount: number;
|
|
5
|
+
callArgs: T[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const fake = (cb: Callback): FakeCallback => {
|
|
9
|
+
const ret = (...args: any[]) => {
|
|
10
|
+
ret.callCount++;
|
|
11
|
+
ret.callArgs.push(args);
|
|
12
|
+
return cb(...args);
|
|
13
|
+
};
|
|
14
|
+
ret.callCount = 0;
|
|
15
|
+
ret.callArgs = [] as any;
|
|
16
|
+
return ret;
|
|
17
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Console } from "console";
|
|
2
|
+
import { format } from "util";
|
|
3
|
+
|
|
4
|
+
export type TestFunction = () => void | Promise<void>;
|
|
5
|
+
const DEFAULT_TIMEOUT = 2000;
|
|
6
|
+
|
|
7
|
+
interface Test { run: TestFunction; title: string; category?: string; fullName: string; }
|
|
8
|
+
|
|
9
|
+
const tests: Test[] = [];
|
|
10
|
+
|
|
11
|
+
export const getTestCount = () => tests.length;
|
|
12
|
+
|
|
13
|
+
export const it = (title: string, impl: TestFunction, options?: {
|
|
14
|
+
category?: string;
|
|
15
|
+
timeout?: number;
|
|
16
|
+
before?: TestFunction;
|
|
17
|
+
after?: TestFunction;
|
|
18
|
+
}, logger: {
|
|
19
|
+
log: (...args: any[]) => void
|
|
20
|
+
} | Console = new Console(process.stdout)): void => {
|
|
21
|
+
const category = options && options.category ? options.category : undefined;
|
|
22
|
+
const fullName = `${category ? `${category} [` : ""}${title}${category ? "]" : ""}`;
|
|
23
|
+
tests.push({
|
|
24
|
+
run: () => new Promise((resolve, reject) => {
|
|
25
|
+
const timeoutMS = options && options.timeout ? options.timeout : DEFAULT_TIMEOUT;
|
|
26
|
+
const timeout = setTimeout(() => {
|
|
27
|
+
reject(new Error(format("%s failed\x1b[31m\n%s timeout %o\x1b", fullName, fullName, timeoutMS)));
|
|
28
|
+
}, timeoutMS);
|
|
29
|
+
try {
|
|
30
|
+
(async () => {
|
|
31
|
+
if (options && options.before) {
|
|
32
|
+
await options.before();
|
|
33
|
+
}
|
|
34
|
+
const startMS = Date.now();
|
|
35
|
+
await impl();
|
|
36
|
+
const took = Date.now() - startMS;
|
|
37
|
+
if (options && options.after) {
|
|
38
|
+
await options.after();
|
|
39
|
+
}
|
|
40
|
+
return took;
|
|
41
|
+
})().then((took) => {
|
|
42
|
+
clearTimeout(timeout);
|
|
43
|
+
logger.log("\x1b[32mpassed %s (took %sms)\x1b[0m", fullName, took);
|
|
44
|
+
resolve();
|
|
45
|
+
}).catch(e => {
|
|
46
|
+
clearTimeout(timeout);
|
|
47
|
+
reject(new Error(format("%s failed\n%s finished with errors %o", fullName, fullName, e)));
|
|
48
|
+
});
|
|
49
|
+
} catch (e) {
|
|
50
|
+
clearTimeout(timeout);
|
|
51
|
+
reject(new Error(format("%s failed\n%s finished with errors %o", fullName, fullName, e)));
|
|
52
|
+
}
|
|
53
|
+
}), title,
|
|
54
|
+
category,
|
|
55
|
+
fullName
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const runTests = async (title?: string | string[], logger: {
|
|
60
|
+
error: (...args: any[]) => void;
|
|
61
|
+
} | Console = new Console(process.stdout)): Promise<{
|
|
62
|
+
passed: number;
|
|
63
|
+
total: number;
|
|
64
|
+
ignored: number;
|
|
65
|
+
failed: {
|
|
66
|
+
error: any;
|
|
67
|
+
fullName: string;
|
|
68
|
+
}[];
|
|
69
|
+
}> => {
|
|
70
|
+
const titles = title ? title instanceof Array ? title : [title] : [undefined];
|
|
71
|
+
const ret: {
|
|
72
|
+
passed: number;
|
|
73
|
+
total: number;
|
|
74
|
+
ignored: number;
|
|
75
|
+
failed: {
|
|
76
|
+
error: any;
|
|
77
|
+
fullName: string;
|
|
78
|
+
}[];
|
|
79
|
+
} = {
|
|
80
|
+
total: tests.length,
|
|
81
|
+
ignored: 0,
|
|
82
|
+
passed: 0,
|
|
83
|
+
failed: []
|
|
84
|
+
};
|
|
85
|
+
for (const test of tests) {
|
|
86
|
+
for (const title of titles) {
|
|
87
|
+
if (title && test.fullName.indexOf(title) !== -1 || !title) {
|
|
88
|
+
try {
|
|
89
|
+
await test.run();
|
|
90
|
+
ret.passed++;
|
|
91
|
+
} catch (e) {
|
|
92
|
+
logger.error("\x1b[31m%s\x1b[0m", e);
|
|
93
|
+
ret.failed.push({
|
|
94
|
+
error: e,
|
|
95
|
+
fullName: test.fullName
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
ret.ignored++;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return ret;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const runTestModules = async (modules: string[], title?: string | string[], logger: {
|
|
107
|
+
error: (...args: any[]) => void;
|
|
108
|
+
} | Console = new Console(process.stdout)): Promise<{
|
|
109
|
+
passed: number;
|
|
110
|
+
total: number;
|
|
111
|
+
ignored: number;
|
|
112
|
+
failed: {
|
|
113
|
+
error: any;
|
|
114
|
+
fullName: string;
|
|
115
|
+
}[];
|
|
116
|
+
}> => {
|
|
117
|
+
for (const path of modules) {
|
|
118
|
+
require(path);
|
|
119
|
+
}
|
|
120
|
+
return await runTests(title, logger);
|
|
121
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./common";
|
package/src/utils/doc/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ export const getDOCJSON = ({ dirname, subPath }: { dirname: string; subPath: str
|
|
|
7
7
|
method?: Method | Method[];
|
|
8
8
|
description?: string;
|
|
9
9
|
policy?: GroupPolicy;
|
|
10
|
+
headers?: ParseOptions | ParseOptions[];
|
|
10
11
|
session?: false | true | SessionHandlerOptions;
|
|
11
12
|
params?: false | ParseOptions | ParseOptions[];
|
|
12
13
|
query?: false | ParseOptions | ParseOptions[];
|
|
@@ -16,10 +17,14 @@ export const getDOCJSON = ({ dirname, subPath }: { dirname: string; subPath: str
|
|
|
16
17
|
}[] => {
|
|
17
18
|
const apiTraverse = traverseAPIRouteDir(basename(dirname).toUpperCase(), resolve(ConfigPathResolver.getBaseDirname(), dirname), subPath, undefined, logger);
|
|
18
19
|
const docJSON = Object.keys(apiTraverse).map(featureName => {
|
|
19
|
-
const {
|
|
20
|
+
const { path, method, options } = apiTraverse[featureName];
|
|
21
|
+
const { session, policy, description } = options ? options : { session: undefined, policy: undefined, description: undefined };
|
|
22
|
+
const { params, query, body, headers } = options && options.request ? options.request : { params: undefined, query: undefined, body: undefined, headers: undefined };
|
|
23
|
+
const result = options && options.response !== true ? options.response : undefined;
|
|
20
24
|
return {
|
|
21
25
|
path,
|
|
22
26
|
method,
|
|
27
|
+
headers,
|
|
23
28
|
session: session ? typeof session === "function" ? true : session : false,
|
|
24
29
|
policy,
|
|
25
30
|
params,
|