From c1d15abf107527d094d9ffc8ec97f05cabbc8f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Sat, 20 Mar 2021 11:02:49 +0100 Subject: [PATCH] error on import lint failure + some misc lint fixes (#2813) Co-authored-by: Artur Paikin --- .eslintrc.js | 218 ++ .eslintrc.json | 232 --- bin/locale-packs.js | 21 +- examples/aws-companion/package.json | 13 +- examples/aws-presigned-url/package.json | 9 +- examples/aws-presigned-url/serve.js | 7 - examples/custom-provider/package.json | 10 +- examples/dev/Dashboard.js | 3 + examples/dev/DragDrop.js | 4 +- examples/digitalocean-spaces/package.json | 4 +- examples/digitalocean-spaces/server.js | 9 +- examples/multiple-instances/package.json | 11 +- examples/node-xhr/main.js | 4 +- examples/node-xhr/package.json | 10 +- examples/php-xhr/package.json | 10 +- examples/python-xhr/package.json | 10 +- examples/react-example/package.json | 8 +- examples/redux/package.json | 12 +- examples/transloadit-textarea/package.json | 9 +- examples/transloadit/package.json | 9 +- examples/xhr-bundle/package.json | 11 +- package-lock.json | 1848 ++++++++++++++--- package.json | 16 +- packages/@uppy/companion/.eslintrc.json | 11 - packages/@uppy/companion/src/companion.js | 31 +- packages/@uppy/companion/src/config/grant.js | 18 +- .../@uppy/companion/src/server/Uploader.js | 71 +- .../src/server/controllers/callback.js | 4 +- .../src/server/controllers/connect.js | 4 +- .../companion/src/server/controllers/get.js | 4 +- .../companion/src/server/controllers/index.js | 2 +- .../src/server/controllers/logout.js | 6 +- .../src/server/controllers/oauth-redirect.js | 4 +- .../companion/src/server/controllers/s3.js | 24 +- .../src/server/controllers/send-token.js | 6 +- .../src/server/controllers/thumbnail.js | 6 +- .../companion/src/server/controllers/url.js | 11 +- .../src/server/emitter/default-emitter.js | 2 +- .../companion/src/server/emitter/index.js | 1 + .../src/server/emitter/redis-emitter.js | 8 +- .../companion/src/server/header-blacklist.js | 13 +- .../@uppy/companion/src/server/helpers/jwt.js | 4 +- .../src/server/helpers/oauth-state.js | 2 +- .../companion/src/server/helpers/request.js | 13 +- .../companion/src/server/helpers/utils.js | 6 +- .../companion/src/server/helpers/version.js | 1 + packages/@uppy/companion/src/server/jobs.js | 3 +- packages/@uppy/companion/src/server/logger.js | 9 +- .../@uppy/companion/src/server/middlewares.js | 6 +- .../companion/src/server/provider/Provider.js | 15 +- .../src/server/provider/SearchProvider.js | 9 +- .../src/server/provider/box/index.js | 32 +- .../src/server/provider/credentials.js | 11 +- .../src/server/provider/drive/adapter.js | 10 +- .../src/server/provider/drive/index.js | 20 +- .../src/server/provider/dropbox/index.js | 30 +- .../companion/src/server/provider/error.js | 1 + .../src/server/provider/facebook/adapter.js | 4 +- .../src/server/provider/facebook/index.js | 23 +- .../companion/src/server/provider/index.js | 30 +- .../provider/instagram/graph/adapter.js | 6 +- .../server/provider/instagram/graph/index.js | 25 +- .../src/server/provider/onedrive/index.js | 31 +- .../src/server/provider/unsplash/adapter.js | 4 +- .../src/server/provider/unsplash/index.js | 24 +- .../src/server/provider/zoom/adapter.js | 12 +- .../src/server/provider/zoom/index.js | 37 +- packages/@uppy/companion/src/server/redis.js | 1 + .../@uppy/companion/src/server/s3-client.js | 10 +- .../@uppy/companion/src/standalone/helper.js | 28 +- .../@uppy/companion/src/standalone/index.js | 20 +- .../companion/src/standalone/start-server.js | 1 + .../@uppy/companion/test/__mocks__/purest.js | 4 +- .../companion/test/__tests__/callback.js | 3 +- .../companion/test/__tests__/companion.js | 27 +- .../companion/test/__tests__/credentials.js | 9 +- .../test/__tests__/deauthorization.js | 21 +- .../test/__tests__/header-blacklist.js | 8 +- .../companion/test/__tests__/http-agent.js | 18 +- .../@uppy/companion/test/__tests__/logger.js | 2 +- .../companion/test/__tests__/middlewares.js | 4 +- .../@uppy/companion/test/__tests__/preauth.js | 10 +- .../test/__tests__/provider-manager.js | 31 +- .../companion/test/__tests__/providers.js | 8 +- .../companion/test/__tests__/uploader.js | 4 +- .../@uppy/companion/test/__tests__/url.js | 14 +- packages/@uppy/companion/test/fixtures/box.js | 24 +- .../@uppy/companion/test/fixtures/drive.js | 20 +- .../@uppy/companion/test/fixtures/dropbox.js | 28 +- .../@uppy/companion/test/fixtures/facebook.js | 32 +- .../@uppy/companion/test/fixtures/index.js | 2 +- .../companion/test/fixtures/instagram.js | 22 +- .../@uppy/companion/test/fixtures/onedrive.js | 34 +- .../@uppy/companion/test/fixtures/zoom.js | 24 +- .../@uppy/companion/test/mockoauthstate.js | 2 +- packages/@uppy/companion/test/mockserver.js | 2 +- .../src/components/FileItem/index.js | 7 - packages/@uppy/react-native/package.json | 8 +- packages/@uppy/react/package.json | 3 +- packages/@uppy/transloadit/package.json | 3 +- packages/@uppy/utils/src/RateLimitedQueue.js | 2 +- .../@uppy/utils/src/fetchWithNetworkError.js | 2 +- .../@uppy/utils/src/remoteFileObjToLocal.js | 2 +- test/.eslintrc.json | 6 - test/endtoend/create-react-app/src/App.js | 34 +- website/package.json | 5 + .../hexo-renderer-uppyexamples/package.json | 5 +- 107 files changed, 2398 insertions(+), 1174 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json delete mode 100644 packages/@uppy/companion/.eslintrc.json delete mode 100644 test/.eslintrc.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..536350f69 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,218 @@ +'use strict' + +const glob = require('glob') + +// Configure import/no-extraneous-dependencies for test files in +// each package, which are allowed to import dependencies from their +// own package.json as well as the root package.json. +const importRules = [] +for (const dir of glob.sync('packages/@uppy/*')) { + importRules.push({ + files: [ + `${dir}/**/*.test.js`, + `${dir}/test/**/*.js`, + `${dir}/rollup.config.js`, + ], + rules: { + 'import/no-extraneous-dependencies': ['error', { + devDependencies: true, + packageDir: [dir, '.'], + }], + }, + }) +} + +module.exports = { + extends: ['transloadit'], + env: { + es6: true, + jest: true, + node: true, + // extra: + browser: true, + }, + globals: { + window: true, + hexo: true, + }, + plugins: [ + '@babel/eslint-plugin', + 'jest', + 'node', + 'prefer-import', + 'promise', + 'react', + // extra: + 'compat', + 'jsdoc', + ], + parser: '@babel/eslint-parser', + parserOptions: { + ecmaVersion: 2020, + ecmaFeatures: { + jsx: true, + }, + }, + rules: { + // transloadit rules we are actually ok with in the uppy repo + 'guard-for-in': ['off'], + 'import/extensions': ['off'], + strict: ['off'], + 'key-spacing': ['off'], + + // transloadit rules we would like to enforce in the future + // but will require separate PRs to gradually get there + // and so the meantime: just warn + 'array-callback-return': ['warn'], + 'block-scoped-var': ['warn'], + 'class-methods-use-this': ['warn'], + 'consistent-return': ['warn'], + 'default-case': ['warn'], + 'global-require': ['warn'], + 'implicit-arrow-linebreak': ['warn'], + 'import/no-dynamic-require': ['warn'], + 'import/no-unresolved': ['warn'], + 'import/order': ['warn'], + 'jsx-a11y/alt-text': ['warn'], + 'jsx-a11y/anchor-has-content': ['warn'], + 'jsx-a11y/click-events-have-key-events': ['warn'], + 'jsx-a11y/control-has-associated-label': ['warn'], + 'jsx-a11y/label-has-associated-control': ['warn'], + 'jsx-a11y/media-has-caption': ['warn'], + 'jsx-a11y/mouse-events-have-key-events': ['warn'], + 'jsx-a11y/no-interactive-element-to-noninteractive-role': ['warn'], + 'jsx-a11y/no-noninteractive-element-interactions': ['warn'], + 'jsx-a11y/no-static-element-interactions': ['warn'], + 'no-await-in-loop': ['warn'], + 'no-bitwise': ['warn'], + 'no-continue': ['warn'], + 'no-empty': ['warn'], + 'no-lonely-if': ['warn'], + 'no-mixed-operators': ['warn'], + 'no-nested-ternary': ['warn'], + 'no-param-reassign': ['warn'], + 'no-redeclare': ['warn'], + 'no-restricted-globals': ['warn'], + 'no-restricted-properties': ['warn'], + 'no-restricted-syntax': ['warn'], + 'no-return-assign': ['warn'], + 'no-shadow': ['warn'], + 'no-underscore-dangle': ['warn'], + 'no-unused-expressions': ['warn'], + 'no-unused-vars': ['warn'], + 'no-use-before-define': ['warn'], + 'no-useless-concat': ['warn'], + 'no-var': ['warn'], + 'node/handle-callback-err': ['warn'], + 'prefer-destructuring': ['warn'], + 'prefer-spread': ['warn'], + radix: ['warn'], + 'react/button-has-type': ['warn'], + 'react/destructuring-assignment': ['warn'], + 'react/forbid-prop-types': ['warn'], + 'react/jsx-props-no-spreading': ['warn'], + 'react/no-access-state-in-setstate': ['warn'], + 'react/no-array-index-key': ['warn'], + 'react/no-deprecated': ['warn'], + 'react/no-this-in-sfc': ['warn'], + 'react/no-will-update-set-state': ['warn'], + 'react/prefer-stateless-function': ['warn'], + 'react/sort-comp': ['warn'], + 'react/style-prop-object': ['warn'], + 'vars-on-top': ['warn'], + 'import/no-extraneous-dependencies': ['error'], + + // compat + 'compat/compat': ['error'], + + // jsdoc + 'jsdoc/check-alignment': ['warn'], + 'jsdoc/check-examples': ['warn'], + 'jsdoc/check-param-names': ['warn'], + 'jsdoc/check-syntax': ['warn'], + 'jsdoc/check-tag-names': ['warn'], + 'jsdoc/check-types': ['warn'], + 'jsdoc/newline-after-description': ['warn'], + 'jsdoc/valid-types': ['warn'], + 'jsdoc/check-indentation': ['off'], + }, + + settings: { + react: { + pragma: 'h', + }, + jsdoc: { + mode: 'typescript', + }, + polyfills: [ + 'Promise', + 'fetch', + 'Object.assign', + 'document.querySelector', + ], + }, + + overrides: [ + { + files: [ + '*.test.js', + 'test/endtoend/*.js', + 'website/*.js', + 'bin/**.js', + ], + rules: { + 'compat/compat': ['off'], + }, + }, + + { + files: [ + 'bin/**.js', + '.eslintrc.js', + ], + rules: { + 'import/no-extraneous-dependencies': ['error', { + devDependencies: true, + }], + }, + }, + + { + files: [ + 'packages/@uppy/locales/src/*.js', + 'packages/@uppy/locales/template.js', + ], + rules: { + camelcase: ['off'], + 'quote-props': ['off'], + }, + }, + + { + files: [ + 'website/themes/uppy/source/js/*.js', + ], + rules: { + 'prefer-const': ['off'], + }, + }, + + { + files: ['test/endtoend/*/*.js'], + env: { + mocha: true, + }, + }, + + { + files: ['packages/@uppy/react/src/**/*.js'], + rules: { + 'import/no-extraneous-dependencies': ['error', { + peerDependencies: true, + }], + }, + }, + + ...importRules, + ], +} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 44d565f08..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "extends": ["transloadit"], - "env": { - "es6": true, - "jest": true, - "node": true, - // extra: - "browser": true - }, - "globals": { - "window": true, - "hexo": true - }, - "plugins": [ - "@babel/eslint-plugin", - "jest", - "node", - "prefer-import", - "promise", - "react", - // extra: - "compat", - "jsdoc" - ], - "parser": "@babel/eslint-parser", - "parserOptions": { - "ecmaVersion": 2020, - "ecmaFeatures": { - "jsx": true - } - }, - "rules": { - // transloadit rules we are actually ok with in the uppy repo - //////////////////////////////////////////////////////////// - "guard-for-in": ["off"], - "import/extensions": ["off"], - "strict": ["off"], - "key-spacing": ["off"], - - // transloadit rules we would like to enforce in the future - // but will require separate PRs to gradually get there - // and so the meantime: just warn - //////////////////////////////////////////////////////////// - "array-callback-return": ["warn"], - "block-scoped-var": ["warn"], - "class-methods-use-this": ["warn"], - "consistent-return": ["warn"], - "default-case": ["warn"], - "global-require": ["warn"], - "implicit-arrow-linebreak": ["warn"], - "import/no-dynamic-require": ["warn"], - "import/no-unresolved": ["warn"], - "import/order": ["warn"], - "jsx-a11y/alt-text": ["warn"], - "jsx-a11y/anchor-has-content": ["warn"], - "jsx-a11y/click-events-have-key-events": ["warn"], - "jsx-a11y/control-has-associated-label": ["warn"], - "jsx-a11y/label-has-associated-control": ["warn"], - "jsx-a11y/media-has-caption": ["warn"], - "jsx-a11y/mouse-events-have-key-events": ["warn"], - "jsx-a11y/no-interactive-element-to-noninteractive-role": ["warn"], - "jsx-a11y/no-noninteractive-element-interactions": ["warn"], - "jsx-a11y/no-static-element-interactions": ["warn"], - "no-await-in-loop": ["warn"], - "no-bitwise": ["warn"], - "no-continue": ["warn"], - "no-empty": ["warn"], - "no-lonely-if": ["warn"], - "no-mixed-operators": ["warn"], - "no-nested-ternary": ["warn"], - "no-param-reassign": ["warn"], - "no-redeclare": ["warn"], - "no-restricted-globals": ["warn"], - "no-restricted-properties": ["warn"], - "no-restricted-syntax": ["warn"], - "no-return-assign": ["warn"], - "no-shadow": ["warn"], - "no-underscore-dangle": ["warn"], - "no-unused-expressions": ["warn"], - "no-unused-vars": ["warn"], - "no-use-before-define": ["warn"], - "no-useless-concat": ["warn"], - "no-var": ["warn"], - "node/handle-callback-err": ["warn"], - "prefer-destructuring": ["warn"], - "prefer-spread": ["warn"], - "radix": ["warn"], - "react/button-has-type": ["warn"], - "react/destructuring-assignment": ["warn"], - "react/forbid-prop-types": ["warn"], - "react/jsx-props-no-spreading": ["warn"], - "react/no-access-state-in-setstate": ["warn"], - "react/no-array-index-key": ["warn"], - "react/no-deprecated": ["warn"], - "react/no-this-in-sfc": ["warn"], - "react/no-will-update-set-state": ["warn"], - "react/prefer-stateless-function": ["warn"], - "react/sort-comp": ["warn"], - "react/style-prop-object": ["warn"], - "vars-on-top": ["warn"], - "import/no-extraneous-dependencies": ["warn"], - - // compat - //////////////////////////////////////////////////////////// - "compat/compat": ["error"], - - // jsdoc - //////////////////////////////////////////////////////////// - "jsdoc/check-alignment": ["warn"], - "jsdoc/check-examples": ["warn"], - "jsdoc/check-param-names": ["warn"], - "jsdoc/check-syntax": ["warn"], - "jsdoc/check-tag-names": ["warn"], - "jsdoc/check-types": ["warn"], - "jsdoc/newline-after-description": ["warn"], - "jsdoc/valid-types": ["warn"], - "jsdoc/check-indentation": ["off"] - }, - "settings": { - "react": { - "pragma": "h" - }, - "jsdoc": { - "mode": "typescript" - }, - "polyfills": [ - "Promise", - "fetch", - "Object.assign", - "document.querySelector" - ] - }, - "overrides": [ - { - "files": [ - "*.test.js", - "test/endtoend/*.js", - "website/*.js", - "bin/*.js" - ], - "rules": { - "compat/compat": ["off"] - } - }, - { - "files": [ - "packages/@uppy/locales/src/*.js", - "packages/@uppy/locales/template.js" - ], - "rules": { - "camelcase": ["off"], - "quote-props": ["off"] - } - }, - { - "files": [ - "website/themes/uppy/source/js/*.js" - ], - "rules": { - "prefer-const": ["off"] - } - }, - - { "files": ["bin/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"devDependencies": true}] } }, - - - { "files": ["packages/uppy/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/uppy/"}] } }, - - { "files": ["packages/@uppy/aws-s3/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/aws-s3/"}] } }, - { "files": ["packages/@uppy/aws-s3-multipart/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/aws-s3-multipart/"}] } }, - { "files": ["packages/@uppy/box/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/box/"}] } }, - { "files": ["packages/@uppy/companion/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/companion/"}] } }, - { "files": ["packages/@uppy/companion-client/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/companion-client/"}] } }, - { "files": ["packages/@uppy/core/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/core/"}] } }, - { "files": ["packages/@uppy/dashboard/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/dashboard/"}] } }, - { "files": ["packages/@uppy/drag-drop/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/drag-drop/"}] } }, - { "files": ["packages/@uppy/dropbox/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/dropbox/"}] } }, - { "files": ["packages/@uppy/facebook/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/facebook/"}] } }, - { "files": ["packages/@uppy/file-input/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/file-input/"}] } }, - { "files": ["packages/@uppy/form/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/form/"}] } }, - { "files": ["packages/@uppy/golden-retriever/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/golden-retriever/"}] } }, - { "files": ["packages/@uppy/google-drive/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/google-drive/"}] } }, - { "files": ["packages/@uppy/image-editor/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/image-editor/"}] } }, - { "files": ["packages/@uppy/informer/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/informer/"}] } }, - { "files": ["packages/@uppy/instagram/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/instagram/"}] } }, - { "files": ["packages/@uppy/locales/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/locales/"}] } }, - { "files": ["packages/@uppy/onedrive/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/onedrive/"}] } }, - { "files": ["packages/@uppy/progress-bar/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/progress-bar/"}] } }, - { "files": ["packages/@uppy/provider-views/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/provider-views/"}] } }, - { "files": ["packages/@uppy/react/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/react/"}] } }, - { "files": ["packages/@uppy/react-native/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/react-native/"}] } }, - { "files": ["packages/@uppy/redux-dev-tools/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/redux-dev-tools/"}] } }, - { "files": ["packages/@uppy/robodog/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/robodog/"}] } }, - { "files": ["packages/@uppy/screen-capture/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/screen-capture/"}] } }, - { "files": ["packages/@uppy/status-bar/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/status-bar/"}] } }, - { "files": ["packages/@uppy/store-default/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/store-default/"}] } }, - { "files": ["packages/@uppy/store-redux/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/store-redux/"}] } }, - { "files": ["packages/@uppy/svelte/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/svelte/"}] } }, - { "files": ["packages/@uppy/thumbnail-generator/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/thumbnail-generator/"}] } }, - { "files": ["packages/@uppy/transloadit/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/transloadit/"}] } }, - { "files": ["packages/@uppy/tus/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/tus/"}] } }, - { "files": ["packages/@uppy/unsplash/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/unsplash/"}] } }, - { "files": ["packages/@uppy/url/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/url/"}] } }, - { "files": ["packages/@uppy/utils/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/utils/"}] } }, - { "files": ["packages/@uppy/vue/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/vue/"}] } }, - { "files": ["packages/@uppy/webcam/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/webcam/"}] } }, - { "files": ["packages/@uppy/xhr-upload/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/xhr-upload/"}] } }, - { "files": ["packages/@uppy/zoom/**.js"], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "packages/@uppy/zoom/"}] } }, - - - { "files": ["examples/aws-companion/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/aws-companion/"}] } }, - { "files": ["examples/aws-presigned-url/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/aws-presigned-url/"}] } }, - { "files": ["examples/bundled/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/bundled/"}] } }, - { "files": ["examples/cdn-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/cdn-example/"}] } }, - { "files": ["examples/custom-provider/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/custom-provider/"}] } }, - { "files": ["examples/dev/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/dev/"}] } }, - { "files": ["examples/digitalocean-spaces/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/digitalocean-spaces/"}] } }, - { "files": ["examples/multiple-instances/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/multiple-instances/"}] } }, - { "files": ["examples/node-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/node-xhr/"}] } }, - { "files": ["examples/php-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/php-xhr/"}] } }, - { "files": ["examples/python-xhr/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/python-xhr/"}] } }, - { "files": ["examples/react-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/react-example/"}] } }, - { "files": ["examples/react-native-expo/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/react-native-expo/"}] } }, - { "files": ["examples/redux/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/redux/"}] } }, - { "files": ["examples/svelte-example/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/svelte-example/"}] } }, - { "files": ["examples/transloadit/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/transloadit/"}] } }, - { "files": ["examples/transloadit-textarea/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/transloadit-textarea/"}] } }, - { "files": ["examples/uppy-with-companion/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/uppy-with-companion/"}] } }, - { "files": ["examples/vue/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/vue/"}] } }, - { "files": ["examples/xhr-bundle/**.js" ], "rules": { "import/no-extraneous-dependencies": ["warn", {"packageDir": "examples/xhr-bundle/"}] } } - ] -} diff --git a/bin/locale-packs.js b/bin/locale-packs.js index 0c6c1c7a0..325164a27 100644 --- a/bin/locale-packs.js +++ b/bin/locale-packs.js @@ -1,9 +1,10 @@ const glob = require('glob') -const Uppy = require('../packages/@uppy/core') +const { ESLint } = require('eslint') const chalk = require('chalk') const path = require('path') const stringifyObject = require('stringify-object') const fs = require('fs') +const Uppy = require('../packages/@uppy/core') const uppy = new Uppy() let localePack = {} @@ -14,7 +15,10 @@ console.warn('\n--> Make sure to run `npm run build:lib` for this locale script const mode = process.argv[2] if (mode === 'build') { - build() + build().catch((error) => { + console.error(error) + process.exit(1) + }) } else if (mode === 'test') { test() } else { @@ -177,7 +181,7 @@ function createTypeScriptLocale (plugin, pluginName) { fs.writeFileSync(localePath, localeTypes) } -function build () { +async function build () { const { plugins, sources } = buildPluginsList() for (const pluginName in plugins) { @@ -206,7 +210,16 @@ function build () { const finalLocale = template.replace('en_US.strings = {}', `en_US.strings = ${prettyLocale}`) const localePackagePath = path.join(__dirname, '..', 'packages', '@uppy', 'locales', 'src', 'en_US.js') - fs.writeFileSync(localePackagePath, finalLocale, 'utf-8') + + const linter = new ESLint({ + fix: true, + }) + + const [lintResult] = await linter.lintText(finalLocale, { + filePath: localePackagePath, + }) + fs.writeFileSync(localePackagePath, lintResult.output, 'utf8') + console.log(`✅ Written '${localePackagePath}'`) } diff --git a/examples/aws-companion/package.json b/examples/aws-companion/package.json index af6c5de22..20944976a 100644 --- a/examples/aws-companion/package.json +++ b/examples/aws-companion/package.json @@ -1,13 +1,12 @@ { "name": "@uppy-example/aws-companion", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:../../packages/@uppy/aws-s3", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/google-drive": "file:../../packages/@uppy/google-drive", + "@uppy/webcam": "file:../../packages/@uppy/webcam", "babelify": "^10.0.0", "body-parser": "^1.18.3", "budo": "^11.6.1", @@ -22,7 +21,7 @@ "scripts": { "copy": "cp ../../packages/uppy/dist/uppy.min.css .", "start": "npm-run-all --serial copy --parallel start:*", - "start:client": "budo main.js:bundle.js -- -t babelify -g aliasify", + "start:client": "budo main.js:bundle.js -- -t babelify", "start:server": "node server.js" } } diff --git a/examples/aws-presigned-url/package.json b/examples/aws-presigned-url/package.json index 1e2d46b90..f41c9a9fa 100644 --- a/examples/aws-presigned-url/package.json +++ b/examples/aws-presigned-url/package.json @@ -2,10 +2,13 @@ "name": "@uppy-example/aws-presigned-url", "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:../../packages/@uppy/aws-s3", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", "babelify": "^10.0.0", - "browserify": "^16.5.2", - "fs-write-stream-atomic": "^1.0.10" + "browserify": "^17.0.0", + "fs-write-stream-atomic": "^1.0.10", + "watchify": "^4.0.0" }, "private": true, "scripts": { diff --git a/examples/aws-presigned-url/serve.js b/examples/aws-presigned-url/serve.js index 6fc218f10..3997b77c0 100644 --- a/examples/aws-presigned-url/serve.js +++ b/examples/aws-presigned-url/serve.js @@ -4,7 +4,6 @@ const fs = require('fs') const createWriteStream = require('fs-write-stream-atomic') const browserify = require('browserify') const watchify = require('watchify') -const aliasify = require('aliasify') const babelify = require('babelify') const port = process.env.PORT || 8080 @@ -17,13 +16,7 @@ const b = browserify({ }) b.plugin(watchify) - b.transform(babelify) -b.transform(aliasify, { - aliases: { - '@uppy': path.join(__dirname, '../../packages/@uppy'), - }, -}) function bundle () { return b.bundle((err, data) => { diff --git a/examples/custom-provider/package.json b/examples/custom-provider/package.json index 9059d812c..b2854265f 100644 --- a/examples/custom-provider/package.json +++ b/examples/custom-provider/package.json @@ -2,12 +2,20 @@ "name": "@uppy-example/custom-provider", "dependencies": { "@babel/core": "^7.2.2", + "@uppy/companion-client": "file:../../packages/@uppy/companion-client", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/google-drive": "file:../../packages/@uppy/google-drive", + "@uppy/provider-views": "file:../../packages/@uppy/provider-views", + "@uppy/tus": "file:../../packages/@uppy/tus", "babelify": "^10.0.0", "body-parser": "^1.18.2", "budo": "^11.3.2", "express": "^4.16.2", "express-session": "^1.15.6", - "npm-run-all": "^4.1.2" + "npm-run-all": "^4.1.2", + "preact": "8.2.9", + "request": "2.88.2" }, "private": true, "scripts": { diff --git a/examples/dev/Dashboard.js b/examples/dev/Dashboard.js index 1127081f9..c11cb4da0 100644 --- a/examples/dev/Dashboard.js +++ b/examples/dev/Dashboard.js @@ -1,3 +1,5 @@ +// The @uppy/ dependencies are resolved using aliasify +/* eslint-disable import/no-extraneous-dependencies */ const Uppy = require('@uppy/core/src') const Dashboard = require('@uppy/dashboard/src') const Instagram = require('@uppy/instagram/src') @@ -19,6 +21,7 @@ const XHRUpload = require('@uppy/xhr-upload/src') const Transloadit = require('@uppy/transloadit/src') const Form = require('@uppy/form/src') const ImageEditor = require('@uppy/image-editor/src') +/* eslint-enable import/no-extraneous-dependencies */ // DEV CONFIG: pick an uploader diff --git a/examples/dev/DragDrop.js b/examples/dev/DragDrop.js index 79f013766..5855ee49d 100644 --- a/examples/dev/DragDrop.js +++ b/examples/dev/DragDrop.js @@ -1,8 +1,10 @@ +// The @uppy/ dependencies are resolved using aliasify +/* eslint-disable import/no-extraneous-dependencies */ const Uppy = require('@uppy/core/src') const Tus = require('@uppy/tus/src') - const DragDrop = require('@uppy/drag-drop/src') const ProgressBar = require('@uppy/progress-bar/src') +/* eslint-enable import/no-extraneous-dependencies */ module.exports = () => { const uppyDragDrop = new Uppy({ diff --git a/examples/digitalocean-spaces/package.json b/examples/digitalocean-spaces/package.json index dd2e5e2d0..0ff6570db 100644 --- a/examples/digitalocean-spaces/package.json +++ b/examples/digitalocean-spaces/package.json @@ -2,7 +2,9 @@ "name": "@uppy-example/digitalocean-spaces", "dependencies": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:../../packages/@uppy/aws-s3", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", "babelify": "^10.0.0", "body-parser": "^1.18.3", "budo": "^11.6.1", diff --git a/examples/digitalocean-spaces/server.js b/examples/digitalocean-spaces/server.js index 84994f5f5..2556f7423 100644 --- a/examples/digitalocean-spaces/server.js +++ b/examples/digitalocean-spaces/server.js @@ -56,13 +56,6 @@ budo(path.join(__dirname, 'main.js'), { port: PORT, middleware: app, browserify: { - transform: [ - 'babelify', - ['aliasify', { - aliases: { - '@uppy': path.join(__dirname, '../../packages/@uppy'), - }, - }], - ], + transform: ['babelify'], }, }) diff --git a/examples/multiple-instances/package.json b/examples/multiple-instances/package.json index e8127fdec..1e72b11c2 100644 --- a/examples/multiple-instances/package.json +++ b/examples/multiple-instances/package.json @@ -1,19 +1,16 @@ { "name": "@uppy-example/multiple-instances", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/golden-retriever": "file:../../packages/@uppy/golden-retriever", "babelify": "^10.0.0", "budo": "^11.6.1" }, "private": true, "scripts": { "css": "cp ../../packages/uppy/dist/uppy.min.css .", - "start": "npm run css && budo main.js:bundle.js -- -t babelify -g aliasify" + "start": "npm run css && budo main.js:bundle.js -- -t babelify" } } diff --git a/examples/node-xhr/main.js b/examples/node-xhr/main.js index 3f3a20faf..670a844cd 100644 --- a/examples/node-xhr/main.js +++ b/examples/node-xhr/main.js @@ -1,7 +1,7 @@ const Uppy = require('@uppy/core') const Webcam = require('@uppy/webcam') const Dashboard = require('@uppy/dashboard') -const xhr = require('@uppy/xhr-upload') +const XHRUpload = require('@uppy/xhr-upload') const uppy = new Uppy({ debug: true, @@ -14,6 +14,6 @@ uppy.use(Dashboard, { target: 'body', plugins: ['Webcam'], }) -uppy.use(xhr, { +uppy.use(XHRUpload, { endpoint: 'http://localhost:3020/upload', }) diff --git a/examples/node-xhr/package.json b/examples/node-xhr/package.json index deb0f99e6..fac044b29 100644 --- a/examples/node-xhr/package.json +++ b/examples/node-xhr/package.json @@ -2,21 +2,23 @@ "name": "@uppy-example/node-xhr", "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/webcam": "file:../../packages/@uppy/webcam", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/xhr-upload": "file:../../packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:../../packages/uppy" + "rimraf": "^2.6.2" }, "private": true, "scripts": { "copy": "cp ../../packages/uppy/dist/uppy.min.css .", "start": "npm-run-all --serial copy --parallel start:*", - "start:client": "budo main.js:bundle.js -- -t babelify -g aliasify", + "start:client": "budo main.js:bundle.js -- -t babelify", "start:server": "mkdir -p uploads && node server.js" } } diff --git a/examples/php-xhr/package.json b/examples/php-xhr/package.json index bd1d69ee0..6d1516dce 100644 --- a/examples/php-xhr/package.json +++ b/examples/php-xhr/package.json @@ -2,21 +2,23 @@ "name": "@uppy-example/php-xhr", "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/webcam": "file:../../packages/@uppy/webcam", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/xhr-upload": "file:../../packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:../../packages/uppy" + "rimraf": "^2.6.2" }, "private": true, "scripts": { "copy": "cp ../../packages/uppy/dist/uppy.min.css .", "start": "npm-run-all --serial copy --parallel start:*", - "start:client": "budo main.js:bundle.js -- -t babelify -g aliasify", + "start:client": "budo main.js:bundle.js -- -t babelify", "start:server": "mkdir -p uploads && php -S 0.0.0.0:3020" } } diff --git a/examples/python-xhr/package.json b/examples/python-xhr/package.json index f7ec4b398..009488038 100644 --- a/examples/python-xhr/package.json +++ b/examples/python-xhr/package.json @@ -2,21 +2,23 @@ "name": "@uppy-example/python-xhr", "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/webcam": "file:../../packages/@uppy/webcam", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/xhr-upload": "file:../../packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:../../packages/uppy" + "rimraf": "^2.6.2" }, "private": true, "scripts": { "copy": "cp ../../packages/uppy/dist/uppy.min.css .", "start": "npm-run-all --serial copy --parallel start:*", - "start:client": "budo main.js:bundle.js -- -t babelify -g aliasify", + "start:client": "budo main.js:bundle.js -- -t babelify", "start:server": "mkdir -p uploads && python server.py" } } diff --git a/examples/react-example/package.json b/examples/react-example/package.json index 3c55efbd1..00b110725 100644 --- a/examples/react-example/package.json +++ b/examples/react-example/package.json @@ -1,14 +1,8 @@ { "name": "@uppy-example/react-example", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.4.5", "@babel/preset-react": "^7.0.0", - "aliasify": "^2.1.0", "babelify": "^10.0.0", "budo": "^11.6.2", "react": "^16.8.6", @@ -17,6 +11,6 @@ "private": true, "scripts": { "css": "cp ../../packages/uppy/dist/uppy.min.css .", - "start": "npm run css && budo main.js:bundle.js -- -r react:react -r react-dom:react-dom -t babelify -g aliasify" + "start": "npm run css && budo main.js:bundle.js -- -r react:react -r react-dom:react-dom -t babelify" } } diff --git a/examples/redux/package.json b/examples/redux/package.json index 25141258d..a86541436 100644 --- a/examples/redux/package.json +++ b/examples/redux/package.json @@ -1,13 +1,11 @@ { "name": "@uppy-example/redux", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/store-redux": "file:../../packages/@uppy/store-redux", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/tus": "file:../../packages/@uppy/tus", "babelify": "^10.0.0", "budo": "^11.6.1", "redux": "^4.0.1", @@ -16,6 +14,6 @@ "private": true, "scripts": { "css": "cp ../../packages/uppy/dist/uppy.min.css .", - "start": "npm run css && budo main.js:bundle.js -- -t babelify -g aliasify" + "start": "npm run css && budo main.js:bundle.js -- -t babelify" } } diff --git a/examples/transloadit-textarea/package.json b/examples/transloadit-textarea/package.json index f3aa48333..ed83bd219 100644 --- a/examples/transloadit-textarea/package.json +++ b/examples/transloadit-textarea/package.json @@ -1,12 +1,7 @@ { "name": "@uppy-example/transloadit-textarea", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { - "aliasify": "^2.1.0", + "@uppy/robodog": "file:../../packages/@uppy/robodog", "browserify": "^16.5.2", "drag-drop": "^4.2.0", "ecstatic": "^4.1.4", @@ -14,6 +9,6 @@ }, "private": true, "scripts": { - "start": "browserify -g aliasify main.js > bundle.js && ecstatic" + "start": "browserify main.js -o bundle.js && ecstatic" } } diff --git a/examples/transloadit/package.json b/examples/transloadit/package.json index 0ab8cf6f8..c5d0fd282 100644 --- a/examples/transloadit/package.json +++ b/examples/transloadit/package.json @@ -1,13 +1,8 @@ { "name": "@uppy-example/transloadit", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/robodog": "file:../../packages/@uppy/robodog", "babelify": "^10.0.0", "budo": "^11.3.2", "express": "^4.16.4", @@ -16,6 +11,6 @@ "private": true, "scripts": { "css": "cp ../../packages/uppy/dist/uppy.min.css .", - "start": "npm run css && (node server & budo main.js:bundle.js -- -t babelify -g aliasify & wait)" + "start": "npm run css && (node server & budo main.js:bundle.js -- -t babelify & wait)" } } diff --git a/examples/xhr-bundle/package.json b/examples/xhr-bundle/package.json index 78f0675b7..8986cfffe 100644 --- a/examples/xhr-bundle/package.json +++ b/examples/xhr-bundle/package.json @@ -1,13 +1,10 @@ { "name": "@uppy-example/xhr-bundle", - "aliasify": { - "aliases": { - "@uppy": "../../packages/@uppy" - } - }, "dependencies": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/core": "file:../../packages/@uppy/core", + "@uppy/dashboard": "file:../../packages/@uppy/dashboard", + "@uppy/xhr-upload": "file:../../packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.6.1", "cors": "^2.8.5", @@ -19,7 +16,7 @@ "scripts": { "css": "cp ../../packages/uppy/dist/uppy.min.css .", "start": "run-p start:*", - "start:client": "npm run css && budo main.js:bundle.js -- -t babelify -g aliasify", + "start:client": "npm run css && budo main.js:bundle.js -- -t babelify", "start:server": "node serve.js" } } diff --git a/package-lock.json b/package-lock.json index 268fbec40..003f70b4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1195,6 +1195,7 @@ "version": "7.12.5", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "dev": true, "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -1246,6 +1247,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -1262,6 +1264,7 @@ "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, "requires": { "type-fest": "^0.8.1" } @@ -1270,6 +1273,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1278,12 +1282,14 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -6666,6 +6672,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, "requires": { "@nodelib/fs.stat": "2.0.3", "run-parallel": "^1.1.9" @@ -6674,7 +6681,8 @@ "@nodelib/fs.stat": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true } } }, @@ -6687,6 +6695,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.3", "fastq": "^1.6.0" @@ -6696,7 +6705,6 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.3.tgz", "integrity": "sha512-fdGoOQ3kQJh+hrilc0Plg50xSfaCKOeYN9t6dpJKXN9BxhhfquL0OzoQXg3spLYymL5rm29uPeI3KEXRaZQ9zg==", - "dev": true, "requires": { "@octokit/types": "^5.0.0" } @@ -6705,7 +6713,6 @@ "version": "6.0.9", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.9.tgz", "integrity": "sha512-3VPLbcCuqji4IFTclNUtGdp9v7g+nspWdiCUbK3+iPMjJCZ6LEhn1ts626bWLOn0GiDb6j+uqGvPpqLnY7pBgw==", - "dev": true, "requires": { "@octokit/types": "^5.0.0", "is-plain-object": "^5.0.0", @@ -6715,14 +6722,12 @@ "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" } } }, @@ -6736,7 +6741,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", - "dev": true, "requires": { "@octokit/types": "^2.0.1" }, @@ -6745,7 +6749,6 @@ "version": "2.16.2", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, "requires": { "@types/node": ">= 8" } @@ -6755,14 +6758,12 @@ "@octokit/plugin-request-log": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", - "dev": true + "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==" }, "@octokit/plugin-rest-endpoint-methods": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", - "dev": true, "requires": { "@octokit/types": "^2.0.1", "deprecation": "^2.3.1" @@ -6772,7 +6773,6 @@ "version": "2.16.2", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, "requires": { "@types/node": ">= 8" } @@ -6783,7 +6783,6 @@ "version": "5.4.10", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.10.tgz", "integrity": "sha512-egA49HkqEORVGDZGav1mh+VD+7uLgOxtn5oODj6guJk0HCy+YBSYapFkSLFgeYj3Fr18ZULKGURkjyhkAChylw==", - "dev": true, "requires": { "@octokit/endpoint": "^6.0.1", "@octokit/request-error": "^2.0.0", @@ -6799,7 +6798,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.3.tgz", "integrity": "sha512-GgD5z8Btm301i2zfvJLk/mkhvGCdjQ7wT8xF9ov5noQY8WbKZDH9cOBqXzoeKd1mLr1xH2FwbtGso135zGBgTA==", - "dev": true, "requires": { "@octokit/types": "^5.0.1", "deprecation": "^2.0.0", @@ -6809,20 +6807,17 @@ "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" } } }, @@ -6830,7 +6825,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", - "dev": true, "requires": { "@octokit/types": "^2.0.0", "deprecation": "^2.0.0", @@ -6841,7 +6835,6 @@ "version": "2.16.2", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, "requires": { "@types/node": ">= 8" } @@ -6852,7 +6845,6 @@ "version": "16.43.1", "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", - "dev": true, "requires": { "@octokit/auth-token": "^2.4.0", "@octokit/plugin-paginate-rest": "^1.1.1", @@ -6876,7 +6868,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", - "dev": true, "requires": { "@types/node": ">= 8" } @@ -7383,12 +7374,14 @@ "@types/json-schema": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true }, "@types/jsonwebtoken": { "version": "8.3.7", @@ -7457,8 +7450,7 @@ "@types/node": { "version": "12.12.27", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.27.tgz", - "integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==", - "dev": true + "integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -7666,6 +7658,7 @@ "version": "4.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.17.0.tgz", "integrity": "sha512-OJ+CeTliuW+UZ9qgULrnGpPQ1bhrZNFpfT/Bc0pzNeyZwMik7/ykJ0JHnQ7krHanFN9wcnPK89pwn84cRUmYjw==", + "dev": true, "requires": { "@typescript-eslint/types": "4.17.0", "@typescript-eslint/visitor-keys": "4.17.0" @@ -7674,7 +7667,8 @@ "@typescript-eslint/types": { "version": "4.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.17.0.tgz", - "integrity": "sha512-RN5z8qYpJ+kXwnLlyzZkiJwfW2AY458Bf8WqllkondQIcN2ZxQowAToGSd9BlAUZDB5Ea8I6mqL2quGYCLT+2g==" + "integrity": "sha512-RN5z8qYpJ+kXwnLlyzZkiJwfW2AY458Bf8WqllkondQIcN2ZxQowAToGSd9BlAUZDB5Ea8I6mqL2quGYCLT+2g==", + "dev": true }, "@typescript-eslint/typescript-estree": { "version": "2.34.0", @@ -7703,6 +7697,7 @@ "version": "4.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.17.0.tgz", "integrity": "sha512-WfuMN8mm5SSqXuAr9NM+fItJ0SVVphobWYkWOwQ1odsfC014Vdxk/92t4JwS1Q6fCA/ABfCKpa3AVtpUKTNKGQ==", + "dev": true, "requires": { "@typescript-eslint/types": "4.17.0", "eslint-visitor-keys": "^2.0.0" @@ -7711,7 +7706,8 @@ "eslint-visitor-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==" + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true } } }, @@ -7719,7 +7715,11 @@ "version": "file:examples/aws-companion", "requires": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:packages/@uppy/aws-s3", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/google-drive": "file:packages/@uppy/google-drive", + "@uppy/webcam": "file:packages/@uppy/webcam", "babelify": "^10.0.0", "body-parser": "^1.18.3", "budo": "^11.6.1", @@ -7760,10 +7760,13 @@ "version": "file:examples/aws-presigned-url", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:packages/@uppy/aws-s3", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", "babelify": "^10.0.0", - "browserify": "^16.5.2", - "fs-write-stream-atomic": "^1.0.10" + "browserify": "^17.0.0", + "fs-write-stream-atomic": "^1.0.10", + "watchify": "^4.0.0" }, "dependencies": { "@babel/core": { @@ -7788,6 +7791,322 @@ "semver": "^5.4.1", "source-map": "^0.5.0" } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "requires": { + "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "watchify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", + "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", + "requires": { + "anymatch": "^3.1.0", + "browserify": "^17.0.0", + "chokidar": "^3.4.0", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^4.0.2", + "xtend": "^4.0.2" + }, + "dependencies": { + "browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + } + } } } }, @@ -7837,12 +8156,20 @@ "version": "file:examples/custom-provider", "requires": { "@babel/core": "^7.2.2", + "@uppy/companion-client": "file:packages/@uppy/companion-client", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/google-drive": "file:packages/@uppy/google-drive", + "@uppy/provider-views": "file:packages/@uppy/provider-views", + "@uppy/tus": "file:packages/@uppy/tus", "babelify": "^10.0.0", "body-parser": "^1.18.2", "budo": "^11.3.2", "express": "^4.16.2", "express-session": "^1.15.6", - "npm-run-all": "^4.1.2" + "npm-run-all": "^4.1.2", + "preact": "8.2.9", + "request": "2.88.2" }, "dependencies": { "@babel/core": { @@ -7915,7 +8242,9 @@ "version": "file:examples/digitalocean-spaces", "requires": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/aws-s3": "file:packages/@uppy/aws-s3", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", "babelify": "^10.0.0", "body-parser": "^1.18.3", "budo": "^11.6.1", @@ -7952,7 +8281,9 @@ "version": "file:examples/multiple-instances", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/golden-retriever": "file:packages/@uppy/golden-retriever", "babelify": "^10.0.0", "budo": "^11.6.1" }, @@ -7986,15 +8317,17 @@ "version": "file:examples/node-xhr", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/webcam": "file:packages/@uppy/webcam", + "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:packages/uppy" + "rimraf": "^2.6.2" }, "dependencies": { "@babel/core": { @@ -8026,15 +8359,17 @@ "version": "file:examples/php-xhr", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/webcam": "file:packages/@uppy/webcam", + "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:packages/uppy" + "rimraf": "^2.6.2" }, "dependencies": { "@babel/core": { @@ -8066,15 +8401,17 @@ "version": "file:examples/python-xhr", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/webcam": "file:packages/@uppy/webcam", + "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.3.2", "cookie-parser": "^1.4.3", "cors": "^2.8.4", "formidable": "^1.2.1", "npm-run-all": "^4.1.3", - "rimraf": "^2.6.2", - "uppy": "file:packages/uppy" + "rimraf": "^2.6.2" }, "dependencies": { "@babel/core": { @@ -8107,7 +8444,6 @@ "requires": { "@babel/core": "^7.4.5", "@babel/preset-react": "^7.0.0", - "aliasify": "^2.1.0", "babelify": "^10.0.0", "budo": "^11.6.2", "react": "^16.8.6", @@ -8226,7 +8562,10 @@ "version": "file:examples/redux", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/store-redux": "file:packages/@uppy/store-redux", + "@uppy/tus": "file:packages/@uppy/tus", "babelify": "^10.0.0", "budo": "^11.6.1", "redux": "^4.0.1", @@ -8272,7 +8611,7 @@ "version": "file:examples/transloadit", "requires": { "@babel/core": "^7.4.4", - "aliasify": "^2.1.0", + "@uppy/robodog": "file:packages/@uppy/robodog", "babelify": "^10.0.0", "budo": "^11.3.2", "express": "^4.16.4", @@ -8307,7 +8646,7 @@ "@uppy-example/transloadit-textarea": { "version": "file:examples/transloadit-textarea", "requires": { - "aliasify": "^2.1.0", + "@uppy/robodog": "file:packages/@uppy/robodog", "browserify": "^16.5.2", "drag-drop": "^4.2.0", "ecstatic": "^4.1.4", @@ -8335,7 +8674,9 @@ "version": "file:examples/xhr-bundle", "requires": { "@babel/core": "^7.2.2", - "aliasify": "^2.1.0", + "@uppy/core": "file:packages/@uppy/core", + "@uppy/dashboard": "file:packages/@uppy/dashboard", + "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", "babelify": "^10.0.0", "budo": "^11.6.1", "cors": "^2.8.5", @@ -8738,7 +9079,11 @@ } }, "@uppy/react-native": { - "version": "file:packages/@uppy/react-native" + "version": "file:packages/@uppy/react-native", + "requires": { + "@uppy/instagram": "file:packages/@uppy/instagram", + "@uppy/url": "file:packages/@uppy/url" + } }, "@uppy/redux-dev-tools": { "version": "file:packages/@uppy/redux-dev-tools" @@ -8828,7 +9173,8 @@ "@uppy/tus": "file:packages/@uppy/tus", "@uppy/utils": "file:packages/@uppy/utils", "component-emitter": "^1.2.1", - "socket.io-client": "~2.2.0" + "socket.io-client": "~2.2.0", + "url-parse": "^1.4.7" }, "dependencies": { "debug": { @@ -10175,7 +10521,8 @@ "acorn-jsx": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true }, "acorn-node": { "version": "1.8.2", @@ -10524,6 +10871,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, "requires": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -10587,6 +10935,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0", @@ -10642,20 +10991,161 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" } }, "array.prototype.flatmap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", - "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", + "es-abstract": "^1.18.0-next.1", "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + } } }, "arraybuffer.slice": { @@ -10764,12 +11254,13 @@ "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -10820,8 +11311,7 @@ "atob-lite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", - "dev": true + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" }, "attempt-x": { "version": "2.1.2", @@ -10854,6 +11344,21 @@ } } }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "requires": { + "array-filter": "^1.0.0" + }, + "dependencies": { + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + } + } + }, "aws-sdk": { "version": "2.787.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.787.0.tgz", @@ -10937,7 +11442,8 @@ "axe-core": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", - "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==" + "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==", + "dev": true }, "axios": { "version": "0.19.0", @@ -10979,7 +11485,8 @@ "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", @@ -12021,8 +12528,7 @@ "before-after-hook": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", - "dev": true + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" }, "better-assert": { "version": "1.0.2", @@ -13057,8 +13563,7 @@ "btoa-lite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" }, "budo": { "version": "11.6.4", @@ -14420,7 +14925,8 @@ "confusing-browser-globals": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "dev": true }, "connect": { "version": "3.7.0", @@ -14528,7 +15034,8 @@ "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true }, "content-disposition": { "version": "0.5.3", @@ -15415,7 +15922,8 @@ "core-js-pure": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.7.0.tgz", - "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==" + "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -16138,7 +16646,8 @@ "damerau-levenshtein": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true }, "dargs": { "version": "4.1.0", @@ -16630,8 +17139,7 @@ "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "deps-sort": { "version": "2.0.1", @@ -16849,6 +17357,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -17004,8 +17513,7 @@ "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "duplexer2": { "version": "0.1.4", @@ -17213,7 +17721,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -17351,6 +17858,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, "requires": { "ansi-colors": "^4.1.1" }, @@ -17358,7 +17866,8 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true } } }, @@ -17656,28 +18165,29 @@ } }, "eslint": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz", - "integrity": "sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", + "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.2.0", - "esquery": "^1.2.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -17685,7 +18195,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -17694,11 +18204,20 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -17750,22 +18269,57 @@ "which": "^2.0.1" } }, - "glob-parent": { + "eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -17775,9 +18329,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -17794,6 +18348,21 @@ "type-check": "~0.4.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -17827,10 +18396,13 @@ "dev": true }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "shebang-command": { "version": "2.0.0", @@ -17875,9 +18447,9 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "which": { @@ -17888,6 +18460,12 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -17895,6 +18473,7 @@ "version": "18.2.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", + "dev": true, "requires": { "eslint-config-airbnb-base": "^14.2.1", "object.assign": "^4.1.2", @@ -17905,28 +18484,18 @@ "version": "14.2.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "dev": true, "requires": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", "object.entries": "^1.1.2" } }, - "eslint-config-standard": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", - "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", - "dev": true - }, - "eslint-config-standard-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz", - "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==", - "dev": true - }, "eslint-config-transloadit": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/eslint-config-transloadit/-/eslint-config-transloadit-1.1.4.tgz", "integrity": "sha512-d9vg+9jY6evyEFjnNCgl8MIAI3gXo6H3IG7i+oqYNOzIdJR0i+yMyJhYLB+B31chAgyK4q1W3d8gYGxXdVOesQ==", + "dev": true, "requires": { "@babel/core": "^7.13.10", "@babel/eslint-parser": "7.13.10", @@ -17947,6 +18516,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, "requires": { "@babel/highlight": "^7.12.13" } @@ -17954,12 +18524,14 @@ "@babel/compat-data": { "version": "7.13.11", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.11.tgz", - "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==" + "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==", + "dev": true }, "@babel/core": { "version": "7.13.10", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.9", @@ -17983,6 +18555,7 @@ "version": "7.13.10", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz", "integrity": "sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg==", + "dev": true, "requires": { "eslint-scope": "5.1.0", "eslint-visitor-keys": "^1.3.0", @@ -17993,6 +18566,7 @@ "version": "7.13.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, "requires": { "@babel/types": "^7.13.0", "jsesc": "^2.5.1", @@ -18003,6 +18577,7 @@ "version": "7.13.10", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "dev": true, "requires": { "@babel/compat-data": "^7.13.8", "@babel/helper-validator-option": "^7.12.17", @@ -18014,6 +18589,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", @@ -18024,6 +18600,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, "requires": { "@babel/types": "^7.12.13" } @@ -18032,6 +18609,7 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "dev": true, "requires": { "@babel/types": "^7.13.0" } @@ -18040,6 +18618,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "dev": true, "requires": { "@babel/types": "^7.12.13" } @@ -18048,6 +18627,7 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.12.13", "@babel/helper-replace-supers": "^7.13.0", @@ -18064,6 +18644,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, "requires": { "@babel/types": "^7.12.13" } @@ -18072,6 +18653,7 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.13.0", "@babel/helper-optimise-call-expression": "^7.12.13", @@ -18083,6 +18665,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "dev": true, "requires": { "@babel/types": "^7.12.13" } @@ -18091,6 +18674,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, "requires": { "@babel/types": "^7.12.13" } @@ -18098,17 +18682,20 @@ "@babel/helper-validator-identifier": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true }, "@babel/helper-validator-option": { "version": "7.12.17", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true }, "@babel/helpers": { "version": "7.13.10", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "dev": true, "requires": { "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", @@ -18119,6 +18706,7 @@ "version": "7.13.10", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -18128,12 +18716,14 @@ "@babel/parser": { "version": "7.13.11", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.11.tgz", - "integrity": "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==" + "integrity": "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==", + "dev": true }, "@babel/template": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@babel/parser": "^7.12.13", @@ -18144,6 +18734,7 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.0", @@ -18160,6 +18751,7 @@ "version": "7.13.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -18169,12 +18761,14 @@ "@nodelib/fs.stat": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true }, "@typescript-eslint/experimental-utils": { "version": "4.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.17.0.tgz", "integrity": "sha512-ZR2NIUbnIBj+LGqCFGQ9yk2EBQrpVVFOh9/Kd0Lm6gLpSAcCuLLe5lUCibKGCqyH9HPwYC0GIJce2O1i8VYmWA==", + "dev": true, "requires": { "@types/json-schema": "^7.0.3", "@typescript-eslint/scope-manager": "4.17.0", @@ -18188,6 +18782,7 @@ "version": "4.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.17.0.tgz", "integrity": "sha512-lRhSFIZKUEPPWpWfwuZBH9trYIEJSI0vYsrxbvVvNyIUDoKWaklOAelsSkeh3E2VBSZiNe9BZ4E5tYBZbUczVQ==", + "dev": true, "requires": { "@typescript-eslint/types": "4.17.0", "@typescript-eslint/visitor-keys": "4.17.0", @@ -18202,6 +18797,7 @@ "version": "7.3.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -18211,12 +18807,14 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -18224,17 +18822,20 @@ "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -18243,6 +18844,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -18250,12 +18852,14 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -18266,6 +18870,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "requires": { "path-type": "^4.0.0" } @@ -18273,12 +18878,14 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "eslint": { "version": "7.22.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "dev": true, "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.0", @@ -18323,6 +18930,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -18331,6 +18939,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18340,6 +18949,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -18348,12 +18958,14 @@ "eslint-visitor-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==" + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true }, "globals": { "version": "13.6.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -18361,12 +18973,14 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "semver": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -18377,6 +18991,7 @@ "version": "2.22.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, "requires": { "array-includes": "^3.1.1", "array.prototype.flat": "^1.2.3", @@ -18397,6 +19012,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -18405,6 +19021,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -18416,6 +19033,7 @@ "version": "24.3.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.1.tgz", "integrity": "sha512-RQt59rfMSHyvedImT72iaf8JcvCcR4P7Uq499dALtjY8mrCjbwWrFi1UceG4sid2wVIeDi+0tjxXZ8CZEVO7Zw==", + "dev": true, "requires": { "@typescript-eslint/experimental-utils": "^4.0.1" } @@ -18423,12 +19041,14 @@ "eslint-plugin-promise": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", - "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==" + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", + "dev": true }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -18439,6 +19059,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, "requires": { "estraverse": "^5.1.0" }, @@ -18446,7 +19067,8 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true } } }, @@ -18454,6 +19076,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fakefile/-/fakefile-1.0.0.tgz", "integrity": "sha512-2FRMEwkz/qNlQ6AvAj0KzdCcvzrhVM9XtuwOWmBuYkpv18l08b14nwfEw7wV5PlP2pLl+Vci+oY8yZfxOTlr6w==", + "dev": true, "requires": { "fs-extra": "0.26.5" } @@ -18462,6 +19085,7 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -18475,6 +19099,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -18483,6 +19108,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -18491,6 +19117,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -18499,12 +19126,14 @@ "flatted": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==" + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true }, "fs-extra": { "version": "0.26.5", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.5.tgz", "integrity": "sha1-U6x0Znygg/0twXEsgTA5yjLWmn8=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -18517,6 +19146,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -18527,6 +19157,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -18535,6 +19166,7 @@ "version": "11.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -18547,19 +19179,22 @@ "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true } } }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -18568,27 +19203,32 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -18598,6 +19238,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -18606,6 +19247,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, "requires": { "braces": "^3.0.1", "picomatch": "^2.0.5" @@ -18614,12 +19256,14 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -18632,27 +19276,32 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -18660,12 +19309,14 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -18673,17 +19324,20 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -18694,6 +19348,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18704,6 +19359,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -18712,6 +19368,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -18720,6 +19377,7 @@ "version": "6.0.7", "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, "requires": { "ajv": "^7.0.2", "lodash": "^4.17.20", @@ -18731,6 +19389,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -18744,6 +19403,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -18752,6 +19412,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "requires": { "prelude-ls": "^1.2.1" } @@ -18759,17 +19420,20 @@ "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true }, "typescript": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==" + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "dev": true }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -18777,7 +19441,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -18815,6 +19480,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, "requires": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -18824,6 +19490,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -18831,7 +19498,8 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -18839,6 +19507,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, "requires": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -18848,6 +19517,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -18855,12 +19525,14 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, "requires": { "find-up": "^2.1.0" } @@ -18956,15 +19628,16 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, "requires": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" } }, "eslint-plugin-import": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", - "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -18972,7 +19645,7 @@ "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.3", + "eslint-import-resolver-node": "^0.3.4", "eslint-module-utils": "^2.6.0", "has": "^1.0.3", "minimatch": "^3.0.4", @@ -19051,6 +19724,7 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "dev": true, "requires": { "@babel/runtime": "^7.11.2", "aria-query": "^4.2.2", @@ -19069,6 +19743,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -19077,12 +19752,14 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "es-abstract": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -19105,7 +19782,8 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true } } }, @@ -19113,6 +19791,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -19122,17 +19801,20 @@ "is-callable": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true }, "is-regex": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-symbols": "^1.0.1" @@ -19142,6 +19824,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", + "dev": true, "requires": { "array-includes": "^3.1.2", "object.assign": "^4.1.2" @@ -19151,6 +19834,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -19164,12 +19848,14 @@ "object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -19179,6 +19865,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -19190,6 +19877,7 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, "requires": { "eslint-plugin-es": "^3.0.0", "eslint-utils": "^2.0.0", @@ -19202,19 +19890,22 @@ "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "eslint-plugin-prefer-import": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-import/-/eslint-plugin-prefer-import-0.0.1.tgz", - "integrity": "sha1-DfThF9opEJ71YdNV7Bn0HfCtpvY=" + "integrity": "sha1-DfThF9opEJ71YdNV7Bn0HfCtpvY=", + "dev": true }, "eslint-plugin-promise": { "version": "4.2.1", @@ -19223,21 +19914,21 @@ "dev": true }, "eslint-plugin-react": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.6.tgz", - "integrity": "sha512-kidMTE5HAEBSLu23CUDvj8dc3LdBU0ri1scwHBZjI41oDv4tjsWZKU7MQccFzH1QYPYhsnTF2ovh7JlcIcmxgg==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", + "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", "dev": true, "requires": { "array-includes": "^3.1.1", "array.prototype.flatmap": "^1.2.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.4.1", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", "object.entries": "^1.1.2", "object.fromentries": "^2.0.2", "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.17.0", + "resolve": "^1.18.1", "string.prototype.matchall": "^4.0.2" }, "dependencies": { @@ -19255,12 +19946,7 @@ "eslint-plugin-react-hooks": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==" - }, - "eslint-plugin-standard": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", - "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", "dev": true }, "eslint-rule-composer": { @@ -19273,6 +19959,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -19282,6 +19969,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" } @@ -19289,12 +19977,14 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true }, "espree": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.2.0", @@ -19313,9 +20003,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -19333,6 +20023,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -19340,7 +20031,8 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true } } }, @@ -20735,6 +21427,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "dev": true, "requires": { "reusify": "^1.0.4" } @@ -20842,12 +21535,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-loader": { @@ -21052,20 +21745,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "dependencies": { "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -21074,9 +21766,9 @@ } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "flatten": { @@ -21268,7 +21960,8 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "functions-have-names": { "version": "1.2.1", @@ -22178,7 +22871,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, "requires": { "duplexer": "^0.1.1", "pify": "^4.0.1" @@ -22187,8 +22879,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, @@ -23981,7 +24672,8 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true }, "ignore-by-default": { "version": "1.0.1", @@ -24283,14 +24975,27 @@ } }, "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dev": true, "requires": { - "es-abstract": "^1.17.0-next.1", + "get-intrinsic": "^1.1.0", "has": "^1.0.3", - "side-channel": "^1.0.2" + "side-channel": "^1.0.4" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + } } }, "invariant": { @@ -24407,8 +25112,7 @@ "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" }, "is-arrayish": { "version": "0.2.1", @@ -24604,6 +25308,11 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, + "is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==" + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -24935,6 +25644,111 @@ "text-extensions": "^1.0.0" } }, + "is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -28518,7 +29332,8 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -28586,13 +29401,129 @@ } }, "jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + }, + "dependencies": { + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } }, "jwa": { @@ -28653,12 +29584,14 @@ "language-subtag-registry": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true }, "language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, "requires": { "language-subtag-registry": "~0.3.2" } @@ -29789,8 +30722,7 @@ "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, "lodash.includes": { "version": "4.3.0", @@ -29914,8 +30846,7 @@ "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, "lodash.sortby": { "version": "4.7.0", @@ -30173,8 +31104,7 @@ "macos-release": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", - "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", - "dev": true + "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==" }, "magic-string": { "version": "0.22.5", @@ -32113,7 +33043,8 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "ncp": { "version": "2.0.0", @@ -33024,6 +33955,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5", @@ -33087,8 +34019,7 @@ "octokit-pagination-methods": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" }, "on-finished": { "version": "2.3.0", @@ -33323,7 +34254,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "dev": true, "requires": { "macos-release": "^2.2.0", "windows-release": "^3.1.0" @@ -33827,6 +34757,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" }, @@ -33834,7 +34765,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true } } }, @@ -35878,7 +36810,8 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "promise": { "version": "7.3.1", @@ -36052,7 +36985,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -37061,7 +37993,8 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true }, "regexpu-core": { "version": "4.7.1", @@ -37707,7 +38640,8 @@ "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "require-main-filename": { "version": "1.0.1", @@ -37859,7 +38793,8 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, "rfdc": { "version": "1.1.4", @@ -38669,34 +39604,32 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, "side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { - "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "has-symbols": "^1.0.1" } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true } } }, @@ -39295,20 +40228,44 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true } } @@ -40272,17 +41229,131 @@ } }, "string.prototype.matchall": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", - "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", + "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", + "es-abstract": "^1.18.0-next.2", "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } }, "string.prototype.padend": { @@ -41011,47 +42082,71 @@ } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { + "ajv": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -41735,7 +42830,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, "requires": { "nopt": "~1.0.10" }, @@ -41744,7 +42838,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, "requires": { "abbrev": "1" } @@ -41950,6 +43043,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -41961,6 +43055,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "requires": { "minimist": "^1.2.0" } @@ -42175,6 +43270,7 @@ "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -42989,7 +44085,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "dev": true, "requires": { "os-name": "^3.1.0" } @@ -43170,14 +44265,18 @@ "requires": { "@babel/core": "^7.4.4", "@goto-bus-stop/hexo-renderer-postcss": "^2.0.0", + "@octokit/rest": "16.43.1", + "@transloadit/prettier-bytes": "0.0.7", "aliasify": "^2.1.0", "autoprefixer": "^9.5.1", "babelify": "^10.0.0", + "browser-resolve": "2.0.0", "browserify": "^16.5.2", "chalk": "2.4.2", "cssnano": "^4.1.10", "drag-drop": "^4.2.0", "glob": "^7.1.2", + "gzip-size": "5.1.1", "he": "^1.2.0", "hexo": "4.2.1", "hexo-browsersync": "^0.3.0", @@ -43204,6 +44303,7 @@ "postcss-inline-svg": "^3.1.1", "prismjs": "^1.17.1", "sass": "^1.29.0", + "touch": "3.1.0", "watchify": "^3.11.0" }, "dependencies": { @@ -44396,6 +45496,146 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } + } + } + } + }, "white-space-x": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-4.1.1.tgz", @@ -44434,7 +45674,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", - "dev": true, "requires": { "execa": "^1.0.0" }, @@ -44443,7 +45682,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -44458,7 +45696,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, "requires": { "pump": "^3.0.0" } @@ -44525,15 +45762,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", diff --git a/package.json b/package.json index 81bd4a1e3..19f34e501 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,6 @@ "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", "@uppy/zoom": "file:packages/@uppy/zoom", "deep-freeze": "0.0.1", - "eslint-config-transloadit": "^1.1.4", "remark-lint-uppy": "file:private/remark-lint-uppy", "uppy": "file:packages/uppy", "uppy.io": "file:website" @@ -98,10 +97,8 @@ "@goto-bus-stop/envify": "5.0.0", "@jamen/lorem": "0.2.0", "@lerna/run": "^3.21.0", - "@octokit/rest": "16.43.1", "@rollup/plugin-node-resolve": "^11.0.1", "@size-limit/preset-big-lib": "4.5.6", - "@transloadit/prettier-bytes": "0.0.7", "@tsconfig/svelte": "^1.0.10", "@types/aws-serverless-express": "3.3.3", "@types/compression": "1.7.0", @@ -131,7 +128,6 @@ "babel-plugin-inline-package-json": "2.0.0", "babelify": "10.0.0", "brake": "1.0.1", - "browser-resolve": "2.0.0", "browser-sync": "2.26.7", "browserify": "16.5.2", "chai": "4.2.0", @@ -142,18 +138,16 @@ "enzyme": "3.11.0", "enzyme-adapter-react-16": "1.15.2", "es6-promise": "4.2.8", - "eslint": "7.6.0", - "eslint-config-standard": "14.1.1", - "eslint-config-standard-jsx": "8.1.0", + "eslint": "7.22.0", + "eslint-config-transloadit": "^1.1.4", "eslint-plugin-compat": "3.8.0", - "eslint-plugin-import": "2.22.0", + "eslint-plugin-import": "2.22.1", "eslint-plugin-jest": "23.20.0", "eslint-plugin-jsdoc": "30.2.2", "eslint-plugin-node": "11.1.0", "eslint-plugin-prefer-import": "0.0.1", "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.20.6", - "eslint-plugin-standard": "4.0.1", + "eslint-plugin-react": "7.22.0", "events.once": "2.0.2", "execa": "4.0.0", "exorcist": "1.0.1", @@ -162,7 +156,6 @@ "github-contributors-list": "1.2.4", "glob": "7.1.6", "globby": "9.2.0", - "gzip-size": "5.1.1", "http-proxy": "1.18.1", "isomorphic-fetch": "2.2.1", "jest": "26.4.0", @@ -208,7 +201,6 @@ "tar": "4.4.13", "temp-write": "3.4.0", "tinyify": "3.0.0", - "touch": "3.1.0", "tsd": "^0.11.0", "tsify": "5.0.1", "tus-node-server": "0.3.2", diff --git a/packages/@uppy/companion/.eslintrc.json b/packages/@uppy/companion/.eslintrc.json deleted file mode 100644 index 5e5fe4a63..000000000 --- a/packages/@uppy/companion/.eslintrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "standard", - "env": { - "browser": false, - "node": true - }, - "root": true, - "rules": { - "eqeqeq": ["error", "smart"] - } -} diff --git a/packages/@uppy/companion/src/companion.js b/packages/@uppy/companion/src/companion.js index 58eb83d16..0b46638a1 100644 --- a/packages/@uppy/companion/src/companion.js +++ b/packages/@uppy/companion/src/companion.js @@ -3,6 +3,9 @@ const express = require('express') const ms = require('ms') // @ts-ignore const Grant = require('grant').express() +const merge = require('lodash/merge') +const cookieParser = require('cookie-parser') +const interceptor = require('express-interceptor') const grantConfig = require('./config/grant')() const providerManager = require('./server/provider') const controllers = require('./server/controllers') @@ -10,12 +13,9 @@ const s3 = require('./server/controllers/s3') const getS3Client = require('./server/s3-client') const url = require('./server/controllers/url') const emitter = require('./server/emitter') -const merge = require('lodash/merge') const redis = require('./server/redis') -const cookieParser = require('cookie-parser') const { getURLBuilder } = require('./server/helpers/utils') const jobs = require('./server/jobs') -const interceptor = require('express-interceptor') const logger = require('./server/logger') const middlewares = require('./server/middlewares') const { ProviderApiError, ProviderAuthError } = require('./server/provider/error') @@ -24,7 +24,7 @@ const { getCredentialsOverrideMiddleware } = require('./server/provider/credenti const defaultOptions = { server: { protocol: 'http', - path: '' + path: '', }, providerOptions: { s3: { @@ -33,10 +33,10 @@ const defaultOptions = { conditions: [], useAccelerateEndpoint: false, getKey: (req, filename) => filename, - expires: ms('5 minutes') / 1000 - } + expires: ms('5 minutes') / 1000, + }, }, - debug: true + debug: true, } // make the errors available publicly for custom providers @@ -57,7 +57,7 @@ module.exports.app = (options = {}) => { const searchProviders = providerManager.getSearchProviders() providerManager.addProviderOptions(options, grantConfig) - const customProviders = options.customProviders + const { customProviders } = options if (customProviders) { providerManager.addCustomProviders(customProviders, providers, grantConfig) } @@ -88,13 +88,13 @@ module.exports.app = (options = {}) => { 'uppy-auth-token', 'uppy-versions', 'uppy-credentials-params', - res.get('Access-Control-Allow-Headers') + res.get('Access-Control-Allow-Headers'), ].join(',') ) const exposedHeaders = [ // exposed so it can be accessed for our custom uppy preflight - 'Access-Control-Allow-Headers' + 'Access-Control-Allow-Headers', ] if (options.sendSelfEndpoint) { @@ -159,12 +159,12 @@ const interceptGrantErrorResponse = interceptor((req, res) => { send([ 'Companion was unable to complete the OAuth process :(', 'Error: User session is missing or the Provider was misconfigured', - reqHint + reqHint, ].join('\n')) } else { send(body) } - } + }, } }) @@ -176,7 +176,7 @@ const getOptionsMiddleware = (options) => { /** * @param {object} req * @param {object} res - * @param {function} next + * @param {Function} next */ const middleware = (req, res, next) => { const versionFromQuery = req.query.uppyVersions ? decodeURIComponent(req.query.uppyVersions) : null @@ -185,7 +185,7 @@ const getOptionsMiddleware = (options) => { s3Client: getS3Client(options), authToken: req.header('uppy-auth-token') || req.query.uppyAuthToken, clientVersion: req.header('uppy-versions') || versionFromQuery || '1.0.0', - buildURL: getURLBuilder(options) + buildURL: getURLBuilder(options), } logger.info(`uppy client version ${req.companion.clientVersion}`, 'companion.client.version') @@ -198,6 +198,7 @@ const getOptionsMiddleware = (options) => { /** * Informs the logger about all provider secrets that should be masked * if they are found in a log message + * * @param {object} companionOptions */ const maskLogger = (companionOptions) => { @@ -233,7 +234,7 @@ const validateConfig = (companionOptions) => { const unspecified = [] mandatoryOptions.forEach((i) => { - const value = i.split('.').reduce((prev, curr) => prev ? prev[curr] : undefined, companionOptions) + const value = i.split('.').reduce((prev, curr) => (prev ? prev[curr] : undefined), companionOptions) if (!value) unspecified.push(`"${i}"`) }) diff --git a/packages/@uppy/companion/src/config/grant.js b/packages/@uppy/companion/src/config/grant.js index fea5b7804..c322b4004 100644 --- a/packages/@uppy/companion/src/config/grant.js +++ b/packages/@uppy/companion/src/config/grant.js @@ -5,42 +5,42 @@ module.exports = () => { google: { transport: 'session', scope: [ - 'https://www.googleapis.com/auth/drive.readonly' + 'https://www.googleapis.com/auth/drive.readonly', ], - callback: '/drive/callback' + callback: '/drive/callback', }, dropbox: { transport: 'session', authorize_url: 'https://www.dropbox.com/oauth2/authorize', access_url: 'https://api.dropbox.com/oauth2/token', - callback: '/dropbox/callback' + callback: '/dropbox/callback', }, box: { transport: 'session', authorize_url: 'https://account.box.com/api/oauth2/authorize', access_url: 'https://api.box.com/oauth2/token', - callback: '/box/callback' + callback: '/box/callback', }, instagram: { transport: 'session', - callback: '/instagram/callback' + callback: '/instagram/callback', }, facebook: { transport: 'session', scope: ['email', 'user_photos'], - callback: '/facebook/callback' + callback: '/facebook/callback', }, // for onedrive microsoft: { transport: 'session', scope: ['files.read.all', 'offline_access', 'User.Read'], - callback: '/onedrive/callback' + callback: '/onedrive/callback', }, zoom: { transport: 'session', authorize_url: 'https://zoom.us/oauth/authorize', access_url: 'https://zoom.us/oauth/token', - callback: '/zoom/callback' - } + callback: '/zoom/callback', + }, } } diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index 110799728..b5c8fb7d6 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -5,8 +5,8 @@ const uuid = require('uuid') const isObject = require('isobject') const validator = require('validator') const request = require('request') -const emitter = require('./emitter') const serializeError = require('serialize-error') +const emitter = require('./emitter') const { jsonStringify, hasMatch } = require('./helpers/utils') const logger = require('./logger') const headerSanitize = require('./header-blacklist') @@ -16,7 +16,7 @@ const DEFAULT_FIELD_NAME = 'files[]' const PROTOCOLS = Object.freeze({ multipart: 'multipart', s3Multipart: 's3-multipart', - tus: 'tus' + tus: 'tus', }) class Uploader { @@ -93,6 +93,7 @@ class Uploader { * returns a substring of the token. Used as traceId for logging * we avoid using the entire token because this is meant to be a short term * access token between uppy client and companion websocket + * * @param {string} token the token to Shorten * @returns {string} */ @@ -118,9 +119,9 @@ class Uploader { storage: redis.client(), s3: req.companion.s3Client ? { client: req.companion.s3Client, - options: req.companion.options.providerOptions.s3 + options: req.companion.options.providerOptions.s3, } : null, - headers: req.body.headers + headers: req.body.headers, } } @@ -221,7 +222,7 @@ class Uploader { /** * - * @param {function} callback + * @param {Function} callback */ onSocketReady (callback) { emitter().once(`connection:${this.token}`, () => callback()) @@ -320,6 +321,7 @@ class Uploader { * This method emits upload progress but also creates an "upload progress" illusion * for the waiting period while only download is happening. Hence, it combines both * download and upload into an upload progress. + * * @see emitProgress * @param {number=} bytesUploaded the bytes actually Uploaded so far */ @@ -364,7 +366,7 @@ class Uploader { const dataToEmit = { action: 'progress', - payload: { progress: formatPercentage, bytesUploaded, bytesTotal } + payload: { progress: formatPercentage, bytesUploaded, bytesTotal }, } this.saveState(dataToEmit) @@ -384,7 +386,7 @@ class Uploader { emitSuccess (url, extraData = {}) { const emitData = { action: 'success', - payload: Object.assign(extraData, { complete: true, url }) + payload: Object.assign(extraData, { complete: true, url }), } this.saveState(emitData) emitter().emit(this.token, emitData) @@ -401,7 +403,7 @@ class Uploader { delete serializedErr.stack const dataToEmit = { action: 'error', - payload: Object.assign(extraData, { error: serializedErr }) + payload: Object.assign(extraData, { error: serializedErr }), } this.saveState(dataToEmit) emitter().emit(this.token, dataToEmit) @@ -422,14 +424,13 @@ class Uploader { uploadSize: this.bytesWritten, headers: headerSanitize(this.options.headers), addRequestId: true, - metadata: Object.assign( - { - // file name and type as required by the tusd tus server - // https://github.com/tus/tusd/blob/5b376141903c1fd64480c06dde3dfe61d191e53d/unrouted_handler.go#L614-L646 - filename: this.uploadFileName, - filetype: this.options.metadata.type - }, this.options.metadata - ), + metadata: { + // file name and type as required by the tusd tus server + // https://github.com/tus/tusd/blob/5b376141903c1fd64480c06dde3dfe61d191e53d/unrouted_handler.go#L614-L646 + filename: this.uploadFileName, + filetype: this.options.metadata.type, + ...this.options.metadata, + }, /** * * @param {Error} error @@ -457,7 +458,7 @@ class Uploader { onSuccess () { uploader.emitSuccess(uploader.tus.url) uploader.cleanUp() - } + }, }) if (!this._paused) { @@ -480,19 +481,17 @@ class Uploader { const reqOptions = { url: this.options.endpoint, headers, encoding: null } const httpRequest = request[httpMethod] if (this.options.useFormData) { - reqOptions.formData = Object.assign( - {}, - this.options.metadata, - { - [this.options.fieldname]: { - value: file, - options: { - filename: this.uploadFileName, - contentType: this.options.metadata.type - } - } - } - ) + reqOptions.formData = { + + ...this.options.metadata, + [this.options.fieldname]: { + value: file, + options: { + filename: this.uploadFileName, + contentType: this.options.metadata.type, + }, + }, + } httpRequest(reqOptions, (error, response, body) => { this._onMultipartComplete(error, response, body, bytesUploaded) @@ -512,7 +511,7 @@ class Uploader { this.emitError(error) return } - const headers = response.headers + const { headers } = response // remove browser forbidden headers delete headers['set-cookie'] delete headers['set-cookie2'] @@ -521,7 +520,7 @@ class Uploader { responseText: body.toString(), status: response.statusCode, statusText: response.statusMessage, - headers + headers, } if (response.statusCode >= 400) { @@ -565,7 +564,7 @@ class Uploader { ACL: options.acl, ContentType: this.options.metadata.type, Metadata: this.options.metadata, - Body: stream + Body: stream, }) this.s3Upload = upload @@ -584,9 +583,9 @@ class Uploader { response: { responseText: JSON.stringify(data), headers: { - 'content-type': 'application/json' - } - } + 'content-type': 'application/json', + }, + }, }) } this.cleanUp() diff --git a/packages/@uppy/companion/src/server/controllers/callback.js b/packages/@uppy/companion/src/server/controllers/callback.js index f74876f10..66e72f04f 100644 --- a/packages/@uppy/companion/src/server/controllers/callback.js +++ b/packages/@uppy/companion/src/server/controllers/callback.js @@ -8,10 +8,10 @@ const logger = require('../logger') * * @param {object} req * @param {object} res - * @param {function} next + * @param {Function} next */ module.exports = function callback (req, res, next) { - const providerName = req.params.providerName + const { providerName } = req.params if (!req.companion.providerTokens) { req.companion.providerTokens = {} diff --git a/packages/@uppy/companion/src/server/controllers/connect.js b/packages/@uppy/companion/src/server/controllers/connect.js index 6c3de3031..8cef7e67c 100644 --- a/packages/@uppy/companion/src/server/controllers/connect.js +++ b/packages/@uppy/companion/src/server/controllers/connect.js @@ -1,6 +1,6 @@ +const atob = require('atob') const oAuthState = require('../helpers/oauth-state') // @ts-ignore -const atob = require('atob') /** * initializes the oAuth flow for a provider. @@ -9,7 +9,7 @@ const atob = require('atob') * @param {object} res */ module.exports = function connect (req, res) { - const secret = req.companion.options.secret + const { secret } = req.companion.options let state = oAuthState.generateState(secret) if (req.query.state) { // todo change this query from state to "origin" diff --git a/packages/@uppy/companion/src/server/controllers/get.js b/packages/@uppy/companion/src/server/controllers/get.js index 8cfba6bda..41dbb24c6 100644 --- a/packages/@uppy/companion/src/server/controllers/get.js +++ b/packages/@uppy/companion/src/server/controllers/get.js @@ -3,9 +3,9 @@ const logger = require('../logger') const { errorToResponse } = require('../provider/error') function get (req, res, next) { - const id = req.params.id + const { id } = req.params const token = req.companion.providerToken - const provider = req.companion.provider + const { provider } = req.companion // get the file size before proceeding provider.size({ id, token, query: req.query }, (err, size) => { diff --git a/packages/@uppy/companion/src/server/controllers/index.js b/packages/@uppy/companion/src/server/controllers/index.js index c2ce17973..522bda57e 100644 --- a/packages/@uppy/companion/src/server/controllers/index.js +++ b/packages/@uppy/companion/src/server/controllers/index.js @@ -8,5 +8,5 @@ module.exports = { logout: require('./logout'), connect: require('./connect'), preauth: require('./preauth'), - redirect: require('./oauth-redirect') + redirect: require('./oauth-redirect'), } diff --git a/packages/@uppy/companion/src/server/controllers/logout.js b/packages/@uppy/companion/src/server/controllers/logout.js index 6ab62f23a..7a67b68dc 100644 --- a/packages/@uppy/companion/src/server/controllers/logout.js +++ b/packages/@uppy/companion/src/server/controllers/logout.js @@ -13,8 +13,8 @@ function logout (req, res, next) { req.session.grant.dynamic = null } } - const providerName = req.params.providerName - const companion = req.companion + const { providerName } = req.params + const { companion } = req const token = companion.providerTokens ? companion.providerTokens[providerName] : null if (token) { companion.provider.logout({ token, companion }, (err, data) => { @@ -29,7 +29,7 @@ function logout (req, res, next) { delete companion.providerTokens[providerName] tokenService.removeFromCookies(res, companion.options, companion.provider.authProvider) cleanSession() - res.json(Object.assign({ ok: true }, data)) + res.json({ ok: true, ...data }) }) } else { cleanSession() diff --git a/packages/@uppy/companion/src/server/controllers/oauth-redirect.js b/packages/@uppy/companion/src/server/controllers/oauth-redirect.js index fc8f9600b..8e6d3a0cb 100644 --- a/packages/@uppy/companion/src/server/controllers/oauth-redirect.js +++ b/packages/@uppy/companion/src/server/controllers/oauth-redirect.js @@ -10,13 +10,13 @@ const oAuthState = require('../helpers/oauth-state') */ module.exports = function oauthRedirect (req, res) { const params = qs.stringify(req.query) - const authProvider = req.companion.provider.authProvider + const { authProvider } = req.companion.provider if (!req.companion.options.server.oauthDomain) { return res.redirect(`/connect/${authProvider}/callback?${params}`) } const dynamic = (req.session.grant || {}).dynamic || {} - const state = dynamic.state + const { state } = dynamic if (!state) { return res.status(400).send('Cannot find state in session') } diff --git a/packages/@uppy/companion/src/server/controllers/s3.js b/packages/@uppy/companion/src/server/controllers/s3.js index e819ec1a7..2439a945b 100644 --- a/packages/@uppy/companion/src/server/controllers/s3.js +++ b/packages/@uppy/companion/src/server/controllers/s3.js @@ -39,9 +39,9 @@ module.exports = function s3 (config) { const fields = { acl: config.acl, - key: key, + key, success_action_status: '201', - 'content-type': req.query.type + 'content-type': req.query.type, } Object.keys(metadata).forEach((key) => { @@ -52,7 +52,7 @@ module.exports = function s3 (config) { Bucket: config.bucket, Expires: config.expires, Fields: fields, - Conditions: config.conditions + Conditions: config.conditions, }, (err, data) => { if (err) { next(err) @@ -61,7 +61,7 @@ module.exports = function s3 (config) { res.json({ method: 'post', url: data.url, - fields: data.fields + fields: data.fields, }) }) } @@ -97,7 +97,7 @@ module.exports = function s3 (config) { Key: key, ACL: config.acl, ContentType: type, - Metadata: metadata + Metadata: metadata, }, (err, data) => { if (err) { next(err) @@ -105,7 +105,7 @@ module.exports = function s3 (config) { } res.json({ key: data.Key, - uploadId: data.UploadId + uploadId: data.UploadId, }) }) } @@ -141,7 +141,7 @@ module.exports = function s3 (config) { Bucket: config.bucket, Key: key, UploadId: uploadId, - PartNumberMarker: startAt + PartNumberMarker: startAt, }, (err, data) => { if (err) { next(err) @@ -194,7 +194,7 @@ module.exports = function s3 (config) { UploadId: uploadId, PartNumber: partNumber, Body: '', - Expires: config.expires + Expires: config.expires, }, (err, url) => { if (err) { next(err) @@ -227,7 +227,7 @@ module.exports = function s3 (config) { client.abortMultipartUpload({ Bucket: config.bucket, Key: key, - UploadId: uploadId + UploadId: uploadId, }, (err, data) => { if (err) { next(err) @@ -268,15 +268,15 @@ module.exports = function s3 (config) { Key: key, UploadId: uploadId, MultipartUpload: { - Parts: parts - } + Parts: parts, + }, }, (err, data) => { if (err) { next(err) return } res.json({ - location: data.Location + location: data.Location, }) }) } diff --git a/packages/@uppy/companion/src/server/controllers/send-token.js b/packages/@uppy/companion/src/server/controllers/send-token.js index 3f62aceda..f5fb0b62c 100644 --- a/packages/@uppy/companion/src/server/controllers/send-token.js +++ b/packages/@uppy/companion/src/server/controllers/send-token.js @@ -2,8 +2,8 @@ * * sends auth token to uppy client */ -const tokenService = require('../helpers/jwt') const { URL } = require('url') +const tokenService = require('../helpers/jwt') const { hasMatch, sanitizeHtml } = require('../helpers/utils') const oAuthState = require('../helpers/oauth-state') const versionCmp = require('../helpers/version') @@ -12,7 +12,7 @@ const versionCmp = require('../helpers/version') * * @param {object} req * @param {object} res - * @param {function} next + * @param {Function} next */ module.exports = function sendToken (req, res, next) { const uppyAuthToken = req.companion.authToken @@ -22,7 +22,7 @@ module.exports = function sendToken (req, res, next) { } const dynamic = (req.session.grant || {}).dynamic || {} - const state = dynamic.state + const { state } = dynamic if (state) { const origin = oAuthState.getFromState(state, 'origin', req.companion.options.secret) const clientVersion = oAuthState.getFromState( diff --git a/packages/@uppy/companion/src/server/controllers/thumbnail.js b/packages/@uppy/companion/src/server/controllers/thumbnail.js index c8d346f14..b033f777d 100644 --- a/packages/@uppy/companion/src/server/controllers/thumbnail.js +++ b/packages/@uppy/companion/src/server/controllers/thumbnail.js @@ -4,10 +4,10 @@ * @param {object} res */ function thumbnail (req, res, next) { - const providerName = req.params.providerName - const id = req.params.id + const { providerName } = req.params + const { id } = req.params const token = req.companion.providerTokens[providerName] - const provider = req.companion.provider + const { provider } = req.companion provider.thumbnail({ id, token }, (err, response) => { if (err) { diff --git a/packages/@uppy/companion/src/server/controllers/url.js b/packages/@uppy/companion/src/server/controllers/url.js index e2fe15f1a..186610dd2 100644 --- a/packages/@uppy/companion/src/server/controllers/url.js +++ b/packages/@uppy/companion/src/server/controllers/url.js @@ -1,8 +1,8 @@ const router = require('express').Router const request = require('request') const { URL } = require('url') -const Uploader = require('../Uploader') const validator = require('validator') +const Uploader = require('../Uploader') const reqUtil = require('../helpers/request') const logger = require('../logger') @@ -20,7 +20,7 @@ module.exports = () => { */ const meta = (req, res) => { logger.debug('URL file import handler running', null, req.id) - const debug = req.companion.options.debug + const { debug } = req.companion.options if (!validateURL(req.body.url, debug)) { logger.debug('Invalid request body detected. Exiting url meta handler.', null, req.id) return res.status(400).json({ error: 'Invalid request body' }) @@ -44,7 +44,7 @@ const meta = (req, res) => { */ const get = (req, res) => { logger.debug('URL file import handler running', null, req.id) - const debug = req.companion.options.debug + const { debug } = req.companion.options if (!validateURL(req.body.url, debug)) { logger.debug('Invalid request body detected. Exiting url import handler.', null, req.id) return res.status(400).json({ error: 'Invalid request body' }) @@ -79,6 +79,7 @@ const get = (req, res) => { /** * Validates that the download URL is secure + * * @param {string} url the url to validate * @param {boolean} debug whether the server is running in debug mode */ @@ -90,7 +91,7 @@ const validateURL = (url, debug) => { const validURLOpts = { protocols: ['http', 'https'], require_protocol: true, - require_tld: !debug + require_tld: !debug, } if (!validator.isURL(url, validURLOpts)) { return false @@ -119,7 +120,7 @@ const downloadURL = (url, onDataChunk, blockLocalIPs, traceId) => { uri: url, method: 'GET', followRedirect: reqUtil.getRedirectEvaluator(url, blockLocalIPs), - agentClass: reqUtil.getProtectedHttpAgent((new URL(url)).protocol, blockLocalIPs) + agentClass: reqUtil.getProtectedHttpAgent((new URL(url)).protocol, blockLocalIPs), } request(opts) diff --git a/packages/@uppy/companion/src/server/emitter/default-emitter.js b/packages/@uppy/companion/src/server/emitter/default-emitter.js index 709943bbe..26bd360ea 100644 --- a/packages/@uppy/companion/src/server/emitter/default-emitter.js +++ b/packages/@uppy/companion/src/server/emitter/default-emitter.js @@ -1,4 +1,4 @@ -const EventEmitter = require('events').EventEmitter +const { EventEmitter } = require('events') module.exports = () => { return new EventEmitter() diff --git a/packages/@uppy/companion/src/server/emitter/index.js b/packages/@uppy/companion/src/server/emitter/index.js index 064331b33..f1ce7d611 100644 --- a/packages/@uppy/companion/src/server/emitter/index.js +++ b/packages/@uppy/companion/src/server/emitter/index.js @@ -1,5 +1,6 @@ const nodeEmitter = require('./default-emitter') const redisEmitter = require('./redis-emitter') + let emitter /** diff --git a/packages/@uppy/companion/src/server/emitter/redis-emitter.js b/packages/@uppy/companion/src/server/emitter/redis-emitter.js index 81bef094f..4e867d518 100644 --- a/packages/@uppy/companion/src/server/emitter/redis-emitter.js +++ b/packages/@uppy/companion/src/server/emitter/redis-emitter.js @@ -18,8 +18,9 @@ class RedisEmitter extends NRP { /** * Add a one-off event listener + * * @param {string} eventName name of the event - * @param {function} handler the handler of the event + * @param {Function} handler the handler of the event */ once (eventName, handler) { const removeListener = this.on(eventName, (message) => { @@ -30,6 +31,7 @@ class RedisEmitter extends NRP { /** * Announce the occurence of an event + * * @param {string} eventName name of the event * @param {object} message the message to pass along with the event */ @@ -39,8 +41,9 @@ class RedisEmitter extends NRP { /** * Remove an event listener + * * @param {string} eventName name of the event - * @param {function} handler the handler of the event to remove + * @param {Function} handler the handler of the event to remove */ removeListener (eventName, handler) { this.receiver.removeListener(eventName, handler) @@ -49,6 +52,7 @@ class RedisEmitter extends NRP { /** * Remove all listeners of an event + * * @param {string} eventName name of the event */ removeAllListeners (eventName) { diff --git a/packages/@uppy/companion/src/server/header-blacklist.js b/packages/@uppy/companion/src/server/header-blacklist.js index 501e854ee..1c7ac5a7a 100644 --- a/packages/@uppy/companion/src/server/header-blacklist.js +++ b/packages/@uppy/companion/src/server/header-blacklist.js @@ -24,7 +24,7 @@ const forbiddenNames = [ 'trailer', 'transfer-encoding', 'upgrade', - 'via' + 'via', ] /** @@ -34,14 +34,15 @@ const forbiddenRegex = [/^proxy-.*$/, /^sec-.*$/] /** * Check if the header in parameter is a forbidden header. + * * @param {string} header Header to check - * @return True if header is forbidden, false otherwise. + * @returns True if header is forbidden, false otherwise. */ const isForbiddenHeader = (header) => { const headerLower = header.toLowerCase() - const forbidden = - forbiddenNames.indexOf(headerLower) >= 0 || - forbiddenRegex.findIndex((regex) => regex.test(headerLower)) >= 0 + const forbidden + = forbiddenNames.indexOf(headerLower) >= 0 + || forbiddenRegex.findIndex((regex) => regex.test(headerLower)) >= 0 if (forbidden) { logger.warn(`Header forbidden: ${header}`, 'header.forbidden') @@ -54,7 +55,7 @@ module.exports = (headers) => { return {} } - const headersCloned = Object.assign({}, headers) + const headersCloned = { ...headers } Object.keys(headersCloned).forEach((header) => { if (isForbiddenHeader(header)) { delete headersCloned[header] diff --git a/packages/@uppy/companion/src/server/helpers/jwt.js b/packages/@uppy/companion/src/server/helpers/jwt.js index 6027ece6f..bde70edbf 100644 --- a/packages/@uppy/companion/src/server/helpers/jwt.js +++ b/packages/@uppy/companion/src/server/helpers/jwt.js @@ -52,7 +52,7 @@ module.exports.verifyEncryptedToken = (token, secret) => { const addToCookies = (res, token, companionOptions, authProvider, prefix) => { const cookieOptions = { maxAge: 1000 * EXPIRY, // would expire after one day (24 hrs) - httpOnly: true + httpOnly: true, } if (companionOptions.cookieDomain) { @@ -82,7 +82,7 @@ module.exports.addToCookies = (res, token, companionOptions, authProvider) => { module.exports.removeFromCookies = (res, companionOptions, authProvider) => { const cookieOptions = { maxAge: 1000 * EXPIRY, // would expire after one day (24 hrs) - httpOnly: true + httpOnly: true, } if (companionOptions.cookieDomain) { diff --git a/packages/@uppy/companion/src/server/helpers/oauth-state.js b/packages/@uppy/companion/src/server/helpers/oauth-state.js index b7e0b0e56..73231c63f 100644 --- a/packages/@uppy/companion/src/server/helpers/oauth-state.js +++ b/packages/@uppy/companion/src/server/helpers/oauth-state.js @@ -1,7 +1,7 @@ -const { encrypt, decrypt } = require('./utils') const crypto = require('crypto') // @ts-ignore const atob = require('atob') +const { encrypt, decrypt } = require('./utils') module.exports.generateState = (secret) => { const state = {} diff --git a/packages/@uppy/companion/src/server/helpers/request.js b/packages/@uppy/companion/src/server/helpers/request.js index 61961e8eb..983cbae50 100644 --- a/packages/@uppy/companion/src/server/helpers/request.js +++ b/packages/@uppy/companion/src/server/helpers/request.js @@ -5,6 +5,7 @@ const dns = require('dns') const ipAddress = require('ip-address') const request = require('request') const logger = require('../logger') + const FORBIDDEN_IP_ADDRESS = 'Forbidden IP address' function isIPAddress (address) { @@ -79,7 +80,7 @@ function isPrivateIP (ipAddress) { module.exports.FORBIDDEN_IP_ADDRESS = FORBIDDEN_IP_ADDRESS module.exports.getRedirectEvaluator = (requestURL, blockPrivateIPs) => { - const protocol = (new URL(requestURL)).protocol + const { protocol } = new URL(requestURL) return (res) => { if (!blockPrivateIPs) { return true @@ -89,7 +90,8 @@ module.exports.getRedirectEvaluator = (requestURL, blockPrivateIPs) => { const shouldRedirect = redirectURL ? new URL(redirectURL).protocol === protocol : false if (!shouldRedirect) { logger.info( - `blocking redirect from ${requestURL} to ${redirectURL}`, 'redirect.protection') + `blocking redirect from ${requestURL} to ${redirectURL}`, 'redirect.protection' + ) } return shouldRedirect @@ -98,6 +100,7 @@ module.exports.getRedirectEvaluator = (requestURL, blockPrivateIPs) => { /** * Returns http Agent that will prevent requests to private IPs (to preven SSRF) + * * @param {string} protocol http or http: or https: or https protocol needed for the request * @param {boolean} blockPrivateIPs if set to false, this protection will be disabled */ @@ -157,7 +160,7 @@ class HttpsAgent extends https.Agent { * * @param {string} url * @param {boolean=} blockLocalIPs - * @return {Promise<{type: string, size: number}>} + * @returns {Promise<{type: string, size: number}>} */ exports.getURLMeta = (url, blockLocalIPs = false) => { return new Promise((resolve, reject) => { @@ -165,7 +168,7 @@ exports.getURLMeta = (url, blockLocalIPs = false) => { uri: url, method: 'HEAD', followRedirect: exports.getRedirectEvaluator(url, blockLocalIPs), - agentClass: exports.getProtectedHttpAgent((new URL(url)).protocol, blockLocalIPs) + agentClass: exports.getProtectedHttpAgent((new URL(url)).protocol, blockLocalIPs), } request(opts, (err, response) => { @@ -177,7 +180,7 @@ exports.getURLMeta = (url, blockLocalIPs = false) => { } else { resolve({ type: response.headers['content-type'], - size: parseInt(response.headers['content-length']) + size: parseInt(response.headers['content-length']), }) } }) diff --git a/packages/@uppy/companion/src/server/helpers/utils.js b/packages/@uppy/companion/src/server/helpers/utils.js index f6aab3b3e..f47f61765 100644 --- a/packages/@uppy/companion/src/server/helpers/utils.js +++ b/packages/@uppy/companion/src/server/helpers/utils.js @@ -88,7 +88,7 @@ function createSecret (secret) { /** * Create an initialization vector for AES256. * - * @return {Buffer} + * @returns {Buffer} */ function createIv () { return crypto.randomBytes(16) @@ -108,7 +108,7 @@ function urlDecode (encoded) { * * @param {string} input * @param {string|Buffer} secret - * @return {string} Ciphertext as a hex string, prefixed with 32 hex characters containing the iv. + * @returns {string} Ciphertext as a hex string, prefixed with 32 hex characters containing the iv. */ module.exports.encrypt = (input, secret) => { const iv = createIv() @@ -124,7 +124,7 @@ module.exports.encrypt = (input, secret) => { * * @param {string} encrypted * @param {string|Buffer} secret - * @return {string} Decrypted value. + * @returns {string} Decrypted value. */ module.exports.decrypt = (encrypted, secret) => { // Need at least 32 chars for the iv diff --git a/packages/@uppy/companion/src/server/helpers/version.js b/packages/@uppy/companion/src/server/helpers/version.js index 01ad1ad6e..d74df2039 100644 --- a/packages/@uppy/companion/src/server/helpers/version.js +++ b/packages/@uppy/companion/src/server/helpers/version.js @@ -2,6 +2,7 @@ const semver = require('semver') /** * checks if a version is greater than or equal to + * * @param {string} v1 the LHS version * @param {string} v2 the RHS version * @returns {boolean} diff --git a/packages/@uppy/companion/src/server/jobs.js b/packages/@uppy/companion/src/server/jobs.js index 71f3e1eb0..f35b0cb8c 100644 --- a/packages/@uppy/companion/src/server/jobs.js +++ b/packages/@uppy/companion/src/server/jobs.js @@ -1,11 +1,12 @@ const schedule = require('node-schedule') -const { FILE_NAME_PREFIX } = require('./Uploader') const fs = require('fs') const path = require('path') +const { FILE_NAME_PREFIX } = require('./Uploader') const logger = require('./logger') /** * Runs a function every 24 hours, to clean up stale, upload related files. + * * @param {string} dirPath path to the directory which you want to clean */ exports.startCleanUpJob = (dirPath) => { diff --git a/packages/@uppy/companion/src/server/logger.js b/packages/@uppy/companion/src/server/logger.js index 8ba32713c..c5c036457 100644 --- a/packages/@uppy/companion/src/server/logger.js +++ b/packages/@uppy/companion/src/server/logger.js @@ -5,6 +5,7 @@ const valuesToMask = [] /** * Adds a list of strings that should be masked by the logger. * This function can only be called once through out the life of the server. + * * @param {Array} maskables a list of strings to be masked */ exports.setMaskables = (maskables) => { @@ -17,6 +18,7 @@ exports.setMaskables = (maskables) => { /** * INFO level log + * * @param {string} msg the message to log * @param {string=} tag a unique tag to easily search for this message * @param {string=} traceId a unique id to easily trace logs tied to a request @@ -27,6 +29,7 @@ exports.info = (msg, tag, traceId) => { /** * WARN level log + * * @param {string} msg the message to log * @param {string=} tag a unique tag to easily search for this message * @param {string=} traceId a unique id to easily trace logs tied to a request @@ -38,6 +41,7 @@ exports.warn = (msg, tag, traceId) => { /** * ERROR level log + * * @param {string | Error} msg the message to log * @param {string=} tag a unique tag to easily search for this message * @param {string=} traceId a unique id to easily trace logs tied to a request @@ -50,6 +54,7 @@ exports.error = (msg, tag, traceId, shouldLogStackTrace) => { /** * DEBUG level log + * * @param {string} msg the message to log * @param {string=} tag a unique tag to easily search for this message * @param {string=} traceId a unique id to easily trace logs tied to a request @@ -64,10 +69,11 @@ exports.debug = (msg, tag, traceId) => { /** * message log + * * @param {string | Error} msg the message to log * @param {string} tag a unique tag to easily search for this message * @param {string} level error | info | debug - * @param {function=} color function to display the log in appropriate color + * @param {Function=} color function to display the log in appropriate color * @param {string=} id a unique id to easily trace logs tied to a request * @param {boolean=} shouldLogStackTrace when set to true, errors will be logged with their stack trace */ @@ -98,6 +104,7 @@ const log = (msg, tag, level, id, color, shouldLogStackTrace) => { /** * Mask the secret content of a message + * * @param {string} msg the message whose content should be masked * @returns {string} */ diff --git a/packages/@uppy/companion/src/server/middlewares.js b/packages/@uppy/companion/src/server/middlewares.js index df62f1604..993f032b5 100644 --- a/packages/@uppy/companion/src/server/middlewares.js +++ b/packages/@uppy/companion/src/server/middlewares.js @@ -1,6 +1,6 @@ +const uniq = require('lodash/uniq') const tokenService = require('./helpers/jwt') const logger = require('./logger') -const uniq = require('lodash/uniq') exports.hasSessionAndProvider = (req, res, next) => { if (!req.session || !req.body) { @@ -31,7 +31,7 @@ exports.verifyToken = (req, res, next) => { logger.info('cannot auth token', 'token.verify.unset', req.id) return res.sendStatus(401) } - const providerName = req.params.providerName + const { providerName } = req.params const { err, payload } = tokenService.verifyEncryptedToken(token, req.companion.options.secret) if (err || !payload[providerName]) { if (err) { @@ -46,7 +46,7 @@ exports.verifyToken = (req, res, next) => { // does not fail if token is invalid exports.gentleVerifyToken = (req, res, next) => { - const providerName = req.params.providerName + const { providerName } = req.params if (req.companion.authToken) { const { err, payload } = tokenService.verifyEncryptedToken(req.companion.authToken, req.companion.options.secret) if (!err && payload[providerName]) { diff --git a/packages/@uppy/companion/src/server/provider/Provider.js b/packages/@uppy/companion/src/server/provider/Provider.js index d50533444..640eb6cc2 100644 --- a/packages/@uppy/companion/src/server/provider/Provider.js +++ b/packages/@uppy/companion/src/server/provider/Provider.js @@ -20,8 +20,9 @@ class Provider { /** * list the files and folders in the provider account + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ list (options, cb) { throw new Error('method not implemented') @@ -29,8 +30,9 @@ class Provider { /** * download a certain file from the provider account + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ download (options, cb) { throw new Error('method not implemented') @@ -38,8 +40,9 @@ class Provider { /** * return a thumbnail for a provider file + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ thumbnail (options, cb) { throw new Error('method not implemented') @@ -47,8 +50,9 @@ class Provider { /** * get the size of a certain file in the provider account + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ size (options, cb) { throw new Error('method not implemented') @@ -56,8 +60,9 @@ class Provider { /** * handle deauthorization notification from oauth providers + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ deauthorizationCallback (options, cb) { // @todo consider doing something like cb(new NotImplementedError()) instead diff --git a/packages/@uppy/companion/src/server/provider/SearchProvider.js b/packages/@uppy/companion/src/server/provider/SearchProvider.js index cc09b7a89..dc6540ad4 100644 --- a/packages/@uppy/companion/src/server/provider/SearchProvider.js +++ b/packages/@uppy/companion/src/server/provider/SearchProvider.js @@ -4,8 +4,9 @@ class SearchProvider { /** * list the files available based on the search query + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ list (options, cb) { throw new Error('method not implemented') @@ -13,8 +14,9 @@ class SearchProvider { /** * download a certain file from the provider files + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ download (options, cb) { throw new Error('method not implemented') @@ -22,8 +24,9 @@ class SearchProvider { /** * get the size of a certain file in the provider files + * * @param {object} options - * @param {function} cb + * @param {Function} cb */ size (options, cb) { throw new Error('method not implemented') diff --git a/packages/@uppy/companion/src/server/provider/box/index.js b/packages/@uppy/companion/src/server/provider/box/index.js index b62783991..2d5b4c7c7 100644 --- a/packages/@uppy/companion/src/server/provider/box/index.js +++ b/packages/@uppy/companion/src/server/provider/box/index.js @@ -15,8 +15,11 @@ const BOX_THUMBNAIL_SIZE = 256 class Box extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = Box.authProvider - this.client = purest(options) + this.authProvider = Box.authProvider + this.client = purest({ + ...options, + provider: Box.authProvider, + }) // needed for the thumbnails fetched via companion this.needsCookieAuth = true } @@ -36,7 +39,7 @@ class Box extends Provider { * Lists files and folders from Box API * * @param {object} options - * @param {function} done + * @param {Function} done */ list ({ directory, token, query, companion }, done) { const rootFolderID = '0' @@ -51,16 +54,15 @@ class Box extends Provider { err = this._error(err, resp) logger.error(err, 'provider.box.list.error') return done(err) - } else { - this._userInfo({ token }, (err, infoResp) => { - if (err || infoResp.statusCode !== 200) { - err = this._error(err, infoResp) - logger.error(err, 'provider.token.user.error') - return done(err) - } - done(null, this.adaptData(body, infoResp.body.login, companion)) - }) } + this._userInfo({ token }, (err, infoResp) => { + if (err || infoResp.statusCode !== 200) { + err = this._error(err, infoResp) + logger.error(err, 'provider.token.user.error') + return done(err) + } + done(null, this.adaptData(body, infoResp.body.login, companion)) + }) }) } @@ -141,8 +143,8 @@ class Box extends Provider { formData: { client_id: key, client_secret: secret, - token - } + token, + }, }) .auth(token) .request((err, resp) => { @@ -168,7 +170,7 @@ class Box extends Provider { thumbnail: companion.buildURL(adapter.getItemThumbnailUrl(item), true), requestPath: adapter.getItemRequestPath(item), modifiedDate: adapter.getItemModifiedDate(item), - size: adapter.getItemSize(item) + size: adapter.getItemSize(item), }) }) diff --git a/packages/@uppy/companion/src/server/provider/credentials.js b/packages/@uppy/companion/src/server/provider/credentials.js index 9e1033136..dfb63eb55 100644 --- a/packages/@uppy/companion/src/server/provider/credentials.js +++ b/packages/@uppy/companion/src/server/provider/credentials.js @@ -49,8 +49,8 @@ exports.getCredentialsOverrideMiddleware = (providers, companionOptions) => { res.locals.grant = { dynamic: { key: credentials.key, - secret: credentials.secret - } + secret: credentials.secret, + }, } if (credentials.redirect_uri) { @@ -105,9 +105,8 @@ const fetchProviderKeys = (providerName, companionOptions, credentialRequestPara if (providerConfig && providerConfig.credentialsURL && credentialRequestParams) { return fetchKeys(providerConfig.credentialsURL, providerName, credentialRequestParams) - } else { - return Promise.resolve(providerConfig) } + return Promise.resolve(providerConfig) } const fetchKeys = (url, providerName, credentialRequestParams) => { @@ -115,9 +114,9 @@ const fetchKeys = (url, providerName, credentialRequestParams) => { const options = { body: { provider: providerName, - parameters: credentialRequestParams + parameters: credentialRequestParams, }, - json: true + json: true, } request.post(url, options, (err, resp, body) => { if (err) { diff --git a/packages/@uppy/companion/src/server/provider/drive/adapter.js b/packages/@uppy/companion/src/server/provider/drive/adapter.js index d4221ebfb..1d500acac 100644 --- a/packages/@uppy/companion/src/server/provider/drive/adapter.js +++ b/packages/@uppy/companion/src/server/provider/drive/adapter.js @@ -45,7 +45,7 @@ exports.getItemSubList = (item) => { 'application/vnd.google-apps.drawing', 'application/vnd.google-apps.script', 'application/vnd.google-apps.spreadsheet', - 'application/vnd.google-apps.presentation' + 'application/vnd.google-apps.presentation', ] return item.files.filter((i) => { @@ -59,7 +59,7 @@ exports.getItemName = (item) => { 'application/vnd.google-apps.drawing': '.png', 'application/vnd.google-apps.script': '.json', 'application/vnd.google-apps.spreadsheet': '.xlsx', - 'application/vnd.google-apps.presentation': '.ppt' + 'application/vnd.google-apps.presentation': '.ppt', } const extension = extensionMaps[item.mimeType] @@ -101,9 +101,7 @@ exports.getNextPagePath = (data, currentQuery, currentPath) => { if (!data.nextPageToken) { return null } - const query = Object.assign({}, currentQuery, { - cursor: data.nextPageToken - }) + const query = { ...currentQuery, cursor: data.nextPageToken } return `${currentPath}?${querystring.stringify(query)}` } @@ -117,7 +115,7 @@ exports.getGsuiteExportType = (mimeType) => { 'application/vnd.google-apps.drawing': 'image/png', 'application/vnd.google-apps.script': 'application/vnd.google-apps.script+json', 'application/vnd.google-apps.spreadsheet': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/vnd.google-apps.presentation': 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + 'application/vnd.google-apps.presentation': 'application/vnd.openxmlformats-officedocument.presentationml.presentation', } return typeMaps[mimeType] || 'application/pdf' diff --git a/packages/@uppy/companion/src/server/provider/drive/index.js b/packages/@uppy/companion/src/server/provider/drive/index.js index 7cc742763..64d2f3f00 100644 --- a/packages/@uppy/companion/src/server/provider/drive/index.js +++ b/packages/@uppy/companion/src/server/provider/drive/index.js @@ -6,6 +6,7 @@ const purest = require('purest')({ request }) const logger = require('../../logger') const adapter = require('./adapter') const { ProviderApiError, ProviderAuthError } = require('../error') + const DRIVE_FILE_FIELDS = 'kind,id,imageMediaMetadata,name,mimeType,ownedByMe,permissions(role,emailAddress),size,modifiedTime,iconLink,thumbnailLink,teamDriveId,videoMediaMetadata' const DRIVE_FILES_FIELDS = `kind,nextPageToken,incompleteSearch,files(${DRIVE_FILE_FIELDS})` // using wildcard to get all 'drive' fields because specifying fields seems no to work for the /drives endpoint @@ -17,11 +18,14 @@ const SHARED_DRIVE_FIELDS = '*' class Drive extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = Drive.authProvider - options.alias = 'drive' - options.version = 'v3' + this.authProvider = Drive.authProvider - this.client = purest(options) + this.client = purest({ + ...options, + provider: Drive.authProvider, + alias: 'drive', + version: 'v3', + }) } static get authProvider () { @@ -57,7 +61,7 @@ class Drive extends Provider { pageToken: query.cursor, q: `'${directory}' in parents and trashed=false`, includeItemsFromAllDrives: true, - supportsAllDrives: true + supportsAllDrives: true, } const filesPromise = new Promise((resolve, reject) => { @@ -232,8 +236,8 @@ class Drive extends Provider { imageDateTime: adapter.getImageDate(item), videoHeight: adapter.getVideoHeight(item), videoWidth: adapter.getVideoWidth(item), - videoDurationMillis: adapter.getVideoDurationMillis(item) - } + videoDurationMillis: adapter.getVideoDurationMillis(item), + }, }) const items = adapter.getItemSubList(res) @@ -244,7 +248,7 @@ class Drive extends Provider { return { username: adapter.getUsername(res), items: adaptedItems, - nextPagePath: adapter.getNextPagePath(res, query, directory) + nextPagePath: adapter.getNextPagePath(res, query, directory), } } diff --git a/packages/@uppy/companion/src/server/provider/dropbox/index.js b/packages/@uppy/companion/src/server/provider/dropbox/index.js index c66cd6d72..051ff7914 100644 --- a/packages/@uppy/companion/src/server/provider/dropbox/index.js +++ b/packages/@uppy/companion/src/server/provider/dropbox/index.js @@ -13,10 +13,9 @@ const { ProviderApiError, ProviderAuthError } = require('../error') const charsToEncode = /[\u007f-\uffff]/g function httpHeaderSafeJson (v) { return JSON.stringify(v).replace(charsToEncode, - function (c) { - return '\\u' + ('000' + c.charCodeAt(0).toString(16)).slice(-4) - } - ) + (c) => { + return `\\u${(`000${c.charCodeAt(0).toString(16)}`).slice(-4)}` + }) } /** @@ -25,8 +24,11 @@ function httpHeaderSafeJson (v) { class DropBox extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = DropBox.authProvider - this.client = purest(options) + this.authProvider = DropBox.authProvider + this.client = purest({ + ...options, + provider: DropBox.authProvider, + }) // needed for the thumbnails fetched via companion this.needsCookieAuth = true } @@ -48,7 +50,7 @@ class DropBox extends Provider { * it then waits till both requests are done before proceeding with the callback * * @param {object} options - * @param {function} done + * @param {Function} done */ list (options, done) { let userInfoDone = false @@ -99,7 +101,7 @@ class DropBox extends Provider { .options({ version: '2' }) .auth(token) .json({ - cursor: query.cursor + cursor: query.cursor, }) .request(done) return @@ -112,7 +114,7 @@ class DropBox extends Provider { .auth(token) .json({ path: `${directory || ''}`, - include_non_downloadable_files: false + include_non_downloadable_files: false, }) .request(done) } @@ -123,8 +125,8 @@ class DropBox extends Provider { .options({ version: '2', headers: { - 'Dropbox-API-Arg': httpHeaderSafeJson({ path: `${id}` }) - } + 'Dropbox-API-Arg': httpHeaderSafeJson({ path: `${id}` }), + }, }) .auth(token) .request() @@ -148,8 +150,8 @@ class DropBox extends Provider { .options({ version: '2', headers: { - 'Dropbox-API-Arg': httpHeaderSafeJson({ path: `${id}`, size: 'w256h256' }) - } + 'Dropbox-API-Arg': httpHeaderSafeJson({ path: `${id}`, size: 'w256h256' }), + }, }) .auth(token) .request() @@ -210,7 +212,7 @@ class DropBox extends Provider { thumbnail: companion.buildURL(adapter.getItemThumbnailUrl(item), true), requestPath: adapter.getItemRequestPath(item), modifiedDate: adapter.getItemModifiedDate(item), - size: adapter.getItemSize(item) + size: adapter.getItemSize(item), }) }) diff --git a/packages/@uppy/companion/src/server/provider/error.js b/packages/@uppy/companion/src/server/provider/error.js index 46035043b..c68542da2 100644 --- a/packages/@uppy/companion/src/server/provider/error.js +++ b/packages/@uppy/companion/src/server/provider/error.js @@ -29,6 +29,7 @@ class ProviderAuthError extends ProviderApiError { /** * Convert an error instance to an http response if possible + * * @param {Error | ProviderApiError} err the error instance to convert to an http json response */ function errorToResponse (err) { diff --git a/packages/@uppy/companion/src/server/provider/facebook/adapter.js b/packages/@uppy/companion/src/server/provider/facebook/adapter.js index 0232073fc..d0fc2fed4 100644 --- a/packages/@uppy/companion/src/server/provider/facebook/adapter.js +++ b/packages/@uppy/companion/src/server/provider/facebook/adapter.js @@ -44,9 +44,7 @@ exports.getNextPagePath = (data, currentQuery, currentPath) => { return null } - const query = Object.assign({}, currentQuery, { - cursor: data.paging.cursors.after - }) + const query = { ...currentQuery, cursor: data.paging.cursors.after } return `${currentPath || ''}?${querystring.stringify(query)}` } diff --git a/packages/@uppy/companion/src/server/provider/facebook/index.js b/packages/@uppy/companion/src/server/provider/facebook/index.js index 2141fbd95..cbbb93dba 100644 --- a/packages/@uppy/companion/src/server/provider/facebook/index.js +++ b/packages/@uppy/companion/src/server/provider/facebook/index.js @@ -13,8 +13,11 @@ const { ProviderApiError, ProviderAuthError } = require('../error') class Facebook extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = Facebook.authProvider - this.client = purest(options) + this.authProvider = Facebook.authProvider + this.client = purest({ + ...options, + provider: Facebook.authProvider, + }) } static get authProvider () { @@ -23,7 +26,7 @@ class Facebook extends Provider { list ({ directory, token, query = { cursor: null } }, done) { const qs = { - fields: 'name,cover_photo,created_time,type' + fields: 'name,cover_photo,created_time,type', } if (query.cursor) { @@ -45,11 +48,10 @@ class Facebook extends Provider { err = this._error(err, resp) logger.error(err, 'provider.facebook.list.error') return done(err) - } else { - this._getUsername(token, (err, username) => { - err ? done(err) : done(null, this.adaptData(body, username, directory, query)) - }) } + this._getUsername(token, (err, username) => { + err ? done(err) : done(null, this.adaptData(body, username, directory, query)) + }) }) } @@ -63,9 +65,8 @@ class Facebook extends Provider { err = this._error(err, resp) logger.error(err, 'provider.facebook.user.error') return done(err) - } else { - done(null, body.email) } + done(null, body.email) }) } @@ -146,7 +147,7 @@ class Facebook extends Provider { } adaptData (res, username, directory, currentQuery) { - const data = { username: username, items: [] } + const data = { username, items: [] } const items = adapter.getItemSubList(res) items.forEach((item) => { data.items.push({ @@ -158,7 +159,7 @@ class Facebook extends Provider { id: adapter.getItemId(item), thumbnail: adapter.getItemThumbnailUrl(item), requestPath: adapter.getItemRequestPath(item), - modifiedDate: adapter.getItemModifiedDate(item) + modifiedDate: adapter.getItemModifiedDate(item), }) }) diff --git a/packages/@uppy/companion/src/server/provider/index.js b/packages/@uppy/companion/src/server/provider/index.js index 2f81254b3..6f1a171ab 100644 --- a/packages/@uppy/companion/src/server/provider/index.js +++ b/packages/@uppy/companion/src/server/provider/index.js @@ -24,24 +24,24 @@ config.zoom = { 'https://zoom.us/': { __domain: { auth: { - auth: { bearer: '[0]' } - } + auth: { bearer: '[0]' }, + }, }, '[version]/{endpoint}': { __path: { alias: '__default', - version: 'v2' - } + version: 'v2', + }, }, 'oauth/revoke': { __path: { alias: 'logout', auth: { - auth: { basic: '[0]' } - } - } - } - } + auth: { basic: '[0]' }, + }, + }, + }, + }, } /** @@ -56,7 +56,7 @@ module.exports.getProviderMiddleware = (providers, needsProviderCredentials) => * * @param {object} req * @param {object} res - * @param {function} next + * @param {Function} next * @param {string} providerName */ const middleware = (req, res, next, providerName) => { @@ -76,7 +76,7 @@ module.exports.getProviderMiddleware = (providers, needsProviderCredentials) => /** * @param {{server: object, providerOptions: object}} companionOptions - * @return {Object.} + * @returns {Object.} */ module.exports.getDefaultProviders = (companionOptions) => { // @todo: we should rename drive to googledrive or google-drive or google @@ -86,7 +86,7 @@ module.exports.getDefaultProviders = (companionOptions) => { } /** - * @return {Object.} + * @returns {Object.} */ module.exports.getSearchProviders = () => { return { unsplash } @@ -103,7 +103,7 @@ module.exports.getSearchProviders = () => { module.exports.addCustomProviders = (customProviders, providers, grantConfig) => { Object.keys(customProviders).forEach((providerName) => { providers[providerName] = customProviders[providerName].module - const providerConfig = Object.assign({}, customProviders[providerName].config) + const providerConfig = { ...customProviders[providerName].config } // todo: consider setting these options from a universal point also used // by official providers. It'll prevent these from getting left out if the // requirement changes. @@ -128,7 +128,7 @@ module.exports.addProviderOptions = (companionOptions, grantConfig) => { grantConfig.defaults = { host: server.host, protocol: server.protocol, - path: server.path + path: server.path, } const { oauthDomain } = server @@ -171,7 +171,7 @@ module.exports.addProviderOptions = (companionOptions, grantConfig) => { * * @param {string} name of the provider * @param {{server: object, providerOptions: object}} options - * @return {string} the authProvider for this provider + * @returns {string} the authProvider for this provider */ const providerNameToAuthName = (name, options) => { const providers = exports.getDefaultProviders(options) diff --git a/packages/@uppy/companion/src/server/provider/instagram/graph/adapter.js b/packages/@uppy/companion/src/server/provider/instagram/graph/adapter.js index 3f19957de..f3cb6631c 100644 --- a/packages/@uppy/companion/src/server/provider/instagram/graph/adapter.js +++ b/packages/@uppy/companion/src/server/provider/instagram/graph/adapter.js @@ -3,7 +3,7 @@ const querystring = require('querystring') const MEDIA_TYPES = Object.freeze({ video: 'VIDEO', carousel: 'CAROUSEL_ALBUM', - image: 'IMAGE' + image: 'IMAGE', }) const isVideo = (item) => item.media_type === MEDIA_TYPES.video @@ -51,8 +51,6 @@ exports.getNextPagePath = (data, currentQuery, currentPath) => { return null } - const query = Object.assign({}, currentQuery, { - cursor: data.paging.cursors.after - }) + const query = { ...currentQuery, cursor: data.paging.cursors.after } return `${currentPath || ''}?${querystring.stringify(query)}` } diff --git a/packages/@uppy/companion/src/server/provider/instagram/graph/index.js b/packages/@uppy/companion/src/server/provider/instagram/graph/index.js index d6949290d..c3f732568 100644 --- a/packages/@uppy/companion/src/server/provider/instagram/graph/index.js +++ b/packages/@uppy/companion/src/server/provider/instagram/graph/index.js @@ -13,14 +13,17 @@ const { ProviderApiError, ProviderAuthError } = require('../../error') class Instagram extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = Instagram.authProvider - this.client = purest(options) + this.authProvider = Instagram.authProvider + this.client = purest({ + ...options, + provider: Instagram.authProvider, + }) } static getExtraConfig () { return { protocol: 'https', - scope: ['user_profile', 'user_media'] + scope: ['user_profile', 'user_media'], } } @@ -30,7 +33,7 @@ class Instagram extends Provider { list ({ directory, token, query = { cursor: null } }, done) { const qs = { - fields: 'id,media_type,thumbnail_url,media_url,timestamp,children{media_type,media_url,thumbnail_url,timestamp}' + fields: 'id,media_type,thumbnail_url,media_url,timestamp,children{media_type,media_url,thumbnail_url,timestamp}', } if (query.cursor) { @@ -46,11 +49,10 @@ class Instagram extends Provider { err = this._error(err, resp) logger.error(err, 'provider.instagram.list.error') return done(err) - } else { - this._getUsername(token, (err, username) => { - err ? done(err) : done(null, this.adaptData(body, username, directory, query)) - }) } + this._getUsername(token, (err, username) => { + err ? done(err) : done(null, this.adaptData(body, username, directory, query)) + }) }) } @@ -64,9 +66,8 @@ class Instagram extends Provider { err = this._error(err, resp) logger.error(err, 'provider.instagram.user.error') return done(err) - } else { - done(null, body.username) } + done(null, body.username) }) } @@ -133,7 +134,7 @@ class Instagram extends Provider { } adaptData (res, username, directory, currentQuery) { - const data = { username: username, items: [] } + const data = { username, items: [] } const items = adapter.getItemSubList(res) items.forEach((item, i) => { data.items.push({ @@ -145,7 +146,7 @@ class Instagram extends Provider { size: null, thumbnail: adapter.getItemThumbnailUrl(item), requestPath: adapter.getItemRequestPath(item), - modifiedDate: adapter.getItemModifiedDate(item) + modifiedDate: adapter.getItemModifiedDate(item), }) }) diff --git a/packages/@uppy/companion/src/server/provider/onedrive/index.js b/packages/@uppy/companion/src/server/provider/onedrive/index.js index 97b81d429..69b32ec74 100644 --- a/packages/@uppy/companion/src/server/provider/onedrive/index.js +++ b/packages/@uppy/companion/src/server/provider/onedrive/index.js @@ -12,8 +12,11 @@ const { ProviderApiError, ProviderAuthError } = require('../error') class OneDrive extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = OneDrive.authProvider - this.client = purest(options) + this.authProvider = OneDrive.authProvider + this.client = purest({ + ...options, + provider: OneDrive.authProvider, + }) } static get authProvider () { @@ -32,7 +35,7 @@ class OneDrive extends Provider { * it then waits till both requests are done before proceeding with the callback * * @param {object} options - * @param {function} done + * @param {Function} done */ list ({ directory, query, token }, done) { const path = directory ? `items/${directory}` : 'root' @@ -51,16 +54,15 @@ class OneDrive extends Provider { err = this._error(err, resp) logger.error(err, 'provider.onedrive.list.error') return done(err) - } else { - this._userInfo({ token }, (err, infoResp) => { - if (err || infoResp.statusCode !== 200) { - err = this._error(err, infoResp) - logger.error(err, 'provider.onedrive.user.error') - return done(err) - } - done(null, this.adaptData(body, infoResp.body.mail || infoResp.body.userPrincipalName)) - }) } + this._userInfo({ token }, (err, infoResp) => { + if (err || infoResp.statusCode !== 200) { + err = this._error(err, infoResp) + logger.error(err, 'provider.onedrive.user.error') + return done(err) + } + done(null, this.adaptData(body, infoResp.body.mail || infoResp.body.userPrincipalName)) + }) }) } @@ -101,9 +103,8 @@ class OneDrive extends Provider { err = this._error(err, resp) logger.error(err, 'provider.onedrive.size.error') return done(err) - } else { - done(null, body.size) } + done(null, body.size) }) } @@ -125,7 +126,7 @@ class OneDrive extends Provider { thumbnail: adapter.getItemThumbnailUrl(item), requestPath: adapter.getItemRequestPath(item), modifiedDate: adapter.getItemModifiedDate(item), - size: adapter.getItemSize(item) + size: adapter.getItemSize(item), }) }) diff --git a/packages/@uppy/companion/src/server/provider/unsplash/adapter.js b/packages/@uppy/companion/src/server/provider/unsplash/adapter.js index 2512b2bd5..b5b83aada 100644 --- a/packages/@uppy/companion/src/server/provider/unsplash/adapter.js +++ b/packages/@uppy/companion/src/server/provider/unsplash/adapter.js @@ -15,7 +15,7 @@ exports.getItemSubList = (item) => { exports.getItemName = (item) => { const description = item.description || item.alt_description if (description) { - return description.replace(/^([\S\s]{27})[\S\s]{3,}/, '$1...') + '.jpg' + return `${description.replace(/^([\S\s]{27})[\S\s]{3,}/, '$1...')}.jpg` } } @@ -43,7 +43,7 @@ exports.getNextPageQuery = (currentQuery) => { const newCursor = parseInt(currentQuery.cursor || 1) + 1 const query = { ...currentQuery, - cursor: newCursor + cursor: newCursor, } delete query.q diff --git a/packages/@uppy/companion/src/server/provider/unsplash/index.js b/packages/@uppy/companion/src/server/provider/unsplash/index.js index 4cc3ce3c6..b0dadd916 100644 --- a/packages/@uppy/companion/src/server/provider/unsplash/index.js +++ b/packages/@uppy/companion/src/server/provider/unsplash/index.js @@ -1,9 +1,10 @@ -const SearchProvider = require('../SearchProvider') const request = require('request') +const SearchProvider = require('../SearchProvider') const { getURLMeta } = require('../../helpers/request') const logger = require('../../logger') const adapter = require('./adapter') const { ProviderApiError } = require('../error') + const BASE_URL = 'https://api.unsplash.com' /** @@ -17,11 +18,11 @@ class Unsplash extends SearchProvider { json: true, qs: { per_page: 40, - query: query.q + query: query.q, }, headers: { - Authorization: `Client-ID ${token}` - } + Authorization: `Client-ID ${token}`, + }, } if (query.cursor) { @@ -33,9 +34,8 @@ class Unsplash extends SearchProvider { err = this._error(err, resp) logger.error(err, 'provider.unsplash.list.error') return done(err) - } else { - done(null, this.adaptData(body, query)) } + done(null, this.adaptData(body, query)) }) } @@ -45,8 +45,8 @@ class Unsplash extends SearchProvider { method: 'GET', json: true, headers: { - Authorization: `Client-ID ${token}` - } + Authorization: `Client-ID ${token}`, + }, } request(reqOpts, (err, resp, body) => { @@ -80,8 +80,8 @@ class Unsplash extends SearchProvider { method: 'GET', json: true, headers: { - Authorization: `Client-ID ${token}` - } + Authorization: `Client-ID ${token}`, + }, } request(reqOpts, (err, resp, body) => { @@ -105,7 +105,7 @@ class Unsplash extends SearchProvider { const data = { searchedFor: currentQuery.q, username: null, - items: [] + items: [], } const items = adapter.getItemSubList(body) items.forEach((item) => { @@ -118,7 +118,7 @@ class Unsplash extends SearchProvider { thumbnail: adapter.getItemThumbnailUrl(item), requestPath: adapter.getItemRequestPath(item), modifiedDate: adapter.getItemModifiedDate(item), - size: null + size: null, }) }) diff --git a/packages/@uppy/companion/src/server/provider/zoom/adapter.js b/packages/@uppy/companion/src/server/provider/zoom/adapter.js index c797f5560..47533ad60 100644 --- a/packages/@uppy/companion/src/server/provider/zoom/adapter.js +++ b/packages/@uppy/companion/src/server/provider/zoom/adapter.js @@ -6,7 +6,7 @@ const MIMETYPES = { CHAT: 'text/plain', TRANSCRIPT: 'text/vtt', CC: 'text/vtt', - TIMELINE: 'application/json' + TIMELINE: 'application/json', } const EXT = { MP4: 'mp4', @@ -14,7 +14,7 @@ const EXT = { CHAT: 'txt', TRANSCRIPT: 'vtt', CC: 'vtt', - TIMELINE: 'json' + TIMELINE: 'json', } const ICONS = { MP4: 'video', @@ -23,7 +23,7 @@ const ICONS = { TRANSCRIPT: 'file', CC: 'file', FOLDER: 'folder', - TIMELINE: 'file' + TIMELINE: 'file', } exports.getDateName = (start, end) => { @@ -95,7 +95,7 @@ exports.getMimeType = (item) => { exports.getId = (item) => { if (item.file_type && item.file_type === 'CC') { return `${encodeURIComponent(item.meeting_id)}__CC__${encodeURIComponent(item.recording_start)}` - } else if (item.file_type) { + } if (item.file_type) { return `${encodeURIComponent(item.meeting_id)}__${encodeURIComponent(item.id)}` } return `${encodeURIComponent(item.uuid)}` @@ -104,7 +104,7 @@ exports.getId = (item) => { exports.getRequestPath = (item) => { if (item.file_type && item.file_type === 'CC') { return `${encodeURIComponent(item.meeting_id)}?recordingId=CC&recordingStart=${encodeURIComponent(item.recording_start)}` - } else if (item.file_type) { + } if (item.file_type) { return `${encodeURIComponent(item.meeting_id)}?recordingId=${encodeURIComponent(item.id)}` } // Zoom meeting ids are reused so we need to use the UUID. Also, these UUIDs can contain `/` characters which require double encoding (see https://devforum.zoom.us/t/double-encode-meeting-uuids/23729) @@ -122,7 +122,7 @@ exports.getSize = (item) => { if (item.file_type && item.file_type === 'CC') { const maxExportFileSize = 1024 * 1024 return maxExportFileSize - } else if (item.file_type) { + } if (item.file_type) { return item.file_size } return item.total_size diff --git a/packages/@uppy/companion/src/server/provider/zoom/index.js b/packages/@uppy/companion/src/server/provider/zoom/index.js index 4650d20f5..9c7b19a2e 100644 --- a/packages/@uppy/companion/src/server/provider/zoom/index.js +++ b/packages/@uppy/companion/src/server/provider/zoom/index.js @@ -20,8 +20,11 @@ const DEAUTH_EVENT_NAME = 'app_deauthorized' class Zoom extends Provider { constructor (options) { super(options) - this.authProvider = options.provider = Zoom.authProvider - this.client = purest(options) + this.authProvider = Zoom.authProvider + this.client = purest({ + ...options, + provider: Zoom.authProvider, + }) } static get authProvider () { @@ -33,7 +36,7 @@ class Zoom extends Provider { - returns list of months by default - drill down for specific files in each month */ - const token = options.token + const { token } = options const query = options.query || {} const { cursor, from, to } = query const meetingId = options.directory || '' @@ -78,7 +81,7 @@ class Zoom extends Provider { const queryObj = { page_size: PAGE_SIZE, from: moment.tz(from, userResponse.body.timezone || 'UTC').startOf('day').tz('UTC').format('YYYY-MM-DD'), - to: moment.tz(to, userResponse.body.timezone || 'UTC').endOf('day').tz('UTC').format('YYYY-MM-DD') + to: moment.tz(to, userResponse.body.timezone || 'UTC').endOf('day').tz('UTC').format('YYYY-MM-DD'), } if (cursor) { @@ -104,7 +107,7 @@ class Zoom extends Provider { // cc files don't have an ID or size const meetingId = id const fileId = query.recordingId - const recordingStart = query.recordingStart + const { recordingStart } = query const GET_MEETING_FILES = `/meetings/${encodeURIComponent(meetingId)}/recordings` const downloadUrlPromise = new Promise((resolve) => { @@ -149,7 +152,7 @@ class Zoom extends Provider { size ({ id, token, query }, done) { const meetingId = id const fileId = query.recordingId - const recordingStart = query.recordingStart + const { recordingStart } = query const GET_MEETING_FILES = `/meetings/${encodeURIComponent(meetingId)}/recordings` return this.client @@ -183,7 +186,7 @@ class Zoom extends Provider { const data = { items: [], - username: adapter.getUserEmail(body) + username: adapter.getUserEmail(body), } while (end.isAfter(limit)) { @@ -196,7 +199,7 @@ class Zoom extends Provider { thumbnail: null, requestPath: adapter.getDateFolderRequestPath(start, end), modifiedDate: adapter.getDateFolderModified(end), - size: null + size: null, }) end = start.clone().subtract(1, 'days').endOf('day') start = (end.isSame(limit, 'month') && limit.date() !== 1) ? limit.clone() : end.clone().date(1).startOf('day') @@ -217,7 +220,7 @@ class Zoom extends Provider { const data = { nextPagePath: adapter.getNextPagePath(results), items: [], - username: adapter.getUserEmail(userResponse) + username: adapter.getUserEmail(userResponse), } let items = [] @@ -243,8 +246,8 @@ class Zoom extends Provider { modifiedDate: adapter.getStartDate(item), size: adapter.getSize(item), custom: { - topic: adapter.getItemTopic(item) - } + topic: adapter.getItemTopic(item), + }, }) }) return data @@ -257,8 +260,8 @@ class Zoom extends Provider { .post('https://zoom.us/oauth/revoke') .options({ headers: { - Authorization: `Basic ${encodedAuth}` - } + Authorization: `Basic ${encodedAuth}`, + }, }) .qs({ token }) .request((err, resp, body) => { @@ -288,15 +291,15 @@ class Zoom extends Provider { .post('https://api.zoom.us/oauth/data/compliance') .options({ headers: { - Authorization: `Basic ${encodedAuth}` - } + Authorization: `Basic ${encodedAuth}`, + }, }) .json({ client_id: key, user_id: body.payload.user_id, account_id: body.payload.account_id, deauthorization_event_received: body.payload, - compliance_completed: true + compliance_completed: true, }) .request((err, resp) => { if (err || resp.statusCode !== 200) { @@ -312,7 +315,7 @@ class Zoom extends Provider { _error (err, resp) { const authErrorCodes = [ 124, // expired token - 401 + 401, ] if (resp) { const fallbackMsg = `request to ${this.authProvider} returned ${resp.statusCode}` diff --git a/packages/@uppy/companion/src/server/redis.js b/packages/@uppy/companion/src/server/redis.js index 6cf5c7f18..fd1bc3b7f 100644 --- a/packages/@uppy/companion/src/server/redis.js +++ b/packages/@uppy/companion/src/server/redis.js @@ -1,4 +1,5 @@ const redis = require('redis') + let redisClient /** diff --git a/packages/@uppy/companion/src/server/s3-client.js b/packages/@uppy/companion/src/server/s3-client.js index f5e0c5f14..015f93ac5 100644 --- a/packages/@uppy/companion/src/server/s3-client.js +++ b/packages/@uppy/companion/src/server/s3-client.js @@ -19,13 +19,14 @@ module.exports = (companionOptions) => { throw new Error('Found unsupported `providerOptions.s3.awsClientOptions.accessKeyId` or `providerOptions.s3.awsClientOptions.secretAccessKey` configuration. Please use the `providerOptions.s3.key` and `providerOptions.s3.secret` options instead.') } - const s3ClientOptions = Object.assign({ + const s3ClientOptions = { signatureVersion: 'v4', endpoint: s3ProviderOptions.endpoint, region: s3ProviderOptions.region, // backwards compat - useAccelerateEndpoint: s3ProviderOptions.useAccelerateEndpoint - }, rawClientOptions) + useAccelerateEndpoint: s3ProviderOptions.useAccelerateEndpoint, + ...rawClientOptions, + } // Use credentials to allow assumed roles to pass STS sessions in. // If the user doesn't specify key and secret, the default credentials (process-env) @@ -34,7 +35,8 @@ module.exports = (companionOptions) => { s3ClientOptions.credentials = new AWS.Credentials( s3ProviderOptions.key, s3ProviderOptions.secret, - s3ProviderOptions.sessionToken) + s3ProviderOptions.sessionToken + ) } s3Client = new S3(s3ClientOptions) } diff --git a/packages/@uppy/companion/src/standalone/helper.js b/packages/@uppy/companion/src/standalone/helper.js index 520fc3987..1b08c721f 100644 --- a/packages/@uppy/companion/src/standalone/helper.js +++ b/packages/@uppy/companion/src/standalone/helper.js @@ -1,9 +1,9 @@ const fs = require('fs') const merge = require('lodash/merge') const stripIndent = require('common-tags/lib/stripIndent') +const crypto = require('crypto') const utils = require('../server/helpers/utils') const logger = require('../server/logger') -const crypto = require('crypto') // @ts-ignore const { version } = require('../../package.json') @@ -32,42 +32,42 @@ const getConfigFromEnv = () => { drive: { key: process.env.COMPANION_GOOGLE_KEY, secret: getSecret('COMPANION_GOOGLE_SECRET'), - credentialsURL: process.env.COMPANION_GOOGLE_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_GOOGLE_KEYS_ENDPOINT, }, dropbox: { key: process.env.COMPANION_DROPBOX_KEY, secret: getSecret('COMPANION_DROPBOX_SECRET'), - credentialsURL: process.env.COMPANION_DROPBOX_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_DROPBOX_KEYS_ENDPOINT, }, box: { key: process.env.COMPANION_BOX_KEY, - secret: getSecret('COMPANION_BOX_SECRET') + secret: getSecret('COMPANION_BOX_SECRET'), }, instagram: { key: process.env.COMPANION_INSTAGRAM_KEY, secret: getSecret('COMPANION_INSTAGRAM_SECRET'), - credentialsURL: process.env.COMPANION_INSTAGRAM_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_INSTAGRAM_KEYS_ENDPOINT, }, facebook: { key: process.env.COMPANION_FACEBOOK_KEY, secret: getSecret('COMPANION_FACEBOOK_SECRET'), - credentialsURL: process.env.COMPANION_FACEBOOK_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_FACEBOOK_KEYS_ENDPOINT, }, onedrive: { key: process.env.COMPANION_ONEDRIVE_KEY, secret: getSecret('COMPANION_ONEDRIVE_SECRET'), - credentialsURL: process.env.COMPANION_ONEDRIVE_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_ONEDRIVE_KEYS_ENDPOINT, }, zoom: { key: process.env.COMPANION_ZOOM_KEY, secret: getSecret('COMPANION_ZOOM_SECRET'), verificationToken: getSecret('COMPANION_ZOOM_VERIFICATION_TOKEN'), - credentialsURL: process.env.COMPANION_ZOOM_KEYS_ENDPOINT + credentialsURL: process.env.COMPANION_ZOOM_KEYS_ENDPOINT, }, searchProviders: { unsplash: { - key: process.env.COMPANION_UNSPLASH_KEY - } + key: process.env.COMPANION_UNSPLASH_KEY, + }, }, s3: { key: process.env.COMPANION_AWS_KEY, @@ -78,8 +78,8 @@ const getConfigFromEnv = () => { useAccelerateEndpoint: process.env.COMPANION_AWS_USE_ACCELERATE_ENDPOINT === 'true', expires: parseInt(process.env.COMPANION_AWS_EXPIRES || '300', 10), - acl: process.env.COMPANION_AWS_ACL || 'public-read' - } + acl: process.env.COMPANION_AWS_ACL || 'public-read', + }, }, server: { host: process.env.COMPANION_DOMAIN, @@ -87,7 +87,7 @@ const getConfigFromEnv = () => { path: process.env.COMPANION_PATH, implicitPath: process.env.COMPANION_IMPLICIT_PATH, oauthDomain: process.env.COMPANION_OAUTH_DOMAIN, - validHosts: validHosts + validHosts, }, filePath: process.env.COMPANION_DATADIR, redisUrl: process.env.COMPANION_REDIS_URL, @@ -102,7 +102,7 @@ const getConfigFromEnv = () => { // TODO: this is a temporary hack to support distributed systems. // it is not documented, because it should be changed soon. cookieDomain: process.env.COMPANION_COOKIE_DOMAIN, - multipleInstances: true + multipleInstances: true, } } diff --git a/packages/@uppy/companion/src/standalone/index.js b/packages/@uppy/companion/src/standalone/index.js index 773774a12..0dd4aff1e 100644 --- a/packages/@uppy/companion/src/standalone/index.js +++ b/packages/@uppy/companion/src/standalone/index.js @@ -1,17 +1,17 @@ const express = require('express') const qs = require('querystring') -const companion = require('../companion') const helmet = require('helmet') const morgan = require('morgan') const bodyParser = require('body-parser') -const redis = require('../server/redis') -const logger = require('../server/logger') const { URL } = require('url') const merge = require('lodash/merge') // @ts-ignore const promBundle = require('express-prom-bundle') const session = require('express-session') const addRequestId = require('express-request-id')() +const logger = require('../server/logger') +const redis = require('../server/redis') +const companion = require('../companion') const helper = require('./helper') // @ts-ignore const { version } = require('../../package.json') @@ -29,8 +29,8 @@ function server (moreCompanionOptions = {}) { if (process.env.COMPANION_HIDE_METRICS !== 'true') { metricsMiddleware = promBundle({ includeMethod: true }) // @ts-ignore Not in the typings, but it does exist - const promClient = metricsMiddleware.promClient - const collectDefaultMetrics = promClient.collectDefaultMetrics + const { promClient } = metricsMiddleware + const { collectDefaultMetrics } = promClient collectDefaultMetrics({ register: promClient.register }) // Add version as a prometheus gauge @@ -112,7 +112,7 @@ function server (moreCompanionOptions = {}) { const sessionOptions = { secret: companionOptions.secret, resave: true, - saveUninitialized: true + saveUninitialized: true, } if (companionOptions.redisUrl) { @@ -126,7 +126,7 @@ function server (moreCompanionOptions = {}) { if (process.env.COMPANION_COOKIE_DOMAIN) { sessionOptions.cookie = { domain: process.env.COMPANION_COOKIE_DOMAIN, - maxAge: 24 * 60 * 60 * 1000 // 1 day + maxAge: 24 * 60 * 60 * 1000, // 1 day } } @@ -141,7 +141,7 @@ function server (moreCompanionOptions = {}) { if (process.env.COMPANION_CLIENT_ORIGINS) { const whitelist = process.env.COMPANION_CLIENT_ORIGINS .split(',') - .map((url) => helper.hasProtocol(url) ? url : `${protocol}://${url}`) + .map((url) => (helper.hasProtocol(url) ? url : `${protocol}://${url}`)) // @ts-ignore if (req.headers.origin && whitelist.indexOf(req.headers.origin) > -1) { @@ -197,8 +197,8 @@ function server (moreCompanionOptions = {}) { app.get('/.well-known/microsoft-identity-association.json', (req, res) => { const content = JSON.stringify({ associatedApplications: [ - { applicationId: process.env.COMPANION_ONEDRIVE_KEY } - ] + { applicationId: process.env.COMPANION_ONEDRIVE_KEY }, + ], }) res.header('Content-Length', `${Buffer.byteLength(content, 'utf8')}`) // use writeHead to prevent 'charset' from being appended diff --git a/packages/@uppy/companion/src/standalone/start-server.js b/packages/@uppy/companion/src/standalone/start-server.js index 072afbdc0..ee960053c 100755 --- a/packages/@uppy/companion/src/standalone/start-server.js +++ b/packages/@uppy/companion/src/standalone/start-server.js @@ -3,6 +3,7 @@ const companion = require('../companion') // @ts-ignore const { version } = require('../../package.json') const { app } = require('.') + const port = process.env.COMPANION_PORT || 3020 companion.socket(app.listen(port)) diff --git a/packages/@uppy/companion/test/__mocks__/purest.js b/packages/@uppy/companion/test/__mocks__/purest.js index a465688b9..ec3b77027 100644 --- a/packages/@uppy/companion/test/__mocks__/purest.js +++ b/packages/@uppy/companion/test/__mocks__/purest.js @@ -35,7 +35,7 @@ class MockPurest { request (done) { if (typeof done === 'function') { - const responses = fixtures[this.opts.providerName].responses + const { responses } = fixtures[this.opts.providerName] const url = this._query ? `${this._requestUrl}?${this._query}` : this._requestUrl const endpointResponses = responses[url] || responses[this._requestUrl] if (endpointResponses == null || !has(endpointResponses, this._method)) { @@ -44,7 +44,7 @@ class MockPurest { } let statusCode = 200 - const validators = fixtures[this.opts.providerName].validators + const { validators } = fixtures[this.opts.providerName] if (validators && validators[this._requestUrl]) { statusCode = validators[this._requestUrl](this._requestOptions) ? 200 : 400 } diff --git a/packages/@uppy/companion/test/__tests__/callback.js b/packages/@uppy/companion/test/__tests__/callback.js index 7458360c0..ffdefc5d0 100644 --- a/packages/@uppy/companion/test/__tests__/callback.js +++ b/packages/@uppy/companion/test/__tests__/callback.js @@ -5,10 +5,11 @@ jest.mock('../../src/server/helpers/oauth-state', () => require('../mockoauthsta const request = require('supertest') const tokenService = require('../../src/server/helpers/jwt') const { getServer } = require('../mockserver') + const authServer = getServer() const authData = { dropbox: 'token value', - drive: 'token value' + drive: 'token value', } const token = tokenService.generateEncryptedToken(authData, process.env.COMPANION_SECRET) diff --git a/packages/@uppy/companion/test/__tests__/companion.js b/packages/@uppy/companion/test/__tests__/companion.js index 2bff5aa92..aaa3ed553 100644 --- a/packages/@uppy/companion/test/__tests__/companion.js +++ b/packages/@uppy/companion/test/__tests__/companion.js @@ -7,11 +7,12 @@ jest.mock('../../src/server/helpers/oauth-state', () => require('../mockoauthsta const request = require('supertest') const tokenService = require('../../src/server/helpers/jwt') const { getServer } = require('../mockserver') + const authServer = getServer() const authData = { dropbox: 'token value', box: 'token value', - drive: 'token value' + drive: 'token value', } const token = tokenService.generateEncryptedToken(authData, process.env.COMPANION_SECRET) const OAUTH_STATE = 'some-cool-nice-encrytpion' @@ -24,7 +25,7 @@ describe('validate upload data', () => { .set('Content-Type', 'application/json') .send({ endpoint: 'http://url.myendpoint.com/files', - protocol: 'tusInvalid' + protocol: 'tusInvalid', }) .expect(400) .then((res) => expect(res.body.message).toBe('unsupported protocol specified')) @@ -38,7 +39,7 @@ describe('validate upload data', () => { .send({ endpoint: 'http://url.myendpoint.com/files', protocol: 'tus', - fieldname: 390 + fieldname: 390, }) .expect(400) .then((res) => expect(res.body.message).toBe('fieldname must be a string')) @@ -52,7 +53,7 @@ describe('validate upload data', () => { .send({ endpoint: 'http://url.myendpoint.com/files', protocol: 'tus', - metadata: 'I am a string instead of object' + metadata: 'I am a string instead of object', }) .expect(400) .then((res) => expect(res.body.message).toBe('metadata must be an object')) @@ -66,7 +67,7 @@ describe('validate upload data', () => { .send({ endpoint: 'http://url.myendpoint.com/files', protocol: 'tus', - headers: 'I am a string instead of object' + headers: 'I am a string instead of object', }) .expect(400) .then((res) => expect(res.body.message).toBe('headers must be an object')) @@ -80,7 +81,7 @@ describe('validate upload data', () => { .send({ endpoint: 'http://url.myendpoint.com/files', protocol: 'tus', - httpMethod: 'DELETE' + httpMethod: 'DELETE', }) .expect(400) .then((res) => expect(res.body.message).toBe('unsupported HTTP METHOD specified')) @@ -96,12 +97,12 @@ describe('validate upload data', () => { protocol: 'tus', httpMethod: 'POST', headers: { - customheader: 'header value' + customheader: 'header value', }, metadata: { - mymetadata: 'matadata value' + mymetadata: 'matadata value', }, - fieldname: 'uploadField' + fieldname: 'uploadField', }) .expect(200) }) @@ -116,12 +117,12 @@ describe('validate upload data', () => { protocol: 's3-multipart', httpMethod: 'PUT', headers: { - customheader: 'header value' + customheader: 'header value', }, metadata: { - mymetadata: 'matadata value' + mymetadata: 'matadata value', }, - fieldname: 'uploadField' + fieldname: 'uploadField', }) .expect(200) }) @@ -129,7 +130,7 @@ describe('validate upload data', () => { describe('handle master oauth redirect', () => { const serverWithMasterOauth = getServer({ - COMPANION_OAUTH_DOMAIN: 'localhost:3040' + COMPANION_OAUTH_DOMAIN: 'localhost:3040', }) test('redirect to a valid uppy instance', () => { return request(serverWithMasterOauth) diff --git a/packages/@uppy/companion/test/__tests__/credentials.js b/packages/@uppy/companion/test/__tests__/credentials.js index 1eba76529..75712c419 100644 --- a/packages/@uppy/companion/test/__tests__/credentials.js +++ b/packages/@uppy/companion/test/__tests__/credentials.js @@ -20,23 +20,24 @@ jest.mock('request', () => { credentials: { key: remoteZoomKey, secret: remoteZoomSecret, - verificationToken: remoteZoomVerificationToken - } + verificationToken: remoteZoomVerificationToken, + }, } return done(null, { statusCode: 200, body: respBody }, respBody) } done(new Error('unsupported request with mock function')) - } + }, } }) const request = require('supertest') const tokenService = require('../../src/server/helpers/jwt') const { getServer } = require('../mockserver') + const authServer = getServer({ COMPANION_ZOOM_KEYS_ENDPOINT: 'http://localhost:2111/zoom-keys' }) const authData = { - zoom: 'token value' + zoom: 'token value', } const token = tokenService.generateEncryptedToken(authData, process.env.COMPANION_SECRET) diff --git a/packages/@uppy/companion/test/__tests__/deauthorization.js b/packages/@uppy/companion/test/__tests__/deauthorization.js index bd643bc55..7b6249a3b 100644 --- a/packages/@uppy/companion/test/__tests__/deauthorization.js +++ b/packages/@uppy/companion/test/__tests__/deauthorization.js @@ -2,6 +2,7 @@ const request = require('supertest') const { getServer } = require('../mockserver') + const authServer = getServer() describe('handle deauthorization callback', () => { @@ -10,7 +11,7 @@ describe('handle deauthorization callback', () => { .post('/dropbox/deauthorization/callback') .set('Content-Type', 'application/json') .send({ - foo: 'bar' + foo: 'bar', }) // @todo consider receiving 501 instead .expect(500) @@ -29,8 +30,8 @@ describe('handle deauthorization callback', () => { user_id: 'z9jkdsfsdfjhdkfjQ', signature: '827edc3452044f0bc86bdd5684afb7d1e6becfa1a767f24df1b287853cf73000', deauthorization_time: '2019-06-17T13:52:28.632Z', - client_id: 'ADZ9k9bTWmGUoUbECUKU_a' - } + client_id: 'ADZ9k9bTWmGUoUbECUKU_a', + }, }) .expect(400) }) @@ -48,8 +49,8 @@ describe('handle deauthorization callback', () => { user_id: 'z9jkdsfsdfjhdkfjQ', signature: '827edc3452044f0bc86bdd5684afb7d1e6becfa1a767f24df1b287853cf73000', deauthorization_time: '2019-06-17T13:52:28.632Z', - client_id: 'ADZ9k9bTWmGUoUbECUKU_a' - } + client_id: 'ADZ9k9bTWmGUoUbECUKU_a', + }, }) .expect(400) }) @@ -60,7 +61,7 @@ describe('handle deauthorization callback', () => { .set('Content-Type', 'application/json') .set('Authorization', 'zoom_verfication_token') .send({ - invalid: 'content' + invalid: 'content', }) .expect(400) }) @@ -78,8 +79,8 @@ describe('handle deauthorization callback', () => { user_id: 'z9jkdsfsdfjhdkfjQ', signature: '827edc3452044f0bc86bdd5684afb7d1e6becfa1a767f24df1b287853cf73000', deauthorization_time: '2019-06-17T13:52:28.632Z', - client_id: 'ADZ9k9bTWmGUoUbECUKU_a' - } + client_id: 'ADZ9k9bTWmGUoUbECUKU_a', + }, }) .expect(400) }) @@ -97,8 +98,8 @@ describe('handle deauthorization callback', () => { user_id: 'z9jkdsfsdfjhdkfjQ', signature: '827edc3452044f0bc86bdd5684afb7d1e6becfa1a767f24df1b287853cf73000', deauthorization_time: '2019-06-17T13:52:28.632Z', - client_id: 'ADZ9k9bTWmGUoUbECUKU_a' - } + client_id: 'ADZ9k9bTWmGUoUbECUKU_a', + }, }) .expect(200) }) diff --git a/packages/@uppy/companion/test/__tests__/header-blacklist.js b/packages/@uppy/companion/test/__tests__/header-blacklist.js index 01a25f9f4..9d5ad02eb 100644 --- a/packages/@uppy/companion/test/__tests__/header-blacklist.js +++ b/packages/@uppy/companion/test/__tests__/header-blacklist.js @@ -7,7 +7,7 @@ describe('Header black-list testing', () => { const headers = headerSanitize({ origin: 'http://transloadit.com', 'Accept-Charset': '...', - 'content-Length': 1234 + 'content-Length': 1234, }) expect(headers).toEqual({}) @@ -21,7 +21,7 @@ describe('Header black-list testing', () => { 'Sec-': 'sec-header-empty', 'sec-': 'sec-lower-header-empty', 'Sec-header-fake': 'sec-header-fake', - 'sec-header-fake': 'sec-header-fake' + 'sec-header-fake': 'sec-header-fake', }) expect(headers).toEqual({}) }) @@ -29,7 +29,7 @@ describe('Header black-list testing', () => { test('All headers invalid by name and regex', () => { const headers = headerSanitize({ 'Proxy-header-fake': 'proxy-header-fake', - 'Sec-header-fake': 'sec-header-fake' + 'Sec-header-fake': 'sec-header-fake', }) expect(headers).toEqual({}) }) @@ -40,7 +40,7 @@ describe('Header black-list testing', () => { 'Content-Type': 'application/json', 'Content-Length': 1234, Expires: 'Wed, 21 Oct 2015 07:28:00 GMT', - Origin: 'http://transloadit.com' + Origin: 'http://transloadit.com', }) expect(Object.keys(headers)).toHaveLength(3) expect(headers).toHaveProperty('Authorization') diff --git a/packages/@uppy/companion/test/__tests__/http-agent.js b/packages/@uppy/companion/test/__tests__/http-agent.js index 236ff3161..248c8ca46 100644 --- a/packages/@uppy/companion/test/__tests__/http-agent.js +++ b/packages/@uppy/companion/test/__tests__/http-agent.js @@ -1,23 +1,23 @@ /* global test:false, expect:false, describe:false, */ -const { getProtectedHttpAgent, getRedirectEvaluator, FORBIDDEN_IP_ADDRESS } = require('../../src/server/helpers/request') const request = require('request') const http = require('http') const https = require('https') +const { getProtectedHttpAgent, getRedirectEvaluator, FORBIDDEN_IP_ADDRESS } = require('../../src/server/helpers/request') describe('test getRedirectEvaluator', () => { const httpURL = 'http://uppy.io' const httpsURL = 'https://uppy.io' const httpRedirectResp = { headers: { - location: 'http://transloadit.com' - } + location: 'http://transloadit.com', + }, } const httpsRedirectResp = { headers: { - location: 'https://transloadit.com' - } + location: 'https://transloadit.com', + }, } test('when original URL has "https:" as protocol', (done) => { @@ -66,7 +66,7 @@ describe('test protected request Agent', () => { const options = { uri: 'https://transloadit.com', method: 'GET', - agentClass: getProtectedHttpAgent('https', true) + agentClass: getProtectedHttpAgent('https', true), } request(options, (err) => { @@ -84,7 +84,7 @@ describe('test protected request Agent', () => { const options = { uri: 'http://172.20.10.4:8090', method: 'GET', - agentClass: getProtectedHttpAgent('http', true) + agentClass: getProtectedHttpAgent('http', true), } request(options, (err) => { @@ -98,7 +98,7 @@ describe('test protected request Agent', () => { const options = { uri: 'https://172.20.10.4:8090', method: 'GET', - agentClass: getProtectedHttpAgent('https', true) + agentClass: getProtectedHttpAgent('https', true), } request(options, (err) => { @@ -112,7 +112,7 @@ describe('test protected request Agent', () => { const options = { uri: 'http://127.0.0.1:8090', method: 'GET', - agentClass: getProtectedHttpAgent('http', true) + agentClass: getProtectedHttpAgent('http', true), } request(options, (err) => { diff --git a/packages/@uppy/companion/test/__tests__/logger.js b/packages/@uppy/companion/test/__tests__/logger.js index e30830a52..3ed7429ff 100644 --- a/packages/@uppy/companion/test/__tests__/logger.js +++ b/packages/@uppy/companion/test/__tests__/logger.js @@ -1,6 +1,6 @@ /* global test:false, expect:false, describe:false, beforeAll:false, */ -const logger = require('../../src/server/logger') const chalk = require('chalk') +const logger = require('../../src/server/logger') describe('Test Logger secret mask', () => { beforeAll(() => { diff --git a/packages/@uppy/companion/test/__tests__/middlewares.js b/packages/@uppy/companion/test/__tests__/middlewares.js index b8f8c8951..11dfd9e04 100644 --- a/packages/@uppy/companion/test/__tests__/middlewares.js +++ b/packages/@uppy/companion/test/__tests__/middlewares.js @@ -6,7 +6,7 @@ describe('mergeAccessControlAllowMethods', () => { test('should properly merge', () => { const res = { get: () => 'PATCH,OPTIONS, post', - header: jest.fn() + header: jest.fn(), } const next = jest.fn() mergeAccessControlAllowMethods(undefined, res, next) @@ -16,7 +16,7 @@ describe('mergeAccessControlAllowMethods', () => { test('should also work when nothing added', () => { const res = { get: () => undefined, - header: jest.fn() + header: jest.fn(), } const next = jest.fn() mergeAccessControlAllowMethods(undefined, res, next) diff --git a/packages/@uppy/companion/test/__tests__/preauth.js b/packages/@uppy/companion/test/__tests__/preauth.js index 5987cd4d4..5e7e8f839 100644 --- a/packages/@uppy/companion/test/__tests__/preauth.js +++ b/packages/@uppy/companion/test/__tests__/preauth.js @@ -11,7 +11,7 @@ jest.mock('../../src/server/helpers/jwt', () => { return { payload: '' } }, addToCookies: (res, token, companionOptions, authProvider) => {}, - removeFromCookies: (res, companionOptions, authProvider) => {} + removeFromCookies: (res, companionOptions, authProvider) => {}, } }) @@ -28,7 +28,7 @@ describe('handle preauth endpoint', () => { .post('/dropbox/preauth') .set('Content-Type', 'application/json') .send({ - params: 'param value' + params: 'param value', }) .expect(200) // see jwt.generateEncryptedToken mock above @@ -40,7 +40,7 @@ describe('handle preauth endpoint', () => { .post('/dropbox/preauth') .set('Content-Type', 'application/json') .send({ - notParams: 'value' + notParams: 'value', }) .expect(400) }) @@ -50,7 +50,7 @@ describe('handle preauth endpoint', () => { .post('/drive/preauth') .set('Content-Type', 'application/json') .send({ - params: 'param value' + params: 'param value', }) .expect(501) }) @@ -60,7 +60,7 @@ describe('handle preauth endpoint', () => { .post('/dropbox/preauth') .set('Content-Type', 'application/json') .send({ - params: 'param value' + params: 'param value', }) .expect(501) }) diff --git a/packages/@uppy/companion/test/__tests__/provider-manager.js b/packages/@uppy/companion/test/__tests__/provider-manager.js index 76291582f..ee6a5d9ed 100644 --- a/packages/@uppy/companion/test/__tests__/provider-manager.js +++ b/packages/@uppy/companion/test/__tests__/provider-manager.js @@ -2,6 +2,7 @@ const providerManager = require('../../src/server/provider') const { getCompanionOptions } = require('../../src/standalone/helper') + let grantConfig let companionOptions @@ -39,7 +40,7 @@ describe('Test Provider options', () => { key: '123456', secret: 'instagram_secret', protocol: 'https', - scope: ['user_profile', 'user_media'] + scope: ['user_profile', 'user_media'], }) expect(grantConfig.dropbox).toEqual({ @@ -49,7 +50,7 @@ describe('Test Provider options', () => { redirect_uri: 'http://localhost:3020/dropbox/redirect', authorize_url: 'https://www.dropbox.com/oauth2/authorize', access_url: 'https://api.dropbox.com/oauth2/token', - callback: '/dropbox/callback' + callback: '/dropbox/callback', }) expect(grantConfig.box).toEqual({ @@ -59,7 +60,7 @@ describe('Test Provider options', () => { redirect_uri: 'http://localhost:3020/box/redirect', authorize_url: 'https://account.box.com/api/oauth2/authorize', access_url: 'https://api.box.com/oauth2/token', - callback: '/box/callback' + callback: '/box/callback', }) expect(grantConfig.google).toEqual({ @@ -68,9 +69,9 @@ describe('Test Provider options', () => { transport: 'session', redirect_uri: 'http://localhost:3020/drive/redirect', scope: [ - 'https://www.googleapis.com/auth/drive.readonly' + 'https://www.googleapis.com/auth/drive.readonly', ], - callback: '/drive/callback' + callback: '/drive/callback', }) expect(grantConfig.zoom).toEqual({ key: 'zoom_key', @@ -79,17 +80,17 @@ describe('Test Provider options', () => { authorize_url: 'https://zoom.us/oauth/authorize', redirect_uri: 'http://localhost:3020/zoom/redirect', access_url: 'https://zoom.us/oauth/token', - callback: '/zoom/callback' + callback: '/zoom/callback', }) }) test('adds provider options for secret files', () => { - process.env.COMPANION_DROPBOX_SECRET_FILE = process.env.PWD + '/test/resources/dropbox_secret_file' - process.env.COMPANION_BOX_SECRET_FILE = process.env.PWD + '/test/resources/box_secret_file' - process.env.COMPANION_GOOGLE_SECRET_FILE = process.env.PWD + '/test/resources/google_secret_file' - process.env.COMPANION_INSTAGRAM_SECRET_FILE = process.env.PWD + '/test/resources/instagram_secret_file' - process.env.COMPANION_ZOOM_SECRET_FILE = process.env.PWD + '/test/resources/zoom_secret_file' - process.env.COMPANION_ZOOM_VERIFICATION_TOKEN_FILE = process.env.PWD + '/test/resources/zoom_verification_token_file' + process.env.COMPANION_DROPBOX_SECRET_FILE = `${process.env.PWD}/test/resources/dropbox_secret_file` + process.env.COMPANION_BOX_SECRET_FILE = `${process.env.PWD}/test/resources/box_secret_file` + process.env.COMPANION_GOOGLE_SECRET_FILE = `${process.env.PWD}/test/resources/google_secret_file` + process.env.COMPANION_INSTAGRAM_SECRET_FILE = `${process.env.PWD}/test/resources/instagram_secret_file` + process.env.COMPANION_ZOOM_SECRET_FILE = `${process.env.PWD}/test/resources/zoom_secret_file` + process.env.COMPANION_ZOOM_VERIFICATION_TOKEN_FILE = `${process.env.PWD}/test/resources/zoom_verification_token_file` companionOptions = getCompanionOptions() @@ -143,10 +144,10 @@ describe('Test Custom Provider options', () => { foo: { config: { key: 'foo_key', - secret: 'foo_secret' + secret: 'foo_secret', }, - module: jest.mock() - } + module: jest.mock(), + }, }, providers, grantConfig) expect(grantConfig.foo.key).toBe('foo_key') diff --git a/packages/@uppy/companion/test/__tests__/providers.js b/packages/@uppy/companion/test/__tests__/providers.js index 4773758af..666c891a0 100644 --- a/packages/@uppy/companion/test/__tests__/providers.js +++ b/packages/@uppy/companion/test/__tests__/providers.js @@ -4,7 +4,7 @@ jest.mock('tus-js-client') jest.mock('purest') jest.mock('../../src/server/helpers/request', () => { return { - getURLMeta: () => Promise.resolve({ size: 758051 }) + getURLMeta: () => Promise.resolve({ size: 758051 }), } }) jest.mock('../../src/server/helpers/oauth-state', () => require('../mockoauthstate')()) @@ -13,13 +13,15 @@ const request = require('supertest') const fixtures = require('../fixtures') const tokenService = require('../../src/server/helpers/jwt') const { getServer } = require('../mockserver') + const authServer = getServer() const OAUTH_STATE = 'some-cool-nice-encrytpion' const providers = require('../../src/server/provider').getDefaultProviders() + const providerNames = Object.keys(providers) const AUTH_PROVIDERS = { drive: 'google', - onedrive: 'microsoft' + onedrive: 'microsoft', } const authData = {} providerNames.forEach((provider) => { @@ -76,7 +78,7 @@ describe('download provdier file', () => { .set('Content-Type', 'application/json') .send({ endpoint: 'http://tusd.tusdemo.net/files', - protocol: 'tus' + protocol: 'tus', }) .expect(200) .then((res) => expect(res.body.token).toBeTruthy()) diff --git a/packages/@uppy/companion/test/__tests__/uploader.js b/packages/@uppy/companion/test/__tests__/uploader.js index fee401e23..78cd836e6 100644 --- a/packages/@uppy/companion/test/__tests__/uploader.js +++ b/packages/@uppy/companion/test/__tests__/uploader.js @@ -11,11 +11,11 @@ describe('uploader with tus protocol', () => { test('upload functions with tus protocol', () => { const fileContent = Buffer.from('Some file content') const opts = { - companionOptions: companionOptions, + companionOptions, endpoint: 'http://url.myendpoint.com/files', protocol: 'tus', size: fileContent.length, - pathPrefix: companionOptions.filePath + pathPrefix: companionOptions.filePath, } const uploader = new Uploader(opts) diff --git a/packages/@uppy/companion/test/__tests__/url.js b/packages/@uppy/companion/test/__tests__/url.js index e1f333bfa..2b85a83f7 100644 --- a/packages/@uppy/companion/test/__tests__/url.js +++ b/packages/@uppy/companion/test/__tests__/url.js @@ -5,15 +5,17 @@ jest.mock('../../src/server/helpers/request', () => { return { getURLMeta: (url) => { return Promise.resolve({ size: 7580, type: 'image/jpg' }) - } + }, } }) const { getServer } = require('../mockserver') + const mockServer = getServer() const request = require('supertest') + const invalids = [ // no url at all or unsupported protocol - null, '', 'ftp://url.myendpoint.com/files' + null, '', 'ftp://url.myendpoint.com/files', ] describe('url meta', () => { @@ -22,7 +24,7 @@ describe('url meta', () => { .post('/url/meta') .set('Content-Type', 'application/json') .send({ - url: 'http://url.myendpoint.com/files' + url: 'http://url.myendpoint.com/files', }) .expect(200) .then((res) => { @@ -36,7 +38,7 @@ describe('url meta', () => { .post('/url/meta') .set('Content-Type', 'application/json') .send({ - url: urlCase + url: urlCase, }) .expect(400) .then((res) => expect(res.body.error).toBe('Invalid request body')) @@ -51,7 +53,7 @@ describe('url get', () => { .send({ url: 'http://url.myendpoint.com/files', endpoint: 'http://tusd.tusdemo.net/files', - protocol: 'tus' + protocol: 'tus', }) .expect(200) .then((res) => expect(res.body.token).toBeTruthy()) @@ -64,7 +66,7 @@ describe('url get', () => { .send({ url: urlCase, endpoint: 'http://tusd.tusdemo.net/files', - protocol: 'tus' + protocol: 'tus', }) .expect(400) .then((res) => expect(res.body.error).toBe('Invalid request body')) diff --git a/packages/@uppy/companion/test/fixtures/box.js b/packages/@uppy/companion/test/fixtures/box.js index f47943e6d..70d764052 100644 --- a/packages/@uppy/companion/test/fixtures/box.js +++ b/packages/@uppy/companion/test/fixtures/box.js @@ -3,8 +3,8 @@ const defaults = require('./constants') module.exports.responses = { 'users/me': { get: { - login: defaults.USERNAME - } + login: defaults.USERNAME, + }, }, 'folders/0/items': { get: { @@ -14,24 +14,24 @@ module.exports.responses = { name: defaults.ITEM_NAME, id: defaults.ITEM_ID, modified_at: '2015-05-12T15:50:38Z', - size: defaults.FILE_SIZE - } - ] - } + size: defaults.FILE_SIZE, + }, + ], + }, }, [`files/${defaults.ITEM_ID}`]: { get: { - size: defaults.FILE_SIZE - } + size: defaults.FILE_SIZE, + }, }, 'https://api.box.com/oauth2/revoke': { - post: {} + post: {}, }, [`files/${defaults.ITEM_ID}/content`]: { - get: {} - } + get: {}, + }, } module.exports.expects = { - itemIcon: 'file' + itemIcon: 'file', } diff --git a/packages/@uppy/companion/test/fixtures/drive.js b/packages/@uppy/companion/test/fixtures/drive.js index fba4d94bd..4d00b6aa7 100644 --- a/packages/@uppy/companion/test/fixtures/drive.js +++ b/packages/@uppy/companion/test/fixtures/drive.js @@ -16,13 +16,13 @@ module.exports.responses = { modifiedTime: '2016-07-10T20:00:08.096Z', ownedByMe: true, permissions: [{ role: 'owner', emailAddress: defaults.USERNAME }], - size: '758051' - } - ] - } + size: '758051', + }, + ], + }, }, drives: { - get: { kind: 'drive#driveList', drives: [] } + get: { kind: 'drive#driveList', drives: [] }, }, [`files/${defaults.ITEM_ID}`]: { get: { @@ -35,15 +35,15 @@ module.exports.responses = { modifiedTime: '2016-07-10T20:00:08.096Z', ownedByMe: true, permissions: [{ role: 'owner', emailAddress: 'john.doe@transloadit.com' }], - size: '758051' - } + size: '758051', + }, }, [`files/${defaults.ITEM_ID}?alt=media&supportsAllDrives=true`]: { - get: {} + get: {}, }, 'https://accounts.google.com/o/oauth2/revoke': { - get: {} - } + get: {}, + }, } module.exports.expects = {} diff --git a/packages/@uppy/companion/test/fixtures/dropbox.js b/packages/@uppy/companion/test/fixtures/dropbox.js index 309bf138b..d4ceea432 100644 --- a/packages/@uppy/companion/test/fixtures/dropbox.js +++ b/packages/@uppy/companion/test/fixtures/dropbox.js @@ -8,15 +8,15 @@ module.exports.responses = { surname: 'Ferdinand', familiar_name: 'Franz', display_name: 'Franz Ferdinand (Personal)', - abbreviated_name: 'FF' + abbreviated_name: 'FF', }, email: defaults.USERNAME, email_verified: true, disabled: false, locale: 'en', referral_link: 'https://db.tt/ZITNuhtI', - is_paired: true - } + is_paired: true, + }, }, 'files/list_folder': { post: { @@ -37,28 +37,28 @@ module.exports.responses = { file_lock_info: { is_lockholder: true, lockholder_name: 'Imaginary User', - created: '2015-05-12T15:50:38Z' - } - } + created: '2015-05-12T15:50:38Z', + }, + }, ], cursor: 'ZtkX9_EHj3x7PMkVuFIhwKYXEpwpLwyxp9vMKomUhllil9q7eWiAu', - has_more: false - } + has_more: false, + }, }, 'files/get_metadata': { post: { - size: defaults.FILE_SIZE - } + size: defaults.FILE_SIZE, + }, }, 'auth/token/revoke': { - post: {} + post: {}, }, 'https://content.dropboxapi.com/2/files/download': { - post: {} - } + post: {}, + }, } module.exports.expects = { itemIcon: 'file', - itemRequestPath: '%2Fhomework%2Fmath%2Fprime_numbers.txt' + itemRequestPath: '%2Fhomework%2Fmath%2Fprime_numbers.txt', } diff --git a/packages/@uppy/companion/test/fixtures/facebook.js b/packages/@uppy/companion/test/fixtures/facebook.js index 22d206a1b..20b09bcd7 100644 --- a/packages/@uppy/companion/test/fixtures/facebook.js +++ b/packages/@uppy/companion/test/fixtures/facebook.js @@ -5,8 +5,8 @@ module.exports.responses = { get: { name: 'Fiona Fox', birthday: '01/01/1985', - email: defaults.USERNAME - } + email: defaults.USERNAME, + }, }, 'https://graph.facebook.com/ALBUM-ID/photos': { get: { @@ -16,20 +16,20 @@ module.exports.responses = { { height: 1365, source: defaults.THUMBNAIL_URL, - width: 2048 - } + width: 2048, + }, ], width: 720, height: 479, created_time: '2015-07-17T17:26:50+0000', - id: defaults.ITEM_ID - } + id: defaults.ITEM_ID, + }, ], - paging: {} - } + paging: {}, + }, }, 'me/permissions': { - delete: {} + delete: {}, }, [`https://graph.facebook.com/${defaults.ITEM_ID}?fields=images`]: { get: { @@ -37,20 +37,20 @@ module.exports.responses = { { height: 1365, source: defaults.THUMBNAIL_URL, - width: 2048 - } + width: 2048, + }, ], - id: defaults.ITEM_ID - } + id: defaults.ITEM_ID, + }, }, [defaults.THUMBNAIL_URL]: { - get: {} - } + get: {}, + }, } module.exports.expects = { listPath: 'ALBUM-ID', itemName: `${defaults.ITEM_ID} 2015-07-17T17:26:50+0000`, itemMimeType: 'image/jpeg', - itemSize: null + itemSize: null, } diff --git a/packages/@uppy/companion/test/fixtures/index.js b/packages/@uppy/companion/test/fixtures/index.js index 6082abf23..dba326fbf 100644 --- a/packages/@uppy/companion/test/fixtures/index.js +++ b/packages/@uppy/companion/test/fixtures/index.js @@ -5,7 +5,7 @@ module.exports.providers = { instagram: require('./instagram'), onedrive: require('./onedrive'), facebook: require('./facebook'), - zoom: require('./zoom') + zoom: require('./zoom'), } module.exports.defaults = require('./constants') diff --git a/packages/@uppy/companion/test/fixtures/instagram.js b/packages/@uppy/companion/test/fixtures/instagram.js index ab4d542e4..e0ccf1fb2 100644 --- a/packages/@uppy/companion/test/fixtures/instagram.js +++ b/packages/@uppy/companion/test/fixtures/instagram.js @@ -4,8 +4,8 @@ module.exports.responses = { 'https://graph.instagram.com/me': { get: { id: '17841405793187218', - username: defaults.USERNAME - } + username: defaults.USERNAME, + }, }, 'https://graph.instagram.com/me/media': { get: { @@ -14,26 +14,26 @@ module.exports.responses = { id: defaults.ITEM_ID, media_type: 'IMAGE', timestamp: '2017-08-31T18:10:00+0000', - media_url: defaults.THUMBNAIL_URL - } - ] - } + media_url: defaults.THUMBNAIL_URL, + }, + ], + }, }, [`https://graph.instagram.com/${defaults.ITEM_ID}`]: { get: { id: defaults.ITEM_ID, media_type: 'IMAGE', media_url: defaults.THUMBNAIL_URL, - timestamp: '2017-08-31T18:10:00+0000' - } + timestamp: '2017-08-31T18:10:00+0000', + }, }, [defaults.THUMBNAIL_URL]: { - get: {} - } + get: {}, + }, } module.exports.expects = { itemName: 'Instagram 2017-08-31T18:10:00+00000.jpeg', itemMimeType: 'image/jpeg', - itemSize: null + itemSize: null, } diff --git a/packages/@uppy/companion/test/fixtures/onedrive.js b/packages/@uppy/companion/test/fixtures/onedrive.js index a2c648577..b1eee075b 100644 --- a/packages/@uppy/companion/test/fixtures/onedrive.js +++ b/packages/@uppy/companion/test/fixtures/onedrive.js @@ -4,8 +4,8 @@ module.exports.responses = { me: { get: { userPrincipalName: defaults.USERNAME, - mail: defaults.USERNAME - } + mail: defaults.USERNAME, + }, }, '/me/drive/root/children': { get: { @@ -19,43 +19,43 @@ module.exports.responses = { parentReference: { driveId: 'DUMMY-DRIVE-ID', driveType: 'personal', - path: '/drive/root:' + path: '/drive/root:', }, file: { - mimeType: defaults.MIME_TYPE + mimeType: defaults.MIME_TYPE, }, thumbnails: [{ id: '0', large: { height: 452, url: defaults.THUMBNAIL_URL, - width: 800 + width: 800, }, medium: { height: 100, url: defaults.THUMBNAIL_URL, - width: 176 + width: 176, }, small: { height: 54, url: defaults.THUMBNAIL_URL, - width: 96 - } - }] - } - ] - } + width: 96, + }, + }], + }, + ], + }, }, [`/drives/DUMMY-DRIVE-ID/items/${defaults.ITEM_ID}`]: { get: { - size: defaults.FILE_SIZE - } + size: defaults.FILE_SIZE, + }, }, [`/drives/DUMMY-DRIVE-ID/items/${defaults.ITEM_ID}/content`]: { - get: {} - } + get: {}, + }, } module.exports.expects = { - itemRequestPath: `${defaults.ITEM_ID}?driveId=DUMMY-DRIVE-ID` + itemRequestPath: `${defaults.ITEM_ID}?driveId=DUMMY-DRIVE-ID`, } diff --git a/packages/@uppy/companion/test/fixtures/zoom.js b/packages/@uppy/companion/test/fixtures/zoom.js index b36691e78..66767cd88 100644 --- a/packages/@uppy/companion/test/fixtures/zoom.js +++ b/packages/@uppy/companion/test/fixtures/zoom.js @@ -12,8 +12,8 @@ module.exports.responses = { group_ids: [], im_group_ids: [], account_id: 'DUMMY-ACCOUNT-ID', - language: 'en-US' - } + language: 'en-US', + }, }, 'https://zoom.us/v2/meetings/DUMMY-UUID%3D%3D/recordings': { get: { @@ -40,20 +40,20 @@ module.exports.responses = { play_url: 'https://us02web.zoom.us/rec/play/DUMMY-DOWNLOAD-PATH', download_url: 'https://us02web.zoom.us/rec/download/DUMMY-DOWNLOAD-PATH', status: 'completed', - recording_type: 'shared_screen_with_speaker_view' - } - ] - } + recording_type: 'shared_screen_with_speaker_view', + }, + ], + }, }, 'https://us02web.zoom.us/rec/play/DUMMY-DOWNLOAD-PATH': { - get: {} + get: {}, }, 'https://api.zoom.us/oauth/data/compliance': { - post: {} + post: {}, }, 'https://zoom.us/oauth/revoke': { - post: {} - } + post: {}, + }, } module.exports.expects = { @@ -64,7 +64,7 @@ module.exports.expects = { itemIcon: 'video', remoteZoomKey: 'REMOTE-ZOOM-KEY', remoteZoomSecret: 'REMOTE-ZOOM-SECRET', - remoteZoomVerificationToken: 'REMOTE-ZOOM-VERIFICATION-TOKEN' + remoteZoomVerificationToken: 'REMOTE-ZOOM-VERIFICATION-TOKEN', } module.exports.validators = { @@ -75,5 +75,5 @@ module.exports.validators = { } return true - } + }, } diff --git a/packages/@uppy/companion/test/mockoauthstate.js b/packages/@uppy/companion/test/mockoauthstate.js index f93b15698..63fe9d8b8 100644 --- a/packages/@uppy/companion/test/mockoauthstate.js +++ b/packages/@uppy/companion/test/mockoauthstate.js @@ -20,6 +20,6 @@ module.exports = () => { } return 'http://localhost:3020' - } + }, } } diff --git a/packages/@uppy/companion/test/mockserver.js b/packages/@uppy/companion/test/mockserver.js index cf3a3195e..1ecb71a51 100644 --- a/packages/@uppy/companion/test/mockserver.js +++ b/packages/@uppy/companion/test/mockserver.js @@ -17,7 +17,7 @@ module.exports.getServer = (env) => { authServer.use(session({ secret: 'grant', resave: true, saveUninitialized: true })) authServer.all('*/callback', (req, res, next) => { req.session.grant = { - response: { access_token: 'fake token' } + response: { access_token: 'fake token' }, } next() }) diff --git a/packages/@uppy/dashboard/src/components/FileItem/index.js b/packages/@uppy/dashboard/src/components/FileItem/index.js index 617ca07fc..02db38ce1 100644 --- a/packages/@uppy/dashboard/src/components/FileItem/index.js +++ b/packages/@uppy/dashboard/src/components/FileItem/index.js @@ -67,16 +67,12 @@ module.exports = class FileItem extends Component { file={file} error={error} isUploaded={isUploaded} - hideRetryButton={this.props.hideRetryButton} hideCancelButton={this.props.hideCancelButton} hidePauseResumeButton={this.props.hidePauseResumeButton} - showRemoveButtonAfterComplete={this.props.showRemoveButtonAfterComplete} - resumableUploads={this.props.resumableUploads} individualCancellation={this.props.individualCancellation} - pauseUpload={this.props.pauseUpload} cancelUpload={this.props.cancelUpload} retryUpload={this.props.retryUpload} @@ -95,16 +91,13 @@ module.exports = class FileItem extends Component { =33.0.0", "expo-document-picker": ">=6.0.0", "expo-image-picker": ">=6.0.0", - "expo-permissions": ">=6.0.0" + "expo-permissions": ">=6.0.0", + "react": "^16.0.0 || ^17.0.0", + "react-native": "*" } } diff --git a/packages/@uppy/react/package.json b/packages/@uppy/react/package.json index 86cb9b63a..8b7dce005 100644 --- a/packages/@uppy/react/package.json +++ b/packages/@uppy/react/package.json @@ -31,6 +31,7 @@ "prop-types": "^15.6.1" }, "peerDependencies": { - "@uppy/core": "^1.0.0" + "@uppy/core": "^1.0.0", + "react": "^16.0.0 || ^17.0.0" } } diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json index fb9b09989..a18cd2b0a 100644 --- a/packages/@uppy/transloadit/package.json +++ b/packages/@uppy/transloadit/package.json @@ -32,7 +32,8 @@ "@uppy/tus": "file:../tus", "@uppy/utils": "file:../utils", "component-emitter": "^1.2.1", - "socket.io-client": "~2.2.0" + "socket.io-client": "~2.2.0", + "url-parse": "^1.4.7" }, "peerDependencies": { "@uppy/core": "^1.0.0" diff --git a/packages/@uppy/utils/src/RateLimitedQueue.js b/packages/@uppy/utils/src/RateLimitedQueue.js index 145093e1a..1e6312dda 100644 --- a/packages/@uppy/utils/src/RateLimitedQueue.js +++ b/packages/@uppy/utils/src/RateLimitedQueue.js @@ -1,4 +1,4 @@ -const findIndex = require('@uppy/utils/lib/findIndex') +const findIndex = require('./findIndex') function createCancelError () { return new Error('Cancelled') diff --git a/packages/@uppy/utils/src/fetchWithNetworkError.js b/packages/@uppy/utils/src/fetchWithNetworkError.js index 0c204c9d6..6170d06be 100644 --- a/packages/@uppy/utils/src/fetchWithNetworkError.js +++ b/packages/@uppy/utils/src/fetchWithNetworkError.js @@ -1,4 +1,4 @@ -const NetworkError = require('@uppy/utils/lib/NetworkError') +const NetworkError = require('./NetworkError') /** * Wrapper around window.fetch that throws a NetworkError when appropriate diff --git a/packages/@uppy/utils/src/remoteFileObjToLocal.js b/packages/@uppy/utils/src/remoteFileObjToLocal.js index d4e3ef615..2bc4911df 100644 --- a/packages/@uppy/utils/src/remoteFileObjToLocal.js +++ b/packages/@uppy/utils/src/remoteFileObjToLocal.js @@ -1,4 +1,4 @@ -const getFileNameAndExtension = require('@uppy/utils/lib/getFileNameAndExtension') +const getFileNameAndExtension = require('./getFileNameAndExtension') module.exports = function remoteFileObjToLocal (file) { return { diff --git a/test/.eslintrc.json b/test/.eslintrc.json deleted file mode 100644 index ba3ed6c1c..000000000 --- a/test/.eslintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../.eslintrc.json", - "env": { - "mocha": true - } -} diff --git a/test/endtoend/create-react-app/src/App.js b/test/endtoend/create-react-app/src/App.js index 68c725968..908d0cf96 100644 --- a/test/endtoend/create-react-app/src/App.js +++ b/test/endtoend/create-react-app/src/App.js @@ -1,13 +1,14 @@ import React, { Component } from 'react' +// @uppy/* are available higher up in the dependency tree, but eslint +// does not know about that. +/* eslint-disable import/no-extraneous-dependencies */ import Uppy from '@uppy/core' import Tus from '@uppy/tus' import GoogleDrive from '@uppy/google-drive' import { Dashboard, DashboardModal } from '@uppy/react' -// import { Dashboard, DashboardModal, DragDrop, ProgressBar } from '@uppy/react' import '@uppy/core/dist/style.css' import '@uppy/dashboard/dist/style.css' -// import '@uppy/drag-drop/dist/style.css' -// import '@uppy/progress-bar/dist/style.css' +/* eslint-enable import/no-extraneous-dependencies */ const isOnTravis = process.env.REACT_APP_ON_TRAVIS const endpoint = isOnTravis ? 'http://companion.test:1080' : 'http://localhost:1080' @@ -37,9 +38,9 @@ class App extends Component { } handleModalClick () { - this.setState({ - open: !this.state.open, - }) + this.setState(({ open }) => ({ + open: !open, + })) } render () { @@ -86,27 +87,6 @@ class App extends Component { onRequestClose={() => this.setState({ open: false })} /> - - {/*

Drag Drop Area

-
- -
- -

Progress Bar

-
- -
*/} ) } diff --git a/website/package.json b/website/package.json index d4bd415a6..c95d7bfa6 100644 --- a/website/package.json +++ b/website/package.json @@ -7,14 +7,18 @@ "dependencies": { "@babel/core": "^7.4.4", "@goto-bus-stop/hexo-renderer-postcss": "^2.0.0", + "@octokit/rest": "16.43.1", + "@transloadit/prettier-bytes": "0.0.7", "aliasify": "^2.1.0", "autoprefixer": "^9.5.1", "babelify": "^10.0.0", "browserify": "^16.5.2", + "browser-resolve": "2.0.0", "chalk": "2.4.2", "cssnano": "^4.1.10", "drag-drop": "^4.2.0", "glob": "^7.1.2", + "gzip-size": "5.1.1", "he": "^1.2.0", "hexo": "4.2.1", "hexo-browsersync": "^0.3.0", @@ -41,6 +45,7 @@ "postcss-inline-svg": "^3.1.1", "prismjs": "^1.17.1", "sass": "^1.29.0", + "touch": "3.1.0", "watchify": "^3.11.0" }, "scripts": { diff --git a/website/private_modules/hexo-renderer-uppyexamples/package.json b/website/private_modules/hexo-renderer-uppyexamples/package.json index a01450cd1..897b0652e 100644 --- a/website/private_modules/hexo-renderer-uppyexamples/package.json +++ b/website/private_modules/hexo-renderer-uppyexamples/package.json @@ -2,5 +2,8 @@ "name": "hexo-renderer-uppyexamples", "version": "0.0.1", "private": true, - "main": "index" + "main": "index", + "dependencies": { + "uuid": "3.4.0" + } }