diff --git a/package-lock.json b/package-lock.json index 1dd4dfce..7496873e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "dependencies": { "@sentry/node": "^5.15.5", "@types/glob": "^7.1.1", - "@types/puppeteer": "^5.4.0", "argparse": "^1.0.10", "axe-core": "^4.1.1", "chokidar": "^3.4.2", @@ -18,6 +17,8 @@ "emailjs-imap-client": "^3.0.7", "emailjs-mime-parser": "^2.0.5", "errorstacks": "^1.1.5", + "esbuild": "^0.10.0", + "esbuild-register": "^2.3.0", "form-data": "^2.3.3", "glob": "^7.1.6", "he": "^1.2.0", @@ -51,7 +52,7 @@ "prettier": "^2.0.5", "puppeteer": "^8.0.0", "rimraf": "^3.0.2", - "ts-node": "^9.0.0", + "ts-node": "^9.1.1", "typedoc": "^0.17.4", "typescript": "^4.2.3" }, @@ -829,14 +830,6 @@ "@types/node": "*" } }, - "node_modules/@types/puppeteer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.0.tgz", - "integrity": "sha512-zTYDLjnHjgzokrwKt7N0rgn7oZPYo1J0m8Ghu+gXqzLCEn8RWbELa2uprE2UFJ0jU/Sk0x9jXXdOH/5QQLFHhQ==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/sharp": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.27.1.tgz", @@ -1702,6 +1695,12 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", @@ -2043,6 +2042,33 @@ "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-1.1.5.tgz", "integrity": "sha512-ANB+6I4d0oULE2lEEXOJNvH0mpZ5YhFUhzEhJRB2v+FJzmJYRFei2fHS755gsJ+F20exLVNS2ND9xvZ2oYGhvQ==" }, + "node_modules/esbuild": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.10.0.tgz", + "integrity": "sha512-g+/Fk18bP7GAx0eG2RTfvjbsdB6RSchvvrrokFX8UexrTtPo0ZF0R1KViUu5v0A4Uu8m3I7pZhEyZveiOk0/JA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + } + }, + "node_modules/esbuild-register": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-2.3.0.tgz", + "integrity": "sha512-uT3WXEQGAqzrI0SLy1Jz39BzIBiLWd5La9zFZ+FUSCPGqJbE+ZJHUTE8yHP1GVfyHKrrAFCZqLieaHkSprIRDQ==", + "dependencies": { + "esbuild": "^0.9.2", + "jsonc-parser": "^3.0.0" + } + }, + "node_modules/esbuild-register/node_modules/esbuild": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", + "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + } + }, "node_modules/escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -3651,6 +3677,11 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -5768,12 +5799,13 @@ } }, "node_modules/ts-node": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz", - "integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "dependencies": { "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "source-map-support": "^0.5.17", @@ -5787,6 +5819,9 @@ }, "engines": { "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, "node_modules/tslib": { @@ -7000,14 +7035,6 @@ "@types/node": "*" } }, - "@types/puppeteer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.0.tgz", - "integrity": "sha512-zTYDLjnHjgzokrwKt7N0rgn7oZPYo1J0m8Ghu+gXqzLCEn8RWbELa2uprE2UFJ0jU/Sk0x9jXXdOH/5QQLFHhQ==", - "requires": { - "@types/node": "*" - } - }, "@types/sharp": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.27.1.tgz", @@ -7732,6 +7759,12 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", @@ -8019,6 +8052,27 @@ "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-1.1.5.tgz", "integrity": "sha512-ANB+6I4d0oULE2lEEXOJNvH0mpZ5YhFUhzEhJRB2v+FJzmJYRFei2fHS755gsJ+F20exLVNS2ND9xvZ2oYGhvQ==" }, + "esbuild": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.10.0.tgz", + "integrity": "sha512-g+/Fk18bP7GAx0eG2RTfvjbsdB6RSchvvrrokFX8UexrTtPo0ZF0R1KViUu5v0A4Uu8m3I7pZhEyZveiOk0/JA==" + }, + "esbuild-register": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-2.3.0.tgz", + "integrity": "sha512-uT3WXEQGAqzrI0SLy1Jz39BzIBiLWd5La9zFZ+FUSCPGqJbE+ZJHUTE8yHP1GVfyHKrrAFCZqLieaHkSprIRDQ==", + "requires": { + "esbuild": "^0.9.2", + "jsonc-parser": "^3.0.0" + }, + "dependencies": { + "esbuild": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", + "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==" + } + } + }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -9294,6 +9348,11 @@ "minimist": "^1.2.5" } }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -11027,12 +11086,13 @@ } }, "ts-node": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz", - "integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "requires": { "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "source-map-support": "^0.5.17", diff --git a/package.json b/package.json index 01831e7a..f37c45aa 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,6 @@ "dependencies": { "@sentry/node": "^5.15.5", "@types/glob": "^7.1.1", - "@types/puppeteer": "^5.4.0", "argparse": "^1.0.10", "axe-core": "^4.1.1", "chokidar": "^3.4.2", @@ -104,6 +103,8 @@ "emailjs-imap-client": "^3.0.7", "emailjs-mime-parser": "^2.0.5", "errorstacks": "^1.1.5", + "esbuild": "^0.10.0", + "esbuild-register": "^2.3.0", "form-data": "^2.3.3", "glob": "^7.1.6", "he": "^1.2.0", @@ -134,7 +135,7 @@ "prettier": "^2.0.5", "puppeteer": "^8.0.0", "rimraf": "^3.0.2", - "ts-node": "^9.0.0", + "ts-node": "^9.1.1", "typedoc": "^0.17.4", "typescript": "^4.2.3" }, diff --git a/src/index.js b/src/index.js index cea8d92c..e3cea4bd 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,10 @@ +const {register} = require('esbuild-register/dist/node'); +register({ + sourcemap: true, + minify: false, + keepNames: false, +}); + const {main} = require('./main'); module.exports = { diff --git a/tests/selftest_strange_exceptions.js b/tests/selftest_strange_exceptions.js index 19aa1ae3..8481d452 100644 --- a/tests/selftest_strange_exceptions.js +++ b/tests/selftest_strange_exceptions.js @@ -72,7 +72,7 @@ async function run() { assert(output.some(line => line.includes('Non-error object thrown by throw_promise: [object Promise]'))); assert(output.some(line => line.includes('Non-error object thrown by throw_array: ["test"]'))); assert(output.some(line => line.includes('Non-error object thrown by throw_object: [object Object]'))); - assert(output.some(line => line.includes('Non-error object thrown by throw_class: class Strange { }'))); + assert(output.some(line => line.includes('Non-error object thrown by throw_class: class Strange {'))); // Not crashing is sufficient for us const results = render.craftResults(runnerConfig, testInfo); diff --git a/tests/selftest_ts_node.js b/tests/selftest_ts_node.js index c47d246f..b8120dda 100644 --- a/tests/selftest_ts_node.js +++ b/tests/selftest_ts_node.js @@ -3,7 +3,7 @@ const path = require('path'); const child_process = require('child_process'); async function run() { - const script = path.join(__dirname, '..', 'bin', 'cli.js'); + const script = path.join(__dirname, 'ts_node', 'run'); const {stderr} = await new Promise((resolve, reject) => { child_process.execFile( process.execPath, diff --git a/tests/ts_node/run b/tests/ts_node/run index e7d164bf..012e4f15 100644 --- a/tests/ts_node/run +++ b/tests/ts_node/run @@ -4,4 +4,5 @@ const pentf = require('../../src/index.js'); pentf.main({ rootDir: __dirname, -}); + testsGlob: '*.ts' +}); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 7122f428..5b48b2a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "module": "CommonJS", + "moduleResolution": "Node", "allowJs": true, "alwaysStrict": true, "strict": true,