diff --git a/.eslintrc.js b/.eslintrc.js index bede807d6..a91edb2c8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -160,15 +160,6 @@ module.exports = { "arrow-body-style": "off", "arrow-parens": ["off", "always"], "brace-style": ["error", "1tbs"], - "comma-dangle": [ - "error", - { - objects: "always-multiline", - arrays: "always-multiline", - functions: "always-multiline", - imports: "always-multiline", - }, - ], complexity: "off", "constructor-super": "error", curly: "error", diff --git a/.pnp.cjs b/.pnp.cjs index aeef3eb4c..63faf7f59 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -1333,13 +1333,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/aix-ppc64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-aix-ppc64-npm-0.20.1-0f9200f176/node_modules/@esbuild/aix-ppc64/",\ - "packageDependencies": [\ - ["@esbuild/aix-ppc64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/android-arm", [\ @@ -1349,13 +1342,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/android-arm", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.20.1-51d1b06153/node_modules/@esbuild/android-arm/",\ - "packageDependencies": [\ - ["@esbuild/android-arm", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/android-arm64", [\ @@ -1365,13 +1351,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/android-arm64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.20.1-1331d82fda/node_modules/@esbuild/android-arm64/",\ - "packageDependencies": [\ - ["@esbuild/android-arm64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/android-x64", [\ @@ -1381,13 +1360,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/android-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.20.1-e0422f3d10/node_modules/@esbuild/android-x64/",\ - "packageDependencies": [\ - ["@esbuild/android-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/darwin-arm64", [\ @@ -1397,13 +1369,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/darwin-arm64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.20.1-1d16c4f10e/node_modules/@esbuild/darwin-arm64/",\ - "packageDependencies": [\ - ["@esbuild/darwin-arm64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/darwin-x64", [\ @@ -1413,13 +1378,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/darwin-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.20.1-7135a01d6c/node_modules/@esbuild/darwin-x64/",\ - "packageDependencies": [\ - ["@esbuild/darwin-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/freebsd-arm64", [\ @@ -1429,13 +1387,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/freebsd-arm64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.20.1-f427811aef/node_modules/@esbuild/freebsd-arm64/",\ - "packageDependencies": [\ - ["@esbuild/freebsd-arm64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/freebsd-x64", [\ @@ -1445,13 +1396,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/freebsd-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.20.1-50b716ab88/node_modules/@esbuild/freebsd-x64/",\ - "packageDependencies": [\ - ["@esbuild/freebsd-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-arm", [\ @@ -1461,13 +1405,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-arm", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.20.1-89013f79a3/node_modules/@esbuild/linux-arm/",\ - "packageDependencies": [\ - ["@esbuild/linux-arm", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-arm64", [\ @@ -1477,13 +1414,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-arm64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.20.1-615c987043/node_modules/@esbuild/linux-arm64/",\ - "packageDependencies": [\ - ["@esbuild/linux-arm64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-ia32", [\ @@ -1493,13 +1423,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-ia32", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.20.1-ba94f9090c/node_modules/@esbuild/linux-ia32/",\ - "packageDependencies": [\ - ["@esbuild/linux-ia32", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-loong64", [\ @@ -1509,13 +1432,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-loong64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.20.1-a9ab379ce1/node_modules/@esbuild/linux-loong64/",\ - "packageDependencies": [\ - ["@esbuild/linux-loong64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-mips64el", [\ @@ -1525,13 +1441,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-mips64el", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.20.1-6e555de130/node_modules/@esbuild/linux-mips64el/",\ - "packageDependencies": [\ - ["@esbuild/linux-mips64el", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-ppc64", [\ @@ -1541,13 +1450,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-ppc64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.20.1-a86fff9f4f/node_modules/@esbuild/linux-ppc64/",\ - "packageDependencies": [\ - ["@esbuild/linux-ppc64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-riscv64", [\ @@ -1557,13 +1459,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-riscv64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.20.1-f6823c7bc2/node_modules/@esbuild/linux-riscv64/",\ - "packageDependencies": [\ - ["@esbuild/linux-riscv64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-s390x", [\ @@ -1573,13 +1468,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-s390x", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.20.1-e1706f9fd6/node_modules/@esbuild/linux-s390x/",\ - "packageDependencies": [\ - ["@esbuild/linux-s390x", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-x64", [\ @@ -1589,13 +1477,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/linux-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.20.1-48b4c8c6b5/node_modules/@esbuild/linux-x64/",\ - "packageDependencies": [\ - ["@esbuild/linux-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/netbsd-x64", [\ @@ -1605,13 +1486,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/netbsd-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.20.1-2fea356272/node_modules/@esbuild/netbsd-x64/",\ - "packageDependencies": [\ - ["@esbuild/netbsd-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/openbsd-x64", [\ @@ -1621,13 +1495,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/openbsd-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.20.1-f077f53fa5/node_modules/@esbuild/openbsd-x64/",\ - "packageDependencies": [\ - ["@esbuild/openbsd-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/sunos-x64", [\ @@ -1637,13 +1504,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/sunos-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.20.1-10dbaf390e/node_modules/@esbuild/sunos-x64/",\ - "packageDependencies": [\ - ["@esbuild/sunos-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-arm64", [\ @@ -1653,13 +1513,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/win32-arm64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.20.1-ca0d763d82/node_modules/@esbuild/win32-arm64/",\ - "packageDependencies": [\ - ["@esbuild/win32-arm64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-ia32", [\ @@ -1669,13 +1522,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/win32-ia32", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.20.1-239b7a0453/node_modules/@esbuild/win32-ia32/",\ - "packageDependencies": [\ - ["@esbuild/win32-ia32", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-x64", [\ @@ -1685,13 +1531,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/win32-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.20.1-d1183f5277/node_modules/@esbuild/win32-x64/",\ - "packageDependencies": [\ - ["@esbuild/win32-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@eslint-community/eslint-utils", [\ @@ -2481,6 +2320,119 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@rollup/plugin-commonjs", [\ + ["npm:25.0.7", {\ + "packageLocation": "./.yarn/cache/@rollup-plugin-commonjs-npm-25.0.7-f5b19139ea-052e11839a.zip/node_modules/@rollup/plugin-commonjs/",\ + "packageDependencies": [\ + ["@rollup/plugin-commonjs", "npm:25.0.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:25.0.7", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-commonjs-virtual-3e67de48fa/0/cache/@rollup-plugin-commonjs-npm-25.0.7-f5b19139ea-052e11839a.zip/node_modules/@rollup/plugin-commonjs/",\ + "packageDependencies": [\ + ["@rollup/plugin-commonjs", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:25.0.7"],\ + ["@rollup/pluginutils", "virtual:3e67de48faf9dd77804e49e4c530179bb52bbeb976fef3d3ef69b0dda8f67dd11e8c6535834337225432ad00e4f61dd45296e4b5eef5f3d4355de97ec20a359d#npm:5.1.0"],\ + ["@types/rollup", null],\ + ["commondir", "npm:1.0.1"],\ + ["estree-walker", "npm:2.0.2"],\ + ["glob", "npm:8.1.0"],\ + ["is-reference", "npm:1.2.1"],\ + ["magic-string", "npm:0.30.8"],\ + ["rollup", "npm:4.13.0"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/plugin-node-resolve", [\ + ["npm:15.2.3", {\ + "packageLocation": "./.yarn/cache/@rollup-plugin-node-resolve-npm-15.2.3-f49fe9c656-730f32c2f8.zip/node_modules/@rollup/plugin-node-resolve/",\ + "packageDependencies": [\ + ["@rollup/plugin-node-resolve", "npm:15.2.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:15.2.3", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-node-resolve-virtual-df2cb905ab/0/cache/@rollup-plugin-node-resolve-npm-15.2.3-f49fe9c656-730f32c2f8.zip/node_modules/@rollup/plugin-node-resolve/",\ + "packageDependencies": [\ + ["@rollup/plugin-node-resolve", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:15.2.3"],\ + ["@rollup/pluginutils", "virtual:3e67de48faf9dd77804e49e4c530179bb52bbeb976fef3d3ef69b0dda8f67dd11e8c6535834337225432ad00e4f61dd45296e4b5eef5f3d4355de97ec20a359d#npm:5.1.0"],\ + ["@types/resolve", "npm:1.20.2"],\ + ["@types/rollup", null],\ + ["deepmerge", "npm:4.3.1"],\ + ["is-builtin-module", "npm:3.2.1"],\ + ["is-module", "npm:1.0.0"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d"],\ + ["rollup", "npm:4.13.0"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/plugin-typescript", [\ + ["npm:11.1.6", {\ + "packageLocation": "./.yarn/cache/@rollup-plugin-typescript-npm-11.1.6-aeaa3525fc-3f5b981f4d.zip/node_modules/@rollup/plugin-typescript/",\ + "packageDependencies": [\ + ["@rollup/plugin-typescript", "npm:11.1.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:11.1.6", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-plugin-typescript-virtual-a60c028f2b/0/cache/@rollup-plugin-typescript-npm-11.1.6-aeaa3525fc-3f5b981f4d.zip/node_modules/@rollup/plugin-typescript/",\ + "packageDependencies": [\ + ["@rollup/plugin-typescript", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:11.1.6"],\ + ["@rollup/pluginutils", "virtual:3e67de48faf9dd77804e49e4c530179bb52bbeb976fef3d3ef69b0dda8f67dd11e8c6535834337225432ad00e4f61dd45296e4b5eef5f3d4355de97ec20a359d#npm:5.1.0"],\ + ["@types/rollup", null],\ + ["@types/tslib", null],\ + ["@types/typescript", null],\ + ["resolve", "patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d"],\ + ["rollup", "npm:4.13.0"],\ + ["tslib", "npm:2.6.2"],\ + ["typescript", "patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=e012d7"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "@types/tslib",\ + "@types/typescript",\ + "rollup",\ + "tslib",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/pluginutils", [\ + ["npm:5.1.0", {\ + "packageLocation": "./.yarn/cache/@rollup-pluginutils-npm-5.1.0-6939820ef8-3cc5a6d914.zip/node_modules/@rollup/pluginutils/",\ + "packageDependencies": [\ + ["@rollup/pluginutils", "npm:5.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:3e67de48faf9dd77804e49e4c530179bb52bbeb976fef3d3ef69b0dda8f67dd11e8c6535834337225432ad00e4f61dd45296e4b5eef5f3d4355de97ec20a359d#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-pluginutils-virtual-07e951d3c0/0/cache/@rollup-pluginutils-npm-5.1.0-6939820ef8-3cc5a6d914.zip/node_modules/@rollup/pluginutils/",\ + "packageDependencies": [\ + ["@rollup/pluginutils", "virtual:3e67de48faf9dd77804e49e4c530179bb52bbeb976fef3d3ef69b0dda8f67dd11e8c6535834337225432ad00e4f61dd45296e4b5eef5f3d4355de97ec20a359d#npm:5.1.0"],\ + ["@types/estree", "npm:1.0.5"],\ + ["@types/rollup", null],\ + ["estree-walker", "npm:2.0.2"],\ + ["picomatch", "npm:2.3.1"],\ + ["rollup", "npm:4.13.0"]\ + ],\ + "packagePeers": [\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@rollup/rollup-android-arm-eabi", [\ ["npm:4.12.0", {\ "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.12.0-e216111d4f/node_modules/@rollup/rollup-android-arm-eabi/",\ @@ -2488,6 +2440,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-android-arm-eabi", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.13.0-defc2ed224/node_modules/@rollup/rollup-android-arm-eabi/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-android-arm64", [\ @@ -2497,6 +2456,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-android-arm64", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm64-npm-4.13.0-d861c3dd57/node_modules/@rollup/rollup-android-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm64", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-darwin-arm64", [\ @@ -2506,6 +2472,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-darwin-arm64", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-arm64-npm-4.13.0-31260831e3/node_modules/@rollup/rollup-darwin-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-arm64", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-darwin-x64", [\ @@ -2515,6 +2488,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-darwin-x64", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-x64-npm-4.13.0-5d3d8d0a6f/node_modules/@rollup/rollup-darwin-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-x64", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-arm-gnueabihf", [\ @@ -2524,6 +2504,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-gnueabihf-npm-4.13.0-50fa293dbc/node_modules/@rollup/rollup-linux-arm-gnueabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-arm64-gnu", [\ @@ -2533,6 +2520,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-arm64-gnu", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-gnu-npm-4.13.0-3f49f23698/node_modules/@rollup/rollup-linux-arm64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-arm64-musl", [\ @@ -2542,6 +2536,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-arm64-musl", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-musl-npm-4.13.0-8b79e93ea4/node_modules/@rollup/rollup-linux-arm64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-riscv64-gnu", [\ @@ -2551,6 +2552,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-riscv64-gnu", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-gnu-npm-4.13.0-c91100fc28/node_modules/@rollup/rollup-linux-riscv64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-x64-gnu", [\ @@ -2560,6 +2568,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-x64-gnu", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-gnu-npm-4.13.0-834923f1a9/node_modules/@rollup/rollup-linux-x64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-linux-x64-musl", [\ @@ -2569,6 +2584,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-linux-x64-musl", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-musl-npm-4.13.0-725a5f475a/node_modules/@rollup/rollup-linux-x64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-musl", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-win32-arm64-msvc", [\ @@ -2578,6 +2600,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-win32-arm64-msvc", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-arm64-msvc-npm-4.13.0-da036647ec/node_modules/@rollup/rollup-win32-arm64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-win32-ia32-msvc", [\ @@ -2587,6 +2616,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-win32-ia32-msvc", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-ia32-msvc-npm-4.13.0-fc1031132d/node_modules/@rollup/rollup-win32-ia32-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@rollup/rollup-win32-x64-msvc", [\ @@ -2596,6 +2632,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@rollup/rollup-win32-x64-msvc", "npm:4.12.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-msvc-npm-4.13.0-d52da037fd/node_modules/@rollup/rollup-win32-x64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.13.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@sideway/address", [\ @@ -3159,6 +3202,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@types/md5", [\ + ["npm:2.3.5", {\ + "packageLocation": "./.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-a86baf0521.zip/node_modules/@types/md5/",\ + "packageDependencies": [\ + ["@types/md5", "npm:2.3.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/minimatch", [\ ["npm:5.1.2", {\ "packageLocation": "./.yarn/cache/@types-minimatch-npm-5.1.2-aab9c394d3-0391a28286.zip/node_modules/@types/minimatch/",\ @@ -3249,6 +3301,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@types/resolve", [\ + ["npm:1.20.2", {\ + "packageLocation": "./.yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-61c2cad249.zip/node_modules/@types/resolve/",\ + "packageDependencies": [\ + ["@types/resolve", "npm:1.20.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/responselike", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/@types-responselike-npm-1.0.3-de0150f03d-6ac4b35723.zip/node_modules/@types/responselike/",\ @@ -4237,6 +4298,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["allure-cypress", "workspace:packages/allure-cypress"],\ ["@jest/globals", "npm:29.7.0"],\ + ["@rollup/plugin-commonjs", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:25.0.7"],\ + ["@rollup/plugin-node-resolve", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:15.2.3"],\ + ["@rollup/plugin-typescript", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:11.1.6"],\ ["@types/eslint", "npm:8.56.3"],\ ["@types/glob", "npm:8.1.0"],\ ["@types/jest", "npm:29.5.12"],\ @@ -4248,7 +4312,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["allure-js-commons", "workspace:packages/allure-js-commons"],\ ["cypress", "npm:13.6.6"],\ ["enquirer", "npm:2.4.1"],\ - ["esbuild", "npm:0.20.1"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-prettier", "virtual:a59b12f7fe7bf3b80fc61d73eaaa33af60483f6ce31789d384fbe8ef169791f667d2559ec5f2fbae1a273a658ce021f1f5f1ea0718c56f81b30ad4e95a5668dd#npm:9.1.0"],\ ["eslint-plugin-cypress", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:2.15.1"],\ @@ -4258,9 +4321,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-plugin-prefer-arrow", "virtual:a59b12f7fe7bf3b80fc61d73eaaa33af60483f6ce31789d384fbe8ef169791f667d2559ec5f2fbae1a273a658ce021f1f5f1ea0718c56f81b30ad4e95a5668dd#npm:1.2.3"],\ ["glob", "npm:10.3.10"],\ ["jest", "virtual:f22a73b9c1f4f0e2e1c95f149ccb41c96491085e4b2ecd3061e554432306c4df6c2976f3c6ce3a6d62abead3ccc6cf04e88b4aebf1de7356583819351e2346e2#npm:29.7.0"],\ + ["npm-run-all", "npm:4.1.5"],\ ["rimraf", "npm:5.0.5"],\ + ["rollup", "npm:4.13.0"],\ ["ts-jest", "virtual:98c60b7d3b6c5117c4513c6cb8006cab39e0411be8ffe9bb791d9b6d0a1566b28587d5455e7567553092cbdbab928cfaf2a758f8f25f0e31ddedfee569ca964b#npm:29.1.2"],\ ["ts-node", "virtual:3c6c31eedba60f6d4a0031098f0272720e7414162569ae8f58388d36f8e79683154a59f38a8e5aece9f0d5e45421fab86d5311a37a1c1aec338de3c79151496a#npm:10.9.2"],\ + ["tslib", "npm:2.6.2"],\ ["typescript", "patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=e012d7"]\ ],\ "linkType": "SOFT"\ @@ -4407,6 +4473,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["allure-js-commons", "workspace:packages/allure-js-commons"],\ ["@types/chai", "npm:4.3.12"],\ ["@types/eslint", "npm:8.56.3"],\ + ["@types/md5", "npm:2.3.5"],\ ["@types/mocha", "npm:10.0.6"],\ ["@types/node", "npm:20.11.20"],\ ["@types/sinon", "npm:17.0.3"],\ @@ -4423,14 +4490,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-plugin-prefer-arrow", "virtual:a59b12f7fe7bf3b80fc61d73eaaa33af60483f6ce31789d384fbe8ef169791f667d2559ec5f2fbae1a273a658ce021f1f5f1ea0718c56f81b30ad4e95a5668dd#npm:1.2.3"],\ ["expect", "npm:29.7.0"],\ ["glob", "npm:10.3.10"],\ + ["md5", "npm:2.3.0"],\ ["mocha", "npm:10.3.0"],\ ["mocha-multi-reporters", "virtual:3c6c31eedba60f6d4a0031098f0272720e7414162569ae8f58388d36f8e79683154a59f38a8e5aece9f0d5e45421fab86d5311a37a1c1aec338de3c79151496a#npm:1.5.1"],\ + ["npm-run-all", "npm:4.1.5"],\ ["properties", "npm:1.2.1"],\ ["rimraf", "npm:5.0.5"],\ ["sinon", "npm:17.0.1"],\ ["source-map-support", "npm:0.5.21"],\ ["strip-ansi", "npm:5.2.0"],\ ["ts-node", "virtual:3c6c31eedba60f6d4a0031098f0272720e7414162569ae8f58388d36f8e79683154a59f38a8e5aece9f0d5e45421fab86d5311a37a1c1aec338de3c79151496a#npm:10.9.2"],\ + ["tslib", "npm:2.6.2"],\ ["typescript", "patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=e012d7"]\ ],\ "linkType": "SOFT"\ @@ -6280,6 +6350,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["charenc", [\ + ["npm:0.0.2", {\ + "packageLocation": "./.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip/node_modules/charenc/",\ + "packageDependencies": [\ + ["charenc", "npm:0.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["charset", [\ ["npm:1.0.1", {\ "packageLocation": "./.yarn/cache/charset-npm-1.0.1-56ffb0a667-adf747e7bc.zip/node_modules/charset/",\ @@ -6986,6 +7065,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["commondir", [\ + ["npm:1.0.1", {\ + "packageLocation": "./.yarn/cache/commondir-npm-1.0.1-291b790340-59715f2fc4.zip/node_modules/commondir/",\ + "packageDependencies": [\ + ["commondir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["compare-versions", [\ ["npm:6.1.0", {\ "packageLocation": "./.yarn/cache/compare-versions-npm-6.1.0-43f6eabab2-d4e2a45706.zip/node_modules/compare-versions/",\ @@ -7259,6 +7347,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["crypt", [\ + ["npm:0.0.2", {\ + "packageLocation": "./.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip/node_modules/crypt/",\ + "packageDependencies": [\ + ["crypt", "npm:0.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["crypto-browserify", [\ ["npm:3.12.0", {\ "packageLocation": "./.yarn/cache/crypto-browserify-npm-3.12.0-bed454fef0-c1609af826.zip/node_modules/crypto-browserify/",\ @@ -8534,36 +8631,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@esbuild/win32-x64", "npm:0.19.12"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:0.20.1", {\ - "packageLocation": "./.yarn/unplugged/esbuild-npm-0.20.1-f43262ea09/node_modules/esbuild/",\ - "packageDependencies": [\ - ["esbuild", "npm:0.20.1"],\ - ["@esbuild/aix-ppc64", "npm:0.20.1"],\ - ["@esbuild/android-arm", "npm:0.20.1"],\ - ["@esbuild/android-arm64", "npm:0.20.1"],\ - ["@esbuild/android-x64", "npm:0.20.1"],\ - ["@esbuild/darwin-arm64", "npm:0.20.1"],\ - ["@esbuild/darwin-x64", "npm:0.20.1"],\ - ["@esbuild/freebsd-arm64", "npm:0.20.1"],\ - ["@esbuild/freebsd-x64", "npm:0.20.1"],\ - ["@esbuild/linux-arm", "npm:0.20.1"],\ - ["@esbuild/linux-arm64", "npm:0.20.1"],\ - ["@esbuild/linux-ia32", "npm:0.20.1"],\ - ["@esbuild/linux-loong64", "npm:0.20.1"],\ - ["@esbuild/linux-mips64el", "npm:0.20.1"],\ - ["@esbuild/linux-ppc64", "npm:0.20.1"],\ - ["@esbuild/linux-riscv64", "npm:0.20.1"],\ - ["@esbuild/linux-s390x", "npm:0.20.1"],\ - ["@esbuild/linux-x64", "npm:0.20.1"],\ - ["@esbuild/netbsd-x64", "npm:0.20.1"],\ - ["@esbuild/openbsd-x64", "npm:0.20.1"],\ - ["@esbuild/sunos-x64", "npm:0.20.1"],\ - ["@esbuild/win32-arm64", "npm:0.20.1"],\ - ["@esbuild/win32-ia32", "npm:0.20.1"],\ - ["@esbuild/win32-x64", "npm:0.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["escalade", [\ @@ -8962,6 +9029,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["estree-walker", [\ + ["npm:2.0.2", {\ + "packageLocation": "./.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-6151e6f982.zip/node_modules/estree-walker/",\ + "packageDependencies": [\ + ["estree-walker", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:3.0.3", {\ "packageLocation": "./.yarn/cache/estree-walker-npm-3.0.3-0372979673-a65728d572.zip/node_modules/estree-walker/",\ "packageDependencies": [\ @@ -11407,6 +11481,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["is-module", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/is-module-npm-1.0.0-79ba918283-8cd5390730.zip/node_modules/is-module/",\ + "packageDependencies": [\ + ["is-module", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-negative-zero", [\ ["npm:2.0.3", {\ "packageLocation": "./.yarn/cache/is-negative-zero-npm-2.0.3-d06b09e322-c1e6b23d20.zip/node_modules/is-negative-zero/",\ @@ -11478,6 +11561,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["is-reference", [\ + ["npm:1.2.1", {\ + "packageLocation": "./.yarn/cache/is-reference-npm-1.2.1-87ca1743c8-e7b48149f8.zip/node_modules/is-reference/",\ + "packageDependencies": [\ + ["is-reference", "npm:1.2.1"],\ + ["@types/estree", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-regex", [\ ["npm:1.1.4", {\ "packageLocation": "./.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip/node_modules/is-regex/",\ @@ -13378,6 +13471,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@jridgewell/sourcemap-codec", "npm:1.4.15"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:0.30.8", {\ + "packageLocation": "./.yarn/cache/magic-string-npm-0.30.8-0378572eee-79922f4500.zip/node_modules/magic-string/",\ + "packageDependencies": [\ + ["magic-string", "npm:0.30.8"],\ + ["@jridgewell/sourcemap-codec", "npm:1.4.15"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["make-dir", [\ @@ -13448,6 +13549,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["md5", [\ + ["npm:2.3.0", {\ + "packageLocation": "./.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip/node_modules/md5/",\ + "packageDependencies": [\ + ["md5", "npm:2.3.0"],\ + ["charenc", "npm:0.0.2"],\ + ["crypt", "npm:0.0.2"],\ + ["is-buffer", "npm:1.1.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["md5.js", [\ ["npm:1.3.5", {\ "packageLocation": "./.yarn/cache/md5.js-npm-1.3.5-130901125a-098494d885.zip/node_modules/md5.js/",\ @@ -16648,6 +16761,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["fsevents", "patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.13.0", {\ + "packageLocation": "./.yarn/cache/rollup-npm-4.13.0-6c6a010f12-c2c35bee0a.zip/node_modules/rollup/",\ + "packageDependencies": [\ + ["rollup", "npm:4.13.0"],\ + ["@rollup/rollup-android-arm-eabi", "npm:4.13.0"],\ + ["@rollup/rollup-android-arm64", "npm:4.13.0"],\ + ["@rollup/rollup-darwin-arm64", "npm:4.13.0"],\ + ["@rollup/rollup-darwin-x64", "npm:4.13.0"],\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.13.0"],\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.13.0"],\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.13.0"],\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.13.0"],\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.13.0"],\ + ["@rollup/rollup-linux-x64-musl", "npm:4.13.0"],\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.13.0"],\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.13.0"],\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.13.0"],\ + ["@types/estree", "npm:1.0.5"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["run-async", [\ @@ -18412,7 +18547,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/typescript", null],\ ["babel-jest", null],\ ["bs-logger", "npm:0.2.6"],\ - ["esbuild", "npm:0.20.1"],\ + ["esbuild", null],\ ["fast-json-stable-stringify", "npm:2.1.0"],\ ["jest", "virtual:f22a73b9c1f4f0e2e1c95f149ccb41c96491085e4b2ecd3061e554432306c4df6c2976f3c6ce3a6d62abead3ccc6cf04e88b4aebf1de7356583819351e2346e2#npm:29.7.0"],\ ["jest-util", "npm:29.7.0"],\ diff --git a/.yarn/cache/@esbuild-darwin-arm64-npm-0.20.1-1d16c4f10e-8.zip b/.yarn/cache/@esbuild-darwin-arm64-npm-0.20.1-1d16c4f10e-8.zip deleted file mode 100644 index 25ad361c8..000000000 Binary files a/.yarn/cache/@esbuild-darwin-arm64-npm-0.20.1-1d16c4f10e-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-darwin-x64-npm-0.20.1-7135a01d6c-8.zip b/.yarn/cache/@esbuild-darwin-x64-npm-0.20.1-7135a01d6c-8.zip deleted file mode 100644 index b87bb5be5..000000000 Binary files a/.yarn/cache/@esbuild-darwin-x64-npm-0.20.1-7135a01d6c-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-linux-arm64-npm-0.20.1-615c987043-8.zip b/.yarn/cache/@esbuild-linux-arm64-npm-0.20.1-615c987043-8.zip deleted file mode 100644 index c3e618746..000000000 Binary files a/.yarn/cache/@esbuild-linux-arm64-npm-0.20.1-615c987043-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-linux-x64-npm-0.20.1-48b4c8c6b5-8.zip b/.yarn/cache/@esbuild-linux-x64-npm-0.20.1-48b4c8c6b5-8.zip deleted file mode 100644 index a3306d2c2..000000000 Binary files a/.yarn/cache/@esbuild-linux-x64-npm-0.20.1-48b4c8c6b5-8.zip and /dev/null differ diff --git a/.yarn/cache/@rollup-plugin-commonjs-npm-25.0.7-f5b19139ea-052e11839a.zip b/.yarn/cache/@rollup-plugin-commonjs-npm-25.0.7-f5b19139ea-052e11839a.zip new file mode 100644 index 000000000..19edfc7ee Binary files /dev/null and b/.yarn/cache/@rollup-plugin-commonjs-npm-25.0.7-f5b19139ea-052e11839a.zip differ diff --git a/.yarn/cache/@rollup-plugin-node-resolve-npm-15.2.3-f49fe9c656-730f32c2f8.zip b/.yarn/cache/@rollup-plugin-node-resolve-npm-15.2.3-f49fe9c656-730f32c2f8.zip new file mode 100644 index 000000000..eeccf3909 Binary files /dev/null and b/.yarn/cache/@rollup-plugin-node-resolve-npm-15.2.3-f49fe9c656-730f32c2f8.zip differ diff --git a/.yarn/cache/@rollup-plugin-typescript-npm-11.1.6-aeaa3525fc-3f5b981f4d.zip b/.yarn/cache/@rollup-plugin-typescript-npm-11.1.6-aeaa3525fc-3f5b981f4d.zip new file mode 100644 index 000000000..198065e79 Binary files /dev/null and b/.yarn/cache/@rollup-plugin-typescript-npm-11.1.6-aeaa3525fc-3f5b981f4d.zip differ diff --git a/.yarn/cache/@rollup-pluginutils-npm-5.1.0-6939820ef8-3cc5a6d914.zip b/.yarn/cache/@rollup-pluginutils-npm-5.1.0-6939820ef8-3cc5a6d914.zip new file mode 100644 index 000000000..923a7a91a Binary files /dev/null and b/.yarn/cache/@rollup-pluginutils-npm-5.1.0-6939820ef8-3cc5a6d914.zip differ diff --git a/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.13.0-31260831e3-8.zip b/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.13.0-31260831e3-8.zip new file mode 100644 index 000000000..4703b76f6 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-darwin-arm64-npm-4.13.0-31260831e3-8.zip differ diff --git a/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.13.0-5d3d8d0a6f-8.zip b/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.13.0-5d3d8d0a6f-8.zip new file mode 100644 index 000000000..97da52506 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-darwin-x64-npm-4.13.0-5d3d8d0a6f-8.zip differ diff --git a/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.13.0-3f49f23698-8.zip b/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.13.0-3f49f23698-8.zip new file mode 100644 index 000000000..2f1dd1850 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-arm64-gnu-npm-4.13.0-3f49f23698-8.zip differ diff --git a/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.13.0-8b79e93ea4-8.zip b/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.13.0-8b79e93ea4-8.zip new file mode 100644 index 000000000..c22ca2c40 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-arm64-musl-npm-4.13.0-8b79e93ea4-8.zip differ diff --git a/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.13.0-834923f1a9-8.zip b/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.13.0-834923f1a9-8.zip new file mode 100644 index 000000000..4a1e1d8e3 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-x64-gnu-npm-4.13.0-834923f1a9-8.zip differ diff --git a/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.13.0-725a5f475a-8.zip b/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.13.0-725a5f475a-8.zip new file mode 100644 index 000000000..631d432b3 Binary files /dev/null and b/.yarn/cache/@rollup-rollup-linux-x64-musl-npm-4.13.0-725a5f475a-8.zip differ diff --git a/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-a86baf0521.zip b/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-a86baf0521.zip new file mode 100644 index 000000000..bb83c3d13 Binary files /dev/null and b/.yarn/cache/@types-md5-npm-2.3.5-bd5c825c57-a86baf0521.zip differ diff --git a/.yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-61c2cad249.zip b/.yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-61c2cad249.zip new file mode 100644 index 000000000..53007f778 Binary files /dev/null and b/.yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-61c2cad249.zip differ diff --git a/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip b/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip new file mode 100644 index 000000000..a63e2ac86 Binary files /dev/null and b/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip differ diff --git a/.yarn/cache/commondir-npm-1.0.1-291b790340-59715f2fc4.zip b/.yarn/cache/commondir-npm-1.0.1-291b790340-59715f2fc4.zip new file mode 100644 index 000000000..b2b081748 Binary files /dev/null and b/.yarn/cache/commondir-npm-1.0.1-291b790340-59715f2fc4.zip differ diff --git a/.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip b/.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip new file mode 100644 index 000000000..471817872 Binary files /dev/null and b/.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip differ diff --git a/.yarn/cache/esbuild-npm-0.20.1-f43262ea09-af8b3c79e4.zip b/.yarn/cache/esbuild-npm-0.20.1-f43262ea09-af8b3c79e4.zip deleted file mode 100644 index eb2217362..000000000 Binary files a/.yarn/cache/esbuild-npm-0.20.1-f43262ea09-af8b3c79e4.zip and /dev/null differ diff --git a/.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-6151e6f982.zip b/.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-6151e6f982.zip new file mode 100644 index 000000000..71b90a2f2 Binary files /dev/null and b/.yarn/cache/estree-walker-npm-2.0.2-dfab42f65c-6151e6f982.zip differ diff --git a/.yarn/cache/is-module-npm-1.0.0-79ba918283-8cd5390730.zip b/.yarn/cache/is-module-npm-1.0.0-79ba918283-8cd5390730.zip new file mode 100644 index 000000000..891dd7528 Binary files /dev/null and b/.yarn/cache/is-module-npm-1.0.0-79ba918283-8cd5390730.zip differ diff --git a/.yarn/cache/is-reference-npm-1.2.1-87ca1743c8-e7b48149f8.zip b/.yarn/cache/is-reference-npm-1.2.1-87ca1743c8-e7b48149f8.zip new file mode 100644 index 000000000..bae17ee68 Binary files /dev/null and b/.yarn/cache/is-reference-npm-1.2.1-87ca1743c8-e7b48149f8.zip differ diff --git a/.yarn/cache/magic-string-npm-0.30.8-0378572eee-79922f4500.zip b/.yarn/cache/magic-string-npm-0.30.8-0378572eee-79922f4500.zip new file mode 100644 index 000000000..43eabcfef Binary files /dev/null and b/.yarn/cache/magic-string-npm-0.30.8-0378572eee-79922f4500.zip differ diff --git a/.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip b/.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip new file mode 100644 index 000000000..fa1459f1c Binary files /dev/null and b/.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip differ diff --git a/.yarn/cache/rollup-npm-4.13.0-6c6a010f12-c2c35bee0a.zip b/.yarn/cache/rollup-npm-4.13.0-6c6a010f12-c2c35bee0a.zip new file mode 100644 index 000000000..e0ff26515 Binary files /dev/null and b/.yarn/cache/rollup-npm-4.13.0-6c6a010f12-c2c35bee0a.zip differ diff --git a/.yarn/versions/134fbc35.yml b/.yarn/versions/134fbc35.yml new file mode 100644 index 000000000..d1d3376af --- /dev/null +++ b/.yarn/versions/134fbc35.yml @@ -0,0 +1,13 @@ +undecided: + - allure-js + - allure-codeceptjs + - allure-cucumberjs + - allure-cypress + - allure-decorators + - allure-jasmine + - allure-jest + - allure-js-commons + - allure-mocha + - allure-playwright + - allure-vitest + - hermione-allure diff --git a/README.md b/README.md index 873b75009..e996da6fc 100644 --- a/README.md +++ b/README.md @@ -27,13 +27,13 @@ [Read more](/packages/allure-vitest/README.md) -### Jest (`jest@>=27.x.x`) +### Jest ![npm](https://img.shields.io/npm/dm/allure-jest.svg) ![npm](https://img.shields.io/npm/v/allure-jest.svg) [Read more](/packages/allure-jest/README.md) -### Jasmine and Jest (`jest@<27.x.x`) +### Jasmine ![npm](https://img.shields.io/npm/dm/allure-jasmine.svg) ![npm](https://img.shields.io/npm/v/allure-jasmine.svg) diff --git a/package.json b/package.json index f049aa9f1..9f876ce3d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "allure-js", - "version": "2.14.1", + "version": "2.15.0", "private": true, "workspaces": [ "packages/*" diff --git a/packages/allure-codeceptjs/package.json b/packages/allure-codeceptjs/package.json index e53b7fbe1..c8f4578d0 100644 --- a/packages/allure-codeceptjs/package.json +++ b/packages/allure-codeceptjs/package.json @@ -1,6 +1,6 @@ { "name": "allure-codeceptjs", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure codeceptjs integration", "keywords": [ "codeceptjs", diff --git a/packages/allure-cucumberjs/package.json b/packages/allure-cucumberjs/package.json index 71127d38e..9e27b4347 100644 --- a/packages/allure-cucumberjs/package.json +++ b/packages/allure-cucumberjs/package.json @@ -1,6 +1,6 @@ { "name": "allure-cucumberjs", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Cucumber.JS integration", "homepage": "https://allurereport.org/", "repository": { diff --git a/packages/allure-cucumberjs/test/specs/stepArguments.test.ts b/packages/allure-cucumberjs/test/specs/stepArguments.test.ts index 48af63a52..fb56ec7d7 100644 --- a/packages/allure-cucumberjs/test/specs/stepArguments.test.ts +++ b/packages/allure-cucumberjs/test/specs/stepArguments.test.ts @@ -1,6 +1,5 @@ import { expect } from "chai"; import { before, describe, it } from "mocha"; -import { TestResult } from "allure-js-commons/src/model"; import { LaunchSummary, runCucumberTests } from "../utils"; describe("step arguments", () => { diff --git a/packages/allure-cypress/cypress.config.js b/packages/allure-cypress/cypress.config.js index 1fee85770..f2c6e042e 100644 --- a/packages/allure-cypress/cypress.config.js +++ b/packages/allure-cypress/cypress.config.js @@ -1,7 +1,7 @@ const { readFileSync, rmSync, existsSync } = require("node:fs"); const { join, relative } = require("node:path"); const { globSync } = require("glob"); -const { allureCypress } = require("./dist/reporter"); +const { allureCypress } = require("allure-cypress/reporter"); module.exports = { experimentalInteractiveRunEvents: true, diff --git a/packages/allure-cypress/cypress/e2e/attachments.cy.js b/packages/allure-cypress/cypress/e2e/attachments.cy.js index 3597c3637..f2f6088eb 100644 --- a/packages/allure-cypress/cypress/e2e/attachments.cy.js +++ b/packages/allure-cypress/cypress/e2e/attachments.cy.js @@ -1,4 +1,4 @@ -import { attachment } from "../../dist" +import { attachment } from "allure-cypress" describe("primitive data", () => { describe("text", () => { diff --git a/packages/allure-cypress/cypress/e2e/description.cy.js b/packages/allure-cypress/cypress/e2e/description.cy.js index fcce81f56..39e9f0527 100644 --- a/packages/allure-cypress/cypress/e2e/description.cy.js +++ b/packages/allure-cypress/cypress/e2e/description.cy.js @@ -1,4 +1,4 @@ -import { description, descriptionHtml } from "../../dist"; +import { description, descriptionHtml } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/e2e/displayName.cy.js b/packages/allure-cypress/cypress/e2e/displayName.cy.js index 29aba9f44..23ef2c8fb 100644 --- a/packages/allure-cypress/cypress/e2e/displayName.cy.js +++ b/packages/allure-cypress/cypress/e2e/displayName.cy.js @@ -1,4 +1,4 @@ -import { displayName } from "../../dist"; +import { displayName } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/e2e/historyId.cy.js b/packages/allure-cypress/cypress/e2e/historyId.cy.js index 7982ac76f..c0ecb95a6 100644 --- a/packages/allure-cypress/cypress/e2e/historyId.cy.js +++ b/packages/allure-cypress/cypress/e2e/historyId.cy.js @@ -1,4 +1,4 @@ -import { historyId } from "../../dist"; +import { historyId } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/e2e/labels.cy.js b/packages/allure-cypress/cypress/e2e/labels.cy.js index 8e9bd7016..1a3280562 100644 --- a/packages/allure-cypress/cypress/e2e/labels.cy.js +++ b/packages/allure-cypress/cypress/e2e/labels.cy.js @@ -11,7 +11,7 @@ import { subSuite, suite, tag, -} from "../../dist"; +} from "allure-cypress"; describe("custom", () => { after(() => { diff --git a/packages/allure-cypress/cypress/e2e/links.cy.js b/packages/allure-cypress/cypress/e2e/links.cy.js index 5836359a1..c7e92cecb 100644 --- a/packages/allure-cypress/cypress/e2e/links.cy.js +++ b/packages/allure-cypress/cypress/e2e/links.cy.js @@ -1,4 +1,4 @@ -import { link, issue, tms } from "../../dist"; +import { link, issue, tms } from "allure-cypress"; describe("custom", () => { after(() => { diff --git a/packages/allure-cypress/cypress/e2e/parameters.cy.js b/packages/allure-cypress/cypress/e2e/parameters.cy.js index 1ce24fe04..d7fee968a 100644 --- a/packages/allure-cypress/cypress/e2e/parameters.cy.js +++ b/packages/allure-cypress/cypress/e2e/parameters.cy.js @@ -1,4 +1,4 @@ -import { parameter } from "../../dist"; +import { parameter } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/e2e/steps.cy.js b/packages/allure-cypress/cypress/e2e/steps.cy.js index fb205237e..1658dea7a 100644 --- a/packages/allure-cypress/cypress/e2e/steps.cy.js +++ b/packages/allure-cypress/cypress/e2e/steps.cy.js @@ -1,4 +1,4 @@ -import { step } from "../../dist"; +import { step } from "allure-cypress"; describe("single", () => { after(() => { diff --git a/packages/allure-cypress/cypress/e2e/testCaseId.cy.js b/packages/allure-cypress/cypress/e2e/testCaseId.cy.js index 928221ec1..ad8c35312 100644 --- a/packages/allure-cypress/cypress/e2e/testCaseId.cy.js +++ b/packages/allure-cypress/cypress/e2e/testCaseId.cy.js @@ -1,4 +1,4 @@ -import { testCaseId } from "../../dist"; +import { testCaseId } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/e2e/titleMetadata.cy.js b/packages/allure-cypress/cypress/e2e/titleMetadata.cy.js index 160814541..1c1570a25 100644 --- a/packages/allure-cypress/cypress/e2e/titleMetadata.cy.js +++ b/packages/allure-cypress/cypress/e2e/titleMetadata.cy.js @@ -1,4 +1,4 @@ -import { label } from "../../dist"; +import { label } from "allure-cypress"; after(() => { cy.task("readLastTestResult").then((result) => { diff --git a/packages/allure-cypress/cypress/support/e2e.js b/packages/allure-cypress/cypress/support/e2e.js index 02c2b06b6..066d54393 100644 --- a/packages/allure-cypress/cypress/support/e2e.js +++ b/packages/allure-cypress/cypress/support/e2e.js @@ -1,4 +1,4 @@ -import "../../dist/commands"; +import "allure-cypress/commands"; Cypress.Commands.add("matches", { prevSubject: true }, (subject, object) => { cy.wrap(subject).then((subject) => { diff --git a/packages/allure-cypress/esbuild.ts b/packages/allure-cypress/esbuild.ts deleted file mode 100644 index f212b2768..000000000 --- a/packages/allure-cypress/esbuild.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { join, basename } from "node:path"; -import esbuild from "esbuild"; -import { glob } from "glob"; - -;(async () => { - const nodeFiles = await glob([join(__dirname, "src/reporter.ts")]); - const browserFiles = await glob([join(__dirname, "src/index.ts"), join(__dirname, "src/commands.ts")]); - - for (const file of nodeFiles) { - await esbuild.build({ - bundle: true, - format: "cjs", - platform: "node", - sourcemap: true, - entryPoints: [file], - outfile: join(__dirname, "dist", basename(file).replace(/\.ts$/, ".js")), - }); - } - - for (const file of browserFiles) { - await esbuild.build({ - bundle: true, - format: "cjs", - platform: "browser", - sourcemap: true, - entryPoints: [file], - outfile: join(__dirname, "dist", basename(file).replace(/\.ts$/, ".js")), - }); - } -})(); diff --git a/packages/allure-cypress/package.json b/packages/allure-cypress/package.json index 5c52a9539..d4f498c2f 100644 --- a/packages/allure-cypress/package.json +++ b/packages/allure-cypress/package.json @@ -1,6 +1,6 @@ { "name": "allure-cypress", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Cypress integration", "keywords": [ "cypress", @@ -20,19 +20,23 @@ "author": "Qameta Software (https://qameta.io/)", "exports": { ".": { - "require": "./dist/index.js", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", "types": "./dist/index.d.ts" }, "./commands": { - "require": "./dist/commands.js", + "import": "./dist/commands.mjs", + "require": "./dist/commands.cjs", "types": "./dist/commands.d.ts" }, "./reporter": { - "require": "./dist/reporter.js", + "import": "./dist/reporter.mjs", + "require": "./dist/reporter.cjs", "types": "./dist/reporter.d.ts" } }, - "main": "./dist/index.js", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "directories": { "test": "test" @@ -42,7 +46,9 @@ ], "scripts": { "clean": "rimraf ./dist ./out", - "compile": "ts-node ./esbuild.ts && tsc --emitDeclarationOnly", + "compile": "run-p 'compile:*'", + "compile:lib": "rollup -c", + "compile:types": "tsc --project ./tsconfig.json", "coverage": "codecov", "lint": "eslint ./src --ext .ts", "lint:fix": "eslint ./src --ext .ts --fix", @@ -53,6 +59,9 @@ }, "devDependencies": { "@jest/globals": "^29.7.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-typescript": "^11.1.6", "@types/eslint": "^8", "@types/glob": "^8.1.0", "@types/jest": "^29.5.12", @@ -63,7 +72,6 @@ "allure-jest": "workspace:*", "cypress": "^13.6.0", "enquirer": "^2.3.6", - "esbuild": "^0.20.0", "eslint": "^8.49.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-cypress": "^2.15.1", @@ -73,9 +81,12 @@ "eslint-plugin-prefer-arrow": "^1.2.3", "glob": "^10.3.5", "jest": "^29.7.0", + "npm-run-all": "^4.1.5", "rimraf": "^5.0.1", + "rollup": "^4.13.0", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", + "tslib": "^2.6.2", "typescript": "^5.2.2" } } diff --git a/packages/allure-cypress/rollup.config.mjs b/packages/allure-cypress/rollup.config.mjs new file mode 100644 index 000000000..2bb1fadf5 --- /dev/null +++ b/packages/allure-cypress/rollup.config.mjs @@ -0,0 +1,94 @@ +import typescriptPlugin from "@rollup/plugin-typescript"; +import commonjsPlugin from "@rollup/plugin-commonjs"; +import resolvePlugin from "@rollup/plugin-node-resolve"; +import {glob} from "glob"; +import {join, relative} from "node:path"; +import {fileURLToPath} from "node:url"; +import {defineConfig} from "rollup"; + +const dirname = fileURLToPath(new URL(".", import.meta.url)); + +const createNodeEntry = (inputFile) => { + const outputFileBase = inputFile.replace(/^src/, "dist"); + const external = ["node:fs", "allure-js-commons/new", "allure-js-commons/new/node"]; + + return [ + defineConfig({ + input: inputFile, + output: { + file: join(dirname, outputFileBase.replace(/\.ts$/, ".mjs")), + format: "esm", + exports: "named", + sourcemap: true, + }, + plugins: [ + typescriptPlugin({ + tsconfig: "./tsconfig.rollup.json", + }), + ], + external, + }), + defineConfig({ + input: inputFile, + output: { + file: join(dirname, outputFileBase.replace(/\.ts$/, ".cjs")), + format: "cjs", + exports: "named", + sourcemap: true, + }, + plugins: [ + typescriptPlugin({ + tsconfig: "./tsconfig.rollup.json", + }), + ], + external, + }), + ]; +}; +const createBrowserEntry = (inputFile) => { + const outputFileBase = inputFile.replace(/^src/, "dist"); + + return [ + defineConfig({ + input: inputFile, + output: { + file: join(dirname, outputFileBase.replace(/\.ts$/, ".mjs")), + format: "esm", + exports: "named", + sourcemap: true, + }, + plugins: [ + typescriptPlugin({ + tsconfig: "./tsconfig.rollup.json", + }), + resolvePlugin(), + commonjsPlugin(), + ], + }), + defineConfig({ + input: inputFile, + output: { + file: join(dirname, outputFileBase.replace(/\.ts$/, ".cjs")), + format: "cjs", + exports: "named", + sourcemap: true, + }, + plugins: [ + typescriptPlugin({ + tsconfig: "./tsconfig.rollup.json", + }), + resolvePlugin(), + commonjsPlugin(), + ], + // external, + }), + ]; +}; + +export default () => { + return [ + createBrowserEntry("src/index.ts"), + createBrowserEntry("src/commands.ts"), + createNodeEntry("src/reporter.ts"), + ].flat(); +}; diff --git a/packages/allure-cypress/src/commands.ts b/packages/allure-cypress/src/commands.ts index 16009a3b1..7e1d105b8 100644 --- a/packages/allure-cypress/src/commands.ts +++ b/packages/allure-cypress/src/commands.ts @@ -1,6 +1,8 @@ -import { MessageType, type ReportFinalMessage, Stage, Status } from "./model"; +import { Stage, Status } from "allure-js-commons/new"; +import { MessageType, type ReportFinalMessage, type ReporterMessage } from "./model"; const createFinalMesage = () => + // @ts-ignore ({ startMessage: undefined, endMessage: undefined, @@ -44,7 +46,7 @@ const getStepsMessagesPair = (reportMessage: ReportFinalMessage) => acc[unfinishedStepIdx].push(message); return acc; - }, []); + }, [] as ReporterMessage[][]); // @ts-ignore Cypress.mocha diff --git a/packages/allure-cypress/src/index.ts b/packages/allure-cypress/src/index.ts index 7e6942c97..8da7652ef 100644 --- a/packages/allure-cypress/src/index.ts +++ b/packages/allure-cypress/src/index.ts @@ -1,4 +1,5 @@ -import { LabelName, LinkType, MessageType, type ParameterOptions, Stage, Status } from "./model"; +import { LabelName, LinkType, ParameterOptions, Stage, Status } from "allure-js-commons/new"; +import { MessageType } from "./model"; import { pushReportMessage } from "./utils"; export type CypressWrappedAttachment = { type: string; data: unknown }; @@ -12,7 +13,7 @@ export const uint8ArrayToBase64 = (data: unknown) => { } // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - return btoa(String.fromCharCode.apply(null, data)); + return btoa(String.fromCharCode.apply(null, data as number[])); }; export const normalizeAttachmentContentEncoding = (data: unknown, encoding: BufferEncoding): BufferEncoding => { diff --git a/packages/allure-cypress/src/model.ts b/packages/allure-cypress/src/model.ts index d8c96e661..39f58936a 100644 --- a/packages/allure-cypress/src/model.ts +++ b/packages/allure-cypress/src/model.ts @@ -1,128 +1,5 @@ -// these types is a copy-paste from allure-js-commons/model because it isn't compatible with browser -// TODO: need to make model compatible with any environment -export type ParameterOptions = Pick; +import { MetadataMessage, Stage, Status, StatusDetails } from "allure-js-commons/new"; -export interface Attachment { - name: string; - type: string; - source: string; -} - -export type StepResult = ExecutableItem; - -export interface ExecutableItem { - name?: string; - status?: Status; - statusDetails: StatusDetails; - stage: Stage; - description?: string; - descriptionHtml?: string; - steps: StepResult[]; - attachments: Attachment[]; - parameters: Parameter[]; - start?: number; - stop?: number; -} - -export interface StepMetadata extends Omit { - steps: StepMetadata[]; - attachments: AttachmentMetadata[]; -} - -export interface Label { - name: LabelName | string; - value: string; -} - -export interface Link { - name?: string; - url: string; - type?: LinkType | string; -} - -export interface Parameter { - name: string; - value: string; - excluded?: boolean; - mode?: "hidden" | "masked" | "default"; -} - -export interface AttachmentMetadata { - name: string; - type: string; - content: string; - encoding: BufferEncoding; -} - -export interface MetadataMessage { - attachments?: AttachmentMetadata[]; - displayName?: string; - testCaseId?: string; - historyId?: string; - labels?: Label[]; - links?: Link[]; - parameter?: Parameter[]; - description?: string; - descriptionHtml?: string; - steps?: StepMetadata[]; -} - -/* eslint-disable no-shadow */ -export enum LinkType { - ISSUE = "issue", - TMS = "tms", -} - -/* eslint-disable no-shadow */ -export enum LabelName { - ALLURE_ID = "ALLURE_ID", - /** - * @deprecated please use ALLURE_ID instead - */ - AS_ID = ALLURE_ID, - SUITE = "suite", - PARENT_SUITE = "parentSuite", - SUB_SUITE = "subSuite", - EPIC = "epic", - FEATURE = "feature", - STORY = "story", - SEVERITY = "severity", - TAG = "tag", - OWNER = "owner", - LEAD = "lead", - HOST = "host", - THREAD = "thread", - TEST_METHOD = "testMethod", - TEST_CLASS = "testClass", - PACKAGE = "package", - FRAMEWORK = "framework", - LANGUAGE = "language", - LAYER = "layer", -} - -export interface StatusDetails { - message?: string; - trace?: string; -} - -/* eslint-disable no-shadow */ -export enum Status { - FAILED = "failed", - BROKEN = "broken", - PASSED = "passed", - SKIPPED = "skipped", -} - -/* eslint-disable no-shadow */ -export enum Stage { - SCHEDULED = "scheduled", - RUNNING = "running", - FINISHED = "finished", - PENDING = "pending", - INTERRUPTED = "interrupted", -} - -// keep these types export enum MessageType { TEST_STARTED = "TEST_STARTED", TEST_ENDED = "TEST_ENDED", diff --git a/packages/allure-cypress/src/reporter.ts b/packages/allure-cypress/src/reporter.ts index be7a064f6..2f977929b 100644 --- a/packages/allure-cypress/src/reporter.ts +++ b/packages/allure-cypress/src/reporter.ts @@ -1,7 +1,16 @@ import Cypress from "cypress"; import { readFileSync } from "node:fs"; -import { AllureRuntime, AllureStep, AllureTest, extractMetadataFromString, getSuitesLabels } from "allure-js-commons"; -import { LabelName, Link, MessageType, ReportFinalMessage, Stage, TestStartMessage } from "./model"; +import { + AllureStep, + AllureTest, + LabelName, + Link, + Stage, + extractMetadataFromString, + getSuitesLabels, +} from "allure-js-commons/new"; +import { AllureNodeRuntime, FileSystemAllureWriter } from "allure-js-commons/new/node"; +import { MessageType, ReportFinalMessage, TestStartMessage } from "./model"; export type AllureCypressConfig = { resultsDir?: string; @@ -11,7 +20,7 @@ export type AllureCypressConfig = { }[]; }; -const startAllureTest = (runtime: AllureRuntime, message: TestStartMessage) => { +const startAllureTest = (runtime: AllureNodeRuntime, message: TestStartMessage) => { const suiteLabels = getSuitesLabels(message.specPath.slice(0, -1)); const testTitle = message.specPath[message.specPath.length - 1]; const titleMetadata = extractMetadataFromString(testTitle); @@ -36,8 +45,10 @@ const startAllureTest = (runtime: AllureRuntime, message: TestStartMessage) => { }; export const allureCypress = (on: Cypress.PluginEvents, config?: AllureCypressConfig) => { - const runtime = new AllureRuntime({ - resultsDir: config?.resultsDir || "./allure-results", + const runtime = new AllureNodeRuntime({ + writer: new FileSystemAllureWriter({ + resultsDir: config?.resultsDir || "./allure-results", + }), }); const currentSteps: AllureStep[] = []; @@ -55,11 +66,11 @@ export const allureCypress = (on: Cypress.PluginEvents, config?: AllureCypressCo } if (type === MessageType.STEP_ENDED) { - const currentStep = currentSteps.pop(); + const currentStep = currentSteps.pop()!; currentStep.status = payload.status; - currentStep.statusDetails = payload.statusDetails; - currentStep.stage = payload.stage; + currentStep.statusDetails = payload.statusDetails!; + currentStep.stage = payload.stage!; currentStep.endStep(payload.stop); return; } @@ -125,7 +136,7 @@ export const allureCypress = (on: Cypress.PluginEvents, config?: AllureCypressCo currentTest.stage = endMessage.stage; currentTest.status = endMessage.status; - currentTest.statusDetails = endMessage.statusDetails; + currentTest.statusDetails = endMessage.statusDetails!; currentTest.calculateHistoryId(); currentTest.endTest(endMessage.stop); diff --git a/packages/allure-cypress/tsconfig.json b/packages/allure-cypress/tsconfig.json index 5ea2dd020..a318d165c 100644 --- a/packages/allure-cypress/tsconfig.json +++ b/packages/allure-cypress/tsconfig.json @@ -1,14 +1,21 @@ { + "extends": "../../tsconfig.json", + "include": [ + "./src/**/*", + "index.ts", + "internal.ts", + ], "compilerOptions": { - "target": "es2022", - "lib": ["es2023", "dom"], - "types": ["node", "cypress"], "skipLibCheck": true, - "outDir": "./dist", - "rootDir": "./src", "declaration": true, - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["./src/**/*"] + "emitDeclarationOnly": true, + "module": "ESNext", + "target": "ES2022", + "moduleResolution": "bundler", + "lib": ["dom", "esnext"], + "types": [ + "node" + ], + "outDir": "./dist" + } } diff --git a/packages/allure-cypress/tsconfig.rollup.json b/packages/allure-cypress/tsconfig.rollup.json new file mode 100644 index 000000000..aaa5732b5 --- /dev/null +++ b/packages/allure-cypress/tsconfig.rollup.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "./src/**/*", + "index.ts", + "internal.ts", + ], + "compilerOptions": { + "declaration": false, + "target": "ES2015", + "lib": ["dom", "esnext"], + "moduleResolution": "bundler", + "types": [ + "node" + ], + } +} diff --git a/packages/allure-decorators/package.json b/packages/allure-decorators/package.json index 530a46eb2..5a0592ca2 100644 --- a/packages/allure-decorators/package.json +++ b/packages/allure-decorators/package.json @@ -1,6 +1,6 @@ { "name": "allure-decorators", - "version": "2.14.1", + "version": "2.15.0", "description": "Write your tests in a Java-like annotation-driven manner via JS decorators.", "keywords": [ "typescript", diff --git a/packages/allure-jasmine/package.json b/packages/allure-jasmine/package.json index 6022dd2db..e9c70b86a 100644 --- a/packages/allure-jasmine/package.json +++ b/packages/allure-jasmine/package.json @@ -1,6 +1,6 @@ { "name": "allure-jasmine", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Jasmine integration", "homepage": "https://allurereport.org/", "repository": { diff --git a/packages/allure-jasmine/test/helpers.ts b/packages/allure-jasmine/test/helpers.ts index d8b0275e7..8c3d98ee6 100644 --- a/packages/allure-jasmine/test/helpers.ts +++ b/packages/allure-jasmine/test/helpers.ts @@ -1,5 +1,5 @@ import { Allure, InMemoryAllureWriter } from "allure-js-commons"; -import { AllureWriter } from "allure-js-commons/dist/src/writers"; +import { AllureWriter } from "allure-js-commons"; import { JasmineAllureReporter } from "../src/JasmineAllureReporter"; import Env = jasmine.Env; diff --git a/packages/allure-jasmine/test/suites.test.ts b/packages/allure-jasmine/test/suites.test.ts index a214298ad..1db9fa0f4 100644 --- a/packages/allure-jasmine/test/suites.test.ts +++ b/packages/allure-jasmine/test/suites.test.ts @@ -1,5 +1,5 @@ import { Allure, LabelName } from "allure-js-commons"; -import { AllureWriter } from "allure-js-commons/dist/src/writers"; +import { AllureWriter } from "allure-js-commons"; import { JasmineTestEnv, runTest } from "./helpers"; import { matchers } from "./matchers"; diff --git a/packages/allure-jest/package.json b/packages/allure-jest/package.json index 6074111e9..baf5870c0 100644 --- a/packages/allure-jest/package.json +++ b/packages/allure-jest/package.json @@ -1,6 +1,6 @@ { "name": "allure-jest", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Jest integration", "keywords": [ "jest", diff --git a/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/jest.config.js b/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/jest.config.js new file mode 100644 index 000000000..9221b337f --- /dev/null +++ b/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/jest.config.js @@ -0,0 +1,18 @@ +const config = { + testEnvironment: require.resolve("allure-jest/node"), + testEnvironmentOptions: { + testMode: true, + links: [ + { + type: "issue", + urlTemplate: "http://example.org/issues/%s", + }, + { + type: "tms", + urlTemplate: "http://example.org/tasks/%s", + }, + ], + }, +}; + +module.exports = config; diff --git a/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/sample.test.js b/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/sample.test.js new file mode 100644 index 000000000..b6a17f90d --- /dev/null +++ b/packages/allure-jest/test/fixtures/860c87d9-3405-428a-af12-a207974e6db7/sample.test.js @@ -0,0 +1,3 @@ +it("epic", async () => { + await allure.epic("foo"); +}); diff --git a/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/jest.config.js b/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/jest.config.js new file mode 100644 index 000000000..9221b337f --- /dev/null +++ b/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/jest.config.js @@ -0,0 +1,18 @@ +const config = { + testEnvironment: require.resolve("allure-jest/node"), + testEnvironmentOptions: { + testMode: true, + links: [ + { + type: "issue", + urlTemplate: "http://example.org/issues/%s", + }, + { + type: "tms", + urlTemplate: "http://example.org/tasks/%s", + }, + ], + }, +}; + +module.exports = config; diff --git a/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/sample.test.js b/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/sample.test.js new file mode 100644 index 000000000..fcec23435 --- /dev/null +++ b/packages/allure-jest/test/fixtures/e1a63175-0562-4c40-83ad-6892d19bcd8d/sample.test.js @@ -0,0 +1,4 @@ +it("tms", async () => { + allure.tms("foo", "http://example.org/tasks/1"); + allure.tms("bar", "2"); +}); diff --git a/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/jest.config.js b/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/jest.config.js new file mode 100644 index 000000000..9221b337f --- /dev/null +++ b/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/jest.config.js @@ -0,0 +1,18 @@ +const config = { + testEnvironment: require.resolve("allure-jest/node"), + testEnvironmentOptions: { + testMode: true, + links: [ + { + type: "issue", + urlTemplate: "http://example.org/issues/%s", + }, + { + type: "tms", + urlTemplate: "http://example.org/tasks/%s", + }, + ], + }, +}; + +module.exports = config; diff --git a/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/sample.test.js b/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/sample.test.js new file mode 100644 index 000000000..dc07da1d0 --- /dev/null +++ b/packages/allure-jest/test/fixtures/f6df9854-e9aa-4fa0-9073-1b0ea6735639/sample.test.js @@ -0,0 +1,3 @@ +it("subSuite", async () => { + await allure.subSuite("foo"); +}); diff --git a/packages/allure-js-commons/.eslintrc.js b/packages/allure-js-commons/.eslintrc.js new file mode 100644 index 000000000..f1dd2e754 --- /dev/null +++ b/packages/allure-js-commons/.eslintrc.js @@ -0,0 +1,15 @@ +module.exports = { + env: { + browser: true, + node: true, + es6: true, + }, + extends: [ + "../../.eslintrc.js", + ], + parserOptions: { + project: "./tsconfig.json", + sourceType: "module", + warnOnUnsupportedTypeScriptVersion: false, + }, +}; diff --git a/packages/allure-js-commons/index.ts b/packages/allure-js-commons/index.ts index 401820b8a..a2d3d1ba6 100644 --- a/packages/allure-js-commons/index.ts +++ b/packages/allure-js-commons/index.ts @@ -1,23 +1,20 @@ -export { AllureRuntime } from "./src/AllureRuntime"; +export { AllureRuntime } from "./src/current/AllureRuntime.js"; export { typeToExtension, InMemoryAllureWriter, FileSystemAllureWriter, MessageAllureWriter, + AllureWriter, AllureResults -} from "./src/writers"; -export { AllureConfig } from "./src/AllureConfig"; -export { AllureGroup } from "./src/AllureGroup"; -export { ExecutableItemWrapper } from "./src/ExecutableItemWrapper"; -export { AllureTest } from "./src/AllureTest"; -export { AllureStep } from "./src/ExecutableItemWrapper"; -export { isPromise } from "./src/isPromise"; -export { Allure, StepInterface } from "./src/Allure"; -export { - StepBodyFunction, - AllureCommandStep, - AllureCommandStepExecutable -} from "./src/AllureCommandStep"; +} from "./src/current/writers/index.js"; +export { AllureConfig } from "./src/current/AllureConfig.js"; +export { AllureGroup } from "./src/current/AllureGroup.js"; +export { ExecutableItemWrapper } from "./src/current/ExecutableItemWrapper.js"; +export { AllureTest } from "./src/current/AllureTest.js"; +export { AllureStep } from "./src/current/ExecutableItemWrapper.js"; +export { isPromise } from "./src/current/isPromise.js"; +export { Allure, StepInterface } from "./src/current/Allure.js"; +export { StepBodyFunction, AllureCommandStep, AllureCommandStepExecutable } from "./src/current/AllureCommandStep.js"; export { AttachmentOptions, MetadataMessage, @@ -43,7 +40,7 @@ export { StepMetadata, AttachmentMetadata, ImageDiffAttachment -} from "./src/model"; +} from "./src/current/model.js"; export { allureIdRegexp, @@ -61,8 +58,8 @@ export { serialize, stripAscii, extractMetadataFromString -} from "./src/utils"; +} from "./src/current/utils.js"; -export { AllureRuntimeApiInterface } from "./src/framework"; +export { AllureRuntimeApiInterface } from "./src/current/framework/index.js"; -export { TestPlanV1, parseTestPlan } from "./src/testplan"; +export { TestPlanV1, parseTestPlan } from "./src/current/testplan.js"; diff --git a/packages/allure-js-commons/internal.ts b/packages/allure-js-commons/internal.ts index 77cd4cae4..16ee8b01f 100644 --- a/packages/allure-js-commons/internal.ts +++ b/packages/allure-js-commons/internal.ts @@ -1 +1,5 @@ -export { ALLURE_SKIPPED_BY_TEST_PLAN_LABEL, ALLURE_METADATA_CONTENT_TYPE, ALLURE_IMAGEDIFF_CONTENT_TYPE } from "./src/model"; +export { + ALLURE_SKIPPED_BY_TEST_PLAN_LABEL, + ALLURE_METADATA_CONTENT_TYPE, + ALLURE_IMAGEDIFF_CONTENT_TYPE, +} from "./src/current/model.js"; diff --git a/packages/allure-js-commons/package.json b/packages/allure-js-commons/package.json index 83ee6c78f..6e460bd81 100644 --- a/packages/allure-js-commons/package.json +++ b/packages/allure-js-commons/package.json @@ -1,6 +1,6 @@ { "name": "allure-js-commons", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure JS Commons", "homepage": "https://allurereport.org/", "repository": { @@ -16,35 +16,50 @@ }, "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist/index.js", - "types": "./dist/index.d.ts" + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js" }, "./internal": { - "import": "./dist/internal.js", - "require": "./dist/internal.js", - "types": "./dist/internal.d.ts" + "import": "./dist/esm/internal.js", + "require": "./dist/cjs/internal.js" + }, + "./new": { + "import": "./dist/esm/src/new/index.js", + "require": "./dist/cjs/src/new/index.js" + }, + "./new/browser": { + "import": "./dist/esm/src/new/browser/index.js", + "require": "./dist/cjs/src/new/browser/index.js" + }, + "./new/node": { + "import": "./dist/esm/src/new/node/index.js", + "require": "./dist/cjs/src/new/node/index.js" } }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", "files": [ "dist" ], "scripts": { "clean": "rimraf ./dist", - "compile": "tsc", + "compile": "run-p 'compile:*'", + "compile:esm": "tsc --project ./tsconfig.esm.json", + "compile:cjs": "tsc --project ./tsconfig.json", + "compile:fixup": "ts-node --project ./tsconfig.json ./scripts/fixup.ts", "lint": "eslint ./src ./index.ts --ext .ts", "lint:fix": "eslint ./src ./index.ts --ext .ts --fix", "test": "ts-node --project test/tsconfig.json test/runner.ts" }, "dependencies": { + "md5": "^2.3.0", "properties": "^1.2.1", "strip-ansi": "^5.2.0" }, "devDependencies": { "@types/chai": "^4.3.6", "@types/eslint": "^8", + "@types/md5": "^2", "@types/mocha": "^10.0.1", "@types/node": "^20.6.3", "@types/sinon": "^17.0.0", @@ -60,13 +75,15 @@ "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-prefer-arrow": "^1.2.3", "expect": "^29.5.0", - "glob": "^10.3.5", + "glob": "^10.3.10", "mocha": "^10.2.0", "mocha-multi-reporters": "^1.5.1", + "npm-run-all": "^4.1.5", "rimraf": "^5.0.1", "sinon": "^17.0.0", "source-map-support": "^0.5.21", "ts-node": "^10.9.1", + "tslib": "^2.6.2", "typescript": "^5.2.2" } } diff --git a/packages/allure-js-commons/scripts/fixup.ts b/packages/allure-js-commons/scripts/fixup.ts new file mode 100644 index 000000000..f268e78aa --- /dev/null +++ b/packages/allure-js-commons/scripts/fixup.ts @@ -0,0 +1,36 @@ +import { mkdirSync, writeFileSync } from "node:fs"; +import { join, resolve } from "node:path"; + +const esmBuildPath = resolve(__dirname, "../dist/esm"); +const cjsBuildPath = resolve(__dirname, "../dist/cjs"); + +try { + mkdirSync(esmBuildPath, { recursive: true }); +} catch (err) {} + +try { + mkdirSync(cjsBuildPath, { recursive: true }); +} catch (err) {} + +writeFileSync( + join(esmBuildPath, "package.json"), + JSON.stringify( + { + type: "module", + }, + null, + 2, + ), + "utf8", +); +writeFileSync( + join(cjsBuildPath, "package.json"), + JSON.stringify( + { + type: "commonjs", + }, + null, + 2, + ), + "utf8", +); diff --git a/packages/allure-js-commons/src/Allure.ts b/packages/allure-js-commons/src/current/Allure.ts similarity index 91% rename from packages/allure-js-commons/src/Allure.ts rename to packages/allure-js-commons/src/current/Allure.ts index 372e1454d..b4a666e1c 100644 --- a/packages/allure-js-commons/src/Allure.ts +++ b/packages/allure-js-commons/src/current/Allure.ts @@ -1,8 +1,8 @@ -import { AllureRuntime } from "./AllureRuntime"; -import { AllureTest } from "./AllureTest"; -import { ExecutableItemWrapper } from "./ExecutableItemWrapper"; -import { AllureRuntimeApiInterface } from "./framework"; -import { AttachmentOptions, Category, ContentType, LabelName, LinkType, ParameterOptions, Status } from "./model"; +import { AllureRuntime } from "./AllureRuntime.js"; +import { AllureTest } from "./AllureTest.js"; +import { ExecutableItemWrapper } from "./ExecutableItemWrapper.js"; +import { AllureRuntimeApiInterface } from "./framework/index.js"; +import { AttachmentOptions, Category, ContentType, LabelName, LinkType, ParameterOptions, Status } from "./model.js"; // FIXME: step and attachment should be the same for each reporter implementation export abstract class Allure implements Omit { diff --git a/packages/allure-js-commons/src/current/AllureCommandStep.ts b/packages/allure-js-commons/src/current/AllureCommandStep.ts new file mode 100644 index 000000000..0892e06f9 --- /dev/null +++ b/packages/allure-js-commons/src/current/AllureCommandStep.ts @@ -0,0 +1,274 @@ +import stripAnsi from "strip-ansi"; +import { AllureRuntime } from "./AllureRuntime.js"; +import { + AttachmentMetadata, + ContentType, + ExecutableItem, + LabelName, + LinkType, + MetadataMessage, + ParameterOptions, + Stage, + Status, + StepMetadata, +} from "./model.js"; + +export type StepBodyFunction = ( + this: AllureCommandStepExecutable, + step: AllureCommandStepExecutable, +) => T | Promise; + +export interface AllureCommandStep { + name: string; + + attachments: AttachmentMetadata[]; + + metadata: T; + + label(label: string, value: string): void | Promise; + + link(url: string, name?: string, type?: string): void | Promise; + + parameter(name: string, value: string, options?: ParameterOptions): void | Promise; + + epic(epic: string): void | Promise; + + feature(feature: string): void | Promise; + + story(story: string): void | Promise; + + suite(name: string): void | Promise; + + parentSuite(name: string): void | Promise; + + subSuite(name: string): void | Promise; + + owner(owner: string): void | Promise; + + severity(severity: string): void | Promise; + + tag(tag: string): void | Promise; + + issue(issue: string, url: string): void | Promise; + + tms(issue: string, url: string): void | Promise; + + attach(name: string, content: Buffer | string, options: ContentType | string): void | Promise; + + description(content: string): void | Promise; +} + +export class AllureCommandStepExecutable implements AllureCommandStep { + name: string = ""; + + attachments: AttachmentMetadata[] = []; + + metadata: MetadataMessage = {}; + + constructor(name: string) { + this.name = name; + } + + /** + * Recursively writes attachments from the given step and all it's children + * Mutates given step object! + */ + static toExecutableItem(runtime: AllureRuntime, stepMetadata: StepMetadata): ExecutableItem { + const executable: ExecutableItem = { + ...stepMetadata, + attachments: [], + steps: [], + }; + + if (stepMetadata.attachments?.length > 0) { + stepMetadata.attachments.forEach((attachment) => { + const attachmentContent = Buffer.from(attachment.content, attachment.encoding); + const attachmentFilename = runtime.writeAttachment(attachmentContent, attachment.type, attachment.encoding); + + executable.attachments.push({ + name: attachment.name, + type: attachment.type, + source: attachmentFilename, + }); + }); + } + + if (stepMetadata.steps?.length > 0) { + executable.steps = stepMetadata.steps.map((nestedStep) => + AllureCommandStepExecutable.toExecutableItem(runtime, nestedStep), + ); + } + + return executable; + } + + label(label: string, value: string): void { + if (!this.metadata.labels) { + this.metadata.labels = []; + } + + this.metadata.labels.push({ + name: label, + value, + }); + } + + link(url: string, name?: string, type?: string): void { + if (!this.metadata.links) { + this.metadata.links = []; + } + + this.metadata.links.push({ + name, + url, + type, + }); + } + + parameter(name: string, value: any, options?: ParameterOptions): void { + if (!this.metadata.parameter) { + this.metadata.parameter = []; + } + + this.metadata.parameter.push({ + name, + value: JSON.stringify(value), + excluded: options?.excluded || false, + mode: options?.mode, + }); + } + + epic(epic: string) { + this.label(LabelName.EPIC, epic); + } + + feature(feature: string) { + this.label(LabelName.FEATURE, feature); + } + + story(story: string) { + this.label(LabelName.STORY, story); + } + + suite(name: string) { + this.label(LabelName.SUITE, name); + } + + parentSuite(name: string) { + this.label(LabelName.PARENT_SUITE, name); + } + + subSuite(name: string) { + this.label(LabelName.SUB_SUITE, name); + } + + owner(owner: string) { + this.label(LabelName.OWNER, owner); + } + + severity(severity: string) { + this.label(LabelName.SEVERITY, severity); + } + + tag(tag: string) { + this.label(LabelName.TAG, tag); + } + + issue(name: string, url: string) { + this.link(url, name, LinkType.ISSUE); + } + + tms(name: string, url: string) { + this.link(url, name, LinkType.TMS); + } + + attach(content: string | Buffer, type: string): void { + const isBuffer = Buffer.isBuffer(content); + + this.attachments.push({ + name: "attachment", + content: isBuffer ? content.toString("base64") : content, + encoding: isBuffer ? "base64" : "utf8", + type, + }); + } + + description(content: string): void { + this.metadata.description = content; + } + + async step(name: string, body: StepBodyFunction): Promise { + if (!this.metadata.steps) { + this.metadata.steps = []; + } + + const nestedStep = new AllureCommandStepExecutable(name); + // eslint-disable-next-line @typescript-eslint/require-await + await nestedStep.run(body, async ({ labels = [], links = [], parameter = [], steps = [] }) => { + this.metadata.labels = (this.metadata.labels || []).concat(labels); + this.metadata.links = (this.metadata.links || []).concat(links); + this.metadata.parameter = (this.metadata.parameter || []).concat(parameter); + this.metadata.steps = (this.metadata.steps || []).concat(steps); + }); + } + + async start(body: StepBodyFunction): Promise { + return await new Promise((resolve) => + // eslint-disable-next-line @typescript-eslint/require-await + this.run(body, async (result) => resolve(result)), + ); + } + + async run(body: StepBodyFunction, messageEmitter: (message: MetadataMessage) => Promise): Promise { + const startDate = new Date().getTime(); + + try { + await body.call(this, this); + + const { steps = [], description = "", descriptionHtml = "", ...metadata } = this.metadata; + + await messageEmitter({ + ...metadata, + steps: [ + { + name: this.name, + start: startDate, + stop: new Date().getTime(), + stage: Stage.FINISHED, + status: Status.PASSED, + statusDetails: {}, + attachments: this.attachments, + parameters: [], + steps, + description, + }, + ], + }); + } catch (e: any) { + const { steps = [], description = "", descriptionHtml = "", ...metadata } = this.metadata; + + await messageEmitter({ + ...metadata, + steps: [ + { + name: this.name, + start: startDate, + stop: new Date().getTime(), + stage: Stage.FINISHED, + status: Status.BROKEN, + statusDetails: { + message: stripAnsi((e.message || "") as string), + trace: stripAnsi((e.stack || "") as string), + }, + attachments: this.attachments, + parameters: [], + steps, + description, + }, + ], + }); + + throw e; + } + } +} diff --git a/packages/allure-js-commons/src/AllureConfig.ts b/packages/allure-js-commons/src/current/AllureConfig.ts similarity index 64% rename from packages/allure-js-commons/src/AllureConfig.ts rename to packages/allure-js-commons/src/current/AllureConfig.ts index 70b50ac3d..d8e29a5f3 100644 --- a/packages/allure-js-commons/src/AllureConfig.ts +++ b/packages/allure-js-commons/src/current/AllureConfig.ts @@ -1,5 +1,5 @@ -import { TestResult } from "./model"; -import { AllureWriter } from "./writers"; +import { TestResult } from "./model.js"; +import { AllureWriter } from "./writers/index.js"; export interface AllureConfig { readonly resultsDir: string; diff --git a/packages/allure-js-commons/src/AllureGroup.ts b/packages/allure-js-commons/src/current/AllureGroup.ts similarity index 85% rename from packages/allure-js-commons/src/AllureGroup.ts rename to packages/allure-js-commons/src/current/AllureGroup.ts index 980ec667c..78e6a871b 100644 --- a/packages/allure-js-commons/src/AllureGroup.ts +++ b/packages/allure-js-commons/src/current/AllureGroup.ts @@ -1,8 +1,8 @@ -import { AllureRuntime } from "./AllureRuntime"; -import { AllureTest } from "./AllureTest"; -import { ExecutableItemWrapper } from "./ExecutableItemWrapper"; -import { fixtureResult, testResultContainer } from "./constructors"; -import { TestResultContainer } from "./model"; +import { AllureRuntime } from "./AllureRuntime.js"; +import { AllureTest } from "./AllureTest.js"; +import { ExecutableItemWrapper } from "./ExecutableItemWrapper.js"; +import { fixtureResult, testResultContainer } from "./constructors.js"; +import { TestResultContainer } from "./model.js"; export class AllureGroup { private testResultContainer: TestResultContainer = testResultContainer(); diff --git a/packages/allure-js-commons/src/AllureRuntime.ts b/packages/allure-js-commons/src/current/AllureRuntime.ts similarity index 93% rename from packages/allure-js-commons/src/AllureRuntime.ts rename to packages/allure-js-commons/src/current/AllureRuntime.ts index 0faadf41b..44a5de664 100644 --- a/packages/allure-js-commons/src/AllureRuntime.ts +++ b/packages/allure-js-commons/src/current/AllureRuntime.ts @@ -1,9 +1,9 @@ import { randomUUID } from "crypto"; import { PathLike } from "fs"; -import { AllureConfig } from "./AllureConfig"; -import { AllureGroup } from "./AllureGroup"; -import { AttachmentOptions, Category, ContentType, TestResult, TestResultContainer } from "./model"; -import { AllureWriter, FileSystemAllureWriter, typeToExtension } from "./writers"; +import { AllureConfig } from "./AllureConfig.js"; +import { AllureGroup } from "./AllureGroup.js"; +import { AttachmentOptions, Category, ContentType, TestResult, TestResultContainer } from "./model.js"; +import { AllureWriter, FileSystemAllureWriter, typeToExtension } from "./writers/index.js"; const buildAttachmentFileName = (options: ContentType | string | AttachmentOptions): string => { if (typeof options === "string") { diff --git a/packages/allure-js-commons/src/AllureTest.ts b/packages/allure-js-commons/src/current/AllureTest.ts similarity index 94% rename from packages/allure-js-commons/src/AllureTest.ts rename to packages/allure-js-commons/src/current/AllureTest.ts index 3f6b981f6..121192a05 100644 --- a/packages/allure-js-commons/src/AllureTest.ts +++ b/packages/allure-js-commons/src/current/AllureTest.ts @@ -1,9 +1,9 @@ -import { AllureCommandStepExecutable } from "./AllureCommandStep"; -import { AllureRuntime } from "./AllureRuntime"; -import { ExecutableItemWrapper } from "./ExecutableItemWrapper"; -import { testResult } from "./constructors"; -import { ExecutableItem, LinkType, MetadataMessage, TestResult } from "./model"; -import { getLabelsFromEnv, md5 } from "./utils"; +import { AllureCommandStepExecutable } from "./AllureCommandStep.js"; +import { AllureRuntime } from "./AllureRuntime.js"; +import { ExecutableItemWrapper } from "./ExecutableItemWrapper.js"; +import { testResult } from "./constructors.js"; +import { ExecutableItem, LinkType, MetadataMessage, TestResult } from "./model.js"; +import { getLabelsFromEnv, md5 } from "./utils.js"; export class AllureTest extends ExecutableItemWrapper { private readonly testResult: TestResult; diff --git a/packages/allure-js-commons/src/ExecutableItemWrapper.ts b/packages/allure-js-commons/src/current/ExecutableItemWrapper.ts similarity index 97% rename from packages/allure-js-commons/src/ExecutableItemWrapper.ts rename to packages/allure-js-commons/src/current/ExecutableItemWrapper.ts index d6439204f..f40028eb4 100644 --- a/packages/allure-js-commons/src/ExecutableItemWrapper.ts +++ b/packages/allure-js-commons/src/current/ExecutableItemWrapper.ts @@ -1,5 +1,5 @@ -import { stepResult } from "./constructors"; -import { isPromise } from "./isPromise"; +import { stepResult } from "./constructors.js"; +import { isPromise } from "./isPromise.js"; import { AttachmentOptions, ContentType, @@ -11,8 +11,8 @@ import { StatusDetails, StepResult, TestResult, -} from "./model"; -import { isAllStepsEnded, isAnyStepFailed, serialize } from "./utils"; +} from "./model.js"; +import { isAllStepsEnded, isAnyStepFailed, serialize } from "./utils.js"; export class ExecutableItemWrapper { constructor(private readonly info: FixtureResult | TestResult) {} diff --git a/packages/allure-js-commons/src/constructors.ts b/packages/allure-js-commons/src/current/constructors.ts similarity index 95% rename from packages/allure-js-commons/src/constructors.ts rename to packages/allure-js-commons/src/current/constructors.ts index 2b2ad3189..04f37c8d1 100644 --- a/packages/allure-js-commons/src/constructors.ts +++ b/packages/allure-js-commons/src/current/constructors.ts @@ -1,5 +1,5 @@ import { randomUUID } from "crypto"; -import { FixtureResult, Stage, Status, StepResult, TestResult, TestResultContainer } from "./model"; +import { FixtureResult, Stage, Status, StepResult, TestResult, TestResultContainer } from "./model.js"; export const testResultContainer = (): TestResultContainer => { return { diff --git a/packages/allure-js-commons/src/framework/index.ts b/packages/allure-js-commons/src/current/framework/index.ts similarity index 89% rename from packages/allure-js-commons/src/framework/index.ts rename to packages/allure-js-commons/src/current/framework/index.ts index 4fac3ef90..5067e8ece 100644 --- a/packages/allure-js-commons/src/framework/index.ts +++ b/packages/allure-js-commons/src/current/framework/index.ts @@ -1,5 +1,5 @@ -import { StepBodyFunction } from "../AllureCommandStep"; -import { ParameterOptions } from "../model"; +import { StepBodyFunction } from "../AllureCommandStep.js"; +import { ParameterOptions } from "../model.js"; export interface AllureRuntimeApiInterface { label(name: string, value: string): void; diff --git a/packages/allure-js-commons/src/isPromise.ts b/packages/allure-js-commons/src/current/isPromise.ts similarity index 100% rename from packages/allure-js-commons/src/isPromise.ts rename to packages/allure-js-commons/src/current/isPromise.ts diff --git a/packages/allure-js-commons/src/model.ts b/packages/allure-js-commons/src/current/model.ts similarity index 100% rename from packages/allure-js-commons/src/model.ts rename to packages/allure-js-commons/src/current/model.ts diff --git a/packages/allure-js-commons/src/testplan.ts b/packages/allure-js-commons/src/current/testplan.ts similarity index 100% rename from packages/allure-js-commons/src/testplan.ts rename to packages/allure-js-commons/src/current/testplan.ts diff --git a/packages/allure-js-commons/src/utils.ts b/packages/allure-js-commons/src/current/utils.ts similarity index 99% rename from packages/allure-js-commons/src/utils.ts rename to packages/allure-js-commons/src/current/utils.ts index 2f434dd6c..7be0a1f6b 100644 --- a/packages/allure-js-commons/src/utils.ts +++ b/packages/allure-js-commons/src/current/utils.ts @@ -2,7 +2,7 @@ import { createHash } from "crypto"; import { readFile } from "fs/promises"; import path from "path"; import { env } from "process"; -import { ExecutableItem, Label, LabelName, Status } from "./model"; +import { ExecutableItem, Label, LabelName, Status } from "./model.js"; export const md5 = (data: string) => createHash("md5").update(data).digest("hex"); diff --git a/packages/allure-js-commons/src/writers/AllureWriter.ts b/packages/allure-js-commons/src/current/writers/AllureWriter.ts similarity index 98% rename from packages/allure-js-commons/src/writers/AllureWriter.ts rename to packages/allure-js-commons/src/current/writers/AllureWriter.ts index 46bb31907..7253698d4 100644 --- a/packages/allure-js-commons/src/writers/AllureWriter.ts +++ b/packages/allure-js-commons/src/current/writers/AllureWriter.ts @@ -1,5 +1,5 @@ import { PathLike } from "fs"; -import { Category, TestResult, TestResultContainer } from "../model"; +import { Category, TestResult, TestResultContainer } from "../model.js"; export interface AllureWriter { writeResult(result: TestResult): void; diff --git a/packages/allure-js-commons/src/writers/FileSystemAllureWriter.ts b/packages/allure-js-commons/src/current/writers/FileSystemAllureWriter.ts similarity index 87% rename from packages/allure-js-commons/src/writers/FileSystemAllureWriter.ts rename to packages/allure-js-commons/src/current/writers/FileSystemAllureWriter.ts index 93c8e70a9..b272513d4 100644 --- a/packages/allure-js-commons/src/writers/FileSystemAllureWriter.ts +++ b/packages/allure-js-commons/src/current/writers/FileSystemAllureWriter.ts @@ -1,9 +1,9 @@ import { PathLike, copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs"; import { join } from "path"; -import { stringify } from "properties"; -import { AllureConfig } from "../AllureConfig"; -import { Category, TestResult, TestResultContainer } from "../model"; -import { AllureWriter } from "./AllureWriter"; +import properties from "properties"; +import { AllureConfig } from "../AllureConfig.js"; +import { Category, TestResult, TestResultContainer } from "../model.js"; +import { AllureWriter } from "./AllureWriter.js"; const writeJson = (path: string, data: unknown): void => { writeFileSync(path, JSON.stringify(data), { encoding: "utf-8" }); @@ -29,7 +29,7 @@ export class FileSystemAllureWriter implements AllureWriter { } writeEnvironmentInfo(info?: Record): void { - const text = stringify(info, { unicode: true }).toString(); + const text = properties.stringify(info, { unicode: true }).toString(); const path = this.buildPath("environment.properties"); writeFileSync(path, text); diff --git a/packages/allure-js-commons/src/writers/InMemoryAllureWriter.ts b/packages/allure-js-commons/src/current/writers/InMemoryAllureWriter.ts similarity index 97% rename from packages/allure-js-commons/src/writers/InMemoryAllureWriter.ts rename to packages/allure-js-commons/src/current/writers/InMemoryAllureWriter.ts index c5c550661..1cb3b67c4 100644 --- a/packages/allure-js-commons/src/writers/InMemoryAllureWriter.ts +++ b/packages/allure-js-commons/src/current/writers/InMemoryAllureWriter.ts @@ -1,6 +1,6 @@ import { PathLike, readFileSync } from "fs"; -import { Category, TestResult, TestResultContainer } from "../model"; -import { AllureWriter } from "./AllureWriter"; +import { Category, TestResult, TestResultContainer } from "../model.js"; +import { AllureWriter } from "./AllureWriter.js"; export interface AllureResults { tests: TestResult[]; diff --git a/packages/allure-js-commons/src/writers/MessageAllureWriter.ts b/packages/allure-js-commons/src/current/writers/MessageAllureWriter.ts similarity index 89% rename from packages/allure-js-commons/src/writers/MessageAllureWriter.ts rename to packages/allure-js-commons/src/current/writers/MessageAllureWriter.ts index 45e2c28ed..58578dc94 100644 --- a/packages/allure-js-commons/src/writers/MessageAllureWriter.ts +++ b/packages/allure-js-commons/src/current/writers/MessageAllureWriter.ts @@ -1,7 +1,7 @@ import { PathLike, readFileSync } from "fs"; -import { stringify } from "properties"; -import { Category, TestResult, TestResultContainer } from "../model"; -import { AllureWriter } from "./AllureWriter"; +import properties from "properties"; +import { Category, TestResult, TestResultContainer } from "../model.js"; +import { AllureWriter } from "./AllureWriter.js"; type EventType = "result" | "container" | "attachment" | "misc"; type Event = { @@ -32,7 +32,7 @@ export class MessageAllureWriter implements AllureWriter { } writeEnvironmentInfo(info?: Record): void { - const text = stringify(info, { unicode: true }).toString(); + const text = properties.stringify(info, { unicode: true }).toString(); sendData("environment.properties", "misc", Buffer.from(text)); } diff --git a/packages/allure-js-commons/src/current/writers/index.ts b/packages/allure-js-commons/src/current/writers/index.ts new file mode 100644 index 000000000..506dddc92 --- /dev/null +++ b/packages/allure-js-commons/src/current/writers/index.ts @@ -0,0 +1,6 @@ +export { AllureWriter } from "./AllureWriter.js"; +export { FileSystemAllureWriter } from "./FileSystemAllureWriter.js"; +export { InMemoryAllureWriter } from "./InMemoryAllureWriter.js"; +export { MessageAllureWriter } from "./MessageAllureWriter.js"; +export { AllureResults } from "./InMemoryAllureWriter.js"; +export * from "./utils.js"; diff --git a/packages/allure-js-commons/src/writers/utils.ts b/packages/allure-js-commons/src/current/writers/utils.ts similarity index 99% rename from packages/allure-js-commons/src/writers/utils.ts rename to packages/allure-js-commons/src/current/writers/utils.ts index 39bfa6722..1a285f6d3 100644 --- a/packages/allure-js-commons/src/writers/utils.ts +++ b/packages/allure-js-commons/src/current/writers/utils.ts @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -import { AttachmentOptions } from "../model"; +import { AttachmentOptions } from "../model.js"; const extensionsByType: Record = { "application/andrew-inset": ".ez", diff --git a/packages/allure-js-commons/src/new/browser/index.ts b/packages/allure-js-commons/src/new/browser/index.ts new file mode 100644 index 000000000..5dabbfc72 --- /dev/null +++ b/packages/allure-js-commons/src/new/browser/index.ts @@ -0,0 +1 @@ +export { AllureBrowserRuntime } from "./runtime.js"; diff --git a/packages/allure-js-commons/src/new/browser/runtime.ts b/packages/allure-js-commons/src/new/browser/runtime.ts new file mode 100644 index 000000000..b55773d6a --- /dev/null +++ b/packages/allure-js-commons/src/new/browser/runtime.ts @@ -0,0 +1,18 @@ +import md5 from "md5"; +import { AllureConfig } from "../framework/AllureConfig"; +import { AllureBaseRuntime, AllureRuntime } from "../framework/AllureRuntime"; + +export class AllureBrowserRuntime extends AllureBaseRuntime implements AllureRuntime { + constructor(config: AllureConfig) { + super(config, { + uuid: () => globalThis.crypto.randomUUID(), + md5, + }); + } + + writeAttachmentFromPath() { + throw new Error( + "Browser Allure runtime doesn't support writting attachments from path! User AllureNodeRuntime instead or alternative methods to write attachments.", + ); + } +} diff --git a/packages/allure-js-commons/src/AllureCommandStep.ts b/packages/allure-js-commons/src/new/framework/AllureCommandStep.ts similarity index 99% rename from packages/allure-js-commons/src/AllureCommandStep.ts rename to packages/allure-js-commons/src/new/framework/AllureCommandStep.ts index 79f5ed888..3d2ec7a5f 100644 --- a/packages/allure-js-commons/src/AllureCommandStep.ts +++ b/packages/allure-js-commons/src/new/framework/AllureCommandStep.ts @@ -1,5 +1,4 @@ import stripAnsi from "strip-ansi"; -import { AllureRuntime } from "./AllureRuntime"; import { AttachmentMetadata, ContentType, @@ -11,7 +10,8 @@ import { Stage, Status, StepMetadata, -} from "./model"; +} from "../model"; +import { AllureRuntime } from "./AllureRuntime"; export type StepBodyFunction = ( this: AllureCommandStepExecutable, diff --git a/packages/allure-js-commons/src/new/framework/AllureConfig.ts b/packages/allure-js-commons/src/new/framework/AllureConfig.ts new file mode 100644 index 000000000..15fa82e37 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureConfig.ts @@ -0,0 +1,7 @@ +import { TestResult } from "../model"; +import { AllureWriter } from "./AllureWriter"; + +export interface AllureConfig { + readonly writer: AllureWriter; + readonly testMapper?: (test: TestResult) => TestResult | null; +} diff --git a/packages/allure-js-commons/src/new/framework/AllureExecutable.ts b/packages/allure-js-commons/src/new/framework/AllureExecutable.ts new file mode 100644 index 000000000..78b6b3067 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureExecutable.ts @@ -0,0 +1,160 @@ +import { + AttachmentOptions, + ContentType, + ExecutableItem, + FixtureResult, + ParameterOptions, + Stage, + Status, + StatusDetails, + StepResult, + TestResult, +} from "../model"; +import { isPromise } from "../utils"; +import { serialize } from "../utils"; +import { stepResult } from "./AllureResults"; +import { isAllStepsEnded, isAnyStepFailed } from "./utils"; + +export class AllureExecutable { + constructor(private readonly info: FixtureResult | TestResult) {} + + get wrappedItem(): FixtureResult | TestResult { + return this.info; + } + + public set name(name: string) { + this.info.name = name; + } + + public set description(description: string | undefined) { + this.info.description = description; + } + + public set descriptionHtml(descriptionHtml: string | undefined) { + this.info.descriptionHtml = descriptionHtml; + } + + public set status(status: Status | undefined) { + this.info.status = status; + } + + public get status(): Status | undefined { + return this.info.status; + } + + public set statusDetails(details: StatusDetails) { + this.info.statusDetails = details; + } + + public set detailsMessage(message: string | undefined) { + this.info.statusDetails.message = message; + } + + public set detailsTrace(trace: string | undefined) { + this.info.statusDetails.trace = trace; + } + + public set stage(stage: Stage) { + this.info.stage = stage; + } + + public parameter(name: string, value: any, options?: ParameterOptions): void { + this.info.parameters.push({ ...options, name, value: serialize(value) }); + } + + public get isAnyStepFailed() { + return isAnyStepFailed(this.info); + } + + public get isAllStepsEnded() { + return isAllStepsEnded(this.info); + } + + /** + * @deprecated use parameter() instead. + */ + public addParameter(name: string, value: string, options?: ParameterOptions): void { + this.parameter(name, value, options); + } + + public addAttachment(name: string, options: ContentType | string | AttachmentOptions, fileName: string): void { + if (typeof options === "string") { + options = { contentType: options }; + } + + this.info.attachments.push({ name, type: options.contentType, source: fileName }); + } + + public startStep(name: string, start?: number): AllureStep { + const result = stepResult(); + + this.info.steps.push(result); + + const allureStep = new AllureStep(result, start); + + allureStep.name = name; + + return allureStep; + } + + public wrap(fun: (...args: any[]) => T) { + return (...args: any[]): T => { + this.stage = Stage.RUNNING; + let result; + try { + result = fun(args); + } catch (error) { + this.stage = Stage.INTERRUPTED; + this.status = Status.BROKEN; + if (error) { + this.detailsMessage = (error as Error).message || ""; + this.detailsTrace = (error as Error).stack || ""; + } + throw error; + } + if (isPromise(result)) { + const promise = result as any as Promise; + return promise + .then((res) => { + this.status = Status.PASSED; + this.stage = Stage.FINISHED; + return res; + }) + .catch((error) => { + this.stage = Stage.INTERRUPTED; + this.status = Status.BROKEN; + if (error) { + this.detailsMessage = (error as Error).message || ""; + this.detailsTrace = (error as Error).stack || ""; + } + throw error; + }) as any as T; + } else { + this.status = Status.PASSED; + this.stage = Stage.FINISHED; + return result; + } + }; + } + + public addStep(step: ExecutableItem): void { + this.info.steps.push(step); + } +} + +// This class is here because of circular dependency with ExecutableItemWrapper +export class AllureStep extends AllureExecutable { + constructor( + // eslint-disable-next-line @typescript-eslint/no-shadow + private readonly stepResult: StepResult, + start: number = Date.now(), + ) { + super(stepResult); + + this.stepResult.start = start; + } + + endStep(stop: number = Date.now()): void { + this.stepResult.stop = stop; + } +} diff --git a/packages/allure-js-commons/src/new/framework/AllureGroup.ts b/packages/allure-js-commons/src/new/framework/AllureGroup.ts new file mode 100644 index 000000000..0a8128b13 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureGroup.ts @@ -0,0 +1,62 @@ +import { TestResultContainer } from "../model"; +import { AllureExecutable } from "./AllureExecutable"; +import { fixtureResult, testResultContainer } from "./AllureResults"; +import { AllureRuntime } from "./AllureRuntime"; +import { AllureTest } from "./AllureTest"; + +export class AllureGroup { + private testResultContainer: TestResultContainer; + + constructor(private readonly runtime: AllureRuntime) { + this.testResultContainer = testResultContainer(runtime.crypto.uuid()); + } + + startGroup(name?: string): AllureGroup { + const group = new AllureGroup(this.runtime); + + this.testResultContainer.children.push(group.uuid); + group.name = name || "Unnamed"; + + return group; + } + + startTest(name?: string, start?: number): AllureTest { + const test = new AllureTest(this.runtime, start); + + this.testResultContainer.children.push(test.uuid); + test.name = name || "Unnamed"; + + return test; + } + + endGroup(): void { + // TODO: test that children ended + this.runtime.writeGroup(this.testResultContainer); + } + + get uuid(): string { + return this.testResultContainer.uuid; + } + + get name(): string { + return this.testResultContainer.name || ""; + } + + set name(name: string) { + this.testResultContainer.name = name; + } + + addBefore(): AllureExecutable { + const result = fixtureResult(); + + this.testResultContainer.befores.push(result); + return new AllureExecutable(result); + } + + addAfter(): AllureExecutable { + const result = fixtureResult(); + + this.testResultContainer.afters.push(result); + return new AllureExecutable(result); + } +} diff --git a/packages/allure-js-commons/src/new/framework/AllureResults.ts b/packages/allure-js-commons/src/new/framework/AllureResults.ts new file mode 100644 index 000000000..dc3e29dae --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureResults.ts @@ -0,0 +1,49 @@ +import { FixtureResult, Stage, Status, StepResult, TestResult, TestResultContainer } from "../model"; + +export type UUIDGenerator = () => string; + +export const testResultContainer = (uuid: string): TestResultContainer => { + return { + uuid, + children: [], + befores: [], + afters: [], + }; +}; + +export const fixtureResult = (): FixtureResult => { + return { + status: Status.BROKEN, + statusDetails: {}, + stage: Stage.PENDING, + steps: [], + attachments: [], + parameters: [], + }; +}; + +export const stepResult = (): StepResult => { + return { + status: undefined, + statusDetails: {}, + stage: Stage.PENDING, + steps: [], + attachments: [], + parameters: [], + }; +}; + +export const testResult = (uuid: string, historyUuid: string): TestResult => { + return { + uuid, + historyId: historyUuid, + status: undefined, + statusDetails: {}, + stage: Stage.PENDING, + steps: [], + attachments: [], + parameters: [], + labels: [], + links: [], + }; +}; diff --git a/packages/allure-js-commons/src/new/framework/AllureRuntime.ts b/packages/allure-js-commons/src/new/framework/AllureRuntime.ts new file mode 100644 index 000000000..3ce286f20 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureRuntime.ts @@ -0,0 +1,103 @@ +import { AttachmentOptions, Category, ContentType, Crypto, TestResult, TestResultContainer } from "../model"; +import { typeToExtension } from "../utils"; +import { AllureConfig } from "./AllureConfig"; +import { AllureGroup } from "./AllureGroup"; +import { AllureWriter } from "./AllureWriter"; + +export interface AllureRuntime { + writer: AllureWriter; + + crypto: Crypto; + + startGroup(name?: string): AllureGroup; + + buildAttachmentFileName(options: ContentType | string | AttachmentOptions): string; + + writeResult(result: TestResult): void; + + writeGroup(result: TestResultContainer): void; + + writeAttachment( + content: Buffer | string, + options: ContentType | string | AttachmentOptions, + encoding?: BufferEncoding, + ): string; + + writeEnvironmentInfo(info?: Record): void; + + writeCategoriesDefinitions(categories: Category[]): void; +} + +export abstract class AllureBaseRuntime implements AllureRuntime { + writer: AllureWriter; + + crypto: Crypto; + + constructor( + private config: AllureConfig, + crypto: Crypto, + ) { + this.writer = config.writer; + this.crypto = crypto; + } + + startGroup(name?: string): AllureGroup { + const allureContainer = new AllureGroup(this); + + allureContainer.name = name || "Unnamed"; + + return allureContainer; + } + + buildAttachmentFileName(options: ContentType | string | AttachmentOptions): string { + if (typeof options === "string") { + options = { contentType: options }; + } + + const extension = typeToExtension(options); + + return `${this.crypto.uuid()}-attachment${extension}`; + } + + writeResult(result: TestResult): void { + const modifiedResult = this.config.testMapper !== undefined ? this.config.testMapper(result) : result; + + if (modifiedResult != null) { + this.writer.writeResult(modifiedResult); + } + } + + writeGroup(result: TestResultContainer): void { + this.writer.writeGroup(result); + } + + writeAttachment( + content: Buffer | string, + options: ContentType | string | AttachmentOptions, + encoding?: BufferEncoding, + ): string { + const fileName = this.buildAttachmentFileName(options); + + this.writer.writeAttachment(fileName, content, encoding); + + return fileName; + } + + writeEnvironmentInfo(info?: Record): void { + this.writer.writeEnvironmentInfo(info || process.env); + } + + writeCategoriesDefinitions(categories: Category[]): void { + const serializedCategories = categories.map((c) => { + if (c.messageRegex instanceof RegExp) { + c.messageRegex = c.messageRegex.source; + } + if (c.traceRegex instanceof RegExp) { + c.traceRegex = c.traceRegex.source; + } + return c; + }); + + this.writer.writeCategoriesDefinitions(serializedCategories); + } +} diff --git a/packages/allure-js-commons/src/new/framework/AllureRuntimeAPI.ts b/packages/allure-js-commons/src/new/framework/AllureRuntimeAPI.ts new file mode 100644 index 000000000..c97ffe381 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureRuntimeAPI.ts @@ -0,0 +1,160 @@ +import { AttachmentOptions, Category, ContentType, LabelName, LinkType, ParameterOptions, Status } from "../model"; +import { AllureExecutable } from "./AllureExecutable"; +import { AllureRuntime } from "./AllureRuntime"; +import { AllureTest } from "./AllureTest"; + +// TODO: Allure abstract class contains all these methods, so don't need to duplicate anything +export interface AllureRuntimeApiInterface { + label(name: string, value: string): void; + + parameter(name: string, value: any, options?: ParameterOptions): void; + + link(url: string, name?: string, type?: string): void; + + attachment(content: string | Buffer, type: string): void; + + epic(epic: string): void; + + feature(feature: string): void; + + story(story: string): void; + + suite(name: string): void; + + parentSuite(name: string): void; + + subSuite(name: string): void; + + owner(owner: string): void; + + severity(severity: string): void; + + layer(layer: string): void; + + id(allureId: string): void; + + tag(tag: string): void; + + issue(name: string, url: string): void; + + tms(name: string, url: string): void; + + description(markdown: string): void; + + descriptionHtml(html: string): void; + + testCaseId(id: string): void; + + historyId(id: string): void; +} + +export abstract class Allure implements Omit { + protected abstract get currentTest(): AllureTest; // test only + protected abstract get currentExecutable(): AllureExecutable; // step or test + + protected constructor(protected runtime: AllureRuntime) {} + + testCaseId(id: string): void { + this.currentTest.testCaseId = id; + } + + historyId(id: string): void { + this.currentTest.historyId = id; + } + + public epic(epic: string): void { + this.label(LabelName.EPIC, epic); + } + + public feature(feature: string): void { + this.label(LabelName.FEATURE, feature); + } + + public story(story: string): void { + this.label(LabelName.STORY, story); + } + + public suite(name: string): void { + this.label(LabelName.SUITE, name); + } + + public parentSuite(name: string): void { + this.label(LabelName.PARENT_SUITE, name); + } + + public subSuite(name: string): void { + this.label(LabelName.SUB_SUITE, name); + } + + public label(name: string, value: string): void { + this.currentTest.addLabel(name, value); + } + + public parameter(name: string, value: any, options?: ParameterOptions): void { + this.currentExecutable.parameter(name, value, options); + } + + public link(url: string, name?: string, type?: string): void { + this.currentTest.addLink(url, name, type); + } + + public issue(name: string, url: string): void { + this.link(url, name, LinkType.ISSUE); + } + + public tms(name: string, url: string): void { + this.link(url, name, LinkType.TMS); + } + + public description(markdown: string): void { + this.currentExecutable.description = markdown; + } + + public descriptionHtml(html: string): void { + this.currentExecutable.descriptionHtml = html; + } + + public owner(owner: string): void { + this.label(LabelName.OWNER, owner); + } + + public severity(severity: string): void { + this.label(LabelName.SEVERITY, severity); + } + + public layer(layer: string): void { + this.label(LabelName.LAYER, layer); + } + + public id(allureId: string): void { + this.label(LabelName.ALLURE_ID, allureId); + } + + public tag(tag: string): void { + this.label(LabelName.TAG, tag); + } + + public writeEnvironmentInfo(info: Record): void { + this.runtime.writeEnvironmentInfo(info); + } + + public writeCategoriesDefinitions(categories: Category[]): void { + this.runtime.writeCategoriesDefinitions(categories); + } + + public abstract attachment( + name: string, + content: Buffer | string, + options: ContentType | string | AttachmentOptions, + ): void; + + public abstract logStep(name: string, status?: Status): void; + + public abstract step(name: string, body: (step: StepInterface) => T): T; +} + +export interface StepInterface { + parameter(name: string, value: string): void; + + name(name: string): void; +} diff --git a/packages/allure-js-commons/src/new/framework/AllureTest.ts b/packages/allure-js-commons/src/new/framework/AllureTest.ts new file mode 100644 index 000000000..3a2b66279 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureTest.ts @@ -0,0 +1,187 @@ +import { ExecutableItem, LinkType, MetadataMessage, TestResult } from "../model"; +import { AllureCommandStepExecutable } from "./AllureCommandStep"; +import { AllureExecutable } from "./AllureExecutable"; +import { testResult } from "./AllureResults"; +import { AllureRuntime } from "./AllureRuntime"; + +// import { getLabelsFromEnv } from "./utils"; + +export class AllureTest extends AllureExecutable { + private readonly testResult: TestResult; + private historyIdSetManually = false; + runtime: AllureRuntime; + + constructor(runtime: AllureRuntime, start: number = Date.now()) { + const result = testResult(runtime.crypto.uuid(), runtime.crypto.uuid()); + + super(result); + + // TODO: create AllureTest for node or collect labels from env in runtime + // const globalLabels = getLabelsFromEnv(); + + this.runtime = runtime; + this.testResult = this.wrappedItem as TestResult; + this.testResult.start = start; + + // globalLabels.forEach((label) => this.addLabel(label.name, label.value)); + } + + endTest(stop: number = Date.now()): void { + this.testResult.stop = stop; + this.runtime.writeResult(this.testResult); + // TODO: test that child steps ended + } + + get uuid(): string { + return this.testResult.uuid; + } + + set historyId(id: string) { + this.historyIdSetManually = true; + this.testResult.historyId = id; + } + + set fullName(fullName: string) { + this.testResult.fullName = fullName; + } + + set testCaseId(testCaseId: string) { + this.testResult.testCaseId = testCaseId; + } + + addLabel(name: string, value: string): void { + this.testResult.labels.push({ name, value }); + } + + addLink(url: string, name?: string, type?: string): void { + this.testResult.links.push({ name, url, type }); + } + + addIssueLink(url: string, name: string): void { + this.addLink(url, name, LinkType.ISSUE); + } + + addTmsLink(url: string, name: string): void { + this.addLink(url, name, LinkType.TMS); + } + + /** + * Calculates test `historyId` based on `testCaseId` and parameters + * Does nothing if `historyId` is already set + */ + calculateHistoryId(): void { + if (this.historyIdSetManually) { + return; + } + + const tcId = this.testResult.testCaseId + ? this.testResult.testCaseId + : this.testResult.fullName + ? this.runtime.crypto.md5(this.testResult.fullName) + : null; + + if (!tcId) { + return; + } + + const paramsString = this.testResult.parameters + .filter((p) => !p?.excluded) + .sort((a, b) => a.name?.localeCompare(b?.name) || a.value?.localeCompare(b?.value)) + .map((p) => `${p.name ?? "null"}:${p.value ?? "null"}`) + .join(","); + const paramsHash = this.runtime.crypto.md5(paramsString); + + this.historyId = `${tcId}:${paramsHash}`; + } + + /** + * Processes metadata message recieved and applies all it's fields to the test + * + * @example + * ```typescript + * // apply entire metadata to the test + * test.applyMetadata(metadata) + * + * // will apply everything except steps + * test.applyMetadata(metadata, () => {}) + * + * // will apply steps metadata to another test + * testA.applyMetadata(step, () => { + * testB.addStep(step) + * }) + * ``` + * + * @param metadata Metadata message recieved from Allure Runtime API + * @param stepApplyFn Function that processes metadata. By default, all the steps + * will be added to the test + */ + applyMetadata(metadata: Partial, stepApplyFn?: (step: ExecutableItem) => void) { + const { + attachments = [], + labels = [], + links = [], + parameter = [], + steps = [], + description, + descriptionHtml, + displayName, + historyId, + testCaseId, + } = metadata; + + labels.forEach((label) => { + this.addLabel(label.name, label.value); + }); + links.forEach((link) => { + this.addLink(link.url, link.name, link.type); + }); + parameter.forEach((param) => { + this.parameter(param.name, param.value, { + excluded: param.excluded, + mode: param.mode, + }); + }); + attachments.forEach((attachment) => { + const attachmentFilename = this.runtime.writeAttachment(attachment.content, attachment.type, attachment.encoding); + + this.addAttachment( + attachment.name, + { + contentType: attachment.type, + }, + attachmentFilename, + ); + }); + + if (description) { + this.description = description; + } + + if (descriptionHtml) { + this.descriptionHtml = descriptionHtml; + } + + if (displayName) { + this.name = displayName; + } + + if (testCaseId) { + this.testCaseId = testCaseId; + } + + if (historyId) { + this.historyId = historyId; + } + + steps.forEach((stepMetadata) => { + const step = AllureCommandStepExecutable.toExecutableItem(this.runtime, stepMetadata); + + if (stepApplyFn) { + stepApplyFn(step); + return; + } + + this.addStep(step); + }); + } +} diff --git a/packages/allure-js-commons/src/new/framework/AllureWriter.ts b/packages/allure-js-commons/src/new/framework/AllureWriter.ts new file mode 100644 index 000000000..f632f6b42 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/AllureWriter.ts @@ -0,0 +1,15 @@ +import { Category, TestResult, TestResultContainer } from "../model"; + +export interface AllureWriter { + writeResult(result: TestResult): void; + + writeGroup(result: TestResultContainer): void; + + writeAttachment(name: string, content: Buffer | string, encoding?: BufferEncoding): void; + + writeAttachmentFromPath(from: string, distFileName: string): void; + + writeEnvironmentInfo(info: Record): void; + + writeCategoriesDefinitions(categories: Category[]): void; +} diff --git a/packages/allure-js-commons/src/new/framework/index.ts b/packages/allure-js-commons/src/new/framework/index.ts new file mode 100644 index 000000000..de6419618 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/index.ts @@ -0,0 +1,20 @@ +export { AllureCommandStep, AllureCommandStepExecutable } from "./AllureCommandStep.js"; +export { AllureConfig } from "./AllureConfig.js"; +export { AllureExecutable, AllureStep } from "./AllureExecutable.js"; +export { AllureGroup } from "./AllureGroup.js"; +export { AllureRuntime } from "./AllureRuntime.js"; +export { Allure, AllureRuntimeApiInterface, StepInterface } from "./AllureRuntimeAPI.js"; +export { AllureTest } from "./AllureTest.js"; +export { AllureWriter } from "./AllureWriter.js"; +export { + isAllStepsEnded, + isAnyStepFailed, + getSuitesLabels, + getStatusFromError, + allureIdRegexpGlobal, + allureIdRegexp, + allureLabelRegexp, + allureLabelRegexpGlobal, + extractMetadataFromString, +} from "./utils.js"; +export { AllureInMemoryAllureWriter } from "./writers/index.js"; diff --git a/packages/allure-js-commons/src/new/framework/utils.ts b/packages/allure-js-commons/src/new/framework/utils.ts new file mode 100644 index 000000000..dd0dc53f8 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/utils.ts @@ -0,0 +1,99 @@ +import { Label } from "../../current/model"; +import { ExecutableItem, LabelName, Status } from "../model"; + +export const allureIdRegexp = /@?allure.id[:=](?[^\s]+)/; + +export const allureIdRegexpGlobal = new RegExp(allureIdRegexp, "g"); + +export const allureLabelRegexp = /@?allure.label.(?[^\s]+?)[:=](?[^\s]+)/; + +export const allureLabelRegexpGlobal = new RegExp(allureLabelRegexp, "g"); + +export const isAnyStepFailed = (item: ExecutableItem): boolean => { + const isFailed = item.status === Status.FAILED; + + if (isFailed || item.steps.length === 0) { + return isFailed; + } + + return !!item.steps.find((step) => isAnyStepFailed(step)); +}; + +export const isAllStepsEnded = (item: ExecutableItem): boolean => { + return item.steps.every((val) => val.stop && isAllStepsEnded(val)); +}; + +export const getStatusFromError = (error: Error): Status => { + switch (true) { + /** + * Native `node:assert` and `chai` (`vitest` uses it under the hood) throw `AssertionError` + * `jest` throws `JestAssertionError` instance + */ + case /assert/gi.test(error.constructor.name): + case /assert/gi.test(error.name): + case /assert/gi.test(error.message): + return Status.FAILED; + default: + return Status.BROKEN; + } +}; + +export const getSuitesLabels = (suites: string[]): Label[] => { + if (suites.length === 0) { + return []; + } + + const [parentSuite, suite, ...subSuites] = suites; + const labels: Label[] = []; + + if (parentSuite) { + labels.push({ + name: LabelName.PARENT_SUITE, + value: parentSuite, + }); + } + + if (suite) { + labels.push({ + name: LabelName.SUITE, + value: suite, + }); + } + + if (subSuites.length > 0) { + labels.push({ + name: LabelName.SUB_SUITE, + value: subSuites.join(" > "), + }); + } + + return labels; +}; + +export const extractMetadataFromString = ( + title: string, +): { + labels: Label[]; + cleanTitle: string; +} => { + const labels = [] as Label[]; + + title.split(" ").forEach((val) => { + const idValue = val.match(allureIdRegexp)?.groups?.id; + + if (idValue) { + labels.push({ name: LabelName.ALLURE_ID, value: idValue }); + } + + const labelMatch = val.match(allureLabelRegexp); + const { name, value } = labelMatch?.groups || {}; + + if (name && value) { + labels?.push({ name, value }); + } + }); + + const cleanTitle = title.replace(allureLabelRegexpGlobal, "").replace(allureIdRegexpGlobal, "").trim(); + + return { labels, cleanTitle }; +}; diff --git a/packages/allure-js-commons/src/new/framework/writers/AllureInMemoryWriter.ts b/packages/allure-js-commons/src/new/framework/writers/AllureInMemoryWriter.ts new file mode 100644 index 000000000..9ddb15fcb --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/writers/AllureInMemoryWriter.ts @@ -0,0 +1,74 @@ +import { AllureResults, Category, TestResult, TestResultContainer } from "../../model"; +import { AllureWriter } from "../AllureWriter"; + +export class AllureInMemoryAllureWriter implements AllureWriter, AllureResults { + public groups: TestResultContainer[] = []; + public tests: TestResult[] = []; + public attachments: Record = {}; + public categories?: Category[]; + public envInfo?: Record; + + public writeGroup(result: TestResultContainer): void { + this.groups.push(result); + } + + public writeResult(result: TestResult): void { + this.tests.push(result); + } + + public writeAttachment(name: string, content: Buffer | string): void { + this.attachments[name] = content; + } + + public writeAttachmentFromPath(from: string, toFileName: string): void { + throw new Error( + "Can't write attachment from path because generic writer doesn't implement this logic! Use AllureInMemoryWriter for node.js.", + ); + } + + public writeCategoriesDefinitions(categories: Category[]): void { + if (this.categories) { + // eslint-disable-next-line no-console + console.warn("overwriting existing categories"); + } + this.categories = categories; + } + + public writeEnvironmentInfo(envInfo?: Record): void { + if (this.envInfo) { + // eslint-disable-next-line no-console + console.warn("overwriting existing environment info"); + } + this.envInfo = envInfo; + } + + public reset(): void { + this.groups = []; + this.tests = []; + this.attachments = {}; + } + + public getMaybeTestByName(name: string): TestResult | undefined { + return this.tests.find((t) => t.name === name); + } + + public getTestByName(name: string): TestResult { + const res: TestResult | undefined = this.getMaybeTestByName(name); + if (!res) { + throw new Error(`Test not found: ${name}`); + } + return res; + } + + public getMaybeGroupByName(name: string): TestResultContainer | undefined { + return this.groups.find((g) => g.name === name); + } + + public getGroupByName(name: string): TestResultContainer { + const res: TestResultContainer | undefined = this.getMaybeGroupByName(name); + if (!res) { + throw new Error(`Group not found: ${name}`); + } + return res; + } +} diff --git a/packages/allure-js-commons/src/new/framework/writers/index.ts b/packages/allure-js-commons/src/new/framework/writers/index.ts new file mode 100644 index 000000000..9b0a07356 --- /dev/null +++ b/packages/allure-js-commons/src/new/framework/writers/index.ts @@ -0,0 +1 @@ +export { AllureInMemoryAllureWriter } from "./AllureInMemoryWriter.js"; diff --git a/packages/allure-js-commons/src/new/index.ts b/packages/allure-js-commons/src/new/index.ts new file mode 100644 index 000000000..948aa94bf --- /dev/null +++ b/packages/allure-js-commons/src/new/index.ts @@ -0,0 +1,29 @@ +export { + Crypto, + AttachmentMetadata, + StepMetadata, + MetadataMessage, + Attachment, + AttachmentOptions, + Label, + Link, + Parameter, + ParameterOptions, + StatusDetails, + ExecutableItem, + FixtureResult, + StepResult, + TestResult, + TestResultContainer, + Category, + ExecutorInfo, + Status, + Stage, + LabelName, + Severity, + ContentType, + LinkType, + ImageDiffAttachment, + AllureResults, +} from "./model"; +export * from "./framework/index.js"; diff --git a/packages/allure-js-commons/src/new/model.ts b/packages/allure-js-commons/src/new/model.ts new file mode 100644 index 000000000..b3a2b8f5c --- /dev/null +++ b/packages/allure-js-commons/src/new/model.ts @@ -0,0 +1,217 @@ +export const ALLURE_METADATA_CONTENT_TYPE = "application/vnd.allure.metadata+json"; +export const ALLURE_IMAGEDIFF_CONTENT_TYPE = "application/vnd.allure.image.diff"; +export const ALLURE_SKIPPED_BY_TEST_PLAN_LABEL = "allure-skipped-by-test-plan"; + +export interface Crypto { + uuid: () => string; + md5: (str: string) => string; +} + +export interface AttachmentMetadata { + name: string; + type: string; + content: string; + encoding: BufferEncoding; +} + +export interface StepMetadata extends Omit { + steps: StepMetadata[]; + attachments: AttachmentMetadata[]; +} + +export interface MetadataMessage { + attachments?: AttachmentMetadata[]; + displayName?: string; + testCaseId?: string; + historyId?: string; + labels?: Label[]; + links?: Link[]; + parameter?: Parameter[]; + description?: string; + descriptionHtml?: string; + steps?: StepMetadata[]; +} + +export interface Attachment { + name: string; + type: string; + source: string; +} + +export interface AttachmentOptions { + contentType: ContentType | string; + fileExtension?: string; +} + +export interface Label { + name: LabelName | string; + value: string; +} + +export interface Link { + name?: string; + url: string; + type?: LinkType | string; +} + +export interface Parameter { + name: string; + value: string; + excluded?: boolean; + mode?: "hidden" | "masked" | "default"; +} + +export type ParameterOptions = Pick; + +export interface StatusDetails { + message?: string; + trace?: string; +} + +export interface ExecutableItem { + name?: string; + status?: Status; + statusDetails: StatusDetails; + stage: Stage; + description?: string; + descriptionHtml?: string; + steps: StepResult[]; + attachments: Attachment[]; + parameters: Parameter[]; + start?: number; + stop?: number; +} + +export type FixtureResult = ExecutableItem; + +export type StepResult = ExecutableItem; + +export interface TestResult extends ExecutableItem { + uuid: string; + historyId: string; + fullName?: string; + testCaseId?: string; + labels: Label[]; + links: Link[]; +} + +export interface TestResultContainer { + uuid: string; + name?: string; + children: string[]; + befores: FixtureResult[]; + afters: FixtureResult[]; +} + +export interface Category { + name?: string; + description?: string; + descriptionHtml?: string; + messageRegex?: string | RegExp; + traceRegex?: string | RegExp; + matchedStatuses?: Status[]; + flaky?: boolean; +} + +export interface ExecutorInfo { + name?: string; + type?: string; + url?: string; + buildOrder?: number; + buildName?: string; + buildUrl?: string; + reportUrl?: string; + reportName?: string; +} + +/* eslint-disable no-shadow */ +export enum Status { + FAILED = "failed", + BROKEN = "broken", + PASSED = "passed", + SKIPPED = "skipped", +} + +/* eslint-disable no-shadow */ +export enum Stage { + SCHEDULED = "scheduled", + RUNNING = "running", + FINISHED = "finished", + PENDING = "pending", + INTERRUPTED = "interrupted", +} + +/* eslint-disable no-shadow */ +export enum LabelName { + ALLURE_ID = "ALLURE_ID", + /** + * @deprecated please use ALLURE_ID instead + */ + AS_ID = ALLURE_ID, + SUITE = "suite", + PARENT_SUITE = "parentSuite", + SUB_SUITE = "subSuite", + EPIC = "epic", + FEATURE = "feature", + STORY = "story", + SEVERITY = "severity", + TAG = "tag", + OWNER = "owner", + LEAD = "lead", + HOST = "host", + THREAD = "thread", + TEST_METHOD = "testMethod", + TEST_CLASS = "testClass", + PACKAGE = "package", + FRAMEWORK = "framework", + LANGUAGE = "language", + LAYER = "layer", +} + +/* eslint-disable no-shadow */ +export enum Severity { + BLOCKER = "blocker", + CRITICAL = "critical", + NORMAL = "normal", + MINOR = "minor", + TRIVIAL = "trivial", +} + +/* eslint-disable no-shadow */ +export enum ContentType { + TEXT = "text/plain", + XML = "application/xml", + HTML = "text/html", + CSV = "text/csv", + TSV = "text/tab-separated-values", + CSS = "text/css", + URI = "text/uri-list", + SVG = "image/svg+xml", + PNG = "image/png", + JSON = "application/json", + ZIP = "application/zip", + WEBM = "video/webm", + JPEG = "image/jpeg", + MP4 = "video/mp4", +} + +/* eslint-disable no-shadow */ +export enum LinkType { + ISSUE = "issue", + TMS = "tms", +} + +export interface ImageDiffAttachment { + expected: string | undefined; // data:image;base64, + actual: string | undefined; // data:image;base64, + diff: string | undefined; // data:image;base64, + name: string; +} + +export interface AllureResults { + tests: TestResult[]; + groups: TestResultContainer[]; + attachments: Record; + envInfo?: Record; + categories?: Category[]; +} diff --git a/packages/allure-js-commons/src/new/node/index.ts b/packages/allure-js-commons/src/new/node/index.ts new file mode 100644 index 000000000..1e37ee6cb --- /dev/null +++ b/packages/allure-js-commons/src/new/node/index.ts @@ -0,0 +1,12 @@ +export { AllureNodeRuntime } from "./runtime.js"; +export { TestPlanV1, parseTestPlan } from "./testplan.js"; +export { + getLabelsFromEnv, + escapeRegExp, + readImageAsBase64, + // TODO: replace with `strip-ansi` package (is already used for jest integration) + stripAscii, + allureReportFolder, + defaultReportFolder, +} from "./utils.js"; +export { AllureInMemoryWriter, FileSystemAllureWriter, MessageAllureWriter } from "./writers/index.js"; diff --git a/packages/allure-js-commons/src/new/node/runtime.ts b/packages/allure-js-commons/src/new/node/runtime.ts new file mode 100644 index 000000000..589ada3c6 --- /dev/null +++ b/packages/allure-js-commons/src/new/node/runtime.ts @@ -0,0 +1,25 @@ +import { createHash, randomUUID } from "crypto"; +import { AllureConfig } from "../framework/AllureConfig.js"; +import { AllureBaseRuntime, AllureRuntime } from "../framework/AllureRuntime.js"; +import { AttachmentOptions, ContentType } from "../model.js"; + +export class AllureNodeRuntime extends AllureBaseRuntime implements AllureRuntime { + constructor(config: AllureConfig) { + super(config, { + uuid: () => { + return randomUUID(); + }, + md5: (data: string) => { + return createHash("md5").update(data).digest("hex"); + }, + }); + } + + writeAttachmentFromPath(fromPath: string, options: ContentType | string | AttachmentOptions): string { + const fileName = this.buildAttachmentFileName(options); + + this.writer.writeAttachmentFromPath(fromPath, fileName); + + return fileName; + } +} diff --git a/packages/allure-js-commons/src/new/node/testplan.ts b/packages/allure-js-commons/src/new/node/testplan.ts new file mode 100644 index 000000000..56ad83267 --- /dev/null +++ b/packages/allure-js-commons/src/new/node/testplan.ts @@ -0,0 +1,31 @@ +import fs from "fs"; + +export interface TestPlanV1 { + version: "1.0"; + tests: { + id: string | number; + selector: string; + }[]; +} + +export const parseTestPlan = (): TestPlanV1 | undefined => { + const testPlanPath = process.env.ALLURE_TESTPLAN_PATH; + + if (!testPlanPath) { + return undefined; + } + + try { + const file = fs.readFileSync(testPlanPath, "utf8"); + const testPlan = JSON.parse(file) as TestPlanV1; + + // Execute all tests if test plan is empty + if ((testPlan.tests || []).length === 0) { + return undefined; + } + + return testPlan; + } catch (e) { + return undefined; + } +}; diff --git a/packages/allure-js-commons/src/new/node/utils.ts b/packages/allure-js-commons/src/new/node/utils.ts new file mode 100644 index 000000000..86ae93a28 --- /dev/null +++ b/packages/allure-js-commons/src/new/node/utils.ts @@ -0,0 +1,62 @@ +import { readFile } from "fs/promises"; +import path from "path"; +import { env } from "process"; +import { Label } from "../model"; + +export const getLabelsFromEnv = (): Label[] => { + const envKeys = Object.keys(env); + const labels: Label[] = []; + + envKeys.forEach((key) => { + const labelRegexp = /^ALLURE_LABEL_(?.+)$/; + const match = key.match(labelRegexp); + if (match) { + const labelName = match.groups?.labelName; + const envValue = process.env[key]; + if (labelName && envValue) { + labels.push({ name: labelName.toLocaleLowerCase(), value: envValue }); + } + } + }); + + return labels; +}; + +const reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + +export const escapeRegExp = (value: string): string => { + return reHasRegExpChar.test(value) ? value.replace(reRegExpChar, "\\$&") : value; +}; + +export const readImageAsBase64 = async (filePath: string): Promise => { + try { + const file = await readFile(filePath, { encoding: "base64" }); + return file ? `data:image/png;base64,${file}` : undefined; + } catch (e) { + return undefined; + } +}; + +const asciiRegex = new RegExp( + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", // eslint-disable-line no-control-regex + "g", +); + +export const stripAscii = (str: string): string => { + return str.replace(asciiRegex, ""); +}; + +export const allureReportFolder = (outputFolder?: string): string => { + if (process.env.ALLURE_RESULTS_DIR) { + return path.resolve(process.cwd(), process.env.ALLURE_RESULTS_DIR); + } + if (outputFolder) { + return outputFolder; + } + return defaultReportFolder(); +}; + +export const defaultReportFolder = (): string => { + return path.resolve(process.cwd(), "allure-results"); +}; diff --git a/packages/allure-js-commons/src/new/node/writers/FileSystemAllureWriter.ts b/packages/allure-js-commons/src/new/node/writers/FileSystemAllureWriter.ts new file mode 100644 index 000000000..a8f10051f --- /dev/null +++ b/packages/allure-js-commons/src/new/node/writers/FileSystemAllureWriter.ts @@ -0,0 +1,56 @@ +import { PathLike, copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs"; +import { join } from "path"; +import properties from "properties"; +import { AllureWriter } from "../../framework/AllureWriter"; +import { Category, TestResult, TestResultContainer } from "../../model"; + +const writeJson = (path: string, data: unknown): void => { + writeFileSync(path, JSON.stringify(data), "utf8"); +}; + +export class FileSystemAllureWriter implements AllureWriter { + constructor(private config: { resultsDir: string }) { + // TODO: create results dir every time we write something + if (!existsSync(this.config.resultsDir)) { + mkdirSync(this.config.resultsDir, { + recursive: true, + }); + } + } + + writeAttachment(name: string, content: Buffer | string, encoding: BufferEncoding = "utf-8"): void { + const path = this.buildPath(name); + writeFileSync(path, content, encoding); + } + + writeAttachmentFromPath(from: PathLike, distFileName: string): void { + const to = this.buildPath(distFileName); + copyFileSync(from, to); + } + + writeEnvironmentInfo(info?: Record): void { + const text = properties.stringify(info, { unicode: true }).toString(); + const path = this.buildPath("environment.properties"); + + writeFileSync(path, text); + } + + writeCategoriesDefinitions(categories: Category[]): void { + const path = this.buildPath("categories.json"); + writeJson(path, categories); + } + + writeGroup(result: TestResultContainer): void { + const path = this.buildPath(`${result.uuid}-container.json`); + writeJson(path, result); + } + + writeResult(result: TestResult): void { + const path = this.buildPath(`${result.uuid}-result.json`); + writeJson(path, result); + } + + private buildPath(name: string): string { + return join(this.config.resultsDir, name); + } +} diff --git a/packages/allure-js-commons/src/new/node/writers/InMemoryAllureWriter.ts b/packages/allure-js-commons/src/new/node/writers/InMemoryAllureWriter.ts new file mode 100644 index 000000000..2dc46f8ce --- /dev/null +++ b/packages/allure-js-commons/src/new/node/writers/InMemoryAllureWriter.ts @@ -0,0 +1,8 @@ +import { PathLike, readFileSync } from "fs"; +import { AllureInMemoryAllureWriter as CommonInMemoryWriter } from "../../framework/writers/AllureInMemoryWriter"; + +export class AllureInMemoryWriter extends CommonInMemoryWriter { + public writeAttachmentFromPath(from: PathLike, toFileName: string): void { + this.attachments[toFileName] = readFileSync(from); + } +} diff --git a/packages/allure-js-commons/src/new/node/writers/MessageAllureWriter.ts b/packages/allure-js-commons/src/new/node/writers/MessageAllureWriter.ts new file mode 100644 index 000000000..5fde8de78 --- /dev/null +++ b/packages/allure-js-commons/src/new/node/writers/MessageAllureWriter.ts @@ -0,0 +1,50 @@ +import { PathLike, readFileSync } from "fs"; +import properties from "properties"; +import { AllureWriter } from "../../framework/AllureWriter"; +import { Category, TestResult, TestResultContainer } from "../../model"; + +type EventType = "result" | "container" | "attachment" | "misc"; +type Event = { + path: string; + type: EventType; + data: string; +}; + +const sendEvent = (event: Event): void => { + process.send?.(JSON.stringify(event)); +}; + +const sendData = (path: string, type: EventType, data: Buffer): void => { + sendEvent({ path, type, data: data.toString("base64") }); +}; + +const writeJson = (path: string, type: EventType, data: any): void => { + sendData(path, type, Buffer.from(JSON.stringify(data))); +}; + +export class MessageAllureWriter implements AllureWriter { + writeAttachment(name: string, content: Buffer | string, encoding: BufferEncoding = "utf-8"): void { + sendData(name, "attachment", typeof content === "string" ? Buffer.from(content, encoding) : content); + } + + writeAttachmentFromPath(from: PathLike, distFileName: string): void { + sendData(distFileName, "attachment", readFileSync(from)); + } + + writeEnvironmentInfo(info?: Record): void { + const text = properties.stringify(info, { unicode: true }).toString(); + sendData("environment.properties", "misc", Buffer.from(text)); + } + + writeCategoriesDefinitions(categories: Category[]): void { + writeJson("categories.json", "misc", categories); + } + + writeGroup(result: TestResultContainer): void { + writeJson(`${result.uuid}-container.json`, "container", result); + } + + writeResult(result: TestResult): void { + writeJson(`${result.uuid}-result.json`, "result", result); + } +} diff --git a/packages/allure-js-commons/src/new/node/writers/index.ts b/packages/allure-js-commons/src/new/node/writers/index.ts new file mode 100644 index 000000000..f51cefacb --- /dev/null +++ b/packages/allure-js-commons/src/new/node/writers/index.ts @@ -0,0 +1,3 @@ +export { FileSystemAllureWriter } from "./FileSystemAllureWriter.js"; +export { AllureInMemoryWriter } from "./InMemoryAllureWriter.js"; +export { MessageAllureWriter } from "./MessageAllureWriter.js"; diff --git a/packages/allure-js-commons/src/new/utils.ts b/packages/allure-js-commons/src/new/utils.ts new file mode 100644 index 000000000..b987ea134 --- /dev/null +++ b/packages/allure-js-commons/src/new/utils.ts @@ -0,0 +1,923 @@ +/* eslint-disable max-lines */ +import { AttachmentOptions } from "./model.js"; + +const EXTENSIONS_BY_TYPE: Record = { + "application/andrew-inset": ".ez", + "application/applixware": ".aw", + "application/atom+xml": ".atom", + "application/atomcat+xml": ".atomcat", + "application/atomsvc+xml": ".atomsvc", + "application/bizagi-modeler": ".bpm", + "application/cbor": ".cbor", + "application/ccxml+xml": ".ccxml", + "application/coreldraw": ".cdr", + "application/cu-seeme": ".cu", + "application/dash+xml": ".mpd", + "application/davmount+xml": ".davmount", + "application/dif+xml": ".dif", + "application/dita+xml; format=map": ".ditamap", + "application/dita+xml; format=topic": ".dita", + "application/dita+xml; format=val": ".ditaval", + "application/ecmascript": ".ecma", + "application/emma+xml": ".emma", + "application/envi.hdr": ".hdr", + "application/epub+zip": ".epub", + "application/fits": ".fits", + "application/font-tdpfr": ".pfr", + "application/gzip": ".gz", + "application/hyperstudio": ".stk", + "application/illustrator": ".ai", + "application/java-archive": ".jar", + "application/java-serialized-object": ".ser", + "application/java-vm": ".class", + "application/javascript": ".js", + "application/json": ".json", + "application/lost+xml": ".lostxml", + "application/mac-binhex40": ".hqx", + "application/mac-compactpro": ".cpt", + "application/manifest+json": ".webmanifest", + "application/marc": ".mrc", + "application/mathematica": ".ma", + "application/mathml+xml": ".mathml", + "application/mbox": ".mbox", + "application/mediaservercontrol+xml": ".mscml", + "application/mp4": ".mp4s", + "application/msword": ".doc", + "application/mxf": ".mxf", + "application/octet-stream": ".bin", + "application/oda": ".oda", + "application/oebps-package+xml": ".opf", + "application/ogg": ".ogx", + "application/onenote": ".onetmp", + "application/onenote; format=one": ".one", + "application/onenote; format=onetoc2": ".onetoc", + "application/onenote; format=package": ".onepkg", + "application/patch-ops-error+xml": ".xer", + "application/pdf": ".pdf", + "application/pgp-encrypted": ".pgp", + "application/pgp-signature": ".asc", + "application/pics-rules": ".prf", + "application/pkcs7-mime": ".p7m", + "application/pkcs7-signature": ".p7s", + "application/pkcs10": ".p10", + "application/pkix-cert": ".cer", + "application/pkix-crl": ".crl", + "application/pkix-pkipath": ".pkipath", + "application/pkixcmp": ".pki", + "application/pls+xml": ".pls", + "application/postscript": ".ps", + "application/prs.cww": ".cww", + "application/rdf+xml": ".rdf", + "application/reginfo+xml": ".rif", + "application/relax-ng-compact-syntax": ".rnc", + "application/resource-lists+xml": ".rl", + "application/resource-lists-diff+xml": ".rld", + "application/rls-services+xml": ".rs", + "application/rsd+xml": ".rsd", + "application/rss+xml": ".rss", + "application/rtf": ".rtf", + "application/sbml+xml": ".sbml", + "application/scvp-cv-request": ".scq", + "application/scvp-cv-response": ".scs", + "application/scvp-vp-request": ".spq", + "application/scvp-vp-response": ".spp", + "application/sdp": ".sdp", + "application/sereal": ".srl", + "application/set-payment-initiation": ".setpay", + "application/set-registration-initiation": ".setreg", + "application/shf+xml": ".shf", + "application/sldworks": ".sldprt", + "application/smil+xml": ".smi", + "application/sparql-query": ".rq", + "application/sparql-results+xml": ".srx", + "application/srgs": ".gram", + "application/srgs+xml": ".grxml", + "application/ssml+xml": ".ssml", + "application/timestamped-data": ".tsd", + "application/vnd.3gpp.pic-bw-large": ".plb", + "application/vnd.3gpp.pic-bw-small": ".psb", + "application/vnd.3gpp.pic-bw-var": ".pvb", + "application/vnd.3gpp2.tcap": ".tcap", + "application/vnd.3m.post-it-notes": ".pwn", + "application/vnd.accpac.simply.aso": ".aso", + "application/vnd.accpac.simply.imp": ".imp", + "application/vnd.acucobol": ".acu", + "application/vnd.acucorp": ".atc", + "application/vnd.adobe.aftereffects.project": ".aep", + "application/vnd.adobe.aftereffects.template": ".aet", + "application/vnd.adobe.air-application-installer-package+zip": ".air", + "application/vnd.adobe.indesign-idml-package": ".idml", + "application/vnd.adobe.xdp+xml": ".xdp", + "application/vnd.adobe.xfdf": ".xfdf", + "application/vnd.airzip.filesecure.azf": ".azf", + "application/vnd.airzip.filesecure.azs": ".azs", + "application/vnd.allure.image.diff": ".imagediff", + "application/vnd.allure.metadata+json": ".metadata", + "application/vnd.amazon.ebook": ".azw", + "application/vnd.americandynamics.acc": ".acc", + "application/vnd.amiga.ami": ".ami", + "application/vnd.android.package-archive": ".apk", + "application/vnd.anser-web-certificate-issue-initiation": ".cii", + "application/vnd.anser-web-funds-transfer-initiation": ".fti", + "application/vnd.antix.game-component": ".atx", + "application/vnd.apple.installer+xml": ".mpkg", + "application/vnd.apple.keynote": ".key", + "application/vnd.apple.mpegurl": ".m3u8", + "application/vnd.apple.numbers": ".numbers", + "application/vnd.apple.pages": ".pages", + "application/vnd.arastra.swi": ".swi", + "application/vnd.blueice.multipass": ".mpm", + "application/vnd.bmi": ".bmi", + "application/vnd.businessobjects": ".rep", + "application/vnd.chemdraw+xml": ".cdxml", + "application/vnd.chipnuts.karaoke-mmd": ".mmd", + "application/vnd.cinderella": ".cdy", + "application/vnd.claymore": ".cla", + "application/vnd.clonk.c4group": ".c4g", + "application/vnd.commonspace": ".csp", + "application/vnd.contact.cmsg": ".cdbcmsg", + "application/vnd.cosmocaller": ".cmc", + "application/vnd.crick.clicker": ".clkx", + "application/vnd.crick.clicker.keyboard": ".clkk", + "application/vnd.crick.clicker.palette": ".clkp", + "application/vnd.crick.clicker.template": ".clkt", + "application/vnd.crick.clicker.wordbank": ".clkw", + "application/vnd.criticaltools.wbs+xml": ".wbs", + "application/vnd.ctc-posml": ".pml", + "application/vnd.cups-ppd": ".ppd", + "application/vnd.curl.car": ".car", + "application/vnd.curl.pcurl": ".pcurl", + "application/vnd.data-vision.rdz": ".rdz", + "application/vnd.denovo.fcselayout-link": ".fe_launch", + "application/vnd.dna": ".dna", + "application/vnd.dolby.mlp": ".mlp", + "application/vnd.dpgraph": ".dpg", + "application/vnd.dreamfactory": ".dfac", + "application/vnd.dynageo": ".geo", + "application/vnd.ecowin.chart": ".mag", + "application/vnd.enliven": ".nml", + "application/vnd.epson.esf": ".esf", + "application/vnd.epson.msf": ".msf", + "application/vnd.epson.quickanime": ".qam", + "application/vnd.epson.salt": ".slt", + "application/vnd.epson.ssf": ".ssf", + "application/vnd.eszigno3+xml": ".es3", + "application/vnd.etsi.asic-e+zip": ".asice", + "application/vnd.etsi.asic-s+zip": ".asics", + "application/vnd.ezpix-album": ".ez2", + "application/vnd.ezpix-package": ".ez3", + "application/vnd.fdf": ".fdf", + "application/vnd.fdsn.mseed": ".mseed", + "application/vnd.fdsn.seed": ".seed", + "application/vnd.flographit": ".gph", + "application/vnd.fluxtime.clip": ".ftc", + "application/vnd.framemaker": ".fm", + "application/vnd.frogans.fnc": ".fnc", + "application/vnd.frogans.ltf": ".ltf", + "application/vnd.fsc.weblaunch": ".fsc", + "application/vnd.fujitsu.oasys": ".oas", + "application/vnd.fujitsu.oasys2": ".oa2", + "application/vnd.fujitsu.oasys3": ".oa3", + "application/vnd.fujitsu.oasysgp": ".fg5", + "application/vnd.fujitsu.oasysprs": ".bh2", + "application/vnd.fujixerox.ddd": ".ddd", + "application/vnd.fujixerox.docuworks": ".xdw", + "application/vnd.fujixerox.docuworks.binder": ".xbd", + "application/vnd.fuzzysheet": ".fzs", + "application/vnd.genomatix.tuxedo": ".txd", + "application/vnd.geogebra.file": ".ggb", + "application/vnd.geogebra.tool": ".ggt", + "application/vnd.geometry-explorer": ".gex", + "application/vnd.gmx": ".gmx", + "application/vnd.google-earth.kml+xml": ".kml", + "application/vnd.google-earth.kmz": ".kmz", + "application/vnd.grafeq": ".gqf", + "application/vnd.groove-account": ".gac", + "application/vnd.groove-help": ".ghf", + "application/vnd.groove-identity-message": ".gim", + "application/vnd.groove-injector": ".grv", + "application/vnd.groove-tool-message": ".gtm", + "application/vnd.groove-tool-template": ".tpl", + "application/vnd.groove-vcard": ".vcg", + "application/vnd.handheld-entertainment+xml": ".zmm", + "application/vnd.hbci": ".hbci", + "application/vnd.hhe.lesson-player": ".les", + "application/vnd.hp-hpgl": ".hpgl", + "application/vnd.hp-hpid": ".hpid", + "application/vnd.hp-hps": ".hps", + "application/vnd.hp-jlyt": ".jlt", + "application/vnd.hp-pcl": ".pcl", + "application/vnd.hp-pclxl": ".pclxl", + "application/vnd.hydrostatix.sof-data": ".sfd-hdstx", + "application/vnd.hzn-3d-crossword": ".x3d", + "application/vnd.ibm.minipay": ".mpy", + "application/vnd.ibm.modcap": ".afp", + "application/vnd.ibm.rights-management": ".irm", + "application/vnd.ibm.secure-container": ".sc", + "application/vnd.iccprofile": ".icc", + "application/vnd.igloader": ".igl", + "application/vnd.immervision-ivp": ".ivp", + "application/vnd.immervision-ivu": ".ivu", + "application/vnd.intercon.formnet": ".xpw", + "application/vnd.intu.qbo": ".qbo", + "application/vnd.intu.qfx": ".qfx", + "application/vnd.iptc.g2.newsmessage+xml": ".nar", + "application/vnd.ipunplugged.rcprofile": ".rcprofile", + "application/vnd.irepository.package+xml": ".irp", + "application/vnd.is-xpr": ".xpr", + "application/vnd.jam": ".jam", + "application/vnd.java.hprof": ".hprof", + "application/vnd.java.hprof.text": ".hprof.txt", + "application/vnd.jcp.javame.midlet-rms": ".rms", + "application/vnd.jisp": ".jisp", + "application/vnd.joost.joda-archive": ".joda", + "application/vnd.kahootz": ".ktz", + "application/vnd.kde.karbon": ".karbon", + "application/vnd.kde.kchart": ".chrt", + "application/vnd.kde.kformula": ".kfo", + "application/vnd.kde.kivio": ".flw", + "application/vnd.kde.kontour": ".kon", + "application/vnd.kde.kpresenter": ".kpr", + "application/vnd.kde.kspread": ".ksp", + "application/vnd.kde.kword": ".kwd", + "application/vnd.kenameaapp": ".htke", + "application/vnd.kidspiration": ".kia", + "application/vnd.kinar": ".kne", + "application/vnd.koan": ".skp", + "application/vnd.kodak-descriptor": ".sse", + "application/vnd.llamagraphics.life-balance.desktop": ".lbd", + "application/vnd.llamagraphics.life-balance.exchange+xml": ".lbe", + "application/vnd.lotus-1-2-3": ".wk1", + "application/vnd.lotus-1-2-3; version=2": ".wk1", + "application/vnd.lotus-1-2-3; version=3": ".wk3", + "application/vnd.lotus-1-2-3; version=4": ".wk4", + "application/vnd.lotus-1-2-3; version=97+9.x": ".123", + "application/vnd.lotus-approach": ".apr", + "application/vnd.lotus-freelance": ".pre", + "application/vnd.lotus-notes": ".nsf", + "application/vnd.lotus-organizer": ".org", + "application/vnd.lotus-wordpro": ".lwp", + "application/vnd.macports.portpkg": ".portpkg", + "application/vnd.mcd": ".mcd", + "application/vnd.medcalcdata": ".mc1", + "application/vnd.mediastation.cdkey": ".cdkey", + "application/vnd.mfer": ".mwf", + "application/vnd.mfmp": ".mfm", + "application/vnd.micrografx.flo": ".flo", + "application/vnd.micrografx.igx": ".igx", + "application/vnd.mif": ".mif", + "application/vnd.mindjet.mindmanager": ".mmp", + "application/vnd.mobius.daf": ".daf", + "application/vnd.mobius.dis": ".dis", + "application/vnd.mobius.mbk": ".mbk", + "application/vnd.mobius.mqy": ".mqy", + "application/vnd.mobius.msl": ".msl", + "application/vnd.mobius.plc": ".plc", + "application/vnd.mobius.txf": ".txf", + "application/vnd.mophun.application": ".mpn", + "application/vnd.mophun.certificate": ".mpc", + "application/vnd.mozilla.xul+xml": ".xul", + "application/vnd.ms-artgalry": ".cil", + "application/vnd.ms-cab-compressed": ".cab", + "application/vnd.ms-excel": ".xls", + "application/vnd.ms-excel.addin.macroenabled.12": ".xlam", + "application/vnd.ms-excel.sheet.binary.macroenabled.12": ".xlsb", + "application/vnd.ms-excel.sheet.macroenabled.12": ".xlsm", + "application/vnd.ms-excel.template.macroenabled.12": ".xltm", + "application/vnd.ms-fontobject": ".eot", + "application/vnd.ms-htmlhelp": ".chm", + "application/vnd.ms-ims": ".ims", + "application/vnd.ms-lrm": ".lrm", + "application/vnd.ms-outlook": ".msg", + "application/vnd.ms-outlook-pst": ".pst", + "application/vnd.ms-pki.seccat": ".cat", + "application/vnd.ms-pki.stl": ".stl", + "application/vnd.ms-powerpoint": ".ppt", + "application/vnd.ms-powerpoint.addin.macroenabled.12": ".ppam", + "application/vnd.ms-powerpoint.presentation.macroenabled.12": ".pptm", + "application/vnd.ms-powerpoint.slide.macroenabled.12": ".sldm", + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ".ppsm", + "application/vnd.ms-powerpoint.template.macroenabled.12": ".potm", + "application/vnd.ms-project": ".mpp", + "application/vnd.ms-visio.drawing": ".vsdx", + "application/vnd.ms-visio.drawing.macroenabled.12": ".vsdm", + "application/vnd.ms-visio.stencil": ".vssx", + "application/vnd.ms-visio.stencil.macroenabled.12": ".vssm", + "application/vnd.ms-visio.template": ".vstx", + "application/vnd.ms-visio.template.macroenabled.12": ".vstm", + "application/vnd.ms-word.document.macroenabled.12": ".docm", + "application/vnd.ms-word.template.macroenabled.12": ".dotm", + "application/vnd.ms-works": ".wps", + "application/vnd.ms-wpl": ".wpl", + "application/vnd.ms-xpsdocument": ".xps", + "application/vnd.mseq": ".mseq", + "application/vnd.musician": ".mus", + "application/vnd.muvee.style": ".msty", + "application/vnd.neurolanguage.nlu": ".nlu", + "application/vnd.noblenet-directory": ".nnd", + "application/vnd.noblenet-sealer": ".nns", + "application/vnd.noblenet-web": ".nnw", + "application/vnd.nokia.n-gage.data": ".ngdat", + "application/vnd.nokia.n-gage.symbian.install": ".n-gage", + "application/vnd.nokia.radio-preset": ".rpst", + "application/vnd.nokia.radio-presets": ".rpss", + "application/vnd.novadigm.edm": ".edm", + "application/vnd.novadigm.edx": ".edx", + "application/vnd.novadigm.ext": ".ext", + "application/vnd.oasis.opendocument.base": ".odb", + "application/vnd.oasis.opendocument.chart": ".odc", + "application/vnd.oasis.opendocument.chart-template": ".otc", + "application/vnd.oasis.opendocument.flat.presentation": ".fodp", + "application/vnd.oasis.opendocument.flat.spreadsheet": ".fods", + "application/vnd.oasis.opendocument.flat.text": ".fodt", + "application/vnd.oasis.opendocument.formula": ".odf", + "application/vnd.oasis.opendocument.formula-template": ".odft", + "application/vnd.oasis.opendocument.graphics": ".odg", + "application/vnd.oasis.opendocument.graphics-template": ".otg", + "application/vnd.oasis.opendocument.image": ".odi", + "application/vnd.oasis.opendocument.image-template": ".oti", + "application/vnd.oasis.opendocument.presentation": ".odp", + "application/vnd.oasis.opendocument.presentation-template": ".otp", + "application/vnd.oasis.opendocument.spreadsheet": ".ods", + "application/vnd.oasis.opendocument.spreadsheet-template": ".ots", + "application/vnd.oasis.opendocument.text": ".odt", + "application/vnd.oasis.opendocument.text-master": ".otm", + "application/vnd.oasis.opendocument.text-template": ".ott", + "application/vnd.oasis.opendocument.text-web": ".oth", + "application/vnd.olpc-sugar": ".xo", + "application/vnd.oma.dd2+xml": ".dd2", + "application/vnd.openofficeorg.autotext": ".bau", + "application/vnd.openofficeorg.extension": ".oxt", + "application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx", + "application/vnd.openxmlformats-officedocument.presentationml.slide": ".sldx", + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ".ppsx", + "application/vnd.openxmlformats-officedocument.presentationml.template": ".potx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ".xltx", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx", + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ".dotx", + "application/vnd.osgi.dp": ".dp", + "application/vnd.palm": ".pqa", + "application/vnd.pg.format": ".str", + "application/vnd.pg.osasli": ".ei6", + "application/vnd.picsel": ".efif", + "application/vnd.pocketlearn": ".plf", + "application/vnd.powerbuilder6": ".pbd", + "application/vnd.previewsystems.box": ".box", + "application/vnd.proteus.magazine": ".mgz", + "application/vnd.publishare-delta-tree": ".qps", + "application/vnd.pvi.ptid1": ".ptid", + "application/vnd.quark.quarkxpress": ".qxd", + "application/vnd.recordare.musicxml": ".mxl", + "application/vnd.recordare.musicxml+xml": ".musicxml", + "application/vnd.rim.cod": ".cod", + "application/vnd.rn-realmedia": ".rm", + "application/vnd.route66.link66+xml": ".link66", + "application/vnd.seemail": ".see", + "application/vnd.sema": ".sema", + "application/vnd.semd": ".semd", + "application/vnd.semf": ".semf", + "application/vnd.shana.informed.formdata": ".ifm", + "application/vnd.shana.informed.formtemplate": ".itp", + "application/vnd.shana.informed.interchange": ".iif", + "application/vnd.shana.informed.package": ".ipk", + "application/vnd.simtech-mindmapper": ".twd", + "application/vnd.smaf": ".mmf", + "application/vnd.smart.teacher": ".teacher", + "application/vnd.solent.sdkm+xml": ".sdkm", + "application/vnd.spotfire.dxp": ".dxp", + "application/vnd.spotfire.sfs": ".sfs", + "application/vnd.stardivision.calc": ".sdc", + "application/vnd.stardivision.draw": ".sda", + "application/vnd.stardivision.impress": ".sdd", + "application/vnd.stardivision.math": ".smf", + "application/vnd.stardivision.writer": ".sdw", + "application/vnd.stardivision.writer-global": ".sgl", + "application/vnd.sun.xml.calc": ".sxc", + "application/vnd.sun.xml.calc.template": ".stc", + "application/vnd.sun.xml.draw": ".sxd", + "application/vnd.sun.xml.draw.template": ".std", + "application/vnd.sun.xml.impress": ".sxi", + "application/vnd.sun.xml.impress.template": ".sti", + "application/vnd.sun.xml.math": ".sxm", + "application/vnd.sun.xml.writer": ".sxw", + "application/vnd.sun.xml.writer.global": ".sxg", + "application/vnd.sun.xml.writer.template": ".stw", + "application/vnd.sus-calendar": ".sus", + "application/vnd.svd": ".svd", + "application/vnd.symbian.install": ".sis", + "application/vnd.syncml+xml": ".xsm", + "application/vnd.syncml.dm+wbxml": ".bdm", + "application/vnd.syncml.dm+xml": ".xdm", + "application/vnd.tao.intent-module-archive": ".tao", + "application/vnd.tcpdump.pcap": ".pcap", + "application/vnd.tmobile-livetv": ".tmo", + "application/vnd.trid.tpt": ".tpt", + "application/vnd.triscape.mxs": ".mxs", + "application/vnd.trueapp": ".tra", + "application/vnd.ufdl": ".ufd", + "application/vnd.uiq.theme": ".utz", + "application/vnd.umajin": ".umj", + "application/vnd.unity": ".unityweb", + "application/vnd.uoml+xml": ".uoml", + "application/vnd.vcx": ".vcx", + "application/vnd.visio": ".vsd", + "application/vnd.visionary": ".vis", + "application/vnd.vsf": ".vsf", + "application/vnd.wap.wbxml": ".wbxml", + "application/vnd.wap.wmlc": ".wmlc", + "application/vnd.wap.wmlscriptc": ".wmlsc", + "application/vnd.webturbo": ".wtb", + "application/vnd.wolfram.wl": ".wl", + "application/vnd.wordperfect": ".wpd", + "application/vnd.wqd": ".wqd", + "application/vnd.wt.stf": ".stf", + "application/vnd.xara": ".xar", + "application/vnd.xfdl": ".xfdl", + "application/vnd.yamaha.hv-dic": ".hvd", + "application/vnd.yamaha.hv-script": ".hvs", + "application/vnd.yamaha.hv-voice": ".hvp", + "application/vnd.yamaha.openscoreformat": ".osf", + "application/vnd.yamaha.openscoreformat.osfpvg+xml": ".osfpvg", + "application/vnd.yamaha.smaf-audio": ".saf", + "application/vnd.yamaha.smaf-phrase": ".spf", + "application/vnd.yellowriver-custom-menu": ".cmp", + "application/vnd.zul": ".zir", + "application/vnd.zzazz.deck+xml": ".zaz", + "application/voicexml+xml": ".vxml", + "application/warc": ".warc", + "application/wasm": ".wasm", + "application/winhlp": ".hlp", + "application/wsdl+xml": ".wsdl", + "application/wspolicy+xml": ".wspolicy", + "application/x-7z-compressed": ".7z", + "application/x-abiword": ".abw", + "application/x-ace-compressed": ".ace", + "application/x-adobe-indesign": ".indd", + "application/x-adobe-indesign-interchange": ".inx", + "application/x-apple-diskimage": ".dmg", + "application/x-appleworks": ".cwk", + "application/x-archive": ".ar", + "application/x-arj": ".arj", + "application/x-authorware-bin": ".aab", + "application/x-authorware-map": ".aam", + "application/x-authorware-seg": ".aas", + "application/x-axcrypt": ".axx", + "application/x-bat": ".bat", + "application/x-bcpio": ".bcpio", + "application/x-bibtex-text-file": ".bib", + "application/x-bittorrent": ".torrent", + "application/x-brotli": ".br", + "application/x-bzip": ".bz", + "application/x-bzip2": ".bz2", + "application/x-cdlink": ".vcd", + "application/x-chat": ".chat", + "application/x-chess-pgn": ".pgn", + "application/x-chrome-package": ".crx", + "application/x-compress": ".z", + "application/x-corelpresentations": ".shw", + "application/x-cpio": ".cpio", + "application/x-csh": ".csh", + "application/x-dbf": ".dbf", + "application/x-debian-package": ".deb", + "application/x-dex": ".dex", + "application/x-director": ".dir", + "application/x-doom": ".wad", + "application/x-dosexec": ".exe", + "application/x-dtbncx+xml": ".ncx", + "application/x-dtbook+xml": ".dtb", + "application/x-dtbresource+xml": ".res", + "application/x-dvi": ".dvi", + "application/x-elc": ".elc", + "application/x-endnote-refer": ".enw", + "application/x-erdas-hfa": ".hfa", + "application/x-esri-layer": ".lyr", + "application/x-fictionbook+xml": ".fb2", + "application/x-filemaker": ".fp7", + "application/x-font-adobe-metric": ".afm", + "application/x-font-bdf": ".bdf", + "application/x-font-ghostscript": ".gsf", + "application/x-font-linux-psf": ".psf", + "application/x-font-otf": ".otf", + "application/x-font-pcf": ".pcf", + "application/x-font-printer-metric": ".pfm", + "application/x-font-snf": ".snf", + "application/x-font-ttf": ".ttf", + "application/x-font-type1": ".pfa", + "application/x-futuresplash": ".spl", + "application/x-gnucash": ".gnucash", + "application/x-gnumeric": ".gnumeric", + "application/x-grib": ".grb", + "application/x-gtar": ".gtar", + "application/x-hdf": ".hdf", + "application/x-ibooks+zip": ".ibooks", + "application/x-internet-archive": ".arc", + "application/x-iso9660-image": ".iso", + "application/x-itunes-ipa": ".ipa", + "application/x-java-jnilib": ".jnilib", + "application/x-java-jnlp-file": ".jnlp", + "application/x-java-pack200": ".pack", + "application/x-killustrator": ".kil", + "application/x-latex": ".latex", + "application/x-lz4": ".lz4", + "application/x-lzip": ".lz", + "application/x-lzma": ".lzma", + "application/x-matlab-data": ".mat", + "application/x-memgraph": ".memgraph", + "application/x-mobipocket-ebook": ".prc", + "application/x-ms-application": ".application", + "application/x-ms-asx": ".asx", + "application/x-ms-installer": ".msi", + "application/x-ms-wmd": ".wmd", + "application/x-ms-wmz": ".wmz", + "application/x-ms-xbap": ".xbap", + "application/x-msaccess": ".mdb", + "application/x-msbinder": ".obd", + "application/x-mscardfile": ".crd", + "application/x-msclip": ".clp", + "application/x-msdownload": ".dll", + "application/x-msmediaview": ".mvb", + "application/x-msmoney": ".mny", + "application/x-mspublisher": ".pub", + "application/x-msschedule": ".scd", + "application/x-msterminal": ".trm", + "application/x-mswrite": ".wri", + "application/x-mysql-misam-compressed-index": ".MYI", + "application/x-mysql-misam-data": ".MYD", + "application/x-nesrom": ".nes", + "application/x-netcdf": ".nc", + "application/x-parquet": ".parquet", + "application/x-pkcs7-certificates": ".p7b", + "application/x-pkcs7-certreqresp": ".p7r", + "application/x-pkcs12": ".p12", + "application/x-project": ".mpx", + "application/x-prt": ".prt", + "application/x-quattro-pro": ".wq1", + "application/x-quattro-pro; version=1+5": ".wb1", + "application/x-quattro-pro; version=1-4": ".wq1", + "application/x-quattro-pro; version=5": ".wq2", + "application/x-quattro-pro; version=6": ".wb2", + "application/x-rar-compressed": ".rar", + "application/x-roxio-toast": ".toast", + "application/x-rpm": ".rpm", + "application/x-sas": ".sas", + "application/x-sas-access": ".sa7", + "application/x-sas-audit": ".st7", + "application/x-sas-backup": ".sas7bbak", + "application/x-sas-catalog": ".sc7", + "application/x-sas-data": ".sd7", + "application/x-sas-data-index": ".si7", + "application/x-sas-data-v6": ".sd2", + "application/x-sas-dmdb": ".s7m", + "application/x-sas-fdb": ".sf7", + "application/x-sas-itemstor": ".sr7", + "application/x-sas-mddb": ".sm7", + "application/x-sas-program-data": ".ss7", + "application/x-sas-putility": ".sp7", + "application/x-sas-transport": ".stx", + "application/x-sas-utility": ".su7", + "application/x-sas-view": ".sv7", + "application/x-sas-xport": ".xpt", + "application/x-sfdu": ".sfdu", + "application/x-sh": ".sh", + "application/x-shapefile": ".shp", + "application/x-shar": ".shar", + "application/x-shockwave-flash": ".swf", + "application/x-silverlight-app": ".xap", + "application/x-snappy-framed": ".sz", + "application/x-staroffice-template": ".vor", + "application/x-stata-do": ".do", + "application/x-stata-dta": ".dta", + "application/x-stuffit": ".sit", + "application/x-stuffitx": ".sitx", + "application/x-sv4cpio": ".sv4cpio", + "application/x-sv4crc": ".sv4crc", + "application/x-tar": ".tar", + "application/x-tex": ".tex", + "application/x-tex-tfm": ".tfm", + "application/x-texinfo": ".texinfo", + "application/x-tika-java-enterprise-archive": ".ear", + "application/x-tika-java-web-archive": ".war", + "application/x-tika-msworks-spreadsheet": ".xlr", + "application/x-tmx": ".tmx", + "application/x-uc2-compressed": ".uc2", + "application/x-ustar": ".ustar", + "application/x-vmdk": ".vmdk", + "application/x-wais-source": ".src", + "application/x-webarchive": ".webarchive", + "application/x-x509-cert": ".crt", + "application/x-x509-cert; format=der": ".der", + "application/x-x509-cert; format=pem": ".pem", + "application/x-xfig": ".fig", + "application/x-xliff+xml": ".xlf", + "application/x-xliff+zip": ".xlz", + "application/x-xmind": ".xmind", + "application/x-xpinstall": ".xpi", + "application/x-xz": ".xz", + "application/x-zoo": ".zoo", + "application/xenc+xml": ".xenc", + "application/xhtml+xml": ".xhtml", + "application/xml": ".xml", + "application/xml-dtd": ".dtd", + "application/xop+xml": ".xop", + "application/xquery": ".xq", + "application/xslfo+xml": ".xslfo", + "application/xslt+xml": ".xslt", + "application/xspf+xml": ".xspf", + "application/xv+xml": ".mxml", + "application/zip": ".zip", + "application/zstd": ".zst", + "audio/ac3": ".ac3", + "audio/adpcm": ".adp", + "audio/amr": ".amr", + "audio/basic": ".au", + "audio/midi": ".mid", + "audio/mp4": ".mp4a", + "audio/mpeg": ".mpga", + "audio/ogg": ".oga", + "audio/opus": ".opus", + "audio/speex": ".spx", + "audio/vnd.adobe.soundbooth": ".asnd", + "audio/vnd.digital-winds": ".eol", + "audio/vnd.dts": ".dts", + "audio/vnd.dts.hd": ".dtshd", + "audio/vnd.lucent.voice": ".lvp", + "audio/vnd.ms-playready.media.pya": ".pya", + "audio/vnd.nuera.ecelp4800": ".ecelp4800", + "audio/vnd.nuera.ecelp7470": ".ecelp7470", + "audio/vnd.nuera.ecelp9600": ".ecelp9600", + "audio/vnd.wave": ".wav", + "audio/vorbis": ".ogg", + "audio/x-aac": ".aac", + "audio/x-aiff": ".aif", + "audio/x-caf": ".caf", + "audio/x-flac": ".flac", + "audio/x-matroska": ".mka", + "audio/x-mod": ".mod", + "audio/x-mpegurl": ".m3u", + "audio/x-ms-wax": ".wax", + "audio/x-ms-wma": ".wma", + "audio/x-pn-realaudio": ".ram", + "audio/x-pn-realaudio-plugin": ".rmp", + "chemical/x-cdx": ".cdx", + "chemical/x-cif": ".cif", + "chemical/x-cmdf": ".cmdf", + "chemical/x-cml": ".cml", + "chemical/x-csml": ".csml", + "chemical/x-pdb": ".pdb", + "chemical/x-xyz": ".xyz", + "image/aces": ".exr", + "image/avif": ".avif", + "image/bmp": ".bmp", + "image/cgm": ".cgm", + "image/emf": ".emf", + "image/g3fax": ".g3", + "image/gif": ".gif", + "image/heic": ".heic", + "image/heif": ".heif", + "image/icns": ".icns", + "image/ief": ".ief", + "image/jp2": ".jp2", + "image/jpeg": ".jpg", + "image/jpm": ".jpm", + "image/jpx": ".jpf", + "image/jxl": ".jxl", + "image/nitf": ".ntf", + "image/png": ".png", + "image/prs.btif": ".btif", + "image/svg+xml": ".svg", + "image/tiff": ".tiff", + "image/vnd.adobe.photoshop": ".psd", + "image/vnd.adobe.premiere": ".ppj", + "image/vnd.dgn": ".dgn", + "image/vnd.djvu": ".djvu", + "image/vnd.dwg": ".dwg", + "image/vnd.dxb": ".dxb", + "image/vnd.dxf": ".dxf", + "image/vnd.fastbidsheet": ".fbs", + "image/vnd.fpx": ".fpx", + "image/vnd.fst": ".fst", + "image/vnd.fujixerox.edmics-mmr": ".mmr", + "image/vnd.fujixerox.edmics-rlc": ".rlc", + "image/vnd.microsoft.icon": ".ico", + "image/vnd.ms-modi": ".mdi", + "image/vnd.net-fpx": ".npx", + "image/vnd.wap.wbmp": ".wbmp", + "image/vnd.xiff": ".xif", + "image/vnd.zbrush.dcx": ".dcx", + "image/vnd.zbrush.pcx": ".pcx", + "image/webp": ".webp", + "image/wmf": ".wmf", + "image/x-bpg": ".bpg", + "image/x-cmu-raster": ".ras", + "image/x-cmx": ".cmx", + "image/x-dpx": ".dpx", + "image/x-emf-compressed": ".emz", + "image/x-freehand": ".fh", + "image/x-jbig2": ".jb2", + "image/x-jp2-codestream": ".j2c", + "image/x-pict": ".pic", + "image/x-portable-anymap": ".pnm", + "image/x-portable-bitmap": ".pbm", + "image/x-portable-graymap": ".pgm", + "image/x-portable-pixmap": ".ppm", + "image/x-raw-adobe": ".dng", + "image/x-raw-canon": ".crw", + "image/x-raw-casio": ".bay", + "image/x-raw-epson": ".erf", + "image/x-raw-fuji": ".raf", + "image/x-raw-hasselblad": ".3fr", + "image/x-raw-imacon": ".fff", + "image/x-raw-kodak": ".k25", + "image/x-raw-leaf": ".mos", + "image/x-raw-logitech": ".pxn", + "image/x-raw-mamiya": ".mef", + "image/x-raw-minolta": ".mrw", + "image/x-raw-nikon": ".nef", + "image/x-raw-olympus": ".orf", + "image/x-raw-panasonic": ".raw", + "image/x-raw-pentax": ".ptx", + "image/x-raw-phaseone": ".iiq", + "image/x-raw-rawzor": ".rwz", + "image/x-raw-red": ".r3d", + "image/x-raw-sigma": ".x3f", + "image/x-raw-sony": ".arw", + "image/x-rgb": ".rgb", + "image/x-tga": ".tga", + "image/x-xbitmap": ".xbm", + "image/x-xcf": ".xcf", + "image/x-xpixmap": ".xpm", + "image/x-xwindowdump": ".xwd", + "message/rfc822": ".eml", + "message/x-emlx": ".emlx", + "model/e57": ".e57", + "model/iges": ".igs", + "model/mesh": ".msh", + "model/vnd.dwf": ".dwf", + "model/vnd.dwfx+xps": ".dwfx", + "model/vnd.gdl": ".gdl", + "model/vnd.gtw": ".gtw", + "model/vnd.mts": ".mts", + "model/vnd.vtu": ".vtu", + "model/vrml": ".wrl", + "multipart/related": ".mht", + "text/asp": ".asp", + "text/aspdotnet": ".aspx", + "text/calendar": ".ics", + "text/css": ".css", + "text/csv": ".csv", + "text/html": ".html", + "text/iso19139+xml": ".iso19139", + "text/plain": ".txt", + "text/prs.lines.tag": ".dsc", + "text/richtext": ".rtx", + "text/sgml": ".sgml", + "text/tab-separated-values": ".tsv", + "text/troff": ".t", + "text/uri-list": ".uri", + "text/vnd.curl": ".curl", + "text/vnd.curl.dcurl": ".dcurl", + "text/vnd.curl.mcurl": ".mcurl", + "text/vnd.curl.scurl": ".scurl", + "text/vnd.fly": ".fly", + "text/vnd.fmi.flexstor": ".flx", + "text/vnd.graphviz": ".gv", + "text/vnd.in3d.3dml": ".3dml", + "text/vnd.in3d.spot": ".spot", + "text/vnd.iptc.anpa": ".anpa", + "text/vnd.sun.j2me.app-descriptor": ".jad", + "text/vnd.wap.wml": ".wml", + "text/vnd.wap.wmlscript": ".wmls", + "text/vtt": ".vtt", + "text/x-actionscript": ".as", + "text/x-ada": ".ada", + "text/x-applescript": ".applescript", + "text/x-asciidoc": ".asciidoc", + "text/x-aspectj": ".aj", + "text/x-assembly": ".s", + "text/x-awk": ".awk", + "text/x-basic": ".bas", + "text/x-c++hdr": ".hpp", + "text/x-c++src": ".cpp", + "text/x-cgi": ".cgi", + "text/x-chdr": ".h", + "text/x-clojure": ".clj", + "text/x-cobol": ".cbl", + "text/x-coffeescript": ".coffee", + "text/x-coldfusion": ".cfm", + "text/x-common-lisp": ".cl", + "text/x-config": ".config", + "text/x-csharp": ".cs", + "text/x-csrc": ".c", + "text/x-d": ".d", + "text/x-diff": ".diff", + "text/x-eiffel": ".e", + "text/x-emacs-lisp": ".el", + "text/x-erlang": ".erl", + "text/x-expect": ".exp", + "text/x-forth": ".4th", + "text/x-fortran": ".f", + "text/x-go": ".go", + "text/x-groovy": ".groovy", + "text/x-haml": ".haml", + "text/x-haskell": ".hs", + "text/x-haxe": ".hx", + "text/x-idl": ".idl", + "text/x-ini": ".ini", + "text/x-java-properties": ".properties", + "text/x-java-source": ".java", + "text/x-jsp": ".jsp", + "text/x-less": ".less", + "text/x-lex": ".l", + "text/x-log": ".log", + "text/x-lua": ".lua", + "text/x-ml": ".ml", + "text/x-modula": ".m3", + "text/x-objcsrc": ".m", + "text/x-ocaml": ".ocaml", + "text/x-pascal": ".p", + "text/x-perl": ".pl", + "text/x-php": ".php", + "text/x-prolog": ".pro", + "text/x-python": ".py", + "text/x-rexx": ".rexx", + "text/x-rsrc": ".r", + "text/x-rst": ".rest", + "text/x-ruby": ".rb", + "text/x-scala": ".scala", + "text/x-scheme": ".scm", + "text/x-sed": ".sed", + "text/x-setext": ".etx", + "text/x-sql": ".sql", + "text/x-stsrc": ".st", + "text/x-tcl": ".itk", + "text/x-uuencode": ".uu", + "text/x-vbasic": ".cls", + "text/x-vbdotnet": ".vb", + "text/x-vbscript": ".vbs", + "text/x-vcalendar": ".vcs", + "text/x-vcard": ".vcf", + "text/x-verilog": ".v", + "text/x-vhdl": ".vhd", + "text/x-web-markdown": ".md", + "text/x-yacc": ".y", + "text/x-yaml": ".yaml", + "video/3gpp": ".3gp", + "video/3gpp2": ".3g2", + "video/h261": ".h261", + "video/h263": ".h263", + "video/h264": ".h264", + "video/iso.segment": ".m4s", + "video/jpeg": ".jpgv", + "video/mj2": ".mj2", + "video/mp4": ".mp4", + "video/mpeg": ".mpeg", + "video/ogg": ".ogv", + "video/quicktime": ".qt", + "video/vnd.fvt": ".fvt", + "video/vnd.mpegurl": ".mxu", + "video/vnd.ms-playready.media.pyv": ".pyv", + "video/vnd.vivo": ".viv", + "video/webm": ".webm", + "video/x-dirac": ".drc", + "video/x-f4v": ".f4v", + "video/x-flc": ".flc", + "video/x-fli": ".fli", + "video/x-flv": ".flv", + "video/x-jng": ".jng", + "video/x-m4v": ".m4v", + "video/x-matroska": ".mkv", + "video/x-mng": ".mng", + "video/x-ms-asf": ".asf", + "video/x-ms-wm": ".wm", + "video/x-ms-wmv": ".wmv", + "video/x-ms-wmx": ".wmx", + "video/x-ms-wvx": ".wvx", + "video/x-msvideo": ".avi", + "video/x-ogm": ".ogm", + "video/x-sgi-movie": ".movie", + "x-conference/x-cooltalk": ".ice", +} as const; + +export const isPromise = (obj: any): boolean => + !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; + +export const typeToExtension = (options: AttachmentOptions): string => { + if (options.fileExtension) { + return options.fileExtension.startsWith(".") ? options.fileExtension : `.${options.fileExtension}`; + } + + return EXTENSIONS_BY_TYPE[options.contentType] || ""; +}; + +export const serialize = (val: unknown): string => { + if (typeof val === "object" && !(val instanceof Map || val instanceof Set)) { + return JSON.stringify(val); + } + + if (val === undefined) { + return "undefined"; + } + + return (val as any).toString(); +}; diff --git a/packages/allure-js-commons/src/writers/index.ts b/packages/allure-js-commons/src/writers/index.ts deleted file mode 100644 index c77e307cb..000000000 --- a/packages/allure-js-commons/src/writers/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { AllureWriter } from "./AllureWriter"; -export { FileSystemAllureWriter } from "./FileSystemAllureWriter"; -export { InMemoryAllureWriter } from "./InMemoryAllureWriter"; -export { MessageAllureWriter } from "./MessageAllureWriter"; -export { AllureResults } from "./InMemoryAllureWriter"; -export * from "./utils"; diff --git a/packages/allure-js-commons/test/specs/FileSystemAllureWriter.spec.ts b/packages/allure-js-commons/test/specs/FileSystemAllureWriter.spec.ts index 1f7a1c60f..9d2f5ad35 100644 --- a/packages/allure-js-commons/test/specs/FileSystemAllureWriter.spec.ts +++ b/packages/allure-js-commons/test/specs/FileSystemAllureWriter.spec.ts @@ -4,7 +4,7 @@ import { existsSync, mkdtempSync, readFileSync, readdirSync, writeFileSync } fro import * as os from "os"; import path from "path"; import { env } from "process"; -import { AllureConfig, AllureRuntime, ContentType, InMemoryAllureWriter } from "../../dist"; +import { AllureConfig, AllureRuntime, ContentType, InMemoryAllureWriter } from "allure-js-commons"; describe("FileSystemAllureWriter", () => { it("should save attachment from path", () => { diff --git a/packages/allure-js-commons/test/specs/testPlan.spec.ts b/packages/allure-js-commons/test/specs/testPlan.spec.ts index e9c4c5ebc..efaf43d06 100644 --- a/packages/allure-js-commons/test/specs/testPlan.spec.ts +++ b/packages/allure-js-commons/test/specs/testPlan.spec.ts @@ -3,7 +3,7 @@ import { randomUUID } from "crypto"; import { mkdtempSync, writeFileSync } from "fs"; import os from "os"; import path from "path"; -import { parseTestPlan } from "../../dist"; +import { parseTestPlan } from "allure-js-commons"; const originalEnv = process.env; diff --git a/packages/allure-js-commons/tsconfig.esm.json b/packages/allure-js-commons/tsconfig.esm.json new file mode 100644 index 000000000..fd4986560 --- /dev/null +++ b/packages/allure-js-commons/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "esnext", + "target": "es2022", + "outDir": "./dist/esm" + } +} diff --git a/packages/allure-js-commons/tsconfig.json b/packages/allure-js-commons/tsconfig.json index 31ba6e7cb..1f772b894 100644 --- a/packages/allure-js-commons/tsconfig.json +++ b/packages/allure-js-commons/tsconfig.json @@ -6,9 +6,13 @@ "internal.ts", ], "compilerOptions": { + "declaration": true, + "lib": ["dom", "esnext"], "types": [ "node" ], - "outDir": "./dist" + "target": "es2015", + "outDir": "./dist/cjs", + "module": "commonjs", } } diff --git a/packages/allure-mocha/package.json b/packages/allure-mocha/package.json index 3c6c1c4af..c48883901 100644 --- a/packages/allure-mocha/package.json +++ b/packages/allure-mocha/package.json @@ -1,6 +1,6 @@ { "name": "allure-mocha", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Mocha integration", "keywords": [ "mocha", diff --git a/packages/allure-playwright/package.json b/packages/allure-playwright/package.json index 11aa9626a..1891292f2 100644 --- a/packages/allure-playwright/package.json +++ b/packages/allure-playwright/package.json @@ -1,6 +1,6 @@ { "name": "allure-playwright", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Playwright integration", "keywords": [ "playwright", diff --git a/packages/allure-playwright/test/fixtures.ts b/packages/allure-playwright/test/fixtures.ts index 0385165d6..b824dfd2f 100644 --- a/packages/allure-playwright/test/fixtures.ts +++ b/packages/allure-playwright/test/fixtures.ts @@ -17,7 +17,7 @@ import { TestInfo, test as base } from "@playwright/test"; import { fork } from "child_process"; import { mkdir, writeFile } from "fs/promises"; import { dirname, join } from "path"; -import { parse } from "properties"; +import properties from "properties"; import type { AllureResults } from "allure-js-commons"; import { allure } from "allure-playwright"; @@ -112,7 +112,7 @@ const runPlaywrightTest = async (baseDir: string, params: any, env: Env): Promis } case "misc": { if (event.path === "environment.properties") { - results.envInfo = parse(Buffer.from(event.data, "base64").toString()); + results.envInfo = properties.parse(Buffer.from(event.data, "base64").toString()); } else if (event.path === "categories.json") { results.categories = JSON.parse(Buffer.from(event.data, "base64").toString()); } diff --git a/packages/allure-vitest/.gitignore b/packages/allure-vitest/.gitignore index 0f83ce08b..6e5ff9f85 100644 --- a/packages/allure-vitest/.gitignore +++ b/packages/allure-vitest/.gitignore @@ -1,3 +1,4 @@ -test/spec/fixtures/ +test/fixtures/ *.js *.d.ts +vitest.config.ts.timestamp-* diff --git a/packages/allure-vitest/package.json b/packages/allure-vitest/package.json index d37556f6d..650f97c1b 100644 --- a/packages/allure-vitest/package.json +++ b/packages/allure-vitest/package.json @@ -1,6 +1,6 @@ { "name": "allure-vitest", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Vitest integration", "keywords": [ "vitest", @@ -22,17 +22,14 @@ "type": "module", "exports": { ".": { - "import": "./index.js", - "types": "./index.d.ts" + "import": "./dist/index.js" }, "./reporter": { - "import": "./reporter.js", - "types": "./reporter.d.ts" + "import": "./dist/reporter.js" }, "./setup": { - "require": "./setup.js", - "import": "./setup.js", - "types": "./setup.d.ts" + "require": "./dist/setup.js", + "import": "./dist/setup.js" } }, "files": [ diff --git a/packages/allure-vitest/tsconfig.json b/packages/allure-vitest/tsconfig.json index c9c056cf7..60fb6476a 100644 --- a/packages/allure-vitest/tsconfig.json +++ b/packages/allure-vitest/tsconfig.json @@ -7,7 +7,7 @@ "module": "NodeNext", "declaration": true, "rootDir": "./src", - "outDir": "." + "outDir": "./dist" }, "include": [ "./src/**/*" diff --git a/packages/hermione-allure/package.json b/packages/hermione-allure/package.json index 02d1a61a1..17fd71152 100644 --- a/packages/hermione-allure/package.json +++ b/packages/hermione-allure/package.json @@ -1,6 +1,6 @@ { "name": "hermione-allure", - "version": "2.14.1", + "version": "2.15.0", "keywords": [ "hermione", "typescript", diff --git a/packages/hermione-allure/src/model.ts b/packages/hermione-allure/src/model.ts index e5ec793c8..93fce7ba1 100644 --- a/packages/hermione-allure/src/model.ts +++ b/packages/hermione-allure/src/model.ts @@ -1,5 +1,4 @@ -import { MetadataMessage, Stage, Status, StatusDetails } from "allure-js-commons"; -import { AllureWriter } from "allure-js-commons/dist/src/writers"; +import { AllureWriter, MetadataMessage, Stage, Status, StatusDetails } from "allure-js-commons"; export type AllureReportOptions = { enabled?: boolean; diff --git a/packages/newman-reporter-allure/package.json b/packages/newman-reporter-allure/package.json index 8f23d395b..3632af3c6 100644 --- a/packages/newman-reporter-allure/package.json +++ b/packages/newman-reporter-allure/package.json @@ -1,6 +1,6 @@ { "name": "newman-reporter-allure", - "version": "2.14.1", + "version": "2.15.0", "description": "Allure Newman integration", "keywords": [ "allure", diff --git a/yarn.lock b/yarn.lock index d84a5b4a3..a8d4c77fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -768,13 +768,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/aix-ppc64@npm:0.20.1" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/android-arm64@npm:0.19.12" @@ -782,13 +775,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/android-arm64@npm:0.20.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/android-arm@npm:0.19.12" @@ -796,13 +782,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/android-arm@npm:0.20.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/android-x64@npm:0.19.12" @@ -810,13 +789,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/android-x64@npm:0.20.1" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/darwin-arm64@npm:0.19.12" @@ -824,13 +796,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/darwin-arm64@npm:0.20.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/darwin-x64@npm:0.19.12" @@ -838,13 +803,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/darwin-x64@npm:0.20.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/freebsd-arm64@npm:0.19.12" @@ -852,13 +810,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/freebsd-arm64@npm:0.20.1" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/freebsd-x64@npm:0.19.12" @@ -866,13 +817,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/freebsd-x64@npm:0.20.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-arm64@npm:0.19.12" @@ -880,13 +824,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-arm64@npm:0.20.1" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-arm@npm:0.19.12" @@ -894,13 +831,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-arm@npm:0.20.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-ia32@npm:0.19.12" @@ -908,13 +838,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-ia32@npm:0.20.1" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-loong64@npm:0.19.12" @@ -922,13 +845,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-loong64@npm:0.20.1" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-mips64el@npm:0.19.12" @@ -936,13 +852,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-mips64el@npm:0.20.1" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-ppc64@npm:0.19.12" @@ -950,13 +859,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-ppc64@npm:0.20.1" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-riscv64@npm:0.19.12" @@ -964,13 +866,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-riscv64@npm:0.20.1" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-s390x@npm:0.19.12" @@ -978,13 +873,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-s390x@npm:0.20.1" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/linux-x64@npm:0.19.12" @@ -992,13 +880,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/linux-x64@npm:0.20.1" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/netbsd-x64@npm:0.19.12" @@ -1006,13 +887,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/netbsd-x64@npm:0.20.1" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/openbsd-x64@npm:0.19.12" @@ -1020,13 +894,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/openbsd-x64@npm:0.20.1" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/sunos-x64@npm:0.19.12" @@ -1034,13 +901,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/sunos-x64@npm:0.20.1" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/win32-arm64@npm:0.19.12" @@ -1048,13 +908,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/win32-arm64@npm:0.20.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/win32-ia32@npm:0.19.12" @@ -1062,13 +915,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/win32-ia32@npm:0.20.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/win32-x64@npm:0.19.12" @@ -1076,13 +922,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.20.1": - version: 0.20.1 - resolution: "@esbuild/win32-x64@npm:0.20.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -1749,6 +1588,79 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-commonjs@npm:^25.0.7": + version: 25.0.7 + resolution: "@rollup/plugin-commonjs@npm:25.0.7" + dependencies: + "@rollup/pluginutils": ^5.0.1 + commondir: ^1.0.1 + estree-walker: ^2.0.2 + glob: ^8.0.3 + is-reference: 1.2.1 + magic-string: ^0.30.3 + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 052e11839a9edc556eda5dcc759ab816dcc57e9f0f905a1e6e14fff954eaa6b1e2d0d544f5bd18d863993c5eba43d8ac9c19d9bb53b1c3b1213f32cfc9d50b2e + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^15.2.3": + version: 15.2.3 + resolution: "@rollup/plugin-node-resolve@npm:15.2.3" + dependencies: + "@rollup/pluginutils": ^5.0.1 + "@types/resolve": 1.20.2 + deepmerge: ^4.2.2 + is-builtin-module: ^3.2.1 + is-module: ^1.0.0 + resolve: ^1.22.1 + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 730f32c2f8fdddff07cf0fca86a5dac7c475605fb96930197a868c066e62eb6388c557545e4f7d99b7a283411754c9fbf98944ab086b6074e04fc1292e234aa8 + languageName: node + linkType: hard + +"@rollup/plugin-typescript@npm:^11.1.6": + version: 11.1.6 + resolution: "@rollup/plugin-typescript@npm:11.1.6" + dependencies: + "@rollup/pluginutils": ^5.1.0 + resolve: ^1.22.1 + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: "*" + typescript: ">=3.7.0" + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + checksum: 3f5b981f4d9c9501be1f16396f7b6d4ae584cb1b61e9f0bed66f98245fb77f249caea2b9b5f222f933b46fd9043c1f2664a7445aefa386c1ffbb4f0b80fc6004 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.0": + version: 5.1.0 + resolution: "@rollup/pluginutils@npm:5.1.0" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^2.0.2 + picomatch: ^2.3.1 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 3cc5a6d91452a6eabbfd1ae79b4dd1f1e809d2eecda6e175deb784e75b0911f47e9ecce73f8dd315d6a8b3f362582c91d3c0f66908b6ced69345b3cbe28f8ce8 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.12.0" @@ -1756,6 +1668,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.13.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-android-arm64@npm:4.12.0" @@ -1763,6 +1682,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-android-arm64@npm:4.13.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.12.0" @@ -1770,6 +1696,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.13.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-darwin-x64@npm:4.12.0" @@ -1777,6 +1710,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.13.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0" @@ -1784,6 +1724,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.12.0" @@ -1791,6 +1738,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.13.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.12.0" @@ -1798,6 +1752,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.13.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.12.0" @@ -1805,6 +1766,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.13.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.12.0" @@ -1812,6 +1780,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.13.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.12.0" @@ -1819,6 +1794,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.13.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.12.0" @@ -1826,6 +1808,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.13.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.12.0" @@ -1833,6 +1822,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.13.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.12.0": version: 4.12.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.12.0" @@ -1840,6 +1836,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.13.0": + version: 4.13.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.13.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -2325,6 +2328,13 @@ __metadata: languageName: node linkType: hard +"@types/md5@npm:^2": + version: 2.3.5 + resolution: "@types/md5@npm:2.3.5" + checksum: a86baf0521006e3072488bd79089b84831780866102e5e4b4f7afabfab17e0270a3791f3331776b73efb2cc9317efd56a334fd3d2698c7929e9b18593ca3fd39 + languageName: node + linkType: hard + "@types/minimatch@npm:^5.1.2": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" @@ -2406,6 +2416,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:1.20.2": + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 + languageName: node + linkType: hard + "@types/responselike@npm:^1.0.0": version: 1.0.3 resolution: "@types/responselike@npm:1.0.3" @@ -3253,6 +3270,9 @@ __metadata: resolution: "allure-cypress@workspace:packages/allure-cypress" dependencies: "@jest/globals": ^29.7.0 + "@rollup/plugin-commonjs": ^25.0.7 + "@rollup/plugin-node-resolve": ^15.2.3 + "@rollup/plugin-typescript": ^11.1.6 "@types/eslint": ^8 "@types/glob": ^8.1.0 "@types/jest": ^29.5.12 @@ -3264,7 +3284,6 @@ __metadata: allure-js-commons: "workspace:*" cypress: ^13.6.0 enquirer: ^2.3.6 - esbuild: ^0.20.0 eslint: ^8.49.0 eslint-config-prettier: ^9.0.0 eslint-plugin-cypress: ^2.15.1 @@ -3274,9 +3293,12 @@ __metadata: eslint-plugin-prefer-arrow: ^1.2.3 glob: ^10.3.5 jest: ^29.7.0 + npm-run-all: ^4.1.5 rimraf: ^5.0.1 + rollup: ^4.13.0 ts-jest: ^29.1.2 ts-node: ^10.9.2 + tslib: ^2.6.2 typescript: ^5.2.2 languageName: unknown linkType: soft @@ -3390,6 +3412,7 @@ __metadata: dependencies: "@types/chai": ^4.3.6 "@types/eslint": ^8 + "@types/md5": ^2 "@types/mocha": ^10.0.1 "@types/node": ^20.6.3 "@types/sinon": ^17.0.0 @@ -3405,15 +3428,18 @@ __metadata: eslint-plugin-no-null: ^1.0.2 eslint-plugin-prefer-arrow: ^1.2.3 expect: ^29.5.0 - glob: ^10.3.5 + glob: ^10.3.10 + md5: ^2.3.0 mocha: ^10.2.0 mocha-multi-reporters: ^1.5.1 + npm-run-all: ^4.1.5 properties: ^1.2.1 rimraf: ^5.0.1 sinon: ^17.0.0 source-map-support: ^0.5.21 strip-ansi: ^5.2.0 ts-node: ^10.9.1 + tslib: ^2.6.2 typescript: ^5.2.2 languageName: unknown linkType: soft @@ -4972,6 +4998,13 @@ __metadata: languageName: node linkType: hard +"charenc@npm:0.0.2": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5 + languageName: node + linkType: hard + "charset@npm:^1.0.0": version: 1.0.1 resolution: "charset@npm:1.0.1" @@ -5630,6 +5663,13 @@ __metadata: languageName: node linkType: hard +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb + languageName: node + linkType: hard + "compare-versions@npm:^6.1.0": version: 6.1.0 resolution: "compare-versions@npm:6.1.0" @@ -5884,6 +5924,13 @@ __metadata: languageName: node linkType: hard +"crypt@npm:0.0.2": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: baf4c7bbe05df656ec230018af8cf7dbe8c14b36b98726939cef008d473f6fe7a4fad906cfea4062c93af516f1550a3f43ceb4d6615329612c6511378ed9fe34 + languageName: node + linkType: hard + "crypto-browserify@npm:^3.0.0": version: 3.12.0 resolution: "crypto-browserify@npm:3.12.0" @@ -7039,86 +7086,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.20.0": - version: 0.20.1 - resolution: "esbuild@npm:0.20.1" - dependencies: - "@esbuild/aix-ppc64": 0.20.1 - "@esbuild/android-arm": 0.20.1 - "@esbuild/android-arm64": 0.20.1 - "@esbuild/android-x64": 0.20.1 - "@esbuild/darwin-arm64": 0.20.1 - "@esbuild/darwin-x64": 0.20.1 - "@esbuild/freebsd-arm64": 0.20.1 - "@esbuild/freebsd-x64": 0.20.1 - "@esbuild/linux-arm": 0.20.1 - "@esbuild/linux-arm64": 0.20.1 - "@esbuild/linux-ia32": 0.20.1 - "@esbuild/linux-loong64": 0.20.1 - "@esbuild/linux-mips64el": 0.20.1 - "@esbuild/linux-ppc64": 0.20.1 - "@esbuild/linux-riscv64": 0.20.1 - "@esbuild/linux-s390x": 0.20.1 - "@esbuild/linux-x64": 0.20.1 - "@esbuild/netbsd-x64": 0.20.1 - "@esbuild/openbsd-x64": 0.20.1 - "@esbuild/sunos-x64": 0.20.1 - "@esbuild/win32-arm64": 0.20.1 - "@esbuild/win32-ia32": 0.20.1 - "@esbuild/win32-x64": 0.20.1 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: af8b3c79e48d303501cac8551bf1ac5ebf5d86eebf2d1eb9d2a7018f4c5506bb120ed2454a013e3387e499de780a916bbffc9edd4ef132be403cd39771ace045 - languageName: node - linkType: hard - "escalade@npm:^3.1.1": version: 3.1.2 resolution: "escalade@npm:3.1.2" @@ -7411,6 +7378,13 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc + languageName: node + linkType: hard + "estree-walker@npm:^3.0.3": version: 3.0.3 resolution: "estree-walker@npm:3.0.3" @@ -8512,7 +8486,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.1.0, glob@npm:^8.0.0": +"glob@npm:8.1.0, glob@npm:^8.0.0, glob@npm:^8.0.3": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -9535,7 +9509,7 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^1.1.0, is-buffer@npm:^1.1.5": +"is-buffer@npm:^1.1.0, is-buffer@npm:^1.1.5, is-buffer@npm:~1.1.6": version: 1.1.6 resolution: "is-buffer@npm:1.1.6" checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 @@ -9682,6 +9656,13 @@ __metadata: languageName: node linkType: hard +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.2": version: 2.0.3 resolution: "is-negative-zero@npm:2.0.3" @@ -9740,6 +9721,15 @@ __metadata: languageName: node linkType: hard +"is-reference@npm:1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "*" + checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -11409,6 +11399,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.3": + version: 0.30.8 + resolution: "magic-string@npm:0.30.8" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.15 + checksum: 79922f4500d3932bb587a04440d98d040170decf432edc0f91c0bf8d41db16d364189bf800e334170ac740918feda62cd39dcc170c337dc18050cfcf00a5f232 + languageName: node + linkType: hard + "magic-string@npm:^0.30.5": version: 0.30.7 resolution: "magic-string@npm:0.30.7" @@ -11489,6 +11488,17 @@ __metadata: languageName: node linkType: hard +"md5@npm:^2.3.0": + version: 2.3.0 + resolution: "md5@npm:2.3.0" + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: ~1.1.6 + checksum: a63cacf4018dc9dee08c36e6f924a64ced735b37826116c905717c41cebeb41a522f7a526ba6ad578f9c80f02cb365033ccd67fe186ffbcc1a1faeb75daa9b6e + languageName: node + linkType: hard + "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" @@ -14196,7 +14206,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.3, resolve@npm:^1.1.4, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": +"resolve@npm:^1.1.3, resolve@npm:^1.1.4, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -14216,7 +14226,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.3#~builtin, resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@^1.1.3#~builtin, resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -14402,6 +14412,60 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.13.0": + version: 4.13.0 + resolution: "rollup@npm:4.13.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.13.0 + "@rollup/rollup-android-arm64": 4.13.0 + "@rollup/rollup-darwin-arm64": 4.13.0 + "@rollup/rollup-darwin-x64": 4.13.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.13.0 + "@rollup/rollup-linux-arm64-gnu": 4.13.0 + "@rollup/rollup-linux-arm64-musl": 4.13.0 + "@rollup/rollup-linux-riscv64-gnu": 4.13.0 + "@rollup/rollup-linux-x64-gnu": 4.13.0 + "@rollup/rollup-linux-x64-musl": 4.13.0 + "@rollup/rollup-win32-arm64-msvc": 4.13.0 + "@rollup/rollup-win32-ia32-msvc": 4.13.0 + "@rollup/rollup-win32-x64-msvc": 4.13.0 + "@types/estree": 1.0.5 + fsevents: ~2.3.2 + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: c2c35bee0a71ceb0df37c170c2b73a500bf9ebdffb747487d77831348603d50dcfcdd9d0a937362d3a87edda559c9d1e017fba2d75f05f0c594634d9b8dde9a4 + languageName: node + linkType: hard + "rollup@npm:^4.2.0": version: 4.12.0 resolution: "rollup@npm:4.12.0"