Quellcode durchsuchen

meta: harden linter rules for ESM/CJS validation (#3674)

Antoine du Hamel vor 3 Jahren
Ursprung
Commit
134539ab52

+ 26 - 13
.eslintrc.js

@@ -35,7 +35,8 @@ module.exports = {
   ],
   parser: '@babel/eslint-parser',
   parserOptions: {
-    ecmaVersion: 2020,
+    sourceType: 'script',
+    ecmaVersion: 2021,
     ecmaFeatures: {
       jsx: true,
     },
@@ -145,18 +146,6 @@ module.exports = {
   },
 
   overrides: [
-    {
-      files: [
-        '*.mjs',
-        'examples/aws-presigned-url/*.js',
-        'private/dev/*.js',
-        'private/release/*.js',
-        'private/remark-lint-uppy/*.js',
-      ],
-      parserOptions: {
-        sourceType: 'module',
-      },
-    },
     {
       files: [
         'packages/@uppy/*/src/**/*.jsx',
@@ -197,6 +186,14 @@ module.exports = {
     },
     {
       files: [
+        '*.mjs',
+        'e2e/clients/**/*.js',
+        'examples/aws-presigned-url/*.js',
+        'examples/bundled/*.js',
+        'private/dev/*.js',
+        'private/release/*.js',
+        'private/remark-lint-uppy/*.js',
+
         // Packages that have switched to ESM sources:
         'packages/@uppy/audio/src/**/*.js',
         'packages/@uppy/box/src/**/*.js',
@@ -207,6 +204,9 @@ module.exports = {
         'packages/@uppy/facebook/src/**/*.js',
         'packages/@uppy/file-input/src/**/*.js',
         'packages/@uppy/form/src/**/*.js',
+        'packages/@uppy/react-native/**/*.js',
+        'packages/@uppy/svelte/src/**/*.js',
+        'packages/@uppy/svelte/rollup.config.js',
         'packages/@uppy/vue/src/**/*.js',
       ],
       parserOptions: {
@@ -242,6 +242,19 @@ module.exports = {
         'import/extensions': ['error', 'ignorePackages'],
       },
     },
+    {
+      files: [
+        // Those need looser rules, and cannot be made part of the stricter rules above.
+        // TODO: update those to more modern code when switch to ESM is complete
+        'examples/react-native-expo/*.js',
+        'examples/svelte-example/**/*.js',
+        'examples/vue/**/*.js',
+        'examples/vue3/**/*.js',
+      ],
+      parserOptions: {
+        sourceType: 'module',
+      },
+    },
     {
       files: ['./packages/@uppy/companion/**/*.js'],
       rules: {

+ 1 - 1
e2e/clients/dashboard-react/index.js

@@ -1,5 +1,5 @@
 /* eslint-disable react/react-in-jsx-scope */
 import ReactDOM from 'react-dom'
-import App from './App'
+import App from './App.js'
 
 ReactDOM.render(<App />, document.getElementById('app'))

+ 4 - 4
packages/@uppy/react-native/file-picker/index.js

@@ -6,10 +6,10 @@ import {
   ScrollView,
   TouchableOpacity,
 } from 'react-native'
-import takePicture from './takePicture'
-import selectImage from './selectImage'
-import selectDocument from './selectDocument'
-import Provider from './provider'
+import takePicture from './takePicture.js'
+import selectImage from './selectImage.js'
+import selectDocument from './selectDocument.js'
+import Provider from './provider.js'
 
 export default class UppyReactNativeFilePicker extends React.Component {
   constructor () {

+ 1 - 1
packages/@uppy/react-native/file-picker/provider.js

@@ -1,5 +1,5 @@
 import React from 'react'
-import Url from './url'
+import Url from './url.js'
 
 // container wrapper for providers, only Url for now
 export default class UppyRNProvider extends React.Component {