From ecdb466af347aa9ccb631cedfe04bf2f479e240c Mon Sep 17 00:00:00 2001 From: nikhil Date: Tue, 20 Sep 2022 12:32:49 -0400 Subject: [PATCH] chore(eslint): Support JSON module imports Also fix a few violations of the `export-with-import-assertions` rule, places where we import specific top-level keys from JSON files in violation of [the current spec](https://github.com/tc39/proposal-json-modules#why-dont-json-modules-support-named-exports). --- .eslintrc.yml | 7 +++++ config/templates/design/config.js | 6 ++--- package.json | 2 ++ .../templates/from-bella/design/config.js | 16 ++++-------- .../templates/from-bent/design/config.js | 18 +++---------- .../templates/from-breanna/design/config.js | 12 +++------ .../templates/from-brian/design/config.js | 18 +++---------- .../templates/from-scratch/design/config.js | 5 ++-- .../templates/from-titan/design/config.js | 14 +++------- yarn.lock | 26 ++++++++++++++++++- 10 files changed, 60 insertions(+), 64 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index b39fd0463e8..46342ee6e38 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -6,9 +6,16 @@ overrides: - files: ["*.yaml", "*.yml"] plugins: ["yaml"] extends: ["plugin:yaml/recommended"] +# Required when using experimental EcmaScript features +parser: "@babel/eslint-parser" parserOptions: ecmaVersion: latest sourceType: module + # Options specific to the Babel parser + requireConfigFile: false + babelOptions: + plugins: + - "@babel/plugin-syntax-import-assertions" rules: {} globals: it: readonly diff --git a/config/templates/design/config.js b/config/templates/design/config.js index 62bc46fff91..d10f3a855d2 100644 --- a/config/templates/design/config.js +++ b/config/templates/design/config.js @@ -1,14 +1,14 @@ -import { version } from './package.json' assert { type: 'json' } +import pkg from './package.json' assert { type: 'json' } export default { name: '{{name}}', - version, + version: pkg.version, design: '{{author}}', code: '{{author}}', department: '{{department}}', type: '{{type}}', difficulty: 3, - tags: [ ], + tags: [], optionGroups: { fit: ['size'], }, diff --git a/package.json b/package.json index 4f30048d92c..5c0d2e21192 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,8 @@ ] }, "devDependencies": { + "@babel/eslint-parser": "^7.19.1", + "@babel/plugin-syntax-import-assertions": "^7.18.6", "@commitlint/cli": "^17.0.2", "@commitlint/config-conventional": "^17.0.2", "@types/express": "^4.17.13", diff --git a/packages/new-design/templates/from-bella/design/config.js b/packages/new-design/templates/from-bella/design/config.js index b7ef2e64d8d..fc6e20948a3 100644 --- a/packages/new-design/templates/from-bella/design/config.js +++ b/packages/new-design/templates/from-bella/design/config.js @@ -1,29 +1,23 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } import { config as bellaConfig } from '@freesewing/bella' export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { ...bellaConfig.optionGroups, }, - measurements: [ - ...bellaConfig.measurements, - ], + measurements: [...bellaConfig.measurements], dependencies: { bellaFrontSideDart: 'bellaBack', }, inject: { back: 'bellaBack', - front: 'bellaFrontSideDart' + front: 'bellaFrontSideDart', }, - hide: [ - 'bellaBack', - 'bellaFrontSideDart', - ], + hide: ['bellaBack', 'bellaFrontSideDart'], parts: [], options: { ...bellaConfig.options, }, } - diff --git a/packages/new-design/templates/from-bent/design/config.js b/packages/new-design/templates/from-bent/design/config.js index aa4acb58967..f8892719b05 100644 --- a/packages/new-design/templates/from-bent/design/config.js +++ b/packages/new-design/templates/from-bent/design/config.js @@ -1,15 +1,13 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } import { config as bentConfig } from '@freesewing/bent' export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { ...bentConfig.optionGroups, }, - measurements: [ - ...bentConfig.measurements, - ], + measurements: [...bentConfig.measurements], inject: { bentBack: 'bentBase', bentFront: 'bentBack', @@ -20,16 +18,8 @@ export default { topSleeve: 'bentTopSleeve', underSleeve: 'bentUnderSleeve', }, - hide: [ - 'bentBase', - 'bentFront', - 'bentBack', - 'bentSleeve', - 'bentTopSleeve', - 'bentUnderSleeve', - ], + hide: ['bentBase', 'bentFront', 'bentBack', 'bentSleeve', 'bentTopSleeve', 'bentUnderSleeve'], options: { ...bentConfig.options, }, } - diff --git a/packages/new-design/templates/from-breanna/design/config.js b/packages/new-design/templates/from-breanna/design/config.js index 9c0b341550c..e72a35488bf 100644 --- a/packages/new-design/templates/from-breanna/design/config.js +++ b/packages/new-design/templates/from-breanna/design/config.js @@ -1,17 +1,14 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } import { config as breannaConfig } from '@freesewing/breanna' export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { ...breannaConfig.optionGroups, }, - measurements: [ - ...breannaConfig.measurements, - ], - dependencies: { - }, + measurements: [...breannaConfig.measurements], + dependencies: {}, inject: { breannaBack: 'breannaBase', breannaFrontBase: 'breannaBase', @@ -34,4 +31,3 @@ export default { ...breannaConfig.options, }, } - diff --git a/packages/new-design/templates/from-brian/design/config.js b/packages/new-design/templates/from-brian/design/config.js index 2c9a8a20e98..2185f7800f5 100644 --- a/packages/new-design/templates/from-brian/design/config.js +++ b/packages/new-design/templates/from-brian/design/config.js @@ -1,15 +1,13 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } import { config as brianConfig } from '@freesewing/brian' export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { ...brianConfig.optionGroups, }, - measurements: [ - ...brianConfig.measurements, - ], + measurements: [...brianConfig.measurements], dependencies: { brianSleevecap: 'brianFront', }, @@ -21,17 +19,9 @@ export default { front: 'brianFront', sleeve: 'brianSleeve', }, - hide: [ - 'brianBase', - 'brianFront', - 'brianBack', - 'brianSleevecap', - 'brianSleeve', - 'sleevecap', - ], + hide: ['brianBase', 'brianFront', 'brianBack', 'brianSleevecap', 'brianSleeve', 'sleevecap'], parts: [], options: { ...brianConfig.options, }, } - diff --git a/packages/new-design/templates/from-scratch/design/config.js b/packages/new-design/templates/from-scratch/design/config.js index f060b8db59a..fadecc8fce6 100644 --- a/packages/new-design/templates/from-scratch/design/config.js +++ b/packages/new-design/templates/from-scratch/design/config.js @@ -1,8 +1,8 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { fit: ['size'], }, @@ -15,4 +15,3 @@ export default { size: { pct: 50, min: 10, max: 100 }, }, } - diff --git a/packages/new-design/templates/from-titan/design/config.js b/packages/new-design/templates/from-titan/design/config.js index 705af99f4c4..0dd610d7abb 100644 --- a/packages/new-design/templates/from-titan/design/config.js +++ b/packages/new-design/templates/from-titan/design/config.js @@ -1,15 +1,13 @@ -import { version } from '../package.json' assert { type: 'json' } +import pkg from '../package.json' assert { type: 'json' } import { config as titanConfig } from '@freesewing/titan' export default { name: '{{name}}', - version, + version: pkg.version, optionGroups: { ...titanConfig.optionGroups, }, - measurements: [ - ...titanConfig.measurements, - ], + measurements: [...titanConfig.measurements], dependencies: { titanFront: 'titanBack', }, @@ -17,12 +15,8 @@ export default { front: 'titanFront', back: 'titanBack', }, - hide: [ - 'titanFront', - 'titanBack', - ], + hide: ['titanFront', 'titanBack'], options: { ...titanConfig.options, }, } - diff --git a/yarn.lock b/yarn.lock index 2a82625508b..6fb85587c0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -152,6 +152,15 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -2744,6 +2753,13 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.0.tgz#c1b983316307f8f55fee491942b5d244bd2036e2" integrity sha512-C/nw6OgQpEULWqs+wgMHXGvlJLguPRFFGqR2TAqWBerQ8J+Sg3z1ZTqwelkSi4FoqStGuZ2UdFHIDN1ySmR1xA== +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -7957,6 +7973,14 @@ eslint-plugin-yaml@^0.5.0: js-yaml "^4.1.0" jshint "^2.13.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -7992,7 +8016,7 @@ eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==