From 2106e70fa76264e2156c92e94dbd720c7a751b31 Mon Sep 17 00:00:00 2001 From: Dhruvdutt Jadhav Date: Sat, 16 Mar 2019 13:11:34 +0530 Subject: [PATCH] tests(migration): typescript (#613) * chore(test): add migrate test * chore(lint): revert change * chore(test): moved to typescript migrate tests * tests(ts): moved module concatenation plugin to ts * tests(migrate): moved to typescript * tests(webpack-scaffold): moved to typescript * tests(migrate): clean js text fixtures * tests(migrate): update babel-loader test * tests(migrate): update babel-loader snapshot * tests(utils): move tests to TS (#688) * chore(test): add migrate test * chore(lint): revert change * chore(test): moved to typescript migrate tests * tests(ts): moved module concatenation plugin to ts * tests(migrate): moved to typescript * tests(webpack-scaffold): moved to typescript * tests(utils): copy fixtures to __tests_ * tests(utils): move package-manager.test.js to TS * tests(utils): move validate-identifier.test.js to TS * tests(utils): move resolve-packages.test.js to TS * tests(utils): is-local-path.test.js to TS * tests(utils): move npm-exists.test.js to TS * tests(utils): move ast-utils.test.js to TS * tests(utils): WIP-test-cases * tests(utils): move recursive-parser.test.js to TS * tests(utils): move npm-package-exists.test.js to TS * tests(utils): cleanup .js , __fixtures__ and __snapshots__ files * chore(utils): clean console recursive-parser.test.ts * chore(utils): make options param optional * chore: use INode in ast-utils.test.ts * tests(migrate): adds interface ILazyTransformObject * chore(commitlint): remove deprecated lang rule * chore(typings): fix tslint error * tests(migration): refactor dirName in a variable * tests(migrate): refactor dirName in variable 2 * tests(migrate): import path.resolve & add rootPath variable * tests(utils): adds type in forEach * tests(migrate): refactor resolve.test * chore(tests): enable ts in tests * chore(tests): remove unwanted script --- package.json | 11 +- packages/add/README.md | 10 +- packages/add/index.ts | 15 +- .../__snapshots__/migrate.test.ts.snap} | 0 packages/migrate/__tests__/migrate.test.ts | 63 ++++ .../__snapshots__/bannerPlugin.test.ts.snap} | 0 .../__testfixtures__/bannerPlugin-0.input.js | 0 .../__testfixtures__/bannerPlugin-1.input.js | 0 .../__testfixtures__/bannerPlugin-2.input.js | 0 .../__tests__/bannerPlugin.test.ts | 8 + .../migrate/bannerPlugin/bannerPlugin.test.js | 7 - .../commonsChunkPlugin.test.ts.snap} | 0 .../commonsChunkPlugin-0.input.js | 0 .../commonsChunkPlugin-1.input.js | 0 .../commonsChunkPlugin-2.input.js | 0 .../commonsChunkPlugin-3.input.js | 0 .../commonsChunkPlugin-4.input.js | 0 .../commonsChunkPlugin-5.input.js | 0 .../commonsChunkPlugin-6a.input.js | 0 .../commonsChunkPlugin-6b.input.js | 0 .../commonsChunkPlugin-6c.input.js | 0 .../commonsChunkPlugin-6d.input.js | 0 .../commonsChunkPlugin-7.input.js | 0 .../__tests__/commonsChunkPlugin.test.ts | 32 ++ .../commonsChunkPlugin.test.js | 15 - .../extractTextPlugin.test.js.snap | 24 -- .../extractTextPlugin.input.js | 16 - .../extractTextPlugin.test.ts.snap | 21 ++ .../extractTextPlugin.input.js | 13 + .../__tests__/extractTextPlugin.test.ts | 5 + .../extractTextPlugin.test.js | 5 - packages/migrate/index.ts | 2 +- .../loaderOptionsPlugin.test.ts.snap} | 0 .../loaderOptionsPlugin-0.input.js | 0 .../loaderOptionsPlugin-1.input.js | 0 .../loaderOptionsPlugin-2.input.js | 0 .../loaderOptionsPlugin-3.input.js | 0 .../__tests__/loaderOptionsPlugin.test.ts | 25 ++ .../loaderOptionsPlugin.test.js | 8 - .../__snapshots__/loaders.test.js.snap | 270 ---------------- .../__testfixtures__/loaders-0.input.js | 65 ---- .../__testfixtures__/loaders-1.input.js | 8 - .../__testfixtures__/loaders-2.input.js | 15 - .../__testfixtures__/loaders-3.input.js | 8 - .../__testfixtures__/loaders-4.input.js | 8 - .../__testfixtures__/loaders-5.input.js | 12 - .../__testfixtures__/loaders-6.input.js | 12 - .../__testfixtures__/loaders-7.input.js | 14 - .../__testfixtures__/loaders-8.input.js | 14 - .../__testfixtures__/loaders-9.input.js | 14 - .../__snapshots__/loaders.test.ts.snap | 289 ++++++++++++++++++ .../__testfixtures__/loaders-0.input.js | 94 ++++++ .../__testfixtures__/loaders-1.input.js | 10 + .../__testfixtures__/loaders-2.input.js | 20 ++ .../__testfixtures__/loaders-3.input.js | 10 + .../__testfixtures__/loaders-4.input.js | 10 + .../__testfixtures__/loaders-5.input.js | 17 ++ .../__testfixtures__/loaders-6.input.js | 16 + .../__testfixtures__/loaders-7.input.js | 14 + .../__testfixtures__/loaders-8.input.js | 11 + .../__testfixtures__/loaders-9.input.js | 14 + .../migrate/loaders/__tests__/loaders.test.ts | 14 + packages/migrate/loaders/loaders.test.js | 13 - packages/migrate/migrate.test.js | 66 ---- packages/migrate/migrate.ts | 17 +- .../moduleConcatenationPlugin-0.input.js | 5 - .../moduleConcatenationPlugin-1.input.js | 9 - .../moduleConcatenationPlugin-2.input.js | 9 - .../moduleConcatenationPlugin.test.ts.snap} | 16 +- .../moduleConcatenationPlugin-0.input.js | 3 + .../moduleConcatenationPlugin-1.input.js | 6 + .../moduleConcatenationPlugin-2.input.js | 6 + .../moduleConcatenationPlugin.test.ts | 20 ++ .../moduleConcatenationPlugin.test.js | 19 -- .../namedModulesPlugin.test.ts.snap} | 0 .../namedModulesPlugin-0.input.js | 0 .../namedModulesPlugin-1.input.js | 0 .../namedModulesPlugin-2.input.js | 0 .../__tests__/namedModulesPlugin.test.ts | 8 + .../namedModulesPlugin.test.js | 7 - .../noEmitOnErrorsPlugin-0.input.js | 5 - .../noEmitOnErrorsPlugin-1.input.js | 9 - .../noEmitOnErrorsPlugin-2.input.js | 9 - .../noEmitOnErrorsPlugin.test.ts.snap} | 16 +- .../noEmitOnErrorsPlugin-0.input.js | 3 + .../noEmitOnErrorsPlugin-1.input.js | 6 + .../noEmitOnErrorsPlugin-2.input.js | 6 + .../__tests__/noEmitOnErrorsPlugin.test.ts | 20 ++ .../noEmitOnErrorsPlugin.test.js | 7 - .../__testfixtures__/outputPath-1.input.js | 6 - .../__testfixtures__/outputPath-2.input.js | 6 - .../__snapshots__/outputPath.test.ts.snap} | 22 +- .../__testfixtures__/outputPath-0.input.js | 5 + .../__testfixtures__/outputPath-1.input.js | 5 + .../__testfixtures__/outputPath-2.input.js} | 4 +- .../outputPath/__tests__/outputPath.test.ts | 8 + .../migrate/outputPath/outputPath.test.js | 7 - packages/migrate/outputPath/outputPath.ts | 113 +++---- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../removeDeprecatedPlugins-0.input.js | 6 - .../removeDeprecatedPlugins-1.input.js | 6 - .../removeDeprecatedPlugins-2.input.js | 8 - .../removeDeprecatedPlugins-3.input.js | 7 - .../removeDeprecatedPlugins-4.input.js | 8 - .../removeDeprecatedPlugins.test.ts.snap} | 40 ++- .../removeDeprecatedPlugins-0.input.js | 3 + .../removeDeprecatedPlugins-1.input.js | 3 + .../removeDeprecatedPlugins-2.input.js | 3 + .../removeDeprecatedPlugins-3.input.js | 8 + .../removeDeprecatedPlugins-4.input.js | 8 + .../__tests__/removeDeprecatedPlugins.test.ts | 30 ++ .../removeDeprecatedPlugins.test.js | 9 - .../removeDeprecatedPlugins.ts | 55 ++-- .../removeJsonLoader.test.js.snap | 51 ---- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../removeJsonLoader-0.input.js | 19 -- .../removeJsonLoader-1.input.js | 12 - .../removeJsonLoader-2.input.js | 10 - .../removeJsonLoader-3.input.js | 11 - .../removeJsonLoader.test.ts.snap | 53 ++++ .../removeJsonLoader-0.input.js | 20 ++ .../removeJsonLoader-1.input.js | 17 ++ .../removeJsonLoader-2.input.js | 10 + .../removeJsonLoader-3.input.js | 14 + .../__tests__/removeJsonLoader.test.ts | 25 ++ .../removeJsonLoader/removeJsonLoader.test.js | 8 - .../__snapshots__/resolve.test.js.snap | 24 -- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../resolve/__testfixtures__/resolve.input.js | 20 -- .../__snapshots__/resolve.test.ts.snap | 29 ++ .../__testfixtures__/resolve.input.js | 25 ++ .../migrate/resolve/__tests__/resolve.test.ts | 5 + packages/migrate/resolve/resolve.test.js | 5 - packages/migrate/types/index.ts | 0 .../uglifyJsPlugin.test.ts.snap} | 0 .../uglifyJsPlugin-0.input.js | 0 .../uglifyJsPlugin-1.input.js | 0 .../uglifyJsPlugin-2.input.js | 0 .../uglifyJsPlugin-3.input.js | 0 .../uglifyJsPlugin-4.input.js | 0 .../__tests__/uglifyJsPlugin.test.ts | 10 + .../uglifyJsPlugin/uglifyJsPlugin.test.js | 9 - .../__snapshots__/ast-utils.test.ts.snap} | 14 +- .../recursive-parser.test.ts.snap} | 30 +- .../__testfixtures__/fixture-0.input.js | 0 .../__testfixtures__/fixture-1.input.js | 0 .../__testfixtures__/fixture-2.input.js | 0 .../__testfixtures__/fixture-3.input.js | 0 .../ast-utils.test.ts} | 71 ++--- .../is-local-path.test.ts} | 4 +- .../npm-exists.test.ts} | 6 +- .../npm-packages-exists.test.ts} | 10 +- .../package-manager.test.ts} | 20 +- .../utils/__tests__/recursive-parser.test.ts | 65 ++++ .../resolve-packages.test.ts} | 20 +- .../validate-identifier.test.ts} | 15 +- packages/utils/ast-utils.ts | 2 +- packages/utils/defineTest.ts | 144 ++++----- packages/utils/recursive-parser.test.js | 64 ---- ...{index.test.js.snap => index.test.ts.snap} | 0 .../{index.test.js => index.test.ts} | 36 +-- packages/webpack-scaffold/index.ts | 8 +- tsconfig.base.json | 23 +- tsconfig.json | 8 +- tsconfig.packages.json | 8 +- 168 files changed, 1502 insertions(+), 1335 deletions(-) rename packages/migrate/{__snapshots__/migrate.test.js.snap => __tests__/__snapshots__/migrate.test.ts.snap} (100%) create mode 100644 packages/migrate/__tests__/migrate.test.ts rename packages/migrate/bannerPlugin/{__snapshots__/bannerPlugin.test.js.snap => __tests__/__snapshots__/bannerPlugin.test.ts.snap} (100%) rename packages/migrate/bannerPlugin/{ => __tests__}/__testfixtures__/bannerPlugin-0.input.js (100%) rename packages/migrate/bannerPlugin/{ => __tests__}/__testfixtures__/bannerPlugin-1.input.js (100%) rename packages/migrate/bannerPlugin/{ => __tests__}/__testfixtures__/bannerPlugin-2.input.js (100%) create mode 100644 packages/migrate/bannerPlugin/__tests__/bannerPlugin.test.ts delete mode 100644 packages/migrate/bannerPlugin/bannerPlugin.test.js rename packages/migrate/commonsChunkPlugin/{__snapshots__/commonsChunkPlugin.test.js.snap => __tests__/__snapshots__/commonsChunkPlugin.test.ts.snap} (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-0.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-1.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-2.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-3.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-4.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-5.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-6a.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-6b.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-6c.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-6d.input.js (100%) rename packages/migrate/commonsChunkPlugin/{ => __tests__}/__testfixtures__/commonsChunkPlugin-7.input.js (100%) create mode 100644 packages/migrate/commonsChunkPlugin/__tests__/commonsChunkPlugin.test.ts delete mode 100644 packages/migrate/commonsChunkPlugin/commonsChunkPlugin.test.js delete mode 100644 packages/migrate/extractTextPlugin/__snapshots__/extractTextPlugin.test.js.snap delete mode 100644 packages/migrate/extractTextPlugin/__testfixtures__/extractTextPlugin.input.js create mode 100644 packages/migrate/extractTextPlugin/__tests__/__snapshots__/extractTextPlugin.test.ts.snap create mode 100644 packages/migrate/extractTextPlugin/__tests__/__testfixtures__/extractTextPlugin.input.js create mode 100644 packages/migrate/extractTextPlugin/__tests__/extractTextPlugin.test.ts delete mode 100644 packages/migrate/extractTextPlugin/extractTextPlugin.test.js rename packages/migrate/loaderOptionsPlugin/{__snapshots__/loaderOptionsPlugin.test.js.snap => __tests__/__snapshots__/loaderOptionsPlugin.test.ts.snap} (100%) rename packages/migrate/loaderOptionsPlugin/{ => __tests__}/__testfixtures__/loaderOptionsPlugin-0.input.js (100%) rename packages/migrate/loaderOptionsPlugin/{ => __tests__}/__testfixtures__/loaderOptionsPlugin-1.input.js (100%) rename packages/migrate/loaderOptionsPlugin/{ => __tests__}/__testfixtures__/loaderOptionsPlugin-2.input.js (100%) rename packages/migrate/loaderOptionsPlugin/{ => __tests__}/__testfixtures__/loaderOptionsPlugin-3.input.js (100%) create mode 100644 packages/migrate/loaderOptionsPlugin/__tests__/loaderOptionsPlugin.test.ts delete mode 100644 packages/migrate/loaderOptionsPlugin/loaderOptionsPlugin.test.js delete mode 100644 packages/migrate/loaders/__snapshots__/loaders.test.js.snap delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-0.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-1.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-2.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-3.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-4.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-5.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-6.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-7.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-8.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-9.input.js create mode 100644 packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.js create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.js create mode 100644 packages/migrate/loaders/__tests__/loaders.test.ts delete mode 100644 packages/migrate/loaders/loaders.test.js delete mode 100644 packages/migrate/migrate.test.js delete mode 100644 packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-0.input.js delete mode 100644 packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-1.input.js delete mode 100644 packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-2.input.js rename packages/migrate/moduleConcatenationPlugin/{__snapshots__/moduleConcatenationPlugin.test.js.snap => __tests__/__snapshots__/moduleConcatenationPlugin.test.ts.snap} (83%) create mode 100644 packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-0.input.js create mode 100644 packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-1.input.js create mode 100644 packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-2.input.js create mode 100644 packages/migrate/moduleConcatenationPlugin/__tests__/moduleConcatenationPlugin.test.ts delete mode 100644 packages/migrate/moduleConcatenationPlugin/moduleConcatenationPlugin.test.js rename packages/migrate/namedModulesPlugin/{__snapshots__/namedModulesPlugin.test.js.snap => __tests__/__snapshots__/namedModulesPlugin.test.ts.snap} (100%) rename packages/migrate/namedModulesPlugin/{ => __tests__}/__testfixtures__/namedModulesPlugin-0.input.js (100%) rename packages/migrate/namedModulesPlugin/{ => __tests__}/__testfixtures__/namedModulesPlugin-1.input.js (100%) rename packages/migrate/namedModulesPlugin/{ => __tests__}/__testfixtures__/namedModulesPlugin-2.input.js (100%) create mode 100644 packages/migrate/namedModulesPlugin/__tests__/namedModulesPlugin.test.ts delete mode 100644 packages/migrate/namedModulesPlugin/namedModulesPlugin.test.js delete mode 100644 packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-0.input.js delete mode 100644 packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-1.input.js delete mode 100644 packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-2.input.js rename packages/migrate/noEmitOnErrorsPlugin/{__snapshots__/noEmitOnErrorsPlugin.test.js.snap => __tests__/__snapshots__/noEmitOnErrorsPlugin.test.ts.snap} (82%) create mode 100644 packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-0.input.js create mode 100644 packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-1.input.js create mode 100644 packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-2.input.js create mode 100644 packages/migrate/noEmitOnErrorsPlugin/__tests__/noEmitOnErrorsPlugin.test.ts delete mode 100644 packages/migrate/noEmitOnErrorsPlugin/noEmitOnErrorsPlugin.test.js delete mode 100644 packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js delete mode 100644 packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js rename packages/migrate/outputPath/{__snapshots__/outputPath.test.js.snap => __tests__/__snapshots__/outputPath.test.ts.snap} (59%) create mode 100644 packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.js create mode 100644 packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.js rename packages/migrate/outputPath/{__testfixtures__/outputPath-0.input.js => __tests__/__testfixtures__/outputPath-2.input.js} (64%) create mode 100644 packages/migrate/outputPath/__tests__/outputPath.test.ts delete mode 100644 packages/migrate/outputPath/outputPath.test.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js rename packages/migrate/removeDeprecatedPlugins/{__snapshots__/removeDeprecatedPlugins.test.js.snap => __tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap} (50%) create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.js create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.js create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.js create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.js create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.js create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts delete mode 100644 packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js delete mode 100644 packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js create mode 100644 packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.js create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.js create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.js create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.js create mode 100644 packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts delete mode 100644 packages/migrate/removeJsonLoader/removeJsonLoader.test.js delete mode 100644 packages/migrate/resolve/__snapshots__/resolve.test.js.snap delete mode 100644 packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/resolve/__testfixtures__/resolve.input.js create mode 100644 packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap create mode 100644 packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.js create mode 100644 packages/migrate/resolve/__tests__/resolve.test.ts delete mode 100644 packages/migrate/resolve/resolve.test.js delete mode 100644 packages/migrate/types/index.ts rename packages/migrate/uglifyJsPlugin/{__snapshots__/uglifyJsPlugin.test.js.snap => __tests__/__snapshots__/uglifyJsPlugin.test.ts.snap} (100%) rename packages/migrate/uglifyJsPlugin/{ => __tests__}/__testfixtures__/uglifyJsPlugin-0.input.js (100%) rename packages/migrate/uglifyJsPlugin/{ => __tests__}/__testfixtures__/uglifyJsPlugin-1.input.js (100%) rename packages/migrate/uglifyJsPlugin/{ => __tests__}/__testfixtures__/uglifyJsPlugin-2.input.js (100%) rename packages/migrate/uglifyJsPlugin/{ => __tests__}/__testfixtures__/uglifyJsPlugin-3.input.js (100%) rename packages/migrate/uglifyJsPlugin/{ => __tests__}/__testfixtures__/uglifyJsPlugin-4.input.js (100%) create mode 100644 packages/migrate/uglifyJsPlugin/__tests__/uglifyJsPlugin.test.ts delete mode 100644 packages/migrate/uglifyJsPlugin/uglifyJsPlugin.test.js rename packages/utils/{__snapshots__/ast-utils.test.js.snap => __tests__/__snapshots__/ast-utils.test.ts.snap} (96%) rename packages/utils/{__snapshots__/recursive-parser.test.js.snap => __tests__/__snapshots__/recursive-parser.test.ts.snap} (98%) rename packages/utils/{ => __tests__}/__testfixtures__/fixture-0.input.js (100%) rename packages/utils/{ => __tests__}/__testfixtures__/fixture-1.input.js (100%) rename packages/utils/{ => __tests__}/__testfixtures__/fixture-2.input.js (100%) rename packages/utils/{ => __tests__}/__testfixtures__/fixture-3.input.js (100%) rename packages/utils/{ast-utils.test.js => __tests__/ast-utils.test.ts} (88%) rename packages/utils/{is-local-path.test.js => __tests__/is-local-path.test.ts} (87%) rename packages/utils/{npm-exists.test.js => __tests__/npm-exists.test.ts} (64%) rename packages/utils/{npm-packages-exists.test.js => __tests__/npm-packages-exists.test.ts} (59%) rename packages/utils/{package-manager.test.js => __tests__/package-manager.test.ts} (94%) create mode 100644 packages/utils/__tests__/recursive-parser.test.ts rename packages/utils/{resolve-packages.test.js => __tests__/resolve-packages.test.ts} (82%) rename packages/utils/{validate-identifier.test.js => __tests__/validate-identifier.test.ts} (59%) delete mode 100644 packages/utils/recursive-parser.test.js rename packages/webpack-scaffold/__tests__/__snapshots__/{index.test.js.snap => index.test.ts.snap} (100%) rename packages/webpack-scaffold/__tests__/{index.test.js => index.test.ts} (88%) diff --git a/package.json b/package.json index dbbf4dc175e..4e7f1393bb6 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,6 @@ }, "jest": { "testPathIgnorePatterns": [ - "^.+\\.(ts)?$", "/node_modules/" ], "testEnvironment": "node", @@ -73,9 +72,15 @@ "html", "cobertura" ], - "moduleNameMapper": { + "transform": { "^.+\\.(ts)?$": "ts-jest" - } + }, + "testRegex": "/__tests__/.*\\.(test.js|test.ts)$", + "moduleFileExtensions": [ + "ts", + "js", + "json" + ] }, "nyc": { "include": [ diff --git a/packages/add/README.md b/packages/add/README.md index 81145ceee68..0cb1b45b86c 100644 --- a/packages/add/README.md +++ b/packages/add/README.md @@ -10,17 +10,25 @@ This package contains the logic to add new properties in a webpack configuration npm i -D webpack-cli @webpack-cli/add ``` +or + +```bash +yarn add --dev webpack-cli @webpack-cli/add +``` + ## Usage To run the scaffolding instance programmatically, install it as a dependency. When using the package programmatically, one does not have to install webpack-cli. ### Node + ```js const add = require("@webpack-cli/add").default; add(); ``` ### CLI (via `webpack-cli`) + ```bash npx webpack-cli add -``` \ No newline at end of file +``` diff --git a/packages/add/index.ts b/packages/add/index.ts index 38f545d6889..21a80f2d2a9 100644 --- a/packages/add/index.ts +++ b/packages/add/index.ts @@ -9,15 +9,14 @@ import modifyConfigHelper from "@webpack-cli/utils/modify-config-helper"; * we're given on a generator * */ +const DEFAULT_WEBPACK_CONFIG_FILENAME: string = "webpack.config.js"; export default function add(...args: string[]): Function { - const DEFAULT_WEBPACK_CONFIG_FILENAME: string = "webpack.config.js"; + const filePaths: string[] = args.slice(3); + let configFile: string = DEFAULT_WEBPACK_CONFIG_FILENAME; + if (filePaths.length) { + configFile = filePaths[0]; + } - const filePaths: string[] = args.slice(3); - let configFile: string = DEFAULT_WEBPACK_CONFIG_FILENAME; - if (filePaths.length) { - configFile = filePaths[0]; - } - - return modifyConfigHelper("add", defaultGenerator, configFile); + return modifyConfigHelper("add", defaultGenerator, configFile); } diff --git a/packages/migrate/__snapshots__/migrate.test.js.snap b/packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap similarity index 100% rename from packages/migrate/__snapshots__/migrate.test.js.snap rename to packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap diff --git a/packages/migrate/__tests__/migrate.test.ts b/packages/migrate/__tests__/migrate.test.ts new file mode 100644 index 00000000000..4369f0f86b7 --- /dev/null +++ b/packages/migrate/__tests__/migrate.test.ts @@ -0,0 +1,63 @@ +import { transform, transformations } from "../migrate"; + +const input = ` +module.exports = { + devtool: 'eval', + entry: [ + './src/index' + ], + output: { + path: path.join(__dirname, 'dist'), + filename: 'index.js' + }, + module: { + loaders: [{ + test: /.js$/, + loaders: ['babel'], + include: path.join(__dirname, 'src') + }] + }, + resolve: { + root: path.resolve('/src'), + modules: ['node_modules'] + }, + plugins: [ + new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.OccurrenceOrderPlugin() + ], + debug: true +}; +`; + +describe("transform", () => { + it("should not transform if no transformations defined", (done) => { + transform(input, []).then((output) => { + expect(output).toMatchSnapshot(input); + done(); + }); + }); + + it("should transform using all transformations", (done) => { + transform(input).then((output) => { + expect(output).toMatchSnapshot(); + done(); + }); + }); + + it("should transform only using specified transformations", (done) => { + transform(input, [transformations.loadersTransform]).then((output) => { + expect(output).toMatchSnapshot(); + done(); + }); + }); + + it("should respect recast options", (done) => { + transform(input, undefined, { + quote: "double", + trailingComma: true, + }).then((output) => { + expect(output).toMatchSnapshot(); + done(); + }); + }); +}); diff --git a/packages/migrate/bannerPlugin/__snapshots__/bannerPlugin.test.js.snap b/packages/migrate/bannerPlugin/__tests__/__snapshots__/bannerPlugin.test.ts.snap similarity index 100% rename from packages/migrate/bannerPlugin/__snapshots__/bannerPlugin.test.js.snap rename to packages/migrate/bannerPlugin/__tests__/__snapshots__/bannerPlugin.test.ts.snap diff --git a/packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-0.input.js b/packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-0.input.js similarity index 100% rename from packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-0.input.js rename to packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-0.input.js diff --git a/packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-1.input.js b/packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-1.input.js similarity index 100% rename from packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-1.input.js rename to packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-1.input.js diff --git a/packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-2.input.js b/packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-2.input.js similarity index 100% rename from packages/migrate/bannerPlugin/__testfixtures__/bannerPlugin-2.input.js rename to packages/migrate/bannerPlugin/__tests__/__testfixtures__/bannerPlugin-2.input.js diff --git a/packages/migrate/bannerPlugin/__tests__/bannerPlugin.test.ts b/packages/migrate/bannerPlugin/__tests__/bannerPlugin.test.ts new file mode 100644 index 00000000000..f7382096901 --- /dev/null +++ b/packages/migrate/bannerPlugin/__tests__/bannerPlugin.test.ts @@ -0,0 +1,8 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "bannerPlugin", "bannerPlugin-0"); +defineTest(dirName, "bannerPlugin", "bannerPlugin-1"); +defineTest(dirName, "bannerPlugin", "bannerPlugin-2"); diff --git a/packages/migrate/bannerPlugin/bannerPlugin.test.js b/packages/migrate/bannerPlugin/bannerPlugin.test.js deleted file mode 100644 index 8f6ad100036..00000000000 --- a/packages/migrate/bannerPlugin/bannerPlugin.test.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "bannerPlugin", "bannerPlugin-0"); -defineTest(__dirname, "bannerPlugin", "bannerPlugin-1"); -defineTest(__dirname, "bannerPlugin", "bannerPlugin-2"); diff --git a/packages/migrate/commonsChunkPlugin/__snapshots__/commonsChunkPlugin.test.js.snap b/packages/migrate/commonsChunkPlugin/__tests__/__snapshots__/commonsChunkPlugin.test.ts.snap similarity index 100% rename from packages/migrate/commonsChunkPlugin/__snapshots__/commonsChunkPlugin.test.js.snap rename to packages/migrate/commonsChunkPlugin/__tests__/__snapshots__/commonsChunkPlugin.test.ts.snap diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-0.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-0.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-0.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-0.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-1.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-1.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-1.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-1.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-2.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-2.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-2.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-2.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-3.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-3.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-3.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-3.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-4.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-4.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-4.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-4.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-5.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-5.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-5.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-5.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6a.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6a.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6a.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6a.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6b.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6b.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6b.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6b.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6c.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6c.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6c.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6c.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6d.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6d.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-6d.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-6d.input.js diff --git a/packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-7.input.js b/packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-7.input.js similarity index 100% rename from packages/migrate/commonsChunkPlugin/__testfixtures__/commonsChunkPlugin-7.input.js rename to packages/migrate/commonsChunkPlugin/__tests__/__testfixtures__/commonsChunkPlugin-7.input.js diff --git a/packages/migrate/commonsChunkPlugin/__tests__/commonsChunkPlugin.test.ts b/packages/migrate/commonsChunkPlugin/__tests__/commonsChunkPlugin.test.ts new file mode 100644 index 00000000000..5c2e28e1f40 --- /dev/null +++ b/packages/migrate/commonsChunkPlugin/__tests__/commonsChunkPlugin.test.ts @@ -0,0 +1,32 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-0"); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-1"); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-2"); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-3"); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-4"); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-5"); +defineTest( + dirName, + "commonsChunkPlugin", + "commonsChunkPlugin-6a", +); +defineTest( + dirName, + "commonsChunkPlugin", + "commonsChunkPlugin-6b", +); +defineTest( + dirName, + "commonsChunkPlugin", + "commonsChunkPlugin-6c", +); +defineTest( + dirName, + "commonsChunkPlugin", + "commonsChunkPlugin-6d", +); +defineTest(dirName, "commonsChunkPlugin", "commonsChunkPlugin-7"); diff --git a/packages/migrate/commonsChunkPlugin/commonsChunkPlugin.test.js b/packages/migrate/commonsChunkPlugin/commonsChunkPlugin.test.js deleted file mode 100644 index 123b3ba81d8..00000000000 --- a/packages/migrate/commonsChunkPlugin/commonsChunkPlugin.test.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-0"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-1"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-2"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-3"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-4"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-5"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-6a"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-6b"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-6c"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-6d"); -defineTest(__dirname, "commonsChunkPlugin", "commonsChunkPlugin-7"); diff --git a/packages/migrate/extractTextPlugin/__snapshots__/extractTextPlugin.test.js.snap b/packages/migrate/extractTextPlugin/__snapshots__/extractTextPlugin.test.js.snap deleted file mode 100644 index c60c600d9c2..00000000000 --- a/packages/migrate/extractTextPlugin/__snapshots__/extractTextPlugin.test.js.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`extractTextPlugin transforms correctly 1`] = ` -"let ExtractTextPlugin = require('extract-text-webpack-plugin'); -let HTMLWebpackPlugin = require('html-webpack-plugin'); - -module.export = { - module: { - rules: [ - { - test: /\\\\.css$/, - use: ExtractTextPlugin.extract({ - fallback: 'style-loader', - use: 'css-loader' - }) - } - ] - }, - plugins: [ - new ExtractTextPlugin(\\"styles.css\\"), - ] -} -" -`; diff --git a/packages/migrate/extractTextPlugin/__testfixtures__/extractTextPlugin.input.js b/packages/migrate/extractTextPlugin/__testfixtures__/extractTextPlugin.input.js deleted file mode 100644 index f578bb4342d..00000000000 --- a/packages/migrate/extractTextPlugin/__testfixtures__/extractTextPlugin.input.js +++ /dev/null @@ -1,16 +0,0 @@ -let ExtractTextPlugin = require('extract-text-webpack-plugin'); -let HTMLWebpackPlugin = require('html-webpack-plugin'); - -module.export = { - module: { - rules: [ - { - test: /\.css$/, - use: ExtractTextPlugin.extract('style-loader', 'css-loader') - } - ] - }, - plugins: [ - new ExtractTextPlugin("styles.css"), - ] -} diff --git a/packages/migrate/extractTextPlugin/__tests__/__snapshots__/extractTextPlugin.test.ts.snap b/packages/migrate/extractTextPlugin/__tests__/__snapshots__/extractTextPlugin.test.ts.snap new file mode 100644 index 00000000000..fe042da4a2c --- /dev/null +++ b/packages/migrate/extractTextPlugin/__tests__/__snapshots__/extractTextPlugin.test.ts.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`extractTextPlugin transforms correctly 1`] = ` +"const ExtractTextPlugin = require(\\"extract-text-webpack-plugin\\"); + +module.exports = { + module: { + rules: [ + { + test: /\\\\.css$/, + use: ExtractTextPlugin.extract({ + fallback: 'style-loader', + use: 'css-loader' + }) + } + ] + }, + plugins: [new ExtractTextPlugin(\\"styles.css\\")] +}; +" +`; diff --git a/packages/migrate/extractTextPlugin/__tests__/__testfixtures__/extractTextPlugin.input.js b/packages/migrate/extractTextPlugin/__tests__/__testfixtures__/extractTextPlugin.input.js new file mode 100644 index 00000000000..07d46e38cc0 --- /dev/null +++ b/packages/migrate/extractTextPlugin/__tests__/__testfixtures__/extractTextPlugin.input.js @@ -0,0 +1,13 @@ +const ExtractTextPlugin = require("extract-text-webpack-plugin"); + +module.exports = { + module: { + rules: [ + { + test: /\.css$/, + use: ExtractTextPlugin.extract("style-loader", "css-loader") + } + ] + }, + plugins: [new ExtractTextPlugin("styles.css")] +}; diff --git a/packages/migrate/extractTextPlugin/__tests__/extractTextPlugin.test.ts b/packages/migrate/extractTextPlugin/__tests__/extractTextPlugin.test.ts new file mode 100644 index 00000000000..4e866fb005f --- /dev/null +++ b/packages/migrate/extractTextPlugin/__tests__/extractTextPlugin.test.ts @@ -0,0 +1,5 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); +defineTest(dirName, "extractTextPlugin"); diff --git a/packages/migrate/extractTextPlugin/extractTextPlugin.test.js b/packages/migrate/extractTextPlugin/extractTextPlugin.test.js deleted file mode 100644 index b003fcc520a..00000000000 --- a/packages/migrate/extractTextPlugin/extractTextPlugin.test.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "extractTextPlugin"); diff --git a/packages/migrate/index.ts b/packages/migrate/index.ts index c7b6e78ca48..ea51eb87364 100644 --- a/packages/migrate/index.ts +++ b/packages/migrate/index.ts @@ -18,7 +18,7 @@ declare var process: { validate: Function; /* tslint:disable */ WebpackOptionsValidationError: { - new(errors: string[]): { + new: (errors: string[]) => { message: string; }; }; diff --git a/packages/migrate/loaderOptionsPlugin/__snapshots__/loaderOptionsPlugin.test.js.snap b/packages/migrate/loaderOptionsPlugin/__tests__/__snapshots__/loaderOptionsPlugin.test.ts.snap similarity index 100% rename from packages/migrate/loaderOptionsPlugin/__snapshots__/loaderOptionsPlugin.test.js.snap rename to packages/migrate/loaderOptionsPlugin/__tests__/__snapshots__/loaderOptionsPlugin.test.ts.snap diff --git a/packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-0.input.js b/packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-0.input.js similarity index 100% rename from packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-0.input.js rename to packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-0.input.js diff --git a/packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-1.input.js b/packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-1.input.js similarity index 100% rename from packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-1.input.js rename to packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-1.input.js diff --git a/packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-2.input.js b/packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-2.input.js similarity index 100% rename from packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-2.input.js rename to packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-2.input.js diff --git a/packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-3.input.js b/packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-3.input.js similarity index 100% rename from packages/migrate/loaderOptionsPlugin/__testfixtures__/loaderOptionsPlugin-3.input.js rename to packages/migrate/loaderOptionsPlugin/__tests__/__testfixtures__/loaderOptionsPlugin-3.input.js diff --git a/packages/migrate/loaderOptionsPlugin/__tests__/loaderOptionsPlugin.test.ts b/packages/migrate/loaderOptionsPlugin/__tests__/loaderOptionsPlugin.test.ts new file mode 100644 index 00000000000..0126a11b8cd --- /dev/null +++ b/packages/migrate/loaderOptionsPlugin/__tests__/loaderOptionsPlugin.test.ts @@ -0,0 +1,25 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest( + dirName, + "loaderOptionsPlugin", + "loaderOptionsPlugin-0", +); +defineTest( + dirName, + "loaderOptionsPlugin", + "loaderOptionsPlugin-1", +); +defineTest( + dirName, + "loaderOptionsPlugin", + "loaderOptionsPlugin-2", +); +defineTest( + dirName, + "loaderOptionsPlugin", + "loaderOptionsPlugin-3", +); diff --git a/packages/migrate/loaderOptionsPlugin/loaderOptionsPlugin.test.js b/packages/migrate/loaderOptionsPlugin/loaderOptionsPlugin.test.js deleted file mode 100644 index c8928b75473..00000000000 --- a/packages/migrate/loaderOptionsPlugin/loaderOptionsPlugin.test.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-0"); -defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-1"); -defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-2"); -defineTest(__dirname, "loaderOptionsPlugin", "loaderOptionsPlugin-3"); diff --git a/packages/migrate/loaders/__snapshots__/loaders.test.js.snap b/packages/migrate/loaders/__snapshots__/loaders.test.js.snap deleted file mode 100644 index 02b59594ec0..00000000000 --- a/packages/migrate/loaders/__snapshots__/loaders.test.js.snap +++ /dev/null @@ -1,270 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`loaders transforms correctly using "loaders-0" data 1`] = ` -"export default [{ - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }] - } -}, { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }] - }] - } -}, { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - options: { - modules: true - } - }] - }] - } -}, { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -}, { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -}, { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -}, { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -}]; -" -`; - -exports[`loaders transforms correctly using "loaders-1" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }] - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-2" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - options: { - modules: true - } - }] - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-3" data 1`] = ` -"export default { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-4" data 1`] = ` -"export default { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-5" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-6" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-7" data 1`] = ` -"export default { - module: { - rules: [ - { - test: /\\\\.js$/, - exclude: /(node_modules)/, - - use: [{ - loader: 'babel-loader', - - options: { - presets: ['@babel/preset-env'] - } - }] - } - ] - } -}; -" -`; - -exports[`loaders transforms correctly using "loaders-8" data 1`] = ` -"module.exports = { - module: { - rules: [ - { - test: /\\\\.js$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }], - include: path.join(__dirname, 'src') - } - ] - } -} -" -`; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-0.input.js b/packages/migrate/loaders/__testfixtures__/loaders-0.input.js deleted file mode 100644 index e0d498f6506..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-0.input.js +++ /dev/null @@ -1,65 +0,0 @@ -export default [{ - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel' - }] - } -}, { - module: { - loaders: [{ - test: /\.css$/, - loader: 'style!css?modules&importLoaders=1&string=test123' - }] - } -}, { - module: { - loaders: [{ - test: /\.css$/, - loaders: [{ - loader: 'style' - }, { - loader: 'css', - query: { - modules: true - } - }] - }] - } -}, { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint' - }] - } -}, { - module: { - postLoaders:[{ - test: /\.js$/, - loader: 'my-post' - }] - } -}, { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint-loader' - }], - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }] - } -}, { - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }], - postLoaders:[{ - test: /\.js$/, - loader: 'my-post-loader' - }] - } -}]; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-1.input.js b/packages/migrate/loaders/__testfixtures__/loaders-1.input.js deleted file mode 100644 index eae75024e61..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-1.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.css$/, - loader: 'style!css?modules&importLoaders=1&string=test123' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-2.input.js b/packages/migrate/loaders/__testfixtures__/loaders-2.input.js deleted file mode 100644 index 771404a300c..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-2.input.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.css$/, - loaders: [{ - loader: 'style' - }, { - loader: 'css', - query: { - modules: true - } - }] - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-3.input.js b/packages/migrate/loaders/__testfixtures__/loaders-3.input.js deleted file mode 100644 index 4d49e89a89b..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-3.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-4.input.js b/packages/migrate/loaders/__testfixtures__/loaders-4.input.js deleted file mode 100644 index cc3e076bed9..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-4.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - postLoaders:[{ - test: /\.js$/, - loader: 'my-post' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-5.input.js b/packages/migrate/loaders/__testfixtures__/loaders-5.input.js deleted file mode 100644 index 6fd315e4d08..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-5.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint-loader' - }], - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-6.input.js b/packages/migrate/loaders/__testfixtures__/loaders-6.input.js deleted file mode 100644 index 184e4e1ad08..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-6.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }], - postLoaders:[{ - test: /\.js$/, - loader: 'my-post-loader' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-7.input.js b/packages/migrate/loaders/__testfixtures__/loaders-7.input.js deleted file mode 100644 index 32d30c7eb86..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-7.input.js +++ /dev/null @@ -1,14 +0,0 @@ -export default { - module: { - loaders: [ - { - test: /\.js$/, - exclude: /(node_modules)/, - loader: 'babel-loader', - query: { - presets: ['@babel/preset-env'] - } - } - ] - } -}; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-8.input.js b/packages/migrate/loaders/__testfixtures__/loaders-8.input.js deleted file mode 100644 index 737e4515fca..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-8.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - module: { - loaders: [ - { - test: /\.js$/, - loaders: [ - 'style', - 'css?modules&importLoaders=1&string=test123' - ], - include: path.join(__dirname, 'src') - } - ] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-9.input.js b/packages/migrate/loaders/__testfixtures__/loaders-9.input.js deleted file mode 100644 index 0bf440bce28..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-9.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - module: { - loaders: [ - { - test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/], - loader: 'url-loader', - options: { - limit: 10000, - name: 'static/media/[name].[hash:8].[ext]' - } - } - ] - } -} diff --git a/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap b/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap new file mode 100644 index 00000000000..e12d1d75875 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap @@ -0,0 +1,289 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`loaders transforms correctly using "loaders-0" data 1`] = ` +"module.exports = [ + { + module: { + rules: [ + { + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.css$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'style-loader', + }, { + loader: 'css-loader', + options: { + modules: true, + }, + }], + test: /\\\\.css$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }, + ], + }, + }, + { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }] + }, + }, + { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }] + }, + }, +]; +" +`; + +exports[`loaders transforms correctly using "loaders-1" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.css$/, + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-2" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + use: [{ + loader: 'style-loader', + }, { + loader: 'css-loader', + options: { + modules: true, + }, + }], + test: /\\\\.css$/, + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-3" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-4" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-5" data 1`] = ` +"module.exports = { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }] + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-6" data 1`] = ` +"module.exports = { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }] + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-7" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + exclude: /(node_modules)/, + + use: [{ + loader: 'babel-loader', + + options: { + presets: [\\"@babel/preset-env\\"], + } + }], + + test: /\\\\.js$/ + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-8" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + include: path.join(__dirname, \\"src\\"), + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.js$/ + } + ] + } +}; +" +`; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.js new file mode 100644 index 00000000000..e58bb6f88ef --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.js @@ -0,0 +1,94 @@ +module.exports = [ + { + module: { + loaders: [ + { + loader: "babel", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "style!css?modules&importLoaders=1&string=test123", + test: /\.css$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loaders: [ + { + loader: "style", + }, + { + loader: "css", + query: { + modules: true, + }, + }, + ], + test: /\.css$/, + }, + ], + }, + }, + { + module: { + preLoaders: [ + { + loader: "eslint", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + postLoaders: [ + { + loader: "my-post", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + preLoaders: [ + { + loader: "eslint-loader", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + postLoaders: [ + { + loader: "my-post-loader", + test: /\.js$/, + }, + ], + }, + }, +]; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.js new file mode 100644 index 00000000000..0662abea05e --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + loaders: [ + { + loader: "style!css?modules&importLoaders=1&string=test123", + test: /\.css$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.js new file mode 100644 index 00000000000..388182d1d9e --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.js @@ -0,0 +1,20 @@ +module.exports = { + module: { + loaders: [ + { + loaders: [ + { + loader: "style", + }, + { + loader: "css", + query: { + modules: true, + }, + }, + ], + test: /\.css$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.js new file mode 100644 index 00000000000..cef7c100bb7 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + preLoaders: [ + { + loader: "eslint", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.js new file mode 100644 index 00000000000..863f7acb499 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + postLoaders: [ + { + loader: "my-post", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.js new file mode 100644 index 00000000000..63758597dcf --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.js @@ -0,0 +1,17 @@ +module.exports = { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + + preLoaders: [ + { + loader: "eslint-loader", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.js new file mode 100644 index 00000000000..405e508e2d7 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.js @@ -0,0 +1,16 @@ +module.exports = { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + postLoaders: [ + { + loader: "my-post-loader", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.js new file mode 100644 index 00000000000..40c46492632 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.js @@ -0,0 +1,14 @@ +module.exports = { + module: { + loaders: [ + { + exclude: /(node_modules)/, + loader: "babel-loader", + query: { + presets: ["@babel/preset-env"], + }, + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.js new file mode 100644 index 00000000000..1be3161d4b7 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.js @@ -0,0 +1,11 @@ +module.exports = { + module: { + loaders: [ + { + include: path.join(__dirname, "src"), + loaders: ["style", "css?modules&importLoaders=1&string=test123"], + test: /\.js$/ + } + ] + } +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.js b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.js new file mode 100644 index 00000000000..d100038d9a6 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.js @@ -0,0 +1,14 @@ +module.exports = { + module: { + loaders: [ + { + loader: "url-loader", + options: { + limit: 10000, + name: "static/media/[name].[hash:8].[ext]", + }, + test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/], + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/loaders.test.ts b/packages/migrate/loaders/__tests__/loaders.test.ts new file mode 100644 index 00000000000..052103e79ef --- /dev/null +++ b/packages/migrate/loaders/__tests__/loaders.test.ts @@ -0,0 +1,14 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "loaders", "loaders-0"); +defineTest(dirName, "loaders", "loaders-1"); +defineTest(dirName, "loaders", "loaders-2"); +defineTest(dirName, "loaders", "loaders-3"); +defineTest(dirName, "loaders", "loaders-4"); +defineTest(dirName, "loaders", "loaders-5"); +defineTest(dirName, "loaders", "loaders-6"); +defineTest(dirName, "loaders", "loaders-7"); +defineTest(dirName, "loaders", "loaders-8"); diff --git a/packages/migrate/loaders/loaders.test.js b/packages/migrate/loaders/loaders.test.js deleted file mode 100644 index 4dc548b6bc3..00000000000 --- a/packages/migrate/loaders/loaders.test.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "loaders", "loaders-0"); -defineTest(__dirname, "loaders", "loaders-1"); -defineTest(__dirname, "loaders", "loaders-2"); -defineTest(__dirname, "loaders", "loaders-3"); -defineTest(__dirname, "loaders", "loaders-4"); -defineTest(__dirname, "loaders", "loaders-5"); -defineTest(__dirname, "loaders", "loaders-6"); -defineTest(__dirname, "loaders", "loaders-7"); -defineTest(__dirname, "loaders", "loaders-8"); diff --git a/packages/migrate/migrate.test.js b/packages/migrate/migrate.test.js deleted file mode 100644 index 1ba4601cd11..00000000000 --- a/packages/migrate/migrate.test.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -const transform = require("./migrate").transform; -const transformations = require("./migrate").transformations; - -const input = ` -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - loaders: [{ - test: /.js$/, - loaders: ['babel'], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - }, - plugins: [ - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ], - debug: true -}; -`; - -describe("transform", () => { - it("should not transform if no transformations defined", done => { - transform(input, []).then(output => { - expect(output).toMatchSnapshot(input); - done(); - }); - }); - - it("should transform using all transformations", done => { - transform(input).then(output => { - expect(output).toMatchSnapshot(); - done(); - }); - }); - - it("should transform only using specified transformations", done => { - transform(input, [transformations.loadersTransform]).then(output => { - expect(output).toMatchSnapshot(); - done(); - }); - }); - - it("should respect recast options", done => { - transform(input, undefined, { - quote: "double", - trailingComma: true - }).then(output => { - expect(output).toMatchSnapshot(); - done(); - }); - }); -}); diff --git a/packages/migrate/migrate.ts b/packages/migrate/migrate.ts index 6f85374fe92..09baf1b087d 100644 --- a/packages/migrate/migrate.ts +++ b/packages/migrate/migrate.ts @@ -40,12 +40,25 @@ const transformsObject: ITransformsObject = { removeDeprecatedPluginsTransform, commonsChunkPluginTransform, }; + +interface ILazyTransformObject { + loadersTransform?: (ast: object, source: string) => pLazy<{}>; + resolveTransform?: (ast: object, source: string) => pLazy<{}>; + removeJsonLoaderTransform?: (ast: object, source: string) => pLazy<{}>; + uglifyJsPluginTransform?: (ast: object, source: string) => pLazy<{}>; + loaderOptionsPluginTransform?: (ast: object, source: string) => pLazy<{}>; + bannerPluginTransform?: (ast: object, source: string) => pLazy<{}>; + extractTextPluginTransform?: (ast: object, source: string) => pLazy<{}>; + noEmitOnErrorsPluginTransform?: (ast: object, source: string) => pLazy<{}>; + removeDeprecatedPluginsTransform?: (ast: object, source: string) => pLazy<{}>; + commonsChunkPluginTransform?: (ast: object, source: string) => pLazy<{}>; +} /* tslint:enable object-literal-sort-keys */ -export const transformations = +export const transformations: ILazyTransformObject = Object .keys(transformsObject) - .reduce((res: object, key: string): object => { + .reduce((res: object, key: string): ILazyTransformObject => { res[key] = (ast: object, source: string) => transformSingleAST(ast, source, transformsObject[key]); return res; diff --git a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-0.input.js b/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-0.input.js deleted file mode 100644 index 2d78c6398e1..00000000000 --- a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-0.input.js +++ /dev/null @@ -1,5 +0,0 @@ -module.export = { - plugins: [ - new webpack.optimize.ModuleConcatenationPlugin() - ] -} diff --git a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-1.input.js b/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-1.input.js deleted file mode 100644 index cc81fd6b768..00000000000 --- a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-1.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.export = { - optimizations: { - splitChunks: false - }, - plugins: [ - new Foo(), - new webpack.optimize.ModuleConcatenationPlugin() - ] -} diff --git a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-2.input.js b/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-2.input.js deleted file mode 100644 index eb80df14c9c..00000000000 --- a/packages/migrate/moduleConcatenationPlugin/__testfixtures__/moduleConcatenationPlugin-2.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.export = { - optimizations: { - concatenateModules: false - }, - plugins: [ - new Foo(), - new webpack.optimize.ModuleConcatenationPlugin() - ] -} diff --git a/packages/migrate/moduleConcatenationPlugin/__snapshots__/moduleConcatenationPlugin.test.js.snap b/packages/migrate/moduleConcatenationPlugin/__tests__/__snapshots__/moduleConcatenationPlugin.test.ts.snap similarity index 83% rename from packages/migrate/moduleConcatenationPlugin/__snapshots__/moduleConcatenationPlugin.test.js.snap rename to packages/migrate/moduleConcatenationPlugin/__tests__/__snapshots__/moduleConcatenationPlugin.test.ts.snap index a13f37ea1f0..5a974551a29 100644 --- a/packages/migrate/moduleConcatenationPlugin/__snapshots__/moduleConcatenationPlugin.test.js.snap +++ b/packages/migrate/moduleConcatenationPlugin/__tests__/__snapshots__/moduleConcatenationPlugin.test.ts.snap @@ -1,31 +1,31 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`moduleConcatenationPlugin transforms correctly using "moduleConcatenationPlugin-0" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { concatenateModules: true } -} +}; " `; exports[`moduleConcatenationPlugin transforms correctly using "moduleConcatenationPlugin-1" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { splitChunks: false, concatenateModules: true }, - plugins: [new Foo()] -} + plugins: [new Foo()] +}; " `; exports[`moduleConcatenationPlugin transforms correctly using "moduleConcatenationPlugin-2" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { concatenateModules: true }, - plugins: [new Foo()] -} + plugins: [new Foo()] +}; " `; diff --git a/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-0.input.js b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-0.input.js new file mode 100644 index 00000000000..cd8dd6c0e65 --- /dev/null +++ b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-0.input.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: [new webpack.optimize.ModuleConcatenationPlugin()] +}; diff --git a/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-1.input.js b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-1.input.js new file mode 100644 index 00000000000..4681fe01cb8 --- /dev/null +++ b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-1.input.js @@ -0,0 +1,6 @@ +module.exports = { + optimizations: { + splitChunks: false + }, + plugins: [new Foo(), new webpack.optimize.ModuleConcatenationPlugin()] +}; diff --git a/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-2.input.js b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-2.input.js new file mode 100644 index 00000000000..1cae8402ad0 --- /dev/null +++ b/packages/migrate/moduleConcatenationPlugin/__tests__/__testfixtures__/moduleConcatenationPlugin-2.input.js @@ -0,0 +1,6 @@ +module.exports = { + optimizations: { + concatenateModules: false + }, + plugins: [new Foo(), new webpack.optimize.ModuleConcatenationPlugin()] +}; diff --git a/packages/migrate/moduleConcatenationPlugin/__tests__/moduleConcatenationPlugin.test.ts b/packages/migrate/moduleConcatenationPlugin/__tests__/moduleConcatenationPlugin.test.ts new file mode 100644 index 00000000000..840dee420a2 --- /dev/null +++ b/packages/migrate/moduleConcatenationPlugin/__tests__/moduleConcatenationPlugin.test.ts @@ -0,0 +1,20 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest( + dirName, + "moduleConcatenationPlugin", + "moduleConcatenationPlugin-0", +); +defineTest( + dirName, + "moduleConcatenationPlugin", + "moduleConcatenationPlugin-1", +); +defineTest( + dirName, + "moduleConcatenationPlugin", + "moduleConcatenationPlugin-2", +); diff --git a/packages/migrate/moduleConcatenationPlugin/moduleConcatenationPlugin.test.js b/packages/migrate/moduleConcatenationPlugin/moduleConcatenationPlugin.test.js deleted file mode 100644 index 9a895b1c50e..00000000000 --- a/packages/migrate/moduleConcatenationPlugin/moduleConcatenationPlugin.test.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest( - __dirname, - "moduleConcatenationPlugin", - "moduleConcatenationPlugin-0" -); -defineTest( - __dirname, - "moduleConcatenationPlugin", - "moduleConcatenationPlugin-1" -); -defineTest( - __dirname, - "moduleConcatenationPlugin", - "moduleConcatenationPlugin-2" -); diff --git a/packages/migrate/namedModulesPlugin/__snapshots__/namedModulesPlugin.test.js.snap b/packages/migrate/namedModulesPlugin/__tests__/__snapshots__/namedModulesPlugin.test.ts.snap similarity index 100% rename from packages/migrate/namedModulesPlugin/__snapshots__/namedModulesPlugin.test.js.snap rename to packages/migrate/namedModulesPlugin/__tests__/__snapshots__/namedModulesPlugin.test.ts.snap diff --git a/packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-0.input.js b/packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-0.input.js similarity index 100% rename from packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-0.input.js rename to packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-0.input.js diff --git a/packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-1.input.js b/packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-1.input.js similarity index 100% rename from packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-1.input.js rename to packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-1.input.js diff --git a/packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-2.input.js b/packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-2.input.js similarity index 100% rename from packages/migrate/namedModulesPlugin/__testfixtures__/namedModulesPlugin-2.input.js rename to packages/migrate/namedModulesPlugin/__tests__/__testfixtures__/namedModulesPlugin-2.input.js diff --git a/packages/migrate/namedModulesPlugin/__tests__/namedModulesPlugin.test.ts b/packages/migrate/namedModulesPlugin/__tests__/namedModulesPlugin.test.ts new file mode 100644 index 00000000000..ed0ffe9d7d3 --- /dev/null +++ b/packages/migrate/namedModulesPlugin/__tests__/namedModulesPlugin.test.ts @@ -0,0 +1,8 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "namedModulesPlugin", "namedModulesPlugin-0"); +defineTest(dirName, "namedModulesPlugin", "namedModulesPlugin-1"); +defineTest(dirName, "namedModulesPlugin", "namedModulesPlugin-2"); diff --git a/packages/migrate/namedModulesPlugin/namedModulesPlugin.test.js b/packages/migrate/namedModulesPlugin/namedModulesPlugin.test.js deleted file mode 100644 index b0a0b14969a..00000000000 --- a/packages/migrate/namedModulesPlugin/namedModulesPlugin.test.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "namedModulesPlugin", "namedModulesPlugin-0"); -defineTest(__dirname, "namedModulesPlugin", "namedModulesPlugin-1"); -defineTest(__dirname, "namedModulesPlugin", "namedModulesPlugin-2"); diff --git a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-0.input.js b/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-0.input.js deleted file mode 100644 index 040e6e057e4..00000000000 --- a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-0.input.js +++ /dev/null @@ -1,5 +0,0 @@ -module.export = { - plugins: [ - new webpack.NoEmitOnErrorsPlugin() - ] -} diff --git a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-1.input.js b/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-1.input.js deleted file mode 100644 index a194920c60a..00000000000 --- a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-1.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.export = { - optimizations: { - splitChunks: false - }, - plugins: [ - new Foo(), - new webpack.NoEmitOnErrorsPlugin() - ] -} diff --git a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-2.input.js b/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-2.input.js deleted file mode 100644 index d320a16507a..00000000000 --- a/packages/migrate/noEmitOnErrorsPlugin/__testfixtures__/noEmitOnErrorsPlugin-2.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.export = { - optimizations: { - noEmitOnErrors: false - }, - plugins: [ - new Foo(), - new webpack.NoEmitOnErrorsPlugin() - ] -} diff --git a/packages/migrate/noEmitOnErrorsPlugin/__snapshots__/noEmitOnErrorsPlugin.test.js.snap b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__snapshots__/noEmitOnErrorsPlugin.test.ts.snap similarity index 82% rename from packages/migrate/noEmitOnErrorsPlugin/__snapshots__/noEmitOnErrorsPlugin.test.js.snap rename to packages/migrate/noEmitOnErrorsPlugin/__tests__/__snapshots__/noEmitOnErrorsPlugin.test.ts.snap index b831648670e..6febeb7012a 100644 --- a/packages/migrate/noEmitOnErrorsPlugin/__snapshots__/noEmitOnErrorsPlugin.test.js.snap +++ b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__snapshots__/noEmitOnErrorsPlugin.test.ts.snap @@ -1,31 +1,31 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`noEmitOnErrorsPlugin transforms correctly using "noEmitOnErrorsPlugin-0" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { noEmitOnErrors: true } -} +}; " `; exports[`noEmitOnErrorsPlugin transforms correctly using "noEmitOnErrorsPlugin-1" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { splitChunks: false, noEmitOnErrors: true }, - plugins: [new Foo()] -} + plugins: [new Foo()] +}; " `; exports[`noEmitOnErrorsPlugin transforms correctly using "noEmitOnErrorsPlugin-2" data 1`] = ` -"module.export = { +"module.exports = { optimizations: { noEmitOnErrors: true }, - plugins: [new Foo()] -} + plugins: [new Foo()] +}; " `; diff --git a/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-0.input.js b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-0.input.js new file mode 100644 index 00000000000..7eb2fa30679 --- /dev/null +++ b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-0.input.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: [new webpack.NoEmitOnErrorsPlugin()] +}; diff --git a/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-1.input.js b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-1.input.js new file mode 100644 index 00000000000..9d409eb31d0 --- /dev/null +++ b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-1.input.js @@ -0,0 +1,6 @@ +module.exports = { + optimizations: { + splitChunks: false + }, + plugins: [new Foo(), new webpack.NoEmitOnErrorsPlugin()] +}; diff --git a/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-2.input.js b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-2.input.js new file mode 100644 index 00000000000..b30145bcc85 --- /dev/null +++ b/packages/migrate/noEmitOnErrorsPlugin/__tests__/__testfixtures__/noEmitOnErrorsPlugin-2.input.js @@ -0,0 +1,6 @@ +module.exports = { + optimizations: { + noEmitOnErrors: false + }, + plugins: [new Foo(), new webpack.NoEmitOnErrorsPlugin()] +}; diff --git a/packages/migrate/noEmitOnErrorsPlugin/__tests__/noEmitOnErrorsPlugin.test.ts b/packages/migrate/noEmitOnErrorsPlugin/__tests__/noEmitOnErrorsPlugin.test.ts new file mode 100644 index 00000000000..760a5a1aa75 --- /dev/null +++ b/packages/migrate/noEmitOnErrorsPlugin/__tests__/noEmitOnErrorsPlugin.test.ts @@ -0,0 +1,20 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest( + dirName, + "noEmitOnErrorsPlugin", + "noEmitOnErrorsPlugin-0", +); +defineTest( + dirName, + "noEmitOnErrorsPlugin", + "noEmitOnErrorsPlugin-1", +); +defineTest( + dirName, + "noEmitOnErrorsPlugin", + "noEmitOnErrorsPlugin-2", +); diff --git a/packages/migrate/noEmitOnErrorsPlugin/noEmitOnErrorsPlugin.test.js b/packages/migrate/noEmitOnErrorsPlugin/noEmitOnErrorsPlugin.test.js deleted file mode 100644 index fc7c0663748..00000000000 --- a/packages/migrate/noEmitOnErrorsPlugin/noEmitOnErrorsPlugin.test.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "noEmitOnErrorsPlugin", "noEmitOnErrorsPlugin-0"); -defineTest(__dirname, "noEmitOnErrorsPlugin", "noEmitOnErrorsPlugin-1"); -defineTest(__dirname, "noEmitOnErrorsPlugin", "noEmitOnErrorsPlugin-2"); diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js b/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js deleted file mode 100644 index c7a0ed58e7a..00000000000 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -const path = require('path'); -module.exports = { - output: { - path: path.join(__dirname, 'dist') - } -} diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js b/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js deleted file mode 100644 index de8436ae6c3..00000000000 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -const p = require('path'); -module.exports = { - output: { - path: 'dist' - } -} diff --git a/packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap b/packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap similarity index 59% rename from packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap rename to packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap index 27e07047768..faf8dd2b327 100644 --- a/packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap +++ b/packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap @@ -2,29 +2,27 @@ exports[`outputPath transforms correctly using "outputPath-0" data 1`] = ` "module.exports = { - output: { - path: path.join(__dirname, 'dist') - } -} + output: { + path: path.join(__dirname, \\"dist\\"), + }, +}; " `; exports[`outputPath transforms correctly using "outputPath-1" data 1`] = ` -"const path = require('path'); -module.exports = { +"module.exports = { output: { - path: path.join(__dirname, 'dist') + path: path.join(__dirname, \\"dist\\") } -} +}; " `; exports[`outputPath transforms correctly using "outputPath-2" data 1`] = ` -"const p = require('path'); -module.exports = { +"module.exports = { output: { - path: p.join(__dirname, 'dist') + path: path.join(__dirname, \\"dist\\") } -} +}; " `; diff --git a/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.js b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.js new file mode 100644 index 00000000000..e111b266b50 --- /dev/null +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.js @@ -0,0 +1,5 @@ +module.exports = { + output: { + path: "dist", + }, +}; diff --git a/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.js b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.js new file mode 100644 index 00000000000..18e3d927d8f --- /dev/null +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.js @@ -0,0 +1,5 @@ +module.exports = { + output: { + path: path.join(__dirname, "dist") + } +}; diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.js similarity index 64% rename from packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js rename to packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.js index 085268fadbe..9f9c30a0420 100644 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.js @@ -1,5 +1,5 @@ module.exports = { output: { - path: 'dist' + path: "dist" } -} +}; diff --git a/packages/migrate/outputPath/__tests__/outputPath.test.ts b/packages/migrate/outputPath/__tests__/outputPath.test.ts new file mode 100644 index 00000000000..1d5141154bb --- /dev/null +++ b/packages/migrate/outputPath/__tests__/outputPath.test.ts @@ -0,0 +1,8 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "outputPath", "outputPath-0"); +defineTest(dirName, "outputPath", "outputPath-1"); +defineTest(dirName, "outputPath", "outputPath-2"); diff --git a/packages/migrate/outputPath/outputPath.test.js b/packages/migrate/outputPath/outputPath.test.js deleted file mode 100644 index f103e99a09e..00000000000 --- a/packages/migrate/outputPath/outputPath.test.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "outputPath", "outputPath-0"); -defineTest(__dirname, "outputPath", "outputPath-1"); -defineTest(__dirname, "outputPath", "outputPath-2"); diff --git a/packages/migrate/outputPath/outputPath.ts b/packages/migrate/outputPath/outputPath.ts index e5038b3c9a0..5e88223d808 100644 --- a/packages/migrate/outputPath/outputPath.ts +++ b/packages/migrate/outputPath/outputPath.ts @@ -12,68 +12,77 @@ import { IJSCodeshift, INode } from "../types/NodePath"; */ export default function(j: IJSCodeshift, ast: INode): INode | void { + const literalOutputPath: INode = ast + .find(j.ObjectExpression) + .filter( + (p: INode): boolean => + utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === + "output", + ) + .find(j.Property) + .filter( + (p: INode): boolean => + utils.safeTraverse(p, ["value", "key", "name"]) === "path" && + utils.safeTraverse(p, ["value", "value", "type"]) === "Literal", + ); - const literalOutputPath: INode = ast - .find(j.ObjectExpression) + if (literalOutputPath) { + let pathVarName = "path"; + let isPathPresent = false; + const pathDeclaration: INode = ast + .find(j.VariableDeclarator) .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "output", + (p: INode): boolean => + utils.safeTraverse(p, ["value", "init", "callee", "name"]) === + "require", ) - .find(j.Property) .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "key", "name"]) === "path" && - utils.safeTraverse(p, ["value", "value", "type"]) === "Literal", + (p: INode): boolean => + utils.safeTraverse(p, ["value", "init", "arguments"]) && + p.value.init.arguments.reduce( + (isPresent: boolean, a: INode): boolean => { + return (a.type === "Literal" && a.value === "path") || isPresent; + }, + false, + ), ); - if (literalOutputPath) { - let pathVarName = "path"; - let isPathPresent = false; - const pathDeclaration: INode = ast - .find(j.VariableDeclarator) - .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "init", "callee", "name"]) === - "require", - ) - .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "init", "arguments"]) && - p.value.init.arguments.reduce((isPresent: boolean, a: INode): boolean => { - return (a.type === "Literal" && a.value === "path") || isPresent; - }, false), - ); - - if (pathDeclaration) { - isPathPresent = true; - pathDeclaration.forEach((p: INode): void => { - pathVarName = utils.safeTraverse(p, ["value", "id", "name"]); - }); - } - const finalPathName = pathVarName; - literalOutputPath - .find(j.Literal) - .replaceWith((p: INode): INode => replaceWithPath(j, p, finalPathName)); + if (pathDeclaration) { + isPathPresent = true; + pathDeclaration.forEach( + (p: INode): void => { + pathVarName = utils.safeTraverse(p, ["value", "id", "name"]); + }, + ); + } + const finalPathName = pathVarName; + literalOutputPath + .find(j.Literal) + .replaceWith((p: INode): INode => replaceWithPath(j, p, finalPathName)); - if (!isPathPresent) { - const pathRequire: INode = utils.getRequire(j, "path", "path"); - return ast - .find(j.Program) - .replaceWith((p: INode): INode => - j.program([].concat(pathRequire).concat(p.value.body)), - ); - } + if (!isPathPresent) { + const pathRequire: INode = utils.getRequire(j, "path", "path"); + return ast + .find(j.Program) + .replaceWith( + (p: INode): INode => + j.program([].concat(pathRequire).concat(p.value.body)), + ); } + } - return ast; + return ast; } -function replaceWithPath(j: IJSCodeshift, p: INode, pathVarName: string): INode { - const convertedPath: INode = j.callExpression( - j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false), - [j.identifier("__dirname"), p.value], - ); +function replaceWithPath( + j: IJSCodeshift, + p: INode, + pathVarName: string, +): INode { + const convertedPath: INode = j.callExpression( + j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false), + [j.identifier("__dirname"), p.value], + ); - return convertedPath; + return convertedPath; } diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js deleted file mode 100644 index 133c4984bfd..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -// Works for OccurrenceOrderPlugin -module.exports = { - plugins: [ - new webpack.optimize.OccurrenceOrderPlugin(), - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js deleted file mode 100644 index a64dab79b37..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -// Works for DedupePlugin -module.exports = { - plugins: [ - new webpack.optimize.DedupePlugin(), - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js deleted file mode 100644 index 26150117db4..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js +++ /dev/null @@ -1,8 +0,0 @@ -// Doesn't remove unmatched plugins -module.exports = { - plugins: [ - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.DedupePlugin() - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js deleted file mode 100644 index 1d5194460e3..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js +++ /dev/null @@ -1,7 +0,0 @@ -// This should throw -export default (config) => { - config.plugins.push(new webpack.optimize.UglifyJsPlugin()); - config.plugins.push(new webpack.optimize.DedupePlugin()); - config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); - return config -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js deleted file mode 100644 index fab47caf971..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js +++ /dev/null @@ -1,8 +0,0 @@ -// This should throw -const inst = new webpack.optimize.OccurrenceOrderPlugin() -export default (config) => { - config.plugins = [ - inst - ] - return config -} diff --git a/packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap b/packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap similarity index 50% rename from packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap rename to packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap index 550faf1fba2..62b69a6e5de 100644 --- a/packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap @@ -1,44 +1,42 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-0" data 1`] = ` -"// Works for OccurrenceOrderPlugin -module.exports = {} +"module.exports = {}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-1" data 1`] = ` -"// Works for DedupePlugin -module.exports = {} +"module.exports = {}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-2" data 1`] = ` -"// Doesn't remove unmatched plugins -module.exports = { - plugins: [new webpack.optimize.UglifyJsPlugin()] -} +"module.exports = { + plugins: [new webpack.optimize.UglifyJsPlugin()] +}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-3" data 1`] = ` "// This should throw -export default (config) => { - config.plugins.push(new webpack.optimize.UglifyJsPlugin()); - config.plugins.push(new webpack.optimize.DedupePlugin()); - config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); - return config -} + +module.exports = config => { + config.plugins.push(new webpack.optimize.UglifyJsPlugin()); + config.plugins.push(new webpack.optimize.DedupePlugin()); + config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); + return config; +}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-4" data 1`] = ` "// This should throw -const inst = new webpack.optimize.OccurrenceOrderPlugin() -export default (config) => { - config.plugins = [ - inst - ] - return config -} +const webpack = require(\\"webpack\\"); + +const inst = new webpack.optimize.OccurrenceOrderPlugin(); +module.exports = config => { + config.plugins = [inst]; + return config; +}; " `; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.js b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.js new file mode 100644 index 00000000000..5171ac6d172 --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: [new webpack.optimize.OccurrenceOrderPlugin()] +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.js b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.js new file mode 100644 index 00000000000..73c1c9554fd --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: [new webpack.optimize.DedupePlugin()] +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.js b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.js new file mode 100644 index 00000000000..93c058b3fff --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: [new webpack.optimize.OccurrenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin(), new webpack.optimize.DedupePlugin()] +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.js b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.js new file mode 100644 index 00000000000..abdd8a4599b --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.js @@ -0,0 +1,8 @@ +// This should throw + +module.exports = config => { + config.plugins.push(new webpack.optimize.UglifyJsPlugin()); + config.plugins.push(new webpack.optimize.DedupePlugin()); + config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); + return config; +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.js b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.js new file mode 100644 index 00000000000..b436cbdb8ad --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.js @@ -0,0 +1,8 @@ +// This should throw +const webpack = require("webpack"); + +const inst = new webpack.optimize.OccurrenceOrderPlugin(); +module.exports = config => { + config.plugins = [inst]; + return config; +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts new file mode 100644 index 00000000000..922ca71424c --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts @@ -0,0 +1,30 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest( + dirName, + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-0", +); +defineTest( + dirName, + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-1", +); +defineTest( + dirName, + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-2", +); +defineTest( + dirName, + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-3", +); +defineTest( + dirName, + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-4", +); diff --git a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js deleted file mode 100644 index e881f02428f..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-0"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-1"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-2"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-3"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-4"); diff --git a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts index 5d83f3cce0a..01030eb7686 100644 --- a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts +++ b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts @@ -15,35 +15,36 @@ import { IJSCodeshift, INode } from "../types/NodePath"; */ export default function(j: IJSCodeshift, ast: INode) { + // List of deprecated plugins to remove + // each item refers to webpack.optimize.[NAME] construct + const deprecatedPlugingsList: string[] = [ + "webpack.optimize.OccurrenceOrderPlugin", + "webpack.optimize.DedupePlugin", + ]; - // List of deprecated plugins to remove - // each item refers to webpack.optimize.[NAME] construct - const deprecatedPlugingsList: string[] = [ - "webpack.optimize.OccurrenceOrderPlugin", - "webpack.optimize.DedupePlugin", - ]; + return utils.findPluginsByName(j, ast, deprecatedPlugingsList).forEach( + (path: INode): void => { + // For now we only support the case where plugins are defined in an Array + const arrayPath: INode = utils.safeTraverse(path, ["parent", "value"]); - return utils - .findPluginsByName(j, ast, deprecatedPlugingsList) - .forEach((path: INode): void => { - // For now we only support the case where plugins are defined in an Array - const arrayPath: INode = utils.safeTraverse(path, ["parent", "value"]); - - if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) { - // Check how many plugins are defined and - // if there is only last plugin left remove `plugins: []` node - const arrayElementsPath: INode[] = utils.safeTraverse(arrayPath, ["elements"]); - if (arrayElementsPath && arrayElementsPath.length === 1) { - j(path.parent.parent).remove(); - } else { - j(path).remove(); - } - } else { - console.error(` + if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) { + // Check how many plugins are defined and + // if there is only last plugin left remove `plugins: []` node + const arrayElementsPath: INode[] = utils.safeTraverse(arrayPath, [ + "elements", + ]); + if (arrayElementsPath && arrayElementsPath.length === 1) { + j(path.parent.parent).remove(); + } else { + j(path).remove(); + } + } else { + console.error(` ${chalk.red("Please remove deprecated plugins manually. ")} See ${chalk.underline( - "https://webpack.js.org/guides/migrating/", - )} for more information.`); - } - }); + "https://webpack.js.org/guides/migrating/", + )} for more information.`); + } + }, + ); } diff --git a/packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap b/packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap deleted file mode 100644 index e5153cd3412..00000000000 --- a/packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap +++ /dev/null @@ -1,51 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`removeJsonLoader transforms correctly using "removeJsonLoader-0" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.yml/, - use: [{ - loader: 'another-loader' - }, { - loader: 'yml-loader' - }] - }] - } -} - -" -`; - -exports[`removeJsonLoader transforms correctly using "removeJsonLoader-1" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.yml/, - use: [{ - loader: 'yml-loader' - }] - }] - } -} -" -`; - -exports[`removeJsonLoader transforms correctly using "removeJsonLoader-2" data 1`] = ` -"export default { - module: { - rules: [] - } -} -" -`; - -exports[`removeJsonLoader transforms correctly using "removeJsonLoader-3" data 1`] = ` -"export default { - module: { - rules: [] - } -} - -" -`; diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD b/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js deleted file mode 100644 index 48517948142..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js +++ /dev/null @@ -1,19 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.yml/, - use: [ - { - loader: 'json-loader' - }, - { - loader: 'another-loader' - }, - { - loader: 'yml-loader' - } - ] - }] - } -} - diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js deleted file mode 100644 index 1040b5ff919..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.yml/, - use: [{ - loader: 'json-loader' - }, { - loader: 'yml-loader' - }] - }] - } -} diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js deleted file mode 100644 index 39b473705d0..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - module: { - rules: [ - { - test: /\.json/, - loader: 'json-loader' - } - ] - } -} diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js deleted file mode 100644 index be47fd92ee2..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.json/, - use: [{ - loader: 'json-loader' - }] - }] - } -} - diff --git a/packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap b/packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap new file mode 100644 index 00000000000..cb5cf219f5e --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap @@ -0,0 +1,53 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`removeJsonLoader transforms correctly using "removeJsonLoader-0" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + test: /\\\\.yml/, + use: [{ + loader: \\"another-loader\\" + }, { + loader: \\"yml-loader\\" + }] + } + ] + } +}; +" +`; + +exports[`removeJsonLoader transforms correctly using "removeJsonLoader-1" data 1`] = ` +"module.exports = { + module: { + rules: [ + { + test: /\\\\.yml/, + use: [{ + loader: \\"yml-loader\\" + }] + } + ] + } +}; +" +`; + +exports[`removeJsonLoader transforms correctly using "removeJsonLoader-2" data 1`] = ` +"module.exports = { + module: { + rules: [] + } +}; +" +`; + +exports[`removeJsonLoader transforms correctly using "removeJsonLoader-3" data 1`] = ` +"module.exports = { + module: { + rules: [] + } +}; +" +`; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.js b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.js new file mode 100644 index 00000000000..a492d057aec --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.js @@ -0,0 +1,20 @@ +module.exports = { + module: { + rules: [ + { + test: /\.yml/, + use: [ + { + loader: "json-loader" + }, + { + loader: "another-loader" + }, + { + loader: "yml-loader" + } + ] + } + ] + } +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.js b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.js new file mode 100644 index 00000000000..cf3e50853c4 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.js @@ -0,0 +1,17 @@ +module.exports = { + module: { + rules: [ + { + test: /\.yml/, + use: [ + { + loader: "json-loader" + }, + { + loader: "yml-loader" + } + ] + } + ] + } +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.js b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.js new file mode 100644 index 00000000000..5a8709cb4b4 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + rules: [ + { + loader: "json-loader", + test: /\.json/ + } + ] + } +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.js b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.js new file mode 100644 index 00000000000..c4050edc398 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.js @@ -0,0 +1,14 @@ +module.exports = { + module: { + rules: [ + { + test: /\.json/, + use: [ + { + loader: "json-loader" + } + ] + } + ] + } +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts b/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts new file mode 100644 index 00000000000..6d705023056 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts @@ -0,0 +1,25 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest( + dirName, + "removeJsonLoader", + "removeJsonLoader-0", +); +defineTest( + dirName, + "removeJsonLoader", + "removeJsonLoader-1", +); +defineTest( + dirName, + "removeJsonLoader", + "removeJsonLoader-2", +); +defineTest( + dirName, + "removeJsonLoader", + "removeJsonLoader-3", +); diff --git a/packages/migrate/removeJsonLoader/removeJsonLoader.test.js b/packages/migrate/removeJsonLoader/removeJsonLoader.test.js deleted file mode 100644 index 82e38804c86..00000000000 --- a/packages/migrate/removeJsonLoader/removeJsonLoader.test.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-0"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-1"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-2"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-3"); diff --git a/packages/migrate/resolve/__snapshots__/resolve.test.js.snap b/packages/migrate/resolve/__snapshots__/resolve.test.js.snap deleted file mode 100644 index 820fc965a13..00000000000 --- a/packages/migrate/resolve/__snapshots__/resolve.test.js.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`resolve transforms correctly 1`] = ` -"import path from 'path'; - -export default [{ - resolve: { - modules: [path.resolve('/src')] - } -}, { - resolve: { - modules: [path.resolve('/src')] - } -}, { - resolve: { - modules: [path.resolve('/src'), 'node_modules'] - } -}, { - resolve: { - modules: ['node_modules', path.resolve('/src')] - } -}]; -" -`; diff --git a/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD b/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/resolve/__testfixtures__/resolve.input.js b/packages/migrate/resolve/__testfixtures__/resolve.input.js deleted file mode 100644 index 2b83fcf26ce..00000000000 --- a/packages/migrate/resolve/__testfixtures__/resolve.input.js +++ /dev/null @@ -1,20 +0,0 @@ -import path from 'path'; - -export default [{ - resolve: { - root: path.resolve('/src') - } -}, { - resolve: { - root: [path.resolve('/src')] - } -}, { - resolve: { - root: [path.resolve('/src'), 'node_modules'] - } -}, { - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - } -}]; diff --git a/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap b/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap new file mode 100644 index 00000000000..c96bb8462fc --- /dev/null +++ b/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`resolve transforms correctly 1`] = ` +"const path = require(\\"path\\"); +const rootPath = path.resolve(\\"/src\\"); +module.exports = [ + { + resolve: { + modules: [rootPath] + } + }, + { + resolve: { + modules: [rootPath] + } + }, + { + resolve: { + modules: [rootPath, \\"node_modules\\"] + } + }, + { + resolve: { + modules: [\\"node_modules\\", rootPath] + } + } +]; +" +`; diff --git a/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.js b/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.js new file mode 100644 index 00000000000..f90803ff3d0 --- /dev/null +++ b/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.js @@ -0,0 +1,25 @@ +const path = require("path"); +const rootPath = path.resolve("/src"); +module.exports = [ + { + resolve: { + root: rootPath + } + }, + { + resolve: { + root: [rootPath] + } + }, + { + resolve: { + root: [rootPath, "node_modules"] + } + }, + { + resolve: { + modules: ["node_modules"], + root: rootPath + } + } +]; diff --git a/packages/migrate/resolve/__tests__/resolve.test.ts b/packages/migrate/resolve/__tests__/resolve.test.ts new file mode 100644 index 00000000000..82349cbc543 --- /dev/null +++ b/packages/migrate/resolve/__tests__/resolve.test.ts @@ -0,0 +1,5 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); +defineTest(dirName, "resolve"); diff --git a/packages/migrate/resolve/resolve.test.js b/packages/migrate/resolve/resolve.test.js deleted file mode 100644 index c3971466966..00000000000 --- a/packages/migrate/resolve/resolve.test.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "resolve"); diff --git a/packages/migrate/types/index.ts b/packages/migrate/types/index.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/migrate/uglifyJsPlugin/__snapshots__/uglifyJsPlugin.test.js.snap b/packages/migrate/uglifyJsPlugin/__tests__/__snapshots__/uglifyJsPlugin.test.ts.snap similarity index 100% rename from packages/migrate/uglifyJsPlugin/__snapshots__/uglifyJsPlugin.test.js.snap rename to packages/migrate/uglifyJsPlugin/__tests__/__snapshots__/uglifyJsPlugin.test.ts.snap diff --git a/packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-0.input.js b/packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-0.input.js similarity index 100% rename from packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-0.input.js rename to packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-0.input.js diff --git a/packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-1.input.js b/packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-1.input.js similarity index 100% rename from packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-1.input.js rename to packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-1.input.js diff --git a/packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-2.input.js b/packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-2.input.js similarity index 100% rename from packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-2.input.js rename to packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-2.input.js diff --git a/packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-3.input.js b/packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-3.input.js similarity index 100% rename from packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-3.input.js rename to packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-3.input.js diff --git a/packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-4.input.js b/packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-4.input.js similarity index 100% rename from packages/migrate/uglifyJsPlugin/__testfixtures__/uglifyJsPlugin-4.input.js rename to packages/migrate/uglifyJsPlugin/__tests__/__testfixtures__/uglifyJsPlugin-4.input.js diff --git a/packages/migrate/uglifyJsPlugin/__tests__/uglifyJsPlugin.test.ts b/packages/migrate/uglifyJsPlugin/__tests__/uglifyJsPlugin.test.ts new file mode 100644 index 00000000000..d5e3ddbaf97 --- /dev/null +++ b/packages/migrate/uglifyJsPlugin/__tests__/uglifyJsPlugin.test.ts @@ -0,0 +1,10 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +const dirName: string = join(__dirname, ".."); + +defineTest(dirName, "uglifyJsPlugin", "uglifyJsPlugin-0"); +defineTest(dirName, "uglifyJsPlugin", "uglifyJsPlugin-1"); +defineTest(dirName, "uglifyJsPlugin", "uglifyJsPlugin-2"); +defineTest(dirName, "uglifyJsPlugin", "uglifyJsPlugin-3"); +defineTest(dirName, "uglifyJsPlugin", "uglifyJsPlugin-4"); diff --git a/packages/migrate/uglifyJsPlugin/uglifyJsPlugin.test.js b/packages/migrate/uglifyJsPlugin/uglifyJsPlugin.test.js deleted file mode 100644 index d60cd4ba928..00000000000 --- a/packages/migrate/uglifyJsPlugin/uglifyJsPlugin.test.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-0"); -defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-1"); -defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-2"); -defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-3"); -defineTest(__dirname, "uglifyJsPlugin", "uglifyJsPlugin-4"); diff --git a/packages/utils/__snapshots__/ast-utils.test.js.snap b/packages/utils/__tests__/__snapshots__/ast-utils.test.ts.snap similarity index 96% rename from packages/utils/__snapshots__/ast-utils.test.js.snap rename to packages/utils/__tests__/__snapshots__/ast-utils.test.ts.snap index 39b61acb349..0e3eab43eb3 100644 --- a/packages/utils/__snapshots__/ast-utils.test.js.snap +++ b/packages/utils/__tests__/__snapshots__/ast-utils.test.ts.snap @@ -12,14 +12,13 @@ exports[`utils addProperty add entry property using add 1`] = ` }], man: () => duper, + man: () => duper, + nice: ':)', objects: are, super: [yeah, { loader: 'eslint-loader' - }], - - nice: ':)', - man: () => duper + }] } }" `; @@ -27,14 +26,13 @@ exports[`utils addProperty add entry property using add 1`] = ` exports[`utils addProperty add entry property using init 1`] = ` "module.exports = { entry: { + man: () => duper, + nice: ':)', objects: are, super: [yeah, { loader: 'eslint-loader' - }], - - nice: ':)', - man: () => duper + }] } }" `; diff --git a/packages/utils/__snapshots__/recursive-parser.test.js.snap b/packages/utils/__tests__/__snapshots__/recursive-parser.test.ts.snap similarity index 98% rename from packages/utils/__snapshots__/recursive-parser.test.js.snap rename to packages/utils/__tests__/__snapshots__/recursive-parser.test.ts.snap index 882e9e5f327..282542a0fd7 100644 --- a/packages/utils/__snapshots__/recursive-parser.test.js.snap +++ b/packages/utils/__tests__/__snapshots__/recursive-parser.test.ts.snap @@ -25,23 +25,23 @@ module.exports = { foo: \\"Promise.resolve()\\", man: \\"() => duper\\", mode: \\"yaaa\\", + foo: Promise.resolve(), + man: () => nice!!, + mode: super-man, + nice: '=)', objects: are not, super: [op, { - test: /\\\\.(wasm|c)$/, - loader: 'pia-loader', enforce: 'pre', include: [asd, 'Stringy'], + loader: 'pia-loader', options: { formatter: 'nao' - } - }], + }, - nice: '=)', - foo: Promise.resolve(), - man: () => nice!!, - mode: super-man + test: /\\\\.(wasm|c)$/ + }] } } " @@ -50,22 +50,22 @@ module.exports = { exports[`init transforms correctly using "fixture-1" data 1`] = ` "module.exports = { entry: { + foo: Promise.resolve(), + man: () => duper, + nice: ':)', objects: are, super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', enforce: 'pre', include: [customObj, 'Stringy'], + loader: 'eslint-loader', options: { formatter: 'someOption' - } - }], + }, - nice: ':)', - foo: Promise.resolve(), - man: () => duper + test: /\\\\.(js|vue)$/ + }] } };" `; diff --git a/packages/utils/__testfixtures__/fixture-0.input.js b/packages/utils/__tests__/__testfixtures__/fixture-0.input.js similarity index 100% rename from packages/utils/__testfixtures__/fixture-0.input.js rename to packages/utils/__tests__/__testfixtures__/fixture-0.input.js diff --git a/packages/utils/__testfixtures__/fixture-1.input.js b/packages/utils/__tests__/__testfixtures__/fixture-1.input.js similarity index 100% rename from packages/utils/__testfixtures__/fixture-1.input.js rename to packages/utils/__tests__/__testfixtures__/fixture-1.input.js diff --git a/packages/utils/__testfixtures__/fixture-2.input.js b/packages/utils/__tests__/__testfixtures__/fixture-2.input.js similarity index 100% rename from packages/utils/__testfixtures__/fixture-2.input.js rename to packages/utils/__tests__/__testfixtures__/fixture-2.input.js diff --git a/packages/utils/__testfixtures__/fixture-3.input.js b/packages/utils/__tests__/__testfixtures__/fixture-3.input.js similarity index 100% rename from packages/utils/__testfixtures__/fixture-3.input.js rename to packages/utils/__tests__/__testfixtures__/fixture-3.input.js diff --git a/packages/utils/ast-utils.test.js b/packages/utils/__tests__/ast-utils.test.ts similarity index 88% rename from packages/utils/ast-utils.test.js rename to packages/utils/__tests__/ast-utils.test.ts index bdb2ffe901a..b9c8e34576c 100644 --- a/packages/utils/ast-utils.test.js +++ b/packages/utils/__tests__/ast-utils.test.ts @@ -1,7 +1,8 @@ "use strict"; -const j = require("jscodeshift/dist/core"); -const utils = require("./ast-utils"); +import * as j from "jscodeshift/dist/core"; +import * as utils from "../ast-utils"; +import { INode } from "../types/NodePath"; describe("utils", () => { describe("createProperty", () => { @@ -105,7 +106,7 @@ const a = { plugs: [] } describe("createOrUpdatePluginByName", () => { it("should create a new plugin without arguments", () => { const ast = j("{ plugins: [] }"); - ast.find(j.ArrayExpression).forEach(node => { + ast.find(j.ArrayExpression).forEach((node: INode) => { utils.createOrUpdatePluginByName(j, node, "Plugin"); }); expect(ast.toSource()).toMatchSnapshot(); @@ -113,9 +114,9 @@ const a = { plugs: [] } it("should create a new plugin with arguments", () => { const ast = j("{ plugins: [] }"); - ast.find(j.ArrayExpression).forEach(node => { + ast.find(j.ArrayExpression).forEach((node: INode) => { utils.createOrUpdatePluginByName(j, node, "Plugin", { - foo: "bar" + foo: "bar", }); }); expect(ast.toSource()).toMatchSnapshot(); @@ -123,9 +124,9 @@ const a = { plugs: [] } it("should add an object as an argument", () => { const ast = j("[new Plugin()]"); - ast.find(j.ArrayExpression).forEach(node => { + ast.find(j.ArrayExpression).forEach((node: INode) => { utils.createOrUpdatePluginByName(j, node, "Plugin", { - foo: true + foo: true, }); }); expect(ast.toSource()).toMatchSnapshot(); @@ -133,13 +134,13 @@ const a = { plugs: [] } it("should merge options objects", () => { const ast = j("[new Plugin({ foo: true })]"); - ast.find(j.ArrayExpression).forEach(node => { + ast.find(j.ArrayExpression).forEach((node: INode) => { utils.createOrUpdatePluginByName(j, node, "Plugin", { bar: "baz", - foo: false + foo: false, }); utils.createOrUpdatePluginByName(j, node, "Plugin", { - "baz-long": true + "baz-long": true, }); }); expect(ast.toSource()).toMatchSnapshot(); @@ -191,8 +192,8 @@ const a = { plugs: [] } expect( ast .find(j.ObjectExpression) - .filter(p => utils.findObjWithOneOfKeys(p, ["a"])) - .size() + .filter((p) => utils.findObjWithOneOfKeys(p, ["a"])) + .size(), ).toEqual(1); }); }); @@ -207,12 +208,12 @@ const a = { plugs: [] } describe("safeTraverse", () => { it("should safe traverse", () => { const testObject = { - type: "NodeType" + type: "NodeType", }; const p = { foo: { - bar: testObject - } + bar: testObject, + }, }; const require = utils.safeTraverse(p, ["foo", "bar"]); expect(require).toEqual(testObject); @@ -220,14 +221,14 @@ const a = { plugs: [] } it("should safe traverse thrice", () => { const type = { - type: "NodeType" + type: "NodeType", }; const p = { parent: { value: { - value: type - } - } + value: type, + }, + }, }; const traversedValue = utils.safeTraverse(p, ["parent", "value", "value"]); expect(traversedValue).toEqual(type); @@ -240,9 +241,9 @@ const a = { plugs: [] } const p = { value: { value: { - type: NODE_TYPE - } - } + type: NODE_TYPE, + }, + }, }; const typeValue = utils.safeTraverseAndGetType(p); expect(typeValue).toEqual(NODE_TYPE); @@ -253,9 +254,9 @@ const a = { plugs: [] } const p = { foo: { bar: { - type: NODE_TYPE - } - } + type: NODE_TYPE, + }, + }, }; const typeValue = utils.safeTraverseAndGetType(p); expect(typeValue).toEqual(false); @@ -266,20 +267,20 @@ const a = { plugs: [] } it("add entry property using init", () => { const ast = j("module.exports = {}"); const propertyValue = { + man: "() => duper", + nice: "':)'", objects: "are", super: [ "yeah", { - loader: "'eslint-loader'" - } + loader: "'eslint-loader'", + }, ], - nice: "':)'", - man: "() => duper" }; const root = ast.find(j.ObjectExpression); - root.forEach(p => { + root.forEach((p) => { utils.addProperty(j, p, "entry", propertyValue); }); @@ -299,20 +300,20 @@ const a = { plugs: [] } } }`); const propertyValue = { + man: "() => duper", + nice: "':)'", objects: "are", super: [ "yeah", { - loader: "'eslint-loader'" - } + loader: "'eslint-loader'", + }, ], - nice: "':)'", - man: "() => duper" }; const root = ast.find(j.ObjectExpression); - utils.findRootNodesByName(j, root, "entry").forEach(p => { + utils.findRootNodesByName(j, root, "entry").forEach((p: INode) => { j(p).replaceWith(utils.addProperty(j, p, "entry", propertyValue, "add")); }); diff --git a/packages/utils/is-local-path.test.js b/packages/utils/__tests__/is-local-path.test.ts similarity index 87% rename from packages/utils/is-local-path.test.js rename to packages/utils/__tests__/is-local-path.test.ts index a6db609e694..ca34c0e7b66 100644 --- a/packages/utils/is-local-path.test.js +++ b/packages/utils/__tests__/is-local-path.test.ts @@ -1,7 +1,7 @@ "use strict"; -const isLocalPath = require("./is-local-path").default; -const path = require("path"); +import * as path from "path"; +import isLocalPath from "../is-local-path"; describe("is-local-path", () => { it("returns true for paths beginning in the current directory", () => { diff --git a/packages/utils/npm-exists.test.js b/packages/utils/__tests__/npm-exists.test.ts similarity index 64% rename from packages/utils/npm-exists.test.js rename to packages/utils/__tests__/npm-exists.test.ts index 619e9eda157..2b773259af1 100644 --- a/packages/utils/npm-exists.test.js +++ b/packages/utils/__tests__/npm-exists.test.ts @@ -1,15 +1,15 @@ "use strict"; -const exists = require("./npm-exists").default; +import exists from "../npm-exists"; describe("npm-exists", () => { it("should successfully existence of a published module", () => { - exists("webpack-scaffold-demo").then(status => { + exists("webpack-scaffold-demo").then((status) => { expect(status).toBe(true); }); }); it("should return false for the existence of a fake module", () => { - exists("webpack-scaffold-noop").then(status => { + exists("webpack-scaffold-noop").then((status) => { expect(status).toBe(false); }); }); diff --git a/packages/utils/npm-packages-exists.test.js b/packages/utils/__tests__/npm-packages-exists.test.ts similarity index 59% rename from packages/utils/npm-packages-exists.test.js rename to packages/utils/__tests__/npm-packages-exists.test.ts index fe37675d338..151eb82f863 100644 --- a/packages/utils/npm-packages-exists.test.js +++ b/packages/utils/__tests__/npm-packages-exists.test.ts @@ -1,9 +1,11 @@ -const npmPackagesExists = require("./npm-packages-exists").default; +import npmPackagesExists from "../npm-packages-exists"; +import {resolvePackages} from "../resolve-packages"; -jest.mock("./npm-exists"); -jest.mock("./resolve-packages"); +jest.mock("../npm-exists"); +jest.mock("../resolve-packages"); -const mockResolvePackages = require("./resolve-packages").resolvePackages; +// TS is not aware that jest changes the type of resolvePackages +const mockResolvePackages = resolvePackages as jest.Mock; describe("npmPackagesExists", () => { test("resolves packages when they are available on the local filesystem", () => { diff --git a/packages/utils/package-manager.test.js b/packages/utils/__tests__/package-manager.test.ts similarity index 94% rename from packages/utils/package-manager.test.js rename to packages/utils/__tests__/package-manager.test.ts index e86e015ab0e..036f10604bb 100644 --- a/packages/utils/package-manager.test.js +++ b/packages/utils/__tests__/package-manager.test.ts @@ -1,31 +1,31 @@ "use strict"; -const path = require("path"); +import * as path from "path"; +import * as packageManager from "../package-manager"; jest.mock("cross-spawn"); jest.mock("fs"); describe("package-manager", () => { - const packageManager = require("./package-manager"); const spawn = require("cross-spawn"); const fs = require("fs"); const defaultSyncResult = { - pid: 1234, + error: null, output: [null, null, null], - stdout: null, - stderr: null, + pid: 1234, signal: null, status: 1, - error: null + stderr: null, + stdout: null, }; function mockSpawnErrorOnce() { spawn.sync.mockReturnValueOnce( Object.assign({}, defaultSyncResult, { + error: new Error(), status: null, - error: new Error() - }) + }), ); } @@ -101,8 +101,8 @@ describe("package-manager", () => { // Mock stdout of `yarn global dir` spawn.sync.mockReturnValueOnce({ stdout: { - toString: () => `${yarnDir}\n` - } + toString: () => `${yarnDir}\n`, + }, }); const globalPath = packageManager.getPathToGlobalPackages(); const expected = path.join(yarnDir, "node_modules"); diff --git a/packages/utils/__tests__/recursive-parser.test.ts b/packages/utils/__tests__/recursive-parser.test.ts new file mode 100644 index 00000000000..87778124f13 --- /dev/null +++ b/packages/utils/__tests__/recursive-parser.test.ts @@ -0,0 +1,65 @@ +"use strict"; + +import { join } from "path"; +import defineTest from "../defineTest"; + +defineTest(join(__dirname, ".."), "init", "fixture-1", "entry", { + foo: "Promise.resolve()", + man: "() => duper", + nice: "':)'", + objects: "are", + super: [ + "yeah", + { + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + loader: "'eslint-loader'", + options: { + formatter: "'someOption'", + }, + test: new RegExp(/\.(js|vue)$/), + }, + ], +}); + +defineTest(join(__dirname, ".."), "add", "fixture-2", "entry", { + foo: "Promise.resolve()", + man: "() => nice!!", + mode: "super-man", + nice: "'=)'", + objects: "are not", + super: [ + "op", + { + enforce: "'pre'", + include: ["asd", "'Stringy'"], + loader: "'pia-loader'", + options: { + formatter: "'nao'", + }, + test: new RegExp(/\.(wasm|c)$/), + }, + ], +}); + +defineTest(join(__dirname, ".."), "remove", "fixture-3", "resolve", { + alias: null, +}); + +defineTest(join(__dirname, ".."), "remove", "fixture-3", "plugins", ["plugin2"]); + +defineTest(join(__dirname, ".."), "remove", "fixture-3", "module", { + noParse: null, +}); + +defineTest(join(__dirname, ".."), "remove", "fixture-3", "entry", { + a: null, +}); + +defineTest(join(__dirname, ".."), "remove", "fixture-3", "module", { + rules: [ + { + loader: "eslint-loader", + }, + ], +}); diff --git a/packages/utils/resolve-packages.test.js b/packages/utils/__tests__/resolve-packages.test.ts similarity index 82% rename from packages/utils/resolve-packages.test.js rename to packages/utils/__tests__/resolve-packages.test.ts index bb30405ff93..d571dc01762 100644 --- a/packages/utils/resolve-packages.test.js +++ b/packages/utils/__tests__/resolve-packages.test.ts @@ -1,13 +1,13 @@ "use strict"; -const path = require("path"); +import * as path from "path"; function mockPromise(value) { const isValueAPromise = (value || {}).then; const mockedPromise = { - then: function(callback) { + then(callback) { return mockPromise(callback(value)); - } + }, }; return isValueAPromise ? value : mockedPromise; @@ -17,17 +17,15 @@ function spawnChild(pkg) { } function getLoc(option) { - let packageModule = []; - option.filter(pkg => { - mockPromise(spawnChild(pkg)).then(_ => { + const packageModule = []; + option.filter((pkg) => { + mockPromise(spawnChild(pkg)).then((_) => { try { - let loc = path.join("..", "..", "node_modules", pkg); + const loc = path.join("..", "..", "node_modules", pkg); packageModule.push(loc); } catch (err) { throw new Error( - "Package wasn't validated correctly.." + "Submit an issue for", - pkg, - "if this persists" + "Package wasn't validated correctly.." + "Submit an issue for " + pkg + " if this persists", ); } }); @@ -62,7 +60,7 @@ describe("resolve-packages", () => { moduleLoc = getLoc(["webpack-scaffold-ylvis", "webpack-scaffold-noop"]); expect(moduleLoc).toEqual([ path.normalize("../../node_modules/webpack-scaffold-ylvis"), - path.normalize("../../node_modules/webpack-scaffold-noop") + path.normalize("../../node_modules/webpack-scaffold-noop"), ]); }); }); diff --git a/packages/utils/validate-identifier.test.js b/packages/utils/__tests__/validate-identifier.test.ts similarity index 59% rename from packages/utils/validate-identifier.test.js rename to packages/utils/__tests__/validate-identifier.test.ts index 598c2c1d18e..96d36c09408 100644 --- a/packages/utils/validate-identifier.test.js +++ b/packages/utils/__tests__/validate-identifier.test.ts @@ -1,6 +1,6 @@ "use strict"; -const validateIdentifier = require("./validate-identifier"); +import * as validateIdentifier from "../validate-identifier"; describe("validate-identifier", () => { it("should return true for reserved keyword", () => { @@ -13,22 +13,27 @@ describe("validate-identifier", () => { expect(validateIdentifier.isKeyword(l)).toBe(false); }); - it("should retrun false if literal is not in U+200C zero width non-joiner, U+200D zero width joiner, or any symbol with the Unicode derived core property ID_Continue", () => { + it("should retrun false if literal is not in U+200C zero width non-joiner,\ + U+200D zero width joiner, or any symbol with \ + the Unicode derived core property ID_Continue", () => { const l = "\u00A9"; expect(validateIdentifier.isIdentifierChar(l)).toBe(false); }); - it("should retrun true if literal is in U+200C zero width non-joiner, U+200D zero width joiner, or any symbol with the Unicode derived core property ID_Continue", () => { + it("should retrun true if literal is in U+200C zero width non-joiner, U+200D zero width joiner,\ + or any symbol with the Unicode derived core property ID_Continue", () => { const l = "foo$bar"; expect(validateIdentifier.isIdentifierChar(l)).toBe(true); }); - it("should return true if literal name starts with $, _ or any symbol with the unicode derived core property ID_Start", () => { + it("should return true if literal name starts with \ + $, _ or any symbol with the unicode derived core property ID_Start", () => { const l = "$foo"; expect(validateIdentifier.isIdentifierStart(l)).toBe(true); }); - it("should return false if literal name does not starts with $, _ or any symbol with the unicode derived core property ID_Start", () => { + it("should return false if literal name does not starts with \ + $, _ or any symbol with the unicode derived core property ID_Start", () => { const l = "^bar"; expect(validateIdentifier.isIdentifierStart(l)).toBe(false); }); diff --git a/packages/utils/ast-utils.ts b/packages/utils/ast-utils.ts index 9d1fc58d50e..03222303e50 100644 --- a/packages/utils/ast-utils.ts +++ b/packages/utils/ast-utils.ts @@ -296,7 +296,7 @@ function findAndRemovePluginByName(j: IJSCodeshift, node: INode, pluginName: str * @returns {Void} */ -function createOrUpdatePluginByName(j: IJSCodeshift, rootNodePath: INode, pluginName: string, options: object): void { +function createOrUpdatePluginByName(j: IJSCodeshift, rootNodePath: INode, pluginName: string, options?: object): void { const pluginInstancePath: INode = findPluginsByName(j, j(rootNodePath), [ pluginName, ]); diff --git a/packages/utils/defineTest.ts b/packages/utils/defineTest.ts index 1118cde9a32..a2a570207f2 100644 --- a/packages/utils/defineTest.ts +++ b/packages/utils/defineTest.ts @@ -3,23 +3,23 @@ import * as path from "path"; import { IJSCodeshift, INode } from "./types/NodePath"; interface IModule { - ( - jscodeshift: IJSCodeshift, - ast: INode, - initOptions: string | boolean | object, - action: string, - transformName?: string, - ): INode; - default: transformType; - parser: string; -} - -type transformType = ( + ( jscodeshift: IJSCodeshift, ast: INode, initOptions: string | boolean | object, action: string, transformName?: string, + ): INode; + default: transformType; + parser: string; +} + +type transformType = ( + jscodeshift: IJSCodeshift, + ast: INode, + initOptions: string | boolean | object, + action: object | string, + transformName?: string, ) => INode; /** @@ -47,50 +47,54 @@ type transformType = ( * @return {Function} Function that fires of the transforms */ function runSingleTransform( - dirName: string, - transformName: string, - testFilePrefix: string, - initOptions: object | boolean | string, - action: string, + dirName: string, + transformName: string, + testFilePrefix: string, + initOptions: object | boolean | string, + action: object | string, ): string { - if (!testFilePrefix) { - testFilePrefix = transformName; - } - const fixtureDir: string = path.join(dirName, "__testfixtures__"); - const inputPath: string = path.join(fixtureDir, testFilePrefix + ".input.js"); - const source: string = fs.readFileSync(inputPath, "utf8"); + if (!testFilePrefix) { + testFilePrefix = transformName; + } + const fixtureDir: string = path.join( + dirName, + "__tests__", + "__testfixtures__", + ); + const inputPath: string = path.join(fixtureDir, testFilePrefix + ".input.js"); + const source: string = fs.readFileSync(inputPath, "utf8"); - let module: IModule; - // Assumes transform and test are on the same level - if (action) { - module = require(path.join(dirName, "recursive-parser" + ".js")); - } else { - module = require(path.join(dirName, transformName + ".js")); - } - // Handle ES6 modules using default export for the transform - const transform = module.default ? module.default : module; + let module: IModule; + // Assumes transform and test are on the same level + if (action) { + module = require(path.join(dirName, "recursive-parser" + ".ts")); + } else { + module = require(path.join(dirName, transformName + ".ts")); + } + // Handle ES6 modules using default export for the transform + const transform = module.default ? module.default : module; - // Jest resets the module registry after each test, so we need to always get - // a fresh copy of jscodeshift on every test run. - let jscodeshift: IJSCodeshift = require("jscodeshift/dist/core"); - if (module.parser) { - jscodeshift = jscodeshift.withParser(module.parser); - } - const ast: INode = jscodeshift(source); - if (initOptions || typeof initOptions === "boolean") { - return transform( - jscodeshift, - ast, - initOptions, - action, - transformName, - ).toSource({ - quote: "single", - }); - } - return transform(jscodeshift, ast, source, action).toSource({ + // Jest resets the module registry after each test, so we need to always get + // a fresh copy of jscodeshift on every test run. + let jscodeshift: IJSCodeshift = require("jscodeshift/dist/core"); + if (module.parser) { + jscodeshift = jscodeshift.withParser(module.parser); + } + const ast: INode = jscodeshift(source); + if (initOptions || typeof initOptions === "boolean") { + return transform( + jscodeshift, + ast, + initOptions, + action, + transformName, + ).toSource({ quote: "single", }); + } + return transform(jscodeshift, ast, source, action).toSource({ + quote: "single", + }); } /** @@ -111,25 +115,25 @@ function runSingleTransform( * @return {Void} Jest makes sure to execute the globally defined functions */ export default function defineTest( - dirName: string, - transformName: string, - testFilePrefix: string, - transformObject: object, - action: string, + dirName: string, + transformName: string, + testFilePrefix?: string, + transformObject?: object | string, + action?: object | string, ): void { - const testName: string = testFilePrefix - ? `transforms correctly using "${testFilePrefix}" data` - : "transforms correctly"; - describe(transformName, () => { - it(testName, () => { - const output = runSingleTransform( - dirName, - transformName, - testFilePrefix, - transformObject, - action, - ); - expect(output).toMatchSnapshot(); - }); + const testName: string = testFilePrefix + ? `transforms correctly using "${testFilePrefix}" data` + : "transforms correctly"; + describe(transformName, () => { + it(testName, () => { + const output = runSingleTransform( + dirName, + transformName, + testFilePrefix, + transformObject, + action, + ); + expect(output).toMatchSnapshot(); }); + }); } diff --git a/packages/utils/recursive-parser.test.js b/packages/utils/recursive-parser.test.js deleted file mode 100644 index 7a6d6b99e05..00000000000 --- a/packages/utils/recursive-parser.test.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; - -const defineTest = require("./defineTest").default; - -defineTest(__dirname, "init", "fixture-1", "entry", { - objects: "are", - super: [ - "yeah", - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } - } - ], - nice: "':)'", - foo: "Promise.resolve()", - man: "() => duper" -}); - -defineTest(__dirname, "add", "fixture-2", "entry", { - objects: "are not", - super: [ - "op", - { - test: new RegExp(/\.(wasm|c)$/), - loader: "'pia-loader'", - enforce: "'pre'", - include: ["asd", "'Stringy'"], - options: { - formatter: "'nao'" - } - } - ], - nice: "'=)'", - foo: "Promise.resolve()", - man: "() => nice!!", - mode: "super-man" -}); - -defineTest(__dirname, "remove", "fixture-3", "resolve", { - alias: null -}); - -defineTest(__dirname, "remove", "fixture-3", "plugins", ["plugin2"]); - -defineTest(__dirname, "remove", "fixture-3", "module", { - noParse: null -}); - -defineTest(__dirname, "remove", "fixture-3", "entry", { - a: null -}); - -defineTest(__dirname, "remove", "fixture-3", "module", { - rules: [ - { - loader: "eslint-loader" - } - ] -}); diff --git a/packages/webpack-scaffold/__tests__/__snapshots__/index.test.js.snap b/packages/webpack-scaffold/__tests__/__snapshots__/index.test.ts.snap similarity index 100% rename from packages/webpack-scaffold/__tests__/__snapshots__/index.test.js.snap rename to packages/webpack-scaffold/__tests__/__snapshots__/index.test.ts.snap diff --git a/packages/webpack-scaffold/__tests__/index.test.js b/packages/webpack-scaffold/__tests__/index.test.ts similarity index 88% rename from packages/webpack-scaffold/__tests__/index.test.js rename to packages/webpack-scaffold/__tests__/index.test.ts index 3c3e2981449..5e955bc7f96 100755 --- a/packages/webpack-scaffold/__tests__/index.test.js +++ b/packages/webpack-scaffold/__tests__/index.test.ts @@ -1,5 +1,5 @@ "use strict"; -const utils = require("../index"); +import * as utils from "../index"; describe("utils", () => { describe("createArrowFunction", () => { @@ -18,7 +18,7 @@ describe("utils", () => { }); it("should stringify an array", () => { expect( - utils.createDynamicPromise(["app.js", "index.js"]) + utils.createDynamicPromise(["app.js", "index.js"]), ).toMatchSnapshot(); }); }); @@ -48,49 +48,49 @@ describe("utils", () => { describe("Inquirer", () => { it("should make an List object", () => { expect(utils.List("entry", "does it work?", ["Yes", "Maybe"])).toEqual({ - type: "list", - name: "entry", + choices: ["Yes", "Maybe"], message: "does it work?", - choices: ["Yes", "Maybe"] + name: "entry", + type: "list", }); }); it("should make an RawList object", () => { expect( - utils.RawList("output", "does it work?", ["Yes", "Maybe"]) + utils.RawList("output", "does it work?", ["Yes", "Maybe"]), ).toEqual({ - type: "rawlist", - name: "output", + choices: ["Yes", "Maybe"], message: "does it work?", - choices: ["Yes", "Maybe"] + name: "output", + type: "rawlist", }); }); it("should make an CheckList object", () => { expect( - utils.CheckList("context", "does it work?", ["Yes", "Maybe"]) + utils.CheckList("context", "does it work?", ["Yes", "Maybe"]), ).toEqual({ - type: "checkbox", - name: "context", + choices: ["Yes", "Maybe"], message: "does it work?", - choices: ["Yes", "Maybe"] + name: "context", + type: "checkbox", }); }); it("should make an Input object", () => { expect(utils.Input("plugins", "what is your plugin?")).toEqual({ - type: "input", + message: "what is your plugin?", name: "plugins", - message: "what is your plugin?" + type: "input", }); }); it("should make an Confirm object", () => { expect(utils.Confirm("context", "what is your context?")).toEqual({ - type: "confirm", + message: "what is your context?", name: "context", - message: "what is your context?" + type: "confirm", }); }); it("should make an Input object with validation", () => { expect( - utils.InputValidate("plugins", "what is your plugin?", () => {}) + utils.InputValidate("plugins", "what is your plugin?", () => true), ).toMatchSnapshot(); }); }); diff --git a/packages/webpack-scaffold/index.ts b/packages/webpack-scaffold/index.ts index 01cf53a3558..fc9e3211897 100755 --- a/packages/webpack-scaffold/index.ts +++ b/packages/webpack-scaffold/index.ts @@ -20,19 +20,19 @@ export interface IInquirerInput extends IInquirerScaffoldObject { validate?: (input: string) => string | boolean; } -export function createArrowFunction(value: Function): string { +export function createArrowFunction(value: string): string { return `() => '${value}'`; } -export function createRegularFunction(value: Function): string { +export function createRegularFunction(value: string): string { return `function () {\n return '${value}'\n}`; } -export function createDynamicPromise(arrOrString: Function[] | string): string { +export function createDynamicPromise(arrOrString: string[] | string): string { if (Array.isArray(arrOrString)) { return ( "() => new Promise((resolve) => resolve([" + - arrOrString.map((func: Function) => { + arrOrString.map((func: string) => { return "'" + func + "'"; }) + "]))" diff --git a/tsconfig.base.json b/tsconfig.base.json index 7f5d043ed5f..d92fae8bb6a 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,11 +1,16 @@ { - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "skipLibCheck": true - }, - "include": ["packages/**/*.ts"], - "exclude": ["node_modules/**", "packages/*/node_modules/**", "packages/*/__tests__/*.test.ts"] + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "skipLibCheck": true + }, + "include": ["packages/**/*.ts"], + "exclude": [ + "node_modules/**", + "packages/*/node_modules/**", + "packages/**/__tests__/*.test.ts", + "packages/**/__testfixtures__/*.ts" + ] } diff --git a/tsconfig.json b/tsconfig.json index b76518ebc78..4257314b6ca 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { - "extends": "./tsconfig.base.json", - "compilerOptions": { - "allowJs": true - } + "extends": "./tsconfig.base.json", + "compilerOptions": { + "allowJs": true + } } diff --git a/tsconfig.packages.json b/tsconfig.packages.json index 41bddf784fc..87eae9c0e2a 100644 --- a/tsconfig.packages.json +++ b/tsconfig.packages.json @@ -1,6 +1,6 @@ { - "extends": "tsconfig.base.json", - "compilerOptions": { - "declaration": true - } + "extends": "tsconfig.base.json", + "compilerOptions": { + "declaration": true + } }