From b50a4bf623b95e978c63e7e3b21036bb7b86a302 Mon Sep 17 00:00:00 2001 From: Opender Singh Date: Wed, 29 Jul 2020 11:47:36 +1200 Subject: [PATCH] Support config file for inso (#2420) --- packages/insomnia-app/package-lock.json | 1479 +---------------- packages/insomnia-inso/README.md | 256 ++- .../insomnia-inso/__mocks__/cosmiconfig.js | 5 + .../insomnia-inso/flow-typed/cosmiconfig.js | 5 + .../insomnia-inso/flow-typed/string-argv.js | 5 + packages/insomnia-inso/package-lock.json | 65 +- packages/insomnia-inso/package.json | 2 + .../src/__fixtures__/.insorc-blank.yaml | 0 .../.insorc-missing-properties.yaml | 1 + .../__fixtures__/.insorc-with-scripts.yaml | 15 + .../src/__fixtures__/.insorc.yaml | 7 + .../__snapshots__/inso-snapshot.test.js.snap | 82 +- .../insomnia-inso/src/__tests__/cli.test.js | 90 +- .../src/__tests__/get-options.test.js | 144 ++ .../insomnia-inso/src/__tests__/util.test.js | 23 +- packages/insomnia-inso/src/cli.js | 145 +- .../src/commands/export-specification.js | 2 +- .../src/commands/generate-config.js | 2 +- .../src/commands/lint-specification.js | 2 +- .../insomnia-inso/src/commands/run-tests.js | 2 +- packages/insomnia-inso/src/get-options.js | 87 + packages/insomnia-inso/src/util.js | 31 - 22 files changed, 828 insertions(+), 1622 deletions(-) create mode 100644 packages/insomnia-inso/__mocks__/cosmiconfig.js create mode 100644 packages/insomnia-inso/flow-typed/cosmiconfig.js create mode 100644 packages/insomnia-inso/flow-typed/string-argv.js create mode 100644 packages/insomnia-inso/src/__fixtures__/.insorc-blank.yaml create mode 100644 packages/insomnia-inso/src/__fixtures__/.insorc-missing-properties.yaml create mode 100644 packages/insomnia-inso/src/__fixtures__/.insorc-with-scripts.yaml create mode 100644 packages/insomnia-inso/src/__fixtures__/.insorc.yaml create mode 100644 packages/insomnia-inso/src/__tests__/get-options.test.js create mode 100644 packages/insomnia-inso/src/get-options.js diff --git a/packages/insomnia-app/package-lock.json b/packages/insomnia-app/package-lock.json index 7974f5412..6f1db64ef 100644 --- a/packages/insomnia-app/package-lock.json +++ b/packages/insomnia-app/package-lock.json @@ -79,6 +79,7 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, "requires": { "@babel/types": "^7.10.5", "jsesc": "^2.5.1", @@ -88,7 +89,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -96,6 +98,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, "requires": { "@babel/types": "^7.10.4" } @@ -202,6 +205,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.10.4", "@babel/template": "^7.10.4", @@ -212,6 +216,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, "requires": { "@babel/types": "^7.10.4" } @@ -238,6 +243,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, "requires": { "@babel/types": "^7.10.4" } @@ -320,6 +326,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, "requires": { "@babel/types": "^7.10.4" } @@ -1134,6 +1141,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/parser": "^7.10.4", @@ -1144,6 +1152,7 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/generator": "^7.10.5", @@ -1160,6 +1169,7 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1338,7 +1348,8 @@ "@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true }, "@emotion/utils": { "version": "0.11.3", @@ -3291,45 +3302,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "optional": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, - "apiconnect-wsdl": { - "version": "1.8.26", - "resolved": "https://registry.npmjs.org/apiconnect-wsdl/-/apiconnect-wsdl-1.8.26.tgz", - "integrity": "sha512-t9xt3GydalwtmjuOYHJLWijtltwyYXpdpGOVvsAcsq6O3hBYjsGwFaMxrHETjw8wkFqiIipyWnV5BtOmWNW4oA==", - "requires": { - "iconv-lite": "^0.4.24", - "js-yaml": "^3.13.1", - "jszip": "^3.2.2", - "lodash": "^4.17.15", - "oas-validator": "^4.0.3", - "q": "^1.5.1", - "swagger-parser": "8.0.3", - "swagger2openapi": "^6.0.3", - "xml2js": "^0.4.22", - "xmldom": "^0.1.27", - "yauzl": "^2.10.0" - }, - "dependencies": { - "swagger-parser": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-8.0.3.tgz", - "integrity": "sha512-y2gw+rTjn7Z9J+J1qwbBm0UL93k/VREDCveKBK6iGjf7KXC6QGshbnpEmeHL0ZkCgmIghsXzpNzPSbBH91BAEQ==", - "requires": { - "call-me-maybe": "^1.0.1", - "json-schema-ref-parser": "^7.1.1", - "ono": "^5.1.0", - "openapi-schemas": "^1.0.2", - "openapi-types": "^1.3.5", - "swagger-methods": "^2.0.1", - "z-schema": "^4.1.1" - } - } - } - }, "app-builder-bin": { "version": "3.5.9", "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.9.tgz", @@ -3614,6 +3592,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1", @@ -3691,11 +3670,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -4066,21 +4040,11 @@ "recast": "^0.14.7" } }, - "babel-plugin-styled-components": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz", - "integrity": "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - } - }, "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true }, "babel-plugin-transform-inline-consecutive-adds": { "version": "0.4.3", @@ -4326,7 +4290,8 @@ "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "optional": true }, "binary-search-tree": { "version": "0.2.5", @@ -4665,11 +4630,6 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -4815,7 +4775,8 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true }, "buffer-equal-constant-time": { "version": "1.0.1", @@ -5062,7 +5023,8 @@ "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true }, "caller-callsite": { "version": "2.0.0", @@ -5100,6 +5062,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dev": true, "requires": { "pascal-case": "^3.1.1", "tslib": "^1.10.0" @@ -5129,11 +5092,6 @@ } } }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, "can-use-dom": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", @@ -5146,16 +5104,6 @@ "integrity": "sha512-JupOe6+dGMr7E20siZHIZQwYqrllxotAhiaej96y6x00b/48rPt42o+SzOSCPbrpsDWvRja40Hwrj0g0q6LZJg==", "dev": true }, - "capital-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.3.tgz", - "integrity": "sha512-OlUSJpUr7SY0uZFOxcwnDOU7/MpHlKTZx2mqnDYQFrDudXLFm0JJ9wr/l4csB+rh2Ug0OPuoSO53PqiZBqno9A==", - "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0", - "upper-case-first": "^2.0.1" - } - }, "case-sensitive-paths-webpack-plugin": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", @@ -5185,19 +5133,6 @@ "lazy-cache": "^1.0.3" } }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -5208,25 +5143,6 @@ "supports-color": "^5.3.0" } }, - "change-case": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.1.tgz", - "integrity": "sha512-qRlUWn/hXnX1R1LBDF/RelJLiqNjKjUqlmuBVSEIyye8kq49CXqkZWKmi8XeUAdDXWFOcGLUMZ+aHn3Q5lzUXw==", - "requires": { - "camel-case": "^4.1.1", - "capital-case": "^1.0.3", - "constant-case": "^3.0.3", - "dot-case": "^3.0.3", - "header-case": "^2.0.3", - "no-case": "^3.0.3", - "param-case": "^3.0.3", - "pascal-case": "^3.1.1", - "path-case": "^3.0.3", - "sentence-case": "^3.0.3", - "snake-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, "character-entities": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", @@ -5248,16 +5164,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=" - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" - }, "chokidar": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", @@ -5864,16 +5770,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "constant-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.3.tgz", - "integrity": "sha512-FXtsSnnrFYpzDmvwDGQW+l8XK3GV1coLyBN0eBz16ZUzGaZcT2ANVCJmLeuw2GQgxKHQIe9e0w2dzkSfaRlUmA==", - "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0", - "upper-case": "^2.0.1" - } - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -6196,11 +6092,6 @@ } } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, "cryptiles": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz", @@ -6249,11 +6140,6 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, "css-loader": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", @@ -6320,23 +6206,6 @@ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", "dev": true }, - "css-to-react-native": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", - "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -6511,14 +6380,6 @@ "mimic-response": "^2.0.0" } }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "requires": { - "type-detect": "^4.0.0" - } - }, "deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -6780,11 +6641,6 @@ "wrappy": "1" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, "diff3": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", @@ -6990,6 +6846,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dev": true, "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" @@ -7917,12 +7774,14 @@ "es-array-method-boxes-properly": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true }, "es-get-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, "requires": { "es-abstract": "^1.17.4", "has-symbols": "^1.0.1", @@ -7936,7 +7795,8 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true } } }, @@ -8608,11 +8468,6 @@ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, "fastq": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", @@ -9012,21 +8867,6 @@ } } }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - } - } - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -9341,11 +9181,6 @@ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" }, - "format-util": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", - "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -9610,11 +9445,6 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" - }, "get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", @@ -9844,7 +9674,8 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globalthis": { "version": "1.0.1", @@ -10136,11 +9967,6 @@ "graphql-language-service-types": "^1.6.0" } }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" - }, "gud": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", @@ -10365,16 +10191,8 @@ "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "header-case": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.3.tgz", - "integrity": "sha512-LChe/V32mnUQnTwTxd3aAlNMk8ia9tjCDb/LjYtoMrdAPApxLB+azejUk5ERZIZdIqvinwv6BAUuFXH/tQPdZA==", - "requires": { - "capital-case": "^1.0.3", - "tslib": "^1.10.0" - } + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true }, "hey-listen": { "version": "1.0.8", @@ -10710,11 +10528,6 @@ "sshpk": "^1.7.0" } }, - "http2-client": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.3.tgz", - "integrity": "sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==" - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -11096,165 +10909,6 @@ } } }, - "insomnia-components": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/insomnia-components/-/insomnia-components-2.2.19.tgz", - "integrity": "sha512-tNl+bRzHN/aoHDEvBtChAibayrNFRkN3OQes5NVAjoJETVqygBpt3BRh16X0BK/owAcSUn3jTgtKSqbj+1TLZA==", - "requires": { - "autobind-decorator": "^2.4.0", - "classnames": "^2.2.6", - "framer-motion": "^1.10.3", - "fuzzysort": "^1.1.4", - "md5": "^2.2.1", - "prop-types": "^15.7.2", - "react-switch": "^5.0.1", - "styled-components": "^4.4.1" - } - }, - "insomnia-cookies": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-cookies/-/insomnia-cookies-2.2.10.tgz", - "integrity": "sha512-sDOpkcWBNI4LuJB3yAkBzEkDdLro6k5OzA5LsPqwAp+eO7xPz0v8u+/cn+4gqOpiZRB+wesc2QL3LPnFIm3X9g==", - "requires": { - "tough-cookie": "^2.3.3" - } - }, - "insomnia-importers": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/insomnia-importers/-/insomnia-importers-2.2.19.tgz", - "integrity": "sha512-iK7c2AZt71fVwp+BqIYcr4Pwp2bH+kFf0io75qRiWdZ2qmM/NT6v5LjKmoCWnMUXvSd2KjjJijNao3lyxMObOA==", - "requires": { - "apiconnect-wsdl": "^1.8.10", - "change-case": "^4.1.1", - "commander": "^2.20.0", - "lodash": "^4.17.15", - "shell-quote": "^1.6.1", - "swagger-parser": "^6.0.5", - "yaml": "^1.5.0" - } - }, - "insomnia-plugin-base64": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-base64/-/insomnia-plugin-base64-2.2.10.tgz", - "integrity": "sha512-jXzG8P5Lk0wdK6OMyFH0BtdsUcjIySRs2urQ5Ubc+2bAenzxGkdobJe9cnvckfuYlBVGlFURIXLPguC+cLVsMg==" - }, - "insomnia-plugin-cookie-jar": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-cookie-jar/-/insomnia-plugin-cookie-jar-2.2.10.tgz", - "integrity": "sha512-SDMl4HfkAMxp+mTd36oAqF5Iu5HfNX0R/NbDByQW4g8gSlttE1GdxMk8pRGzaLNU4Bw9r8lgmqC9n2El3EER2w==", - "requires": { - "insomnia-cookies": "^2.2.10" - } - }, - "insomnia-plugin-core-themes": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/insomnia-plugin-core-themes/-/insomnia-plugin-core-themes-2.2.12.tgz", - "integrity": "sha512-owMHjlru+g5XPKpplv0XaByC8EEP6qk17iH7nlLJ5zoAqgPNSmXGqu4eTZqjgql/gD3m/MhyXk4IuYB6dVo6rg==" - }, - "insomnia-plugin-file": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-file/-/insomnia-plugin-file-2.2.10.tgz", - "integrity": "sha512-R3u2XC81UiRwVKwobzc/ZkuW4h5M3J1D6VoTi7EqFefYa7rlwQc/Qdd/XSsvlicEcTG4FVo3NpoG2/8EQZbByQ==" - }, - "insomnia-plugin-hash": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-hash/-/insomnia-plugin-hash-2.2.10.tgz", - "integrity": "sha512-XhAZxqlY29nae9hK6I7hJJKt2gsIEyeBi/sBgwWd7FreQjdzSplgHljDqXlde84EHY0lFty/itoA3mJISeJo0Q==" - }, - "insomnia-plugin-jsonpath": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-jsonpath/-/insomnia-plugin-jsonpath-2.2.10.tgz", - "integrity": "sha512-LI7PfMTXV8+7BESdvFDilCKyOmsNfzLDO+lRoCyIhMMc5xf/XLyEG3/s64lgZfiC3jd3XYrDwM7Q61zueqM+Rw==", - "requires": { - "jsonpath": "^1.0.2" - } - }, - "insomnia-plugin-now": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-now/-/insomnia-plugin-now-2.2.10.tgz", - "integrity": "sha512-6sVvKBa0xkLns8bhjwSiXln+4stcDEL6e8exmZ7XoIvuvp7nSI/Cm3DxeaHVFde2j8auiqum0rpUSfqBbmBjjw==", - "requires": { - "moment": "^2.21.0" - } - }, - "insomnia-plugin-os": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-os/-/insomnia-plugin-os-2.2.10.tgz", - "integrity": "sha512-GuYbQ4CD2kZT9Hyiwspbuso5H0ElB/jY9ylFLZik166JGqkvXfuV+5NtT71BYtR4PnWKf47iwFLZhcsneM0ImA==", - "requires": { - "jsonpath": "^1.0.2" - } - }, - "insomnia-plugin-prompt": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-prompt/-/insomnia-plugin-prompt-2.2.10.tgz", - "integrity": "sha512-QsUN8wqwI/58IMTk6hYkaPMG1tfCd0VFwwOvmvdVBIxufZwJd3p0uk61GsDF16lGrIk3Af+a/hJptfIbSEdLUg==" - }, - "insomnia-plugin-request": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/insomnia-plugin-request/-/insomnia-plugin-request-2.2.12.tgz", - "integrity": "sha512-VUTHJWGcyD6+cEH81pEO9mdtmdLNZjbXpOrMqzkJntYscCmiybkoluI97BeILDS9mBI/wrgp4ilyCSWoT+2ZKQ==", - "requires": { - "insomnia-cookies": "^2.2.10", - "insomnia-url": "^2.2.10" - } - }, - "insomnia-plugin-response": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-response/-/insomnia-plugin-response-2.2.10.tgz", - "integrity": "sha512-AJ91ikRQdkSzj6hDamJitmmuPBxkxKVVsY+gQhNeT6sudPneR9/6fqVkl0uFzdHz9myaFb9/D0UOXncm3wg3vA==", - "requires": { - "iconv-lite": "^0.4.19", - "insomnia-xpath": "^2.2.10", - "jsonpath": "^1.0.2" - } - }, - "insomnia-plugin-uuid": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-plugin-uuid/-/insomnia-plugin-uuid-2.2.10.tgz", - "integrity": "sha512-EItC9yIiJWwMHzOa3hFyPDjz1oIdiztRBEiWFwPyq+MVBU8KlNFrzMufp9S7Rr2MgTjLW0vSG0BHOoNv8LJ65Q==", - "requires": { - "uuid": "^3.1.0" - } - }, - "insomnia-prettify": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-prettify/-/insomnia-prettify-2.2.10.tgz", - "integrity": "sha512-wB0LbSgno8T4941MPKG+Ub2iCselVDDCuZ/AbKPa28Phw1R2pxBHdg9Cw2nFXVeWZrV6omu1WDJ1p7AANIopKw==" - }, - "insomnia-testing": { - "version": "2.2.15", - "resolved": "https://registry.npmjs.org/insomnia-testing/-/insomnia-testing-2.2.15.tgz", - "integrity": "sha512-ju+J9Hsc410e3eSPOufhYGmhhbHkQ+PfaeF3H3Y/yxFT5szXDEHNv0S5eYF7PmJM9PaQO4ZR0CDR6KNHEBpejQ==", - "requires": { - "axios": "^0.19.2", - "chai": "^4.2.0", - "mkdirp": "^1.0.4", - "mocha": "^8.0.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "insomnia-url": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-url/-/insomnia-url-2.2.10.tgz", - "integrity": "sha512-QWQ6rrlnRrPObWovRb0kYINQpW2rkfIqNvCH1hRTXc+vXMDTko+GTX9GnnEkfXWAo2DdIypTi0DbInLjwwyhbA==" - }, - "insomnia-xpath": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/insomnia-xpath/-/insomnia-xpath-2.2.10.tgz", - "integrity": "sha512-5eCxIPAi1rx8AhTImDLAEFvZbZD3o+uzibI9uK6+DJz9mAndUAKVBWJXvZfl4Hsh2O+sTbWOTCjKyIcPUJK/hg==", - "requires": { - "insomnia-cookies": "^2.2.10", - "xmldom": "^0.1.27", - "xpath": "0.0.27" - } - }, "internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -11361,6 +11015,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, "requires": { "binary-extensions": "^2.0.0" } @@ -11368,7 +11023,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-callable": { "version": "1.2.0", @@ -11517,7 +11173,8 @@ "is-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==" + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true }, "is-npm": { "version": "4.0.0", @@ -11622,7 +11279,8 @@ "is-set": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==" + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true }, "is-stream": { "version": "1.1.0", @@ -11633,7 +11291,8 @@ "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==" + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true }, "is-symbol": { "version": "1.0.3", @@ -11648,11 +11307,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-what": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.10.0.tgz", - "integrity": "sha512-U4RYCXNOmATQHlOPlOCHCfXyKEFIPqvyaKDqYRuLbD6EYKcTTfc3YXkAYjzOVxO3zt34L+Wh2feIyWrYiZ7kng==" - }, "is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", @@ -11800,12 +11454,14 @@ "iterate-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true }, "iterate-value": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, "requires": { "es-get-iterator": "^1.0.2", "iterate-iterator": "^1.0.1" @@ -11948,7 +11604,8 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true }, "jshint": { "version": "2.11.1", @@ -11990,23 +11647,6 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, - "json-schema-ref-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-7.1.4.tgz", - "integrity": "sha512-AD7bvav0vak1/63w3jH8F7eHId/4E4EPdMAEZhGxtjktteUv9dnNB/cJy6nVnMyoTPBJnLwFK6tiQPSTeleCtQ==", - "requires": { - "call-me-maybe": "^1.0.1", - "js-yaml": "^3.13.1", - "ono": "^6.0.0" - }, - "dependencies": { - "ono": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ono/-/ono-6.0.1.tgz", - "integrity": "sha512-5rdYW/106kHqLeG22GE2MHKq+FlsxMERZev9DCzQX1zwkxnFwBivSn5i17a5O/rDmOJOdf4Wyt80UZljzx9+DA==" - } - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -12109,16 +11749,6 @@ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==" }, - "jsonschema": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz", - "integrity": "sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==" - }, - "jsonschema-draft4": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jsonschema-draft4/-/jsonschema-draft4-1.0.0.tgz", - "integrity": "sha1-8K8gBQVPDwrefqIRhhS2ncUS2GU=" - }, "jsonwebtoken": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.7.0.tgz", @@ -12147,27 +11777,6 @@ "verror": "1.10.0" } }, - "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" - }, - "dependencies": { - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - } - } - }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -12597,11 +12206,6 @@ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "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=" - }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -12666,14 +12270,6 @@ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "requires": { - "chalk": "^2.4.2" - } - }, "loglevel": { "version": "1.6.8", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", @@ -12708,6 +12304,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, "requires": { "tslib": "^1.10.0" } @@ -12886,16 +12483,6 @@ "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", "dev": true }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "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", @@ -12924,11 +12511,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "memoize-one": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", - "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" - }, "memoizee": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", @@ -12997,14 +12579,6 @@ } } }, - "merge-anything": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", - "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", - "requires": { - "is-what": "^3.3.1" - } - }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -13326,201 +12900,6 @@ "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz", "integrity": "sha1-LISJPtZ24NmPsY+5piEv0bK5qBk=" }, - "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", - "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==" - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "requires": { - "picomatch": "^2.0.7" - } - }, - "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==" - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.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": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "modify-filename": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", @@ -13702,6 +13081,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dev": true, "requires": { "lower-case": "^2.0.1", "tslib": "^1.10.0" @@ -13737,14 +13117,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, - "node-fetch-h2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", - "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", - "requires": { - "http2-client": "^1.2.5" - } - }, "node-forge": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", @@ -13932,21 +13304,6 @@ } } }, - "node-readfiles": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", - "integrity": "sha1-271K8SE04uY1wkXvk//Pb2BnOl0=", - "requires": { - "es6-promise": "^3.2.1" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - } - } - }, "node-releases": { "version": "1.1.60", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", @@ -14137,214 +13494,6 @@ } } }, - "oas-kit-common": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", - "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", - "requires": { - "fast-safe-stringify": "^2.0.7" - } - }, - "oas-linter": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.1.3.tgz", - "integrity": "sha512-jFWBHjSoqODGo7cKA/VWqqWSLbHNtnyCEpa2nMMS64SzCUbZDk63Oe7LqQZ2qJA0K2VRreYLt6cVkYy6MqNRDg==", - "requires": { - "should": "^13.2.1", - "yaml": "^1.8.3" - } - }, - "oas-resolver": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.4.1.tgz", - "integrity": "sha512-rRmUv9mDTKPtsB2OGaoNMK4BC1Q/pL+tWRPKRjXJEBoLmfegJhecOZPBtIR0gKEVQb9iAA0MqulkgY43EiCFDg==", - "requires": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "reftools": "^1.1.3", - "yaml": "^1.8.3", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "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==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "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==", - "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==" - }, - "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==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.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==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==" - }, - "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==", - "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==", - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.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==", - "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==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "oas-schema-walker": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.4.tgz", - "integrity": "sha512-foVDDS0RJYMfhQEDh/WdBuCzydTcsCnGo9EeD8SpWq1uW10JXiz+8SfYVDA7LO87kjmlnTRZle/2gr5qxabaEA==" - }, - "oas-validator": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-4.0.6.tgz", - "integrity": "sha512-WNKjQCw6UnbHRQM00stje0sn//OSzrhGWBD5s4p9dv3t8r3+CZcJgc/BcIPSM2IKaR2iOZWJjyfGGYzi6Hd5lQ==", - "requires": { - "ajv": "^5.5.2", - "better-ajv-errors": "^0.6.7", - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.1.3", - "oas-resolver": "^2.4.1", - "oas-schema-walker": "^1.1.4", - "reftools": "^1.1.3", - "should": "^13.2.1", - "yaml": "^1.8.3" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - } - } - }, "oauth-1.0a": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", @@ -14548,11 +13697,6 @@ "mimic-fn": "^2.1.0" } }, - "ono": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ono/-/ono-5.1.0.tgz", - "integrity": "sha512-GgqRIUWErLX4l9Up0khRtbrlH8Fyj59A0nKv8V6pWEto38aUgnOGOOF7UmgFFLzFnDSc8REzaTXOc0hqEe7yIw==" - }, "open": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz", @@ -14574,58 +13718,6 @@ } } }, - "openapi-2-kong": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/openapi-2-kong/-/openapi-2-kong-2.2.12.tgz", - "integrity": "sha512-pgRR+gktCtWE7YScbjFZSqfnSAR1caaSDmZyCqvp4UNCFdfG+cmRs/2Wz5d/Yf22/0cOCZQmk8PwXM+GUCVTDA==", - "requires": { - "slugify": "^1.3.6", - "swagger-parser": "^8.0.3", - "url-join": "^4.0.1", - "yaml": "^1.7.2" - }, - "dependencies": { - "ono": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ono/-/ono-6.0.1.tgz", - "integrity": "sha512-5rdYW/106kHqLeG22GE2MHKq+FlsxMERZev9DCzQX1zwkxnFwBivSn5i17a5O/rDmOJOdf4Wyt80UZljzx9+DA==" - }, - "swagger-parser": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-8.0.4.tgz", - "integrity": "sha512-KGRdAaMJogSEB7sPKI31ptKIWX8lydEDAwWgB4pBMU7zys5cd54XNhoPSVlTxG/A3LphjX47EBn9j0dOGyzWbA==", - "requires": { - "call-me-maybe": "^1.0.1", - "json-schema-ref-parser": "^7.1.3", - "ono": "^6.0.0", - "openapi-schemas": "^1.0.2", - "openapi-types": "^1.3.5", - "swagger-methods": "^2.0.1", - "z-schema": "^4.2.2" - } - } - } - }, - "openapi-schema-validation": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/openapi-schema-validation/-/openapi-schema-validation-0.4.2.tgz", - "integrity": "sha512-K8LqLpkUf2S04p2Nphq9L+3bGFh/kJypxIG2NVGKX0ffzT4NQI9HirhiY6Iurfej9lCu7y4Ndm4tv+lm86Ck7w==", - "requires": { - "jsonschema": "1.2.4", - "jsonschema-draft4": "^1.0.0", - "swagger-schema-official": "2.0.0-bab6bed" - } - }, - "openapi-schemas": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/openapi-schemas/-/openapi-schemas-1.0.3.tgz", - "integrity": "sha512-KtMWcK2VtOS+nD8RKSIyScJsj8JrmVWcIX7Kjx4xEHijFYuvMTDON8WfeKOgeSb4uNG6UsqLj5Na7nKbSav9RQ==" - }, - "openapi-types": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-1.3.5.tgz", - "integrity": "sha512-11oi4zYorsgvg5yBarZplAqbpev5HkuVNPlZaPTknPDzAynq+lnJdXAmruGWP0s+dNYZS7bjM+xrTpJw7184Fg==" - }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -14833,6 +13925,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, "requires": { "dot-case": "^3.0.3", "tslib": "^1.10.0" @@ -14931,6 +14024,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" @@ -14948,15 +14042,6 @@ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, - "path-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.3.tgz", - "integrity": "sha512-UMFU6UETFpCNWbIWNczshPrnK/7JAXBP2NYw80ojElbQ2+JYxdqWDBkvvqM93u4u6oLmuJ/tPOf2tM8KtXv4eg==", - "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -15003,11 +14088,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" - }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -15456,6 +14536,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, "requires": { "array.prototype.map": "^1.0.1", "define-properties": "^1.1.3", @@ -16465,14 +15546,6 @@ "@babel/runtime": "^7.0.0" } }, - "react-switch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-switch/-/react-switch-5.0.1.tgz", - "integrity": "sha512-Pa5kvqRfX85QUCK1Jv0rxyeElbC3aNpCP5hV0LoJpU/Y6kydf0t4kRriQ6ZYA4kxWwAYk/cH51T4/sPzV9mCgQ==", - "requires": { - "prop-types": "^15.6.2" - } - }, "react-syntax-highlighter": { "version": "12.2.1", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz", @@ -16811,11 +15884,6 @@ } } }, - "reftools": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.3.tgz", - "integrity": "sha512-JTlhKmSzqE/gt5Z5RX25yZDq67MlRRtTz1gLy/NY+wPDx1e1vEJsv1PoNrpKZBwitcEMXs2k7pzmbmraP1ZMAQ==" - }, "regenerate": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", @@ -17430,16 +16498,6 @@ } } }, - "sentence-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.3.tgz", - "integrity": "sha512-ZPr4dgTcNkEfcGOMFQyDdJrTU9uQO1nb1cjf+nuzb6FxgMDgKddZOM29qEsB7jvsZSMruLRcL2KfM4ypKpa0LA==", - "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0", - "upper-case-first": "^2.0.1" - } - }, "serialize-error": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", @@ -17554,11 +16612,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -17675,61 +16728,14 @@ "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "shelljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, - "should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "requires": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "requires": { - "should-type": "^1.4.0" - } - }, - "should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "requires": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=" - }, - "should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "requires": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" - }, "side-channel": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", @@ -17843,25 +16849,11 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, - "slugify": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.4.tgz", - "integrity": "sha512-N2+9NJ8JzfRMh6PQLrBeDEnVDQZSytE/W4BTC4fNNPmO90Uu58uNwSlIJSs+lmPgWsaAF79WLhVPe5tuy7spjw==" - }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" }, - "snake-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.3.tgz", - "integrity": "sha512-WM1sIXEO+rsAHBKjGf/6R1HBBcgbncKS08d2Aqec/mrDSpU80SiOU41hO7ny6DToHSyrlwTYzQBIK1FPSx4Y3Q==", - "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -18615,26 +17607,6 @@ "tslib": "^1.10.0" } }, - "styled-components": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", - "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@emotion/is-prop-valid": "^0.8.1", - "@emotion/unitless": "^0.7.0", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^2.2.2", - "memoize-one": "^5.0.0", - "merge-anything": "^2.2.4", - "prop-types": "^15.5.4", - "react-is": "^16.6.0", - "stylis": "^3.5.0", - "stylis-rule-sheet": "^0.0.10", - "supports-color": "^5.5.0" - } - }, "stylefire": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/stylefire/-/stylefire-7.0.3.tgz", @@ -18647,16 +17619,6 @@ "tslib": "^1.10.0" } }, - "stylis": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", - "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" - }, - "stylis-rule-sheet": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", - "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" - }, "sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -18759,77 +17721,6 @@ } } }, - "swagger-methods": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-2.0.2.tgz", - "integrity": "sha512-/RNqvBZkH8+3S/FqBPejHxJxZenaYq3MrpeXnzi06aDIS39Mqf5YCUNb/ZBjsvFFt8h9FxfKs8EXPtcYdfLiRg==" - }, - "swagger-parser": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-6.0.5.tgz", - "integrity": "sha512-UL47eu4+GRm5y+N7J+W6QQiqAJn2lojyqgMwS0EZgA55dXd5xmpQCsjUmH/Rf0eKDiG1kULc9VS515PxAyTDVw==", - "requires": { - "call-me-maybe": "^1.0.1", - "json-schema-ref-parser": "^6.0.3", - "ono": "^4.0.11", - "openapi-schema-validation": "^0.4.2", - "swagger-methods": "^1.0.8", - "swagger-schema-official": "2.0.0-bab6bed", - "z-schema": "^3.24.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, - "json-schema-ref-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", - "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", - "requires": { - "call-me-maybe": "^1.0.1", - "js-yaml": "^3.12.1", - "ono": "^4.0.11" - } - }, - "ono": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", - "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", - "requires": { - "format-util": "^1.0.3" - } - }, - "swagger-methods": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-1.0.8.tgz", - "integrity": "sha512-G6baCwuHA+C5jf4FNOrosE4XlmGsdjbOjdBK4yuiDDj/ro9uR4Srj3OR84oQMT8F3qKp00tYNv0YN730oTHPZA==" - }, - "validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" - }, - "z-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", - "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", - "requires": { - "commander": "^2.7.1", - "core-js": "^2.5.7", - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^10.0.0" - } - } - } - }, - "swagger-schema-official": { - "version": "2.0.0-bab6bed", - "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", - "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" - }, "swagger-ui-react": { "version": "3.30.2", "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-3.30.2.tgz", @@ -18899,158 +17790,6 @@ } } }, - "swagger2openapi": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-6.2.1.tgz", - "integrity": "sha512-CY3miXK2YZ0rjvGkVBzJps8ohDR7zGmbFhCVynAGlxIKbLvBuD99aS2ikZcvSo09uVOKcb5FspmvF/PKWdYV1Q==", - "requires": { - "better-ajv-errors": "^0.6.1", - "call-me-maybe": "^1.0.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.4.1", - "oas-schema-walker": "^1.1.4", - "oas-validator": "^4.0.6", - "reftools": "^1.1.3", - "yaml": "^1.8.3", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "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==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "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==", - "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==" - }, - "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==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.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==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==" - }, - "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==", - "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==", - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.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==", - "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==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", @@ -19365,7 +18104,8 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-object-path": { "version": "0.3.0", @@ -19534,11 +18274,6 @@ "prelude-ls": "~1.1.2" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -19929,22 +18664,6 @@ } } }, - "upper-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.1.tgz", - "integrity": "sha512-laAsbea9SY5osxrv7S99vH9xAaJKrw5Qpdh4ENRLcaxipjKsiaBwiAsxfa8X5mObKNTQPsupSq0J/VIxsSJe3A==", - "requires": { - "tslib": "^1.10.0" - } - }, - "upper-case-first": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.1.tgz", - "integrity": "sha512-105J8XqQ+9RxW3l9gHZtgve5oaiR9TIwvmZAMAIZWRHe00T21cdvewKORTlOJf/zXW6VukuTshM+HXZNWz7N5w==", - "requires": { - "tslib": "^1.10.0" - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -20134,11 +18853,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "validator": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-12.2.0.tgz", - "integrity": "sha512-jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ==" - }, "varint": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/varint/-/varint-0.0.3.tgz", @@ -22108,11 +20822,6 @@ "microevent.ts": "~0.1.1" } }, - "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==" - }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -22163,35 +20872,11 @@ "repeat-string": "^1.5.2" } }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - }, "xmlcreate": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==" }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" - }, - "xpath": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", - "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==" - }, "xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", @@ -22244,64 +20929,16 @@ "decamelize": "^1.2.0" } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "dependencies": { - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.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": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, - "z-schema": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-4.2.3.tgz", - "integrity": "sha512-zkvK/9TC6p38IwcrbnT3ul9in1UX4cm1y/VZSs4GHKIiDCrlafc+YQBgQBUdDXLAoZHf2qvQ7gJJOo6yT1LH6A==", - "requires": { - "commander": "^2.7.1", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "validator": "^12.0.0" - } - }, "zenscroll": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz", diff --git a/packages/insomnia-inso/README.md b/packages/insomnia-inso/README.md index 3b8382208..3e94aa387 100644 --- a/packages/insomnia-inso/README.md +++ b/packages/insomnia-inso/README.md @@ -1,40 +1,56 @@ # `inso` - A CLI to accompany Insomnia Designer
npm i -g insomnia-inso
---- +Table of Contents +================= -## Data source +* [Data source](#data-source) +* [The `[identifier]` argument](#the-identifier-argument) +* [Global options](#global-options) +* [Commands](#commands) + + [ `inso generate config` ](#-inso-generate-config-options-identifier) + + [ `inso lint spec` ](#-inso-lint-spec-identifier) + + [ `inso run test` ](#-inso-run-test-options-identifier) + + [ `inso export spec` ](#-inso-export-spec-identifier) + + [ `inso script` ](#-inso-script-name) +* [Configuration](#configuration) +* [Git Bash](#git-bash) +* [Continuous Integration](#continuous-integration) +* [Development](#development) + +# Data source `inso` will first try to find a `.insomnia` directory in it's working directory. This directory is generated in a git repository when using git sync in Designer. When `inso` is used in a CI environment, it will always run against the `.insomnia` directory. If `inso` cannot find the `.insomnia` directory, it will try to run against the Designer app data directory (if found). You can override both the working directory, and the app data directory, using the `--working-dir` and `--app-data-dir` global options. -## The `[identifier]` argument +# The `[identifier]` argument -Typically, Insomnia database id's are quite long, for example: `wrk_012d4860c7da418a85ffea7406e1292a`. When specifying an identifier for `inso`, similar to Git hashes, you may choose to concatenate and use the first x characters (for example, `wrk_012d486` ), which is very likely to be unique. If in the rare chance the short id is _not_ unique against the data, `inso` will inform as such. +Typically, Insomnia database id's are quite long, for example: `wrk_012d4860c7da418a85ffea7406e1292a` . When specifying an identifier for `inso` , similar to Git hashes, you may choose to concatenate and use the first x characters (for example, `wrk_012d486` ), which is very likely to be unique. If in the rare chance the short id is _not_ unique against the data, `inso` will inform as such. Additionally, if the `[identifier]` argument is ommitted from the command, `inso` will search in the database for the information it needs, and prompt the user. Prompts can be disabled with the `--ci` global option. ![](https://raw.githubusercontent.com/Kong/insomnia/develop/packages/insomnia-inso/assets/ci-demo.gif) -## Commands - -### `$ inso [global options] [command]` +# Global options + `$ inso [global options] [command]` |Global option|Alias|Description| |- |- |- | -| `--working-dir ` | `-w` |set working directory| -| `--app-data-dir ` | `-a` |set the app data directory| +| `--workingDir ` | `-w` |set working directory| +| `--appDataDir ` | `-a` |set the app data directory| +| `--config ` | |path to the configuration file| | `--ci` | | run in CI, disables all prompts | | `--version` | `-v` |output the version number| | `--help` | `-h` |display help for a command| -### `$ inso generate config [options] [identifier]` +# Commands + +## `$ inso generate config [identifier]` Similar to the Kong [Kubernetes](https://insomnia.rest/plugins/insomnia-plugin-kong-kubernetes-config) and [Declarative](https://insomnia.rest/plugins/insomnia-plugin-kong-declarative-config) config plugins for Designer, this command can generate configuration from an API specification, using [openapi-2-kong](https://www.npmjs.com/package/openapi-2-kong). @@ -45,47 +61,64 @@ Similar to the Kong [Kubernetes](https://insomnia.rest/plugins/insomnia-plugin-k | `--type ` | `-t` |type of configuration to generate, options are `kubernetes` and `declarative` (default: `declarative` ) | | `--output ` | `-o` |save the generated config to a file in the working directory| -#### Examples +### Examples -
- When running in the git-repo directory +When running in the git-repo directory -``` +Not specifying any arguments will prompt + +``` sh inso generate config - -inso generate config spc_46c5a4 --type declarative - -inso generate config spc_46c5a4 --type declarative > output.yaml - -inso generate config "Sample Specification" --output output.yaml - -inso generate config "Sample Specification" --type kubernetes - -inso generate config spec.yaml --working-dir another/dir ``` + +Scope by the document name or id + +``` sh +inso generate config spc_46c5a4 --type declarative +inso generate config "Sample Specification" --type kubernetes +``` + +Scope by a file on the filesystem + +``` sh +inso generate config spec.yaml +inso generate config spec.yaml --workingDir another/dir + +``` + +Output to file + +``` sh +inso generate config spc_46c5a4 --output output.yaml +inso generate config spc_46c5a4 > output.yaml +``` +
-### `$ inso lint spec [identifier]` +## `$ inso lint spec [identifier]` Designer has the ability to lint and validate your OpenAPI specification as you write it. This command adds the same functionality to `inso` , in order to run linting during CI workflows. Lint results will be printed to the console, and `inso` will exit with an appropriate exit code. **`[identifier]`**: this can be a **document name, or id**. -#### Examples +### Examples -
- When running in the git-repo directory +When running in the git-repo directory -``` +Not specifying any arguments will prompt + +``` sh inso lint spec +``` +Scope by the document name or id + +``` sh inso lint spec spc_46c5a4 - inso lint spec "Sample Specification" ``` -
-### `$ inso run test [options] [identifier]` +## `$ inso run test [identifier]` API Unit Testing was introduced with Designer 2020.3.0, and this command adds the functionality to execute those unit tests via the command line, very useful for a CI environment. `inso` will report on test results, and exit with an appropriate exit code. @@ -97,54 +130,177 @@ The test runner is built on top of Mocha, thus many of the options behave as the |- |- |- | | `--env ` | `-e` |the environment to use - an environment name or id | | `--reporter ` | `-r` |reporter to use, options are `dot, list, spec, min and progress` (default: `spec` )| -| `--test-name-pattern ` | `-t` | run tests that match the regex| +| `--testNamePattern ` | `-t` | run tests that match the regex| | `--bail` | `-b` | abort ("bail") after the first test failure| -| `--keep-file` | | do not delete the generated test file (useful for debugging)| +| `--keepFile` | | do not delete the generated test file (useful for debugging)| -#### Examples +### Examples -
- When running in the git-repo directory +When running in the git-repo directory Not specifying any arguments will prompt -``` + +``` sh inso run test ``` Scope by the document name or id -``` + +``` sh inso run test "Sample Specification" --env "OpenAPI env" inso run test spc_46c5a4 --env env_env_ca046a ``` Scope by the a test suite name or id -``` + +``` sh inso run test "Math Suite" --env "OpenAPI env" inso run test uts-7f0f85 --env env_env_ca046a ``` Scope by test name regex, and control test running and reporting -``` -inso run test "Sample Specification" --test-name-pattern Math --env env_env_ca046a -inso run test spc_46c5a4 --reporter progress --bail --keep-file + +``` sh +inso run test "Sample Specification" --testNamePattern Math --env env_env_ca046a +inso run test spc_46c5a4 --reporter progress --bail --keepFile ``` More examples: [#2338](https://github.com/Kong/insomnia/pull/2338). -
-## Git Bash +## `$ inso export spec [identifier]` -Git Bash on Windows is not interactive and therefore prompts from `inso` will not work as expected. You may choose to specify the identifiers for each command explicitly, or run `inso` using `winpty`: +This command will extract and export the raw OpenAPI specification from the data store. If the `--output` option is not specified, the spec will print to console. +**`[identifier]`**: this can be a **document name, or id**. + +|Option|Alias|Description| +|- |- |- | +| `--output ` | `-o` |save the generated config to a file in the working directory| + +### Examples + +When running in the git-repo directory + +Not specifying any arguments will prompt + +``` sh +inso export spec ``` + +Scope by the document name or id + +``` sh +inso export spec spc_46c5a4 +inso export spec "Sample Specification" +``` + +Output to file + +``` sh +inso export spec spc_46c5a4 --output output.yaml +inso export spec spc_46c5a4 > output.yaml +``` + +## `$ inso script ` + +The `inso` [config file](#configuration) supports scripts, akin to NPM scripts defined in a `package.json` file. These scripts can be executed by `inso` by running `inso script ` , or simply `inso ` as this is the default command. Any options passed to this command, will be forwarded to the script being executed. + +### Examples + +When running in the git-repo directory, with the following inso config file. + +``` yaml +# .insorc.yaml +scripts: + lint: lint spec "Sample Specification" + + gen-conf: generate config "Sample Specification" + gen-conf:k8s: gen-conf --type kubernetes +``` + +Run commands with or without the `script` prefix + +``` bash +inso script gen-conf +inso gen-conf +``` + +If a conflict exists with another command (eg. `lint` ), you must prefix with `script` + +``` bash +inso script lint +inso lint # will not work +``` + +Any options passed during script invocation will be forwarded to the script + +``` bash +inso gen-conf # generates declarative config (default) +inso gen-conf:k8s # generates kubernetes config +inso gen-conf:k8s -t declarative # generates declarative config +inso gen-conf:k8s -o output.yaml # generates kubernetes config to output.yaml +``` + +# Configuration + +Inso can be configured with a configuration file, allowing you to specify options and scripts. For example, when running in a CI environment, you may choose to specify the steps as scripts in a config file, so that the same commands can be run both locally and in CI. + +Inso uses [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) for config file management, meaning any of the following items found in the working tree are automatically used: + + + `inso` property in `package.json` + + `.insorc` file in JSON or YAML format + + `.insorc.json` file + + `.insorc.yaml` , `.insorc.yml` , or `.insorc.js` file + + `inso.config.js` file exporting a JS object + +Alternatively, you can use the `--config ` global option to specify an exact file to use, if it exists outside the directory tree. + +**Options** + +Options from the config file are combined with option defaults and any explicit overrides specified in script or command invocations. This combination is in priority order: command options > config file options > default options. + +Any options specified in this file will apply to all scripts and manual commands. You can override these options by specifying them explicitly, when invoking a script or command. + +Only [global options](#global-options) can be set in the config file. + +**Scripts** + +Scripts can have any name, and can be nested. Scripts must be prefixed with `inso` (see example below). Each command behaves the same way, as described in the sections above. + +### Example + +``` yaml +# .insorc.yaml + +options: + ci: false +scripts: + test-spec: inso run test Demo --env DemoEnv --reporter progress + test-spec:200s: inso testSpec --testNamePattern 200 + test-spec:404s: inso testSpec --testNamePattern 404 + + test-math-suites: inso run test uts_8783c30a24b24e9a851d96cce48bd1f2 --env DemoEnv + test-request-suite: inso run test uts_bce4af --env DemoEnv --bail + + lint: inso lint spec Demo # must be invoked as `inso script lint` + + gen-conf: inso generate config "Designer Demo" --type declarative + gen-conf:k8s: inso gen-conf --type kubernetes +``` + +# Git Bash + +Git Bash on Windows is not interactive and therefore prompts from `inso` will not work as expected. You may choose to specify the identifiers for each command explicitly, or run `inso` using `winpty` : + +``` winpty inso.cmd generate config ``` -## Continuous Integration +# Continuous Integration `inso` has been designed to run in a CI environment, disabling prompts and providing exit codes to pass or fail the CI workflow accordingly. An example workflow run in Github Actions is as follows. This example will checkout > install NodeJS > install inso > run linting > run unit tests > generate configuration. If any of these steps fail, the GH workflow will as well. -```yaml +``` yaml # .github/workflows/test.yml name: Test @@ -168,7 +324,7 @@ jobs: run: inso generate config "Designer Demo" --type declarative --ci ``` -## Development +# Development * Bootstrap: `npm run bootstrap` * Start the compiler in watch mode: `npm run watch` diff --git a/packages/insomnia-inso/__mocks__/cosmiconfig.js b/packages/insomnia-inso/__mocks__/cosmiconfig.js new file mode 100644 index 000000000..98df34eec --- /dev/null +++ b/packages/insomnia-inso/__mocks__/cosmiconfig.js @@ -0,0 +1,5 @@ +const mock = { load: jest.fn(), search: jest.fn() }; + +module.exports = { + cosmiconfigSync: () => mock, +}; diff --git a/packages/insomnia-inso/flow-typed/cosmiconfig.js b/packages/insomnia-inso/flow-typed/cosmiconfig.js new file mode 100644 index 000000000..3d5c255bb --- /dev/null +++ b/packages/insomnia-inso/flow-typed/cosmiconfig.js @@ -0,0 +1,5 @@ +// @flow + +declare module 'cosmiconfig' { + declare module.exports: *; +} diff --git a/packages/insomnia-inso/flow-typed/string-argv.js b/packages/insomnia-inso/flow-typed/string-argv.js new file mode 100644 index 000000000..6f31a9e0c --- /dev/null +++ b/packages/insomnia-inso/flow-typed/string-argv.js @@ -0,0 +1,5 @@ +// @flow + +declare module 'string-argv' { + declare module.exports: *; +} diff --git a/packages/insomnia-inso/package-lock.json b/packages/insomnia-inso/package-lock.json index 27f974845..61434271d 100644 --- a/packages/insomnia-inso/package-lock.json +++ b/packages/insomnia-inso/package-lock.json @@ -1541,6 +1541,11 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, "@types/prettier": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.1.tgz", @@ -2643,8 +2648,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { "version": "5.3.1", @@ -3090,6 +3094,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3525,7 +3541,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -4676,6 +4691,22 @@ "resolved": "https://registry.npmjs.org/immer/-/immer-4.0.2.tgz", "integrity": "sha512-Q/tm+yKqnKy4RIBmmtISBlhXuSDrB69e9EKTYiIenIKQkXBQir43w+kN/eGiax3wt1J0O1b2fYcNqLSbEcXA7w==" }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -4768,8 +4799,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -5601,8 +5631,7 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", @@ -5712,8 +5741,7 @@ "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "loader-runner": { "version": "2.4.0", @@ -6418,6 +6446,14 @@ "readable-stream": "^2.1.5" } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -6436,7 +6472,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -6498,6 +6533,11 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, "pbkdf2": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", @@ -7968,6 +8008,11 @@ "resolved": "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz", "integrity": "sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==" }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" + }, "string-length": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", diff --git a/packages/insomnia-inso/package.json b/packages/insomnia-inso/package.json index c3607d725..c71695739 100644 --- a/packages/insomnia-inso/package.json +++ b/packages/insomnia-inso/package.json @@ -64,6 +64,7 @@ "dependencies": { "@stoplight/spectral": "^5.4.0", "commander": "^5.1.0", + "cosmiconfig": "^6.0.0", "enquirer": "^2.3.5", "env-paths": "^2.2.0", "insomnia-plugin-base64": "^2.2.10", @@ -84,6 +85,7 @@ "mkdirp": "^1.0.4", "nedb": "^1.8.0", "openapi-2-kong": "^2.2.12", + "string-argv": "^0.3.1", "yaml": "^1.10.0" } } diff --git a/packages/insomnia-inso/src/__fixtures__/.insorc-blank.yaml b/packages/insomnia-inso/src/__fixtures__/.insorc-blank.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/packages/insomnia-inso/src/__fixtures__/.insorc-missing-properties.yaml b/packages/insomnia-inso/src/__fixtures__/.insorc-missing-properties.yaml new file mode 100644 index 000000000..5cb755703 --- /dev/null +++ b/packages/insomnia-inso/src/__fixtures__/.insorc-missing-properties.yaml @@ -0,0 +1 @@ +should-be-ignored: 'test' diff --git a/packages/insomnia-inso/src/__fixtures__/.insorc-with-scripts.yaml b/packages/insomnia-inso/src/__fixtures__/.insorc-with-scripts.yaml new file mode 100644 index 000000000..9b1168bac --- /dev/null +++ b/packages/insomnia-inso/src/__fixtures__/.insorc-with-scripts.yaml @@ -0,0 +1,15 @@ +options: + ci: false +scripts: + lint: inso lint spec "Designer Demo" + + test: inso run test "Designer Demo" --env UnitTest --bail --reporter progress + test:200s: inso test --testNamePattern 200 + test:404s: inso test --testNamePattern 404 + test:suite:math: inso run test uts_8783c30a24b24e9a851d96cce48bd1f2 --env UnitTest --bail --reporter progress + test:suite:requests: inso run test uts_bce4af --env UnitTest --bail --reporter progress + + gen-conf: inso generate config "Designer Demo" --type declarative + gen-conf:k8s: inso gen-conf --type kubernetes + + invalid-script: generate config "Designer Demo" diff --git a/packages/insomnia-inso/src/__fixtures__/.insorc.yaml b/packages/insomnia-inso/src/__fixtures__/.insorc.yaml new file mode 100644 index 000000000..7f3dcc2d2 --- /dev/null +++ b/packages/insomnia-inso/src/__fixtures__/.insorc.yaml @@ -0,0 +1,7 @@ +options: + appDataDir: configFile + workingDir: workingDir + ci: true + shouldBeIgnored: this should be ignored because it is not a global option +scripts: + lint: inso lint spec diff --git a/packages/insomnia-inso/src/__tests__/__snapshots__/inso-snapshot.test.js.snap b/packages/insomnia-inso/src/__tests__/__snapshots__/inso-snapshot.test.js.snap index a8ecc5d79..4d2eeecc5 100644 --- a/packages/insomnia-inso/src/__tests__/__snapshots__/inso-snapshot.test.js.snap +++ b/packages/insomnia-inso/src/__tests__/__snapshots__/inso-snapshot.test.js.snap @@ -6,18 +6,20 @@ exports[`Snapshot for "inso --help" 1`] = ` A CLI for Insomnia! Options: - -v, --version output the version number - -w, --working-dir set working directory - -a, --app-data-dir set the app data directory - --ci run in CI, disables all prompts - -h, --help display help for command + -v, --version output the version number + -w, --workingDir set working directory + -a, --appDataDir set the app data directory + --config path to configuration file + --ci run in CI, disables all prompts + -h, --help display help for command Commands: - generate Code generation utilities - run Execution utilities - lint Linting utilities - export Export data from insomnia models - help [command] display help for command" + generate Code generation utilities + run Execution utilities + lint Linting utilities + export Export data from insomnia models + script Run scripts defined in .insorc + help [command] display help for command" `; exports[`Snapshot for "inso -h" 1`] = ` @@ -26,18 +28,20 @@ exports[`Snapshot for "inso -h" 1`] = ` A CLI for Insomnia! Options: - -v, --version output the version number - -w, --working-dir set working directory - -a, --app-data-dir set the app data directory - --ci run in CI, disables all prompts - -h, --help display help for command + -v, --version output the version number + -w, --workingDir set working directory + -a, --appDataDir set the app data directory + --config path to configuration file + --ci run in CI, disables all prompts + -h, --help display help for command Commands: - generate Code generation utilities - run Execution utilities - lint Linting utilities - export Export data from insomnia models - help [command] display help for command" + generate Code generation utilities + run Execution utilities + lint Linting utilities + export Export data from insomnia models + script Run scripts defined in .insorc + help [command] display help for command" `; exports[`Snapshot for "inso export -h" 1`] = ` @@ -83,7 +87,7 @@ Generate configuration from an api spec. Options: -t, --type type of configuration to generate, options are - [kubernetes, declarative] (default: \\"declarative\\") + [kubernetes, declarative] (default: declarative) -o, --output save the generated config to a file -h, --help display help for command" `; @@ -94,18 +98,20 @@ exports[`Snapshot for "inso help" 1`] = ` A CLI for Insomnia! Options: - -v, --version output the version number - -w, --working-dir set working directory - -a, --app-data-dir set the app data directory - --ci run in CI, disables all prompts - -h, --help display help for command + -v, --version output the version number + -w, --workingDir set working directory + -a, --appDataDir set the app data directory + --config path to configuration file + --ci run in CI, disables all prompts + -h, --help display help for command Commands: - generate Code generation utilities - run Execution utilities - lint Linting utilities - export Export data from insomnia models - help [command] display help for command" + generate Code generation utilities + run Execution utilities + lint Linting utilities + export Export data from insomnia models + script Run scripts defined in .insorc + help [command] display help for command" `; exports[`Snapshot for "inso lint -h" 1`] = ` @@ -149,11 +155,11 @@ exports[`Snapshot for "inso run test -h" 1`] = ` Run Insomnia unit test suites Options: - -e, --env environment to use - -t, --test-name-pattern run tests that match the regex - -r, --reporter reporter to use, options are [dot, list, - spec, min, progress] (default: \\"spec\\") - -b, --bail abort (\\"bail\\") after first test failure - --keep-file do not delete the generated test file - -h, --help display help for command" + -e, --env environment to use + -t, --testNamePattern run tests that match the regex + -r, --reporter reporter to use, options are [dot, list, spec, + min, progress] (default: spec) + -b, --bail abort (\\"bail\\") after first test failure + --keepFile do not delete the generated test file + -h, --help display help for command" `; diff --git a/packages/insomnia-inso/src/__tests__/cli.test.js b/packages/insomnia-inso/src/__tests__/cli.test.js index c175eefe6..c29f6aeab 100644 --- a/packages/insomnia-inso/src/__tests__/cli.test.js +++ b/packages/insomnia-inso/src/__tests__/cli.test.js @@ -4,20 +4,18 @@ import { generateConfig } from '../commands/generate-config'; import { lintSpecification } from '../commands/lint-specification'; import { runInsomniaTests } from '../commands/run-tests'; import { exportSpecification } from '../commands/export-specification'; +import { parseArgsStringToArgv } from 'string-argv'; jest.mock('../commands/generate-config'); jest.mock('../commands/lint-specification'); jest.mock('../commands/run-tests'); jest.mock('../commands/export-specification'); +jest.unmock('cosmiconfig'); const initInso = () => { - return (args: string): void => { - const cliArgs = `node test ${args}` - .split(' ') - .map(t => t.trim()) - .filter(t => t); + return (...args: Array): void => { + const cliArgs = parseArgsStringToArgv(`node test ${args.join(' ')}`); - // console.log('calling cli.go with: %o', cliArgs); return cli.go(cliArgs, true); }; }; @@ -133,7 +131,7 @@ describe('cli', () => { }); it('should call runInsomniaTests with expected options', () => { - inso('run test uts_123 -e env_123 -t name -r min -b --keep-file'); + inso('run test uts_123 -e env_123 -t name -r min -b --keepFile'); expect(runInsomniaTests).toHaveBeenCalledWith('uts_123', { reporter: 'min', keepFile: true, @@ -177,4 +175,82 @@ describe('cli', () => { ); }); }); + + describe('script', () => { + let consoleLogSpy; + beforeEach(() => { + consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); + }); + + const insorcFilePath = '--config src/__fixtures__/.insorc-with-scripts.yaml'; + + it('should call script command by default', () => { + inso('gen-conf', insorcFilePath); + + expect(generateConfig).toHaveBeenCalledWith( + 'Designer Demo', + expect.objectContaining({ type: 'declarative' }), + ); + }); + + it('should call script command', () => { + inso('script gen-conf', insorcFilePath); + + expect(generateConfig).toHaveBeenCalledWith( + 'Designer Demo', + expect.objectContaining({ type: 'declarative' }), + ); + }); + + it('should warn if script task does not start with inso', () => { + inso('invalid-script', insorcFilePath); + + expect(consoleLogSpy).toHaveBeenCalledWith("Tasks in the script should start with 'inso'."); + expect(generateConfig).not.toHaveBeenCalledWith(); + }); + + it('should call nested command', () => { + inso('gen-conf:k8s', insorcFilePath); + + expect(generateConfig).toHaveBeenCalledWith( + 'Designer Demo', + expect.objectContaining({ type: 'kubernetes' }), + ); + + expect(consoleLogSpy).toHaveBeenNthCalledWith(1, '>> inso gen-conf --type kubernetes'); + expect(consoleLogSpy).toHaveBeenNthCalledWith( + 2, + '>> inso generate config Designer Demo --type declarative --type kubernetes', + ); + }); + + it('should call nested command and pass through props', () => { + inso('gen-conf:k8s --type declarative', insorcFilePath); + + expect(generateConfig).toHaveBeenCalledWith( + 'Designer Demo', + expect.objectContaining({ type: 'declarative' }), + ); + }); + + it('should override env setting from command', () => { + inso('test:200s --env NewEnv', insorcFilePath); + + expect(runInsomniaTests).toHaveBeenCalledWith( + 'Designer Demo', + expect.objectContaining({ + env: 'NewEnv', + }), + ); + }); + + it('should fail if script not found', () => { + const consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); + + inso('not-found-script', insorcFilePath); + expect(consoleSpy).toHaveBeenCalledWith( + 'Could not find inso script "not-found-script" in the config file.', + ); + }); + }); }); diff --git a/packages/insomnia-inso/src/__tests__/get-options.test.js b/packages/insomnia-inso/src/__tests__/get-options.test.js new file mode 100644 index 000000000..202e925f0 --- /dev/null +++ b/packages/insomnia-inso/src/__tests__/get-options.test.js @@ -0,0 +1,144 @@ +// @flow +import commander from 'commander'; +import getOptions, { extractCommandOptions, loadCosmiConfig } from '../get-options'; +import path from 'path'; + +jest.unmock('cosmiconfig'); + +const fixturesDir = path.join('src', '__fixtures__'); + +describe('extractCommandOptions()', () => { + it('should combine options from all commands into one object', () => { + const command = new commander.Command('command').exitOverride(); + + command + .command('subCommand') + .option('-s, --subCmd') + .action(cmd => { + expect(extractCommandOptions(cmd)).toEqual({ + global: true, + subCmd: true, + }); + }); + + const parent = new commander.Command() + .exitOverride() + .option('-g, --global') + .addCommand(command); + + parent.parse('self inso command subCommand --global --subCmd'.split(' ')); + }); +}); + +describe('loadCosmiConfig()', () => { + it('should load .insorc.yaml config file in fixtures dir', () => { + const result = loadCosmiConfig(path.join(fixturesDir, '.insorc.yaml')); + + expect(result).toEqual({ + __configFile: { + options: { appDataDir: 'configFile', workingDir: 'workingDir', ci: true }, + scripts: { lint: 'inso lint spec' }, + filePath: path.resolve(fixturesDir, '.insorc.yaml'), + }, + }); + + expect(result.__configFile?.options?.shouldBeIgnored).toBe(undefined); + }); + + it('should return empty object and report error if specified config file not found', () => { + const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); + const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + const result = loadCosmiConfig('not-found.yaml'); + + expect(result).toEqual({}); + expect(consoleLogSpy).toHaveBeenCalledWith('Could not find config file at not-found.yaml.'); + expect(consoleErrorSpy).toHaveBeenCalled(); + }); + + it('should return empty object if config file is blank', () => { + const result = loadCosmiConfig(path.join(fixturesDir, '.insorc-blank.yaml')); + expect(result).toEqual({}); + }); + + it('should return blank properties and ignore extra items if settings and scripts not found in file', () => { + const result = loadCosmiConfig(path.join(fixturesDir, '.insorc-missing-properties.yaml')); + expect(result).toEqual({ + __configFile: { + options: {}, + scripts: {}, + filePath: path.resolve(fixturesDir, '.insorc-missing-properties.yaml'), + }, + }); + }); +}); + +describe('getOptions', () => { + it('should load default options', () => { + const commandOptions = { opts: () => ({}) }; + const defaultOptions = { appDataDir: 'default' }; + + const result = getOptions(commandOptions, defaultOptions); + + expect(result).toEqual({ appDataDir: 'default' }); + }); + + it('should combine default options with command options, favouring command', () => { + const commandOptions = { opts: () => ({ appDataDir: 'command' }) }; + const defaultOptions = { appDataDir: 'default', anotherDefault: '0' }; + + const result = getOptions(commandOptions, defaultOptions); + + expect(result).toEqual({ appDataDir: 'command', anotherDefault: '0' }); + }); + + it('should combine config file options with default options, favouring config file', () => { + // Will also load src/__fixtures__/.insorc.yaml + const commandOptions = { + opts: () => ({ + config: path.join(fixturesDir, '.insorc.yaml'), + }), + }; + const defaultOptions = { appDataDir: 'default', anotherDefault: '0' }; + + const result = getOptions(commandOptions, defaultOptions); + + expect(result).toEqual({ + appDataDir: 'configFile', + workingDir: 'workingDir', + ci: true, + anotherDefault: '0', + config: path.join(fixturesDir, '.insorc.yaml'), + __configFile: { + options: { appDataDir: 'configFile', workingDir: 'workingDir', ci: true }, + scripts: { lint: 'inso lint spec' }, + filePath: path.resolve(fixturesDir, '.insorc.yaml'), + }, + }); + }); + + it('should print error to console if config file not found', () => { + const logSpy = jest.spyOn(console, 'log').mockImplementation(() => {}); + const errSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + + const configFilePath = path.join(fixturesDir, '.insorc-not-found.yaml'); + + // Will also load src/__fixtures__/.insorc.yaml + const commandOptions = { + opts: () => ({ + config: configFilePath, + }), + }; + const defaultOptions = { appDataDir: 'default', anotherDefault: '0' }; + + const result = getOptions(commandOptions, defaultOptions); + + expect(result).toEqual({ + appDataDir: 'default', + anotherDefault: '0', + config: configFilePath, + }); + + expect(logSpy).toHaveBeenCalledWith(`Could not find config file at ${configFilePath}.`); + expect(errSpy).toHaveBeenCalled(); + }); +}); diff --git a/packages/insomnia-inso/src/__tests__/util.test.js b/packages/insomnia-inso/src/__tests__/util.test.js index 98c5ad73f..b8e720d9d 100644 --- a/packages/insomnia-inso/src/__tests__/util.test.js +++ b/packages/insomnia-inso/src/__tests__/util.test.js @@ -1,26 +1,5 @@ // @flow -import commander from 'commander'; -import { getAllOptions, exit, logErrorExit1, getDefaultAppDataDir } from '../util'; - -describe('getAllOptions()', () => { - it('should combine options from all commands into one object', () => { - const command = new commander.Command('command'); - - command - .command('subCommand') - .option('-s, --subCmd') - .action(cmd => { - expect(getAllOptions(cmd)).toEqual({ - global: true, - subCmd: true, - }); - }); - - const parent = new commander.Command().option('-g, --global').addCommand(command); - - parent.parse('node test command subCommand --global --subCmd'.split(' ')); - }); -}); +import { exit, logErrorExit1, getDefaultAppDataDir } from '../util'; describe('exit()', () => { it('should exit 0 if successful result', async () => { diff --git a/packages/insomnia-inso/src/cli.js b/packages/insomnia-inso/src/cli.js index 05050b09c..cfab999c2 100755 --- a/packages/insomnia-inso/src/cli.js +++ b/packages/insomnia-inso/src/cli.js @@ -1,100 +1,167 @@ // @flow import { ConversionTypeMap, generateConfig } from './commands/generate-config'; -import { getVersion, createCommand, getAllOptions, logErrorExit1, exit } from './util'; +import { getVersion, logErrorExit1, exit } from './util'; import { runInsomniaTests, TestReporterEnum } from './commands/run-tests'; import { lintSpecification } from './commands/lint-specification'; import { exportSpecification } from './commands/export-specification'; +import { parseArgsStringToArgv } from 'string-argv'; +import commander from 'commander'; +import getOptions from './get-options'; -function makeGenerateCommand(exitOverride: boolean) { +type CreateCommandType = (command?: string, options?: Object) => Object; + +function makeGenerateCommand(createCommand: CreateCommandType) { // inso generate - const generate = createCommand(exitOverride, 'generate').description('Code generation utilities'); + const generate = createCommand('generate').description('Code generation utilities'); const conversionTypes = Object.keys(ConversionTypeMap).join(', '); + const defaultType = 'declarative'; // inso generate config -t kubernetes config.yaml generate .command('config [identifier]') .description('Generate configuration from an api spec.') - .requiredOption( + .option( '-t, --type ', - `type of configuration to generate, options are [${conversionTypes}]`, - 'declarative', + `type of configuration to generate, options are [${conversionTypes}] (default: ${defaultType})`, ) .option('-o, --output ', 'save the generated config to a file') - .action((identifier, cmd) => exit(generateConfig(identifier, getAllOptions(cmd)))); + .action((identifier, cmd) => + exit(generateConfig(identifier, getOptions(cmd, { type: defaultType }))), + ); return generate; } -function makeTestCommand(exitOverride: boolean) { +function makeTestCommand(createCommand: CreateCommandType) { // inso run - const run = createCommand(exitOverride, 'run').description('Execution utilities'); + const run = createCommand('run').description('Execution utilities'); const reporterTypes = Object.keys(TestReporterEnum).join(', '); + const defaultReporter = TestReporterEnum.spec; // inso run tests run .command('test [identifier]') .description('Run Insomnia unit test suites') .option('-e, --env ', 'environment to use') - .option('-t, --test-name-pattern ', 'run tests that match the regex') + .option('-t, --testNamePattern ', 'run tests that match the regex') .option( '-r, --reporter ', - `reporter to use, options are [${reporterTypes}]`, - TestReporterEnum.spec, + `reporter to use, options are [${reporterTypes}] (default: ${defaultReporter})`, ) .option('-b, --bail', 'abort ("bail") after first test failure') - .option('--keep-file', 'do not delete the generated test file') - .action((identifier, cmd) => exit(runInsomniaTests(identifier, getAllOptions(cmd)))); + .option('--keepFile', 'do not delete the generated test file') + .action((identifier, cmd) => + exit(runInsomniaTests(identifier, getOptions(cmd, { reporter: defaultReporter }))), + ); return run; } -function makeLintCommand(exitOverride: boolean) { +function makeLintCommand(createCommand: CreateCommandType) { // inso lint - const lint = createCommand(exitOverride, 'lint').description('Linting utilities'); + const lint = createCommand('lint').description('Linting utilities'); // inso lint spec lint .command('spec [identifier]') .description('Lint an API Specification') - .action((identifier, cmd) => exit(lintSpecification(identifier, getAllOptions(cmd)))); + .action((identifier, cmd) => exit(lintSpecification(identifier, getOptions(cmd)))); return lint; } -function makeExportCommand(exitOverride: boolean) { +function makeExportCommand(createCommand: CreateCommandType) { // inso export - const exportCmd = createCommand(exitOverride, 'export').description( - 'Export data from insomnia models', - ); + const exportCmd = createCommand('export').description('Export data from insomnia models'); // inso export spec exportCmd .command('spec [identifier]') .description('Export an API Specification to a file') .option('-o, --output ', 'save the generated config to a file') - .action((identifier, cmd) => exit(exportSpecification(identifier, getAllOptions(cmd)))); + .action((identifier, cmd) => exit(exportSpecification(identifier, getOptions(cmd)))); return exportCmd; } -export function go(args?: Array, exitOverride?: boolean): void { - if (!args) { - args = process.argv; - } +function addScriptCommand(originalCommand: Object) { + // inso script + originalCommand + .command('script ', { isDefault: true }) + .description('Run scripts defined in .insorc') + .allowUnknownOption() + .action((scriptName, cmd) => { + // Load scripts + const options = getOptions(cmd); - // inso -v - createCommand(!!exitOverride) - .version(getVersion(), '-v, --version') - .description('A CLI for Insomnia!') - .option('-w, --working-dir ', 'set working directory') - .option('-a, --app-data-dir ', 'set the app data directory') - .option('--ci', 'run in CI, disables all prompts') - .addCommand(makeGenerateCommand(!!exitOverride)) - .addCommand(makeTestCommand(!!exitOverride)) - .addCommand(makeLintCommand(!!exitOverride)) - .addCommand(makeExportCommand(!!exitOverride)) - .parseAsync(args) - .catch(logErrorExit1); + // Ignore the first arg because that will be scriptName, get the rest + const passThroughArgs = cmd.args.slice(1); + + // Find script + const scriptTask = options.__configFile?.scripts?.[scriptName]; + + if (!scriptTask) { + console.log(`Could not find inso script "${scriptName}" in the config file.`); + return exit(new Promise(resolve => resolve(false))); + } + + if (!scriptTask.startsWith('inso')) { + console.log(`Tasks in the script should start with 'inso'.`); + return exit(new Promise(resolve => resolve(false))); + } + + // Collect args + const scriptArgs: Array = parseArgsStringToArgv( + `self ${scriptTask} ${passThroughArgs.join(' ')}`, + ); + + // Print command + console.log(`>> ${scriptArgs.slice(1).join(' ')}`); + + // Run + runWithArgs(originalCommand, scriptArgs); + }); +} + +export function go(args?: Array, exitOverride?: boolean): void { + const createCommand: CreateCommandType = (cmd?: string) => { + const command = new commander.Command(cmd).storeOptionsAsProperties(false); + + if (exitOverride) { + return command.exitOverride(); + } + + return command; + }; + + // inso + const cmd = createCommand(); + + // Version and description + cmd.version(getVersion(), '-v, --version').description('A CLI for Insomnia!'); + + // Global options + cmd + .option('-w, --workingDir ', 'set working directory') + .option('-a, --appDataDir ', 'set the app data directory') + .option('--config ', 'path to configuration file') + .option('--ci', 'run in CI, disables all prompts'); + + // Add commands and sub commands + cmd + .addCommand(makeGenerateCommand(createCommand)) + .addCommand(makeTestCommand(createCommand)) + .addCommand(makeLintCommand(createCommand)) + .addCommand(makeExportCommand(createCommand)); + + // Add script base command + addScriptCommand(cmd); + + runWithArgs(cmd, args || process.argv); +} + +function runWithArgs(cmd: Object, args: Array) { + cmd.parseAsync(args).catch(logErrorExit1); } diff --git a/packages/insomnia-inso/src/commands/export-specification.js b/packages/insomnia-inso/src/commands/export-specification.js index 138e043d2..f234f8bef 100644 --- a/packages/insomnia-inso/src/commands/export-specification.js +++ b/packages/insomnia-inso/src/commands/export-specification.js @@ -1,5 +1,5 @@ // @flow -import type { GlobalOptions } from '../util'; +import type { GlobalOptions } from '../get-options'; import { loadDb } from '../db'; import { loadApiSpec, promptApiSpec } from '../db/models/api-spec'; import { writeFileWithCliOptions } from '../write-file'; diff --git a/packages/insomnia-inso/src/commands/generate-config.js b/packages/insomnia-inso/src/commands/generate-config.js index 391d48959..52de6cfc3 100644 --- a/packages/insomnia-inso/src/commands/generate-config.js +++ b/packages/insomnia-inso/src/commands/generate-config.js @@ -2,7 +2,7 @@ import * as o2k from 'openapi-2-kong'; import YAML from 'yaml'; import path from 'path'; -import type { GlobalOptions } from '../util'; +import type { GlobalOptions } from '../get-options'; import { loadDb } from '../db'; import { loadApiSpec, promptApiSpec } from '../db/models/api-spec'; import { writeFileWithCliOptions } from '../write-file'; diff --git a/packages/insomnia-inso/src/commands/lint-specification.js b/packages/insomnia-inso/src/commands/lint-specification.js index 07dda168d..78ec4e47b 100644 --- a/packages/insomnia-inso/src/commands/lint-specification.js +++ b/packages/insomnia-inso/src/commands/lint-specification.js @@ -1,6 +1,6 @@ // @flow import { Spectral } from '@stoplight/spectral'; -import type { GlobalOptions } from '../util'; +import type { GlobalOptions } from '../get-options'; import { loadDb } from '../db'; import { loadApiSpec, promptApiSpec } from '../db/models/api-spec'; diff --git a/packages/insomnia-inso/src/commands/run-tests.js b/packages/insomnia-inso/src/commands/run-tests.js index 6fa27af36..2588dc2f8 100644 --- a/packages/insomnia-inso/src/commands/run-tests.js +++ b/packages/insomnia-inso/src/commands/run-tests.js @@ -1,7 +1,7 @@ // @flow import { generate, runTestsCli } from 'insomnia-testing'; -import type { GlobalOptions } from '../util'; +import type { GlobalOptions } from '../get-options'; import { loadDb } from '../db'; import type { UnitTest, UnitTestSuite } from '../db/models/types'; import { noConsoleLog } from '../logger'; diff --git a/packages/insomnia-inso/src/get-options.js b/packages/insomnia-inso/src/get-options.js new file mode 100644 index 000000000..ebbf4a977 --- /dev/null +++ b/packages/insomnia-inso/src/get-options.js @@ -0,0 +1,87 @@ +// @flow +import { cosmiconfigSync } from 'cosmiconfig'; + +type ConfigFileOptions = { + __configFile?: { + options?: Object, + scripts?: Object, + filePath: string, + }, +}; + +export type GlobalOptions = { + appDataDir?: string, + workingDir?: string, + ci?: boolean, + config?: string, +} & ConfigFileOptions; + +const OptionsSupportedInConfigFile: Array<$Keys> = [ + 'appDataDir', + 'workingDir', + 'ci', +]; + +export const loadCosmiConfig = (configFile?: string): ConfigFileOptions => { + try { + const explorer = cosmiconfigSync('inso'); + + const results = configFile ? explorer.load(configFile) : explorer.search(); + + if (results && !results?.isEmpty) { + const options = {}; + + OptionsSupportedInConfigFile.forEach(key => { + options[key] = results.config?.options?.[key]; + }); + + return { + __configFile: { + options, + scripts: results.config?.scripts || {}, + filePath: results.filepath, + }, + }; + } + } catch (e) { + // Report fatal error when loading from explicitly defined config file + if (configFile) { + console.log(`Could not find config file at ${configFile}.`); + console.error(e); + } + } + + return {}; +}; + +export const extractCommandOptions = (cmd: Object): $Shape => { + let opts = {}; + let command = cmd; + + do { + // overwrite options with more specific ones + opts = { ...command.opts(), ...opts }; + command = command.parent; + } while (command); + + return opts; +}; + +const getOptions = (cmd: Object, defaultOptions: $Shape = {}): T => { + const commandOptions = extractCommandOptions(cmd); + + const { __configFile } = loadCosmiConfig(commandOptions.config); + + if (__configFile) { + return { + ...defaultOptions, + ...(__configFile.options || {}), + ...commandOptions, + __configFile, + }; + } + + return { ...defaultOptions, ...commandOptions }; +}; + +export default getOptions; diff --git a/packages/insomnia-inso/src/util.js b/packages/insomnia-inso/src/util.js index a625d96b5..9d6eaee98 100644 --- a/packages/insomnia-inso/src/util.js +++ b/packages/insomnia-inso/src/util.js @@ -1,41 +1,10 @@ // @flow -import commander from 'commander'; import * as packageJson from '../package.json'; -export type GlobalOptions = { - appDataDir?: string, - workingDir?: string, - ci?: boolean, -}; - -export function createCommand(exitOverride: boolean, cmd?: string) { - const command = new commander.Command(cmd).storeOptionsAsProperties(false); - - // TODO: can probably remove this - if (exitOverride) { - return command.exitOverride(); - } - - return command; -} - export function getVersion() { return packageJson.version; } -export function getAllOptions(cmd: Object): T { - let opts = {}; - let command = cmd; - - do { - // overwrite options with more specific ones - opts = { ...command.opts(), ...opts }; - command = command.parent; - } while (command); - - return opts; -} - export function logErrorExit1(err: Error) { console.error(err);