Mirror: Modular GraphQL.js import paths without the hassle.

Add automatic import-map generation across graphql@14|15|16 (#5)

* Upgrade dependencies and transitive dependencies

* Add separate installs for graphql v14, v15, and v16

* Rewrite import map generator to automatically resolve conflicts

This enables the import map generator to automatically trace
graphql v14, v15, and v16 and finds the most specific common
import declaration between all three of them, if possible. As
a bonus, it now excludes exports that aren't available in all
three versions.

* Add peerDependencies entry for graphql to restrict versions

* Delete import-map-overrides.json

* Add warning and remove importMapOverrides from plugin

* Update README

* Fix index files with extension addition

When an extension is added, we must ensure that we add it
to the index module and not to a directory.

authored by kitten.sh and committed by GitHub 3e888d7d e143ecd9

+3
README.md
··· 3 3 A small transform plugin to cherry-pick GraphQL modules so you don’t have to. 4 4 Basically [babel-plugin-lodash](https://github.com/lodash/babel-plugin-lodash) for [graphql](https://github.com/graphql/graphql-js). 5 5 6 + This automatically finds the most specific import from the graphql module's files and folders that works 7 + across GraphQL.js v14, v15, and v16. 8 + 6 9 ## Getting Started 7 10 8 11 ```sh
-14
import-map-overrides.json
··· 1 - { 2 - "visitWithTypeInfo": { 3 - "local": "visitWithTypeInfo", 4 - "from": "graphql" 5 - }, 6 - "executeSync": { 7 - "local": "executeSync", 8 - "from": "graphql" 9 - }, 10 - "subscribe": { 11 - "local": "subscribe", 12 - "from": "graphql/subscription" 13 - } 14 - }
+14 -5
index.js
··· 5 5 } 6 6 7 7 const importMap = require('./import-map.json'); 8 - const importMapOverrides = require('./import-map-overrides.json'); 8 + const indexRe = /[\\/]index$/; 9 9 const PKG_NAME = 'graphql'; 10 10 11 11 return { ··· 20 20 const imported = specifier.imported.name; 21 21 22 22 let declaration = importMap[imported]; 23 - if (importMapOverrides[imported]) { 24 - declaration = importMapOverrides[imported]; 23 + if (!declaration) { 24 + console.warn( 25 + `The export "${imported}" could not be found. It may not be known, or may not be available consistently between graphql@14|15|16.\n` + 26 + 'Try using an alternative method or check whether this method is present in the provided range of graphql major releases.' 27 + ); 25 28 } 26 29 27 - const from = declaration ? declaration.from : PKG_NAME; 30 + let from = declaration ? declaration.from : PKG_NAME; 28 31 if (!acc[from]) { 29 - acc[from] = t.importDeclaration([], t.stringLiteral(from === 'graphql' ? from : from + extension)); 32 + if (from !== PKG_NAME && extension) { 33 + from += extension; 34 + } else if (from !== PKG_NAME && from.endsWith('')) { 35 + from = from.replace(indexRe, ''); 36 + } 37 + 38 + acc[from] = t.importDeclaration([], t.stringLiteral(from)); 30 39 } 31 40 32 41 const localName = specifier.local.name;
+16 -6
package.json
··· 24 24 "modular", 25 25 "tree-shaking" 26 26 ], 27 + "peerDependencies": { 28 + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" 29 + }, 30 + "peerDependenciesMeta": { 31 + "graphql": { 32 + "optional": true 33 + } 34 + }, 27 35 "devDependencies": { 28 - "@rollup/plugin-node-resolve": "^10.0.0", 29 - "graphql": "^15.4.0", 30 - "husky": "^4.3.0", 31 - "lint-staged": "^10.5.0", 32 - "prettier": "^2.1.2", 33 - "rollup": "^2.32.1" 36 + "@rollup/plugin-node-resolve": "^13.1.1", 37 + "graphql-14": "npm:graphql@^14.5.8", 38 + "graphql-15": "npm:graphql@^16.1.0", 39 + "graphql-16": "npm:graphql@^15.8.0", 40 + "husky-v4": "^4.3.0", 41 + "lint-staged": "^12.1.2", 42 + "prettier": "^2.5.1", 43 + "rollup": "^2.61.1" 34 44 }, 35 45 "lint-staged": { 36 46 "*.{json,js}": [
+116 -89
scripts/generate-import-map.js
··· 3 3 4 4 const { rollup } = require('rollup'); 5 5 6 - const cwd = process.cwd(); 7 - const basepath = path.resolve(cwd, 'node_modules/graphql/'); 6 + /** Generates a map of exports from a given graphql package to list of import locations. */ 7 + async function traceImports(moduleName) { 8 + const basepath = path.resolve(process.cwd(), 'node_modules/', moduleName); 9 + const exportMap = {}; 8 10 9 - function generateImportMapPlugin(opts = {}) { 10 - const maxDepth = opts.maxDepth || 2; 11 - const filename = opts.filename || 'import-map.json'; 12 - const map = new Map(); 13 - 14 - const resolveFile = (from, to) => { 15 - return path.join(from, to); 11 + const resolveFile = (to, relative = '.') => { 12 + const dirname = path.join('graphql/', relative, path.dirname(to)); 13 + const filename = path.basename(to, '.mjs'); 14 + return path.join(dirname, filename); 16 15 }; 17 16 18 - const resolveFromMap = (id, name, depth = 0) => { 19 - const exports = map.get(id); 20 - if (!exports || !exports.has(name)) return null; 17 + const bundle = await rollup({ 18 + // This contains all top-level "sub-modules" of graphql too, since not all exports of 19 + // them may be exposed in the main index.mjs file. 20 + input: { 21 + graphql: path.join(basepath, 'index.mjs'), 22 + 'graphql/error': path.join(basepath, 'error/index.mjs'), 23 + 'graphql/execution': path.join(basepath, 'execution/index.mjs'), 24 + 'graphql/language': path.join(basepath, 'language/index.mjs'), 25 + 'graphql/subscription': path.join(basepath, 'subscription/index.mjs'), 26 + 'graphql/type': path.join(basepath, 'type/index.mjs'), 27 + 'graphql/utilities': path.join(basepath, 'utilities/index.mjs'), 28 + 'graphql/validation': path.join(basepath, 'validation/index.mjs'), 29 + }, 30 + external: (id) => !/^\.{0,2}\//.test(id), 31 + preserveModules: true, 32 + plugins: [ 33 + require('@rollup/plugin-node-resolve').nodeResolve(), 34 + { 35 + transform(code, id) { 36 + const relative = path.relative(basepath, id); 37 + const dirname = path.dirname(relative); 38 + const exports = {}; 21 39 22 - const declaration = exports.get(name); 23 - if (depth >= maxDepth || declaration.from === id) { 24 - return declaration; 25 - } 40 + this.parse(code) 41 + .body.filter((x) => x.type === 'ExportNamedDeclaration') 42 + .forEach((node) => { 43 + const from = node.source 44 + ? resolveFile(node.source.value, dirname) 45 + : resolveFile(relative); 26 46 27 - return resolveFromMap(declaration.from, declaration.local, depth + 1) || declaration; 28 - }; 29 - 30 - return { 31 - name: 'generate-import-map', 32 - transform(code, id) { 33 - const relative = path.relative(basepath, id); 34 - const dirname = path.dirname(relative); 35 - const exports = new Map(); 36 - 37 - this.parse(code) 38 - .body.filter((x) => x.type === 'ExportNamedDeclaration') 39 - .forEach((node) => { 40 - const source = node.source ? resolveFile(dirname, node.source.value) : relative; 47 + node.specifiers.forEach((specifier) => { 48 + const { name: local } = specifier.exported; 49 + exports[local] = { local, from }; 50 + }); 41 51 42 - node.specifiers.forEach((specifier) => { 43 - exports.set(specifier.exported.name, { 44 - local: specifier.local.name, 45 - from: source, 46 - }); 47 - }); 48 - 49 - if (node.declaration) { 50 - (node.declaration.declarations || [node.declaration]).forEach((declaration) => { 51 - if (declaration && declaration.id) { 52 - const { name } = declaration.id; 53 - exports.set(declaration.id.name, { 54 - local: name, 55 - from: source, 52 + if (node.declaration) { 53 + (node.declaration.declarations || [node.declaration]).forEach((declaration) => { 54 + if (declaration && declaration.id) { 55 + const { name: local } = declaration.id; 56 + exports[local] = { local, from }; 57 + } 56 58 }); 57 59 } 58 60 }); 59 - } 60 - }); 61 + 62 + exportMap[resolveFile(relative)] = exports; 63 + return null; 64 + }, 65 + }, 66 + ], 67 + }); 68 + 69 + await bundle.generate({}); 70 + return exportMap; 71 + } 61 72 62 - map.set(relative, exports); 63 - return null; 64 - }, 65 - renderChunk(_code, chunk) { 66 - const id = chunk.facadeModuleId; 67 - const relative = path.relative(basepath, id); 73 + function isDeclarationEqual(a, b) { 74 + return a.local === b.local && a.from === b.from; 75 + } 68 76 69 - if (chunk.isEntry) { 70 - const importMap = chunk.exports.reduce((acc, name) => { 71 - const declaration = resolveFromMap(relative, name); 72 - if (declaration) { 73 - const dirname = path.join('graphql/', path.dirname(declaration.from)); 74 - const filename = path.basename(declaration.from, '.mjs'); 77 + function mergeTraces(traces) { 78 + const trace = {}; 75 79 76 - acc[name] = { 77 - local: declaration.local, 78 - from: path.join(dirname, filename), 79 - }; 80 - } 80 + // Iterate over all known filenames in all traces 81 + const ids = new Set( 82 + traces.map((trace) => Object.keys(trace)).reduce((acc, names) => acc.concat(names), []) 83 + ); 84 + for (const id of ids) { 85 + // Each file must exist in all traces 86 + if (!traces.every((trace) => !!trace[id])) continue; 81 87 82 - return acc; 83 - }, {}); 88 + const exports = {}; 84 89 85 - this.emitFile({ 86 - type: 'asset', 87 - filename, 88 - name: filename, 89 - source: JSON.stringify(importMap, null, 2), 90 - }); 90 + // Iterate over all known exports in each trace's set of exports for this file 91 + const exportNames = new Set( 92 + traces.map((trace) => Object.keys(trace[id])).reduce((acc, names) => acc.concat(names), []) 93 + ); 94 + for (const name of exportNames) { 95 + // Each export must exist in all traces 96 + if (traces.every((trace) => !!trace[id][name])) { 97 + // Collect known declarations and deduplicate 98 + exports[name] = traces 99 + .map((trace) => trace[id][name]) 100 + .filter((val, index, all) => { 101 + const firstIndex = all.findIndex((item) => isDeclarationEqual(item, val)); 102 + return firstIndex === index; 103 + }); 91 104 } 92 - }, 105 + } 106 + 107 + if (Object.keys(exports).length) trace[id] = exports; 108 + } 109 + 110 + // For a given declaration, find the first deepest one that works for the trace 111 + // NOTE: This doesn't find the absolute deepest one, since it assumes that each 112 + // export only has one functional trace 113 + const resolveDeclaration = (declaration) => { 114 + const declarations = trace[declaration.from]; 115 + if (!declarations || !declarations[declaration.local]) return null; 116 + for (const childDeclaration of declarations[declaration.local]) { 117 + if (childDeclaration.from === declaration.from) continue; 118 + const resolved = resolveDeclaration(childDeclaration); 119 + if (resolved && resolved.from !== declaration.from) return resolved; 120 + } 121 + 122 + return declaration; 93 123 }; 124 + 125 + // Resolve all known (and consistent) exports to a common, deepest declaration 126 + const ROOT_MODULE = 'graphql/index'; 127 + for (const local in trace[ROOT_MODULE]) 128 + exports[local] = resolveDeclaration({ local, from: ROOT_MODULE }); 129 + return exports; 94 130 } 95 131 96 132 (async () => { 97 - const bundle = await rollup({ 98 - input: path.join(basepath, 'index.mjs'), 99 - external: (id) => !/^\.{0,2}\//.test(id), 100 - preserveModules: true, 101 - plugins: [ 102 - require('@rollup/plugin-node-resolve').nodeResolve(), 103 - generateImportMapPlugin({ 104 - filename: 'import-map.json', 105 - }), 106 - ], 107 - }); 133 + const traces = await Promise.all([ 134 + traceImports('graphql-14'), 135 + traceImports('graphql-15'), 136 + traceImports('graphql-16'), 137 + ]); 108 138 109 - const { output } = await bundle.generate({}); 139 + const trace = mergeTraces(traces); 110 140 111 - fs.writeFileSync( 112 - path.resolve(cwd, 'import-map.json'), 113 - output.find((asset) => asset.type === 'asset').source 114 - ); 141 + fs.writeFileSync('import-map.json', JSON.stringify(trace, null, 2)); 115 142 })().catch((err) => { 116 - console.error(`${err.name}: ${err.message}`); 143 + console.error(`${err.name}: ${err.stack}`); 117 144 process.exit(1); 118 145 });
+253 -223
yarn.lock
··· 23 23 chalk "^2.0.0" 24 24 js-tokens "^4.0.0" 25 25 26 - "@rollup/plugin-node-resolve@^10.0.0": 27 - version "10.0.0" 28 - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" 29 - integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== 26 + "@rollup/plugin-node-resolve@^13.1.1": 27 + version "13.1.1" 28 + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz#d38ba06e7b181ab4df64c75409b43d9bdc95ae34" 29 + integrity sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw== 30 30 dependencies: 31 31 "@rollup/pluginutils" "^3.1.0" 32 32 "@types/resolve" "1.17.1" 33 33 builtin-modules "^3.1.0" 34 34 deepmerge "^4.2.2" 35 35 is-module "^1.0.0" 36 - resolve "^1.17.0" 36 + resolve "^1.19.0" 37 37 38 38 "@rollup/pluginutils@^3.1.0": 39 39 version "3.1.0" ··· 90 90 version "5.0.0" 91 91 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 92 92 integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 93 + 94 + ansi-regex@^6.0.1: 95 + version "6.0.1" 96 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 97 + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 93 98 94 99 ansi-styles@^3.2.1: 95 100 version "3.2.1" ··· 105 110 dependencies: 106 111 color-convert "^2.0.1" 107 112 113 + ansi-styles@^6.0.0: 114 + version "6.1.0" 115 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" 116 + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== 117 + 108 118 astral-regex@^2.0.0: 109 119 version "2.0.0" 110 120 resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" ··· 136 146 escape-string-regexp "^1.0.5" 137 147 supports-color "^5.3.0" 138 148 139 - chalk@^4.0.0, chalk@^4.1.0: 149 + chalk@^4.0.0: 140 150 version "4.1.0" 141 151 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 142 152 integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== ··· 168 178 dependencies: 169 179 slice-ansi "^3.0.0" 170 180 string-width "^4.2.0" 181 + 182 + cli-truncate@^3.1.0: 183 + version "3.1.0" 184 + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" 185 + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== 186 + dependencies: 187 + slice-ansi "^5.0.0" 188 + string-width "^5.0.0" 171 189 172 190 color-convert@^1.9.0: 173 191 version "1.9.3" ··· 193 211 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 194 212 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 195 213 196 - commander@^6.0.0: 197 - version "6.2.0" 198 - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" 199 - integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== 214 + colorette@^2.0.16: 215 + version "2.0.16" 216 + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" 217 + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== 218 + 219 + commander@^8.3.0: 220 + version "8.3.0" 221 + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" 222 + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== 200 223 201 224 compare-versions@^3.6.0: 202 225 version "3.6.0" ··· 214 237 path-type "^4.0.0" 215 238 yaml "^1.10.0" 216 239 217 - cross-spawn@^7.0.0: 240 + cross-spawn@^7.0.3: 218 241 version "7.0.3" 219 242 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 220 243 integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== ··· 223 246 shebang-command "^2.0.0" 224 247 which "^2.0.1" 225 248 226 - debug@^4.1.1: 227 - version "4.2.0" 228 - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" 229 - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 249 + debug@^4.3.2: 250 + version "4.3.3" 251 + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 252 + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 230 253 dependencies: 231 254 ms "2.1.2" 232 - 233 - dedent@^0.7.0: 234 - version "0.7.0" 235 - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 236 - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 237 255 238 256 deepmerge@^4.2.2: 239 257 version "4.2.2" ··· 245 263 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 246 264 integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 247 265 248 - end-of-stream@^1.1.0: 249 - version "1.4.4" 250 - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 251 - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 252 - dependencies: 253 - once "^1.4.0" 266 + emoji-regex@^9.2.2: 267 + version "9.2.2" 268 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 269 + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 254 270 255 271 enquirer@^2.3.6: 256 272 version "2.3.6" ··· 276 292 resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 277 293 integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 278 294 279 - execa@^4.0.3: 280 - version "4.1.0" 281 - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" 282 - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== 295 + execa@^5.1.1: 296 + version "5.1.1" 297 + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 298 + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 283 299 dependencies: 284 - cross-spawn "^7.0.0" 285 - get-stream "^5.0.0" 286 - human-signals "^1.1.1" 300 + cross-spawn "^7.0.3" 301 + get-stream "^6.0.0" 302 + human-signals "^2.1.0" 287 303 is-stream "^2.0.0" 288 304 merge-stream "^2.0.0" 289 - npm-run-path "^4.0.0" 290 - onetime "^5.1.0" 291 - signal-exit "^3.0.2" 305 + npm-run-path "^4.0.1" 306 + onetime "^5.1.2" 307 + signal-exit "^3.0.3" 292 308 strip-final-newline "^2.0.0" 293 309 294 - figures@^3.2.0: 295 - version "3.2.0" 296 - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 297 - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 298 - dependencies: 299 - escape-string-regexp "^1.0.5" 300 - 301 310 fill-range@^7.0.1: 302 311 version "7.0.1" 303 312 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" ··· 305 314 dependencies: 306 315 to-regex-range "^5.0.1" 307 316 308 - find-up@^4.0.0: 309 - version "4.1.0" 310 - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 311 - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 317 + find-up@^5.0.0: 318 + version "5.0.0" 319 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 320 + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 312 321 dependencies: 313 - locate-path "^5.0.0" 322 + locate-path "^6.0.0" 314 323 path-exists "^4.0.0" 315 324 316 - find-versions@^3.2.0: 317 - version "3.2.0" 318 - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 319 - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 325 + find-versions@^4.0.0: 326 + version "4.0.0" 327 + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" 328 + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== 320 329 dependencies: 321 - semver-regex "^2.0.0" 330 + semver-regex "^3.1.2" 322 331 323 - fsevents@~2.1.2: 324 - version "2.1.3" 325 - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 326 - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 332 + fsevents@~2.3.2: 333 + version "2.3.2" 334 + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 335 + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 327 336 328 337 function-bind@^1.1.1: 329 338 version "1.1.1" 330 339 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 331 340 integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 332 341 333 - get-own-enumerable-property-symbols@^3.0.0: 334 - version "3.0.2" 335 - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 336 - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 342 + get-stream@^6.0.0: 343 + version "6.0.1" 344 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 345 + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 337 346 338 - get-stream@^5.0.0: 339 - version "5.2.0" 340 - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 341 - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 347 + "graphql-14@npm:graphql@^14.5.8": 348 + version "14.7.0" 349 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" 350 + integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== 342 351 dependencies: 343 - pump "^3.0.0" 352 + iterall "^1.2.2" 344 353 345 - graphql@^15.4.0: 346 - version "15.4.0" 347 - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" 348 - integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== 354 + "graphql-15@npm:graphql@^16.1.0": 355 + version "16.1.0" 356 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.1.0.tgz#83bebeae6e119766d04966f09de9305be7fd44e5" 357 + integrity sha512-+PIjmhqGHMIxtnlEirRXDHIzs0cAHAozKG5M2w2N4TnS8VzCxO3bbv1AW9UTeycBfl2QsPduxcVrBvANFKQhiw== 358 + 359 + "graphql-16@npm:graphql@^15.8.0": 360 + version "15.8.0" 361 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" 362 + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== 349 363 350 364 has-flag@^3.0.0: 351 365 version "3.0.0" ··· 364 378 dependencies: 365 379 function-bind "^1.1.1" 366 380 367 - human-signals@^1.1.1: 368 - version "1.1.1" 369 - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 370 - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 381 + human-signals@^2.1.0: 382 + version "2.1.0" 383 + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 384 + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 371 385 372 - husky@^4.3.0: 373 - version "4.3.0" 374 - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" 375 - integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== 386 + husky-v4@^4.3.0: 387 + version "4.3.8" 388 + resolved "https://registry.yarnpkg.com/husky-v4/-/husky-v4-4.3.8.tgz#af3be56a8b62b941371b5190e265f76dd1af2e57" 389 + integrity sha512-M7A9u/t6BnT/qbDzKb7SdXhr8qLTGTkqZL6YLDDM20jfCdmpIMEuO384LvYXSBcgv50oIgNWI/IaO3g4A4ShjA== 376 390 dependencies: 377 391 chalk "^4.0.0" 378 392 ci-info "^2.0.0" 379 393 compare-versions "^3.6.0" 380 394 cosmiconfig "^7.0.0" 381 - find-versions "^3.2.0" 395 + find-versions "^4.0.0" 382 396 opencollective-postinstall "^2.0.2" 383 - pkg-dir "^4.2.0" 397 + pkg-dir "^5.0.0" 384 398 please-upgrade-node "^3.2.0" 385 399 slash "^3.0.0" 386 400 which-pm-runs "^1.0.0" ··· 403 417 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 404 418 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 405 419 406 - is-core-module@^2.0.0: 407 - version "2.0.0" 408 - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" 409 - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== 420 + is-core-module@^2.2.0: 421 + version "2.8.0" 422 + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 423 + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 410 424 dependencies: 411 425 has "^1.0.3" 412 426 ··· 414 428 version "3.0.0" 415 429 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 416 430 integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 431 + 432 + is-fullwidth-code-point@^4.0.0: 433 + version "4.0.0" 434 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 435 + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 417 436 418 437 is-module@^1.0.0: 419 438 version "1.0.0" ··· 425 444 resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 426 445 integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 427 446 428 - is-obj@^1.0.1: 429 - version "1.0.1" 430 - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 431 - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 432 - 433 - is-regexp@^1.0.0: 434 - version "1.0.0" 435 - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 436 - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 437 - 438 447 is-stream@^2.0.0: 439 448 version "2.0.0" 440 449 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" ··· 444 453 version "2.0.0" 445 454 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 446 455 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 456 + 457 + iterall@^1.2.2: 458 + version "1.3.0" 459 + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" 460 + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== 447 461 448 462 js-tokens@^4.0.0: 449 463 version "4.0.0" ··· 455 469 resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 456 470 integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 457 471 472 + lilconfig@2.0.4: 473 + version "2.0.4" 474 + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" 475 + integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== 476 + 458 477 lines-and-columns@^1.1.6: 459 478 version "1.1.6" 460 479 resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 461 480 integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 462 481 463 - lint-staged@^10.5.0: 464 - version "10.5.0" 465 - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.0.tgz#c923c2447a84c595874f3de696778736227e7a7a" 466 - integrity sha512-gjC9+HGkBubOF+Yyoj9pd52Qfm/kYB+dRX1UOgWjHKvSDYl+VHkZXlBMlqSZa2cH3Kp5/uNL480sV6e2dTgXSg== 482 + lint-staged@^12.1.2: 483 + version "12.1.2" 484 + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.1.2.tgz#90c571927e1371fc133e720671dd7989eab53f74" 485 + integrity sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A== 467 486 dependencies: 468 - chalk "^4.1.0" 469 - cli-truncate "^2.1.0" 470 - commander "^6.0.0" 471 - cosmiconfig "^7.0.0" 472 - debug "^4.1.1" 473 - dedent "^0.7.0" 487 + cli-truncate "^3.1.0" 488 + colorette "^2.0.16" 489 + commander "^8.3.0" 490 + debug "^4.3.2" 474 491 enquirer "^2.3.6" 475 - execa "^4.0.3" 476 - listr2 "^2.6.0" 477 - log-symbols "^4.0.0" 478 - micromatch "^4.0.2" 492 + execa "^5.1.1" 493 + lilconfig "2.0.4" 494 + listr2 "^3.13.3" 495 + micromatch "^4.0.4" 479 496 normalize-path "^3.0.0" 480 - please-upgrade-node "^3.2.0" 481 - string-argv "0.3.1" 482 - stringify-object "^3.3.0" 497 + object-inspect "^1.11.0" 498 + string-argv "^0.3.1" 499 + supports-color "^9.0.2" 500 + yaml "^1.10.2" 483 501 484 - listr2@^2.6.0: 485 - version "2.6.2" 486 - resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.6.2.tgz#4912eb01e1e2dd72ec37f3895a56bf2622d6f36a" 487 - integrity sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA== 502 + listr2@^3.13.3: 503 + version "3.13.5" 504 + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.13.5.tgz#105a813f2eb2329c4aae27373a281d610ee4985f" 505 + integrity sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA== 488 506 dependencies: 489 - chalk "^4.1.0" 490 507 cli-truncate "^2.1.0" 491 - figures "^3.2.0" 492 - indent-string "^4.0.0" 508 + colorette "^2.0.16" 493 509 log-update "^4.0.0" 494 510 p-map "^4.0.0" 495 - rxjs "^6.6.2" 511 + rfdc "^1.3.0" 512 + rxjs "^7.4.0" 496 513 through "^2.3.8" 514 + wrap-ansi "^7.0.0" 497 515 498 - locate-path@^5.0.0: 499 - version "5.0.0" 500 - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 501 - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 502 - dependencies: 503 - p-locate "^4.1.0" 504 - 505 - log-symbols@^4.0.0: 506 - version "4.0.0" 507 - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 508 - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 516 + locate-path@^6.0.0: 517 + version "6.0.0" 518 + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 519 + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 509 520 dependencies: 510 - chalk "^4.0.0" 521 + p-locate "^5.0.0" 511 522 512 523 log-update@^4.0.0: 513 524 version "4.0.0" ··· 524 535 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 525 536 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 526 537 527 - micromatch@^4.0.2: 528 - version "4.0.2" 529 - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 530 - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 538 + micromatch@^4.0.4: 539 + version "4.0.4" 540 + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 541 + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 531 542 dependencies: 532 543 braces "^3.0.1" 533 - picomatch "^2.0.5" 544 + picomatch "^2.2.3" 534 545 535 546 mimic-fn@^2.1.0: 536 547 version "2.1.0" ··· 547 558 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 548 559 integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 549 560 550 - npm-run-path@^4.0.0: 561 + npm-run-path@^4.0.1: 551 562 version "4.0.1" 552 563 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 553 564 integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 554 565 dependencies: 555 566 path-key "^3.0.0" 556 567 557 - once@^1.3.1, once@^1.4.0: 558 - version "1.4.0" 559 - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 560 - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 561 - dependencies: 562 - wrappy "1" 568 + object-inspect@^1.11.0: 569 + version "1.11.1" 570 + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" 571 + integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== 563 572 564 - onetime@^5.1.0: 573 + onetime@^5.1.0, onetime@^5.1.2: 565 574 version "5.1.2" 566 575 resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 567 576 integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== ··· 573 582 resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" 574 583 integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== 575 584 576 - p-limit@^2.2.0: 577 - version "2.3.0" 578 - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 579 - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 585 + p-limit@^3.0.2: 586 + version "3.1.0" 587 + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 588 + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 580 589 dependencies: 581 - p-try "^2.0.0" 590 + yocto-queue "^0.1.0" 582 591 583 - p-locate@^4.1.0: 584 - version "4.1.0" 585 - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 586 - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 592 + p-locate@^5.0.0: 593 + version "5.0.0" 594 + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 595 + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 587 596 dependencies: 588 - p-limit "^2.2.0" 597 + p-limit "^3.0.2" 589 598 590 599 p-map@^4.0.0: 591 600 version "4.0.0" ··· 593 602 integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 594 603 dependencies: 595 604 aggregate-error "^3.0.0" 596 - 597 - p-try@^2.0.0: 598 - version "2.2.0" 599 - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 600 - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 601 605 602 606 parent-module@^1.0.0: 603 607 version "1.0.1" ··· 636 640 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 637 641 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 638 642 639 - picomatch@^2.0.5, picomatch@^2.2.2: 640 - version "2.2.2" 641 - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 642 - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 643 + picomatch@^2.2.2, picomatch@^2.2.3: 644 + version "2.3.0" 645 + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 646 + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 643 647 644 - pkg-dir@^4.2.0: 645 - version "4.2.0" 646 - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 647 - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 648 + pkg-dir@^5.0.0: 649 + version "5.0.0" 650 + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" 651 + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== 648 652 dependencies: 649 - find-up "^4.0.0" 653 + find-up "^5.0.0" 650 654 651 655 please-upgrade-node@^3.2.0: 652 656 version "3.2.0" ··· 655 659 dependencies: 656 660 semver-compare "^1.0.0" 657 661 658 - prettier@^2.1.2: 659 - version "2.1.2" 660 - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" 661 - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== 662 - 663 - pump@^3.0.0: 664 - version "3.0.0" 665 - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 666 - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 667 - dependencies: 668 - end-of-stream "^1.1.0" 669 - once "^1.3.1" 662 + prettier@^2.5.1: 663 + version "2.5.1" 664 + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" 665 + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== 670 666 671 667 resolve-from@^4.0.0: 672 668 version "4.0.0" 673 669 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 674 670 integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 675 671 676 - resolve@^1.17.0: 677 - version "1.18.1" 678 - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" 679 - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== 672 + resolve@^1.19.0: 673 + version "1.20.0" 674 + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 675 + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 680 676 dependencies: 681 - is-core-module "^2.0.0" 677 + is-core-module "^2.2.0" 682 678 path-parse "^1.0.6" 683 679 684 680 restore-cursor@^3.1.0: ··· 689 685 onetime "^5.1.0" 690 686 signal-exit "^3.0.2" 691 687 692 - rollup@^2.32.1: 693 - version "2.32.1" 694 - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.32.1.tgz#625a92c54f5b4d28ada12d618641491d4dbb548c" 695 - integrity sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw== 688 + rfdc@^1.3.0: 689 + version "1.3.0" 690 + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 691 + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 692 + 693 + rollup@^2.61.1: 694 + version "2.61.1" 695 + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.1.tgz#1a5491f84543cf9e4caf6c61222d9a3f8f2ba454" 696 + integrity sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA== 696 697 optionalDependencies: 697 - fsevents "~2.1.2" 698 + fsevents "~2.3.2" 698 699 699 - rxjs@^6.6.2: 700 - version "6.6.3" 701 - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" 702 - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== 700 + rxjs@^7.4.0: 701 + version "7.4.0" 702 + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" 703 + integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== 703 704 dependencies: 704 - tslib "^1.9.0" 705 + tslib "~2.1.0" 705 706 706 707 semver-compare@^1.0.0: 707 708 version "1.0.0" 708 709 resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 709 710 integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 710 711 711 - semver-regex@^2.0.0: 712 - version "2.0.0" 713 - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 714 - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 712 + semver-regex@^3.1.2: 713 + version "3.1.3" 714 + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.3.tgz#b2bcc6f97f63269f286994e297e229b6245d0dc3" 715 + integrity sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ== 715 716 716 717 shebang-command@^2.0.0: 717 718 version "2.0.0" ··· 725 726 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 726 727 integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 727 728 728 - signal-exit@^3.0.2: 729 - version "3.0.3" 730 - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 731 - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 729 + signal-exit@^3.0.2, signal-exit@^3.0.3: 730 + version "3.0.6" 731 + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" 732 + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== 732 733 733 734 slash@^3.0.0: 734 735 version "3.0.0" ··· 753 754 astral-regex "^2.0.0" 754 755 is-fullwidth-code-point "^3.0.0" 755 756 756 - string-argv@0.3.1: 757 + slice-ansi@^5.0.0: 758 + version "5.0.0" 759 + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 760 + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 761 + dependencies: 762 + ansi-styles "^6.0.0" 763 + is-fullwidth-code-point "^4.0.0" 764 + 765 + string-argv@^0.3.1: 757 766 version "0.3.1" 758 767 resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 759 768 integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== ··· 767 776 is-fullwidth-code-point "^3.0.0" 768 777 strip-ansi "^6.0.0" 769 778 770 - stringify-object@^3.3.0: 771 - version "3.3.0" 772 - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 773 - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 779 + string-width@^5.0.0: 780 + version "5.0.1" 781 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd" 782 + integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g== 774 783 dependencies: 775 - get-own-enumerable-property-symbols "^3.0.0" 776 - is-obj "^1.0.1" 777 - is-regexp "^1.0.0" 784 + emoji-regex "^9.2.2" 785 + is-fullwidth-code-point "^4.0.0" 786 + strip-ansi "^7.0.1" 778 787 779 788 strip-ansi@^6.0.0: 780 789 version "6.0.0" ··· 783 792 dependencies: 784 793 ansi-regex "^5.0.0" 785 794 795 + strip-ansi@^7.0.1: 796 + version "7.0.1" 797 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" 798 + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== 799 + dependencies: 800 + ansi-regex "^6.0.1" 801 + 786 802 strip-final-newline@^2.0.0: 787 803 version "2.0.0" 788 804 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" ··· 802 818 dependencies: 803 819 has-flag "^4.0.0" 804 820 821 + supports-color@^9.0.2: 822 + version "9.2.1" 823 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" 824 + integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== 825 + 805 826 through@^2.3.8: 806 827 version "2.3.8" 807 828 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" ··· 814 835 dependencies: 815 836 is-number "^7.0.0" 816 837 817 - tslib@^1.9.0: 818 - version "1.14.1" 819 - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 820 - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 838 + tslib@~2.1.0: 839 + version "2.1.0" 840 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" 841 + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== 821 842 822 843 type-fest@^0.11.0: 823 844 version "0.11.0" ··· 845 866 string-width "^4.1.0" 846 867 strip-ansi "^6.0.0" 847 868 848 - wrappy@1: 849 - version "1.0.2" 850 - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 851 - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 869 + wrap-ansi@^7.0.0: 870 + version "7.0.0" 871 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 872 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 873 + dependencies: 874 + ansi-styles "^4.0.0" 875 + string-width "^4.1.0" 876 + strip-ansi "^6.0.0" 877 + 878 + yaml@^1.10.0, yaml@^1.10.2: 879 + version "1.10.2" 880 + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 881 + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 852 882 853 - yaml@^1.10.0: 854 - version "1.10.0" 855 - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 856 - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 883 + yocto-queue@^0.1.0: 884 + version "0.1.0" 885 + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 886 + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==