From 6af9012e5b9ef2ed6f4fe8a9696b40ac0e8da4d0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 1 Nov 2020 19:26:04 +0100 Subject: [PATCH] Initial portage to TypeScript. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .eslintrc | 165 +- flow-typed/npm/babel-eslint_vx.x.x.js | 122 - flow-typed/npm/clinic_vx.x.x.js | 382 --- flow-typed/npm/eslint-config-google_vx.x.x.js | 33 - flow-typed/npm/eslint-config-node_vx.x.x.js | 18 - .../npm/eslint-plugin-flowtype_vx.x.x.js | 520 ---- flow-typed/npm/eslint_vx.x.x.js | 2726 ----------------- flow-typed/npm/flow-bin_v0.x.x.js | 6 - flow-typed/npm/flow-typed_vx.x.x.js | 186 -- flow-typed/npm/npm-check_vx.x.x.js | 296 -- flow-typed/npm/uuid_v8.x.x.js | 74 - flow-typed/npm/winston_v3.x.x.js | 156 - flow-typed/npm/worker-threads-pool_vx.x.x.js | 33 - flow-typed/npm/ws_v7.x.x.js | 363 --- package-lock.json | 2263 ++++---------- package.json | 44 +- .../abb-atg.station-template.json | 119 + .../AutomaticTransactionGenerator.js | 124 - .../AutomaticTransactionGenerator.ts | 128 + ...{ChargingStation.js => ChargingStation.ts} | 339 +- .../{OcppError.js => OcppError.ts} | 9 +- .../{StationWorker.js => StationWorker.ts} | 4 +- src/charging-station/{Worker.js => Worker.ts} | 51 +- src/{start.js => start.ts} | 16 +- src/types/MeasurandValues.ts | 6 + .../{Configuration.js => Configuration.ts} | 2 +- src/utils/{Constants.js => Constants.ts} | 12 +- .../{ElectricUtils.js => ElectricUtils.ts} | 10 +- src/utils/{Logger.js => Logger.ts} | 6 +- src/utils/{Statistics.js => Statistics.ts} | 32 +- src/utils/{Utils.js => Utils.ts} | 65 +- tsconfig.json | 72 + 32 files changed, 1318 insertions(+), 7064 deletions(-) delete mode 100644 flow-typed/npm/babel-eslint_vx.x.x.js delete mode 100644 flow-typed/npm/clinic_vx.x.x.js delete mode 100644 flow-typed/npm/eslint-config-google_vx.x.x.js delete mode 100644 flow-typed/npm/eslint-config-node_vx.x.x.js delete mode 100644 flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js delete mode 100644 flow-typed/npm/eslint_vx.x.x.js delete mode 100644 flow-typed/npm/flow-bin_v0.x.x.js delete mode 100644 flow-typed/npm/flow-typed_vx.x.x.js delete mode 100644 flow-typed/npm/npm-check_vx.x.x.js delete mode 100644 flow-typed/npm/uuid_v8.x.x.js delete mode 100644 flow-typed/npm/winston_v3.x.x.js delete mode 100644 flow-typed/npm/worker-threads-pool_vx.x.x.js delete mode 100644 flow-typed/npm/ws_v7.x.x.js create mode 100644 src/assets/station-templates/abb-atg.station-template.json delete mode 100644 src/charging-station/AutomaticTransactionGenerator.js create mode 100644 src/charging-station/AutomaticTransactionGenerator.ts rename src/charging-station/{ChargingStation.js => ChargingStation.ts} (81%) rename src/charging-station/{OcppError.js => OcppError.ts} (66%) rename src/charging-station/{StationWorker.js => StationWorker.ts} (53%) rename src/charging-station/{Worker.js => Worker.ts} (67%) rename src/{start.js => start.ts} (79%) create mode 100644 src/types/MeasurandValues.ts rename src/utils/{Configuration.js => Configuration.ts} (98%) rename src/utils/{Constants.js => Constants.ts} (93%) rename src/utils/{ElectricUtils.js => ElectricUtils.ts} (67%) rename src/utils/{Logger.js => Logger.ts} (77%) rename src/utils/{Statistics.js => Statistics.ts} (86%) rename src/utils/{Utils.js => Utils.ts} (71%) create mode 100644 tsconfig.json diff --git a/.eslintrc b/.eslintrc index e34e03a9..f44ad63d 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,25 +1,105 @@ { - "parser": "babel-eslint", + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json" + }, "extends": [ "eslint:recommended", - "plugin:flowtype/recommended", - "node", - "google" + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking" ], "plugins": [ - "flowtype" + "@typescript-eslint" ], "rules": { - "require-jsdoc": 0, - "import/no-commonjs": [ + "indent": "off", + "@typescript-eslint/indent": [ + "error", 2, { - "allowRequire": true, - "allowPrimitiveModules": true + "SwitchCase": 1 } ], - "import/no-nodejs-modules": 0, - "flowtype/no-types-missing-file-annotation": 0, + "@typescript-eslint/array-type": "off", + "semi": "off", + "@typescript-eslint/semi": [ + "error", + "always" + ], + "space-before-blocks": [ + "error", + "always" + ], + "@typescript-eslint/no-empty-function": [ + "warn", + { + "allow": [ + "arrowFunctions", + "methods" + ] + } + ], + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/no-misused-promises": "error", + "curly": "error", + "brace-style": "error", + "eqeqeq": [ + "error", + "always" + ], + "no-else-return": "error", + "no-eq-null": "error", + "no-undefined": "error", + "no-extra-bind": "error", + "no-lone-blocks": "error", + "no-multi-spaces": "error", + "no-empty": "error", + "no-return-assign": [ + "error", + "always" + ], + "no-useless-catch": "error", + "no-useless-return": "error", + "no-shadow": "error", + "no-multiple-empty-lines": [ + "error", + { + "max": 2, + "maxEOF": 1 + } + ], + "block-spacing": "error", + "capitalized-comments": [ + "error", + "always", + { + "ignoreConsecutiveComments": true, + "ignorePattern": "pragma|ignored" + } + ], + "eol-last": [ + "error", + "always" + ], + "consistent-this": [ + "error", + "self" + ], + "func-call-spacing": [ + "error", + "never" + ], + "keyword-spacing": [ + "error" + ], + "linebreak-style": [ + "error", + "unix" + ], "max-len": [ "warn", { @@ -31,6 +111,69 @@ "ignoreRegExpLiterals": true, "ignorePattern": "(^(import|export)|(public|private))\\s.+;" } + ], + "no-lonely-if": "error", + "no-trailing-spaces": "error", + "no-whitespace-before-property": "error", + "space-before-function-paren": [ + "error", + { + "anonymous": "never", + "named": "never", + "asyncArrow": "always" + } + ], + "space-in-parens": [ + "error", + "never" + ], + "space-infix-ops": "error", + "space-unary-ops": "error", + "spaced-comment": [ + "error", + "always" + ], + "switch-colon-spacing": "error", + "arrow-body-style": [ + "error", + "as-needed" + ], + "arrow-parens": [ + "error", + "always" + ], + "arrow-spacing": "error", + "no-duplicate-imports": "error", + "no-var": "error", + "prefer-const": "error", + "sort-imports": [ + "warn", + { + "ignoreCase": false, + "ignoreDeclarationSort": false, + "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single" + ] + } + ], + "object-curly-spacing": [ + "error", + "always" + ], + "lines-between-class-members": [ + "error", + "always", + { + "exceptAfterSingleLine": true + } + ], + "quotes": [ + "error", + "single" ] } } diff --git a/flow-typed/npm/babel-eslint_vx.x.x.js b/flow-typed/npm/babel-eslint_vx.x.x.js deleted file mode 100644 index 05f52652..00000000 --- a/flow-typed/npm/babel-eslint_vx.x.x.js +++ /dev/null @@ -1,122 +0,0 @@ -// flow-typed signature: 6334367253781eafb63df8d92be47d8d -// flow-typed version: <>/babel-eslint_v^10.1.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-eslint' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-eslint' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-eslint/lib/analyze-scope' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/attachComments' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/convertComments' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toAST' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toToken' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toTokens' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/parse-with-scope' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/parse' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/require-from-eslint' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/visitor-keys' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-eslint/lib/analyze-scope.js' { - declare module.exports: $Exports<'babel-eslint/lib/analyze-scope'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/attachComments.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/attachComments'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/convertComments.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertComments'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertTemplateType'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/index' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/index.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toAST.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toAST'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toToken.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toToken'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toTokens.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toTokens'>; -} -declare module 'babel-eslint/lib/index' { - declare module.exports: $Exports<'babel-eslint/lib'>; -} -declare module 'babel-eslint/lib/index.js' { - declare module.exports: $Exports<'babel-eslint/lib'>; -} -declare module 'babel-eslint/lib/parse-with-scope.js' { - declare module.exports: $Exports<'babel-eslint/lib/parse-with-scope'>; -} -declare module 'babel-eslint/lib/parse.js' { - declare module.exports: $Exports<'babel-eslint/lib/parse'>; -} -declare module 'babel-eslint/lib/require-from-eslint.js' { - declare module.exports: $Exports<'babel-eslint/lib/require-from-eslint'>; -} -declare module 'babel-eslint/lib/visitor-keys.js' { - declare module.exports: $Exports<'babel-eslint/lib/visitor-keys'>; -} diff --git a/flow-typed/npm/clinic_vx.x.x.js b/flow-typed/npm/clinic_vx.x.x.js deleted file mode 100644 index 7d649e02..00000000 --- a/flow-typed/npm/clinic_vx.x.x.js +++ /dev/null @@ -1,382 +0,0 @@ -// flow-typed signature: 7ce143f62e46f69c1f0d226420c51772 -// flow-typed version: <>/clinic_v^7.0.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'clinic' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'clinic' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'clinic/bin' { - declare module.exports: any; -} - -declare module 'clinic/lib/authenticate' { - declare module.exports: any; -} - -declare module 'clinic/lib/clean' { - declare module.exports: any; -} - -declare module 'clinic/lib/get-ask-message' { - declare module.exports: any; -} - -declare module 'clinic/lib/help-formatter' { - declare module.exports: any; -} - -declare module 'clinic/lib/tar-and-upload' { - declare module.exports: any; -} - -declare module 'clinic/test-local/cli-doctor-collect-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test-local/cli-flame-collect-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test-local/cli-flame-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test-local/cli-flame-passthrough-flags' { - declare module.exports: any; -} - -declare module 'clinic/test-local/cli-flame-visualize-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/authenticate.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-ask-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-ask-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-ask-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-autocannon.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-collect-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-non-node.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-version.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-bubbleprof-visualize-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-clean-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-clean-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-clinic-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-clinic-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-clinic-version.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-collect-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-non-node.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-version.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-doctor-visualize-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-full.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-non-node.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-upload.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-version.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-flame-visualize-only.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-login-logout.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-upload-files.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-upload-help.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli-upload-no-args.test' { - declare module.exports: any; -} - -declare module 'clinic/test/cli' { - declare module.exports: any; -} - -declare module 'clinic/test/fake-upload-server' { - declare module.exports: any; -} - -declare module 'clinic/test/help-formatter.test' { - declare module.exports: any; -} - -declare module 'clinic/test/server' { - declare module.exports: any; -} - -declare module 'clinic/test/tar-and-upload.test' { - declare module.exports: any; -} - -// Filename aliases -declare module 'clinic/bin.js' { - declare module.exports: $Exports<'clinic/bin'>; -} -declare module 'clinic/lib/authenticate.js' { - declare module.exports: $Exports<'clinic/lib/authenticate'>; -} -declare module 'clinic/lib/clean.js' { - declare module.exports: $Exports<'clinic/lib/clean'>; -} -declare module 'clinic/lib/get-ask-message.js' { - declare module.exports: $Exports<'clinic/lib/get-ask-message'>; -} -declare module 'clinic/lib/help-formatter.js' { - declare module.exports: $Exports<'clinic/lib/help-formatter'>; -} -declare module 'clinic/lib/tar-and-upload.js' { - declare module.exports: $Exports<'clinic/lib/tar-and-upload'>; -} -declare module 'clinic/test-local/cli-doctor-collect-only.test.js' { - declare module.exports: $Exports<'clinic/test-local/cli-doctor-collect-only.test'>; -} -declare module 'clinic/test-local/cli-flame-collect-only.test.js' { - declare module.exports: $Exports<'clinic/test-local/cli-flame-collect-only.test'>; -} -declare module 'clinic/test-local/cli-flame-full.test.js' { - declare module.exports: $Exports<'clinic/test-local/cli-flame-full.test'>; -} -declare module 'clinic/test-local/cli-flame-passthrough-flags.js' { - declare module.exports: $Exports<'clinic/test-local/cli-flame-passthrough-flags'>; -} -declare module 'clinic/test-local/cli-flame-visualize-only.test.js' { - declare module.exports: $Exports<'clinic/test-local/cli-flame-visualize-only.test'>; -} -declare module 'clinic/test/authenticate.test.js' { - declare module.exports: $Exports<'clinic/test/authenticate.test'>; -} -declare module 'clinic/test/cli-ask-full.test.js' { - declare module.exports: $Exports<'clinic/test/cli-ask-full.test'>; -} -declare module 'clinic/test/cli-ask-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-ask-help.test'>; -} -declare module 'clinic/test/cli-ask-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-ask-no-args.test'>; -} -declare module 'clinic/test/cli-autocannon.test.js' { - declare module.exports: $Exports<'clinic/test/cli-autocannon.test'>; -} -declare module 'clinic/test/cli-bubbleprof-collect-only.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-collect-only.test'>; -} -declare module 'clinic/test/cli-bubbleprof-full.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-full.test'>; -} -declare module 'clinic/test/cli-bubbleprof-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-help.test'>; -} -declare module 'clinic/test/cli-bubbleprof-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-no-args.test'>; -} -declare module 'clinic/test/cli-bubbleprof-non-node.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-non-node.test'>; -} -declare module 'clinic/test/cli-bubbleprof-version.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-version.test'>; -} -declare module 'clinic/test/cli-bubbleprof-visualize-only.test.js' { - declare module.exports: $Exports<'clinic/test/cli-bubbleprof-visualize-only.test'>; -} -declare module 'clinic/test/cli-clean-full.test.js' { - declare module.exports: $Exports<'clinic/test/cli-clean-full.test'>; -} -declare module 'clinic/test/cli-clean-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-clean-help.test'>; -} -declare module 'clinic/test/cli-clinic-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-clinic-help.test'>; -} -declare module 'clinic/test/cli-clinic-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-clinic-no-args.test'>; -} -declare module 'clinic/test/cli-clinic-version.test.js' { - declare module.exports: $Exports<'clinic/test/cli-clinic-version.test'>; -} -declare module 'clinic/test/cli-doctor-collect-only.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-collect-only.test'>; -} -declare module 'clinic/test/cli-doctor-full.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-full.test'>; -} -declare module 'clinic/test/cli-doctor-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-help.test'>; -} -declare module 'clinic/test/cli-doctor-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-no-args.test'>; -} -declare module 'clinic/test/cli-doctor-non-node.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-non-node.test'>; -} -declare module 'clinic/test/cli-doctor-version.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-version.test'>; -} -declare module 'clinic/test/cli-doctor-visualize-only.test.js' { - declare module.exports: $Exports<'clinic/test/cli-doctor-visualize-only.test'>; -} -declare module 'clinic/test/cli-flame-full.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-full.test'>; -} -declare module 'clinic/test/cli-flame-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-help.test'>; -} -declare module 'clinic/test/cli-flame-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-no-args.test'>; -} -declare module 'clinic/test/cli-flame-non-node.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-non-node.test'>; -} -declare module 'clinic/test/cli-flame-upload.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-upload.test'>; -} -declare module 'clinic/test/cli-flame-version.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-version.test'>; -} -declare module 'clinic/test/cli-flame-visualize-only.test.js' { - declare module.exports: $Exports<'clinic/test/cli-flame-visualize-only.test'>; -} -declare module 'clinic/test/cli-login-logout.test.js' { - declare module.exports: $Exports<'clinic/test/cli-login-logout.test'>; -} -declare module 'clinic/test/cli-upload-files.test.js' { - declare module.exports: $Exports<'clinic/test/cli-upload-files.test'>; -} -declare module 'clinic/test/cli-upload-help.test.js' { - declare module.exports: $Exports<'clinic/test/cli-upload-help.test'>; -} -declare module 'clinic/test/cli-upload-no-args.test.js' { - declare module.exports: $Exports<'clinic/test/cli-upload-no-args.test'>; -} -declare module 'clinic/test/cli.js' { - declare module.exports: $Exports<'clinic/test/cli'>; -} -declare module 'clinic/test/fake-upload-server.js' { - declare module.exports: $Exports<'clinic/test/fake-upload-server'>; -} -declare module 'clinic/test/help-formatter.test.js' { - declare module.exports: $Exports<'clinic/test/help-formatter.test'>; -} -declare module 'clinic/test/server.js' { - declare module.exports: $Exports<'clinic/test/server'>; -} -declare module 'clinic/test/tar-and-upload.test.js' { - declare module.exports: $Exports<'clinic/test/tar-and-upload.test'>; -} diff --git a/flow-typed/npm/eslint-config-google_vx.x.x.js b/flow-typed/npm/eslint-config-google_vx.x.x.js deleted file mode 100644 index 850c7cfd..00000000 --- a/flow-typed/npm/eslint-config-google_vx.x.x.js +++ /dev/null @@ -1,33 +0,0 @@ -// flow-typed signature: 6d53b8beb7564f054aa77b01a0bdc854 -// flow-typed version: <>/eslint-config-google_v^0.14.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'eslint-config-google' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'eslint-config-google' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ - - -// Filename aliases -declare module 'eslint-config-google/index' { - declare module.exports: $Exports<'eslint-config-google'>; -} -declare module 'eslint-config-google/index.js' { - declare module.exports: $Exports<'eslint-config-google'>; -} diff --git a/flow-typed/npm/eslint-config-node_vx.x.x.js b/flow-typed/npm/eslint-config-node_vx.x.x.js deleted file mode 100644 index 439e5a7e..00000000 --- a/flow-typed/npm/eslint-config-node_vx.x.x.js +++ /dev/null @@ -1,18 +0,0 @@ -// flow-typed signature: 266abab1324d9dc432f9945dfa50e622 -// flow-typed version: <>/eslint-config-node_v^4.1.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'eslint-config-node' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'eslint-config-node' { - declare module.exports: any; -} diff --git a/flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js b/flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js deleted file mode 100644 index 8e204c61..00000000 --- a/flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js +++ /dev/null @@ -1,520 +0,0 @@ -// flow-typed signature: 8758aa073e18e09c34d2f362252e3a67 -// flow-typed version: <>/eslint-plugin-flowtype_v^5.2.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'eslint-plugin-flowtype' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'eslint-plugin-flowtype' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'eslint-plugin-flowtype/dist/bin/addAssertions' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/bin/checkDocs' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/bin/checkTests' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/bin/utilities' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/isSimpleType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/needWrap' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyleComplexType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyleSimpleType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/arrowParens' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/booleanStyle' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/defineFlowType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/genericSpacing' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/newlineAfterFlowAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noExistentialType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noFlowFixMeComments' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noMixed' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noMutableArray' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noTypesMissingFileAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noUnusedExpressions' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireCompoundTypeAlias' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireExactType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireIndexerName' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireInexactType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireParameterType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireReadonlyReactProps' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireReturnType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireTypesAtTop' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/requireVariableType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/semi' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/sortKeys' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/spreadExactType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateVariables' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/typeImportStyle' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/useFlowType' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/rules/validSyntax' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/getParameterName' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/isNoFlowFile' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/isNoFlowFileAnnotation' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/quoteName' { - declare module.exports: any; -} - -declare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers' { - declare module.exports: any; -} - -// Filename aliases -declare module 'eslint-plugin-flowtype/dist/bin/addAssertions.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/bin/addAssertions'>; -} -declare module 'eslint-plugin-flowtype/dist/bin/checkDocs.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/bin/checkDocs'>; -} -declare module 'eslint-plugin-flowtype/dist/bin/checkTests.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/bin/checkTests'>; -} -declare module 'eslint-plugin-flowtype/dist/bin/utilities.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/bin/utilities'>; -} -declare module 'eslint-plugin-flowtype/dist/index' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist'>; -} -declare module 'eslint-plugin-flowtype/dist/index.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/index' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyle'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/index.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyle'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/isSimpleType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyle/isSimpleType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyle/needWrap.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyle/needWrap'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyleComplexType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyleComplexType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrayStyleSimpleType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrayStyleSimpleType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/arrowParens.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/arrowParens'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/booleanStyle.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/booleanStyle'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/defineFlowType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/defineFlowType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/delimiterDangle'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/genericSpacing.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/genericSpacing'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/newlineAfterFlowAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/newlineAfterFlowAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noDupeKeys'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noExistentialType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noExistentialType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noFlowFixMeComments.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noFlowFixMeComments'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noMixed.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noMixed'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noMutableArray.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noMutableArray'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noTypesMissingFileAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noTypesMissingFileAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noUnusedExpressions.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noUnusedExpressions'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noWeakTypes'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireCompoundTypeAlias.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireCompoundTypeAlias'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireExactType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireExactType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireIndexerName.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireIndexerName'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireInexactType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireInexactType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireParameterType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireParameterType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireReadonlyReactProps.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireReadonlyReactProps'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireReturnType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireReturnType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireTypesAtTop.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireTypesAtTop'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/requireVariableType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireVariableType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/semi.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/semi'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/sortKeys.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/sortKeys'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/spreadExactType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spreadExactType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateVariables.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateVariables'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeIdMatch'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/typeImportStyle.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeImportStyle'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/useFlowType.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/useFlowType'>; -} -declare module 'eslint-plugin-flowtype/dist/rules/validSyntax.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/validSyntax'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/getParameterName.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getParameterName'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/index' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/index.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFile'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/isNoFlowFile.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isNoFlowFile'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/isNoFlowFileAnnotation.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isNoFlowFileAnnotation'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/quoteName.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/quoteName'>; -} -declare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers.js' { - declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/spacingFixers'>; -} diff --git a/flow-typed/npm/eslint_vx.x.x.js b/flow-typed/npm/eslint_vx.x.x.js deleted file mode 100644 index ff8969c9..00000000 --- a/flow-typed/npm/eslint_vx.x.x.js +++ /dev/null @@ -1,2726 +0,0 @@ -// flow-typed signature: 87284ccc293a1202f0475fb0dde28ec3 -// flow-typed version: <>/eslint_v^7.11.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'eslint' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'eslint' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'eslint/bin/eslint' { - declare module.exports: any; -} - -declare module 'eslint/conf/config-schema' { - declare module.exports: any; -} - -declare module 'eslint/conf/default-cli-options' { - declare module.exports: any; -} - -declare module 'eslint/conf/eslint-all' { - declare module.exports: any; -} - -declare module 'eslint/conf/eslint-recommended' { - declare module.exports: any; -} - -declare module 'eslint/lib/api' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/cascading-config-array-factory' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/cli-engine' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array-factory' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/config-array' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/config-dependency' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/extracted-config' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/ignore-pattern' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/override-tester' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/file-enumerator' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/checkstyle' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/codeframe' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/compact' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/html' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/jslint-xml' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/json-with-metadata' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/json' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/junit' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/stylish' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/table' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/tap' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/unix' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/visualstudio' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/hash' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/lint-result-cache' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/load-rules' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/xml-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli' { - declare module.exports: any; -} - -declare module 'eslint/lib/eslint/eslint' { - declare module.exports: any; -} - -declare module 'eslint/lib/eslint' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/autoconfig' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-file' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-initializer' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-rule' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/npm-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/source-code-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/apply-disable-directives' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-analyzer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-segment' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-state' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/debug-helpers' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/fork-context' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/id-generator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/config-comment-parser' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/interpolate' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/linter' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/node-event-generator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/report-translator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/rule-fixer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/rules' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/safe-emitter' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/source-code-fixer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/timing' { - declare module.exports: any; -} - -declare module 'eslint/lib/options' { - declare module.exports: any; -} - -declare module 'eslint/lib/rule-tester' { - declare module.exports: any; -} - -declare module 'eslint/lib/rule-tester/rule-tester' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/accessor-pairs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-bracket-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-bracket-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-callback-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-element-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-body-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/block-scoped-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/block-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/brace-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/callback-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/camelcase' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/capitalized-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/class-methods-use-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-dangle' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/complexity' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/computed-property-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/consistent-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/consistent-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/constructor-super' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/curly' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/default-case-last' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/default-case' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/default-param-last' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/dot-location' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/dot-notation' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/eol-last' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/eqeqeq' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/for-direction' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-call-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-name-matching' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-names' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/function-call-argument-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/function-paren-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/generator-star-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/getter-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/global-require' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/grouped-accessor-pairs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/guard-for-in' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/handle-callback-err' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-blacklist' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-denylist' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-length' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-match' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/implicit-arrow-linebreak' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/indent-legacy' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/indent' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/init-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/jsx-quotes' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/key-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/keyword-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/line-comment-position' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/linebreak-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-around-comment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-around-directive' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-between-class-members' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-classes-per-file' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-depth' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-len' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-lines-per-function' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-lines' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-nested-callbacks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-params' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-statements-per-line' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-statements' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/multiline-comment-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/multiline-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/new-cap' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/new-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-after-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-before-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-per-chained-call' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-alert' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-array-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-async-promise-executor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-await-in-loop' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-bitwise' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-buffer-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-caller' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-case-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-catch-shadow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-class-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-compare-neg-zero' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-cond-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-confusing-arrow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-console' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-const-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-constant-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-constructor-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-continue' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-control-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-debugger' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-delete-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-div-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-args' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-class-members' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-else-if' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-keys' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-duplicate-case' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-duplicate-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-else-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-character-class' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-function' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-pattern' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-eq-null' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-eval' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-ex-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extend-native' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-bind' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-boolean-cast' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-label' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-semi' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-fallthrough' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-floating-decimal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-func-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-global-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implicit-coercion' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implicit-globals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implied-eval' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-import-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-inline-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-inner-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-invalid-regexp' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-invalid-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-irregular-whitespace' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-iterator' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-label-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-labels' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-lone-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-lonely-if' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-loop-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-loss-of-precision' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-magic-numbers' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-misleading-character-class' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-operators' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-requires' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-str' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multiple-empty-lines' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-native-reassign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-negated-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-negated-in-lhs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-nested-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-object' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-require' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-symbol' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-wrappers' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-obj-calls' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-octal-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-octal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-param-reassign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-path-concat' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-plusplus' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-process-env' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-process-exit' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-promise-executor-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-proto' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-prototype-builtins' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-redeclare' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-regex-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-exports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-globals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-modules' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-properties' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-syntax' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-return-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-return-await' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-script-url' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-self-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-self-compare' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sequences' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-setter-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-shadow-restricted-names' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-shadow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-spaced-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sparse-arrays' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sync' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-tabs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-template-curly-in-string' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-this-before-super' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-throw-literal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-trailing-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undef-init' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undef' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undefined' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-underscore-dangle' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unexpected-multiline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unmodified-loop-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unneeded-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unreachable-loop' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unreachable' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unsafe-finally' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unsafe-negation' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-expressions' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-labels' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-vars' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-use-before-define' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-backreference' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-call' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-catch' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-computed-key' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-concat' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-rename' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-void' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-warning-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-whitespace-before-property' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-with' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/nonblock-statement-body-position' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-curly-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-curly-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-property-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-shorthand' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/one-var-declaration-per-line' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/one-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/operator-assignment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/operator-linebreak' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/padded-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/padding-line-between-statements' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-arrow-callback' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-const' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-destructuring' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-exponentiation-operator' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-named-capture-group' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-numeric-literals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-object-spread' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-promise-reject-errors' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-reflect' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-regex-literals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-rest-params' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-spread' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-template' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/quote-props' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/quotes' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/radix' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-atomic-updates' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-await' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-jsdoc' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-unicode-regexp' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-yield' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/rest-spread-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-keys' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-vars' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-before-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-before-function-paren' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-in-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-infix-ops' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-unary-ops' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/spaced-comment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/strict' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/switch-colon-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/symbol-description' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/template-curly-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/template-tag-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/unicode-bom' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/use-isnan' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/ast-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/fix-tracker' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/keywords' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/lazy-loading-rule-map' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/patterns/letters' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-combining-character' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-emoji-modifier' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-surrogate-pair' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/valid-jsdoc' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/valid-typeof' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/vars-on-top' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/wrap-iife' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/wrap-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/yield-star-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/yoda' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/ajv' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/ast-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/config-validator' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/deprecation-warnings' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/logging' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/relative-module-resolver' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/runtime-info' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/traverser' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/types' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/source-code' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/backward-token-comment-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/backward-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/cursors' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/decorative-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/filter-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/forward-token-comment-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/forward-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/limit-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/padded-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/skip-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/utils' { - declare module.exports: any; -} - -// Filename aliases -declare module 'eslint/bin/eslint.js' { - declare module.exports: $Exports<'eslint/bin/eslint'>; -} -declare module 'eslint/conf/config-schema.js' { - declare module.exports: $Exports<'eslint/conf/config-schema'>; -} -declare module 'eslint/conf/default-cli-options.js' { - declare module.exports: $Exports<'eslint/conf/default-cli-options'>; -} -declare module 'eslint/conf/eslint-all.js' { - declare module.exports: $Exports<'eslint/conf/eslint-all'>; -} -declare module 'eslint/conf/eslint-recommended.js' { - declare module.exports: $Exports<'eslint/conf/eslint-recommended'>; -} -declare module 'eslint/lib/api.js' { - declare module.exports: $Exports<'eslint/lib/api'>; -} -declare module 'eslint/lib/cli-engine/cascading-config-array-factory.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/cascading-config-array-factory'>; -} -declare module 'eslint/lib/cli-engine/cli-engine.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/cli-engine'>; -} -declare module 'eslint/lib/cli-engine/config-array-factory.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array-factory'>; -} -declare module 'eslint/lib/cli-engine/config-array/config-array.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/config-array'>; -} -declare module 'eslint/lib/cli-engine/config-array/config-dependency.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/config-dependency'>; -} -declare module 'eslint/lib/cli-engine/config-array/extracted-config.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/extracted-config'>; -} -declare module 'eslint/lib/cli-engine/config-array/ignore-pattern.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/ignore-pattern'>; -} -declare module 'eslint/lib/cli-engine/config-array/index' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array'>; -} -declare module 'eslint/lib/cli-engine/config-array/index.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array'>; -} -declare module 'eslint/lib/cli-engine/config-array/override-tester.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/override-tester'>; -} -declare module 'eslint/lib/cli-engine/file-enumerator.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/file-enumerator'>; -} -declare module 'eslint/lib/cli-engine/formatters/checkstyle.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/checkstyle'>; -} -declare module 'eslint/lib/cli-engine/formatters/codeframe.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/codeframe'>; -} -declare module 'eslint/lib/cli-engine/formatters/compact.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/compact'>; -} -declare module 'eslint/lib/cli-engine/formatters/html.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/html'>; -} -declare module 'eslint/lib/cli-engine/formatters/jslint-xml.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/jslint-xml'>; -} -declare module 'eslint/lib/cli-engine/formatters/json-with-metadata.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/json-with-metadata'>; -} -declare module 'eslint/lib/cli-engine/formatters/json.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/json'>; -} -declare module 'eslint/lib/cli-engine/formatters/junit.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/junit'>; -} -declare module 'eslint/lib/cli-engine/formatters/stylish.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/stylish'>; -} -declare module 'eslint/lib/cli-engine/formatters/table.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/table'>; -} -declare module 'eslint/lib/cli-engine/formatters/tap.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/tap'>; -} -declare module 'eslint/lib/cli-engine/formatters/unix.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/unix'>; -} -declare module 'eslint/lib/cli-engine/formatters/visualstudio.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/visualstudio'>; -} -declare module 'eslint/lib/cli-engine/hash.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/hash'>; -} -declare module 'eslint/lib/cli-engine/index' { - declare module.exports: $Exports<'eslint/lib/cli-engine'>; -} -declare module 'eslint/lib/cli-engine/index.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine'>; -} -declare module 'eslint/lib/cli-engine/lint-result-cache.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/lint-result-cache'>; -} -declare module 'eslint/lib/cli-engine/load-rules.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/load-rules'>; -} -declare module 'eslint/lib/cli-engine/xml-escape.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/xml-escape'>; -} -declare module 'eslint/lib/cli.js' { - declare module.exports: $Exports<'eslint/lib/cli'>; -} -declare module 'eslint/lib/eslint/eslint.js' { - declare module.exports: $Exports<'eslint/lib/eslint/eslint'>; -} -declare module 'eslint/lib/eslint/index' { - declare module.exports: $Exports<'eslint/lib/eslint'>; -} -declare module 'eslint/lib/eslint/index.js' { - declare module.exports: $Exports<'eslint/lib/eslint'>; -} -declare module 'eslint/lib/init/autoconfig.js' { - declare module.exports: $Exports<'eslint/lib/init/autoconfig'>; -} -declare module 'eslint/lib/init/config-file.js' { - declare module.exports: $Exports<'eslint/lib/init/config-file'>; -} -declare module 'eslint/lib/init/config-initializer.js' { - declare module.exports: $Exports<'eslint/lib/init/config-initializer'>; -} -declare module 'eslint/lib/init/config-rule.js' { - declare module.exports: $Exports<'eslint/lib/init/config-rule'>; -} -declare module 'eslint/lib/init/npm-utils.js' { - declare module.exports: $Exports<'eslint/lib/init/npm-utils'>; -} -declare module 'eslint/lib/init/source-code-utils.js' { - declare module.exports: $Exports<'eslint/lib/init/source-code-utils'>; -} -declare module 'eslint/lib/linter/apply-disable-directives.js' { - declare module.exports: $Exports<'eslint/lib/linter/apply-disable-directives'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-analyzer.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-analyzer'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-segment.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-segment'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-state.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-state'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path'>; -} -declare module 'eslint/lib/linter/code-path-analysis/debug-helpers.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/debug-helpers'>; -} -declare module 'eslint/lib/linter/code-path-analysis/fork-context.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/fork-context'>; -} -declare module 'eslint/lib/linter/code-path-analysis/id-generator.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/id-generator'>; -} -declare module 'eslint/lib/linter/config-comment-parser.js' { - declare module.exports: $Exports<'eslint/lib/linter/config-comment-parser'>; -} -declare module 'eslint/lib/linter/index' { - declare module.exports: $Exports<'eslint/lib/linter'>; -} -declare module 'eslint/lib/linter/index.js' { - declare module.exports: $Exports<'eslint/lib/linter'>; -} -declare module 'eslint/lib/linter/interpolate.js' { - declare module.exports: $Exports<'eslint/lib/linter/interpolate'>; -} -declare module 'eslint/lib/linter/linter.js' { - declare module.exports: $Exports<'eslint/lib/linter/linter'>; -} -declare module 'eslint/lib/linter/node-event-generator.js' { - declare module.exports: $Exports<'eslint/lib/linter/node-event-generator'>; -} -declare module 'eslint/lib/linter/report-translator.js' { - declare module.exports: $Exports<'eslint/lib/linter/report-translator'>; -} -declare module 'eslint/lib/linter/rule-fixer.js' { - declare module.exports: $Exports<'eslint/lib/linter/rule-fixer'>; -} -declare module 'eslint/lib/linter/rules.js' { - declare module.exports: $Exports<'eslint/lib/linter/rules'>; -} -declare module 'eslint/lib/linter/safe-emitter.js' { - declare module.exports: $Exports<'eslint/lib/linter/safe-emitter'>; -} -declare module 'eslint/lib/linter/source-code-fixer.js' { - declare module.exports: $Exports<'eslint/lib/linter/source-code-fixer'>; -} -declare module 'eslint/lib/linter/timing.js' { - declare module.exports: $Exports<'eslint/lib/linter/timing'>; -} -declare module 'eslint/lib/options.js' { - declare module.exports: $Exports<'eslint/lib/options'>; -} -declare module 'eslint/lib/rule-tester/index' { - declare module.exports: $Exports<'eslint/lib/rule-tester'>; -} -declare module 'eslint/lib/rule-tester/index.js' { - declare module.exports: $Exports<'eslint/lib/rule-tester'>; -} -declare module 'eslint/lib/rule-tester/rule-tester.js' { - declare module.exports: $Exports<'eslint/lib/rule-tester/rule-tester'>; -} -declare module 'eslint/lib/rules/accessor-pairs.js' { - declare module.exports: $Exports<'eslint/lib/rules/accessor-pairs'>; -} -declare module 'eslint/lib/rules/array-bracket-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-bracket-newline'>; -} -declare module 'eslint/lib/rules/array-bracket-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-bracket-spacing'>; -} -declare module 'eslint/lib/rules/array-callback-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-callback-return'>; -} -declare module 'eslint/lib/rules/array-element-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-element-newline'>; -} -declare module 'eslint/lib/rules/arrow-body-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-body-style'>; -} -declare module 'eslint/lib/rules/arrow-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-parens'>; -} -declare module 'eslint/lib/rules/arrow-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-spacing'>; -} -declare module 'eslint/lib/rules/block-scoped-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/block-scoped-var'>; -} -declare module 'eslint/lib/rules/block-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/block-spacing'>; -} -declare module 'eslint/lib/rules/brace-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/brace-style'>; -} -declare module 'eslint/lib/rules/callback-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/callback-return'>; -} -declare module 'eslint/lib/rules/camelcase.js' { - declare module.exports: $Exports<'eslint/lib/rules/camelcase'>; -} -declare module 'eslint/lib/rules/capitalized-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/capitalized-comments'>; -} -declare module 'eslint/lib/rules/class-methods-use-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/class-methods-use-this'>; -} -declare module 'eslint/lib/rules/comma-dangle.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-dangle'>; -} -declare module 'eslint/lib/rules/comma-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-spacing'>; -} -declare module 'eslint/lib/rules/comma-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-style'>; -} -declare module 'eslint/lib/rules/complexity.js' { - declare module.exports: $Exports<'eslint/lib/rules/complexity'>; -} -declare module 'eslint/lib/rules/computed-property-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/computed-property-spacing'>; -} -declare module 'eslint/lib/rules/consistent-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/consistent-return'>; -} -declare module 'eslint/lib/rules/consistent-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/consistent-this'>; -} -declare module 'eslint/lib/rules/constructor-super.js' { - declare module.exports: $Exports<'eslint/lib/rules/constructor-super'>; -} -declare module 'eslint/lib/rules/curly.js' { - declare module.exports: $Exports<'eslint/lib/rules/curly'>; -} -declare module 'eslint/lib/rules/default-case-last.js' { - declare module.exports: $Exports<'eslint/lib/rules/default-case-last'>; -} -declare module 'eslint/lib/rules/default-case.js' { - declare module.exports: $Exports<'eslint/lib/rules/default-case'>; -} -declare module 'eslint/lib/rules/default-param-last.js' { - declare module.exports: $Exports<'eslint/lib/rules/default-param-last'>; -} -declare module 'eslint/lib/rules/dot-location.js' { - declare module.exports: $Exports<'eslint/lib/rules/dot-location'>; -} -declare module 'eslint/lib/rules/dot-notation.js' { - declare module.exports: $Exports<'eslint/lib/rules/dot-notation'>; -} -declare module 'eslint/lib/rules/eol-last.js' { - declare module.exports: $Exports<'eslint/lib/rules/eol-last'>; -} -declare module 'eslint/lib/rules/eqeqeq.js' { - declare module.exports: $Exports<'eslint/lib/rules/eqeqeq'>; -} -declare module 'eslint/lib/rules/for-direction.js' { - declare module.exports: $Exports<'eslint/lib/rules/for-direction'>; -} -declare module 'eslint/lib/rules/func-call-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-call-spacing'>; -} -declare module 'eslint/lib/rules/func-name-matching.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-name-matching'>; -} -declare module 'eslint/lib/rules/func-names.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-names'>; -} -declare module 'eslint/lib/rules/func-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-style'>; -} -declare module 'eslint/lib/rules/function-call-argument-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/function-call-argument-newline'>; -} -declare module 'eslint/lib/rules/function-paren-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/function-paren-newline'>; -} -declare module 'eslint/lib/rules/generator-star-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/generator-star-spacing'>; -} -declare module 'eslint/lib/rules/getter-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/getter-return'>; -} -declare module 'eslint/lib/rules/global-require.js' { - declare module.exports: $Exports<'eslint/lib/rules/global-require'>; -} -declare module 'eslint/lib/rules/grouped-accessor-pairs.js' { - declare module.exports: $Exports<'eslint/lib/rules/grouped-accessor-pairs'>; -} -declare module 'eslint/lib/rules/guard-for-in.js' { - declare module.exports: $Exports<'eslint/lib/rules/guard-for-in'>; -} -declare module 'eslint/lib/rules/handle-callback-err.js' { - declare module.exports: $Exports<'eslint/lib/rules/handle-callback-err'>; -} -declare module 'eslint/lib/rules/id-blacklist.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-blacklist'>; -} -declare module 'eslint/lib/rules/id-denylist.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-denylist'>; -} -declare module 'eslint/lib/rules/id-length.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-length'>; -} -declare module 'eslint/lib/rules/id-match.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-match'>; -} -declare module 'eslint/lib/rules/implicit-arrow-linebreak.js' { - declare module.exports: $Exports<'eslint/lib/rules/implicit-arrow-linebreak'>; -} -declare module 'eslint/lib/rules/indent-legacy.js' { - declare module.exports: $Exports<'eslint/lib/rules/indent-legacy'>; -} -declare module 'eslint/lib/rules/indent.js' { - declare module.exports: $Exports<'eslint/lib/rules/indent'>; -} -declare module 'eslint/lib/rules/index' { - declare module.exports: $Exports<'eslint/lib/rules'>; -} -declare module 'eslint/lib/rules/index.js' { - declare module.exports: $Exports<'eslint/lib/rules'>; -} -declare module 'eslint/lib/rules/init-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/init-declarations'>; -} -declare module 'eslint/lib/rules/jsx-quotes.js' { - declare module.exports: $Exports<'eslint/lib/rules/jsx-quotes'>; -} -declare module 'eslint/lib/rules/key-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/key-spacing'>; -} -declare module 'eslint/lib/rules/keyword-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/keyword-spacing'>; -} -declare module 'eslint/lib/rules/line-comment-position.js' { - declare module.exports: $Exports<'eslint/lib/rules/line-comment-position'>; -} -declare module 'eslint/lib/rules/linebreak-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/linebreak-style'>; -} -declare module 'eslint/lib/rules/lines-around-comment.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-around-comment'>; -} -declare module 'eslint/lib/rules/lines-around-directive.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-around-directive'>; -} -declare module 'eslint/lib/rules/lines-between-class-members.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-between-class-members'>; -} -declare module 'eslint/lib/rules/max-classes-per-file.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-classes-per-file'>; -} -declare module 'eslint/lib/rules/max-depth.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-depth'>; -} -declare module 'eslint/lib/rules/max-len.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-len'>; -} -declare module 'eslint/lib/rules/max-lines-per-function.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-lines-per-function'>; -} -declare module 'eslint/lib/rules/max-lines.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-lines'>; -} -declare module 'eslint/lib/rules/max-nested-callbacks.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-nested-callbacks'>; -} -declare module 'eslint/lib/rules/max-params.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-params'>; -} -declare module 'eslint/lib/rules/max-statements-per-line.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-statements-per-line'>; -} -declare module 'eslint/lib/rules/max-statements.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-statements'>; -} -declare module 'eslint/lib/rules/multiline-comment-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/multiline-comment-style'>; -} -declare module 'eslint/lib/rules/multiline-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/multiline-ternary'>; -} -declare module 'eslint/lib/rules/new-cap.js' { - declare module.exports: $Exports<'eslint/lib/rules/new-cap'>; -} -declare module 'eslint/lib/rules/new-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/new-parens'>; -} -declare module 'eslint/lib/rules/newline-after-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-after-var'>; -} -declare module 'eslint/lib/rules/newline-before-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-before-return'>; -} -declare module 'eslint/lib/rules/newline-per-chained-call.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-per-chained-call'>; -} -declare module 'eslint/lib/rules/no-alert.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-alert'>; -} -declare module 'eslint/lib/rules/no-array-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-array-constructor'>; -} -declare module 'eslint/lib/rules/no-async-promise-executor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-async-promise-executor'>; -} -declare module 'eslint/lib/rules/no-await-in-loop.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-await-in-loop'>; -} -declare module 'eslint/lib/rules/no-bitwise.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-bitwise'>; -} -declare module 'eslint/lib/rules/no-buffer-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-buffer-constructor'>; -} -declare module 'eslint/lib/rules/no-caller.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-caller'>; -} -declare module 'eslint/lib/rules/no-case-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-case-declarations'>; -} -declare module 'eslint/lib/rules/no-catch-shadow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-catch-shadow'>; -} -declare module 'eslint/lib/rules/no-class-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-class-assign'>; -} -declare module 'eslint/lib/rules/no-compare-neg-zero.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-compare-neg-zero'>; -} -declare module 'eslint/lib/rules/no-cond-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-cond-assign'>; -} -declare module 'eslint/lib/rules/no-confusing-arrow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-confusing-arrow'>; -} -declare module 'eslint/lib/rules/no-console.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-console'>; -} -declare module 'eslint/lib/rules/no-const-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-const-assign'>; -} -declare module 'eslint/lib/rules/no-constant-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-constant-condition'>; -} -declare module 'eslint/lib/rules/no-constructor-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-constructor-return'>; -} -declare module 'eslint/lib/rules/no-continue.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-continue'>; -} -declare module 'eslint/lib/rules/no-control-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-control-regex'>; -} -declare module 'eslint/lib/rules/no-debugger.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-debugger'>; -} -declare module 'eslint/lib/rules/no-delete-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-delete-var'>; -} -declare module 'eslint/lib/rules/no-div-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-div-regex'>; -} -declare module 'eslint/lib/rules/no-dupe-args.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-args'>; -} -declare module 'eslint/lib/rules/no-dupe-class-members.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-class-members'>; -} -declare module 'eslint/lib/rules/no-dupe-else-if.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-else-if'>; -} -declare module 'eslint/lib/rules/no-dupe-keys.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-keys'>; -} -declare module 'eslint/lib/rules/no-duplicate-case.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-case'>; -} -declare module 'eslint/lib/rules/no-duplicate-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-imports'>; -} -declare module 'eslint/lib/rules/no-else-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-else-return'>; -} -declare module 'eslint/lib/rules/no-empty-character-class.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-character-class'>; -} -declare module 'eslint/lib/rules/no-empty-function.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-function'>; -} -declare module 'eslint/lib/rules/no-empty-pattern.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-pattern'>; -} -declare module 'eslint/lib/rules/no-empty.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty'>; -} -declare module 'eslint/lib/rules/no-eq-null.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-eq-null'>; -} -declare module 'eslint/lib/rules/no-eval.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-eval'>; -} -declare module 'eslint/lib/rules/no-ex-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-ex-assign'>; -} -declare module 'eslint/lib/rules/no-extend-native.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extend-native'>; -} -declare module 'eslint/lib/rules/no-extra-bind.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-bind'>; -} -declare module 'eslint/lib/rules/no-extra-boolean-cast.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-boolean-cast'>; -} -declare module 'eslint/lib/rules/no-extra-label.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-label'>; -} -declare module 'eslint/lib/rules/no-extra-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-parens'>; -} -declare module 'eslint/lib/rules/no-extra-semi.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-semi'>; -} -declare module 'eslint/lib/rules/no-fallthrough.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-fallthrough'>; -} -declare module 'eslint/lib/rules/no-floating-decimal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-floating-decimal'>; -} -declare module 'eslint/lib/rules/no-func-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-func-assign'>; -} -declare module 'eslint/lib/rules/no-global-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-global-assign'>; -} -declare module 'eslint/lib/rules/no-implicit-coercion.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implicit-coercion'>; -} -declare module 'eslint/lib/rules/no-implicit-globals.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implicit-globals'>; -} -declare module 'eslint/lib/rules/no-implied-eval.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implied-eval'>; -} -declare module 'eslint/lib/rules/no-import-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-import-assign'>; -} -declare module 'eslint/lib/rules/no-inline-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-inline-comments'>; -} -declare module 'eslint/lib/rules/no-inner-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-inner-declarations'>; -} -declare module 'eslint/lib/rules/no-invalid-regexp.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-invalid-regexp'>; -} -declare module 'eslint/lib/rules/no-invalid-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-invalid-this'>; -} -declare module 'eslint/lib/rules/no-irregular-whitespace.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-irregular-whitespace'>; -} -declare module 'eslint/lib/rules/no-iterator.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-iterator'>; -} -declare module 'eslint/lib/rules/no-label-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-label-var'>; -} -declare module 'eslint/lib/rules/no-labels.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-labels'>; -} -declare module 'eslint/lib/rules/no-lone-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-lone-blocks'>; -} -declare module 'eslint/lib/rules/no-lonely-if.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-lonely-if'>; -} -declare module 'eslint/lib/rules/no-loop-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-loop-func'>; -} -declare module 'eslint/lib/rules/no-loss-of-precision.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-loss-of-precision'>; -} -declare module 'eslint/lib/rules/no-magic-numbers.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-magic-numbers'>; -} -declare module 'eslint/lib/rules/no-misleading-character-class.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-misleading-character-class'>; -} -declare module 'eslint/lib/rules/no-mixed-operators.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-operators'>; -} -declare module 'eslint/lib/rules/no-mixed-requires.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-requires'>; -} -declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-spaces-and-tabs'>; -} -declare module 'eslint/lib/rules/no-multi-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-assign'>; -} -declare module 'eslint/lib/rules/no-multi-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-spaces'>; -} -declare module 'eslint/lib/rules/no-multi-str.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-str'>; -} -declare module 'eslint/lib/rules/no-multiple-empty-lines.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multiple-empty-lines'>; -} -declare module 'eslint/lib/rules/no-native-reassign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-native-reassign'>; -} -declare module 'eslint/lib/rules/no-negated-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-negated-condition'>; -} -declare module 'eslint/lib/rules/no-negated-in-lhs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-negated-in-lhs'>; -} -declare module 'eslint/lib/rules/no-nested-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-nested-ternary'>; -} -declare module 'eslint/lib/rules/no-new-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-func'>; -} -declare module 'eslint/lib/rules/no-new-object.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-object'>; -} -declare module 'eslint/lib/rules/no-new-require.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-require'>; -} -declare module 'eslint/lib/rules/no-new-symbol.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-symbol'>; -} -declare module 'eslint/lib/rules/no-new-wrappers.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-wrappers'>; -} -declare module 'eslint/lib/rules/no-new.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new'>; -} -declare module 'eslint/lib/rules/no-obj-calls.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-obj-calls'>; -} -declare module 'eslint/lib/rules/no-octal-escape.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-octal-escape'>; -} -declare module 'eslint/lib/rules/no-octal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-octal'>; -} -declare module 'eslint/lib/rules/no-param-reassign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-param-reassign'>; -} -declare module 'eslint/lib/rules/no-path-concat.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-path-concat'>; -} -declare module 'eslint/lib/rules/no-plusplus.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-plusplus'>; -} -declare module 'eslint/lib/rules/no-process-env.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-process-env'>; -} -declare module 'eslint/lib/rules/no-process-exit.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-process-exit'>; -} -declare module 'eslint/lib/rules/no-promise-executor-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-promise-executor-return'>; -} -declare module 'eslint/lib/rules/no-proto.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-proto'>; -} -declare module 'eslint/lib/rules/no-prototype-builtins.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-prototype-builtins'>; -} -declare module 'eslint/lib/rules/no-redeclare.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-redeclare'>; -} -declare module 'eslint/lib/rules/no-regex-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-regex-spaces'>; -} -declare module 'eslint/lib/rules/no-restricted-exports.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-exports'>; -} -declare module 'eslint/lib/rules/no-restricted-globals.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-globals'>; -} -declare module 'eslint/lib/rules/no-restricted-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-imports'>; -} -declare module 'eslint/lib/rules/no-restricted-modules.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-modules'>; -} -declare module 'eslint/lib/rules/no-restricted-properties.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-properties'>; -} -declare module 'eslint/lib/rules/no-restricted-syntax.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-syntax'>; -} -declare module 'eslint/lib/rules/no-return-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-return-assign'>; -} -declare module 'eslint/lib/rules/no-return-await.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-return-await'>; -} -declare module 'eslint/lib/rules/no-script-url.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-script-url'>; -} -declare module 'eslint/lib/rules/no-self-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-self-assign'>; -} -declare module 'eslint/lib/rules/no-self-compare.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-self-compare'>; -} -declare module 'eslint/lib/rules/no-sequences.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sequences'>; -} -declare module 'eslint/lib/rules/no-setter-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-setter-return'>; -} -declare module 'eslint/lib/rules/no-shadow-restricted-names.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-shadow-restricted-names'>; -} -declare module 'eslint/lib/rules/no-shadow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-shadow'>; -} -declare module 'eslint/lib/rules/no-spaced-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-spaced-func'>; -} -declare module 'eslint/lib/rules/no-sparse-arrays.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sparse-arrays'>; -} -declare module 'eslint/lib/rules/no-sync.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sync'>; -} -declare module 'eslint/lib/rules/no-tabs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-tabs'>; -} -declare module 'eslint/lib/rules/no-template-curly-in-string.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-template-curly-in-string'>; -} -declare module 'eslint/lib/rules/no-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-ternary'>; -} -declare module 'eslint/lib/rules/no-this-before-super.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-this-before-super'>; -} -declare module 'eslint/lib/rules/no-throw-literal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-throw-literal'>; -} -declare module 'eslint/lib/rules/no-trailing-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-trailing-spaces'>; -} -declare module 'eslint/lib/rules/no-undef-init.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undef-init'>; -} -declare module 'eslint/lib/rules/no-undef.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undef'>; -} -declare module 'eslint/lib/rules/no-undefined.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undefined'>; -} -declare module 'eslint/lib/rules/no-underscore-dangle.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-underscore-dangle'>; -} -declare module 'eslint/lib/rules/no-unexpected-multiline.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unexpected-multiline'>; -} -declare module 'eslint/lib/rules/no-unmodified-loop-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unmodified-loop-condition'>; -} -declare module 'eslint/lib/rules/no-unneeded-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unneeded-ternary'>; -} -declare module 'eslint/lib/rules/no-unreachable-loop.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unreachable-loop'>; -} -declare module 'eslint/lib/rules/no-unreachable.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unreachable'>; -} -declare module 'eslint/lib/rules/no-unsafe-finally.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-finally'>; -} -declare module 'eslint/lib/rules/no-unsafe-negation.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-negation'>; -} -declare module 'eslint/lib/rules/no-unused-expressions.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-expressions'>; -} -declare module 'eslint/lib/rules/no-unused-labels.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-labels'>; -} -declare module 'eslint/lib/rules/no-unused-vars.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-vars'>; -} -declare module 'eslint/lib/rules/no-use-before-define.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-use-before-define'>; -} -declare module 'eslint/lib/rules/no-useless-backreference.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-backreference'>; -} -declare module 'eslint/lib/rules/no-useless-call.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-call'>; -} -declare module 'eslint/lib/rules/no-useless-catch.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-catch'>; -} -declare module 'eslint/lib/rules/no-useless-computed-key.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-computed-key'>; -} -declare module 'eslint/lib/rules/no-useless-concat.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-concat'>; -} -declare module 'eslint/lib/rules/no-useless-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-constructor'>; -} -declare module 'eslint/lib/rules/no-useless-escape.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-escape'>; -} -declare module 'eslint/lib/rules/no-useless-rename.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-rename'>; -} -declare module 'eslint/lib/rules/no-useless-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-return'>; -} -declare module 'eslint/lib/rules/no-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-var'>; -} -declare module 'eslint/lib/rules/no-void.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-void'>; -} -declare module 'eslint/lib/rules/no-warning-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-warning-comments'>; -} -declare module 'eslint/lib/rules/no-whitespace-before-property.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-whitespace-before-property'>; -} -declare module 'eslint/lib/rules/no-with.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-with'>; -} -declare module 'eslint/lib/rules/nonblock-statement-body-position.js' { - declare module.exports: $Exports<'eslint/lib/rules/nonblock-statement-body-position'>; -} -declare module 'eslint/lib/rules/object-curly-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-curly-newline'>; -} -declare module 'eslint/lib/rules/object-curly-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-curly-spacing'>; -} -declare module 'eslint/lib/rules/object-property-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-property-newline'>; -} -declare module 'eslint/lib/rules/object-shorthand.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-shorthand'>; -} -declare module 'eslint/lib/rules/one-var-declaration-per-line.js' { - declare module.exports: $Exports<'eslint/lib/rules/one-var-declaration-per-line'>; -} -declare module 'eslint/lib/rules/one-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/one-var'>; -} -declare module 'eslint/lib/rules/operator-assignment.js' { - declare module.exports: $Exports<'eslint/lib/rules/operator-assignment'>; -} -declare module 'eslint/lib/rules/operator-linebreak.js' { - declare module.exports: $Exports<'eslint/lib/rules/operator-linebreak'>; -} -declare module 'eslint/lib/rules/padded-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/padded-blocks'>; -} -declare module 'eslint/lib/rules/padding-line-between-statements.js' { - declare module.exports: $Exports<'eslint/lib/rules/padding-line-between-statements'>; -} -declare module 'eslint/lib/rules/prefer-arrow-callback.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-arrow-callback'>; -} -declare module 'eslint/lib/rules/prefer-const.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-const'>; -} -declare module 'eslint/lib/rules/prefer-destructuring.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-destructuring'>; -} -declare module 'eslint/lib/rules/prefer-exponentiation-operator.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-exponentiation-operator'>; -} -declare module 'eslint/lib/rules/prefer-named-capture-group.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-named-capture-group'>; -} -declare module 'eslint/lib/rules/prefer-numeric-literals.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-numeric-literals'>; -} -declare module 'eslint/lib/rules/prefer-object-spread.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-object-spread'>; -} -declare module 'eslint/lib/rules/prefer-promise-reject-errors.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-promise-reject-errors'>; -} -declare module 'eslint/lib/rules/prefer-reflect.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-reflect'>; -} -declare module 'eslint/lib/rules/prefer-regex-literals.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-regex-literals'>; -} -declare module 'eslint/lib/rules/prefer-rest-params.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-rest-params'>; -} -declare module 'eslint/lib/rules/prefer-spread.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-spread'>; -} -declare module 'eslint/lib/rules/prefer-template.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-template'>; -} -declare module 'eslint/lib/rules/quote-props.js' { - declare module.exports: $Exports<'eslint/lib/rules/quote-props'>; -} -declare module 'eslint/lib/rules/quotes.js' { - declare module.exports: $Exports<'eslint/lib/rules/quotes'>; -} -declare module 'eslint/lib/rules/radix.js' { - declare module.exports: $Exports<'eslint/lib/rules/radix'>; -} -declare module 'eslint/lib/rules/require-atomic-updates.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-atomic-updates'>; -} -declare module 'eslint/lib/rules/require-await.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-await'>; -} -declare module 'eslint/lib/rules/require-jsdoc.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-jsdoc'>; -} -declare module 'eslint/lib/rules/require-unicode-regexp.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-unicode-regexp'>; -} -declare module 'eslint/lib/rules/require-yield.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-yield'>; -} -declare module 'eslint/lib/rules/rest-spread-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/rest-spread-spacing'>; -} -declare module 'eslint/lib/rules/semi-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi-spacing'>; -} -declare module 'eslint/lib/rules/semi-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi-style'>; -} -declare module 'eslint/lib/rules/semi.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi'>; -} -declare module 'eslint/lib/rules/sort-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-imports'>; -} -declare module 'eslint/lib/rules/sort-keys.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-keys'>; -} -declare module 'eslint/lib/rules/sort-vars.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-vars'>; -} -declare module 'eslint/lib/rules/space-before-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-before-blocks'>; -} -declare module 'eslint/lib/rules/space-before-function-paren.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-before-function-paren'>; -} -declare module 'eslint/lib/rules/space-in-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-in-parens'>; -} -declare module 'eslint/lib/rules/space-infix-ops.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-infix-ops'>; -} -declare module 'eslint/lib/rules/space-unary-ops.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-unary-ops'>; -} -declare module 'eslint/lib/rules/spaced-comment.js' { - declare module.exports: $Exports<'eslint/lib/rules/spaced-comment'>; -} -declare module 'eslint/lib/rules/strict.js' { - declare module.exports: $Exports<'eslint/lib/rules/strict'>; -} -declare module 'eslint/lib/rules/switch-colon-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/switch-colon-spacing'>; -} -declare module 'eslint/lib/rules/symbol-description.js' { - declare module.exports: $Exports<'eslint/lib/rules/symbol-description'>; -} -declare module 'eslint/lib/rules/template-curly-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/template-curly-spacing'>; -} -declare module 'eslint/lib/rules/template-tag-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/template-tag-spacing'>; -} -declare module 'eslint/lib/rules/unicode-bom.js' { - declare module.exports: $Exports<'eslint/lib/rules/unicode-bom'>; -} -declare module 'eslint/lib/rules/use-isnan.js' { - declare module.exports: $Exports<'eslint/lib/rules/use-isnan'>; -} -declare module 'eslint/lib/rules/utils/ast-utils.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/ast-utils'>; -} -declare module 'eslint/lib/rules/utils/fix-tracker.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/fix-tracker'>; -} -declare module 'eslint/lib/rules/utils/keywords.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/keywords'>; -} -declare module 'eslint/lib/rules/utils/lazy-loading-rule-map.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/lazy-loading-rule-map'>; -} -declare module 'eslint/lib/rules/utils/patterns/letters.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/patterns/letters'>; -} -declare module 'eslint/lib/rules/utils/unicode/index' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode'>; -} -declare module 'eslint/lib/rules/utils/unicode/index.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-combining-character.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-combining-character'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-emoji-modifier.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-emoji-modifier'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-surrogate-pair.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-surrogate-pair'>; -} -declare module 'eslint/lib/rules/valid-jsdoc.js' { - declare module.exports: $Exports<'eslint/lib/rules/valid-jsdoc'>; -} -declare module 'eslint/lib/rules/valid-typeof.js' { - declare module.exports: $Exports<'eslint/lib/rules/valid-typeof'>; -} -declare module 'eslint/lib/rules/vars-on-top.js' { - declare module.exports: $Exports<'eslint/lib/rules/vars-on-top'>; -} -declare module 'eslint/lib/rules/wrap-iife.js' { - declare module.exports: $Exports<'eslint/lib/rules/wrap-iife'>; -} -declare module 'eslint/lib/rules/wrap-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/wrap-regex'>; -} -declare module 'eslint/lib/rules/yield-star-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/yield-star-spacing'>; -} -declare module 'eslint/lib/rules/yoda.js' { - declare module.exports: $Exports<'eslint/lib/rules/yoda'>; -} -declare module 'eslint/lib/shared/ajv.js' { - declare module.exports: $Exports<'eslint/lib/shared/ajv'>; -} -declare module 'eslint/lib/shared/ast-utils.js' { - declare module.exports: $Exports<'eslint/lib/shared/ast-utils'>; -} -declare module 'eslint/lib/shared/config-validator.js' { - declare module.exports: $Exports<'eslint/lib/shared/config-validator'>; -} -declare module 'eslint/lib/shared/deprecation-warnings.js' { - declare module.exports: $Exports<'eslint/lib/shared/deprecation-warnings'>; -} -declare module 'eslint/lib/shared/logging.js' { - declare module.exports: $Exports<'eslint/lib/shared/logging'>; -} -declare module 'eslint/lib/shared/relative-module-resolver.js' { - declare module.exports: $Exports<'eslint/lib/shared/relative-module-resolver'>; -} -declare module 'eslint/lib/shared/runtime-info.js' { - declare module.exports: $Exports<'eslint/lib/shared/runtime-info'>; -} -declare module 'eslint/lib/shared/traverser.js' { - declare module.exports: $Exports<'eslint/lib/shared/traverser'>; -} -declare module 'eslint/lib/shared/types.js' { - declare module.exports: $Exports<'eslint/lib/shared/types'>; -} -declare module 'eslint/lib/source-code/index' { - declare module.exports: $Exports<'eslint/lib/source-code'>; -} -declare module 'eslint/lib/source-code/index.js' { - declare module.exports: $Exports<'eslint/lib/source-code'>; -} -declare module 'eslint/lib/source-code/source-code.js' { - declare module.exports: $Exports<'eslint/lib/source-code/source-code'>; -} -declare module 'eslint/lib/source-code/token-store/backward-token-comment-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/backward-token-comment-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/backward-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/backward-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/cursor'>; -} -declare module 'eslint/lib/source-code/token-store/cursors.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/cursors'>; -} -declare module 'eslint/lib/source-code/token-store/decorative-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/decorative-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/filter-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/filter-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/forward-token-comment-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/forward-token-comment-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/forward-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/forward-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/index' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store'>; -} -declare module 'eslint/lib/source-code/token-store/index.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store'>; -} -declare module 'eslint/lib/source-code/token-store/limit-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/limit-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/padded-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/padded-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/skip-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/skip-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/utils.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/utils'>; -} diff --git a/flow-typed/npm/flow-bin_v0.x.x.js b/flow-typed/npm/flow-bin_v0.x.x.js deleted file mode 100644 index fda1f290..00000000 --- a/flow-typed/npm/flow-bin_v0.x.x.js +++ /dev/null @@ -1,6 +0,0 @@ -// flow-typed signature: 28fdff7f110e1c75efab63ff205dda30 -// flow-typed version: c6154227d1/flow-bin_v0.x.x/flow_>=v0.104.x - -declare module "flow-bin" { - declare module.exports: string; -} diff --git a/flow-typed/npm/flow-typed_vx.x.x.js b/flow-typed/npm/flow-typed_vx.x.x.js deleted file mode 100644 index 2dbc3ca8..00000000 --- a/flow-typed/npm/flow-typed_vx.x.x.js +++ /dev/null @@ -1,186 +0,0 @@ -// flow-typed signature: 5e180472a76cccade6d1e63228aa20a7 -// flow-typed version: <>/flow-typed_v^3.2.1/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'flow-typed' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'flow-typed' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'flow-typed/dist/cli' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/create-stub' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/install' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/runTests' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/search' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/update-cache' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/update' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/validateDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/cacheRepoUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/codeSign' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/fileUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/flowProjectUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/flowVersion' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/git' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/github' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/isInFlowTypedRepo' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/libDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/node' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/npm/npmLibDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/npm/npmProjectUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/semver' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/stubUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/ValidationError' { - declare module.exports: any; -} - -// Filename aliases -declare module 'flow-typed/dist/cli.js' { - declare module.exports: $Exports<'flow-typed/dist/cli'>; -} -declare module 'flow-typed/dist/commands/create-stub.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/create-stub'>; -} -declare module 'flow-typed/dist/commands/install.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/install'>; -} -declare module 'flow-typed/dist/commands/runTests.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/runTests'>; -} -declare module 'flow-typed/dist/commands/search.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/search'>; -} -declare module 'flow-typed/dist/commands/update-cache.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/update-cache'>; -} -declare module 'flow-typed/dist/commands/update.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/update'>; -} -declare module 'flow-typed/dist/commands/validateDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/validateDefs'>; -} -declare module 'flow-typed/dist/lib/cacheRepoUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/cacheRepoUtils'>; -} -declare module 'flow-typed/dist/lib/codeSign.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/codeSign'>; -} -declare module 'flow-typed/dist/lib/fileUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/fileUtils'>; -} -declare module 'flow-typed/dist/lib/flowProjectUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/flowProjectUtils'>; -} -declare module 'flow-typed/dist/lib/flowVersion.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/flowVersion'>; -} -declare module 'flow-typed/dist/lib/git.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/git'>; -} -declare module 'flow-typed/dist/lib/github.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/github'>; -} -declare module 'flow-typed/dist/lib/isInFlowTypedRepo.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/isInFlowTypedRepo'>; -} -declare module 'flow-typed/dist/lib/libDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/libDefs'>; -} -declare module 'flow-typed/dist/lib/node.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/node'>; -} -declare module 'flow-typed/dist/lib/npm/npmLibDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmLibDefs'>; -} -declare module 'flow-typed/dist/lib/npm/npmProjectUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmProjectUtils'>; -} -declare module 'flow-typed/dist/lib/semver.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/semver'>; -} -declare module 'flow-typed/dist/lib/stubUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/stubUtils'>; -} -declare module 'flow-typed/dist/lib/ValidationError.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/ValidationError'>; -} diff --git a/flow-typed/npm/npm-check_vx.x.x.js b/flow-typed/npm/npm-check_vx.x.x.js deleted file mode 100644 index 6ff0e334..00000000 --- a/flow-typed/npm/npm-check_vx.x.x.js +++ /dev/null @@ -1,296 +0,0 @@ -// flow-typed signature: 4d3109b77e0817da465392a8572a5b10 -// flow-typed version: <>/npm-check_v^5.9.2/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'npm-check' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'npm-check' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'npm-check/bin/cli' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/cli' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/best-guess-homepage' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/create-package-summary' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/find-module-path' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/get-installed-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/get-latest-from-registry' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/get-unused-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/in/read-package-json' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/out/emoji' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/out/install-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/out/interactive-update' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/out/static-output' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/out/update-all' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/state/debug' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/state/init' { - declare module.exports: any; -} - -declare module 'npm-check/lib-es5/state/state' { - declare module.exports: any; -} - -declare module 'npm-check/lib/cli' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/best-guess-homepage' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/create-package-summary' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/find-module-path' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/get-installed-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/get-latest-from-registry' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/get-unused-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in' { - declare module.exports: any; -} - -declare module 'npm-check/lib/in/read-package-json' { - declare module.exports: any; -} - -declare module 'npm-check/lib' { - declare module.exports: any; -} - -declare module 'npm-check/lib/out/emoji' { - declare module.exports: any; -} - -declare module 'npm-check/lib/out/install-packages' { - declare module.exports: any; -} - -declare module 'npm-check/lib/out/interactive-update' { - declare module.exports: any; -} - -declare module 'npm-check/lib/out/static-output' { - declare module.exports: any; -} - -declare module 'npm-check/lib/out/update-all' { - declare module.exports: any; -} - -declare module 'npm-check/lib/state/debug' { - declare module.exports: any; -} - -declare module 'npm-check/lib/state/init' { - declare module.exports: any; -} - -declare module 'npm-check/lib/state/state' { - declare module.exports: any; -} - -// Filename aliases -declare module 'npm-check/bin/cli.js' { - declare module.exports: $Exports<'npm-check/bin/cli'>; -} -declare module 'npm-check/lib-es5/cli.js' { - declare module.exports: $Exports<'npm-check/lib-es5/cli'>; -} -declare module 'npm-check/lib-es5/in/best-guess-homepage.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/best-guess-homepage'>; -} -declare module 'npm-check/lib-es5/in/create-package-summary.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/create-package-summary'>; -} -declare module 'npm-check/lib-es5/in/find-module-path.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/find-module-path'>; -} -declare module 'npm-check/lib-es5/in/get-installed-packages.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/get-installed-packages'>; -} -declare module 'npm-check/lib-es5/in/get-latest-from-registry.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/get-latest-from-registry'>; -} -declare module 'npm-check/lib-es5/in/get-unused-packages.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/get-unused-packages'>; -} -declare module 'npm-check/lib-es5/in/index' { - declare module.exports: $Exports<'npm-check/lib-es5/in'>; -} -declare module 'npm-check/lib-es5/in/index.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in'>; -} -declare module 'npm-check/lib-es5/in/read-package-json.js' { - declare module.exports: $Exports<'npm-check/lib-es5/in/read-package-json'>; -} -declare module 'npm-check/lib-es5/index' { - declare module.exports: $Exports<'npm-check/lib-es5'>; -} -declare module 'npm-check/lib-es5/index.js' { - declare module.exports: $Exports<'npm-check/lib-es5'>; -} -declare module 'npm-check/lib-es5/out/emoji.js' { - declare module.exports: $Exports<'npm-check/lib-es5/out/emoji'>; -} -declare module 'npm-check/lib-es5/out/install-packages.js' { - declare module.exports: $Exports<'npm-check/lib-es5/out/install-packages'>; -} -declare module 'npm-check/lib-es5/out/interactive-update.js' { - declare module.exports: $Exports<'npm-check/lib-es5/out/interactive-update'>; -} -declare module 'npm-check/lib-es5/out/static-output.js' { - declare module.exports: $Exports<'npm-check/lib-es5/out/static-output'>; -} -declare module 'npm-check/lib-es5/out/update-all.js' { - declare module.exports: $Exports<'npm-check/lib-es5/out/update-all'>; -} -declare module 'npm-check/lib-es5/state/debug.js' { - declare module.exports: $Exports<'npm-check/lib-es5/state/debug'>; -} -declare module 'npm-check/lib-es5/state/init.js' { - declare module.exports: $Exports<'npm-check/lib-es5/state/init'>; -} -declare module 'npm-check/lib-es5/state/state.js' { - declare module.exports: $Exports<'npm-check/lib-es5/state/state'>; -} -declare module 'npm-check/lib/cli.js' { - declare module.exports: $Exports<'npm-check/lib/cli'>; -} -declare module 'npm-check/lib/in/best-guess-homepage.js' { - declare module.exports: $Exports<'npm-check/lib/in/best-guess-homepage'>; -} -declare module 'npm-check/lib/in/create-package-summary.js' { - declare module.exports: $Exports<'npm-check/lib/in/create-package-summary'>; -} -declare module 'npm-check/lib/in/find-module-path.js' { - declare module.exports: $Exports<'npm-check/lib/in/find-module-path'>; -} -declare module 'npm-check/lib/in/get-installed-packages.js' { - declare module.exports: $Exports<'npm-check/lib/in/get-installed-packages'>; -} -declare module 'npm-check/lib/in/get-latest-from-registry.js' { - declare module.exports: $Exports<'npm-check/lib/in/get-latest-from-registry'>; -} -declare module 'npm-check/lib/in/get-unused-packages.js' { - declare module.exports: $Exports<'npm-check/lib/in/get-unused-packages'>; -} -declare module 'npm-check/lib/in/index' { - declare module.exports: $Exports<'npm-check/lib/in'>; -} -declare module 'npm-check/lib/in/index.js' { - declare module.exports: $Exports<'npm-check/lib/in'>; -} -declare module 'npm-check/lib/in/read-package-json.js' { - declare module.exports: $Exports<'npm-check/lib/in/read-package-json'>; -} -declare module 'npm-check/lib/index' { - declare module.exports: $Exports<'npm-check/lib'>; -} -declare module 'npm-check/lib/index.js' { - declare module.exports: $Exports<'npm-check/lib'>; -} -declare module 'npm-check/lib/out/emoji.js' { - declare module.exports: $Exports<'npm-check/lib/out/emoji'>; -} -declare module 'npm-check/lib/out/install-packages.js' { - declare module.exports: $Exports<'npm-check/lib/out/install-packages'>; -} -declare module 'npm-check/lib/out/interactive-update.js' { - declare module.exports: $Exports<'npm-check/lib/out/interactive-update'>; -} -declare module 'npm-check/lib/out/static-output.js' { - declare module.exports: $Exports<'npm-check/lib/out/static-output'>; -} -declare module 'npm-check/lib/out/update-all.js' { - declare module.exports: $Exports<'npm-check/lib/out/update-all'>; -} -declare module 'npm-check/lib/state/debug.js' { - declare module.exports: $Exports<'npm-check/lib/state/debug'>; -} -declare module 'npm-check/lib/state/init.js' { - declare module.exports: $Exports<'npm-check/lib/state/init'>; -} -declare module 'npm-check/lib/state/state.js' { - declare module.exports: $Exports<'npm-check/lib/state/state'>; -} diff --git a/flow-typed/npm/uuid_v8.x.x.js b/flow-typed/npm/uuid_v8.x.x.js deleted file mode 100644 index 496cf8be..00000000 --- a/flow-typed/npm/uuid_v8.x.x.js +++ /dev/null @@ -1,74 +0,0 @@ -// flow-typed signature: 1b555a8f791762f2a4ee29e1335a175a -// flow-typed version: a40f6e5201/uuid_v8.x.x/flow_>=v0.104.x - -declare module 'uuid' { - // v1 (Timestamp) - declare type V1Options = {| - node?: $ReadOnlyArray, - clockseq?: number, - msecs?: number, - nsecs?: number, - random?: $ReadOnlyArray, - rng?: () => $ReadOnlyArray, - |}; - - declare export function v1(options?: V1Options): string; - - declare export function v1( - options: V1Options | null, - buffer: Array, - offset?: number - ): Array; - - // v3 (Namespace) - declare function v3Impl( - name: string | $ReadOnlyArray, - namespace: string | $ReadOnlyArray - ): string; - - declare function v3Impl( - name: string | $ReadOnlyArray, - namespace: string | $ReadOnlyArray, - buffer: Array, - offset?: number - ): Array; - - declare export var v3: {| - [[call]]: typeof v3Impl, - DNS: string, - URL: string, - |}; - - // v4 (Random) - declare type V4Options = {| - random?: $ReadOnlyArray, - rng?: () => $ReadOnlyArray, - |}; - - declare export function v4(options?: V4Options): string; - - declare export function v4( - options: V4Options | null, - buffer: Array, - offset?: number - ): Array; - - // v5 (Namespace) - declare function v5Impl( - name: string | $ReadOnlyArray, - namespace: string | $ReadOnlyArray - ): string; - - declare function v5Impl( - name: string | $ReadOnlyArray, - namespace: string | $ReadOnlyArray, - buffer: Array, - offset?: number - ): Array; - - declare export var v5: {| - [[call]]: typeof v5Impl, - DNS: string, - URL: string, - |}; -} diff --git a/flow-typed/npm/winston_v3.x.x.js b/flow-typed/npm/winston_v3.x.x.js deleted file mode 100644 index a92d2cb0..00000000 --- a/flow-typed/npm/winston_v3.x.x.js +++ /dev/null @@ -1,156 +0,0 @@ -// flow-typed signature: 71d87edbd93b4e1027b7e590a8e97a21 -// flow-typed version: 097f6f2b81/winston_v3.x.x/flow_>=v0.104.x - -declare type $winstonLevels = { [string]: number, ... }; - -declare type $winstonNpmLogLevels = { - error: number, - warn: number, - info: number, - verbose: number, - debug: number, - silly: number, - ... -}; - -declare type $winstonInfo = { - [optionName: string]: mixed, - level: $Keys, - message: string, - ... -}; - -declare type $winstonFormat = Object; - -declare type $winstonFileTransportConfig = { - filename: string, - level?: $Keys, - ... -}; - -declare class $winstonTransport { - level?: string; - silent?: boolean; -} - -declare class $winstonFileTransport extends $winstonTransport { - constructor($winstonFileTransportConfig): $winstonFileTransport; -} - -declare type $winstonConsoleTransportConfig = { level?: $Keys, ... }; - -declare class $winstonConsoleTransport extends $winstonTransport { - constructor( - config?: $winstonConsoleTransportConfig - ): $winstonConsoleTransport; -} - -declare type $winstonLoggerConfig = { - exitOnError?: boolean, - format?: $winstonFormat, - level?: $Keys, - levels?: T, - transports?: Array<$winstonTransport>, - ... -}; - -declare type $winstonLogger = { - [$Keys]: (message: string, meta?: Object) => $winstonLogger, - add: $winstonTransport => $winstonLogger, - remove: $winstonTransport => $winstonLogger, - clear: () => $winstonLogger, - close: () => $winstonLogger, - configure: ($winstonLoggerConfig) => void, - log: (message: $winstonInfo) => $winstonLogger, - startTimer: () => $winstonProfiler, - profile: (name: string, info?: $Shape<$winstonInfo>) => void, - ... -}; - -declare type $winstonConfigSubModule = { npm: () => $winstonNpmLogLevels, ... }; - -declare type $winstonFormatJsonOptions = { - replacer?: (key: string, value: mixed) => mixed, - space?: number, - stable?: boolean, - ... -}; - -declare type $winstonFormatPrettyPrintOptions = {| - depth?: number, - colorize?: boolean, -|}; - -declare type $winstonFormatErrorsOptions = {| - stack?: boolean, -|}; - -declare type $winstonFormatSubModule = { - ((info: $winstonInfo) => $winstonInfo): () => $winstonFormat, - combine: (...args: Array<$winstonFormat>) => $winstonFormat, - json: (options?: $winstonFormatJsonOptions) => $winstonFormat, - label: (config?: Object) => $winstonFormat, - metadata: () => $winstonFormat, - prettyPrint: (options?: $winstonFormatPrettyPrintOptions) => $winstonFormat, - simple: () => $winstonFormat, - splat: () => $winstonFormat, - timestamp: (?{ - alias?: string, - format?: string | () => string, - ... - }) => $winstonFormat, - colorize: () => $winstonFormat, - logstash: () => $winstonFormat, - printf: ((args: $winstonInfo) => string) => $winstonFormat, - errors: (options?: $winstonFormatErrorsOptions) => $winstonFormat, - ... -}; - -declare type $winstonDefaultLogger = $winstonLogger<$winstonNpmLogLevels>; - -declare class $winstonContainer { - constructor(config?: $winstonLoggerConfig): $winstonContainer; - add(loggerId: string, config?: $winstonLoggerConfig): $winstonLogger; - get(loggerId: string): $winstonLogger; - has(loggerId: string): boolean; - close(loggerId?: string): void; -} - -declare interface $winstonProfiler { - logger: $winstonLogger; - start: Date; - done(info?: $Shape<$winstonInfo>): void; -}; - -declare module "winston" { - declare export type Levels = $winstonLevels; - declare export type NpmLogLevels = $winstonNpmLogLevels; - declare export type Info = $winstonInfo; - declare export type Format = $winstonFormat; - declare export type FileTransportConfig = $winstonFileTransportConfig; - declare export type Transport = $winstonTransport; - declare export type FileTransport = $winstonFileTransport; - declare export type ConsoleTransportConfig = $winstonConsoleTransportConfig; - declare export type ConsoleTransport = $winstonConsoleTransport; - declare export type LoggerConfig = $winstonLoggerConfig; - declare export type Logger = $winstonLogger; - declare export type ConfigSubModule = $winstonConfigSubModule; - declare export type FormatSubModule = $winstonFormatSubModule; - declare export type DefaultLogger = $winstonDefaultLogger; - declare export type Container = $winstonContainer; - declare export type Profiler = $winstonProfiler; - - declare module.exports: { - ...$Exact<$winstonDefaultLogger>, - format: $winstonFormatSubModule, - transports: { - Console: typeof $winstonConsoleTransport, - File: typeof $winstonFileTransport, - ... - }, - createLogger: ($winstonLoggerConfig) => $winstonLogger, - Container: typeof $winstonContainer, - loggers: $winstonContainer<*>, - ... - }; -} diff --git a/flow-typed/npm/worker-threads-pool_vx.x.x.js b/flow-typed/npm/worker-threads-pool_vx.x.x.js deleted file mode 100644 index 47fec497..00000000 --- a/flow-typed/npm/worker-threads-pool_vx.x.x.js +++ /dev/null @@ -1,33 +0,0 @@ -// flow-typed signature: 6adddf428f4e46e1e3029b27fac03a36 -// flow-typed version: <>/worker-threads-pool_v^2.0.0/flow_v0.136.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'worker-threads-pool' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'worker-threads-pool' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ - - -// Filename aliases -declare module 'worker-threads-pool/index' { - declare module.exports: $Exports<'worker-threads-pool'>; -} -declare module 'worker-threads-pool/index.js' { - declare module.exports: $Exports<'worker-threads-pool'>; -} diff --git a/flow-typed/npm/ws_v7.x.x.js b/flow-typed/npm/ws_v7.x.x.js deleted file mode 100644 index a5cafd7a..00000000 --- a/flow-typed/npm/ws_v7.x.x.js +++ /dev/null @@ -1,363 +0,0 @@ -// flow-typed signature: cf710812f8fe053ca189786d3fa45067 -// flow-typed version: be32675b14/ws_v7.x.x/flow_>=v0.104.x - -declare type ws$PerMessageDeflateOptions = {| - serverNoContextTakeover?: boolean, - clientNoContextTakeover?: boolean, - serverMaxWindowBits?: boolean | number, - clientMaxWindowBits?: boolean | number, - zlibDeflateOptions?: zlib$options, - zlibInflateOptions?: zlib$options, - threshold?: number, - concurrencyLimit?: number, - isServer?: boolean, - maxPayload?: number, -|}; - -declare class ws$WebSocketServer extends events$EventEmitter { - /** - * Create a `WebSocketServer` instance. - */ - constructor( - options: {| - backlog?: number, - clientTracking?: boolean, - handleProtocols?: () => mixed, - host?: string, - maxPayload?: number, - noServer?: boolean, - path?: string, - perMessageDeflate?: boolean | ws$PerMessageDeflateOptions, - port: number, - server?: http$Server | https$Server, - verifyClient?: () => mixed, - |}, - callback?: () => mixed - ): this; - constructor( - options: {| - backlog?: number, - clientTracking?: boolean, - handleProtocols?: () => mixed, - host?: string, - maxPayload?: number, - noServer?: boolean, - path?: string, - perMessageDeflate?: boolean | ws$PerMessageDeflateOptions, - port?: number, - server: http$Server | https$Server, - verifyClient?: () => mixed, - |}, - callback?: () => mixed - ): this; - constructor( - options: {| - backlog?: number, - clientTracking?: boolean, - handleProtocols?: () => mixed, - host?: string, - maxPayload?: number, - noServer: boolean, - path?: string, - perMessageDeflate?: boolean | ws$PerMessageDeflateOptions, - port?: number, - server?: http$Server | https$Server, - verifyClient?: () => mixed, - |}, - callback?: () => mixed - ): this; - - /** - * Emitted when the server closes. - */ - on(event: 'close', () => mixed): this; - - /** - * Emitted when the handshake is complete. - */ - on( - event: 'connection', - (socket: ws$WebSocket, request: http$IncomingMessage<>) => mixed - ): this; - - /** - * Emitted when an error occurs on the underlying server. - */ - on(event: 'error', (error: Error) => mixed): this; - - /** - * Emitted before the response headers are written to the socket as part of - * the handshake. - */ - on( - event: 'headers', - (headers: Array, request: http$IncomingMessage<>) => mixed - ): this; - - /** - * Emitted when the underlying server has been bound. - */ - on(event: 'listening', () => mixed): this; - - /** - * Returns the bound address, the address family name, and port of the server - * as reported by the operating system if listening on an IP socket. - * If the server is listening on a pipe or UNIX domain socket, the name is - * returned as a string. - */ - address(): - | null - | string - | {| port?: number, family?: string, address?: string |}; - - /** - * A set that stores all connected clients. Please note that this property is - * only added when the `clientTracking` is truthy. - */ - clients: Set; - - /** - * Close the server. - */ - close(callback?: () => mixed): void; - - /** - * Handle a HTTP Upgrade request. - */ - handleUpgrade( - request: http$IncomingMessage<>, - socket: net$Socket, - head: Buffer, - callback: (?ws$WebSocket) => mixed - ): void; - - /** - * See if a given request should be handled by this server instance. - */ - shouldHandle(request: http$IncomingMessage<>): boolean; -} - -declare type ws$WebSocketOptions = { - followRedirects?: boolean, - handshakeTimeout?: number, - maxRedirects?: number, - perMessageDeflate?: boolean | ws$PerMessageDeflateOptions, - protocolVersion?: number, - origin?: string, - maxPayload?: number, - ...requestOptions, - agent?: boolean | http$Agent<> | http$Agent, - createConnection?: - | ((options: net$connectOptions, callback?: () => mixed) => net$Socket) - | ((options: tls$connectOptions, callback?: () => mixed) => tls$TLSSocket), - ... -}; - -declare type ws$CloseListener = (code: number, reason: string) => mixed; -declare type ws$ErrorListener = (error: Error) => mixed; -declare type ws$MessageListener = ( - data: string | Buffer | ArrayBuffer | Array -) => mixed; -declare type ws$OpenListener = () => mixed; -declare type ws$PingListener = (Buffer) => mixed; -declare type ws$PongListener = (Buffer) => mixed; -declare type ws$UnexpectedResponseListener = ( - request: http$ClientRequest<>, - response: http$IncomingMessage<> -) => mixed; -declare type ws$UpgradeListener = (response: http$IncomingMessage<>) => mixed; - -declare class ws$WebSocket extends events$EventEmitter { - static Server: typeof ws$WebSocketServer; - - static createWebSocketStream: ( - WebSocket: ws$WebSocket, - options?: duplexStreamOptions - ) => stream$Duplex; - - static CONNECTING: number; - static OPEN: number; - static CLOSING: number; - static CLOSED: number; - - /** - * Create a `WebSocket` instance. - */ - constructor( - address: string | URL, - protocols?: string | Array, - options?: ws$WebSocketOptions - ): this; - constructor(address: string | URL, options: ws$WebSocketOptions): this; - - /* - * Emitted when the connection is closed. - */ - on('close', ws$CloseListener): this; - - /* - * Emitted when an error occurs. - */ - on('error', ws$ErrorListener): this; - - /* - * Emitted when a message is received from the server. - */ - on('message', ws$MessageListener): this; - - /* - * Emitted when the connection is established. - */ - on('open', ws$OpenListener): this; - - /* - * Emitted when a ping is received from the server. - */ - on('ping', ws$PingListener): this; - - /* - * Emitted when a pong is received from the server. - */ - on('pong', ws$PongListener): this; - - /* - * Emitted when the server response is not the expected one, - * for example a 401 response. - */ - on('unexpected-response', ws$UnexpectedResponseListener): this; - - /* - * Emitted when response headers are received from the server as part of the - * handshake. - */ - on('upgrade', ws$UpgradeListener): this; - - /** - * Register an event listener emulating the `EventTarget` interface. - */ - addEventListener( - type: 'close', - listener: ws$CloseListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'error', - listener: ws$ErrorListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'message', - listener: ws$MessageListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'open', - listener: ws$OpenListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'ping', - listener: ws$PingListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'pong', - listener: ws$PongListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'unexpected-response', - ws$UnexpectedResponseListener, - options?: {| once?: boolean |} - ): this; - addEventListener( - type: 'upgrade', - listener: ws$UpgradeListener, - options?: {| once?: boolean |} - ): this; - - /** - * A string indicating the type of binary data being transmitted by the - * connection. - */ - binaryType: string; - - /** - * The number of bytes of data that have been queued using calls to send() - * but not yet transmitted to the network. - */ - bufferedAmount: number; - - /** - * Initiate a closing handshake. - */ - close(code?: number, reason?: string): void; - - /** - * The negotiated extensions. - */ - extensions: string; - - /** - * Send a ping. - */ - ping(data?: any, mask?: boolean, callback?: () => mixed): void; - ping(data: any, callback: () => mixed): void; - ping(callback: () => mixed): void; - - /** - * Send a pong. - */ - pong(data?: any, mask?: boolean, callback?: () => mixed): void; - pong(data: any, callback: () => mixed): void; - pong(callback: () => mixed): void; - - /** - * The subprotocol selected by the server. - */ - protocol: string; - - /** - * The current state of the connection. - */ - readyState: number; - - /** - * Removes an event listener emulating the `EventTarget` interface. - */ - removeEventListener(type: 'close', listener: ws$CloseListener): this; - removeEventListener(type: 'error', listener: ws$ErrorListener): this; - removeEventListener(type: 'message', listener: ws$MessageListener): this; - removeEventListener(type: 'open', listener: ws$OpenListener): this; - removeEventListener(type: 'ping', listener: ws$PingListener): this; - removeEventListener(type: 'pong', listener: ws$PongListener): this; - removeEventListener( - type: 'unexpected-response', - ws$UnexpectedResponseListener - ): this; - removeEventListener(type: 'upgrade', listener: ws$UpgradeListener): this; - - /** - * Send a data message. - */ - send( - data?: any, - options?: {| - compress?: boolean, - binary?: boolean, - mask?: boolean, - fin?: boolean, - |}, - callback?: () => mixed - ): void; - send(data: any, callback: () => mixed): void; - - /** - * Forcibly close the connection. - */ - terminate(): void; -} - -declare module 'ws' { - declare module.exports: typeof ws$WebSocket; -} diff --git a/package-lock.json b/package-lock.json index 04836951..367acdfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -127,12 +127,6 @@ "@babel/types": "^7.8.3" } }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", @@ -495,169 +489,30 @@ "turbo-json-parse": "^2.2.0" } }, - "@octokit/auth-token": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", - "integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.5.tgz", - "integrity": "sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^4.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "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 - } - } - }, - "@octokit/plugin-paginate-rest": { - "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==", + "@nodelib/fs.scandir": { + "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": { - "@octokit/types": "^2.0.1" - }, - "dependencies": { - "@octokit/types": { - "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" - } - } + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" } }, - "@octokit/plugin-request-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", - "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", + "@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==", "dev": true }, - "@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" - }, - "dependencies": { - "@octokit/types": { - "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" - } - } - } - }, - "@octokit/request": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.7.tgz", - "integrity": "sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^5.0.0", - "deprecation": "^2.0.0", - "is-plain-object": "^4.0.0", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/request-error": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", - "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.1", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "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 - } - } - }, - "@octokit/request-error": { - "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", - "once": "^1.4.0" - }, - "dependencies": { - "@octokit/types": { - "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" - } - } - } - }, - "@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - } - }, - "@octokit/types": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.1.1.tgz", - "integrity": "sha512-8LDEbrxJrYiwzBrfZhoMFEq9+1o7Kg4ydiNgZt2DBU6n34iEd37qNqOkawrjJZZ6iUS5IXYf6EmGONn34YLgzw==", + "@nodelib/fs.walk": { + "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": { - "@types/node": ">= 8" + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" } }, "@sindresorhus/is": { @@ -687,26 +542,6 @@ "@types/webgl2": "0.0.4", "node-fetch": "~2.1.2", "seedrandom": "2.4.3" - }, - "dependencies": { - "node-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", - "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", - "dev": true - } - } - }, - "@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" } }, "@types/color-name": { @@ -715,25 +550,16 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", + "@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==", "dev": true }, - "@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/node": { - "version": "14.0.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.24.tgz", - "integrity": "sha512-btt/oNOiDWcSuI721MdL8VQGnjsKjlTMdrKyTcLCKeQp/n4AAMFJ961wMbp+09y8WuGPClDEv07RIItdXKIXAA==", + "version": "14.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", "dev": true }, "@types/offscreencanvas": { @@ -742,21 +568,18 @@ "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", "dev": true }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/seedrandom": { "version": "2.4.27", "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", "integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE=", "dev": true }, + "@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", + "dev": true + }, "@types/webgl-ext": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", @@ -769,6 +592,157 @@ "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==", "dev": true }, + "@types/worker-threads-pool": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/worker-threads-pool/-/worker-threads-pool-2.0.0.tgz", + "integrity": "sha512-VnFtC73JBhQRtamCR4edJWxyZrwvwz6y/Ov4VNQLiirpRUkND7xo0iUNXEZP2mvZuNbvFeXGglTAFZwCDdWMTg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.9.tgz", + "integrity": "sha512-gmXYAXr7G4BrRMnkGQGkGonc3ArVro9VZd//C1uns/qqsJyl2dxaJdlPMhZbcq5MTxFFC+ttFWtHSfVW5+hlRA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.6.0.tgz", + "integrity": "sha512-1+419X+Ynijytr1iWI+/IcX/kJryc78YNpdaXR1aRO1sU3bC0vZrIAF1tIX7rudVI84W7o7M4zo5p1aVt70fAg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.6.0", + "@typescript-eslint/scope-manager": "4.6.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.6.0.tgz", + "integrity": "sha512-pnh6Beh2/4xjJVNL+keP49DFHk3orDHHFylSp3WEjtgW3y1U+6l+jNnJrGlbs6qhAz5z96aFmmbUyKhunXKvKw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.6.0", + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/typescript-estree": "4.6.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.6.0.tgz", + "integrity": "sha512-Dj6NJxBhbdbPSZ5DYsQqpR32MwujF772F2H3VojWU6iT4AqL4BKuoNWOPFCoSZvCcADDvQjDpa6OLDAaiZPz2Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.6.0", + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/typescript-estree": "4.6.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.6.0.tgz", + "integrity": "sha512-uZx5KvStXP/lwrMrfQQwDNvh2ppiXzz5TmyTVHb+5TfZ3sUP7U1onlz3pjoWrK9konRyFe1czyxObWTly27Ang==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0" + } + }, + "@typescript-eslint/types": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.6.0.tgz", + "integrity": "sha512-5FAgjqH68SfFG4UTtIFv+rqYJg0nLjfkjD0iv+5O27a0xEeNZ5rZNDvFGZDizlCD1Ifj7MAbSW2DPMrf0E9zjA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.6.0.tgz", + "integrity": "sha512-s4Z9qubMrAo/tw0CbN0IN4AtfwuehGXVZM0CHNMdfYMGBDhPdwTEpBrecwhP7dRJu6d9tT9ECYNaWDHvlFSngA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "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==", + "dev": true + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "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 + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.6.0.tgz", + "integrity": "sha512-38Aa9Ztl0XyFPVzmutHXqDMCu15Xx8yKvUo38Gu3GhsuckCh3StPI5t2WIO9LHEsOH7MLmlGfKUisU8eW1Sjhg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.6.0", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -911,17 +885,6 @@ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-includes": { - "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", - "is-string": "^1.0.5" - } - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -937,16 +900,6 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, - "array.prototype.flat": { - "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" - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1038,12 +991,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "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 - }, "autocannon": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/autocannon/-/autocannon-4.6.0.tgz", @@ -1135,31 +1082,6 @@ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", "dev": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -1191,28 +1113,6 @@ "tweetnacl": "^0.14.3" } }, - "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 - }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "bit-twiddle": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", @@ -1259,12 +1159,6 @@ } } }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -1304,6 +1198,15 @@ "concat-map": "0.0.1" } }, + "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" + } + }, "brfs": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", @@ -1532,12 +1435,6 @@ "pako": "~1.0.5" } }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, "buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", @@ -1566,24 +1463,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=", - "dev": true - }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1596,33 +1481,6 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, - "cacheable-lookup": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz", - "integrity": "sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg==", - "dev": true, - "requires": { - "@types/keyv": "^3.1.1", - "keyv": "^4.0.0" - }, - "dependencies": { - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "keyv": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz", - "integrity": "sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - } - } - }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -1781,15 +1639,6 @@ "integrity": "sha512-twuUuJRrIrsELHz6foJtZlqrz6FC36zoHZJvvThsrM1UWPKxyoilw1Rka6Hk0AmPFKHKUoGwGfAtvNZNtNZu0g==", "dev": true }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1807,12 +1656,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -2350,88 +2193,40 @@ "dev": true }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "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 - }, - "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": "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^4.1.0" } } } @@ -2624,12 +2419,6 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -2719,6 +2508,58 @@ "integrity": "sha512-uAVe/bgNHlPdP1VE4Sk08u9pAJ7o1x/tVQtX77T5zlhYhuwOWtVkPBEtHdvF5cq48VzeCG5i1zN4dQc8pwLYrw==", "dev": true }, + "cross-env": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "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", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "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" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "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" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2742,12 +2583,6 @@ "which": "^1.2.8" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -3059,15 +2894,6 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -3109,17 +2935,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -3219,12 +3034,6 @@ "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==", "dev": true }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, "deps-regex": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", @@ -3283,6 +3092,15 @@ } } }, + "dir-glob": { + "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" + } + }, "distributions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/distributions/-/distributions-2.1.0.tgz", @@ -3472,36 +3290,6 @@ "stackframe": "^0.3.1" } }, - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "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.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -3858,471 +3646,69 @@ } } }, - "eslint-config-esnext": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-esnext/-/eslint-config-esnext-4.1.0.tgz", - "integrity": "sha512-GhfVEXdqYKEIIj7j+Fw2SQdL9qyZMekgXfq6PyXM66cQw0B435ddjz3P3kxOBVihMRJ0xGYjosaveQz5Y6z0uA==", + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "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" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "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": { - "babel-eslint": "^10.0.1", - "eslint": "^6.8.0", - "eslint-plugin-babel": "^5.2.1", - "eslint-plugin-import": "^2.14.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "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" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "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==", + "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 } } }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "eslint-config-node": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-node/-/eslint-config-node-4.1.0.tgz", - "integrity": "sha512-Wz17xV5O2WFG8fGdMYEBdbiL6TL7YNJSJvSX9V4sXQownewfYmoqlly7wxqLkOUv/57pq6LnnotMiQQrrPjCqQ==", + "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==", "dev": true, "requires": { - "eslint": "^6.8.0", - "eslint-config-esnext": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "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" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", - "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==", - "dev": true - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-module-utils": { - "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" - }, - "dependencies": { - "debug": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "eslint-plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz", - "integrity": "sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w==", - "dev": true, - "requires": { - "eslint-rule-composer": "^0.3.0" - } - }, - "eslint-plugin-flowtype": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.0.tgz", - "integrity": "sha512-z7ULdTxuhlRJcEe1MVljePXricuPOrsWfScRXFhNzVD5dmTHWjIF57AxD0e7AbEoLSbjSsaA5S+hCg43WvpXJQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" - } - }, - "eslint-plugin-import": { - "version": "2.20.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", - "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", - "dev": true, - "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "debug": { - "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" - } - }, - "doctrine": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "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" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "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", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "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 - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "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==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" + "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { @@ -4490,6 +3876,20 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -4507,6 +3907,15 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, + "fastq": { + "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" + } + }, "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", @@ -4530,6 +3939,15 @@ "flat-cache": "^2.0.1" } }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "find-parent-dir": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", @@ -4571,385 +3989,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flow-bin": { - "version": "0.137.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.137.0.tgz", - "integrity": "sha512-ytwUn68fPKK/VWVpCxJ4KNeNIjCC/uX0Ll6Z1E98sOXfMknB000WtgQjKYDdO6tOR8mvXBE0adzjgCrChVympw==", - "dev": true - }, - "flow-typed": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/flow-typed/-/flow-typed-3.2.1.tgz", - "integrity": "sha512-vWQLZmndgdEHdy1TKTeI1DkLLa4078p6vhcKz/IZ6fcpaWLElTSG7rZi3BxlcSWfEQPxsymuSBNwAT7dCpXm6g==", - "dev": true, - "requires": { - "@octokit/rest": "^16.43.1", - "colors": "^1.4.0", - "flowgen": "^1.10.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.6", - "got": "^10.5.7", - "md5": "^2.2.1", - "mkdirp": "^1.0.3", - "prettier": "^1.19.1", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "table": "^5.4.6", - "through": "^2.3.8", - "unzipper": "^0.10.8", - "which": "^2.0.2", - "yargs": "^15.1.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz", - "integrity": "sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - } - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "decompress-response": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", - "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", - "dev": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, - "defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", - "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 - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "got": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/got/-/got-10.7.0.tgz", - "integrity": "sha512-aWTDeNw9g+XqEZNcTjMMZSy7B7yE9toWOFYip7ofFTLleJhvZwUxxTxkTpKvF+p1SAA4VHmuEy7PiHTHyq8tJg==", - "dev": true, - "requires": { - "@sindresorhus/is": "^2.0.0", - "@szmarczak/http-timer": "^4.0.0", - "@types/cacheable-request": "^6.0.1", - "cacheable-lookup": "^2.0.0", - "cacheable-request": "^7.0.1", - "decompress-response": "^5.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^5.0.0", - "lowercase-keys": "^2.0.0", - "mimic-response": "^2.1.0", - "p-cancelable": "^2.0.0", - "p-event": "^4.0.0", - "responselike": "^2.0.0", - "to-readable-stream": "^2.0.0", - "type-fest": "^0.10.0" - } - }, - "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==", - "dev": true - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "keyv": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz", - "integrity": "sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "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" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "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" - } - }, - "to-readable-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", - "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==", - "dev": true - }, - "type-fest": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz", - "integrity": "sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==", - "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" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "flowgen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/flowgen/-/flowgen-1.11.0.tgz", - "integrity": "sha512-WpoBjzcZadnAw5FatlUbvFWUWXkI2/LjrwTl5fl3MVDh+KdvYgFzgRXDDKH/O2uUlwjfpveiJJJx8TwL7Se84A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/highlight": "^7.9.0", - "commander": "^5.1.0", - "lodash": "^4.17.15", - "prettier": "^2.0.5", - "shelljs": "^0.8.4", - "typescript": "^3.4", - "typescript-compiler": "^1.4.1-2" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", - "dev": true - } - } - }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -4997,43 +4036,12 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - } - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -5216,8 +4224,7 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, "har-schema": { "version": "2.0.0", @@ -5287,12 +4294,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -5863,12 +4864,6 @@ } } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, "iota-array": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", @@ -5905,12 +4900,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -5920,12 +4909,6 @@ "ci-info": "^1.5.0" } }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, "is-docker": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", @@ -5987,6 +4970,12 @@ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "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==", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -6002,12 +4991,6 @@ "path-is-inside": "^1.0.1" } }, - "is-plain-object": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.0.tgz", - "integrity": "sha512-1N1OpoS8S4Ua+FsH6Mhvgaj0di3uRXgulcv2dnFu2J/WcEsDNbBoiUX6mYmhQ2cAzZ+B/lTJtX1qUSL5RwsGug==", - "dev": true - }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -6020,15 +5003,6 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -6041,21 +5015,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -6065,8 +5024,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "is-windows": { "version": "1.0.2", @@ -6170,15 +5128,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -6344,22 +5293,28 @@ "type-check": "~0.3.2" } }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true - }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } } }, "load-yaml-file": { @@ -6396,12 +5351,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "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 - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -6450,24 +5399,12 @@ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, "lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -6574,17 +5511,6 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "dev": true, - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -6618,30 +5544,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -6650,39 +5561,16 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, "requires": { "is-utf8": "^0.2.0" } @@ -6698,6 +5586,22 @@ "source-map": "^0.5.6" } }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "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" + } + }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -7151,9 +6055,9 @@ } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", "dev": true }, "node-sass-tilde-importer": { @@ -7296,7 +6200,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -7363,7 +6266,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -7374,15 +6276,6 @@ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", "dev": true }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", @@ -7463,42 +6356,6 @@ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "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 - }, "on-net-listen": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/on-net-listen/-/on-net-listen-1.1.2.tgz", @@ -7725,15 +6582,6 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dev": true, - "requires": { - "p-timeout": "^3.1.0" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7758,15 +6606,6 @@ "p-limit": "^1.1.0" } }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7880,13 +6719,10 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pbkdf2": { "version": "3.1.1", @@ -7941,34 +6777,58 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, "requires": { "pinkie": "^2.0.0" } }, "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } } }, "pkg-up": { @@ -8057,12 +6917,6 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, "pretty-bytes": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", @@ -8338,24 +7192,58 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } } }, "readable-stream": { @@ -8401,15 +7289,6 @@ } } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -8600,6 +7479,12 @@ "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -8625,6 +7510,12 @@ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", @@ -8638,6 +7529,14 @@ "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "safe-buffer": { @@ -8699,12 +7598,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -8761,17 +7654,6 @@ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, "showdown": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", @@ -8880,6 +7762,12 @@ "integrity": "sha512-KPUi1ZqLocV64n0AuV+g4VDjAM+tEEY66nUd+rYaVBHIfeheGGUvIxe9bf7Mpc1PonDTVW2uRr9nigQa9odvuA==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -9148,12 +8036,6 @@ "readable-stream": "2" } }, - "string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -9164,48 +8046,6 @@ "strip-ansi": "^4.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -9510,6 +8350,15 @@ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toggle-selection": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", @@ -9559,12 +8408,6 @@ } } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -9577,10 +8420,26 @@ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "tsutils": { + "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" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } }, "ttest": { "version": "2.1.1", @@ -9683,15 +8542,9 @@ } }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", - "dev": true - }, - "typescript-compiler": { - "version": "1.4.1-2", - "resolved": "https://registry.npmjs.org/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz", - "integrity": "sha1-uk99si2RU0oZKdkACdzhYety/T8=", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", "dev": true }, "ultron": { @@ -9734,53 +8587,12 @@ "crypto-random-string": "^1.0.0" } }, - "universal-user-agent": { - "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" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - } - } - }, "update-notifier": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", @@ -10240,17 +9052,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", diff --git a/package.json b/package.json index f3f85574..c1dbb16b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "engines": { "node": "14.x.x" }, - "type": "module", "repository": { "type": "git", "url": "https://github.com/LucasBrazi06/ev-simulator.git" @@ -18,20 +17,20 @@ "url": "http://www.apache.org/licenses/LICENSE-2.0" } ], - "main": "src/start.js", + "main": "dist/start.js", "scripts": { - "start": "node src/start.js", - "start:debug": "node --inspect src/start.js", - "start:prof": "node --prof src/start.js", - "start:doctorprof": "clinic doctor -- node src/start.js", - "start:flameprof": "clinic flame -- node src/start.js", - "start:bubbleprof": "clinic bubbleprof -- node src/start.js", - "lint": "eslint src", - "lint:fix": "eslint --fix src", - "flow": "flow", - "flow:check": "flow check src", - "flow:deps": "flow-typed install", - "test": "echo \"Error: no test specified\" && exit 1", + "start": "node dist/start.js", + "prestart": "npm run build", + "start:debug": "node --inspect dist/start.js", + "start:prof": "node --prof dist/start.js", + "start:doctorprof": "clinic doctor -- node dist/start.js", + "start:flameprof": "clinic flame -- node dist/start.js", + "start:bubbleprof": "clinic bubbleprof -- node dist/start.js", + "build": "npm run tsc", + "lint": "cross-env TIMING=1 eslint --ext .js,.ts src", + "lint:fix": "cross-env TIMING=1 eslint --fix --ext .js,.ts src", + "tsc": "tsc", + "test": "echo \"Error: no tests implemented\" && exit 1", "clinic:clean": "clinic clean", "npm-check": "npm-check", "git:sdiff": "git diff && git submodule foreach 'git diff'", @@ -39,20 +38,23 @@ "git:spush": "git push --recurse-submodules=on-demand" }, "dependencies": { + "tslib": "^2.0.3", "uuid": "^8.3.1", "winston": "^3.3.3", "worker-threads-pool": "^2.0.0", "ws": "^7.3.1" }, "devDependencies": { - "babel-eslint": "^10.1.0", + "@types/node": "^14.14.6", + "@types/uuid": "^8.3.0", + "@types/worker-threads-pool": "^2.0.0", + "@types/ws": "^7.2.9", + "@typescript-eslint/eslint-plugin": "^4.6.0", + "@typescript-eslint/parser": "^4.6.0", "clinic": "^7.0.0", + "cross-env": "^7.0.2", "eslint": "^7.12.1", - "eslint-config-google": "^0.14.0", - "eslint-config-node": "^4.1.0", - "eslint-plugin-flowtype": "^5.2.0", - "flow-bin": "^0.137.0", - "flow-typed": "^3.2.1", - "npm-check": "^5.9.2" + "npm-check": "^5.9.2", + "typescript": "^4.0.5" } } diff --git a/src/assets/station-templates/abb-atg.station-template.json b/src/assets/station-templates/abb-atg.station-template.json new file mode 100644 index 00000000..7fca2daf --- /dev/null +++ b/src/assets/station-templates/abb-atg.station-template.json @@ -0,0 +1,119 @@ +{ + "authorizationFile": "./src/assets/authorization-tags.json", + "baseName": "CS-ABB", + "chargePointModel": "MD_TERRA_53", + "chargePointVendor": "ABB", + "firmwareVersion": "4.0.4.22", + "power": 50000, + "powerSharedByConnectors": true, + "powerUnit": "W", + "powerOutType": "DC", + "useConnectorId0": true, + "randomConnectors": false, + "resetTime": "60", + "enableStatistics": false, + "voltageOut": 400, + "Configuration": { + "configurationKey": [ + { + "key": "MeterValuesSampledData", + "readonly": false, + "value": "SoC,Energy.Active.Import.Register,Power.Active.Import,Current.Import,Voltage" + }, + { + "key": "MeterValueSampleInterval", + "readonly": false, + "value": 30 + }, + { + "key": "SupportedFeatureProfiles", + "readonly": true, + "value": "Core,LocalAuthListManagement" + }, + { + "key": "LocalAuthListEnabled", + "readonly": false, + "value": "false" + }, + { + "key": "AuthorizeRemoteTxRequests", + "readonly": false, + "value": "false" + }, + { + "key": "VendorKey", + "readonly": false, + "value": "VendorValue", + "visible": false, + "reboot": true + } + ] + }, + "AutomaticTransactionGenerator": { + "enable": true, + "minDuration": 120, + "maxDuration": 360, + "minDelayBetweenTwoTransactions": 15, + "maxDelayBetweenTwoTransactions": 30, + "probabilityOfStart": 1, + "stopAfterHours": 0.3, + "stopOnConnectionFailure": false + }, + "Connectors": { + "0": {}, + "1": { + "MeterValues": [ + { + "unit": "Percent", + "context": "Sample.Periodic", + "measurand": "SoC", + "location": "EV" + }, + { + "unit": "V", + "context": "Sample.Periodic", + "measurand": "Voltage" + }, + { + "unit": "W", + "measurand": "Power.Active.Import" + }, + { + "unit": "A", + "context": "Sample.Periodic", + "measurand": "Current.Import" + }, + { + "unit": "Wh" + } + ] + }, + "2": { + "MeterValues": [ + { + "unit": "Percent", + "context": "Sample.Periodic", + "measurand": "SoC", + "location": "EV" + }, + { + "unit": "V", + "context": "Sample.Periodic", + "measurand": "Voltage" + }, + { + "unit": "W", + "measurand": "Power.Active.Import" + }, + { + "unit": "A", + "context": "Sample.Periodic", + "measurand": "Current.Import" + }, + { + "unit": "Wh" + } + ] + } + } +} diff --git a/src/charging-station/AutomaticTransactionGenerator.js b/src/charging-station/AutomaticTransactionGenerator.js deleted file mode 100644 index 1551a714..00000000 --- a/src/charging-station/AutomaticTransactionGenerator.js +++ /dev/null @@ -1,124 +0,0 @@ -import {PerformanceObserver, performance} from 'perf_hooks'; - -import Constants from '../utils/Constants.js'; -import Utils from '../utils/Utils.js'; -import logger from '../utils/Logger.js'; - -export default class AutomaticTransactionGenerator { - constructor(chargingStation) { - this._chargingStation = chargingStation; - this._timeToStop = true; - if (this._chargingStation.getEnableStatistics()) { - this._performanceObserver = new PerformanceObserver((list) => { - const entry = list.getEntries()[0]; - this._chargingStation._statistics.logPerformance(entry, 'AutomaticTransactionGenerator'); - this._performanceObserver.disconnect(); - }); - } - } - - get timeToStop() { - return this._timeToStop; - } - - _logPrefix(connectorId = null) { - if (connectorId) { - return Utils.logPrefix(' ' + this._chargingStation._stationInfo.name + ' ATG on connector #' + connectorId + ':'); - } - return Utils.logPrefix(' ' + this._chargingStation._stationInfo.name + ' ATG:'); - } - - async start() { - this._timeToStop = false; - if (this._chargingStation._stationInfo.AutomaticTransactionGenerator.stopAfterHours && - this._chargingStation._stationInfo.AutomaticTransactionGenerator.stopAfterHours > 0) { - setTimeout(() => { - this.stop(); - }, this._chargingStation._stationInfo.AutomaticTransactionGenerator.stopAfterHours * 3600 * 1000); - } - for (const connector in this._chargingStation._connectors) { - if (connector > 0) { - this.startConnector(connector); - } - } - logger.info(this._logPrefix() + ' ATG started and will stop in ' + Utils.secondstoHHMMSS(this._chargingStation._stationInfo.AutomaticTransactionGenerator.stopAfterHours * 3600)); - } - - async stop(reason = '') { - logger.info(this._logPrefix() + ' ATG OVER => STOPPING ALL TRANSACTIONS'); - for (const connector in this._chargingStation._connectors) { - if (this._chargingStation.getConnector(connector).transactionStarted) { - logger.info(this._logPrefix(connector) + ' ATG OVER. Stop transaction ' + this._chargingStation.getConnector(connector).transactionId); - await this._chargingStation.sendStopTransaction(this._chargingStation.getConnector(connector).transactionId, reason); - } - } - this._timeToStop = true; - } - - async startConnector(connectorId) { - do { - const wait = Utils.getRandomInt(this._chargingStation._stationInfo.AutomaticTransactionGenerator.maxDelayBetweenTwoTransactions, - this._chargingStation._stationInfo.AutomaticTransactionGenerator.minDelayBetweenTwoTransactions) * 1000; - logger.info(this._logPrefix(connectorId) + ' wait for ' + Utils.secondstoHHMMSS(wait / 1000)); - await Utils.sleep(wait); - if (this._timeToStop) { - logger.debug(this._logPrefix(connectorId) + ' Entered in transaction loop while a request to stop it was made'); - break; - } - const start = Math.random(); - let skip = 0; - if (start < this._chargingStation._stationInfo.AutomaticTransactionGenerator.probabilityOfStart) { - skip = 0; - // Start transaction - let startResponse; - if (this._chargingStation.getEnableStatistics()) { - const startTransaction = performance.timerify(this.startTransaction); - this._performanceObserver.observe({entryTypes: ['function']}); - startResponse = await startTransaction(connectorId, this); - } else { - startResponse = await this.startTransaction(connectorId, this); - } - if (startResponse.idTagInfo.status !== 'Accepted') { - logger.info(this._logPrefix(connectorId) + ' transaction rejected'); - await Utils.sleep(Constants.CHARGING_STATION_ATG_WAIT_TIME); - } else { - // Wait until end of transaction - const wait = Utils.getRandomInt(this._chargingStation._stationInfo.AutomaticTransactionGenerator.maxDuration, - this._chargingStation._stationInfo.AutomaticTransactionGenerator.minDuration) * 1000; - logger.info(this._logPrefix(connectorId) + ' transaction ' + this._chargingStation.getConnector(connectorId).transactionId + ' will stop in ' + Utils.secondstoHHMMSS(wait / 1000)); - await Utils.sleep(wait); - // Stop transaction - if (this._chargingStation.getConnector(connectorId).transactionStarted) { - logger.info(this._logPrefix(connectorId) + ' stop transaction ' + this._chargingStation.getConnector(connectorId).transactionId); - if (this._chargingStation.getEnableStatistics()) { - const stopTransaction = performance.timerify(this.stopTransaction); - this._performanceObserver.observe({entryTypes: ['function']}); - await stopTransaction(connectorId, this); - } else { - await this.stopTransaction(connectorId, this); - } - } - } - } else { - skip++; - logger.info(this._logPrefix(connectorId) + ' transaction skipped ' + skip); - } - } while (!this._timeToStop); - logger.info(this._logPrefix(connectorId) + ' ATG STOPPED on the connector'); - } - - // eslint-disable-next-line class-methods-use-this - async startTransaction(connectorId, self) { - if (self._chargingStation.hasAuthorizedTags()) { - const tagId = self._chargingStation.getRandomTagId(); - logger.info(self._logPrefix(connectorId) + ' start transaction for tagID ' + tagId); - return self._chargingStation.sendStartTransaction(connectorId, tagId); - } - return self._chargingStation.sendStartTransaction(connectorId); - } - - // eslint-disable-next-line class-methods-use-this - async stopTransaction(connectorId, self) { - await self._chargingStation.sendStopTransaction(self._chargingStation.getConnector(connectorId).transactionId); - } -} diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts new file mode 100644 index 00000000..6e9d263c --- /dev/null +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -0,0 +1,128 @@ +import { PerformanceObserver, performance } from 'perf_hooks'; + +import ChargingStation from './ChargingStation'; +import Constants from '../utils/Constants'; +import Utils from '../utils/Utils'; +import logger from '../utils/Logger'; + +export default class AutomaticTransactionGenerator { + private _chargingStation: ChargingStation; + private _timeToStop: boolean; + private _performanceObserver: PerformanceObserver; + + constructor(chargingStation: ChargingStation) { + this._chargingStation = chargingStation; + this._timeToStop = true; + if (this._chargingStation.getEnableStatistics()) { + this._performanceObserver = new PerformanceObserver((list) => { + const entry = list.getEntries()[0]; + this._chargingStation.statistics.logPerformance(entry, 'AutomaticTransactionGenerator'); + this._performanceObserver.disconnect(); + }); + } + } + + get timeToStop(): boolean { + return this._timeToStop; + } + + _logPrefix(connectorId: number = null): string { + if (connectorId) { + return Utils.logPrefix(' ' + this._chargingStation.stationInfo.name + ' ATG on connector #' + connectorId + ':'); + } + return Utils.logPrefix(' ' + this._chargingStation.stationInfo.name + ' ATG:'); + } + + start(): void { + this._timeToStop = false; + if (this._chargingStation.stationInfo.AutomaticTransactionGenerator.stopAfterHours && + this._chargingStation.stationInfo.AutomaticTransactionGenerator.stopAfterHours > 0) { + setTimeout(() => { + this.stop(); + }, this._chargingStation.stationInfo.AutomaticTransactionGenerator.stopAfterHours * 3600 * 1000); + } + for (const connector in this._chargingStation.connectors) { + if (Utils.convertToInt(connector) > 0) { + this.startConnector(Utils.convertToInt(connector)); + } + } + logger.info(this._logPrefix() + ' ATG started and will stop in ' + Utils.secondstoHHMMSS(this._chargingStation.stationInfo.AutomaticTransactionGenerator.stopAfterHours * 3600)); + } + + async stop(reason = ''): Promise { + logger.info(this._logPrefix() + ' ATG OVER => STOPPING ALL TRANSACTIONS'); + for (const connector in this._chargingStation.connectors) { + if (this._chargingStation.getConnector(Utils.convertToInt(connector)).transactionStarted) { + logger.info(this._logPrefix(Utils.convertToInt(connector)) + ' ATG OVER. Stop transaction ' + this._chargingStation.getConnector(Utils.convertToInt(connector)).transactionId); + await this._chargingStation.sendStopTransaction(this._chargingStation.getConnector(Utils.convertToInt(connector)).transactionId, reason); + } + } + this._timeToStop = true; + } + + async startConnector(connectorId: number): Promise { + do { + const wait = Utils.getRandomInt(this._chargingStation.stationInfo.AutomaticTransactionGenerator.maxDelayBetweenTwoTransactions, + this._chargingStation.stationInfo.AutomaticTransactionGenerator.minDelayBetweenTwoTransactions) * 1000; + logger.info(this._logPrefix(connectorId) + ' wait for ' + Utils.secondstoHHMMSS(wait / 1000)); + await Utils.sleep(wait); + if (this._timeToStop) { + logger.debug(this._logPrefix(connectorId) + ' Entered in transaction loop while a request to stop it was made'); + break; + } + const start = Math.random(); + let skip = 0; + if (start < this._chargingStation.stationInfo.AutomaticTransactionGenerator.probabilityOfStart) { + skip = 0; + // Start transaction + let startResponse; + if (this._chargingStation.getEnableStatistics()) { + const startTransaction = performance.timerify(this.startTransaction); + this._performanceObserver.observe({ entryTypes: ['function'] }); + startResponse = await startTransaction(connectorId); + } else { + startResponse = await this.startTransaction(connectorId); + } + if (startResponse.idTagInfo.status !== 'Accepted') { + logger.info(this._logPrefix(connectorId) + ' transaction rejected'); + await Utils.sleep(Constants.CHARGING_STATION_ATG_WAIT_TIME); + } else { + // Wait until end of transaction + const waitTrxEnd = Utils.getRandomInt(this._chargingStation.stationInfo.AutomaticTransactionGenerator.maxDuration, + this._chargingStation.stationInfo.AutomaticTransactionGenerator.minDuration) * 1000; + logger.info(this._logPrefix(connectorId) + ' transaction ' + this._chargingStation.getConnector(connectorId).transactionId + ' will stop in ' + Utils.secondstoHHMMSS(waitTrxEnd / 1000)); + await Utils.sleep(waitTrxEnd); + // Stop transaction + if (this._chargingStation.getConnector(connectorId).transactionStarted) { + logger.info(this._logPrefix(connectorId) + ' stop transaction ' + this._chargingStation.getConnector(connectorId).transactionId); + if (this._chargingStation.getEnableStatistics()) { + const stopTransaction = performance.timerify(this.stopTransaction); + this._performanceObserver.observe({ entryTypes: ['function'] }); + await stopTransaction(connectorId); + } else { + await this.stopTransaction(connectorId); + } + } + } + } else { + skip++; + logger.info(this._logPrefix(connectorId) + ' transaction skipped ' + skip); + } + } while (!this._timeToStop); + logger.info(this._logPrefix(connectorId) + ' ATG STOPPED on the connector'); + } + + async startTransaction(connectorId: number): Promise { + if (this._chargingStation.hasAuthorizedTags()) { + const tagId = this._chargingStation.getRandomTagId(); + logger.info(this._logPrefix(connectorId) + ' start transaction for tagID ' + tagId); + return this._chargingStation.sendStartTransaction(connectorId, tagId); + } + logger.info(this._logPrefix(connectorId) + ' start transaction without a tagID'); + return this._chargingStation.sendStartTransaction(connectorId); + } + + async stopTransaction(connectorId: number): Promise { + await this._chargingStation.sendStopTransaction(this._chargingStation.getConnector(connectorId).transactionId); + } +} diff --git a/src/charging-station/ChargingStation.js b/src/charging-station/ChargingStation.ts similarity index 81% rename from src/charging-station/ChargingStation.js rename to src/charging-station/ChargingStation.ts index 76d75f57..83074dd7 100644 --- a/src/charging-station/ChargingStation.js +++ b/src/charging-station/ChargingStation.ts @@ -1,19 +1,43 @@ -import {PerformanceObserver, performance} from 'perf_hooks'; +import { PerformanceObserver, performance } from 'perf_hooks'; -import AutomaticTransactionGenerator from './AutomaticTransactionGenerator.js'; -import Configuration from '../utils/Configuration.js'; +import AutomaticTransactionGenerator from './AutomaticTransactionGenerator'; +import Configuration from '../utils/Configuration'; import Constants from '../utils/Constants.js'; -import ElectricUtils from '../utils/ElectricUtils.js'; +import ElectricUtils from '../utils/ElectricUtils'; +import { MeasurandValues } from '../types/MeasurandValues'; import OCPPError from './OcppError.js'; -import Statistics from '../utils/Statistics.js'; -import Utils from '../utils/Utils.js'; +import Statistics from '../utils/Statistics'; +import Utils from '../utils/Utils'; import WebSocket from 'ws'; import crypto from 'crypto'; import fs from 'fs'; -import logger from '../utils/Logger.js'; +import logger from '../utils/Logger'; export default class ChargingStation { - constructor(index, stationTemplateFile) { + private _index: number; + private _stationTemplateFile; + private _stationInfo; + private _bootNotificationMessage; + private _connectors; + private _configuration; + private _connectorsConfigurationHash; + private _supervisionUrl; + private _wsConnectionUrl; + private _wsConnection; + private _isSocketRestart; + private _autoReconnectRetryCount; + private _autoReconnectMaxRetries; + private _autoReconnectTimeout; + private _requests; + private _messageQueue; + private _automaticTransactionGeneration: AutomaticTransactionGenerator; + private _authorizedTags: string[]; + private _heartbeatInterval; + private _heartbeatSetInterval; + private _statistics: Statistics; + private _performanceObserver: PerformanceObserver; + + constructor(index: number, stationTemplateFile: string) { this._index = index; this._stationTemplateFile = stationTemplateFile; this._connectors = {}; @@ -22,7 +46,7 @@ export default class ChargingStation { this._isSocketRestart = false; this._autoReconnectRetryCount = 0; this._autoReconnectMaxRetries = Configuration.getAutoReconnectMaxRetries(); // -1 for unlimited - this._autoReconnectTimeout = Configuration.getAutoReconnectTimeout() * 1000; // ms, zero for disabling + this._autoReconnectTimeout = Configuration.getAutoReconnectTimeout() * 1000; // Ms, zero for disabling this._requests = {}; this._messageQueue = []; @@ -30,7 +54,7 @@ export default class ChargingStation { this._authorizedTags = this._loadAndGetAuthorizedTags(); } - _getStationName(stationTemplate) { + _getStationName(stationTemplate): string { return stationTemplate.fixedName ? stationTemplate.baseName : stationTemplate.baseName + '-' + ('000000000' + this._index).substr(('000000000' + this._index).length - 4); } @@ -56,13 +80,17 @@ export default class ChargingStation { return stationTemplate; } - _initialize() { + get stationInfo() { + return this._stationInfo; + } + + _initialize(): void { this._stationInfo = this._buildStationInfo(); this._bootNotificationMessage = { chargePointModel: this._stationInfo.chargePointModel, chargePointVendor: this._stationInfo.chargePointVendor, - ...!Utils.isUndefined(this._stationInfo.chargeBoxSerialNumberPrefix) && {chargeBoxSerialNumber: this._stationInfo.chargeBoxSerialNumberPrefix}, - ...!Utils.isUndefined(this._stationInfo.firmwareVersion) && {firmwareVersion: this._stationInfo.firmwareVersion}, + ...!Utils.isUndefined(this._stationInfo.chargeBoxSerialNumberPrefix) && { chargeBoxSerialNumber: this._stationInfo.chargeBoxSerialNumberPrefix }, + ...!Utils.isUndefined(this._stationInfo.firmwareVersion) && { firmwareVersion: this._stationInfo.firmwareVersion }, }; this._configuration = this._getConfiguration(); this._supervisionUrl = this._getSupervisionURL(); @@ -86,7 +114,7 @@ export default class ChargingStation { if (!this._connectors || (this._connectors && this._connectorsConfigurationHash !== connectorsConfigHash)) { this._connectorsConfigurationHash = connectorsConfigHash; // Add connector Id 0 - let lastConnector = 0; + let lastConnector = '0'; for (lastConnector in this._stationInfo.Connectors) { if (Utils.convertToInt(lastConnector) === 0 && Utils.convertToBoolean(this._stationInfo.useConnectorId0) && this._stationInfo.Connectors[lastConnector]) { this._connectors[lastConnector] = Utils.cloneObject(this._stationInfo.Connectors[lastConnector]); @@ -95,7 +123,7 @@ export default class ChargingStation { // Generate all connectors if ((this._stationInfo.Connectors[0] ? templateMaxConnectors - 1 : templateMaxConnectors) > 0) { for (let index = 1; index <= maxConnectors; index++) { - const randConnectorID = Utils.convertToBoolean(this._stationInfo.randomConnectors) ? Utils.getRandomInt(lastConnector, 1) : index; + const randConnectorID = Utils.convertToBoolean(this._stationInfo.randomConnectors) ? Utils.getRandomInt(Utils.convertToInt(lastConnector), 1) : index; this._connectors[index] = Utils.cloneObject(this._stationInfo.Connectors[randConnectorID]); } } @@ -104,7 +132,7 @@ export default class ChargingStation { delete this._stationInfo.Connectors; // Initialize transaction attributes on connectors for (const connector in this._connectors) { - if (!this.getConnector(connector).transactionStarted) { + if (!this.getConnector(Utils.convertToInt(connector)).transactionStarted) { this._initTransactionOnConnector(connector); } } @@ -125,7 +153,15 @@ export default class ChargingStation { } } - _logPrefix() { + get connectors() { + return this._connectors; + } + + get statistics(): Statistics { + return this._statistics; + } + + _logPrefix(): string { return Utils.logPrefix(` ${this._stationInfo.name}:`); } @@ -134,10 +170,10 @@ export default class ChargingStation { } _getAuthorizationFile() { - return this._stationInfo.authorizationFile ? this._stationInfo.authorizationFile : ''; + return this._stationInfo.authorizationFile && this._stationInfo.authorizationFile; } - _loadAndGetAuthorizedTags() { + _loadAndGetAuthorizedTags(): string[] { let authorizedTags = []; const authorizationFile = this._getAuthorizationFile(); if (authorizationFile) { @@ -169,7 +205,7 @@ export default class ChargingStation { return !Utils.isUndefined(this._stationInfo.enableStatistics) ? Utils.convertToBoolean(this._stationInfo.enableStatistics) : true; } - _getNumberOfPhases() { + _getNumberOfPhases(): number { switch (this._getPowerOutType()) { case 'AC': return !Utils.isUndefined(this._stationInfo.numberOfPhases) ? Utils.convertToInt(this._stationInfo.numberOfPhases) : 3; @@ -181,7 +217,7 @@ export default class ChargingStation { _getNumberOfRunningTransactions() { let trxCount = 0; for (const connector in this._connectors) { - if (this.getConnector(connector).transactionStarted) { + if (this.getConnector(Utils.convertToInt(connector)).transactionStarted) { trxCount++; } } @@ -196,8 +232,8 @@ export default class ChargingStation { return powerDivider; } - getConnector(id) { - return this._connectors[Utils.convertToInt(id)]; + getConnector(id: number) { + return this._connectors[id]; } _getTemplateMaxNumberOfConnectors() { @@ -217,7 +253,7 @@ export default class ChargingStation { return maxConnectors; } - _getNumberOfConnectors() { + _getNumberOfConnectors(): number { return this._connectors[0] ? Object.keys(this._connectors).length - 1 : Object.keys(this._connectors).length; } @@ -267,14 +303,14 @@ export default class ChargingStation { return localAuthListEnabled ? Utils.convertToBoolean(localAuthListEnabled.value) : false; } - async _basicStartMessageSequence() { + _basicStartMessageSequence(): void { // Start heartbeat - this._startHeartbeat(this); + this._startHeartbeat(); // Initialize connectors status for (const connector in this._connectors) { - if (!this.getConnector(connector).transactionStarted) { - if (this.getConnector(connector).bootStatus) { - this.sendStatusNotificationWithTimeout(connector, this.getConnector(connector).bootStatus); + if (!this.getConnector(Utils.convertToInt(connector)).transactionStarted) { + if (this.getConnector(Utils.convertToInt(connector)).bootStatus) { + this.sendStatusNotificationWithTimeout(connector, this.getConnector(Utils.convertToInt(connector)).bootStatus); } else { this.sendStatusNotificationWithTimeout(connector, 'Available'); } @@ -296,19 +332,18 @@ export default class ChargingStation { } } - // eslint-disable-next-line class-methods-use-this - async _startHeartbeat(self) { - if (self._heartbeatInterval && self._heartbeatInterval > 0 && !self._heartbeatSetInterval) { - self._heartbeatSetInterval = setInterval(() => { + _startHeartbeat(): void { + if (this._heartbeatInterval && this._heartbeatInterval > 0 && !this._heartbeatSetInterval) { + this._heartbeatSetInterval = setInterval(() => { this.sendHeartbeat(); - }, self._heartbeatInterval); - logger.info(self._logPrefix() + ' Heartbeat started every ' + self._heartbeatInterval + 'ms'); + }, this._heartbeatInterval); + logger.info(this._logPrefix() + ' Heartbeat started every ' + this._heartbeatInterval.toString() + 'ms'); } else { - logger.error(`${self._logPrefix()} Heartbeat interval set to ${self._heartbeatInterval}ms, not starting the heartbeat`); + logger.error(`${this._logPrefix()} Heartbeat interval set to ${this._heartbeatInterval}ms, not starting the heartbeat`); } } - async _stopHeartbeat() { + _stopHeartbeat() { if (this._heartbeatSetInterval) { clearInterval(this._heartbeatSetInterval); this._heartbeatSetInterval = null; @@ -343,7 +378,7 @@ export default class ChargingStation { }); } - async _startMeterValues(connectorId, interval) { + _startMeterValues(connectorId: number, interval: number): void { if (!this.getConnector(connectorId).transactionStarted) { logger.error(`${this._logPrefix()} Trying to start MeterValues on connector Id ${connectorId} with no transaction started`); return; @@ -358,9 +393,9 @@ export default class ChargingStation { this._performanceObserver.observe({ entryTypes: ['function'], }); - await sendMeterValues(connectorId, interval, this); + await sendMeterValues(connectorId, interval); } else { - await this.sendMeterValues(connectorId, interval, this); + await this.sendMeterValues(connectorId, interval); } }, interval); } else { @@ -368,7 +403,7 @@ export default class ChargingStation { } } - async start() { + start() { if (!this._wsConnectionUrl) { this._wsConnectionUrl = this._supervisionUrl + '/' + this._stationInfo.name; } @@ -392,7 +427,7 @@ export default class ChargingStation { async stop(reason = '') { // Stop heartbeat - await this._stopHeartbeat(); + this._stopHeartbeat(); // Stop the ATG if (Utils.convertToBoolean(this._stationInfo.AutomaticTransactionGenerator.enable) && this._automaticTransactionGeneration && @@ -400,14 +435,14 @@ export default class ChargingStation { await this._automaticTransactionGeneration.stop(reason); } else { for (const connector in this._connectors) { - if (this.getConnector(connector).transactionStarted) { - await this.sendStopTransaction(this.getConnector(connector).transactionId, reason); + if (this.getConnector(Utils.convertToInt(connector)).transactionStarted) { + await this.sendStopTransaction(this.getConnector(Utils.convertToInt(connector)).transactionId, reason); } } } // eslint-disable-next-line guard-for-in for (const connector in this._connectors) { - await this.sendStatusNotification(connector, 'Unavailable'); + await this.sendStatusNotification(Utils.convertToInt(connector), 'Unavailable'); } if (this._wsConnection && this._wsConnection.readyState === WebSocket.OPEN) { await this._wsConnection.close(); @@ -567,7 +602,7 @@ export default class ChargingStation { } } - async sendStatusNotification(connectorId, status, errorCode = 'NoError') { + async sendStatusNotification(connectorId: number, status, errorCode = 'NoError') { try { const payload = { connectorId, @@ -582,14 +617,14 @@ export default class ChargingStation { } sendStatusNotificationWithTimeout(connectorId, status, errorCode = 'NoError', timeout = Constants.STATUS_NOTIFICATION_TIMEOUT) { - setTimeout(() => this.sendStatusNotification(connectorId, status, errorCode), timeout); + setTimeout(async () => this.sendStatusNotification(connectorId, status, errorCode), timeout); } - async sendStartTransaction(connectorId, idTag) { + async sendStartTransaction(connectorId: number, idTag?: string) { try { const payload = { connectorId, - idTag, + ...!Utils.isUndefined(idTag) && { idTag }, meterStart: 0, timestamp: new Date().toISOString(), }; @@ -600,17 +635,17 @@ export default class ChargingStation { } } - sendStartTransactionWithTimeout(connectorId, idTag, timeout = Constants.START_TRANSACTION_TIMEOUT) { - setTimeout(() => this.sendStartTransaction(connectorId, idTag), timeout); + sendStartTransactionWithTimeout(connectorId: number, idTag?: string, timeout = Constants.START_TRANSACTION_TIMEOUT) { + setTimeout(async () => this.sendStartTransaction(connectorId, idTag), timeout); } - async sendStopTransaction(transactionId, reason = '') { + async sendStopTransaction(transactionId, reason = ''): Promise { try { const payload = { transactionId, meterStop: 0, timestamp: new Date().toISOString(), - ...reason && {reason}, + ...reason && { reason }, }; await this.sendMessage(Utils.generateUUID(), payload, Constants.OCPP_JSON_CALL_MESSAGE, 'StopTransaction'); } catch (error) { @@ -619,78 +654,77 @@ export default class ChargingStation { } } - // eslint-disable-next-line class-methods-use-this - async sendMeterValues(connectorId, interval, self, debug = false) { + async sendMeterValues(connectorId, interval, debug = false): Promise { try { const sampledValues = { timestamp: new Date().toISOString(), sampledValue: [], }; - const meterValuesTemplate = self.getConnector(connectorId).MeterValues; + const meterValuesTemplate = this.getConnector(connectorId).MeterValues; for (let index = 0; index < meterValuesTemplate.length; index++) { - const connector = self.getConnector(connectorId); + const connector = this.getConnector(connectorId); // SoC measurand - if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'SoC' && self._getConfigurationKey('MeterValuesSampledData').value.includes('SoC')) { + if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'SoC' && this._getConfigurationKey('MeterValuesSampledData').value.includes('SoC')) { sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'Percent'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'Percent' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, measurand: meterValuesTemplate[index].measurand, - ...!Utils.isUndefined(meterValuesTemplate[index].location) ? {location: meterValuesTemplate[index].location} : {location: 'EV'}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: Utils.getRandomInt(100)}, + ...!Utils.isUndefined(meterValuesTemplate[index].location) ? { location: meterValuesTemplate[index].location } : { location: 'EV' }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: Utils.getRandomInt(100) }, }); const sampledValuesIndex = sampledValues.sampledValue.length - 1; if (sampledValues.sampledValue[sampledValuesIndex].value > 100 || debug) { - logger.error(`${self._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/100`); + logger.error(`${this._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/100`); } // Voltage measurand - } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Voltage' && self._getConfigurationKey('MeterValuesSampledData').value.includes('Voltage')) { + } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Voltage' && this._getConfigurationKey('MeterValuesSampledData').value.includes('Voltage')) { sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'V'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'V' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, measurand: meterValuesTemplate[index].measurand, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: self._getVoltageOut()}, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: this._getVoltageOut() }, }); - for (let phase = 1; self._getNumberOfPhases() === 3 && phase <= self._getNumberOfPhases(); phase++) { + for (let phase = 1; this._getNumberOfPhases() === 3 && phase <= this._getNumberOfPhases(); phase++) { const voltageValue = sampledValues.sampledValue[sampledValues.sampledValue.length - 1].value; let phaseValue; if (voltageValue >= 0 && voltageValue <= 250) { phaseValue = `L${phase}-N`; } else if (voltageValue > 250) { - phaseValue = `L${phase}-L${(phase + 1) % self._getNumberOfPhases() !== 0 ? (phase + 1) % self._getNumberOfPhases() : self._getNumberOfPhases()}`; + phaseValue = `L${phase}-L${(phase + 1) % this._getNumberOfPhases() !== 0 ? (phase + 1) % this._getNumberOfPhases() : this._getNumberOfPhases()}`; } sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'V'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'V' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, measurand: meterValuesTemplate[index].measurand, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: self._getVoltageOut()}, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: this._getVoltageOut() }, phase: phaseValue, }); } // Power.Active.Import measurand - } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Power.Active.Import' && self._getConfigurationKey('MeterValuesSampledData').value.includes('Power.Active.Import')) { + } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Power.Active.Import' && this._getConfigurationKey('MeterValuesSampledData').value.includes('Power.Active.Import')) { // FIXME: factor out powerDivider checks - if (Utils.isUndefined(self._stationInfo.powerDivider)) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; + if (Utils.isUndefined(this._stationInfo.powerDivider)) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; logger.error(errMsg); throw Error(errMsg); - } else if (self._stationInfo.powerDivider && self._stationInfo.powerDivider <= 0) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${self._stationInfo.powerDivider}`; + } else if (this._stationInfo.powerDivider && this._stationInfo.powerDivider <= 0) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${this._stationInfo.powerDivider}`; logger.error(errMsg); throw Error(errMsg); } - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: Unknown ${self._getPowerOutType()} powerOutType in template file ${self._stationTemplateFile}, cannot calculate ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} measurand value`; - const powerMeasurandValues = {}; - const maxPower = Math.round(self._stationInfo.maxPower / self._stationInfo.powerDivider); - const maxPowerPerPhase = Math.round((self._stationInfo.maxPower / self._stationInfo.powerDivider) / self._getNumberOfPhases()); - switch (self._getPowerOutType()) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: Unknown ${this._getPowerOutType()} powerOutType in template file ${this._stationTemplateFile}, cannot calculate ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} measurand value`; + const powerMeasurandValues = {} as MeasurandValues ; + const maxPower = Math.round(this._stationInfo.maxPower / this._stationInfo.powerDivider); + const maxPowerPerPhase = Math.round((this._stationInfo.maxPower / this._stationInfo.powerDivider) / this._getNumberOfPhases()); + switch (this._getPowerOutType()) { case 'AC': if (Utils.isUndefined(meterValuesTemplate[index].value)) { powerMeasurandValues.L1 = Utils.getRandomFloatRounded(maxPowerPerPhase); powerMeasurandValues.L2 = 0; powerMeasurandValues.L3 = 0; - if (self._getNumberOfPhases() === 3) { + if (this._getNumberOfPhases() === 3) { powerMeasurandValues.L2 = Utils.getRandomFloatRounded(maxPowerPerPhase); powerMeasurandValues.L3 = Utils.getRandomFloatRounded(maxPowerPerPhase); } @@ -707,58 +741,58 @@ export default class ChargingStation { throw Error(errMsg); } sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'W'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'W' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, measurand: meterValuesTemplate[index].measurand, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: powerMeasurandValues.all}, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: powerMeasurandValues.all }, }); const sampledValuesIndex = sampledValues.sampledValue.length - 1; if (sampledValues.sampledValue[sampledValuesIndex].value > maxPower || debug) { - logger.error(`${self._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxPower}`); + logger.error(`${this._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxPower}`); } - for (let phase = 1; self._getNumberOfPhases() === 3 && phase <= self._getNumberOfPhases(); phase++) { + for (let phase = 1; this._getNumberOfPhases() === 3 && phase <= this._getNumberOfPhases(); phase++) { const phaseValue = `L${phase}-N`; sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'W'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, - ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && {measurand: meterValuesTemplate[index].measurand}, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: powerMeasurandValues[`L${phase}`]}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'W' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, + ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && { measurand: meterValuesTemplate[index].measurand }, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: powerMeasurandValues[`L${phase}`] }, phase: phaseValue, }); } // Current.Import measurand - } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Current.Import' && self._getConfigurationKey('MeterValuesSampledData').value.includes('Current.Import')) { + } else if (meterValuesTemplate[index].measurand && meterValuesTemplate[index].measurand === 'Current.Import' && this._getConfigurationKey('MeterValuesSampledData').value.includes('Current.Import')) { // FIXME: factor out powerDivider checks - if (Utils.isUndefined(self._stationInfo.powerDivider)) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; + if (Utils.isUndefined(this._stationInfo.powerDivider)) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; logger.error(errMsg); throw Error(errMsg); - } else if (self._stationInfo.powerDivider && self._stationInfo.powerDivider <= 0) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${self._stationInfo.powerDivider}`; + } else if (this._stationInfo.powerDivider && this._stationInfo.powerDivider <= 0) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${this._stationInfo.powerDivider}`; logger.error(errMsg); throw Error(errMsg); } - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: Unknown ${self._getPowerOutType()} powerOutType in template file ${self._stationTemplateFile}, cannot calculate ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} measurand value`; - const currentMeasurandValues = {}; + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: Unknown ${this._getPowerOutType()} powerOutType in template file ${this._stationTemplateFile}, cannot calculate ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} measurand value`; + const currentMeasurandValues = {} as MeasurandValues; let maxAmperage; - switch (self._getPowerOutType()) { + switch (this._getPowerOutType()) { case 'AC': - maxAmperage = ElectricUtils.ampPerPhaseFromPower(self._getNumberOfPhases(), self._stationInfo.maxPower / self._stationInfo.powerDivider, self._getVoltageOut()); + maxAmperage = ElectricUtils.ampPerPhaseFromPower(this._getNumberOfPhases(), this._stationInfo.maxPower / this._stationInfo.powerDivider, this._getVoltageOut()); if (Utils.isUndefined(meterValuesTemplate[index].value)) { currentMeasurandValues.L1 = Utils.getRandomFloatRounded(maxAmperage); currentMeasurandValues.L2 = 0; currentMeasurandValues.L3 = 0; - if (self._getNumberOfPhases() === 3) { + if (this._getNumberOfPhases() === 3) { currentMeasurandValues.L2 = Utils.getRandomFloatRounded(maxAmperage); currentMeasurandValues.L3 = Utils.getRandomFloatRounded(maxAmperage); } - currentMeasurandValues.all = Utils.roundTo((currentMeasurandValues.L1 + currentMeasurandValues.L2 + currentMeasurandValues.L3) / self._getNumberOfPhases(), 2); + currentMeasurandValues.all = Utils.roundTo((currentMeasurandValues.L1 + currentMeasurandValues.L2 + currentMeasurandValues.L3) / this._getNumberOfPhases(), 2); } break; case 'DC': - maxAmperage = ElectricUtils.ampTotalFromPower(self._stationInfo.maxPower / self._stationInfo.powerDivider, self._getVoltageOut()); + maxAmperage = ElectricUtils.ampTotalFromPower(this._stationInfo.maxPower / this._stationInfo.powerDivider, this._getVoltageOut()); if (Utils.isUndefined(meterValuesTemplate[index].value)) { currentMeasurandValues.all = Utils.getRandomFloatRounded(maxAmperage); } @@ -768,41 +802,41 @@ export default class ChargingStation { throw Error(errMsg); } sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'A'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'A' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, measurand: meterValuesTemplate[index].measurand, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: currentMeasurandValues.all}, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: currentMeasurandValues.all }, }); const sampledValuesIndex = sampledValues.sampledValue.length - 1; if (sampledValues.sampledValue[sampledValuesIndex].value > maxAmperage || debug) { - logger.error(`${self._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxAmperage}`); + logger.error(`${this._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxAmperage}`); } - for (let phase = 1; self._getNumberOfPhases() === 3 && phase <= self._getNumberOfPhases(); phase++) { + for (let phase = 1; this._getNumberOfPhases() === 3 && phase <= this._getNumberOfPhases(); phase++) { const phaseValue = `L${phase}`; sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'A'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, - ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && {measurand: meterValuesTemplate[index].measurand}, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: currentMeasurandValues[phaseValue]}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'A' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, + ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && { measurand: meterValuesTemplate[index].measurand }, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: currentMeasurandValues[phaseValue] }, phase: phaseValue, }); } // Energy.Active.Import.Register measurand (default) } else if (!meterValuesTemplate[index].measurand || meterValuesTemplate[index].measurand === 'Energy.Active.Import.Register') { // FIXME: factor out powerDivider checks - if (Utils.isUndefined(self._stationInfo.powerDivider)) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; + if (Utils.isUndefined(this._stationInfo.powerDivider)) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider is undefined`; logger.error(errMsg); throw Error(errMsg); - } else if (self._stationInfo.powerDivider && self._stationInfo.powerDivider <= 0) { - const errMsg = `${self._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${self._stationInfo.powerDivider}`; + } else if (this._stationInfo.powerDivider && this._stationInfo.powerDivider <= 0) { + const errMsg = `${this._logPrefix()} MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'}: powerDivider have zero or below value ${this._stationInfo.powerDivider}`; logger.error(errMsg); throw Error(errMsg); } if (Utils.isUndefined(meterValuesTemplate[index].value)) { - const measurandValue = Utils.getRandomInt(self._stationInfo.maxPower / (self._stationInfo.powerDivider * 3600000) * interval); + const measurandValue = Utils.getRandomInt(this._stationInfo.maxPower / (this._stationInfo.powerDivider * 3600000) * interval); // Persist previous value in connector if (connector && !Utils.isNullOrUndefined(connector.lastEnergyActiveImportRegisterValue) && connector.lastEnergyActiveImportRegisterValue >= 0) { connector.lastEnergyActiveImportRegisterValue += measurandValue; @@ -811,31 +845,31 @@ export default class ChargingStation { } } sampledValues.sampledValue.push({ - ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? {unit: meterValuesTemplate[index].unit} : {unit: 'Wh'}, - ...!Utils.isUndefined(meterValuesTemplate[index].context) && {context: meterValuesTemplate[index].context}, - ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && {measurand: meterValuesTemplate[index].measurand}, - ...!Utils.isUndefined(meterValuesTemplate[index].location) && {location: meterValuesTemplate[index].location}, - ...!Utils.isUndefined(meterValuesTemplate[index].value) ? {value: meterValuesTemplate[index].value} : {value: connector.lastEnergyActiveImportRegisterValue}, + ...!Utils.isUndefined(meterValuesTemplate[index].unit) ? { unit: meterValuesTemplate[index].unit } : { unit: 'Wh' }, + ...!Utils.isUndefined(meterValuesTemplate[index].context) && { context: meterValuesTemplate[index].context }, + ...!Utils.isUndefined(meterValuesTemplate[index].measurand) && { measurand: meterValuesTemplate[index].measurand }, + ...!Utils.isUndefined(meterValuesTemplate[index].location) && { location: meterValuesTemplate[index].location }, + ...!Utils.isUndefined(meterValuesTemplate[index].value) ? { value: meterValuesTemplate[index].value } : { value: connector.lastEnergyActiveImportRegisterValue }, }); const sampledValuesIndex = sampledValues.sampledValue.length - 1; - const maxConsumption = Math.round(self._stationInfo.maxPower * 3600 / (self._stationInfo.powerDivider * interval)); + const maxConsumption = Math.round(this._stationInfo.maxPower * 3600 / (this._stationInfo.powerDivider * interval)); if (sampledValues.sampledValue[sampledValuesIndex].value > maxConsumption || debug) { - logger.error(`${self._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxConsumption}`); + logger.error(`${this._logPrefix()} MeterValues measurand ${sampledValues.sampledValue[sampledValuesIndex].measurand ? sampledValues.sampledValue[sampledValuesIndex].measurand : 'Energy.Active.Import.Register'}: connectorId ${connectorId}, transaction ${connector.transactionId}, value: ${sampledValues.sampledValue[sampledValuesIndex].value}/${maxConsumption}`); } // Unsupported measurand } else { - logger.info(`${self._logPrefix()} Unsupported MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} on connectorId ${connectorId}`); + logger.info(`${this._logPrefix()} Unsupported MeterValues measurand ${meterValuesTemplate[index].measurand ? meterValuesTemplate[index].measurand : 'Energy.Active.Import.Register'} on connectorId ${connectorId}`); } } const payload = { connectorId, - transactionId: self.getConnector(connectorId).transactionId, + transactionId: this.getConnector(connectorId).transactionId, meterValue: sampledValues, }; - await self.sendMessage(Utils.generateUUID(), payload, Constants.OCPP_JSON_CALL_MESSAGE, 'MeterValues'); + await this.sendMessage(Utils.generateUUID(), payload, Constants.OCPP_JSON_CALL_MESSAGE, 'MeterValues'); } catch (error) { - logger.error(self._logPrefix() + ' Send MeterValues error: ' + error); + logger.error(this._logPrefix() + ' Send MeterValues error: ' + error); throw error; } } @@ -848,9 +882,8 @@ export default class ChargingStation { } sendMessage(messageId, command, messageType = Constants.OCPP_JSON_CALL_RESULT_MESSAGE, commandName = '') { - // Send a message through wsConnection const self = this; - // Create a promise + // Send a message through wsConnection return new Promise((resolve, reject) => { let messageToSend; // Type of message @@ -901,18 +934,13 @@ export default class ChargingStation { // Function that will receive the request's response function responseCallback(payload, requestPayload) { - self.handleResponse(commandName, payload, requestPayload, self); + self.handleResponse(commandName, payload, requestPayload); // Send the response resolve(payload); } // Function that will receive the request's rejection - function rejectCallback(error) { - if (!(error instanceof OCPPError)) { - const errMsg = `${self._logPrefix()} Argument error is not an instance of OCPPError in rejectCallback call`; - logger.error(errMsg); - throw Error(errMsg); - } + function rejectCallback(error: OCPPError) { logger.debug(`${self._logPrefix()} Error %j on commandName %s command %j`, error, commandName, command); if (self.getEnableStatistics()) { self._statistics.addMessage(`Error on commandName ${commandName}`, true); @@ -926,20 +954,19 @@ export default class ChargingStation { }); } - // eslint-disable-next-line class-methods-use-this - handleResponse(commandName, payload, requestPayload, self) { - if (self.getEnableStatistics()) { - self._statistics.addMessage(commandName, true); + handleResponse(commandName, payload, requestPayload) { + if (this.getEnableStatistics()) { + this._statistics.addMessage(commandName, true); } const responseCallbackFn = 'handleResponse' + commandName; - if (typeof self[responseCallbackFn] === 'function') { - self[responseCallbackFn](payload, requestPayload, self); + if (typeof this[responseCallbackFn] === 'function') { + this[responseCallbackFn](payload, requestPayload); } else { - logger.error(self._logPrefix() + ' Trying to call an undefined response callback function: ' + responseCallbackFn); + logger.error(this._logPrefix() + ' Trying to call an undefined response callback function: ' + responseCallbackFn); } } - handleResponseBootNotification(payload) { + handleResponseBootNotification(payload, requestPayload) { if (payload.status === 'Accepted') { this._heartbeatInterval = payload.interval * 1000; this._addConfigurationKey('HeartBeatInterval', Utils.convertToInt(payload.interval)); @@ -1006,7 +1033,7 @@ export default class ChargingStation { handleResponseStopTransaction(payload, requestPayload) { let transactionConnectorId; for (const connector in this._connectors) { - if (this.getConnector(connector).transactionId === requestPayload.transactionId) { + if (this.getConnector(Utils.convertToInt(connector)).transactionId === requestPayload.transactionId) { transactionConnectorId = connector; break; } @@ -1150,7 +1177,7 @@ export default class ChargingStation { async handleRequestChangeConfiguration(commandPayload) { const keyToChange = this._getConfigurationKey(commandPayload.key); if (!keyToChange) { - return {status: Constants.OCPP_ERROR_NOT_SUPPORTED}; + return { status: Constants.OCPP_ERROR_NOT_SUPPORTED }; } else if (keyToChange && Utils.convertToBoolean(keyToChange.readonly)) { return Constants.OCPP_RESPONSE_REJECTED; } else if (keyToChange && !Utils.convertToBoolean(keyToChange.readonly)) { @@ -1170,7 +1197,7 @@ export default class ChargingStation { // Stop heartbeat this._stopHeartbeat(); // Start heartbeat - this._startHeartbeat(this); + this._startHeartbeat(); } if (Utils.convertToBoolean(keyToChange.reboot)) { return Constants.OCPP_RESPONSE_REBOOT_REQUIRED; @@ -1200,7 +1227,7 @@ export default class ChargingStation { async handleRequestRemoteStopTransaction(commandPayload) { for (const connector in this._connectors) { - if (this.getConnector(connector).transactionId === commandPayload.transactionId) { + if (this.getConnector(Utils.convertToInt(connector)).transactionId === commandPayload.transactionId) { this.sendStopTransaction(commandPayload.transactionId); return Constants.OCPP_RESPONSE_ACCEPTED; } diff --git a/src/charging-station/OcppError.js b/src/charging-station/OcppError.ts similarity index 66% rename from src/charging-station/OcppError.js rename to src/charging-station/OcppError.ts index 2bef07d4..a43c62d3 100644 --- a/src/charging-station/OcppError.js +++ b/src/charging-station/OcppError.ts @@ -1,14 +1,17 @@ -import Constants from '../utils/Constants.js'; +import Constants from '../utils/Constants'; export default class OCPPError extends Error { - constructor(code, message, details) { + code; + details; + + constructor(code, message, details?) { super(message); this.code = code || Constants.OCPP_ERROR_GENERIC_ERROR; this.message = message || ''; this.details = details || {}; - Object.setPrototypeOf(this, OCPPError.prototype); // for instanceof + Object.setPrototypeOf(this, OCPPError.prototype); // For instanceof Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : (this.stack = (new Error()).stack); } diff --git a/src/charging-station/StationWorker.js b/src/charging-station/StationWorker.ts similarity index 53% rename from src/charging-station/StationWorker.js rename to src/charging-station/StationWorker.ts index f306c6ec..f54334e9 100644 --- a/src/charging-station/StationWorker.js +++ b/src/charging-station/StationWorker.ts @@ -1,6 +1,6 @@ -import {isMainThread, workerData} from 'worker_threads'; +import { isMainThread, workerData } from 'worker_threads'; -import ChargingStation from './ChargingStation.js'; +import ChargingStation from './ChargingStation'; if (!isMainThread) { const station = new ChargingStation(workerData.index, workerData.templateFile); diff --git a/src/charging-station/Worker.js b/src/charging-station/Worker.ts similarity index 67% rename from src/charging-station/Worker.js rename to src/charging-station/Worker.ts index cc835855..93aade50 100644 --- a/src/charging-station/Worker.js +++ b/src/charging-station/Worker.ts @@ -1,9 +1,13 @@ -import Configuration from '../utils/Configuration.js'; -import EventEmitter from 'events'; +import Configuration from '../utils/Configuration'; import Pool from 'worker-threads-pool'; -import {Worker} from 'worker_threads'; +import { Worker } from 'worker_threads'; export default class Wrk { + private _workerData; + private _workerScript; + private _pool; + private _concurrentWorkers: number; + /** * Create a new `Wrk`. * @@ -16,7 +20,7 @@ export default class Wrk { this._workerScript = workerScript; this._numConcurrentWorkers = numConcurrentWorkers; if (Configuration.useWorkerPool()) { - this._pool = new Pool({max: Configuration.getWorkerPoolSize()}); + this._pool = new Pool({ max: Configuration.getWorkerPoolSize() }); } } @@ -24,25 +28,34 @@ export default class Wrk { * @param {Number} numConcurrentWorkers * @private */ - set _numConcurrentWorkers(numConcurrentWorkers) { - if (numConcurrentWorkers > 10) { - EventEmitter.defaultMaxListeners = numConcurrentWorkers + 1; - } + set _numConcurrentWorkers(numConcurrentWorkers: number) { this._concurrentWorkers = numConcurrentWorkers; } - get _numConcurrentWorkers() { + get _numConcurrentWorkers(): number { return this._concurrentWorkers; } + /** + * + * @return {Promise} + * @public + */ + async start(): Promise { + if (Configuration.useWorkerPool()) { + return this._startWorkerWithPool(); + } + return this._startWorker(); + } + /** * * @return {Promise} * @private */ - _startWorkerWithPool() { + private async _startWorkerWithPool() { return new Promise((resolve, reject) => { - this._pool.acquire(this._workerScript, {workerData: this._workerData}, (err, worker) => { + this._pool.acquire(this._workerScript, { workerData: this._workerData }, (err, worker) => { if (err) { return reject(err); } @@ -57,9 +70,9 @@ export default class Wrk { * @return {Promise} * @private */ - _startWorker() { + private async _startWorker() { return new Promise((resolve, reject) => { - const worker = new Worker(this._workerScript, {workerData: this._workerData}); + const worker = new Worker(this._workerScript, { workerData: this._workerData }); worker.on('message', resolve); worker.on('error', reject); worker.on('exit', (code) => { @@ -69,16 +82,4 @@ export default class Wrk { }); }); } - - /** - * - * @return {Promise} - * @public - */ - start() { - if (Configuration.useWorkerPool()) { - return this._startWorkerWithPool(); - } - return this._startWorker(); - } } diff --git a/src/start.js b/src/start.ts similarity index 79% rename from src/start.js rename to src/start.ts index 0027fbae..baef77d1 100644 --- a/src/start.js +++ b/src/start.ts @@ -1,10 +1,10 @@ -import Configuration from './utils/Configuration.js'; -import Utils from './utils/Utils.js'; -import Wrk from './charging-station/Worker.js'; -import logger from './utils/Logger.js'; +import Configuration from './utils/Configuration'; +import Utils from './utils/Utils'; +import Wrk from './charging-station/Worker'; +import logger from './utils/Logger'; class Bootstrap { - static async start() { + static start() { try { logger.debug('%s Configuration: %j', Utils.logPrefix(), Configuration.getConfig()); let numStationsTotal = 0; @@ -15,11 +15,11 @@ class Bootstrap { const nbStation = stationURL.numberOfStation ? stationURL.numberOfStation : 0; numStationsTotal += nbStation; for (let index = 1; index <= nbStation; index++) { - const worker = new Wrk('./src/charging-station/StationWorker.js', { + const worker = new Wrk('./dist/charging-station/StationWorker.js', { index, templateFile: stationURL.file, }, numStationsTotal); - worker.start(); + worker.start().catch(() => {}); } } catch (error) { // eslint-disable-next-line no-console @@ -32,7 +32,7 @@ class Bootstrap { if (numStationsTotal === 0) { console.log('No charging station template enabled in configuration, exiting'); } else { - console.log('Charging station simulator started with ' + numStationsTotal + ' charging station(s)'); + console.log('Charging station simulator started with ' + numStationsTotal.toString() + ' charging station(s)'); } } catch (error) { // eslint-disable-next-line no-console diff --git a/src/types/MeasurandValues.ts b/src/types/MeasurandValues.ts new file mode 100644 index 00000000..dbbec653 --- /dev/null +++ b/src/types/MeasurandValues.ts @@ -0,0 +1,6 @@ +export interface MeasurandValues { + L1: number; + L2: number; + L3: number; + all: number; +} diff --git a/src/utils/Configuration.js b/src/utils/Configuration.ts similarity index 98% rename from src/utils/Configuration.js rename to src/utils/Configuration.ts index c8e96f03..b6642358 100644 --- a/src/utils/Configuration.js +++ b/src/utils/Configuration.ts @@ -1,4 +1,4 @@ -import Utils from './Utils.js'; +import Utils from './Utils'; import fs from 'fs'; export default class Configuration { diff --git a/src/utils/Constants.js b/src/utils/Constants.ts similarity index 93% rename from src/utils/Constants.js rename to src/utils/Constants.ts index 76677380..cdc4dc75 100644 --- a/src/utils/Constants.js +++ b/src/utils/Constants.ts @@ -1,5 +1,5 @@ export default class Constants { - static REST_RESPONSE_SUCCESS = {status: 'Success'}; + static REST_RESPONSE_SUCCESS = { status: 'Success' }; static CONN_STATUS_AVAILABLE = 'Available'; static CONN_STATUS_OCCUPIED = 'Occupied'; @@ -101,9 +101,9 @@ export default class Constants { static WS_UNSUPPORTED_DATA = 1007; - static OCPP_RESPONSE_ACCEPTED = {status: 'Accepted'}; - static OCPP_RESPONSE_REJECTED = {status: 'Rejected'}; - static OCPP_RESPONSE_REBOOT_REQUIRED = {status: 'RebootRequired'}; + static OCPP_RESPONSE_ACCEPTED = { status: 'Accepted' }; + static OCPP_RESPONSE_REJECTED = { status: 'Rejected' }; + static OCPP_RESPONSE_REBOOT_REQUIRED = { status: 'RebootRequired' }; static OCPP_SOCKET_TIMEOUT = 60000; // 60 sec static OCPP_JSON_CALL_MESSAGE = 2; // Client-to-Server static OCPP_JSON_CALL_RESULT_MESSAGE = 3; // Server-to-Client @@ -139,6 +139,6 @@ export default class Constants { static STATUS_NOTIFICATION_TIMEOUT = 500; static START_TRANSACTION_TIMEOUT = 500; - static CHARGING_STATION_DEFAULT_RESET_TIME = 60000; // ms - static CHARGING_STATION_ATG_WAIT_TIME = 2000; // ms + static CHARGING_STATION_DEFAULT_RESET_TIME = 60000; // Ms + static CHARGING_STATION_ATG_WAIT_TIME = 2000; // Ms } diff --git a/src/utils/ElectricUtils.js b/src/utils/ElectricUtils.ts similarity index 67% rename from src/utils/ElectricUtils.js rename to src/utils/ElectricUtils.ts index 3d76b8db..7df3db73 100644 --- a/src/utils/ElectricUtils.js +++ b/src/utils/ElectricUtils.ts @@ -3,11 +3,11 @@ * To use for DC, always consider cosPhi = 1 and do not use per phase helpers */ export default class ElectricUtils { - static ampTotal(nbOfPhases, Iph) { + static ampTotal(nbOfPhases: number, Iph: number): number { return nbOfPhases * Iph; } - static powerPerPhase(V, Iph, cosPhi = 1) { + static powerPerPhase(V: number, Iph: number, cosPhi = 1): number { const powerPerPhase = V * Iph * cosPhi; if (cosPhi === 1) { return powerPerPhase; @@ -15,11 +15,11 @@ export default class ElectricUtils { return Math.round(powerPerPhase); } - static powerTotal(nbOfPhases, V, Iph, cosPhi = 1) { + static powerTotal(nbOfPhases: number, V: number, Iph: number, cosPhi = 1): number { return nbOfPhases * ElectricUtils.powerPerPhase(V, Iph, cosPhi); } - static ampTotalFromPower(P, V, cosPhi = 1) { + static ampTotalFromPower(P: number, V: number, cosPhi = 1): number { const power = P / (V * cosPhi); if (cosPhi === 1 && P % V === 0) { return power; @@ -27,7 +27,7 @@ export default class ElectricUtils { return Math.round(power); } - static ampPerPhaseFromPower(nbOfPhases, P, V, cosPhi = 1) { + static ampPerPhaseFromPower(nbOfPhases: number, P: number, V: number, cosPhi = 1): number { const power = ElectricUtils.ampTotalFromPower(P, V, cosPhi); const powerPerPhase = power / nbOfPhases; if (power % nbOfPhases === 0) { diff --git a/src/utils/Logger.js b/src/utils/Logger.ts similarity index 77% rename from src/utils/Logger.js rename to src/utils/Logger.ts index 42d9d307..736e9b89 100644 --- a/src/utils/Logger.js +++ b/src/utils/Logger.ts @@ -1,4 +1,4 @@ -import Configuration from './Configuration.js'; +import Configuration from './Configuration'; import Winston from 'winston'; const logger = Winston.createLogger({ @@ -9,8 +9,8 @@ const logger = Winston.createLogger({ // - Write to all logs with level `info` and below to `combined.log` // - Write all logs error (and below) to `error.log`. // - new Winston.transports.File({filename: Configuration.getErrorFile(), level: 'error'}), - new Winston.transports.File({filename: Configuration.getLogFile()}), + new Winston.transports.File({ filename: Configuration.getErrorFile(), level: 'error' }), + new Winston.transports.File({ filename: Configuration.getLogFile() }), ], }); diff --git a/src/utils/Statistics.js b/src/utils/Statistics.ts similarity index 86% rename from src/utils/Statistics.js rename to src/utils/Statistics.ts index 85165097..a2e0d030 100644 --- a/src/utils/Statistics.js +++ b/src/utils/Statistics.ts @@ -1,29 +1,27 @@ -import Configuration from './Configuration.js'; -import Utils from './Utils.js'; -import logger from './Logger.js'; +import Configuration from './Configuration'; +import Utils from './Utils'; +import logger from './Logger'; export default class Statistics { - static instance; + private static instance: Statistics; + private _statistics; + private _objName: string; - constructor() { + private constructor() { this._statistics = {}; } - set objName(objName) { + set objName(objName: string) { this._objName = objName; } - static getInstance() { + static getInstance(): Statistics { if (!Statistics.instance) { Statistics.instance = new Statistics(); } return Statistics.instance; } - _logPrefix() { - return Utils.logPrefix(` ${this._objName} Statistics:`); - } - addMessage(command, response = false) { if (response) { if (this._statistics[command]) { @@ -72,16 +70,16 @@ export default class Statistics { } } - logPerformance(entry, className) { + logPerformance(entry, className: string): void { this.addPerformanceTimer(entry.name, entry.duration); logger.info(`${this._logPrefix()} class->${className}, method->${entry.name}, duration->${entry.duration}`); } - _display() { + _display(): void { logger.info(this._logPrefix() + ' %j', this._statistics); } - _displayInterval() { + _displayInterval(): void { if (Configuration.getStatisticsDisplayInterval() > 0) { setInterval(() => { this._display(); @@ -90,7 +88,11 @@ export default class Statistics { } } - async start() { + start(): void { this._displayInterval(); } + + private _logPrefix(): string { + return Utils.logPrefix(` ${this._objName} Statistics:`); + } } diff --git a/src/utils/Utils.js b/src/utils/Utils.ts similarity index 71% rename from src/utils/Utils.js rename to src/utils/Utils.ts index 9d071a41..c54bb17f 100644 --- a/src/utils/Utils.js +++ b/src/utils/Utils.ts @@ -1,21 +1,21 @@ -import {v4 as uuid} from 'uuid'; +import { v4 as uuid } from 'uuid'; export default class Utils { - static generateUUID() { + static generateUUID(): string { return uuid(); } - static sleep(ms) { + static async sleep(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } - static secondstoHHMMSS(seconds) { - const date = new Date(null); + static secondstoHHMMSS(seconds): string { + const date = new Date(); date.setSeconds(seconds); return date.toISOString().substr(11, 8); } - static removeExtraEmptyLines(tab) { + static removeExtraEmptyLines(tab): void { // Start from the end for (let i = tab.length - 1; i > 0; i--) { // Two consecutive empty lines? @@ -31,30 +31,19 @@ export default class Utils { } } - static convertToDate(date) { + static convertToDate(value): Date { // Check - if (!date) { - return date; + if (!value) { + return value; } // Check Type - if (!(date instanceof Date)) { - return new Date(date); - } - return date; - } - - static convertToObjectID(id) { - let changedID = id; - // Check - if (typeof id === 'string') { - // Create Object - // eslint-disable-next-line no-undef - changedID = new ObjectID(id); + if (!(value instanceof Date)) { + return new Date(value); } - return changedID; + return value; } - static convertToInt(value) { + static convertToInt(value): number { let changedValue = value; if (!value) { return 0; @@ -70,7 +59,7 @@ export default class Utils { return changedValue; } - static convertToFloat(value) { + static convertToFloat(value): number { let changedValue = value; if (!value) { return 0; @@ -83,7 +72,7 @@ export default class Utils { return changedValue; } - static convertToBoolean(value) { + static convertToBoolean(value): boolean { let result = false; // Check boolean if (value) { @@ -99,29 +88,29 @@ export default class Utils { return result; } - static getRandomFloat(max, min = 0) { + static getRandomFloat(max: number, min = 0): number { return Math.random() < 0.5 ? (1 - Math.random()) * (max - min) + min : Math.random() * (max - min) + min; } - static getRandomInt(max, min = 0) { + static getRandomInt(max: number, min = 0): number { if (min) { return Math.floor(Math.random() * (max - min + 1) + min); } return Math.floor(Math.random() * max + 1); } - static roundTo(number, scale) { + static roundTo(number: number, scale: number): number { return Utils.convertToFloat(number.toFixed(scale)); } - static getRandomFloatRounded(max, min = 0, scale = 2) { + static getRandomFloatRounded(max: number, min = 0, scale = 2): number { if (min) { return Utils.roundTo(Utils.getRandomFloat(max, min), scale); } return Utils.roundTo(Utils.getRandomFloat(max), scale); } - static logPrefix(prefixString = '') { + static logPrefix(prefixString = ''): string { const date = new Date(); return date.toLocaleString() + prefixString; } @@ -134,14 +123,14 @@ export default class Utils { return JSON.parse(JSON.stringify(object)); } - static isIterable(obj) { + static isIterable(obj): boolean { if (obj) { return typeof obj[Symbol.iterator] === 'function'; } return false; } - static isEmptyJSon(document) { + static isEmptyJSon(document): boolean { // Empty? if (!document) { return true; @@ -154,7 +143,7 @@ export default class Utils { return Object.keys(document).length === 0; } - static isString(value) { + static isString(value): boolean { return typeof value === 'string'; } @@ -162,22 +151,22 @@ export default class Utils { return typeof value === 'undefined'; } - static isNullOrUndefined(value) { - // eslint-disable-next-line eqeqeq + static isNullOrUndefined(value): boolean { + // eslint-disable-next-line no-eq-null if (value == null) { return true; } return false; } - static isEmptyArray(object) { + static isEmptyArray(object): boolean { if (Array.isArray(object) && object.length > 0) { return false; } return true; } - static isEmptyObject(obj) { + static isEmptyObject(obj): boolean { return !Object.keys(obj).length; } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..2fc552e7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,72 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es2020", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": [ + "es2020" + ], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + // "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "include": ["./src/**/*"] +} -- 2.34.1