testeranto 0.100.0 → 0.110.0
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 -0
- package/bundle.js +80 -30
- package/dist/common/{dist/module/src/Init.js → Init.js} +28 -0
- package/dist/common/{src/PM → PM}/main.js +138 -95
- package/dist/common/ReportServer.js +22 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/index.js +0 -12
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +1 -1
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +41 -30
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +17 -7
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +18 -14
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +17 -7
- package/dist/common/build.js +222 -0
- package/dist/common/{src/defaultConfig.js → defaultConfig.js} +1 -0
- package/dist/common/esbuildConfigs/eslint-formatter-testeranto.js +6 -0
- package/dist/common/esbuildConfigs/inputFilesPlugin.js +27 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
- package/dist/common/{src/init-docs.js → init-docs.js} +20 -10
- package/dist/common/{src/lib → lib}/abstractBase.js +6 -1
- package/dist/common/{src/lib → lib}/basebuilder.js +23 -10
- package/dist/common/{src/lib → lib}/classBuilder.js +1 -3
- package/dist/common/{src/lib → lib}/core.js +26 -10
- package/dist/common/{src/lib → lib}/index.js +0 -1
- package/dist/common/{src/lib → lib}/types.js +0 -1
- package/dist/common/run.js +297 -0
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/common/utils.js +43 -0
- package/dist/module/Footer.js +4 -0
- package/dist/module/Init.js +63 -0
- package/dist/module/{src/PM → PM}/main.js +119 -86
- package/dist/module/ReportClient.js +97 -0
- package/dist/module/ReportServer.js +17 -0
- package/dist/module/SubPackages/react/jsx/index.js +15 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/node.js +3 -16
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/component/web.js +3 -3
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/node.js +3 -3
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/web.js +24 -23
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/index.js +1 -7
- package/dist/module/TestReport.js +91 -0
- package/dist/module/build.js +184 -0
- package/dist/module/{src/defaultConfig.js → defaultConfig.js} +1 -0
- package/dist/module/esbuildConfigs/eslint-formatter-testeranto.js +3 -0
- package/dist/module/esbuildConfigs/inputFilesPlugin.js +22 -0
- package/dist/module/{src/esbuildConfigs → esbuildConfigs}/node.js +2 -10
- package/dist/module/{src/esbuildConfigs → esbuildConfigs}/web.js +2 -13
- package/dist/module/{src/init-docs.js → init-docs.js} +1 -1
- package/dist/module/{src/lib → lib}/abstractBase.js +6 -1
- package/dist/module/{src/lib → lib}/basebuilder.js +23 -10
- package/dist/module/{src/lib → lib}/classBuilder.js +1 -3
- package/dist/module/{src/lib → lib}/core.js +26 -10
- package/dist/module/{src/lib → lib}/index.js +0 -1
- package/dist/module/run.js +259 -0
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/module/utils.js +29 -0
- package/dist/prebuild/ReportClient.css +11367 -0
- package/dist/prebuild/ReportClient.js +23641 -0
- package/dist/prebuild/ReportServer.mjs +16 -0
- package/dist/prebuild/TestReport.css +11367 -0
- package/dist/prebuild/TestReport.js +27484 -0
- package/dist/prebuild/build.mjs +376 -0
- package/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs +9 -0
- package/dist/prebuild/init-docs.mjs +64 -8
- package/dist/prebuild/{cli2.mjs → run.mjs} +353 -81
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/Node.d.ts +12 -0
- package/dist/types/{src/PM → PM}/index.d.ts +1 -1
- package/dist/types/{src/PM → PM}/main.d.ts +12 -9
- package/dist/types/{src/PM → PM}/node.d.ts +2 -4
- package/dist/types/{src/PM → PM}/web.d.ts +2 -4
- package/dist/types/SubPackages/react/component/node.d.ts +7 -0
- package/dist/types/SubPackages/react/component/web.d.ts +7 -0
- package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
- package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
- package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
- package/dist/types/SubPackages/react-dom/component/node.d.ts +11 -0
- package/dist/types/SubPackages/react-dom/component/web.d.ts +20 -0
- package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
- package/dist/types/SubPackages/react-dom/jsx/node.d.ts +7 -0
- package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
- package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +6 -0
- package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
- package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +4 -0
- package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +4 -0
- package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
- package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +9 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +5 -0
- package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +5 -0
- package/dist/types/Types.d.ts +61 -0
- package/dist/types/Web.d.ts +9 -0
- package/dist/types/defaultConfig.d.ts +3 -0
- package/dist/types/esbuildConfigs/eslint-formatter-testeranto.d.ts +2 -0
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/index.d.ts +1 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/inputFilesPlugin.d.ts +0 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/node.d.ts +1 -1
- package/dist/types/{src/esbuildConfigs → esbuildConfigs}/web.d.ts +1 -1
- package/dist/types/init-docs.d.ts +1 -0
- package/dist/types/lib/abstractBase.d.ts +110 -0
- package/dist/types/lib/basebuilder.d.ts +27 -0
- package/dist/types/lib/classBuilder.d.ts +7 -0
- package/dist/types/lib/core.d.ts +7 -0
- package/dist/types/lib/index.d.ts +83 -0
- package/dist/types/lib/types.d.ts +14 -0
- package/dist/types/run.d.ts +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/utils.d.ts +9 -0
- package/package.json +40 -32
- package/src/Footer.tsx +4 -0
- package/src/Init.ts +48 -0
- package/src/Node.ts +23 -17
- package/src/PM/index.ts +1 -1
- package/src/PM/main.ts +143 -101
- package/src/PM/node.ts +2 -2
- package/src/PM/web.ts +1 -1
- package/src/ReportClient.tsx +155 -0
- package/src/ReportServer.ts +21 -0
- package/src/SubPackages/react/component/node.ts +68 -24
- package/src/SubPackages/react/component/web.ts +68 -25
- package/src/SubPackages/react/jsx/index.ts +39 -18
- package/src/SubPackages/react/jsx/node.ts +12 -10
- package/src/SubPackages/react/jsx/web.ts +27 -14
- package/src/SubPackages/react-dom/component/node.ts +42 -50
- package/src/SubPackages/react-dom/component/web.ts +28 -10
- package/src/SubPackages/react-dom/jsx/node.ts +54 -56
- package/src/SubPackages/react-dom/jsx/web.ts +55 -42
- package/src/SubPackages/react-test-renderer/MemoExoticComponent/node.ts +23 -7
- package/src/SubPackages/react-test-renderer/component/index.ts +38 -5
- package/src/SubPackages/react-test-renderer/component/node.ts +24 -5
- package/src/SubPackages/react-test-renderer/component/web.ts +22 -5
- package/src/SubPackages/react-test-renderer/fc/node.ts +41 -7
- package/src/SubPackages/react-test-renderer/fc/web.ts +43 -11
- package/src/SubPackages/react-test-renderer/jsx/index.ts +39 -16
- package/src/SubPackages/react-test-renderer/jsx/node.ts +8 -6
- package/src/SubPackages/react-test-renderer/jsx/web.ts +22 -5
- package/src/SubPackages/react-test-renderer/jsx-promised/index.ts +39 -6
- package/src/SubPackages/react-test-renderer/jsx-promised/node.ts +27 -10
- package/src/SubPackages/react-test-renderer/jsx-promised/web.ts +26 -12
- package/src/TestReport.tsx +176 -0
- package/src/Types.ts +63 -309
- package/src/Web.ts +24 -18
- package/src/build.ts +240 -0
- package/src/defaultConfig.ts +2 -1
- package/src/esbuildConfigs/eslint-formatter-testeranto.ts +5 -0
- package/src/esbuildConfigs/featuresPlugin.ts +0 -1
- package/src/esbuildConfigs/index.ts +1 -1
- package/src/esbuildConfigs/inputFilesPlugin.ts +2 -135
- package/src/esbuildConfigs/node.ts +4 -13
- package/src/esbuildConfigs/web.ts +3 -19
- package/src/init-docs.ts +2 -1
- package/src/lib/abstractBase.ts +82 -80
- package/src/lib/basebuilder.ts +57 -45
- package/src/lib/classBuilder.ts +15 -15
- package/src/lib/core.ts +44 -35
- package/src/lib/index.ts +47 -98
- package/src/lib/readme.md +12 -0
- package/src/lib/types.ts +53 -70
- package/src/run.ts +398 -0
- package/src/style.css +8 -0
- package/src/utils.ts +74 -2
- package/tsc.log +106 -0
- package/Bundle.Dockerfile +0 -52
- package/bin/init-docs.js +0 -24
- package/dist/common/src/Init.js +0 -40
- package/dist/common/src/SubPackages/puppeteer.js +0 -21
- package/dist/common/src/cli.js +0 -439
- package/dist/common/src/cli2.js +0 -144
- package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -99
- package/dist/common/src/utils.js +0 -16
- package/dist/common/testeranto.js +0 -15
- package/dist/module/src/Init.js +0 -35
- package/dist/module/src/SubPackages/puppeteer.js +0 -16
- package/dist/module/src/SubPackages/react/jsx/index.js +0 -27
- package/dist/module/src/cli.js +0 -411
- package/dist/module/src/cli2.js +0 -116
- package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -94
- package/dist/module/src/lib/types.js +0 -2
- package/dist/module/src/utils.js +0 -9
- package/dist/module/testeranto.js +0 -13
- package/dist/prebuild/cli.mjs +0 -1491
- package/dist/types/dist/module/src/Init.d.ts +0 -2
- package/dist/types/src/Node.d.ts +0 -13
- package/dist/types/src/SubPackages/puppeteer.d.ts +0 -6
- package/dist/types/src/SubPackages/react/component/node.d.ts +0 -7
- package/dist/types/src/SubPackages/react/component/web.d.ts +0 -7
- package/dist/types/src/SubPackages/react/jsx/index.d.ts +0 -12
- package/dist/types/src/SubPackages/react/jsx/node.d.ts +0 -4
- package/dist/types/src/SubPackages/react/jsx/web.d.ts +0 -4
- package/dist/types/src/SubPackages/react-dom/component/node.d.ts +0 -12
- package/dist/types/src/SubPackages/react-dom/component/web.d.ts +0 -11
- package/dist/types/src/SubPackages/react-dom/jsx/index.d.ts +0 -7
- package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +0 -6
- package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +0 -5
- package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +0 -5
- package/dist/types/src/SubPackages/react-test-renderer/component/index.d.ts +0 -13
- package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +0 -3
- package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/jsx/index.d.ts +0 -17
- package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +0 -9
- package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +0 -8
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/index.d.ts +0 -16
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +0 -4
- package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +0 -4
- package/dist/types/src/Types.d.ts +0 -90
- package/dist/types/src/Web.d.ts +0 -10
- package/dist/types/src/defaultConfig.d.ts +0 -3
- package/dist/types/src/lib/abstractBase.d.ts +0 -110
- package/dist/types/src/lib/basebuilder.d.ts +0 -27
- package/dist/types/src/lib/classBuilder.d.ts +0 -7
- package/dist/types/src/lib/core.d.ts +0 -8
- package/dist/types/src/lib/index.d.ts +0 -60
- package/dist/types/src/lib/types.d.ts +0 -40
- package/dist/types/src/utils.d.ts +0 -2
- package/dist/types/testeranto.d.ts +0 -16
- package/docker-compose.yml +0 -37
- package/src/SubPackages/puppeteer.ts +0 -51
- package/src/cli.ts +0 -535
- package/src/cli2.ts +0 -157
- package/testeranto.ts +0 -13
- package/dist/common/{src/Node.js → Node.js} +0 -0
- package/dist/common/{src/PM → PM}/index.js +0 -0
- package/dist/common/{src/PM → PM}/node.js +0 -0
- package/dist/common/{src/PM → PM}/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
- package/dist/common/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
- package/dist/common/{src/Types.js → Types.js} +0 -0
- package/dist/common/{src/Web.js → Web.js} +0 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
- package/dist/common/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
- package/dist/common/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
- package/dist/common/{src/web.html.js → web.html.js} +0 -0
- package/dist/module/{src/Node.js → Node.js} +0 -0
- package/dist/module/{src/PM → PM}/index.js +0 -0
- package/dist/module/{src/PM → PM}/node.js +0 -0
- package/dist/module/{src/PM → PM}/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/component/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/component/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/jsx/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react/jsx/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-dom/jsx/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/component/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/fc/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/node.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx/web.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
- package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/node.js +1 -1
- /package/dist/module/{src/SubPackages → SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
- /package/dist/module/{src/Types.js → Types.js} +0 -0
- /package/dist/module/{src/Web.js → Web.js} +0 -0
- /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.js +0 -0
- /package/dist/module/{src/esbuildConfigs → esbuildConfigs}/index.js +0 -0
- /package/dist/{types/src/cli.d.ts → module/lib/types.js} +0 -0
- /package/dist/module/{src/puppeteerConfiger.js → puppeteerConfiger.js} +0 -0
- /package/dist/module/{src/web.html.js → web.html.js} +0 -0
- /package/dist/types/{src/Init.d.ts → Init.d.ts} +0 -0
- /package/dist/types/{src/cli2.d.ts → ReportServer.d.ts} +0 -0
- /package/dist/types/{src/SubPackages → SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
- /package/dist/types/{src/init-docs.d.ts → build.d.ts} +0 -0
- /package/dist/types/{src/esbuildConfigs → esbuildConfigs}/featuresPlugin.d.ts +0 -0
- /package/dist/types/{src/puppeteerConfiger.d.ts → puppeteerConfiger.d.ts} +0 -0
- /package/dist/types/{src/web.html.d.ts → web.html.d.ts} +0 -0
|
@@ -1,13 +1,64 @@
|
|
|
1
1
|
import { createRequire } from 'module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
// src/
|
|
3
|
+
// src/run.ts
|
|
4
|
+
import ansiC2 from "ansi-colors";
|
|
4
5
|
import { watch } from "fs";
|
|
6
|
+
import path3 from "path";
|
|
7
|
+
import crypto from "node:crypto";
|
|
8
|
+
import fs2 from "fs";
|
|
9
|
+
import tsc from "tsc-prog";
|
|
10
|
+
import { ESLint } from "eslint";
|
|
11
|
+
import ts from "typescript";
|
|
12
|
+
import readline from "readline";
|
|
5
13
|
|
|
6
14
|
// src/PM/main.ts
|
|
7
15
|
import fs from "fs";
|
|
8
|
-
import
|
|
16
|
+
import path2 from "path";
|
|
9
17
|
import puppeteer from "puppeteer-core";
|
|
10
|
-
import
|
|
18
|
+
import ansiC from "ansi-colors";
|
|
19
|
+
|
|
20
|
+
// src/utils.ts
|
|
21
|
+
import path from "path";
|
|
22
|
+
var tscPather = (entryPoint, platform) => {
|
|
23
|
+
return path.join(
|
|
24
|
+
"./docs/",
|
|
25
|
+
platform,
|
|
26
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
27
|
+
`type_errors.txt`
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
var tscExitCodePather = (entryPoint, platform) => {
|
|
31
|
+
return path.join(
|
|
32
|
+
"./docs/",
|
|
33
|
+
platform,
|
|
34
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
35
|
+
`type_errors.txt`
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
var lintPather = (entryPoint, platform) => {
|
|
39
|
+
return path.join(
|
|
40
|
+
"./docs/",
|
|
41
|
+
platform,
|
|
42
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
43
|
+
`lint_errors.json`
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
var lintExitCodePather = (entryPoint, platform) => {
|
|
47
|
+
return path.join(
|
|
48
|
+
"./docs/",
|
|
49
|
+
platform,
|
|
50
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
51
|
+
`lint_errors.txt`
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
var bddExitCodePather = (entryPoint, platform) => {
|
|
55
|
+
return path.join(
|
|
56
|
+
"./docs/",
|
|
57
|
+
platform,
|
|
58
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
59
|
+
`bdd_errors.txt`
|
|
60
|
+
);
|
|
61
|
+
};
|
|
11
62
|
|
|
12
63
|
// src/PM/index.ts
|
|
13
64
|
var PM = class {
|
|
@@ -19,49 +70,80 @@ var fPaths = [];
|
|
|
19
70
|
var files = {};
|
|
20
71
|
var recorders = {};
|
|
21
72
|
var screenshots = {};
|
|
22
|
-
var red = "\x1B[31m";
|
|
23
|
-
var green = "\x1B[32m";
|
|
24
|
-
var reset = "\x1B[0m";
|
|
25
73
|
var statusMessagePretty = (failures, test) => {
|
|
26
74
|
if (failures === 0) {
|
|
27
|
-
console.log(green
|
|
75
|
+
console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully`)));
|
|
28
76
|
} else {
|
|
29
|
-
console.log(red
|
|
77
|
+
console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
|
|
30
78
|
}
|
|
31
79
|
};
|
|
80
|
+
async function writeFileAndCreateDir(filePath, data) {
|
|
81
|
+
const dirPath = path2.dirname(filePath);
|
|
82
|
+
try {
|
|
83
|
+
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
84
|
+
await fs.appendFileSync(filePath, data);
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.error(`Error writing file: ${error}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function isValidUrl(string) {
|
|
90
|
+
try {
|
|
91
|
+
new URL(string);
|
|
92
|
+
return true;
|
|
93
|
+
} catch (err) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
32
97
|
var PM_Main = class extends PM {
|
|
33
98
|
constructor(configs) {
|
|
34
99
|
super();
|
|
35
100
|
this.shutdownMode = false;
|
|
101
|
+
this.bigBoard = {};
|
|
36
102
|
this.checkForShutdown = () => {
|
|
37
|
-
const anyRunning = Object.values(this.
|
|
103
|
+
const anyRunning = Object.values(this.bigBoard).filter((x) => x.status === "running").length > 0;
|
|
38
104
|
if (anyRunning) {
|
|
39
105
|
} else {
|
|
40
106
|
this.browser.disconnect().then(() => {
|
|
41
|
-
|
|
107
|
+
const final = {
|
|
108
|
+
timestamp: Date.now(),
|
|
109
|
+
tests: this.configs.tests.reduce((mm, t) => {
|
|
110
|
+
const bddErrors = fs.readFileSync(bddExitCodePather(t[0], t[1])).toString();
|
|
111
|
+
const lintErrors = fs.readFileSync(lintExitCodePather(t[0], t[1])).toString();
|
|
112
|
+
const typeErrors = fs.readFileSync(tscExitCodePather(t[0], t[1])).toString();
|
|
113
|
+
mm[t[0]] = {
|
|
114
|
+
bddErrors,
|
|
115
|
+
lintErrors,
|
|
116
|
+
typeErrors
|
|
117
|
+
};
|
|
118
|
+
return mm;
|
|
119
|
+
}, {})
|
|
120
|
+
};
|
|
121
|
+
const s = JSON.stringify(final, null, 2);
|
|
122
|
+
fs.writeFileSync("docs/summary.json", s);
|
|
123
|
+
console.log(ansiC.inverse("Goodbye"));
|
|
42
124
|
process.exit();
|
|
43
125
|
});
|
|
44
126
|
}
|
|
45
127
|
};
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
128
|
+
this.testIsNowRunning = (src) => {
|
|
129
|
+
this.bigBoard[src].status = "running";
|
|
48
130
|
};
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
131
|
+
this.testIsNowDone = (src) => {
|
|
132
|
+
this.bigBoard[src].status = "waiting";
|
|
51
133
|
if (this.shutdownMode) {
|
|
52
134
|
this.checkForShutdown();
|
|
53
135
|
}
|
|
54
136
|
};
|
|
55
137
|
this.launchNode = async (src, dest) => {
|
|
56
|
-
console.log(
|
|
57
|
-
this.
|
|
138
|
+
console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
|
|
139
|
+
this.testIsNowRunning(src);
|
|
58
140
|
const destFolder = dest.replace(".mjs", "");
|
|
59
141
|
let argz = "";
|
|
60
142
|
const testConfig = this.configs.tests.find((t) => {
|
|
61
143
|
return t[0] === src;
|
|
62
144
|
});
|
|
63
145
|
if (!testConfig) {
|
|
64
|
-
console.
|
|
146
|
+
console.log(ansiC.inverse("missing test config! Exiting ungracefully!"));
|
|
65
147
|
process.exit(-1);
|
|
66
148
|
}
|
|
67
149
|
const testConfigResource = testConfig[2];
|
|
@@ -106,11 +188,12 @@ var PM_Main = class extends PM {
|
|
|
106
188
|
defaultModule.receiveTestResourceConfig(argz).then(async ({ features, failed }) => {
|
|
107
189
|
this.receiveFeatures(features, destFolder, src);
|
|
108
190
|
statusMessagePretty(failed, src);
|
|
191
|
+
this.receiveExitCode(src, failed);
|
|
109
192
|
}).catch((e) => {
|
|
110
|
-
console.log(`${src} errored with
|
|
193
|
+
console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}`)));
|
|
111
194
|
}).finally(() => {
|
|
112
195
|
webSideCares.forEach((webSideCar) => webSideCar.close());
|
|
113
|
-
this.
|
|
196
|
+
this.testIsNowDone(src);
|
|
114
197
|
});
|
|
115
198
|
});
|
|
116
199
|
});
|
|
@@ -122,7 +205,7 @@ var PM_Main = class extends PM {
|
|
|
122
205
|
};
|
|
123
206
|
this.launchWebSideCar = async (src, dest, testConfig) => {
|
|
124
207
|
const d = dest + ".mjs";
|
|
125
|
-
console.log(
|
|
208
|
+
console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
|
|
126
209
|
const destFolder = dest.replace(".mjs", "");
|
|
127
210
|
const fileStreams2 = [];
|
|
128
211
|
const doneFileStream2 = [];
|
|
@@ -132,7 +215,7 @@ var PM_Main = class extends PM {
|
|
|
132
215
|
"custom-screenshot",
|
|
133
216
|
async (ssOpts, testName) => {
|
|
134
217
|
const p = ssOpts.path;
|
|
135
|
-
const dir =
|
|
218
|
+
const dir = path2.dirname(p);
|
|
136
219
|
fs.mkdirSync(dir, {
|
|
137
220
|
recursive: true
|
|
138
221
|
});
|
|
@@ -152,7 +235,7 @@ var PM_Main = class extends PM {
|
|
|
152
235
|
page.exposeFunction(
|
|
153
236
|
"writeFileSync",
|
|
154
237
|
(fp, contents, testName) => {
|
|
155
|
-
const dir =
|
|
238
|
+
const dir = path2.dirname(fp);
|
|
156
239
|
fs.mkdirSync(dir, {
|
|
157
240
|
recursive: true
|
|
158
241
|
});
|
|
@@ -216,7 +299,7 @@ var PM_Main = class extends PM {
|
|
|
216
299
|
};
|
|
217
300
|
this.launchNodeSideCar = async (src, dest, testConfig) => {
|
|
218
301
|
const d = dest + ".mjs";
|
|
219
|
-
console.log(
|
|
302
|
+
console.log(ansiC.green(ansiC.inverse(`launchNodeSideCar ${src}`)));
|
|
220
303
|
const destFolder = dest.replace(".mjs", "");
|
|
221
304
|
let argz = "";
|
|
222
305
|
const testConfigResource = testConfig[2];
|
|
@@ -268,8 +351,8 @@ var PM_Main = class extends PM {
|
|
|
268
351
|
}
|
|
269
352
|
};
|
|
270
353
|
this.launchWeb = (t, dest) => {
|
|
271
|
-
console.log(
|
|
272
|
-
this.
|
|
354
|
+
console.log(ansiC.green(ansiC.inverse(`! web ${t}`)));
|
|
355
|
+
this.testIsNowRunning(t);
|
|
273
356
|
const destFolder = dest.replace(".mjs", "");
|
|
274
357
|
const webArgz = JSON.stringify({
|
|
275
358
|
name: dest,
|
|
@@ -279,9 +362,9 @@ var PM_Main = class extends PM {
|
|
|
279
362
|
});
|
|
280
363
|
const d = `${dest}?cacheBust=${Date.now()}`;
|
|
281
364
|
const evaluation = `
|
|
282
|
-
|
|
365
|
+
|
|
283
366
|
import('${d}').then(async (x) => {
|
|
284
|
-
|
|
367
|
+
|
|
285
368
|
try {
|
|
286
369
|
return await (await x.default).receiveTestResourceConfig(${webArgz})
|
|
287
370
|
} catch (e) {
|
|
@@ -297,7 +380,7 @@ var PM_Main = class extends PM {
|
|
|
297
380
|
"screencast",
|
|
298
381
|
async (ssOpts, testName) => {
|
|
299
382
|
const p = ssOpts.path;
|
|
300
|
-
const dir =
|
|
383
|
+
const dir = path2.dirname(p);
|
|
301
384
|
fs.mkdirSync(dir, {
|
|
302
385
|
recursive: true
|
|
303
386
|
});
|
|
@@ -321,7 +404,7 @@ var PM_Main = class extends PM {
|
|
|
321
404
|
"customScreenShot",
|
|
322
405
|
async (ssOpts, testName) => {
|
|
323
406
|
const p = ssOpts.path;
|
|
324
|
-
const dir =
|
|
407
|
+
const dir = path2.dirname(p);
|
|
325
408
|
fs.mkdirSync(dir, {
|
|
326
409
|
recursive: true
|
|
327
410
|
});
|
|
@@ -440,7 +523,7 @@ var PM_Main = class extends PM {
|
|
|
440
523
|
Promise.all(screenshots[t] || []).then(() => {
|
|
441
524
|
delete screenshots[t];
|
|
442
525
|
page.close();
|
|
443
|
-
this.
|
|
526
|
+
this.testIsNowDone(t);
|
|
444
527
|
stderrStream.close();
|
|
445
528
|
stdoutStream.close();
|
|
446
529
|
});
|
|
@@ -458,6 +541,7 @@ var PM_Main = class extends PM {
|
|
|
458
541
|
}
|
|
459
542
|
console.debug(`Error from message ${t}: [${err.message}] `);
|
|
460
543
|
stderrStream.write(err.message);
|
|
544
|
+
close();
|
|
461
545
|
});
|
|
462
546
|
page.on("console", (log) => {
|
|
463
547
|
stdoutStream.write(log.text());
|
|
@@ -468,8 +552,9 @@ var PM_Main = class extends PM {
|
|
|
468
552
|
await page.evaluate(evaluation).then(async ({ failed, features }) => {
|
|
469
553
|
this.receiveFeatures(features, destFolder, t);
|
|
470
554
|
statusMessagePretty(failed, t);
|
|
555
|
+
this.receiveExitCode(t, failed);
|
|
471
556
|
}).catch((e) => {
|
|
472
|
-
console.log(`${t} errored with
|
|
557
|
+
console.log(ansiC.red(ansiC.inverse(`${t} errored with: ${e}`)));
|
|
473
558
|
}).finally(() => {
|
|
474
559
|
close();
|
|
475
560
|
});
|
|
@@ -477,7 +562,7 @@ var PM_Main = class extends PM {
|
|
|
477
562
|
});
|
|
478
563
|
};
|
|
479
564
|
this.receiveFeatures = (features, destFolder, srcTest) => {
|
|
480
|
-
const featureDestination =
|
|
565
|
+
const featureDestination = path2.resolve(
|
|
481
566
|
process.cwd(),
|
|
482
567
|
"docs",
|
|
483
568
|
"features",
|
|
@@ -490,22 +575,17 @@ var PM_Main = class extends PM {
|
|
|
490
575
|
if (isUrl) {
|
|
491
576
|
const u = new URL(featureStringKey);
|
|
492
577
|
if (u.protocol === "file:") {
|
|
493
|
-
const newPath = `${process.cwd()}/docs/features/internal/${
|
|
578
|
+
const newPath = `${process.cwd()}/docs/features/internal/${path2.relative(
|
|
494
579
|
process.cwd(),
|
|
495
580
|
u.pathname
|
|
496
581
|
)}`;
|
|
497
|
-
await fs.promises.mkdir(
|
|
582
|
+
await fs.promises.mkdir(path2.dirname(newPath), { recursive: true });
|
|
498
583
|
try {
|
|
499
584
|
await fs.unlinkSync(newPath);
|
|
500
585
|
} catch (error) {
|
|
501
586
|
if (error.code !== "ENOENT") {
|
|
502
587
|
}
|
|
503
588
|
}
|
|
504
|
-
fs.symlink(u.pathname, newPath, (err) => {
|
|
505
|
-
if (err) {
|
|
506
|
-
} else {
|
|
507
|
-
}
|
|
508
|
-
});
|
|
509
589
|
accum.files.push(newPath);
|
|
510
590
|
} else if (u.protocol === "http:" || u.protocol === "https:") {
|
|
511
591
|
const newPath = `${process.cwd()}/docs/features/external${u.hostname}${u.pathname}`;
|
|
@@ -514,7 +594,7 @@ var PM_Main = class extends PM {
|
|
|
514
594
|
accum.files.push(newPath);
|
|
515
595
|
}
|
|
516
596
|
} else {
|
|
517
|
-
await fs.promises.mkdir(
|
|
597
|
+
await fs.promises.mkdir(path2.dirname(featureDestination), {
|
|
518
598
|
recursive: true
|
|
519
599
|
});
|
|
520
600
|
accum.strings.push(featureStringKey);
|
|
@@ -528,32 +608,49 @@ var PM_Main = class extends PM {
|
|
|
528
608
|
}).join("\n")
|
|
529
609
|
);
|
|
530
610
|
});
|
|
611
|
+
this.writeBigBoard();
|
|
612
|
+
};
|
|
613
|
+
this.receiveExitCode = (srcTest, failures) => {
|
|
614
|
+
this.bigBoard[srcTest].runTimeError = failures;
|
|
615
|
+
this.writeBigBoard();
|
|
616
|
+
};
|
|
617
|
+
this.writeBigBoard = () => {
|
|
618
|
+
fs.writeFileSync(
|
|
619
|
+
"./docs/bigBoard.json",
|
|
620
|
+
JSON.stringify(this.bigBoard, null, 2)
|
|
621
|
+
);
|
|
531
622
|
};
|
|
532
623
|
this.server = {};
|
|
533
624
|
this.configs = configs;
|
|
534
625
|
this.ports = {};
|
|
535
|
-
this.
|
|
626
|
+
this.configs.tests.forEach(([t]) => {
|
|
627
|
+
this.bigBoard[t] = {
|
|
628
|
+
status: "?"
|
|
629
|
+
};
|
|
630
|
+
});
|
|
536
631
|
this.configs.ports.forEach((element) => {
|
|
537
632
|
this.ports[element] = "true";
|
|
538
633
|
});
|
|
539
634
|
globalThis["waitForSelector"] = async (pageKey, sel) => {
|
|
540
|
-
console.log("waitForSelector", pageKey, sel);
|
|
541
635
|
const page = (await this.browser.pages()).find(
|
|
636
|
+
/* @ts-ignore:next-line */
|
|
542
637
|
(p) => p.mainFrame()._id === pageKey
|
|
543
638
|
);
|
|
544
639
|
await page?.waitForSelector(sel);
|
|
545
640
|
};
|
|
546
|
-
globalThis["screencastStop"] = async (
|
|
547
|
-
return recorders[
|
|
641
|
+
globalThis["screencastStop"] = async (path4) => {
|
|
642
|
+
return recorders[path4].stop();
|
|
548
643
|
};
|
|
549
644
|
globalThis["closePage"] = async (pageKey) => {
|
|
550
645
|
const page = (await this.browser.pages()).find(
|
|
646
|
+
/* @ts-ignore:next-line */
|
|
551
647
|
(p) => p.mainFrame()._id === pageKey
|
|
552
648
|
);
|
|
553
649
|
return page.close();
|
|
554
650
|
};
|
|
555
651
|
globalThis["goto"] = async (pageKey, url) => {
|
|
556
652
|
const page = (await this.browser.pages()).find(
|
|
653
|
+
/* @ts-ignore:next-line */
|
|
557
654
|
(p) => p.mainFrame()._id === pageKey
|
|
558
655
|
);
|
|
559
656
|
await page?.goto(url);
|
|
@@ -574,8 +671,7 @@ var PM_Main = class extends PM {
|
|
|
574
671
|
return false;
|
|
575
672
|
};
|
|
576
673
|
globalThis["writeFileSync"] = (filepath, contents, testName) => {
|
|
577
|
-
|
|
578
|
-
fs.mkdirSync(dir, {
|
|
674
|
+
fs.mkdirSync(path2.dirname(filepath), {
|
|
579
675
|
recursive: true
|
|
580
676
|
});
|
|
581
677
|
if (!files[testName]) {
|
|
@@ -604,10 +700,11 @@ var PM_Main = class extends PM {
|
|
|
604
700
|
};
|
|
605
701
|
globalThis["customScreenShot"] = async (opts, pageKey, testName) => {
|
|
606
702
|
const page = (await this.browser.pages()).find(
|
|
703
|
+
/* @ts-ignore:next-line */
|
|
607
704
|
(p2) => p2.mainFrame()._id === pageKey
|
|
608
705
|
);
|
|
609
706
|
const p = opts.path;
|
|
610
|
-
const dir =
|
|
707
|
+
const dir = path2.dirname(p);
|
|
611
708
|
fs.mkdirSync(dir, {
|
|
612
709
|
recursive: true
|
|
613
710
|
});
|
|
@@ -628,10 +725,11 @@ var PM_Main = class extends PM {
|
|
|
628
725
|
};
|
|
629
726
|
globalThis["screencast"] = async (opts, pageKey) => {
|
|
630
727
|
const page = (await this.browser.pages()).find(
|
|
728
|
+
/* @ts-ignore:next-line */
|
|
631
729
|
(p2) => p2.mainFrame()._id === pageKey
|
|
632
730
|
);
|
|
633
731
|
const p = opts.path;
|
|
634
|
-
const dir =
|
|
732
|
+
const dir = path2.dirname(p);
|
|
635
733
|
fs.mkdirSync(dir, {
|
|
636
734
|
recursive: true
|
|
637
735
|
});
|
|
@@ -692,7 +790,7 @@ var PM_Main = class extends PM {
|
|
|
692
790
|
callback(
|
|
693
791
|
new Promise((res, rej) => {
|
|
694
792
|
tLog("testArtiFactory =>", fPath);
|
|
695
|
-
const cleanPath =
|
|
793
|
+
const cleanPath = path2.resolve(fPath);
|
|
696
794
|
fPaths.push(cleanPath.replace(process.cwd(), ``));
|
|
697
795
|
const targetDir = cleanPath.split("/").slice(0, -1).join("/");
|
|
698
796
|
fs.mkdir(targetDir, { recursive: true }, async (error) => {
|
|
@@ -700,7 +798,7 @@ var PM_Main = class extends PM {
|
|
|
700
798
|
console.error(`\u2757\uFE0FtestArtiFactory failed`, targetDir, error);
|
|
701
799
|
}
|
|
702
800
|
fs.writeFileSync(
|
|
703
|
-
|
|
801
|
+
path2.resolve(
|
|
704
802
|
targetDir.split("/").slice(0, -1).join("/"),
|
|
705
803
|
"manifest"
|
|
706
804
|
),
|
|
@@ -763,39 +861,32 @@ var PM_Main = class extends PM {
|
|
|
763
861
|
async startPuppeteer(options, destfolder) {
|
|
764
862
|
this.browser = await puppeteer.launch(options);
|
|
765
863
|
}
|
|
766
|
-
|
|
864
|
+
// goodbye = () => {
|
|
865
|
+
// this.browser.disconnect().then(() => {
|
|
866
|
+
// console.log("Goodbye");
|
|
867
|
+
// process.exit();
|
|
868
|
+
// });
|
|
869
|
+
// };
|
|
767
870
|
shutDown() {
|
|
768
|
-
console.log("shutting down...");
|
|
769
871
|
this.shutdownMode = true;
|
|
770
872
|
this.checkForShutdown();
|
|
771
873
|
}
|
|
772
874
|
};
|
|
773
|
-
async function writeFileAndCreateDir(filePath, data) {
|
|
774
|
-
const dirPath = path.dirname(filePath);
|
|
775
|
-
try {
|
|
776
|
-
await fs.promises.mkdir(dirPath, { recursive: true });
|
|
777
|
-
await fs.appendFileSync(filePath, data);
|
|
778
|
-
} catch (error) {
|
|
779
|
-
console.error(`Error writing file: ${error}`);
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
function isValidUrl(string) {
|
|
783
|
-
try {
|
|
784
|
-
new URL(string);
|
|
785
|
-
return true;
|
|
786
|
-
} catch (err) {
|
|
787
|
-
return false;
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
875
|
|
|
791
|
-
// src/
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
876
|
+
// src/run.ts
|
|
877
|
+
console.log(ansiC2.inverse("Press 'x' to shutdown forcefully."));
|
|
878
|
+
readline.emitKeypressEvents(process.stdin);
|
|
879
|
+
if (process.stdin.isTTY)
|
|
880
|
+
process.stdin.setRawMode(true);
|
|
881
|
+
process.stdin.on("keypress", (str, key) => {
|
|
882
|
+
if (key.name === "x") {
|
|
883
|
+
console.log(ansiC2.inverse("Shutting down forcefully..."));
|
|
884
|
+
process.exit(-1);
|
|
885
|
+
}
|
|
886
|
+
});
|
|
796
887
|
async function fileHash(filePath, algorithm = "md5") {
|
|
797
888
|
return new Promise((resolve, reject) => {
|
|
798
|
-
const hash =
|
|
889
|
+
const hash = crypto.createHash(algorithm);
|
|
799
890
|
const fileStream = fs2.createReadStream(filePath);
|
|
800
891
|
fileStream.on("data", (data) => {
|
|
801
892
|
hash.update(data);
|
|
@@ -809,17 +900,26 @@ async function fileHash(filePath, algorithm = "md5") {
|
|
|
809
900
|
});
|
|
810
901
|
});
|
|
811
902
|
}
|
|
903
|
+
async function filesHash(files2, algorithm = "md5") {
|
|
904
|
+
return new Promise((resolve, reject) => {
|
|
905
|
+
resolve(
|
|
906
|
+
files2.reduce(async (mm, f) => {
|
|
907
|
+
return await mm + await fileHash(f);
|
|
908
|
+
}, Promise.resolve(""))
|
|
909
|
+
);
|
|
910
|
+
});
|
|
911
|
+
}
|
|
812
912
|
var getRunnables = (tests, payload = {
|
|
813
913
|
nodeEntryPoints: {},
|
|
814
914
|
webEntryPoints: {}
|
|
815
915
|
}) => {
|
|
816
916
|
return tests.reduce((pt, cv, cndx, cry) => {
|
|
817
917
|
if (cv[1] === "node") {
|
|
818
|
-
pt.nodeEntryPoints[cv[0]] =
|
|
918
|
+
pt.nodeEntryPoints[cv[0]] = path3.resolve(
|
|
819
919
|
`./docs/node/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
820
920
|
);
|
|
821
921
|
} else if (cv[1] === "web") {
|
|
822
|
-
pt.webEntryPoints[cv[0]] =
|
|
922
|
+
pt.webEntryPoints[cv[0]] = path3.resolve(
|
|
823
923
|
`./docs/web/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
824
924
|
);
|
|
825
925
|
}
|
|
@@ -829,13 +929,187 @@ var getRunnables = (tests, payload = {
|
|
|
829
929
|
return pt;
|
|
830
930
|
}, payload);
|
|
831
931
|
};
|
|
932
|
+
var changes = {};
|
|
933
|
+
var tscCheck = async ({
|
|
934
|
+
entrypoint,
|
|
935
|
+
addableFiles,
|
|
936
|
+
platform
|
|
937
|
+
}) => {
|
|
938
|
+
console.log(ansiC2.green(ansiC2.inverse(`tsc < ${entrypoint}`)));
|
|
939
|
+
const program = tsc.createProgramFromConfig({
|
|
940
|
+
basePath: process.cwd(),
|
|
941
|
+
// always required, used for relative paths
|
|
942
|
+
configFilePath: "tsconfig.json",
|
|
943
|
+
// config to inherit from (optional)
|
|
944
|
+
compilerOptions: {
|
|
945
|
+
rootDir: "src",
|
|
946
|
+
outDir: tscPather(entrypoint, platform),
|
|
947
|
+
// declaration: true,
|
|
948
|
+
// skipLibCheck: true,
|
|
949
|
+
noEmit: true
|
|
950
|
+
},
|
|
951
|
+
include: addableFiles
|
|
952
|
+
//["src/**/*"],
|
|
953
|
+
// exclude: ["**/*.test.ts", "**/*.spec.ts"],
|
|
954
|
+
});
|
|
955
|
+
const tscPath = tscPather(entrypoint, platform);
|
|
956
|
+
let allDiagnostics = program.getSemanticDiagnostics();
|
|
957
|
+
const d = [];
|
|
958
|
+
allDiagnostics.forEach((diagnostic) => {
|
|
959
|
+
if (diagnostic.file) {
|
|
960
|
+
let { line, character } = ts.getLineAndCharacterOfPosition(
|
|
961
|
+
diagnostic.file,
|
|
962
|
+
diagnostic.start
|
|
963
|
+
);
|
|
964
|
+
let message = ts.flattenDiagnosticMessageText(
|
|
965
|
+
diagnostic.messageText,
|
|
966
|
+
"\n"
|
|
967
|
+
);
|
|
968
|
+
d.push(
|
|
969
|
+
`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`
|
|
970
|
+
);
|
|
971
|
+
} else {
|
|
972
|
+
d.push(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
|
|
973
|
+
}
|
|
974
|
+
});
|
|
975
|
+
fs2.writeFileSync(tscPath, d.join("\n"));
|
|
976
|
+
fs2.writeFileSync(
|
|
977
|
+
tscExitCodePather(entrypoint, platform),
|
|
978
|
+
d.length.toString()
|
|
979
|
+
);
|
|
980
|
+
};
|
|
981
|
+
var eslint = new ESLint();
|
|
982
|
+
var formatter = await eslint.loadFormatter(
|
|
983
|
+
"./node_modules/testeranto/dist/prebuild/esbuildConfigs/eslint-formatter-testeranto.mjs"
|
|
984
|
+
);
|
|
985
|
+
var eslintCheck = async (entrypoint, platform, addableFiles) => {
|
|
986
|
+
console.log(ansiC2.green(ansiC2.inverse(`eslint < ${entrypoint}`)));
|
|
987
|
+
const results = (await eslint.lintFiles(addableFiles)).filter((r) => r.messages.length).filter((r) => {
|
|
988
|
+
return r.messages[0].ruleId !== null;
|
|
989
|
+
}).map((r) => {
|
|
990
|
+
delete r.source;
|
|
991
|
+
return r;
|
|
992
|
+
});
|
|
993
|
+
fs2.writeFileSync(
|
|
994
|
+
lintPather(entrypoint, platform),
|
|
995
|
+
await formatter.format(results)
|
|
996
|
+
);
|
|
997
|
+
fs2.writeFileSync(
|
|
998
|
+
lintExitCodePather(entrypoint, platform),
|
|
999
|
+
results.length.toString()
|
|
1000
|
+
);
|
|
1001
|
+
};
|
|
1002
|
+
var makePrompt = async (entryPoint, addableFiles, platform) => {
|
|
1003
|
+
const promptPath = path3.join(
|
|
1004
|
+
"./docs/",
|
|
1005
|
+
platform,
|
|
1006
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
1007
|
+
`prompt.txt`
|
|
1008
|
+
);
|
|
1009
|
+
const testPaths = path3.join(
|
|
1010
|
+
"./docs/",
|
|
1011
|
+
platform,
|
|
1012
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
1013
|
+
`tests.json`
|
|
1014
|
+
);
|
|
1015
|
+
const featuresPath = path3.join(
|
|
1016
|
+
"./docs/",
|
|
1017
|
+
platform,
|
|
1018
|
+
entryPoint.split(".").slice(0, -1).join("."),
|
|
1019
|
+
`featurePrompt.txt`
|
|
1020
|
+
);
|
|
1021
|
+
fs2.writeFileSync(
|
|
1022
|
+
promptPath,
|
|
1023
|
+
`
|
|
1024
|
+
${addableFiles.map((x) => {
|
|
1025
|
+
return `/add ${x}`;
|
|
1026
|
+
}).join("\n")}
|
|
1027
|
+
|
|
1028
|
+
/read ${lintPather(entryPoint, platform)}
|
|
1029
|
+
/read ${tscPather(entryPoint, platform)}
|
|
1030
|
+
/read ${testPaths}
|
|
1031
|
+
|
|
1032
|
+
/load ${featuresPath}
|
|
1033
|
+
|
|
1034
|
+
/code Fix the failing tests described in ${testPaths}. Correct any type signature errors described in the files ${tscPather(
|
|
1035
|
+
entryPoint,
|
|
1036
|
+
platform
|
|
1037
|
+
)}. Implement any method which throws "Function not implemented. Resolve the lint errors described in ${lintPather(
|
|
1038
|
+
entryPoint,
|
|
1039
|
+
platform
|
|
1040
|
+
)}"
|
|
1041
|
+
`
|
|
1042
|
+
);
|
|
1043
|
+
};
|
|
1044
|
+
var metafileOutputs = async (platform) => {
|
|
1045
|
+
const metafile = JSON.parse(
|
|
1046
|
+
fs2.readFileSync(`docs/${platform}/metafile.json`).toString()
|
|
1047
|
+
).metafile;
|
|
1048
|
+
if (!metafile)
|
|
1049
|
+
return;
|
|
1050
|
+
const outputs = metafile.outputs;
|
|
1051
|
+
Object.keys(outputs).forEach(async (k) => {
|
|
1052
|
+
const addableFiles = Object.keys(outputs[k].inputs).filter((i) => {
|
|
1053
|
+
if (!fs2.existsSync(i))
|
|
1054
|
+
return false;
|
|
1055
|
+
if (i.startsWith("node_modules"))
|
|
1056
|
+
return false;
|
|
1057
|
+
return true;
|
|
1058
|
+
});
|
|
1059
|
+
const f = `${k.split(".").slice(0, -1).join(".")}/`;
|
|
1060
|
+
if (!fs2.existsSync(f)) {
|
|
1061
|
+
fs2.mkdirSync(f);
|
|
1062
|
+
}
|
|
1063
|
+
const entrypoint = outputs[k].entryPoint;
|
|
1064
|
+
if (entrypoint) {
|
|
1065
|
+
const changeDigest = await filesHash(addableFiles);
|
|
1066
|
+
if (changeDigest === changes[entrypoint]) {
|
|
1067
|
+
} else {
|
|
1068
|
+
changes[entrypoint] = changeDigest;
|
|
1069
|
+
tscCheck({ platform, addableFiles, entrypoint });
|
|
1070
|
+
eslintCheck(entrypoint, platform, addableFiles);
|
|
1071
|
+
makePrompt(entrypoint, addableFiles, platform);
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
});
|
|
1075
|
+
};
|
|
832
1076
|
import(process.cwd() + "/" + process.argv[2]).then(async (module) => {
|
|
833
1077
|
const rawConfig = module.default;
|
|
834
1078
|
const config = {
|
|
835
1079
|
...rawConfig,
|
|
836
1080
|
buildDir: process.cwd() + "/" + rawConfig.outdir
|
|
837
1081
|
};
|
|
1082
|
+
let mode = config.devMode ? "DEV" : "PROD";
|
|
1083
|
+
const fileHashes = {};
|
|
838
1084
|
let pm = new PM_Main(config);
|
|
1085
|
+
console.log(ansiC2.inverse(`Press 'q' to shutdown gracefully`));
|
|
1086
|
+
process.stdin.on("keypress", (str, key) => {
|
|
1087
|
+
if (key.name === "q") {
|
|
1088
|
+
console.log(
|
|
1089
|
+
ansiC2.inverse("Testeranto-Run is shutting down gracefully...")
|
|
1090
|
+
);
|
|
1091
|
+
mode = "PROD";
|
|
1092
|
+
nodeMetafileWatcher.close();
|
|
1093
|
+
webMetafileWatcher.close();
|
|
1094
|
+
pm.shutDown();
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
metafileOutputs("node");
|
|
1098
|
+
const nodeMetafileWatcher = watch(
|
|
1099
|
+
"docs/node/metafile.json",
|
|
1100
|
+
async (e, filename) => {
|
|
1101
|
+
console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename} (node)`)));
|
|
1102
|
+
metafileOutputs("node");
|
|
1103
|
+
}
|
|
1104
|
+
);
|
|
1105
|
+
metafileOutputs("web");
|
|
1106
|
+
const webMetafileWatcher = watch(
|
|
1107
|
+
"docs/web/metafile.json",
|
|
1108
|
+
async (e, filename) => {
|
|
1109
|
+
console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename} (web)`)));
|
|
1110
|
+
metafileOutputs("web");
|
|
1111
|
+
}
|
|
1112
|
+
);
|
|
839
1113
|
await pm.startPuppeteer(
|
|
840
1114
|
{
|
|
841
1115
|
slowMo: 1,
|
|
@@ -885,14 +1159,13 @@ import(process.cwd() + "/" + process.argv[2]).then(async (module) => {
|
|
|
885
1159
|
const { nodeEntryPoints, webEntryPoints } = getRunnables(config.tests);
|
|
886
1160
|
Object.entries(nodeEntryPoints).forEach(
|
|
887
1161
|
([k, outputFile]) => {
|
|
888
|
-
console.log("watching and running", outputFile);
|
|
889
1162
|
pm.launchNode(k, outputFile);
|
|
890
1163
|
try {
|
|
891
1164
|
watch(outputFile, async (e, filename) => {
|
|
892
1165
|
const hash = await fileHash(outputFile);
|
|
893
1166
|
if (fileHashes[k] !== hash) {
|
|
894
1167
|
fileHashes[k] = hash;
|
|
895
|
-
console.log(`< ${e} ${filename}
|
|
1168
|
+
console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename}`)));
|
|
896
1169
|
pm.launchNode(k, outputFile);
|
|
897
1170
|
}
|
|
898
1171
|
});
|
|
@@ -903,13 +1176,12 @@ import(process.cwd() + "/" + process.argv[2]).then(async (module) => {
|
|
|
903
1176
|
);
|
|
904
1177
|
Object.entries(webEntryPoints).forEach(
|
|
905
1178
|
([k, outputFile]) => {
|
|
906
|
-
console.log("watching and running", outputFile);
|
|
907
1179
|
pm.launchWeb(k, outputFile);
|
|
908
1180
|
watch(outputFile, async (e, filename) => {
|
|
909
1181
|
const hash = await fileHash(outputFile);
|
|
910
|
-
console.log(`< ${e} ${filename} ${hash}`);
|
|
911
1182
|
if (fileHashes[k] !== hash) {
|
|
912
1183
|
fileHashes[k] = hash;
|
|
1184
|
+
console.log(ansiC2.green(ansiC2.inverse(`< ${e} ${filename}`)));
|
|
913
1185
|
pm.launchWeb(k, outputFile);
|
|
914
1186
|
}
|
|
915
1187
|
});
|