├── src ├── GenerateRemoteMap.js ├── GenerateModuleMap.js ├── GenerateRemoteUrlMap.js ├── GenerateChunkMap.js └── AddRuntimeRequirementsToExternal.js ├── package.json ├── ExtendedModuleFederationPlugin.js ├── .gitignore ├── README.md └── yarn.lock /src/GenerateRemoteMap.js: -------------------------------------------------------------------------------- 1 | const GenerateRemoteMap = (options) => { 2 | if (options.remotes) { 3 | return { 4 | "./remoteMap": `data:application/json,${JSON.stringify( 5 | Object.keys(options.remotes) 6 | )}`, 7 | }; 8 | } else return {}; 9 | }; 10 | 11 | module.exports = GenerateRemoteMap; 12 | -------------------------------------------------------------------------------- /src/GenerateModuleMap.js: -------------------------------------------------------------------------------- 1 | const GenerateModuleMap = (options) => { 2 | const exposedKeys = Object.keys(options.exposes); 3 | if (exposedKeys.length) { 4 | return { 5 | "./moduleMap": `data:application/json,${JSON.stringify(exposedKeys)}`, 6 | }; 7 | } 8 | return {}; 9 | }; 10 | 11 | module.exports = GenerateModuleMap; 12 | -------------------------------------------------------------------------------- /src/GenerateRemoteUrlMap.js: -------------------------------------------------------------------------------- 1 | const GenerateRemoteUrlMap = (options) => { 2 | if (options.remotes) { 3 | return { 4 | "./remoteUrlMap": `data:application/json,${JSON.stringify( 5 | Object.keys(options.remotes).map((remoteName) => { 6 | return { [remoteName]: options.remotes[remoteName].split("@")[1] }; 7 | }) 8 | )}`, 9 | }; 10 | } else return {}; 11 | }; 12 | 13 | module.exports = GenerateRemoteUrlMap; 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@module-federation/ModuleFederationEnhacedPlugin", 3 | "version": "1.0.0", 4 | "main": "ModuleFederationEnhacedPlugin.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "prettier": "prettier --write \"**/*.{js,json,md,ts,tsx}\"" 8 | }, 9 | "peerDependencies": { 10 | "webpack": "^5.0.0-beta.16" 11 | }, 12 | "devDependencies": { 13 | "prettier": "^2.6.2", 14 | "webpack": "^5.72.1" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": ".../ModuleFederationEnhacedPlugin.git" 19 | }, 20 | "dependencies": { 21 | "find-package-json": "^1.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/GenerateChunkMap.js: -------------------------------------------------------------------------------- 1 | const GenerateChunkMap = (compiler) => { 2 | const { webpack } = compiler; 3 | const { RawSource } = webpack.sources; 4 | compiler.hooks.emit.tapAsync( 5 | "ExtendedModuleFederationPlugin", 6 | (compilation, callback) => { 7 | console.log("Creating chunkMap\n"); 8 | const chunkMap = Array.from(compilation.chunks) 9 | .map((chunk) => { 10 | return Array.from(chunk.files); 11 | }) 12 | .flat(); 13 | 14 | compilation.emitAsset( 15 | "./chunkMap.json", 16 | new RawSource(JSON.stringify(chunkMap)) 17 | ); 18 | 19 | callback(); 20 | } 21 | ); 22 | }; 23 | 24 | module.exports = { GenerateChunkMap }; 25 | -------------------------------------------------------------------------------- /src/AddRuntimeRequirementsToExternal.js: -------------------------------------------------------------------------------- 1 | class AddRuntimeRequiremetToPromiseExternal { 2 | apply(compiler) { 3 | compiler.hooks.compilation.tap( 4 | "AddRuntimeRequiremetToPromiseExternal", 5 | (compilation) => { 6 | const RuntimeGlobals = compiler.webpack.RuntimeGlobals; 7 | if (compilation.outputOptions.trustedTypes) { 8 | compilation.hooks.additionalModuleRuntimeRequirements.tap( 9 | "AddRuntimeRequiremetToPromiseExternal", 10 | (module, set, context) => { 11 | if (module.externalType === "promise") { 12 | set.add(RuntimeGlobals.loadScript); 13 | } 14 | } 15 | ); 16 | } 17 | } 18 | ); 19 | } 20 | } 21 | 22 | module.exports = AddRuntimeRequiremetToPromiseExternal -------------------------------------------------------------------------------- /ExtendedModuleFederationPlugin.js: -------------------------------------------------------------------------------- 1 | const ModuleFederationPlugin = 2 | require("webpack").container.ModuleFederationPlugin; 3 | 4 | const GenerateChunkMap = require("./src/GenerateChunkMap"); 5 | const GenerateModuleMap = require("./src/GenerateModuleMap"); 6 | const GenerateRemoteMap = require("./src/GenerateRemoteMap"); 7 | const GenerateRemoteUrlMap = require("./src/GenerateRemoteUrlMap"); 8 | const AddRuntimeRequirementsToExternal = require("./src/AddRuntimeRequirementsToExternal"); 9 | 10 | 11 | class ExtendedModuleFederationPlugin extends ModuleFederationPlugin { 12 | constructor(options) { 13 | if (!options.exposes) { 14 | options.exposes = {}; 15 | } 16 | 17 | options.exposes = { 18 | ...options.exposes, 19 | ...GenerateModuleMap(options), 20 | ...GenerateRemoteMap(options), 21 | ...GenerateRemoteUrlMap(options), 22 | }; 23 | 24 | super(options); 25 | this.options = options; 26 | } 27 | apply(compiler) { 28 | super.apply(compiler); 29 | GenerateChunkMap(compiler); 30 | new AddRuntimeRequirementsToExternal().apply(compiler) 31 | } 32 | } 33 | module.exports = ExtendedModuleFederationPlugin; 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RFC for Enhanced Federation Plugin API 2 | 3 | ## Idea 4 | 5 | Webpack Federation can do quite a lot, but orchestrating it can sometimes be a little messy or complex with its given api. The idea is to offer some additonal lifecycles directly on webpack interfaces to allow for pluggability and a more standardized ecosystem 6 | 7 | 8 | 9 | # Remotes 10 | 11 | ```js 12 | new ModuleFederationPlugin({ 13 | remotes: { 14 | app1: { 15 | middleware: [ 16 | (importValue)=> { 17 | return getEnvVars() // async promise that injects env vars into document before webpack attempts to connect remote 18 | }, 19 | (importValue) => { 20 | if(window.remoteOverrides['app1']) { 21 | // if an override exists, change the script that will be injected. 22 | return window.remoteOverrides['app1'] // --> otherRemote@http://otherUrl 23 | } else { 24 | return importValue // do nothing 25 | } 26 | } 27 | ], 28 | onBeforeGet: [ 29 | async (container)=>{ 30 | await container.get('./sentry-hub-register'); // load an exposed module before responding to the desired get request in the codebase 31 | }, 32 | async (container,request)=> { 33 | const allowed = await checkIfAllowed(); 34 | if(allowed) { 35 | return request // import("app1/admin") would have a request of "./admin" 36 | } else { 37 | return './not-authorized' 38 | } 39 | } 40 | ] 41 | import: 'app1@http', 42 | remoteType: "var" // standard webpack feature 43 | } 44 | } 45 | }); 46 | ``` 47 | 48 | ## Middleware 49 | `promise new Promise` is handy, but it would be great if one could compose a series of middlewares into the promise chain in a standard manner. 50 | This would be useful for 51 | - controling versions/overrides at runtime 52 | - injecting env variables before webpack connects the containers together 53 | - doing some series of actions during the initial import() for a remote that only happens once - prior to a remote being injected 54 | - additional security or auth gates without having to write wrapper code around your exposed modules. 55 | 56 | ## onBeforeGet 57 | The lifecycle of federation is as follows. 58 | 1) inject remote (happens once) 59 | 2) init() remote (happens once) 60 | 3) get() exposed module (happens for every import) 61 | 62 | 63 | After middleware has been run, and the remote container injected into the application, and has initialized. 64 | 65 | Sometimes i might want to do something before calling the underlaying get() of a container. perhaps re-route the module request, or set up distributed logging automatically before import() resolves and starts executing. 66 | 67 | onBeforeGet is basically middleware but for the module import itself instead of container injection 68 | 69 | 70 | ### Custom Maps 71 | 72 | #### Extended to remoteEntry: 73 | | Prop | Description | 74 | | --------- | --------------------------------------------------- | 75 | | moduleMap | list of all available modules from a single remote. | 76 | | remoteMap | list of all remotes available for consumption | 77 | | remoteUrlMap | list of all remotes URL to initilize | 78 | 79 | #### Usage 80 | 81 | ```js 82 | const ModuleFederationEnhacedPlugin = require("@module-federation/ModuleFederationEnhacedPlugin"); 83 | 84 | module.export = { 85 | //... rest of your config 86 | plugins: [ 87 | new ModuleFederationEnhacedPlugin({ 88 | name: "myApp", 89 | library: { type: "var", name: "app2" }, 90 | filename: "remoteEntry.js", 91 | remotes: { 92 | app1: "app1@myApp1.com/remoteEntry.js", 93 | app2: "app2@coolAppRunningOnCloud.com.br/remoteEntry.js", 94 | }, 95 | exposes: { 96 | Button: "./src/Button", 97 | Input: "./src/Input", 98 | /* Auto Generated: 99 | moduleMap: ['Button', 'Input'], 100 | remoteMap: ['app1', 'app2'], 101 | remoteUrlMap: [{app1: 'myApp1.com/remoteEntry.js' app2: 'coolAppRunningOnCLoude.com.br/remoteEntry.js'}] 102 | */ 103 | }, 104 | }), 105 | ], 106 | }; 107 | ``` 108 | 109 | At the component: 110 | 111 | ```js 112 | import moduleMap from "myApp/moduleMap"; 113 | import remoteMap from "myApp/remoteMap"; 114 | import remoteUrlMap from "myApp/remoteUrlMap"; 115 | ``` 116 | 117 | 118 | #### Chunk Map 119 | 120 | | Prop | Description | 121 | | --------- | --------------------------------------------------- | 122 | | chunkMap.json | list of all chunkNames and create a json file on dist folder. | 123 | # Got ideas? Open a issue 124 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/eslint-scope@^3.7.3": 6 | version "3.7.3" 7 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" 8 | integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== 9 | dependencies: 10 | "@types/eslint" "*" 11 | "@types/estree" "*" 12 | 13 | "@types/eslint@*": 14 | version "8.4.2" 15 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" 16 | integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== 17 | dependencies: 18 | "@types/estree" "*" 19 | "@types/json-schema" "*" 20 | 21 | "@types/estree@*", "@types/estree@^0.0.51": 22 | version "0.0.51" 23 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 24 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 25 | 26 | "@types/json-schema@*", "@types/json-schema@^7.0.8": 27 | version "7.0.11" 28 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 29 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 30 | 31 | "@types/node@*": 32 | version "17.0.34" 33 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" 34 | integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== 35 | 36 | "@webassemblyjs/ast@1.11.1": 37 | version "1.11.1" 38 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" 39 | integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== 40 | dependencies: 41 | "@webassemblyjs/helper-numbers" "1.11.1" 42 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 43 | 44 | "@webassemblyjs/floating-point-hex-parser@1.11.1": 45 | version "1.11.1" 46 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" 47 | integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== 48 | 49 | "@webassemblyjs/helper-api-error@1.11.1": 50 | version "1.11.1" 51 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" 52 | integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== 53 | 54 | "@webassemblyjs/helper-buffer@1.11.1": 55 | version "1.11.1" 56 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" 57 | integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== 58 | 59 | "@webassemblyjs/helper-numbers@1.11.1": 60 | version "1.11.1" 61 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" 62 | integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== 63 | dependencies: 64 | "@webassemblyjs/floating-point-hex-parser" "1.11.1" 65 | "@webassemblyjs/helper-api-error" "1.11.1" 66 | "@xtuc/long" "4.2.2" 67 | 68 | "@webassemblyjs/helper-wasm-bytecode@1.11.1": 69 | version "1.11.1" 70 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" 71 | integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== 72 | 73 | "@webassemblyjs/helper-wasm-section@1.11.1": 74 | version "1.11.1" 75 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" 76 | integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== 77 | dependencies: 78 | "@webassemblyjs/ast" "1.11.1" 79 | "@webassemblyjs/helper-buffer" "1.11.1" 80 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 81 | "@webassemblyjs/wasm-gen" "1.11.1" 82 | 83 | "@webassemblyjs/ieee754@1.11.1": 84 | version "1.11.1" 85 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" 86 | integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== 87 | dependencies: 88 | "@xtuc/ieee754" "^1.2.0" 89 | 90 | "@webassemblyjs/leb128@1.11.1": 91 | version "1.11.1" 92 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" 93 | integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== 94 | dependencies: 95 | "@xtuc/long" "4.2.2" 96 | 97 | "@webassemblyjs/utf8@1.11.1": 98 | version "1.11.1" 99 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" 100 | integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== 101 | 102 | "@webassemblyjs/wasm-edit@1.11.1": 103 | version "1.11.1" 104 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" 105 | integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== 106 | dependencies: 107 | "@webassemblyjs/ast" "1.11.1" 108 | "@webassemblyjs/helper-buffer" "1.11.1" 109 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 110 | "@webassemblyjs/helper-wasm-section" "1.11.1" 111 | "@webassemblyjs/wasm-gen" "1.11.1" 112 | "@webassemblyjs/wasm-opt" "1.11.1" 113 | "@webassemblyjs/wasm-parser" "1.11.1" 114 | "@webassemblyjs/wast-printer" "1.11.1" 115 | 116 | "@webassemblyjs/wasm-gen@1.11.1": 117 | version "1.11.1" 118 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" 119 | integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== 120 | dependencies: 121 | "@webassemblyjs/ast" "1.11.1" 122 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 123 | "@webassemblyjs/ieee754" "1.11.1" 124 | "@webassemblyjs/leb128" "1.11.1" 125 | "@webassemblyjs/utf8" "1.11.1" 126 | 127 | "@webassemblyjs/wasm-opt@1.11.1": 128 | version "1.11.1" 129 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" 130 | integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== 131 | dependencies: 132 | "@webassemblyjs/ast" "1.11.1" 133 | "@webassemblyjs/helper-buffer" "1.11.1" 134 | "@webassemblyjs/wasm-gen" "1.11.1" 135 | "@webassemblyjs/wasm-parser" "1.11.1" 136 | 137 | "@webassemblyjs/wasm-parser@1.11.1": 138 | version "1.11.1" 139 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" 140 | integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== 141 | dependencies: 142 | "@webassemblyjs/ast" "1.11.1" 143 | "@webassemblyjs/helper-api-error" "1.11.1" 144 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 145 | "@webassemblyjs/ieee754" "1.11.1" 146 | "@webassemblyjs/leb128" "1.11.1" 147 | "@webassemblyjs/utf8" "1.11.1" 148 | 149 | "@webassemblyjs/wast-printer@1.11.1": 150 | version "1.11.1" 151 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" 152 | integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== 153 | dependencies: 154 | "@webassemblyjs/ast" "1.11.1" 155 | "@xtuc/long" "4.2.2" 156 | 157 | "@xtuc/ieee754@^1.2.0": 158 | version "1.2.0" 159 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 160 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 161 | 162 | "@xtuc/long@4.2.2": 163 | version "4.2.2" 164 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 165 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 166 | 167 | acorn-import-assertions@^1.7.6: 168 | version "1.8.0" 169 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" 170 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== 171 | 172 | acorn@^8.4.1, acorn@^8.5.0: 173 | version "8.7.1" 174 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" 175 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== 176 | 177 | ajv-keywords@^3.5.2: 178 | version "3.5.2" 179 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 180 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 181 | 182 | ajv@^6.12.5: 183 | version "6.12.6" 184 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 185 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 186 | dependencies: 187 | fast-deep-equal "^3.1.1" 188 | fast-json-stable-stringify "^2.0.0" 189 | json-schema-traverse "^0.4.1" 190 | uri-js "^4.2.2" 191 | 192 | browserslist@^4.14.5: 193 | version "4.20.3" 194 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" 195 | integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== 196 | dependencies: 197 | caniuse-lite "^1.0.30001332" 198 | electron-to-chromium "^1.4.118" 199 | escalade "^3.1.1" 200 | node-releases "^2.0.3" 201 | picocolors "^1.0.0" 202 | 203 | buffer-from@^1.0.0: 204 | version "1.1.2" 205 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 206 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 207 | 208 | caniuse-lite@^1.0.30001332: 209 | version "1.0.30001341" 210 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz#59590c8ffa8b5939cf4161f00827b8873ad72498" 211 | integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== 212 | 213 | chrome-trace-event@^1.0.2: 214 | version "1.0.3" 215 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 216 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 217 | 218 | commander@^2.20.0: 219 | version "2.20.3" 220 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 221 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 222 | 223 | electron-to-chromium@^1.4.118: 224 | version "1.4.137" 225 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz#186180a45617283f1c012284458510cd99d6787f" 226 | integrity sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA== 227 | 228 | enhanced-resolve@^5.9.3: 229 | version "5.9.3" 230 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" 231 | integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== 232 | dependencies: 233 | graceful-fs "^4.2.4" 234 | tapable "^2.2.0" 235 | 236 | es-module-lexer@^0.9.0: 237 | version "0.9.3" 238 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" 239 | integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== 240 | 241 | escalade@^3.1.1: 242 | version "3.1.1" 243 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 244 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 245 | 246 | eslint-scope@5.1.1: 247 | version "5.1.1" 248 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 249 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 250 | dependencies: 251 | esrecurse "^4.3.0" 252 | estraverse "^4.1.1" 253 | 254 | esrecurse@^4.3.0: 255 | version "4.3.0" 256 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 257 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 258 | dependencies: 259 | estraverse "^5.2.0" 260 | 261 | estraverse@^4.1.1: 262 | version "4.3.0" 263 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 264 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 265 | 266 | estraverse@^5.2.0: 267 | version "5.3.0" 268 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 269 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 270 | 271 | events@^3.2.0: 272 | version "3.3.0" 273 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 274 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 275 | 276 | fast-deep-equal@^3.1.1: 277 | version "3.1.3" 278 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 279 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 280 | 281 | fast-json-stable-stringify@^2.0.0: 282 | version "2.1.0" 283 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 284 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 285 | 286 | find-package-json@^1.0.0: 287 | version "1.2.0" 288 | resolved "https://registry.yarnpkg.com/find-package-json/-/find-package-json-1.2.0.tgz#4057d1b943f82d8445fe52dc9cf456f6b8b58083" 289 | integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw== 290 | 291 | glob-to-regexp@^0.4.1: 292 | version "0.4.1" 293 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 294 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 295 | 296 | graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: 297 | version "4.2.10" 298 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 299 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 300 | 301 | has-flag@^4.0.0: 302 | version "4.0.0" 303 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 304 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 305 | 306 | jest-worker@^27.4.5: 307 | version "27.5.1" 308 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 309 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 310 | dependencies: 311 | "@types/node" "*" 312 | merge-stream "^2.0.0" 313 | supports-color "^8.0.0" 314 | 315 | json-parse-even-better-errors@^2.3.1: 316 | version "2.3.1" 317 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 318 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 319 | 320 | json-schema-traverse@^0.4.1: 321 | version "0.4.1" 322 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 323 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 324 | 325 | loader-runner@^4.2.0: 326 | version "4.3.0" 327 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 328 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 329 | 330 | lodash.sortby@^4.7.0: 331 | version "4.7.0" 332 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 333 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 334 | 335 | merge-stream@^2.0.0: 336 | version "2.0.0" 337 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 338 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 339 | 340 | mime-db@1.52.0: 341 | version "1.52.0" 342 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 343 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 344 | 345 | mime-types@^2.1.27: 346 | version "2.1.35" 347 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 348 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 349 | dependencies: 350 | mime-db "1.52.0" 351 | 352 | neo-async@^2.6.2: 353 | version "2.6.2" 354 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 355 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 356 | 357 | node-releases@^2.0.3: 358 | version "2.0.4" 359 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" 360 | integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== 361 | 362 | picocolors@^1.0.0: 363 | version "1.0.0" 364 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 365 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 366 | 367 | prettier@^2.6.2: 368 | version "2.6.2" 369 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" 370 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 371 | 372 | punycode@^2.1.0: 373 | version "2.1.1" 374 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 375 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 376 | 377 | randombytes@^2.1.0: 378 | version "2.1.0" 379 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 380 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 381 | dependencies: 382 | safe-buffer "^5.1.0" 383 | 384 | safe-buffer@^5.1.0: 385 | version "5.2.1" 386 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 387 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 388 | 389 | schema-utils@^3.1.0, schema-utils@^3.1.1: 390 | version "3.1.1" 391 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 392 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 393 | dependencies: 394 | "@types/json-schema" "^7.0.8" 395 | ajv "^6.12.5" 396 | ajv-keywords "^3.5.2" 397 | 398 | serialize-javascript@^6.0.0: 399 | version "6.0.0" 400 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 401 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 402 | dependencies: 403 | randombytes "^2.1.0" 404 | 405 | source-map-support@~0.5.20: 406 | version "0.5.21" 407 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 408 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 409 | dependencies: 410 | buffer-from "^1.0.0" 411 | source-map "^0.6.0" 412 | 413 | source-map@^0.6.0, source-map@^0.6.1: 414 | version "0.6.1" 415 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 416 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 417 | 418 | source-map@~0.8.0-beta.0: 419 | version "0.8.0-beta.0" 420 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" 421 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== 422 | dependencies: 423 | whatwg-url "^7.0.0" 424 | 425 | supports-color@^8.0.0: 426 | version "8.1.1" 427 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 428 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 429 | dependencies: 430 | has-flag "^4.0.0" 431 | 432 | tapable@^2.1.1, tapable@^2.2.0: 433 | version "2.2.1" 434 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 435 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 436 | 437 | terser-webpack-plugin@^5.1.3: 438 | version "5.3.1" 439 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" 440 | integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== 441 | dependencies: 442 | jest-worker "^27.4.5" 443 | schema-utils "^3.1.1" 444 | serialize-javascript "^6.0.0" 445 | source-map "^0.6.1" 446 | terser "^5.7.2" 447 | 448 | terser@^5.7.2: 449 | version "5.13.1" 450 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" 451 | integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== 452 | dependencies: 453 | acorn "^8.5.0" 454 | commander "^2.20.0" 455 | source-map "~0.8.0-beta.0" 456 | source-map-support "~0.5.20" 457 | 458 | tr46@^1.0.1: 459 | version "1.0.1" 460 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 461 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= 462 | dependencies: 463 | punycode "^2.1.0" 464 | 465 | uri-js@^4.2.2: 466 | version "4.4.1" 467 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 468 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 469 | dependencies: 470 | punycode "^2.1.0" 471 | 472 | watchpack@^2.3.1: 473 | version "2.3.1" 474 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" 475 | integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== 476 | dependencies: 477 | glob-to-regexp "^0.4.1" 478 | graceful-fs "^4.1.2" 479 | 480 | webidl-conversions@^4.0.2: 481 | version "4.0.2" 482 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 483 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== 484 | 485 | webpack-sources@^3.2.3: 486 | version "3.2.3" 487 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 488 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 489 | 490 | webpack@^5.72.1: 491 | version "5.72.1" 492 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.1.tgz#3500fc834b4e9ba573b9f430b2c0a61e1bb57d13" 493 | integrity sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung== 494 | dependencies: 495 | "@types/eslint-scope" "^3.7.3" 496 | "@types/estree" "^0.0.51" 497 | "@webassemblyjs/ast" "1.11.1" 498 | "@webassemblyjs/wasm-edit" "1.11.1" 499 | "@webassemblyjs/wasm-parser" "1.11.1" 500 | acorn "^8.4.1" 501 | acorn-import-assertions "^1.7.6" 502 | browserslist "^4.14.5" 503 | chrome-trace-event "^1.0.2" 504 | enhanced-resolve "^5.9.3" 505 | es-module-lexer "^0.9.0" 506 | eslint-scope "5.1.1" 507 | events "^3.2.0" 508 | glob-to-regexp "^0.4.1" 509 | graceful-fs "^4.2.9" 510 | json-parse-even-better-errors "^2.3.1" 511 | loader-runner "^4.2.0" 512 | mime-types "^2.1.27" 513 | neo-async "^2.6.2" 514 | schema-utils "^3.1.0" 515 | tapable "^2.1.1" 516 | terser-webpack-plugin "^5.1.3" 517 | watchpack "^2.3.1" 518 | webpack-sources "^3.2.3" 519 | 520 | whatwg-url@^7.0.0: 521 | version "7.1.0" 522 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" 523 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== 524 | dependencies: 525 | lodash.sortby "^4.7.0" 526 | tr46 "^1.0.1" 527 | webidl-conversions "^4.0.2" 528 | --------------------------------------------------------------------------------