diff --git a/.github/workflows/ci-jobs.yml b/.github/workflows/ci-jobs.yml index 0cafa28c79d..afb541d9164 100644 --- a/.github/workflows/ci-jobs.yml +++ b/.github/workflows/ci-jobs.yml @@ -221,8 +221,9 @@ jobs: env: SHOULD_TRANSPILE_FOR_NODE: true run: pnpm build - - name: test - run: pnpm test:node && pnpm --filter "@handlebars/parser" test + - run: pnpm test:node + - run: pnpm --filter "@handlebars/parser" test + - run: pnpm test:node:vitest blueprint-test: name: Blueprint Tests diff --git a/eslint.config.mjs b/eslint.config.mjs index 02c10e37b82..c0cf94344ac 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -235,6 +235,7 @@ export default [ '**/babel.test.config.mjs', 'node-tests/**/*.js', 'tests/node/**/*.js', + 'tests/node-vitest/**/*.js', 'smoke-tests/node-template/**/*.js', 'blueprints/**/*.js', 'bin/**/*.js', @@ -264,6 +265,7 @@ export default [ '**/babel.test.config.mjs', 'node-tests/**/*.js', 'tests/node/**/*.js', + 'tests/node-vitest/**/*.js', 'smoke-tests/node-template/**/*.js', 'blueprints/**/*.js', 'bin/**/*.js', diff --git a/package.json b/package.json index fe241f8d56b..967c9bc858d 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "test": "testem ci -f testem.js --host 127.0.0.1 --port 13141", "test:blueprints": "mocha node-tests/blueprints/**/*-test.js", "test:node": "qunit tests/node/**/*-test.js", + "test:node:vitest": "pnpm --filter ember-test-node-vitest test:node", "test:browserstack": "node bin/run-browserstack-tests.js", "test:wip": "vite build --mode development --minify false && testem ci", "type-check:internals": "tsc --noEmit", @@ -157,7 +158,8 @@ "esbuild" ], "patchedDependencies": { - "@tracerbench/core@8.0.1": "patches/@tracerbench__core@8.0.1.patch" + "@tracerbench/core@8.0.1": "patches/@tracerbench__core@8.0.1.patch", + "agadoo": "patches/agadoo.patch" } }, "peerDependencies": { diff --git a/patches/agadoo.patch b/patches/agadoo.patch new file mode 100644 index 00000000000..46fc4c404f1 --- /dev/null +++ b/patches/agadoo.patch @@ -0,0 +1,22 @@ +diff --git a/index.js b/index.js +index 53354a5de59bb26283bb2cedb6ff5ff0ca6a1fa1..28777e32a9960785fcc31d79ade2a14b200f0cfe 100644 +--- a/index.js ++++ b/index.js +@@ -25,7 +25,7 @@ export async function check(input) { + const { code } = result.output[0]; + + const ast = acorn.parse(code, { +- ecmaVersion: 11, ++ ecmaVersion: 'latest', + sourceType: 'module' + }); + +@@ -33,7 +33,7 @@ export async function check(input) { + return node.type !== 'ImportDeclaration'; + }); + +- console.log(code); ++// console.log removed by patch + + return { + shaken: nodes.length === 0 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fb4d270895..2b04a3d7ebb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,9 @@ patchedDependencies: '@tracerbench/core@8.0.1': hash: 5e48bdb11a088927d3415cc5430bb6c37d5ce66ed2dab1327914b55e4fd5cd13 path: patches/@tracerbench__core@8.0.1.patch + agadoo: + hash: c1058fc9952e79cd32c4681e029134a3dce79fd43dcd50a3dde1cda5d7e0e802 + path: patches/agadoo.patch importers: @@ -3198,6 +3201,24 @@ importers: specifier: ^7.3.1 version: 7.3.2(@types/node@22.19.15)(lightningcss@1.32.0)(terser@5.46.1) + tests/node-vitest: + dependencies: + agadoo: + specifier: ^3.0.0 + version: 3.0.0(patch_hash=c1058fc9952e79cd32c4681e029134a3dce79fd43dcd50a3dde1cda5d7e0e802) + ember-source: + specifier: workspace:* + version: link:../.. + enhanced-resolve: + specifier: ^5.21.0 + version: 5.21.0 + vite: + specifier: ^8.0.10 + version: 8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1) + vitest: + specifier: ^4.1.5 + version: 4.1.5(@types/node@22.19.15)(jsdom@26.1.0)(vite@8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1)) + packages: '@asamuzakjp/css-color@3.2.0': @@ -5101,6 +5122,15 @@ packages: rollup: optional: true + '@rollup/plugin-virtual@3.0.2': + resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^4.2.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -5650,6 +5680,9 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@swc-node/core@1.14.1': resolution: {integrity: sha512-jrt5GUaZUU6cmMS+WTJEvGvaB6j1YNKPHPzC2PUi2BjaFbtxURHj6641Az6xN7b665hNniAIdvjxWcRml5yCnw==} engines: {node: '>= 10'} @@ -5824,6 +5857,9 @@ packages: '@types/babel__code-frame@7.27.0': resolution: {integrity: sha512-Dwlo+LrxDx/0SpfmJ/BKveHf7QXWvLBLc+x03l5sbzykj3oB9nHygCpSECF1a+s+QIxbghe+KHqC90vGtxLRAA==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/cli-progress@3.11.6': resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} @@ -5833,6 +5869,9 @@ packages: '@types/d3-hierarchy@3.1.7': resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -5962,6 +6001,35 @@ packages: resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} + + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} + + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} + + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -6060,6 +6128,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agadoo@3.0.0: + resolution: {integrity: sha512-gq+fjT3Ilrhb88Jf+vYMjdO/+3znYfa7vJ4IMLPFsBPUxglnr40Ed3yCLrW6IABdJAedB94b2BkqR6I04lh3dg==} + hasBin: true + agent-base@4.3.0: resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} engines: {node: '>= 4.0.0'} @@ -6277,6 +6349,10 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-types@0.13.3: resolution: {integrity: sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==} engines: {node: '>=4'} @@ -6797,6 +6873,10 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + chalk@1.0.0: resolution: {integrity: sha512-1TE3hpADga5iWinlcCpyhC7fTl9uQumLD8i2jJoJeVg7UbveY5jj7F6uCq8w0hQpSeLhaPn5QFe8e56toMVP1A==} engines: {node: '>=0.10.0'} @@ -7817,6 +7897,10 @@ packages: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + engines: {node: '>=10.13.0'} + ensure-posix-path@1.1.1: resolution: {integrity: sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==} @@ -8086,6 +8170,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} engines: {node: '>=0.10.0'} @@ -9659,6 +9746,9 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10101,6 +10191,9 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -10360,6 +10453,9 @@ packages: path@0.12.7: resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -11087,6 +11183,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -11220,6 +11319,9 @@ packages: resolution: {integrity: sha512-DQIMWCAr/M7phwo+d3bEfXwSBEwuaJL+SJx9cuqt1Ty7K96ZFoHpYnSbhrQZEr0+0/GtmpKECP8X/R4RyeTAfw==} engines: {node: '>= 0.10.4'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stacktracey@2.2.0: resolution: {integrity: sha512-ETyQEz+CzXiLjEbyJqpbp+/T79RQD/6wqFucRBIlVNZfYq2Ay7wbretD4cxpbymZlaPWx58aIhPEY1Cr8DlVvg==} @@ -11235,6 +11337,9 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -11470,6 +11575,10 @@ packages: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -11539,6 +11648,13 @@ packages: tiny-lr@2.0.0: resolution: {integrity: sha512-f6nh0VMRvhGx4KCeK1lQ/jaL0Zdb5WdR+Jk8q9OSUQnaSDxAEGH1fgqLZ+cMl5EW3F2MGnCsalBO1IsnnogW1Q==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -11547,6 +11663,10 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} @@ -11982,6 +12102,47 @@ packages: yaml: optional: true + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vow-fs@0.3.6: resolution: {integrity: sha512-oK9rtqJSHy7ZQAhAtVU0HiF/oVhm0A4Qx2l2DyyFBUsXbTXUg258EsQGLLIXYZnE5MYaInZLgA6l/10je/EamA==} engines: {node: '>= 0.6.0'} @@ -12114,6 +12275,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} @@ -14917,6 +15083,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@rollup/plugin-virtual@3.0.2(rollup@4.60.1)': + optionalDependencies: + rollup: 4.60.1 + '@rollup/pluginutils@5.3.0(rollup@4.60.0)': dependencies: '@types/estree': 1.0.8 @@ -15458,6 +15628,8 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} + '@standard-schema/spec@1.1.0': {} + '@swc-node/core@1.14.1(@swc/core@1.15.21)(@swc/types@0.1.26)': dependencies: '@swc/core': 1.15.21 @@ -15675,6 +15847,11 @@ snapshots: '@types/babel__code-frame@7.27.0': {} + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/cli-progress@3.11.6': dependencies: '@types/node': 22.19.15 @@ -15685,6 +15862,8 @@ snapshots: '@types/d3-hierarchy@3.1.7': {} + '@types/deep-eql@4.0.2': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -15828,7 +16007,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.4 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -15850,6 +16029,47 @@ snapshots: '@typescript-eslint/types': 8.57.2 eslint-visitor-keys: 5.0.1 + '@vitest/expect@4.1.5': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1))': + dependencies: + '@vitest/spy': 4.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1) + + '@vitest/pretty-format@4.1.5': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.5': + dependencies: + '@vitest/utils': 4.1.5 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.5': {} + + '@vitest/utils@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + '@webassemblyjs/ast@1.14.1': dependencies: '@webassemblyjs/helper-numbers': 1.13.2 @@ -15966,6 +16186,12 @@ snapshots: acorn@8.16.0: {} + agadoo@3.0.0(patch_hash=c1058fc9952e79cd32c4681e029134a3dce79fd43dcd50a3dde1cda5d7e0e802): + dependencies: + '@rollup/plugin-virtual': 3.0.2(rollup@4.60.1) + acorn: 8.16.0 + rollup: 4.60.1 + agent-base@4.3.0: dependencies: es6-promisify: 5.0.0 @@ -16202,6 +16428,8 @@ snapshots: assertion-error@1.1.0: {} + assertion-error@2.0.1: {} + ast-types@0.13.3: {} ast-types@0.14.2: @@ -17074,6 +17302,8 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 + chai@6.2.2: {} + chalk@1.0.0: dependencies: ansi-styles: 2.2.1 @@ -18309,6 +18539,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.2 + enhanced-resolve@5.21.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + ensure-posix-path@1.1.1: {} entities@1.1.2: {} @@ -18675,6 +18910,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@1.0.0: {} esutils@2.0.3: {} @@ -20505,6 +20744,10 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -20947,6 +21190,8 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + obug@2.1.1: {} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -21209,6 +21454,8 @@ snapshots: process: 0.11.10 util: 0.10.4 + pathe@2.0.3: {} + pathval@1.1.1: {} picocolors@1.1.1: {} @@ -22084,6 +22331,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -22179,7 +22428,7 @@ snapshots: is-plain-obj: 4.1.0 semver: 7.7.4 sort-object-keys: 1.1.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 sort-package-json@3.6.1: dependencies: @@ -22241,6 +22490,8 @@ snapshots: sri-toolbox@0.2.0: {} + stackback@0.0.2: {} + stacktracey@2.2.0: dependencies: as-table: 1.0.55 @@ -22252,6 +22503,8 @@ snapshots: statuses@2.0.2: {} + std-env@4.1.0: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -22547,6 +22800,8 @@ snapshots: tapable@2.3.2: {} + tapable@2.3.3: {} + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -22765,6 +23020,10 @@ snapshots: transitivePeerDependencies: - supports-color + tinybench@2.9.0: {} + + tinyexec@1.1.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -22775,6 +23034,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyrainbow@3.1.0: {} + tldts-core@6.1.86: {} tldts-core@7.0.27: @@ -23185,6 +23446,34 @@ snapshots: fsevents: 2.3.3 terser: 5.46.1 + vitest@4.1.5(@types/node@22.19.15)(jsdom@26.1.0)(vite@8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1)): + dependencies: + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@22.19.15)(esbuild@0.27.7)(terser@5.46.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.19.15 + jsdom: 26.1.0 + transitivePeerDependencies: + - msw + vow-fs@0.3.6: dependencies: glob: 7.2.3 @@ -23408,6 +23697,11 @@ snapshots: dependencies: isexe: 3.1.5 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + widest-line@3.1.0: dependencies: string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ea6c625d4b4..a781f11ec53 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,3 +7,4 @@ packages: - 'packages/@types/*' - 'packages/*/*/test' - 'smoke-tests/*' + - 'tests/*' diff --git a/tests/node-vitest/helpers.js b/tests/node-vitest/helpers.js new file mode 100644 index 00000000000..c9620a79af1 --- /dev/null +++ b/tests/node-vitest/helpers.js @@ -0,0 +1,12 @@ +import { readFileSync } from 'node:fs'; +import eResolve from 'enhanced-resolve'; + +const resolve = eResolve.create.sync({ conditionNames: [] }); + +const manifestPath = resolve(process.cwd(), 'ember-source/package.json'); + +export function getRenamedModules() { + let manifest = JSON.parse(readFileSync(manifestPath).toString()); + + return Object.values(manifest['ember-addon']['renamed-modules']); +} diff --git a/tests/node-vitest/package.json b/tests/node-vitest/package.json new file mode 100644 index 00000000000..9ab2688fd03 --- /dev/null +++ b/tests/node-vitest/package.json @@ -0,0 +1,17 @@ +{ + "name": "ember-test-node-vitest", + "version": "0.0.0", + "private": true, + "type": "module", + "description": "Node-focused smoke test template for ember-source", + "scripts": { + "test:node": "vitest run" + }, + "dependencies": { + "agadoo": "^3.0.0", + "ember-source": "workspace:*", + "enhanced-resolve": "^5.21.0", + "vite": "^8.0.10", + "vitest": "^4.1.5" + } +} diff --git a/tests/node-vitest/tree-shakability.test.js b/tests/node-vitest/tree-shakability.test.js new file mode 100644 index 00000000000..46a49098b5e --- /dev/null +++ b/tests/node-vitest/tree-shakability.test.js @@ -0,0 +1,416 @@ +/** + * + * These snapshot tests or so tat we can keep track of how "tree-shakable" ember-source is. + * Ideally, over time, more and more moves to the "shaken" snapshot, + * and out of the "notShaken" snapshot + * + */ +import { it, expect } from 'vitest'; +import { getRenamedModules } from './helpers.js'; + +import { check } from 'agadoo'; +import resolve from 'enhanced-resolve'; + +const devResolve = resolve.create.sync({ conditionNames: ['development'] }); +const prodResolve = resolve.create.sync({ conditionNames: ['production'] }); +const cwd = process.cwd(); + +async function findShakenFiles(entries, resolver) { + let shaken = new Set(); + let notShaken = new Set(); + + await Promise.all( + entries.map(async (entry) => { + let file = resolver(cwd, entry); + let result = await check(file); + + if (result.shaken) { + shaken.add(entry); + } else { + notShaken.add(entry); + } + }) + ); + + return { shaken: [...shaken].sort(), notShaken: [...notShaken].sort() }; +} + +it('[dev] has expected tree-shakable entrypoints', async () => { + let entries = getRenamedModules(); + let result = await findShakenFiles(entries, devResolve); + + expect(result.shaken).toMatchInlineSnapshot(` + [ + "ember-source/@ember/-internals/browser-environment/index.js", + "ember-source/@ember/-internals/error-handling/index.js", + "ember-source/@ember/-internals/owner/index.js", + "ember-source/@ember/-internals/string/index.js", + "ember-source/@ember/-internals/utility-types/index.js", + "ember-source/@ember/-internals/views/lib/compat/attrs.js", + "ember-source/@ember/array/-internals.js", + "ember-source/@ember/array/lib/make-array.js", + "ember-source/@ember/array/make.js", + "ember-source/@ember/debug/lib/assert.js", + "ember-source/@ember/debug/lib/capture-render-tree.js", + "ember-source/@ember/debug/lib/handlers.js", + "ember-source/@ember/debug/lib/inspect.js", + "ember-source/@ember/debug/lib/testing.js", + "ember-source/@ember/deprecated-features/index.js", + "ember-source/@ember/destroyable/index.js", + "ember-source/@ember/engine/lib/engine-parent.js", + "ember-source/@ember/engine/parent.js", + "ember-source/@ember/owner/index.js", + "ember-source/@ember/reactive/index.js", + "ember-source/@ember/routing/lib/cache.js", + "ember-source/@ember/routing/lib/controller_for.js", + "ember-source/@ember/routing/lib/location-utils.js", + "ember-source/@ember/routing/lib/query_params.js", + "ember-source/@ember/template-compilation/index.js", + "ember-source/@ember/template-compiler/-internal-utils.js", + "ember-source/@ember/template-compiler/lib/dasherize-component-name.js", + "ember-source/@ember/template-compiler/lib/plugins/allowed-globals.js", + "ember-source/@ember/template-compiler/lib/plugins/auto-import-builtins.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-action-syntax.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js", + "ember-source/@ember/template-compiler/lib/plugins/utils.js", + "ember-source/@ember/template-compiler/lib/system/calculate-location-display.js", + "ember-source/@ember/template/index.js", + "ember-source/@ember/test/index.js", + "ember-source/@ember/utils/lib/is-equal.js", + "ember-source/@ember/utils/lib/is_none.js", + "ember-source/@ember/version/index.js", + "ember-source/@glimmer/destroyable/index.js", + "ember-source/@glimmer/encoder/index.js", + "ember-source/@glimmer/env/index.js", + "ember-source/@glimmer/global-context/index.js", + "ember-source/@glimmer/node/index.js", + "ember-source/@glimmer/owner/index.js", + "ember-source/@glimmer/util/index.js", + "ember-source/@glimmer/vm/index.js", + "ember-source/@glimmer/wire-format/index.js", + "ember-source/@simple-dom/document/index.js", + "ember-source/backburner.js/index.js", + "ember-source/dag-map/index.js", + "ember-source/ember-testing/lib/test.js", + "ember-source/ember-testing/lib/test/adapter.js", + "ember-source/ember-testing/lib/test/pending_requests.js", + "ember-source/ember-testing/lib/test/waiters.js", + "ember-source/ember/version.js", + "ember-source/route-recognizer/index.js", + ] + `); + expect(result.notShaken).toMatchInlineSnapshot(` + [ + "ember-source/@ember/-internals/container/index.js", + "ember-source/@ember/-internals/deprecations/index.js", + "ember-source/@ember/-internals/environment/index.js", + "ember-source/@ember/-internals/glimmer/index.js", + "ember-source/@ember/-internals/meta/index.js", + "ember-source/@ember/-internals/meta/lib/meta.js", + "ember-source/@ember/-internals/metal/index.js", + "ember-source/@ember/-internals/routing/index.js", + "ember-source/@ember/-internals/runtime/index.js", + "ember-source/@ember/-internals/runtime/lib/ext/rsvp.js", + "ember-source/@ember/-internals/runtime/lib/mixins/-proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/action_handler.js", + "ember-source/@ember/-internals/runtime/lib/mixins/comparable.js", + "ember-source/@ember/-internals/runtime/lib/mixins/container_proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/registry_proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/target_action_support.js", + "ember-source/@ember/-internals/utils/index.js", + "ember-source/@ember/-internals/views/index.js", + "ember-source/@ember/-internals/views/lib/compat/fallback-view-registry.js", + "ember-source/@ember/-internals/views/lib/mixins/action_support.js", + "ember-source/@ember/-internals/views/lib/system/event_dispatcher.js", + "ember-source/@ember/-internals/views/lib/system/utils.js", + "ember-source/@ember/-internals/views/lib/views/core_view.js", + "ember-source/@ember/-internals/views/lib/views/states.js", + "ember-source/@ember/application/index.js", + "ember-source/@ember/application/instance.js", + "ember-source/@ember/application/namespace.js", + "ember-source/@ember/array/index.js", + "ember-source/@ember/array/mutable.js", + "ember-source/@ember/array/proxy.js", + "ember-source/@ember/canary-features/index.js", + "ember-source/@ember/component/helper.js", + "ember-source/@ember/component/index.js", + "ember-source/@ember/component/template-only.js", + "ember-source/@ember/controller/index.js", + "ember-source/@ember/debug/container-debug-adapter.js", + "ember-source/@ember/debug/data-adapter.js", + "ember-source/@ember/debug/index.js", + "ember-source/@ember/debug/lib/deprecate.js", + "ember-source/@ember/debug/lib/warn.js", + "ember-source/@ember/engine/index.js", + "ember-source/@ember/engine/instance.js", + "ember-source/@ember/enumerable/index.js", + "ember-source/@ember/enumerable/mutable.js", + "ember-source/@ember/helper/index.js", + "ember-source/@ember/instrumentation/index.js", + "ember-source/@ember/modifier/index.js", + "ember-source/@ember/modifier/on.js", + "ember-source/@ember/object/-internals.js", + "ember-source/@ember/object/compat.js", + "ember-source/@ember/object/computed.js", + "ember-source/@ember/object/core.js", + "ember-source/@ember/object/evented.js", + "ember-source/@ember/object/events.js", + "ember-source/@ember/object/index.js", + "ember-source/@ember/object/internals.js", + "ember-source/@ember/object/lib/computed/computed_macros.js", + "ember-source/@ember/object/lib/computed/reduce_computed_macros.js", + "ember-source/@ember/object/mixin.js", + "ember-source/@ember/object/observable.js", + "ember-source/@ember/object/observers.js", + "ember-source/@ember/object/promise-proxy-mixin.js", + "ember-source/@ember/object/proxy.js", + "ember-source/@ember/reactive/collections.js", + "ember-source/@ember/renderer/index.js", + "ember-source/@ember/routing/-internals.js", + "ember-source/@ember/routing/hash-location.js", + "ember-source/@ember/routing/history-location.js", + "ember-source/@ember/routing/index.js", + "ember-source/@ember/routing/lib/dsl.js", + "ember-source/@ember/routing/lib/generate_controller.js", + "ember-source/@ember/routing/lib/router_state.js", + "ember-source/@ember/routing/lib/routing-service.js", + "ember-source/@ember/routing/lib/utils.js", + "ember-source/@ember/routing/none-location.js", + "ember-source/@ember/routing/route.js", + "ember-source/@ember/routing/router-service.js", + "ember-source/@ember/routing/router.js", + "ember-source/@ember/runloop/index.js", + "ember-source/@ember/service/index.js", + "ember-source/@ember/template-compiler/-internal-primitives.js", + "ember-source/@ember/template-compiler/index.js", + "ember-source/@ember/template-compiler/lib/-internal/primitives.js", + "ember-source/@ember/template-compiler/lib/compile-options.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-against-attrs.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js", + "ember-source/@ember/template-compiler/lib/plugins/index.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-each-track-array.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-in-element.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-resolutions.js", + "ember-source/@ember/template-compiler/lib/public-api.js", + "ember-source/@ember/template-compiler/lib/runtime.js", + "ember-source/@ember/template-compiler/lib/template.js", + "ember-source/@ember/template-compiler/runtime.js", + "ember-source/@ember/template-factory/index.js", + "ember-source/@ember/test/adapter.js", + "ember-source/@ember/utils/index.js", + "ember-source/@ember/utils/lib/compare.js", + "ember-source/@ember/utils/lib/is_blank.js", + "ember-source/@ember/utils/lib/is_empty.js", + "ember-source/@ember/utils/lib/is_present.js", + "ember-source/@ember/utils/lib/type-of.js", + "ember-source/@glimmer/manager/index.js", + "ember-source/@glimmer/opcode-compiler/index.js", + "ember-source/@glimmer/program/index.js", + "ember-source/@glimmer/reference/index.js", + "ember-source/@glimmer/runtime/index.js", + "ember-source/@glimmer/tracking/index.js", + "ember-source/@glimmer/tracking/primitives/cache/index.js", + "ember-source/@glimmer/validator/index.js", + "ember-source/ember-template-compiler/index.js", + "ember-source/ember-testing/index.js", + "ember-source/ember-testing/lib/adapters/adapter.js", + "ember-source/ember-testing/lib/public-api.js", + "ember-source/router_js/index.js", + "ember-source/rsvp/index.js", + ] + `); +}, 20_000); + +it('[prod] has expected tree-shakable entrypoints', async () => { + let entries = getRenamedModules(); + let result = await findShakenFiles(entries, prodResolve); + + expect(result.shaken).toMatchInlineSnapshot(` + [ + "ember-source/@ember/-internals/browser-environment/index.js", + "ember-source/@ember/-internals/error-handling/index.js", + "ember-source/@ember/-internals/owner/index.js", + "ember-source/@ember/-internals/string/index.js", + "ember-source/@ember/-internals/utility-types/index.js", + "ember-source/@ember/-internals/views/lib/compat/attrs.js", + "ember-source/@ember/array/-internals.js", + "ember-source/@ember/array/lib/make-array.js", + "ember-source/@ember/array/make.js", + "ember-source/@ember/debug/lib/assert.js", + "ember-source/@ember/debug/lib/capture-render-tree.js", + "ember-source/@ember/debug/lib/handlers.js", + "ember-source/@ember/debug/lib/inspect.js", + "ember-source/@ember/debug/lib/testing.js", + "ember-source/@ember/debug/lib/warn.js", + "ember-source/@ember/deprecated-features/index.js", + "ember-source/@ember/destroyable/index.js", + "ember-source/@ember/engine/lib/engine-parent.js", + "ember-source/@ember/engine/parent.js", + "ember-source/@ember/owner/index.js", + "ember-source/@ember/reactive/index.js", + "ember-source/@ember/routing/lib/cache.js", + "ember-source/@ember/routing/lib/controller_for.js", + "ember-source/@ember/routing/lib/location-utils.js", + "ember-source/@ember/routing/lib/query_params.js", + "ember-source/@ember/template-compilation/index.js", + "ember-source/@ember/template-compiler/-internal-utils.js", + "ember-source/@ember/template-compiler/lib/dasherize-component-name.js", + "ember-source/@ember/template-compiler/lib/plugins/allowed-globals.js", + "ember-source/@ember/template-compiler/lib/plugins/auto-import-builtins.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-action-syntax.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js", + "ember-source/@ember/template-compiler/lib/plugins/utils.js", + "ember-source/@ember/template-compiler/lib/system/calculate-location-display.js", + "ember-source/@ember/template/index.js", + "ember-source/@ember/test/index.js", + "ember-source/@ember/utils/lib/is-equal.js", + "ember-source/@ember/utils/lib/is_none.js", + "ember-source/@ember/version/index.js", + "ember-source/@glimmer/destroyable/index.js", + "ember-source/@glimmer/encoder/index.js", + "ember-source/@glimmer/env/index.js", + "ember-source/@glimmer/global-context/index.js", + "ember-source/@glimmer/node/index.js", + "ember-source/@glimmer/owner/index.js", + "ember-source/@glimmer/util/index.js", + "ember-source/@glimmer/vm/index.js", + "ember-source/@glimmer/wire-format/index.js", + "ember-source/@simple-dom/document/index.js", + "ember-source/backburner.js/index.js", + "ember-source/dag-map/index.js", + "ember-source/ember-testing/lib/test.js", + "ember-source/ember-testing/lib/test/adapter.js", + "ember-source/ember-testing/lib/test/pending_requests.js", + "ember-source/ember-testing/lib/test/waiters.js", + "ember-source/ember/version.js", + "ember-source/route-recognizer/index.js", + ] + `); + expect(result.notShaken).toMatchInlineSnapshot(` + [ + "ember-source/@ember/-internals/container/index.js", + "ember-source/@ember/-internals/deprecations/index.js", + "ember-source/@ember/-internals/environment/index.js", + "ember-source/@ember/-internals/glimmer/index.js", + "ember-source/@ember/-internals/meta/index.js", + "ember-source/@ember/-internals/meta/lib/meta.js", + "ember-source/@ember/-internals/metal/index.js", + "ember-source/@ember/-internals/routing/index.js", + "ember-source/@ember/-internals/runtime/index.js", + "ember-source/@ember/-internals/runtime/lib/ext/rsvp.js", + "ember-source/@ember/-internals/runtime/lib/mixins/-proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/action_handler.js", + "ember-source/@ember/-internals/runtime/lib/mixins/comparable.js", + "ember-source/@ember/-internals/runtime/lib/mixins/container_proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/registry_proxy.js", + "ember-source/@ember/-internals/runtime/lib/mixins/target_action_support.js", + "ember-source/@ember/-internals/utils/index.js", + "ember-source/@ember/-internals/views/index.js", + "ember-source/@ember/-internals/views/lib/compat/fallback-view-registry.js", + "ember-source/@ember/-internals/views/lib/mixins/action_support.js", + "ember-source/@ember/-internals/views/lib/system/event_dispatcher.js", + "ember-source/@ember/-internals/views/lib/system/utils.js", + "ember-source/@ember/-internals/views/lib/views/core_view.js", + "ember-source/@ember/-internals/views/lib/views/states.js", + "ember-source/@ember/application/index.js", + "ember-source/@ember/application/instance.js", + "ember-source/@ember/application/namespace.js", + "ember-source/@ember/array/index.js", + "ember-source/@ember/array/mutable.js", + "ember-source/@ember/array/proxy.js", + "ember-source/@ember/canary-features/index.js", + "ember-source/@ember/component/helper.js", + "ember-source/@ember/component/index.js", + "ember-source/@ember/component/template-only.js", + "ember-source/@ember/controller/index.js", + "ember-source/@ember/debug/container-debug-adapter.js", + "ember-source/@ember/debug/data-adapter.js", + "ember-source/@ember/debug/index.js", + "ember-source/@ember/debug/lib/deprecate.js", + "ember-source/@ember/engine/index.js", + "ember-source/@ember/engine/instance.js", + "ember-source/@ember/enumerable/index.js", + "ember-source/@ember/enumerable/mutable.js", + "ember-source/@ember/helper/index.js", + "ember-source/@ember/instrumentation/index.js", + "ember-source/@ember/modifier/index.js", + "ember-source/@ember/modifier/on.js", + "ember-source/@ember/object/-internals.js", + "ember-source/@ember/object/compat.js", + "ember-source/@ember/object/computed.js", + "ember-source/@ember/object/core.js", + "ember-source/@ember/object/evented.js", + "ember-source/@ember/object/events.js", + "ember-source/@ember/object/index.js", + "ember-source/@ember/object/internals.js", + "ember-source/@ember/object/lib/computed/computed_macros.js", + "ember-source/@ember/object/lib/computed/reduce_computed_macros.js", + "ember-source/@ember/object/mixin.js", + "ember-source/@ember/object/observable.js", + "ember-source/@ember/object/observers.js", + "ember-source/@ember/object/promise-proxy-mixin.js", + "ember-source/@ember/object/proxy.js", + "ember-source/@ember/reactive/collections.js", + "ember-source/@ember/renderer/index.js", + "ember-source/@ember/routing/-internals.js", + "ember-source/@ember/routing/hash-location.js", + "ember-source/@ember/routing/history-location.js", + "ember-source/@ember/routing/index.js", + "ember-source/@ember/routing/lib/dsl.js", + "ember-source/@ember/routing/lib/generate_controller.js", + "ember-source/@ember/routing/lib/router_state.js", + "ember-source/@ember/routing/lib/routing-service.js", + "ember-source/@ember/routing/lib/utils.js", + "ember-source/@ember/routing/none-location.js", + "ember-source/@ember/routing/route.js", + "ember-source/@ember/routing/router-service.js", + "ember-source/@ember/routing/router.js", + "ember-source/@ember/runloop/index.js", + "ember-source/@ember/service/index.js", + "ember-source/@ember/template-compiler/-internal-primitives.js", + "ember-source/@ember/template-compiler/index.js", + "ember-source/@ember/template-compiler/lib/-internal/primitives.js", + "ember-source/@ember/template-compiler/lib/compile-options.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-against-attrs.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js", + "ember-source/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js", + "ember-source/@ember/template-compiler/lib/plugins/index.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-each-track-array.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-in-element.js", + "ember-source/@ember/template-compiler/lib/plugins/transform-resolutions.js", + "ember-source/@ember/template-compiler/lib/public-api.js", + "ember-source/@ember/template-compiler/lib/runtime.js", + "ember-source/@ember/template-compiler/lib/template.js", + "ember-source/@ember/template-compiler/runtime.js", + "ember-source/@ember/template-factory/index.js", + "ember-source/@ember/test/adapter.js", + "ember-source/@ember/utils/index.js", + "ember-source/@ember/utils/lib/compare.js", + "ember-source/@ember/utils/lib/is_blank.js", + "ember-source/@ember/utils/lib/is_empty.js", + "ember-source/@ember/utils/lib/is_present.js", + "ember-source/@ember/utils/lib/type-of.js", + "ember-source/@glimmer/manager/index.js", + "ember-source/@glimmer/opcode-compiler/index.js", + "ember-source/@glimmer/program/index.js", + "ember-source/@glimmer/reference/index.js", + "ember-source/@glimmer/runtime/index.js", + "ember-source/@glimmer/tracking/index.js", + "ember-source/@glimmer/tracking/primitives/cache/index.js", + "ember-source/@glimmer/validator/index.js", + "ember-source/ember-template-compiler/index.js", + "ember-source/ember-testing/index.js", + "ember-source/ember-testing/lib/adapters/adapter.js", + "ember-source/ember-testing/lib/public-api.js", + "ember-source/router_js/index.js", + "ember-source/rsvp/index.js", + ] + `); +}, 20_000); diff --git a/tests/node-vitest/vite.config.js b/tests/node-vitest/vite.config.js new file mode 100644 index 00000000000..c049f46e10a --- /dev/null +++ b/tests/node-vitest/vite.config.js @@ -0,0 +1,3 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({});