├── .eslintrc.cjs ├── .gitignore ├── README.md ├── example-altv-resource ├── .vscode │ └── settings.json ├── README.md ├── build-client.js ├── build-server.js ├── client-src │ └── main.ts ├── package-lock.json ├── package.json ├── resource.cfg ├── server-src │ └── main.ts ├── tsconfig.json └── yarn.lock ├── jsconfig.json ├── package.json ├── src ├── alt-overwrite-banner.js ├── index.d.ts ├── index.js └── node-builtin-modules.js ├── types └── global.d.ts └── yarn.lock /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: 'babel-eslint', 3 | env: { 4 | es2021: true, 5 | }, 6 | extends: [ 7 | 'standard', 8 | ], 9 | rules: { 10 | semi: ['warn', 'never'], 11 | 'require-await': 'error', 12 | quotes: ['warn', 'single'], 13 | 'promise/param-names': 0, 14 | 'no-void': 0, 15 | 'no-prototype-builtins': 0, 16 | 'no-new': 0, 17 | 'valid-typeof': 0, 18 | 'no-use-before-define': ['error', { functions: false }], 19 | 'import/no-absolute-path': 0, 20 | 'comma-dangle': ['warn', { 21 | arrays: 'always-multiline', 22 | objects: 'always-multiline', 23 | imports: 'always-multiline', 24 | exports: 'always-multiline', 25 | functions: 'always-multiline', 26 | }], 27 | 'eol-last': 0, 28 | 'no-proto': 0, 29 | // error on the use of some functions 30 | 'no-restricted-syntax': [ 31 | 'error', 32 | // alt.log 33 | { 34 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(log)$/]', 35 | message: 'Use custom log', 36 | }, 37 | // console.log 38 | { 39 | selector: 'CallExpression[callee.object.name=\'console\'][callee.property.name=/^(log)$/]', 40 | message: 'Use custom log', 41 | }, 42 | // alt.on 43 | { 44 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(on)$/]', 45 | message: 'Use devOnAlt', 46 | }, 47 | // alt.once 48 | { 49 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(once)$/]', 50 | message: 'Use devOnAltce', 51 | }, 52 | // alt.onClient 53 | { 54 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(onClient)$/]', 55 | message: 'Use devOnAltClient', 56 | }, 57 | // alt.onceClient 58 | { 59 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(onceClient)$/]', 60 | message: 'Use devOnAltceClient', 61 | }, 62 | // alt.onServer 63 | { 64 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(onServer)$/]', 65 | message: 'Use devOnAltServer', 66 | }, 67 | // alt.onceServer 68 | { 69 | selector: 'CallExpression[callee.object.name=\'alt\'][callee.property.name=/^(onceServer)$/]', 70 | message: 'Use devOnAltceServer', 71 | }, 72 | ], 73 | 'no-eval': 0, 74 | }, 75 | globals: { 76 | ___ALTV_DEV_SERVER_HR_FS___: 'readonly', 77 | ___ALTV_DEV_SERVER_HR_BUNDLE_PATH___: 'readonly', 78 | ___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___: 'readonly', 79 | ___ALTV_DEV_SERVER_HR_CLIENT_PATH___: 'readonly', 80 | ___ALTV_DEV_SERVER_RES_COMMAND_NAME___: 'readonly', 81 | ___ALTV_DEV_SERVER_SERVER_END_BUNDLE_STRING___: 'readonly', 82 | }, 83 | ignorePatterns: [ 84 | '*.d.ts', 85 | 'example-altv-resource', 86 | ], 87 | } 88 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /example-altv-resource/*-dist.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ⛔️ DEPRECATED 2 | This plugin is now deprecated. Now there's a better version [altv-esbuild](https://github.com/xxshady/altv-esbuild) 3 | 4 | # esbuild-plugin-altv-dev-server 5 | 6 | [esbuild](https://esbuild.github.io/) plugin for extremely fast development using JS/TS on [alt:V](https://altv.mp) 7 | 8 | [![youtube](http://img.youtube.com/vi/pbezU0NRTLk/0.jpg)](http://www.youtube.com/watch?v=pbezU0NRTLk) 9 | 10 | This plugin allows you to see code changes immediately (hot reload) without reconnecting and restarting the server 11 | (to restart resource manually, you can use [alt:V resource server commands](https://docs.altv.mp/articles/commandlineargs.html#:~:text=start%20%5Bresourcename%5D,Restarts%20a%20server%20resource%20by%20name) 12 | 13 | ## Client-side caution 14 | 15 | Client-side is not currently fully supported at the moment, see issue #10 16 | 17 | If your client-side script uses some events or other stuff that relay connect/disconnect information to the client, such as `"connectionComplete"`, `"disconnect"`, then you have to emulate their behavior in the dev environment yourself or replace them, e.g. `"disconnect"` can be replaced with `"resourceStop"` 18 | 19 | ## Installation 20 | 21 | ### Download the plugin 22 | 23 | The plugin is available via npm: 24 | 25 | ``` 26 | yarn add -D esbuild-plugin-altv-dev-server 27 | ``` 28 | ``` 29 | npm i -D esbuild-plugin-altv-dev-server 30 | ``` 31 | 32 | ### Usage 33 | 34 | [Ready alt:V resource example](/example-altv-resource) 35 | 36 | ```js 37 | import altvDevServer from "esbuild-plugin-altv-dev-server" 38 | 39 | // change this depending on the build mode of the code 40 | const devMode = true 41 | 42 | esbuild.build({ 43 | entryPoints: ["src/main.js"], 44 | outfile: "dist/bundle.js", 45 | bundle: true, 46 | watch: devMode, 47 | plugins: devMode 48 | ? [altvDevServer({ 49 | // enables auto restart of your resource, 50 | // emulation of reconnect players to the server (reconnectPlayers option) 51 | // and resource startup error handling (handleStartupErrors option) 52 | hotReload: boolean, 53 | // you can also specify the path to the client, 54 | // so that the plugin can restart the resource when the client code changes 55 | // (see example usage in example resource) 56 | // hotReload: { clientPath?: string } 57 | 58 | // These options (reconnectPlayers, handleStartupErrors) are enabled automatically with hotReload 59 | // and can be omitted: 60 | 61 | // enables auto emulation of players reconnect to the server 62 | // with some delay after resource start (default 200ms) 63 | // (for e.g. you need to wait until your database is loaded or any other async stuff) 64 | // default = hotReload (as boolean) 65 | reconnectPlayers: boolean | { delay?: number }, 66 | 67 | // Handles exceptions during the resource startup "[Error] Failed to load resource " 68 | // sub-option "moveExternalsOnTop" true by default 69 | // default = hotReload (as boolean) 70 | handleStartupErrors: boolean | { moveExternalsOnTop?: boolean } 71 | })] 72 | : [], 73 | }) 74 | ``` 75 | 76 | ### How it works? 77 | Internally all the created serverside alt:V entities (baseobjects) and other data of server players are automatically deleted 78 | on "resourceStop" event of your script resource. 79 | Client scripts are automatically re-downloaded and reloaded when using [server restart command](https://docs.altv.mp/articles/commandlineargs.html#server-commands) 80 | 81 | The "dev" in the name means that this plugin is intended only for developing a server script. 82 | -------------------------------------------------------------------------------- /example-altv-resource/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.enable": false 3 | } -------------------------------------------------------------------------------- /example-altv-resource/README.md: -------------------------------------------------------------------------------- 1 | # How to test this resource 2 | 3 | * copy "example-altv-resource" folder into your server resources folder 4 | * run `npm i` in "example-altv-resource" folder 5 | * run `npm start` in "example-altv-resource" folder 6 | * add resource "example-altv-resource" into your server.cfg 7 | * start altv server 8 | * change something in server-src or client-src and save 9 | * now you can see how the resource restarted and the player reconnected 10 | -------------------------------------------------------------------------------- /example-altv-resource/build-client.js: -------------------------------------------------------------------------------- 1 | import { build } from 'esbuild' 2 | 3 | build({ 4 | watch: true, 5 | bundle: true, 6 | target: 'esnext', 7 | logLevel: 'info', 8 | format: 'esm', 9 | entryPoints: ['./client-src/main.ts'], 10 | outfile: './client-dist.js', 11 | external: [ 12 | 'alt-*', 13 | 'natives', 14 | ] 15 | }) -------------------------------------------------------------------------------- /example-altv-resource/build-server.js: -------------------------------------------------------------------------------- 1 | import { build } from 'esbuild' 2 | import altvServerDev from 'esbuild-plugin-altv-dev-server' 3 | 4 | build({ 5 | watch: true, 6 | bundle: true, 7 | target: 'esnext', 8 | logLevel: 'info', 9 | format: 'esm', 10 | entryPoints: ['./server-src/main.ts'], 11 | outfile: './server-dist.js', 12 | plugins: [ 13 | altvServerDev({ 14 | hotReload: { 15 | clientPath: './client-dist.js' 16 | }, 17 | }), 18 | ], 19 | }) 20 | -------------------------------------------------------------------------------- /example-altv-resource/client-src/main.ts: -------------------------------------------------------------------------------- 1 | import * as alt from "alt-client" 2 | import * as native from "natives" 3 | 4 | native.setClockTime(15, 0, 0) -------------------------------------------------------------------------------- /example-altv-resource/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esbuild-any-named-export", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@altv/types-server": { 8 | "version": "2.0.6", 9 | "resolved": "https://registry.npmjs.org/@altv/types-server/-/types-server-2.0.6.tgz", 10 | "integrity": "sha512-RI5hS8tdSaYfJn1WblJEMt/JJAnth96GfFYLpZ9xsC6uEuGVdyLeslp5x6Z9H+oaehq5OE6gLTwJljZ5mHOJEw==", 11 | "dev": true 12 | }, 13 | "@altv/types-shared": { 14 | "version": "1.0.7", 15 | "resolved": "https://registry.npmjs.org/@altv/types-shared/-/types-shared-1.0.7.tgz", 16 | "integrity": "sha512-BMm3YauNxTo3wtwvnWPT2i5BvK2DOiEiTPge6Sxe5CJ4nhBq+kZfP+oStC5jArDy18h3z41eniAGLO/g7tKx1w==", 17 | "dev": true 18 | }, 19 | "esbuild": { 20 | "version": "0.13.8", 21 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz", 22 | "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==", 23 | "requires": { 24 | "esbuild-android-arm64": "0.13.8", 25 | "esbuild-darwin-64": "0.13.8", 26 | "esbuild-darwin-arm64": "0.13.8", 27 | "esbuild-freebsd-64": "0.13.8", 28 | "esbuild-freebsd-arm64": "0.13.8", 29 | "esbuild-linux-32": "0.13.8", 30 | "esbuild-linux-64": "0.13.8", 31 | "esbuild-linux-arm": "0.13.8", 32 | "esbuild-linux-arm64": "0.13.8", 33 | "esbuild-linux-mips64le": "0.13.8", 34 | "esbuild-linux-ppc64le": "0.13.8", 35 | "esbuild-netbsd-64": "0.13.8", 36 | "esbuild-openbsd-64": "0.13.8", 37 | "esbuild-sunos-64": "0.13.8", 38 | "esbuild-windows-32": "0.13.8", 39 | "esbuild-windows-64": "0.13.8", 40 | "esbuild-windows-arm64": "0.13.8" 41 | } 42 | }, 43 | "esbuild-android-arm64": { 44 | "version": "0.13.8", 45 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz", 46 | "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==", 47 | "optional": true 48 | }, 49 | "esbuild-darwin-64": { 50 | "version": "0.13.8", 51 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz", 52 | "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==", 53 | "optional": true 54 | }, 55 | "esbuild-darwin-arm64": { 56 | "version": "0.13.8", 57 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz", 58 | "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==", 59 | "optional": true 60 | }, 61 | "esbuild-freebsd-64": { 62 | "version": "0.13.8", 63 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz", 64 | "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==", 65 | "optional": true 66 | }, 67 | "esbuild-freebsd-arm64": { 68 | "version": "0.13.8", 69 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz", 70 | "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==", 71 | "optional": true 72 | }, 73 | "esbuild-linux-32": { 74 | "version": "0.13.8", 75 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz", 76 | "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==", 77 | "optional": true 78 | }, 79 | "esbuild-linux-64": { 80 | "version": "0.13.8", 81 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz", 82 | "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==", 83 | "optional": true 84 | }, 85 | "esbuild-linux-arm": { 86 | "version": "0.13.8", 87 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz", 88 | "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==", 89 | "optional": true 90 | }, 91 | "esbuild-linux-arm64": { 92 | "version": "0.13.8", 93 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz", 94 | "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==", 95 | "optional": true 96 | }, 97 | "esbuild-linux-mips64le": { 98 | "version": "0.13.8", 99 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz", 100 | "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==", 101 | "optional": true 102 | }, 103 | "esbuild-linux-ppc64le": { 104 | "version": "0.13.8", 105 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz", 106 | "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==", 107 | "optional": true 108 | }, 109 | "esbuild-netbsd-64": { 110 | "version": "0.13.8", 111 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz", 112 | "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==", 113 | "optional": true 114 | }, 115 | "esbuild-openbsd-64": { 116 | "version": "0.13.8", 117 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz", 118 | "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==", 119 | "optional": true 120 | }, 121 | "esbuild-plugin-altv-dev-server": { 122 | "version": "1.1.0", 123 | "resolved": "https://registry.npmjs.org/esbuild-plugin-altv-dev-server/-/esbuild-plugin-altv-dev-server-1.1.0.tgz", 124 | "integrity": "sha512-9dLgQ0ojNjXPUd4OGQExjst4qi/W0zpevKhlisfJ1fGvG+yMJGRe1TFz6w1w6RZSyKVPnDTZ71oHIRFqwy9Lqg==" 125 | }, 126 | "esbuild-sunos-64": { 127 | "version": "0.13.8", 128 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz", 129 | "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==", 130 | "optional": true 131 | }, 132 | "esbuild-windows-32": { 133 | "version": "0.13.8", 134 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz", 135 | "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==", 136 | "optional": true 137 | }, 138 | "esbuild-windows-64": { 139 | "version": "0.13.8", 140 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz", 141 | "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==", 142 | "optional": true 143 | }, 144 | "esbuild-windows-arm64": { 145 | "version": "0.13.8", 146 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz", 147 | "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==", 148 | "optional": true 149 | } 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /example-altv-resource/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esbuild-any-named-export", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start-server": "node --es-module-specifier-resolution=node build-server.js", 8 | "start-client": "node --es-module-specifier-resolution=node build-client.js", 9 | "start": "concurrently npm:start-*" 10 | }, 11 | "dependencies": { 12 | "@altv/types-client": "^2.0.0", 13 | "@altv/types-natives": "^1.4.4", 14 | "@altv/types-server": "^2.1.8", 15 | "@altv/types-shared": "^1.1.2", 16 | "concurrently": "^7.0.0", 17 | "esbuild": "^0.13.8", 18 | "esbuild-plugin-altv-dev-server": "^1.1.0" 19 | }, 20 | "type": "module" 21 | } 22 | -------------------------------------------------------------------------------- /example-altv-resource/resource.cfg: -------------------------------------------------------------------------------- 1 | type: js 2 | main: server-dist.js 3 | client-main: client-dist.js -------------------------------------------------------------------------------- /example-altv-resource/server-src/main.ts: -------------------------------------------------------------------------------- 1 | import * as alt from 'alt-server' 2 | 3 | alt.on('playerConnect', (player) => { 4 | alt.log('~gl~[playerConnect]~w~', 'player:~cl~', player.name) 5 | alt.log('player streamSyncedMeta:', player.getStreamSyncedMeta('test')) 6 | 7 | player.pos = new alt.Vector3(0, 0, 72) 8 | player.model = 'mp_m_freemode_01' 9 | 10 | // any player's meta will be internally cleared on restart of this resource 11 | // in order to emulate a player's reconnect 12 | player.setStreamSyncedMeta('test', 123) 13 | 14 | alt.setTimeout(() => { 15 | // this vehicle will be automatically destroyed on restart of this resource 16 | const veh = new alt.Vehicle('sultan2', 0, 5, 71, 0, 0, 0) 17 | player.setIntoVehicle(veh, 1) 18 | }, 1000) 19 | }) -------------------------------------------------------------------------------- /example-altv-resource/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "ESNext", 4 | "target": "ESNext", 5 | "removeComments": true, 6 | "strict": true, 7 | "moduleResolution": "node", 8 | "resolveJsonModule": true, 9 | "experimentalDecorators": true, 10 | "allowSyntheticDefaultImports": true, 11 | "isolatedModules": true, 12 | "declaration": false, 13 | "forceConsistentCasingInFileNames": true, 14 | "noImplicitReturns": true, 15 | "typeRoots": ["./node_modules/@altv"], 16 | }, 17 | "include": [ 18 | "./server-src/**/*", 19 | "./client-src/**/*" 20 | ], 21 | } -------------------------------------------------------------------------------- /example-altv-resource/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@altv/types-client@^2.0.0": 6 | version "2.0.0" 7 | resolved "https://registry.yarnpkg.com/@altv/types-client/-/types-client-2.0.0.tgz#4c127afe2660c582b390e8c7ada306182070af24" 8 | integrity sha512-Ev+hYKAqWhExlA+OFAIuO9UYZv+lrcpZugSprXeLpq8mL09zYZkCoB7BpFkbuycGQ8N3qwLMR5E1rxRoo+tO3w== 9 | 10 | "@altv/types-natives@^1.4.4": 11 | version "1.4.4" 12 | resolved "https://registry.yarnpkg.com/@altv/types-natives/-/types-natives-1.4.4.tgz#d71aaf45eb5b1060dd6993ef010bdc1734294a73" 13 | integrity sha512-qcIPhpRAhGnErtf3p1iVGL6CIUJWc1IdYJl6K9T5c7W8Nd9RM2cv4JIyQg3TTXLiu+1gAZlkD8KyYKIfs5BqnQ== 14 | 15 | "@altv/types-server@^2.1.8": 16 | version "2.1.8" 17 | resolved "https://registry.yarnpkg.com/@altv/types-server/-/types-server-2.1.8.tgz#d58127834f4e0c2c9fea26fdcd5a4a1be24bbb47" 18 | integrity sha512-nvST2rMR1vmXrrzKbCGPhSGp61wczkZRTgheph9ZWgIR6aeeUu8l2q8VU1rFCln4n6ksN/XjzlJkfYKtVrxHCQ== 19 | 20 | "@altv/types-shared@^1.1.2": 21 | version "1.1.2" 22 | resolved "https://registry.yarnpkg.com/@altv/types-shared/-/types-shared-1.1.2.tgz#3619ed39ce46c49364f01486cf39efe46961792d" 23 | integrity sha512-jsSDRlIW+hsIMco1NkAUCUtf2oW83MfcA0Hhf0jkJjkx9ehl8n+YRGVRi4Mcejpt35BmAkTvgn1AvvAMk66miw== 24 | 25 | ansi-regex@^5.0.1: 26 | version "5.0.1" 27 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 28 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 29 | 30 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 31 | version "4.3.0" 32 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 33 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 34 | dependencies: 35 | color-convert "^2.0.1" 36 | 37 | chalk@^4.1.0: 38 | version "4.1.2" 39 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 40 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 41 | dependencies: 42 | ansi-styles "^4.1.0" 43 | supports-color "^7.1.0" 44 | 45 | cliui@^7.0.2: 46 | version "7.0.4" 47 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 48 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 49 | dependencies: 50 | string-width "^4.2.0" 51 | strip-ansi "^6.0.0" 52 | wrap-ansi "^7.0.0" 53 | 54 | color-convert@^2.0.1: 55 | version "2.0.1" 56 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 57 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 58 | dependencies: 59 | color-name "~1.1.4" 60 | 61 | color-name@~1.1.4: 62 | version "1.1.4" 63 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 64 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 65 | 66 | concurrently@^7.0.0: 67 | version "7.0.0" 68 | resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.0.0.tgz#78d31b441cec338dab03316c221a2f9a67c529b0" 69 | integrity sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw== 70 | dependencies: 71 | chalk "^4.1.0" 72 | date-fns "^2.16.1" 73 | lodash "^4.17.21" 74 | rxjs "^6.6.3" 75 | spawn-command "^0.0.2-1" 76 | supports-color "^8.1.0" 77 | tree-kill "^1.2.2" 78 | yargs "^16.2.0" 79 | 80 | date-fns@^2.16.1: 81 | version "2.28.0" 82 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" 83 | integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== 84 | 85 | emoji-regex@^8.0.0: 86 | version "8.0.0" 87 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 88 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 89 | 90 | esbuild-android-arm64@0.13.8: 91 | version "0.13.8" 92 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz#c20e875c3c98164b1ffba9b28637bdf96f5e9e7c" 93 | integrity sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA== 94 | 95 | esbuild-darwin-64@0.13.8: 96 | version "0.13.8" 97 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz#f46e6b471ddbf62265234808a6a1aa91df18a417" 98 | integrity sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng== 99 | 100 | esbuild-darwin-arm64@0.13.8: 101 | version "0.13.8" 102 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz#a991157a6013facd4f2e14159b7da52626c90154" 103 | integrity sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ== 104 | 105 | esbuild-freebsd-64@0.13.8: 106 | version "0.13.8" 107 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz#301601d2e443ad458960e359b402a17d9500be9d" 108 | integrity sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw== 109 | 110 | esbuild-freebsd-arm64@0.13.8: 111 | version "0.13.8" 112 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz#039a63acc12ec0892006c147ea221e55f9125a9f" 113 | integrity sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng== 114 | 115 | esbuild-linux-32@0.13.8: 116 | version "0.13.8" 117 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz#c537b67d7e694b60bfa2786581412838c6ba0284" 118 | integrity sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw== 119 | 120 | esbuild-linux-64@0.13.8: 121 | version "0.13.8" 122 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz#0092fc8a064001a777bfa0e3b425bb8be8f96e6a" 123 | integrity sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w== 124 | 125 | esbuild-linux-arm64@0.13.8: 126 | version "0.13.8" 127 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz#5cd3f2bb924212971482e8dbc25c4afd09b28110" 128 | integrity sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ== 129 | 130 | esbuild-linux-arm@0.13.8: 131 | version "0.13.8" 132 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz#ad634f96bf2975536907aeb9fdb75a3194f4ddce" 133 | integrity sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg== 134 | 135 | esbuild-linux-mips64le@0.13.8: 136 | version "0.13.8" 137 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz#57857edfebf9bf65766dc8be1637f2179c990572" 138 | integrity sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA== 139 | 140 | esbuild-linux-ppc64le@0.13.8: 141 | version "0.13.8" 142 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz#fdb82a059a5b86bb10fb42091b4ebcf488b9cd46" 143 | integrity sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig== 144 | 145 | esbuild-netbsd-64@0.13.8: 146 | version "0.13.8" 147 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz#d7879e7123d3b2c04754ece8bd061aa6866deeff" 148 | integrity sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q== 149 | 150 | esbuild-openbsd-64@0.13.8: 151 | version "0.13.8" 152 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz#88b280b6cb0a3f6adb60abf27fc506c506a35cf0" 153 | integrity sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw== 154 | 155 | esbuild-plugin-altv-dev-server@^1.1.0: 156 | version "1.1.0" 157 | resolved "https://registry.yarnpkg.com/esbuild-plugin-altv-dev-server/-/esbuild-plugin-altv-dev-server-1.1.0.tgz#ec808026a3ce82aef33699ac49638c3601b72798" 158 | integrity sha512-9dLgQ0ojNjXPUd4OGQExjst4qi/W0zpevKhlisfJ1fGvG+yMJGRe1TFz6w1w6RZSyKVPnDTZ71oHIRFqwy9Lqg== 159 | 160 | esbuild-sunos-64@0.13.8: 161 | version "0.13.8" 162 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz#229ae7c7703196a58acd0f0291ad9bebda815d63" 163 | integrity sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw== 164 | 165 | esbuild-windows-32@0.13.8: 166 | version "0.13.8" 167 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz#892d093e32a21c0c9135e5a0ffdc380aeb70e763" 168 | integrity sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A== 169 | 170 | esbuild-windows-64@0.13.8: 171 | version "0.13.8" 172 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz#7defd8d79ae3bb7e6f53b65a7190be7daf901686" 173 | integrity sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg== 174 | 175 | esbuild-windows-arm64@0.13.8: 176 | version "0.13.8" 177 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz#e59ae004496fd8a5ab67bfc7945a2e47480d6fb9" 178 | integrity sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg== 179 | 180 | esbuild@^0.13.8: 181 | version "0.13.8" 182 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.8.tgz#bd7cc51b881ab067789f88e17baca74724c1ec4f" 183 | integrity sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw== 184 | optionalDependencies: 185 | esbuild-android-arm64 "0.13.8" 186 | esbuild-darwin-64 "0.13.8" 187 | esbuild-darwin-arm64 "0.13.8" 188 | esbuild-freebsd-64 "0.13.8" 189 | esbuild-freebsd-arm64 "0.13.8" 190 | esbuild-linux-32 "0.13.8" 191 | esbuild-linux-64 "0.13.8" 192 | esbuild-linux-arm "0.13.8" 193 | esbuild-linux-arm64 "0.13.8" 194 | esbuild-linux-mips64le "0.13.8" 195 | esbuild-linux-ppc64le "0.13.8" 196 | esbuild-netbsd-64 "0.13.8" 197 | esbuild-openbsd-64 "0.13.8" 198 | esbuild-sunos-64 "0.13.8" 199 | esbuild-windows-32 "0.13.8" 200 | esbuild-windows-64 "0.13.8" 201 | esbuild-windows-arm64 "0.13.8" 202 | 203 | escalade@^3.1.1: 204 | version "3.1.1" 205 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 206 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 207 | 208 | get-caller-file@^2.0.5: 209 | version "2.0.5" 210 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 211 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 212 | 213 | has-flag@^4.0.0: 214 | version "4.0.0" 215 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 216 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 217 | 218 | is-fullwidth-code-point@^3.0.0: 219 | version "3.0.0" 220 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 221 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 222 | 223 | lodash@^4.17.21: 224 | version "4.17.21" 225 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 226 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 227 | 228 | require-directory@^2.1.1: 229 | version "2.1.1" 230 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 231 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 232 | 233 | rxjs@^6.6.3: 234 | version "6.6.7" 235 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 236 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 237 | dependencies: 238 | tslib "^1.9.0" 239 | 240 | spawn-command@^0.0.2-1: 241 | version "0.0.2-1" 242 | resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" 243 | integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= 244 | 245 | string-width@^4.1.0, string-width@^4.2.0: 246 | version "4.2.3" 247 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 248 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 249 | dependencies: 250 | emoji-regex "^8.0.0" 251 | is-fullwidth-code-point "^3.0.0" 252 | strip-ansi "^6.0.1" 253 | 254 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 255 | version "6.0.1" 256 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 257 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 258 | dependencies: 259 | ansi-regex "^5.0.1" 260 | 261 | supports-color@^7.1.0: 262 | version "7.2.0" 263 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 264 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 265 | dependencies: 266 | has-flag "^4.0.0" 267 | 268 | supports-color@^8.1.0: 269 | version "8.1.1" 270 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 271 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 272 | dependencies: 273 | has-flag "^4.0.0" 274 | 275 | tree-kill@^1.2.2: 276 | version "1.2.2" 277 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 278 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 279 | 280 | tslib@^1.9.0: 281 | version "1.14.1" 282 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 283 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 284 | 285 | wrap-ansi@^7.0.0: 286 | version "7.0.0" 287 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 288 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 289 | dependencies: 290 | ansi-styles "^4.0.0" 291 | string-width "^4.1.0" 292 | strip-ansi "^6.0.0" 293 | 294 | y18n@^5.0.5: 295 | version "5.0.8" 296 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 297 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 298 | 299 | yargs-parser@^20.2.2: 300 | version "20.2.9" 301 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 302 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 303 | 304 | yargs@^16.2.0: 305 | version "16.2.0" 306 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 307 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 308 | dependencies: 309 | cliui "^7.0.2" 310 | escalade "^3.1.1" 311 | get-caller-file "^2.0.5" 312 | require-directory "^2.1.1" 313 | string-width "^4.2.0" 314 | y18n "^5.0.5" 315 | yargs-parser "^20.2.2" 316 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "typeRoots": ["./node_modules/@altv"] 4 | } 5 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esbuild-plugin-altv-dev-server", 3 | "version": "2.1.4", 4 | "main": "src/index.js", 5 | "files": [ 6 | "src/**/*" 7 | ], 8 | "license": "MIT", 9 | "peerDependencies": { 10 | "esbuild": "0.x" 11 | }, 12 | "devDependencies": { 13 | "@altv/types-server": "^2.2.8", 14 | "@altv/types-shared": "^1.2.1", 15 | "babel-eslint": "^10.1.0", 16 | "esbuild": "^0.13.8", 17 | "eslint": "^7.22.0", 18 | "eslint-config-standard": "^16.0.2", 19 | "eslint-plugin-import": "^2.22.1", 20 | "eslint-plugin-node": "^11.1.0", 21 | "eslint-plugin-promise": "^4.2.1" 22 | }, 23 | "type": "module" 24 | } 25 | -------------------------------------------------------------------------------- /src/alt-overwrite-banner.js: -------------------------------------------------------------------------------- 1 | import alt from 'alt-server' 2 | 3 | (() => { 4 | const { 5 | BaseObject, 6 | Player, 7 | resourceName, 8 | defaultDimension, 9 | setMeta: setAltMeta, 10 | getMeta: getAltMeta, 11 | on: onAlt, 12 | once: onceAlt, 13 | onClient: onAltClient, 14 | onceClient: onceAltClient, 15 | off: offAlt, 16 | offClient: offAltClient, 17 | } = alt 18 | const fs = ___ALTV_DEV_SERVER_HR_FS___ 19 | const defaultJSFuncProps = { 20 | length: true, 21 | name: true, 22 | arguments: true, 23 | caller: true, 24 | prototype: true, 25 | } 26 | const pluginLogPrefix = '[esbuild-altv-dev]' 27 | const pluginMetaPrefix = '___ALTV_DEV_SERVER' 28 | const serverBundleValidEndComment = 29 | typeof ___ALTV_DEV_SERVER_SERVER_END_BUNDLE_STRING___ !== 'undefined' 30 | ? ___ALTV_DEV_SERVER_SERVER_END_BUNDLE_STRING___ 31 | : null 32 | const resourceRestartedKey = `${pluginMetaPrefix}_${resourceName}_RESTARTED___` 33 | const isItFirstResoureStart = !getAltMeta(resourceRestartedKey) 34 | 35 | const baseObjects = new Set() 36 | const clearPlayersMeta = overwritePlayerMetaMethods(Player) 37 | const clearAltMeta = overwriteAltMetaMethods() 38 | 39 | for (const key in alt) { 40 | const BaseObjectClass = alt[key] 41 | if ( 42 | !(BaseObjectClass.prototype instanceof BaseObject) || 43 | // Player class is bugged, see function initPlayerPrototypeTempFix 44 | BaseObjectClass === Player 45 | ) continue 46 | 47 | let isClassAbstract = false 48 | try { 49 | new BaseObjectClass() 50 | // this shit works by altv js module bug 51 | isClassAbstract = true 52 | } catch (e) { 53 | if (e?.message?.includes('abstract')) isClassAbstract = true 54 | } 55 | if (isClassAbstract) continue 56 | 57 | alt[key] = wrapBaseObjectChildClass(BaseObjectClass) 58 | } 59 | 60 | devOnAlt('resourceStop', onResourceStop) 61 | 62 | let despawnPlayers = () => {} 63 | 64 | initPlayerPrototypeTempFix() 65 | 66 | if (typeof fs !== 'undefined') initHotReload() 67 | if (typeof ___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___ !== 'undefined') { 68 | despawnPlayers = initReconnectPlayers() 69 | } 70 | if (typeof ___ALTV_DEV_SERVER_RES_COMMAND_NAME___ !== 'undefined') { 71 | initResCommand(___ALTV_DEV_SERVER_RES_COMMAND_NAME___) 72 | } 73 | 74 | overwriteAltEventMethods() 75 | 76 | // TODO delete meta handling for better clearing in resource stop 77 | /** 78 | * 79 | * @param {typeof alt.Player} Player 80 | */ 81 | function overwritePlayerMetaMethods (Player) { 82 | const proto = Player.prototype 83 | 84 | const metaStoreKey = Symbol('metaStoreKey') 85 | const syncedMetaStoreKey = Symbol('syncedMetaStoreKey') 86 | const streamSyncedMetaStoreKey = Symbol('streamSyncedMetaStoreKey') 87 | const localMetaStoreKey = Symbol('localMetaStoreKey') 88 | 89 | const originalSetMeta = Symbol('originalSetMeta') 90 | const originalSetSyncedMeta = Symbol('originalSetSyncedMeta') 91 | const originalSetStreamSyncedMeta = Symbol('originalSetStreamSyncedMeta') 92 | const originalSetLocalMeta = Symbol('originalSetLocalMeta') 93 | 94 | proto[originalSetMeta] = proto.setMeta 95 | proto[originalSetSyncedMeta] = proto.setSyncedMeta 96 | proto[originalSetStreamSyncedMeta] = proto.setStreamSyncedMeta 97 | proto[originalSetLocalMeta] = proto.setLocalMeta 98 | 99 | const defineMetaSetter = (originalMethodKey, storeKey) => 100 | function (key, value) { 101 | this[originalMethodKey](key, value) 102 | 103 | this[storeKey] = this[storeKey] || {} 104 | this[storeKey][key] = value 105 | } 106 | 107 | proto.setMeta = defineMetaSetter(originalSetMeta, metaStoreKey) 108 | proto.setSyncedMeta = defineMetaSetter(originalSetSyncedMeta, syncedMetaStoreKey) 109 | proto.setStreamSyncedMeta = defineMetaSetter(originalSetStreamSyncedMeta, streamSyncedMetaStoreKey) 110 | proto.setLocalMeta = defineMetaSetter(originalSetLocalMeta, localMetaStoreKey) 111 | 112 | return () => { 113 | const players = alt.Player.all 114 | 115 | for (let i = 0; i < players.length; i++) { 116 | const player = players[i] 117 | if (!player.valid) continue // idk how is that possible here 118 | 119 | for (const key in player[metaStoreKey]) { 120 | player.deleteMeta(key) 121 | } 122 | 123 | for (const key in player[syncedMetaStoreKey]) { 124 | player.deleteSyncedMeta(key) 125 | } 126 | 127 | for (const key in player[streamSyncedMetaStoreKey]) { 128 | player.deleteStreamSyncedMeta(key) 129 | } 130 | 131 | for (const key in player[localMetaStoreKey]) { 132 | player.deleteLocalMeta(key) 133 | } 134 | } 135 | } 136 | } 137 | 138 | function wrapBaseObjectChildClass (BaseObjectChild) { 139 | const proto = BaseObjectChild.prototype 140 | const originalDestroy = Symbol('originalDestroy') 141 | 142 | proto[originalDestroy] = proto.destroy 143 | 144 | proto.destroy = function () { 145 | try { 146 | baseObjects.delete(this) 147 | this[originalDestroy]() 148 | } catch (error) { 149 | logError(`failed to destroy alt.${BaseObjectChild.name} error:`) 150 | throw error 151 | } 152 | } 153 | 154 | const WrappedBaseObjectChild = function (...args) { 155 | try { 156 | const baseObject = new BaseObjectChild(...args) 157 | 158 | baseObjects.add(baseObject) 159 | // fix prototype in inherited from altv classes 160 | baseObject.__proto__ = this.__proto__ 161 | 162 | return baseObject 163 | } catch (error) { 164 | logError(`failed to create alt.${BaseObjectChild.name} error:`) 165 | throw error 166 | } 167 | } 168 | 169 | WrappedBaseObjectChild.prototype = BaseObjectChild.prototype 170 | Object.defineProperty(WrappedBaseObjectChild, 'name', { 171 | value: BaseObjectChild.name, 172 | }) 173 | 174 | try { 175 | const originalKeys = Object.keys(BaseObjectChild) 176 | 177 | // wrap all static stuff from original altv class 178 | for (const key of originalKeys) { 179 | if (defaultJSFuncProps[key]) continue 180 | 181 | try { 182 | const { value, set } = Object.getOwnPropertyDescriptor(BaseObjectChild, key) 183 | 184 | // static method 185 | if (typeof value === 'function') { 186 | WrappedBaseObjectChild[key] = BaseObjectChild[key] 187 | // static getter/setter 188 | } else { 189 | Object.defineProperty(WrappedBaseObjectChild, key, { 190 | get: () => BaseObjectChild[key], 191 | set: set?.bind(BaseObjectChild), 192 | }) 193 | } 194 | } catch (e) { 195 | logError( 196 | `detected broken alt.${BaseObjectChild.name} static property: ${key}. \n`, 197 | e.stack, 198 | ) 199 | } 200 | } 201 | } catch (e) { 202 | logError(e.stack) 203 | } 204 | 205 | return WrappedBaseObjectChild 206 | } 207 | 208 | function initHotReload () { 209 | const MIN_FILE_CHANGE_MS = 200 210 | let lastBundleChange = 0 211 | const AFTER_CHANGE_WAIT_MS = 100 212 | let serverBundleTimer = null 213 | let serverBundleResolved = false 214 | 215 | /** @returns {boolean} */ 216 | const validateServerBundle = () => new Promise(resolve => { 217 | if (serverBundleResolved) return resolve(false) 218 | if (serverBundleTimer) { 219 | serverBundleTimer.resolve?.(false) 220 | if (serverBundleTimer.timer) clearTimeout(serverBundleTimer.timer) 221 | serverBundleTimer = null 222 | } 223 | 224 | const checkEndString = () => { 225 | if (!serverBundleTimer) return 226 | 227 | try { 228 | const serverBundleContent = fs.readFileSync(___ALTV_DEV_SERVER_HR_BUNDLE_PATH___)?.toString() 229 | const bundleEnd = serverBundleContent.slice(-serverBundleValidEndComment.length + (-10)) 230 | 231 | if (bundleEnd.includes(serverBundleValidEndComment)) { 232 | log('~cl~[server-bundle-validation] ~gl~everything is fine') 233 | } else { 234 | log('~cl~[server-bundle-validation]~w~ wait for server bundle again') 235 | serverBundleTimer.timer = setTimeout(checkEndString, AFTER_CHANGE_WAIT_MS) 236 | return 237 | } 238 | } catch (e) { 239 | log('~rl~ read server bundle error:', e.stack) 240 | } 241 | 242 | serverBundleTimer = null 243 | resolve(true) 244 | serverBundleResolved = true 245 | } 246 | 247 | serverBundleTimer = { 248 | resolve, 249 | timer: null, 250 | } 251 | 252 | checkEndString() 253 | }) 254 | 255 | const oldValidChange = () => { 256 | const now = +new Date() 257 | const elapsed = (now - lastBundleChange) 258 | 259 | if (elapsed < MIN_FILE_CHANGE_MS) return false 260 | lastBundleChange = now 261 | 262 | return true 263 | } 264 | 265 | const validateChange = serverBundleValidEndComment 266 | ? validateServerBundle 267 | : oldValidChange 268 | 269 | const watchSide = (side, path) => { 270 | fs.watch(path, async () => { 271 | if (!await validateChange()) return 272 | 273 | log(`~cl~[hot-reload]~w~ restarting ~gl~${resourceName}~w~ resource (${side} change)`) 274 | restartResource() 275 | }) 276 | } 277 | 278 | watchSide('server', ___ALTV_DEV_SERVER_HR_BUNDLE_PATH___) 279 | watchSide('client', ___ALTV_DEV_SERVER_HR_CLIENT_PATH___) 280 | } 281 | 282 | function initReconnectPlayers () { 283 | const initialPos = { x: 0, y: 0, z: 72 } 284 | 285 | if (isItFirstResoureStart) { 286 | setAltMeta(resourceRestartedKey, true) 287 | return despawnPlayers 288 | } 289 | 290 | const players = alt.Player.all 291 | 292 | log(`start a timer for ~cl~${___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___}~w~ ms to reconnect players (${players.length})`) 293 | 294 | alt.setTimeout(() => { 295 | for (const p of players) { 296 | p.dimension = defaultDimension 297 | p.pos = initialPos 298 | p.streamed = true 299 | p.collision = true 300 | p.invincible = false 301 | p.visible = true 302 | 303 | // frozen setter is broken now, see alt:V issue https://github.com/altmp/altv-issues/issues/1462 304 | // p.frozen = false 305 | 306 | alt.emit('playerConnect', p) 307 | } 308 | }, ___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___) 309 | 310 | return despawnPlayers 311 | 312 | function despawnPlayers () { 313 | log('despawn players') 314 | 315 | for (const p of alt.Player.all) { 316 | p.removeAllWeapons() 317 | p.clearBloodDamage() 318 | // despawn doesnt call detach now (see alt:V issue https://github.com/altmp/altv-issues/issues/1456) 319 | p.detach() 320 | p.despawn() 321 | } 322 | } 323 | } 324 | 325 | /** 326 | * a temp fix for alt:V prototype bug https://github.com/altmp/altv-js-module/issues/106 327 | */ 328 | function initPlayerPrototypeTempFix () { 329 | // fix prototype of players objects in alt.Player.all after restart as close to resource start as possible 330 | alt.nextTick(() => { 331 | for (const player of alt.Player.all) { 332 | fixPlayerObjectPrototype(player) 333 | } 334 | }) 335 | 336 | devOnAlt('playerConnect', (player) => { 337 | fixPlayerObjectPrototype(player) 338 | }) 339 | } 340 | 341 | function fixPlayerObjectPrototype (player) { 342 | player.__proto__ = alt.Player.prototype 343 | } 344 | 345 | function initResCommand (commandName) { 346 | const reconnectPlayersLog = typeof ___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___ !== 'undefined' 347 | ? ' and reconnect players' 348 | : '' 349 | 350 | const commandLog = `~cl~[res]~w~ restarting ~gl~${resourceName}~w~ resource${reconnectPlayersLog}` 351 | 352 | devOnAlt('consoleCommand', (command) => { 353 | if (command !== commandName) return 354 | log(commandLog) 355 | restartResource() 356 | }) 357 | } 358 | 359 | // TODO delete meta handling for better clearing in resource stop 360 | function overwriteAltMetaMethods () { 361 | const metaStoreKey = Symbol('metaStoreKey') 362 | const syncedMetaStoreKey = Symbol('syncedMetaStoreKey') 363 | 364 | const originalSetMeta = Symbol('originalSetMeta') 365 | const originalSetSyncedMeta = Symbol('originalSetSyncedMeta') 366 | 367 | alt[originalSetMeta] = alt.setMeta 368 | alt[originalSetSyncedMeta] = alt.setSyncedMeta 369 | 370 | const defineMetaSetter = (originalMethodKey, storeKey) => 371 | function (key, value) { 372 | alt[originalMethodKey](key, value) 373 | 374 | alt[storeKey] = alt[storeKey] || {} 375 | alt[storeKey][key] = value 376 | } 377 | 378 | alt.setMeta = defineMetaSetter(originalSetMeta, metaStoreKey) 379 | alt.setSyncedMeta = defineMetaSetter(originalSetSyncedMeta, syncedMetaStoreKey) 380 | 381 | return () => { 382 | for (const key in alt[metaStoreKey]) alt.deleteMeta(key) 383 | for (const key in alt[syncedMetaStoreKey]) alt.deleteSyncedMeta(key) 384 | } 385 | } 386 | 387 | function overwriteAltEventMethods () { 388 | /** @type {Record any>} */ 389 | const localListeners = {} 390 | /** @type {Record any>} */ 391 | const remoteListeners = {} 392 | 393 | const addLocalListener = (event, handler) => { 394 | const listeners = localListeners[event] ?? new Set() 395 | listeners.add(handler) 396 | localListeners[event] = listeners 397 | } 398 | 399 | const addRemoteListener = (event, handler) => { 400 | const listeners = remoteListeners[event] ?? new Set() 401 | listeners.add(handler) 402 | remoteListeners[event] = listeners 403 | } 404 | 405 | // why? idk why i wrote this pain 406 | 407 | alt.on = (event, handler) => { 408 | onAlt(event, handler) 409 | addLocalListener(event, handler) 410 | } 411 | 412 | alt.once = (event, handler) => { 413 | onceAlt(event, handler) 414 | addLocalListener(event, handler) 415 | } 416 | 417 | alt.onClient = (event, handler) => { 418 | onAltClient(event, handler) 419 | addRemoteListener(event, handler) 420 | } 421 | 422 | alt.onceClient = (event, handler) => { 423 | onceAltClient(event, handler) 424 | addRemoteListener(event, handler) 425 | } 426 | 427 | alt.off = (event, handler) => { 428 | offAlt(event, handler) 429 | localListeners[event]?.delete(handler) 430 | } 431 | 432 | alt.offClient = (event, handler) => { 433 | offAltClient(event, handler) 434 | remoteListeners[event]?.delete(handler) 435 | } 436 | 437 | alt.getEventListeners = (event) => { 438 | const listeners = localListeners[event] ?? new Set() 439 | return [...listeners] 440 | } 441 | 442 | alt.getRemoteEventListeners = (event) => { 443 | const listeners = remoteListeners[event] ?? new Set() 444 | return [...listeners] 445 | } 446 | } 447 | 448 | // TODO: add handling of "clientReady" client event 449 | function restartResource () { 450 | if (restartResource.called) return 451 | restartResource.called = true 452 | alt.restartResource(resourceName) 453 | } 454 | restartResource.called = false 455 | 456 | function onResourceStop () { 457 | for (const obj of baseObjects) obj.destroy() 458 | clearPlayersMeta() 459 | clearAltMeta() 460 | despawnPlayers() 461 | } 462 | 463 | function logError (...args) { 464 | alt.logError(pluginLogPrefix, ...(args[0].stack ? [args[0].stack] : args)) 465 | alt.logError(pluginLogPrefix, '(If this error is not due to your code, open an issue:') 466 | alt.logError(pluginLogPrefix, 'https://github.com/xxshady/esbuild-plugin-altv-dev-server/issues/new)', '\n') 467 | } 468 | 469 | function log (...args) { 470 | // eslint-disable-next-line no-restricted-syntax 471 | alt.log(`~lm~${pluginLogPrefix}~w~`, ...args) 472 | } 473 | 474 | function devOnAlt (event, handler) { 475 | onAlt(event, handler) 476 | } 477 | 478 | // TODO 479 | // function devAltOnce () {} 480 | 481 | // function devOnAltClient (event, handler) { 482 | // onAltClient(event, handler) 483 | // } 484 | 485 | // TODO 486 | // function devAltOnceClient () {} 487 | })() 488 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from 'esbuild' 2 | 3 | export interface IReconnectPlayers { 4 | delay: number 5 | } 6 | 7 | export interface IHotReload { 8 | clientPath: string 9 | /** 10 | * ! EXPERIMENTAL ! 11 | * 12 | * It makes sure that server bundle is finally built 13 | * and only then starts resource restart 14 | * 15 | * default is `false` 16 | */ 17 | serverBundleValidation?: boolean 18 | } 19 | 20 | export interface IStartupErrorsHandling { 21 | /** 22 | * default is `true` 23 | */ 24 | moveExternalsOnTop?: boolean 25 | } 26 | 27 | export interface IOptions { 28 | /** 29 | * Default is `false` 30 | */ 31 | hotReload?: boolean | IHotReload 32 | /** 33 | * Default value is dynamic and equivalent to `hotReload` (as boolean) option 34 | */ 35 | handleStartupErrors?: boolean | IStartupErrorsHandling 36 | /** 37 | * Default value is dynamic and equivalent to `hotReload` (as boolean) option 38 | */ 39 | reconnectPlayers?: boolean | IReconnectPlayers 40 | 41 | /** 42 | * Adds command "res" (for manual restart) to server console (client soon). 43 | * 44 | * Default is `true` 45 | */ 46 | resCommand?: boolean 47 | } 48 | 49 | declare function altvServerDev (options?: IOptions): Plugin 50 | 51 | export default altvServerDev -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from 'fs' 2 | import nodeBuiltinModules from './node-builtin-modules' 3 | import { dirname, join } from 'path' 4 | import { fileURLToPath } from 'url' 5 | 6 | const pluginName = 'altv-dev-server' 7 | const __dirname = dirname(fileURLToPath(import.meta.url)) 8 | const bannerContent = readFileSync(join(__dirname, 'alt-overwrite-banner.js')) 9 | const consoleBlueColor = '\x1b[34m' 10 | const consoleResetColor = '\x1b[0m' 11 | const consoleRedColor = '\x1b[31m' 12 | const upperCasePluginName = replaceStringChar(pluginName, '-', '_').toUpperCase() 13 | const defaultReconnectPlayersDelay = 200 14 | 15 | /** 16 | * @param {import('./index').IOptions} options 17 | * @returns {import('esbuild').Plugin} 18 | */ 19 | const altvServerDev = (options = {}) => ({ 20 | name: pluginName, 21 | setup (build) { 22 | const { 23 | hotReload = false, 24 | reconnectPlayers = !!hotReload, 25 | handleStartupErrors = !!hotReload, 26 | resCommand = true, 27 | } = options 28 | 29 | log('hotReload:', hotReload) 30 | log('reconnectPlayers:', reconnectPlayers) 31 | log('handleStartupErrors:', handleStartupErrors) 32 | log('resCommand:', resCommand) 33 | 34 | let { 35 | initialOptions: { 36 | banner, 37 | footer, 38 | outfile, 39 | entryPoints, 40 | outdir, 41 | external = [], 42 | }, 43 | } = build 44 | 45 | let hotReloadCode = '' 46 | let startupErrorsHandlingBanner = '' 47 | let reconnectPlayersBanner = '' 48 | let externalsOnTopImports = '' 49 | let resCommandBanner = '' 50 | let serverBundleValidationBanner = '' 51 | 52 | let startupErrorsHandlingFooter = '' 53 | 54 | if (hotReload) { 55 | const { 56 | clientPath = null, 57 | // TODO remove experimental option description and change default to true 58 | serverBundleValidation = false, 59 | } = hotReload 60 | 61 | let outfileName 62 | 63 | if (outdir) { 64 | const [entry] = entryPoints 65 | 66 | let fileName = formatPath(entry) 67 | const lastSlashIdx = fileName.lastIndexOf('/') 68 | 69 | if (lastSlashIdx !== -1) { 70 | fileName = fileName.slice(lastSlashIdx + 1) 71 | } 72 | 73 | outfileName = `${formatPath(outdir)}/${fileName}` 74 | } else { 75 | outfileName = formatPath(outfile) 76 | } 77 | 78 | outfileName = replaceTsExtension(outfileName) 79 | 80 | // log('outfileName:', outfileName) 81 | 82 | const cwd = replaceStringChar(process.cwd(), '\\', '/') 83 | const serverBundlePath = `${cwd}/${outfileName}` 84 | // log('serverBundlePath:', serverBundlePath) 85 | 86 | let clientFullPath = null 87 | 88 | if (clientPath) { 89 | clientFullPath = `${cwd}/${formatPath(clientPath)}` 90 | clientFullPath = replaceTsExtension(clientFullPath) 91 | } 92 | 93 | hotReloadCode = generateHotReloadCode(serverBundlePath, clientFullPath) 94 | 95 | if (serverBundleValidation) { 96 | const serverBundleEndString = '// esbuild-plugin-altv-dev-server-end' 97 | serverBundleValidationBanner += `const ${generateVarName('SERVER_END_BUNDLE_STRING')} = '${serverBundleEndString}'\n` 98 | 99 | build.onEnd((result) => { 100 | if (result.errors.length > 0) return 101 | 102 | // log('[serverBundleValidation] write end comment') 103 | 104 | writeFileSync( 105 | serverBundlePath, 106 | `\n${serverBundleEndString}\n`, 107 | { flag: 'a+' }, 108 | ) 109 | }) 110 | } 111 | } 112 | 113 | if (handleStartupErrors) { 114 | const externalsOnTopNamespace = `${pluginName}-externals-on-top` 115 | const { moveExternalsOnTop = true } = handleStartupErrors 116 | 117 | /** 118 | * @todo somehow improve this shit 119 | */ 120 | 121 | startupErrorsHandlingBanner = 'try {\n' 122 | startupErrorsHandlingFooter = ( 123 | '\n' + 124 | '} catch (e) {\n' + 125 | ' alt.nextTick(() => {\n' + 126 | ' alt.logError(e.stack)\n' + 127 | ` alt.logError('[${pluginName}] Failed to load resource', alt.resourceName)\n` + 128 | ' })\n' + 129 | '}' 130 | ) 131 | 132 | if (moveExternalsOnTop) { 133 | const altServerIdx = external.indexOf('alt-server') 134 | if (altServerIdx !== -1) external.splice(altServerIdx, 1) 135 | 136 | const externalRegExpString = [...external, ...Object.keys(nodeBuiltinModules)].join('|') 137 | const externalVarNames = {} // { [external original name]: external var name } 138 | 139 | const createRequireVarName = generateVarName('createRequire') 140 | const customRequireVarName = generateVarName('customRequire') 141 | 142 | externalsOnTopImports += '// ----------------- external on top imports START -----------------\n' 143 | externalsOnTopImports += `import { createRequire as ${createRequireVarName} } from 'module'\n` 144 | 145 | // saving custom module names in externalVarNames 146 | // in order to import these modules at once, at the top of the bundle 147 | for (const externalName of external) { 148 | if (externalName.includes('*')) { 149 | const errorMessage = `external name: ${externalName} "*" wildcard character is not supported yet` 150 | 151 | logError(errorMessage) 152 | logError('(this error came from plugin option handleStartupErrors.moveExternalsOnTop,') 153 | logError('that can be disabled if you are not using externals with enabled handleStartupErrors)') 154 | 155 | throw new Error(errorMessage) 156 | } 157 | 158 | const externalVarName = generateVarName(`externalOnTop_${externalName}`) 159 | 160 | externalVarNames[externalName] = externalVarName 161 | externalsOnTopImports += `import * as ${externalVarName} from "${externalName}"\n` 162 | } 163 | 164 | // saving nodejs built-in module names in externalVarNames 165 | // to use require for importing them dynamically later 166 | for (const name in nodeBuiltinModules) { 167 | const externalVarName = generateVarName(`externalOnTop_${name}`) 168 | externalVarNames[name] = externalVarName 169 | } 170 | 171 | externalsOnTopImports += `const ${customRequireVarName} = ${createRequireVarName}(import.meta.url)\n` 172 | externalsOnTopImports += '// ----------------- external on top imports END -----------------\n' 173 | 174 | build.onResolve( 175 | { 176 | // eslint-disable-next-line prefer-regex-literals 177 | filter: new RegExp(`^(${externalRegExpString})$`), 178 | }, 179 | ({ path }) => { 180 | const externalVarName = externalVarNames[path] 181 | 182 | // log(`resolve external import ${path}`) 183 | 184 | if (!externalVarName) { 185 | const errorMessage = `external: ${path} var name not found` 186 | 187 | logError(errorMessage) 188 | throw new Error(errorMessage) 189 | } 190 | 191 | return { 192 | path: path, 193 | namespace: externalsOnTopNamespace, 194 | pluginData: externalVarName, 195 | } 196 | }) 197 | 198 | build.onLoad({ filter: /.*/, namespace: externalsOnTopNamespace }, 199 | ({ pluginData: externalVarName, path }) => { 200 | return { 201 | contents: (` 202 | try { 203 | module.exports = ${customRequireVarName}('${path}') 204 | } catch (e) { 205 | if (e.code !== 'ERR_REQUIRE_ESM') { 206 | try { 207 | alt.nextTick(() => alt.logError(e.stack)) 208 | } catch {} 209 | } 210 | Object.defineProperty(exports, '__esModule', { value: true }) 211 | for (const key in ${externalVarName}) { 212 | exports[key] = ${externalVarName}[key] 213 | } 214 | } 215 | `), 216 | } 217 | }) 218 | } 219 | } 220 | 221 | if (reconnectPlayers) { 222 | let delay 223 | 224 | if (typeof reconnectPlayers.delay === 'number') { 225 | delay = reconnectPlayers.delay 226 | } else { 227 | delay = defaultReconnectPlayersDelay 228 | } 229 | 230 | reconnectPlayersBanner = `const ${generateVarName('RECONNECT_PLAYERS_DELAY')} = ${delay}\n` 231 | } 232 | 233 | if (resCommand) { 234 | resCommandBanner += `const ${generateVarName('RES_COMMAND_NAME')} = 'res'\n` 235 | } 236 | 237 | const jsBanner = ( 238 | '\n// --------------------- esbuild-plugin-altv-dev-server ---------------------\n' + 239 | 240 | // ---------- top ---------- 241 | // imports first 242 | externalsOnTopImports + 243 | hotReloadCode + 244 | reconnectPlayersBanner + 245 | resCommandBanner + 246 | serverBundleValidationBanner + 247 | // ---------- top ---------- 248 | 249 | bannerContent + 250 | 251 | // ---------- bottom ---------- 252 | startupErrorsHandlingBanner + 253 | '\n// --------------------- esbuild-plugin-altv-dev-server ---------------------\n' 254 | ) 255 | 256 | const jsFooter = ( 257 | startupErrorsHandlingFooter 258 | ) 259 | 260 | banner = banner ?? { js: '' } 261 | banner.js += jsBanner 262 | build.initialOptions.banner = banner 263 | 264 | footer = footer ?? { js: '' } 265 | footer.js += jsFooter 266 | build.initialOptions.footer = footer 267 | 268 | build.onResolve({ filter: /^alt-server$/ }, (args) => ({ 269 | path: args.path, 270 | namespace: pluginName, 271 | })) 272 | 273 | build.onLoad({ filter: /.*/, namespace: pluginName }, () => { 274 | return { contents: 'module.exports = alt' } 275 | }) 276 | }, 277 | }) 278 | 279 | function generateHotReloadCode (bundlePath, clientPath = null) { 280 | return ( 281 | `import ${generateVarName('HR_FS')} from "fs"\n` + 282 | `const ${generateVarName('HR_BUNDLE_PATH')} = "${bundlePath}"\n` + 283 | ( 284 | clientPath 285 | ? `const ${generateVarName('HR_CLIENT_PATH')} = "${clientPath}"\n` 286 | : '' 287 | ) 288 | ) 289 | } 290 | 291 | function replaceStringChar (str, char, replace) { 292 | let newStr = '' 293 | 294 | for (let i = 0; i < str.length; i++) { 295 | newStr += str[i] === char ? replace : str[i] 296 | } 297 | 298 | return newStr 299 | } 300 | 301 | function generateVarName (varName) { 302 | return `___${upperCasePluginName}_${varName.replace(/[-/\\ ]/g, '_')}___` 303 | } 304 | 305 | function replaceTsExtension (fileName) { 306 | if (fileName.slice(-3) === '.ts') { 307 | fileName = fileName.slice(0, -3) + '.js' 308 | } 309 | 310 | return fileName 311 | } 312 | 313 | function formatPath (path) { 314 | let finalPath 315 | 316 | if (path.startsWith('./')) finalPath = path.slice(2) 317 | else if (path.startsWith('/')) finalPath = path.slice(1) 318 | else finalPath = path 319 | 320 | if (path.endsWith('/')) finalPath = finalPath.slice(0, -1) 321 | 322 | return finalPath 323 | } 324 | 325 | function log (...args) { 326 | // eslint-disable-next-line no-restricted-syntax 327 | console.log(`${consoleBlueColor}[${pluginName}]${consoleResetColor}`, ...args) 328 | } 329 | 330 | function logError (...args) { 331 | // eslint-disable-next-line no-restricted-syntax 332 | console.log(`${consoleRedColor}[${pluginName}]`, ...args) 333 | } 334 | 335 | export default altvServerDev -------------------------------------------------------------------------------- /src/node-builtin-modules.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable quote-props */ 2 | /* eslint-disable key-spacing */ 3 | 4 | /** 5 | * taken from esbuild repository 6 | * https://github.com/evanw/esbuild/blob/master/internal/resolver/resolver.go#L1915 7 | * (BuiltInNodeModules) 8 | */ 9 | 10 | export default { 11 | '_http_agent': true, 12 | '_http_client': true, 13 | '_http_common': true, 14 | '_http_incoming': true, 15 | '_http_outgoing': true, 16 | '_http_server': true, 17 | '_stream_duplex': true, 18 | '_stream_passthrough': true, 19 | '_stream_readable': true, 20 | '_stream_transform': true, 21 | '_stream_wrap': true, 22 | '_stream_writable': true, 23 | '_tls_common': true, 24 | '_tls_wrap': true, 25 | 'assert': true, 26 | 'assert/strict': true, 27 | 'async_hooks': true, 28 | 'buffer': true, 29 | 'child_process': true, 30 | 'cluster': true, 31 | 'console': true, 32 | 'constants': true, 33 | 'crypto': true, 34 | 'dgram': true, 35 | 'diagnostics_channel': true, 36 | 'dns': true, 37 | 'dns/promises': true, 38 | 'domain': true, 39 | 'events': true, 40 | 'fs': true, 41 | 'fs/promises': true, 42 | 'http': true, 43 | 'http2': true, 44 | 'https': true, 45 | 'inspector': true, 46 | 'module': true, 47 | 'net': true, 48 | 'os': true, 49 | 'path': true, 50 | 'path/posix': true, 51 | 'path/win32': true, 52 | 'perf_hooks': true, 53 | 'process': true, 54 | 'punycode': true, 55 | 'querystring': true, 56 | 'readline': true, 57 | 'repl': true, 58 | 'stream': true, 59 | 'stream/consumers': true, 60 | 'stream/promises': true, 61 | 'stream/web': true, 62 | 'string_decoder': true, 63 | 'sys': true, 64 | 'timers': true, 65 | 'timers/promises': true, 66 | 'tls': true, 67 | 'trace_events': true, 68 | 'tty': true, 69 | 'url': true, 70 | 'util': true, 71 | 'util/types': true, 72 | 'v8': true, 73 | 'vm': true, 74 | 'wasi': true, 75 | 'worker_threads': true, 76 | 'zlib': true, 77 | } -------------------------------------------------------------------------------- /types/global.d.ts: -------------------------------------------------------------------------------- 1 | const ___ALTV_DEV_SERVER_HR_FS___: { watch: (...args: any) => void, readFileSync: (path: string) => unknown } | undefined 2 | const ___ALTV_DEV_SERVER_HR_BUNDLE_PATH___: string | undefined 3 | const ___ALTV_DEV_SERVER_RECONNECT_PLAYERS_DELAY___: number | undefined 4 | const ___ALTV_DEV_SERVER_HR_CLIENT_PATH___: string | undefined 5 | const ___ALTV_DEV_SERVER_RES_COMMAND_NAME___: string | undefined 6 | const ___ALTV_DEV_SERVER_SERVER_END_BUNDLE_STRING___: string | undefined -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@altv/types-server@^2.2.8": 6 | version "2.2.8" 7 | resolved "https://registry.yarnpkg.com/@altv/types-server/-/types-server-2.2.8.tgz#373adbe21c27870c6d2ba22dffad42268f0962bc" 8 | integrity sha512-CrstiTWaGyPHFxcA+KHT9PHn+02T0Cj0NR2x5dbD3tJdoW4JxqmWlu2rF+r4PRdIkNkKNi4E0cnxZTjViPsWQg== 9 | 10 | "@altv/types-shared@^1.2.1": 11 | version "1.2.1" 12 | resolved "https://registry.yarnpkg.com/@altv/types-shared/-/types-shared-1.2.1.tgz#d4a6243111aab36164952d568517fb430d713f5c" 13 | integrity sha512-C8avN03xOxzZmwCfeeSOI/4E0uOYOhjc1wozY35OYU/4F5YYjeeWIh5d3zHGj6u5GzLgM6Ha3+vsn5922k61QA== 14 | 15 | "@babel/code-frame@7.12.11": 16 | version "7.12.11" 17 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 18 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 19 | dependencies: 20 | "@babel/highlight" "^7.10.4" 21 | 22 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": 23 | version "7.15.8" 24 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" 25 | integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== 26 | dependencies: 27 | "@babel/highlight" "^7.14.5" 28 | 29 | "@babel/generator@^7.15.4": 30 | version "7.15.8" 31 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" 32 | integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== 33 | dependencies: 34 | "@babel/types" "^7.15.6" 35 | jsesc "^2.5.1" 36 | source-map "^0.5.0" 37 | 38 | "@babel/helper-function-name@^7.15.4": 39 | version "7.15.4" 40 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" 41 | integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== 42 | dependencies: 43 | "@babel/helper-get-function-arity" "^7.15.4" 44 | "@babel/template" "^7.15.4" 45 | "@babel/types" "^7.15.4" 46 | 47 | "@babel/helper-get-function-arity@^7.15.4": 48 | version "7.15.4" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" 50 | integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== 51 | dependencies: 52 | "@babel/types" "^7.15.4" 53 | 54 | "@babel/helper-hoist-variables@^7.15.4": 55 | version "7.15.4" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" 57 | integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== 58 | dependencies: 59 | "@babel/types" "^7.15.4" 60 | 61 | "@babel/helper-split-export-declaration@^7.15.4": 62 | version "7.15.4" 63 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" 64 | integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== 65 | dependencies: 66 | "@babel/types" "^7.15.4" 67 | 68 | "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": 69 | version "7.15.7" 70 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 71 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 72 | 73 | "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": 74 | version "7.14.5" 75 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 76 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 77 | dependencies: 78 | "@babel/helper-validator-identifier" "^7.14.5" 79 | chalk "^2.0.0" 80 | js-tokens "^4.0.0" 81 | 82 | "@babel/parser@^7.15.4", "@babel/parser@^7.7.0": 83 | version "7.15.8" 84 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" 85 | integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== 86 | 87 | "@babel/template@^7.15.4": 88 | version "7.15.4" 89 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" 90 | integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== 91 | dependencies: 92 | "@babel/code-frame" "^7.14.5" 93 | "@babel/parser" "^7.15.4" 94 | "@babel/types" "^7.15.4" 95 | 96 | "@babel/traverse@^7.7.0": 97 | version "7.15.4" 98 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" 99 | integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== 100 | dependencies: 101 | "@babel/code-frame" "^7.14.5" 102 | "@babel/generator" "^7.15.4" 103 | "@babel/helper-function-name" "^7.15.4" 104 | "@babel/helper-hoist-variables" "^7.15.4" 105 | "@babel/helper-split-export-declaration" "^7.15.4" 106 | "@babel/parser" "^7.15.4" 107 | "@babel/types" "^7.15.4" 108 | debug "^4.1.0" 109 | globals "^11.1.0" 110 | 111 | "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.7.0": 112 | version "7.15.6" 113 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" 114 | integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== 115 | dependencies: 116 | "@babel/helper-validator-identifier" "^7.14.9" 117 | to-fast-properties "^2.0.0" 118 | 119 | "@eslint/eslintrc@^0.4.3": 120 | version "0.4.3" 121 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 122 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 123 | dependencies: 124 | ajv "^6.12.4" 125 | debug "^4.1.1" 126 | espree "^7.3.0" 127 | globals "^13.9.0" 128 | ignore "^4.0.6" 129 | import-fresh "^3.2.1" 130 | js-yaml "^3.13.1" 131 | minimatch "^3.0.4" 132 | strip-json-comments "^3.1.1" 133 | 134 | "@humanwhocodes/config-array@^0.5.0": 135 | version "0.5.0" 136 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 137 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 138 | dependencies: 139 | "@humanwhocodes/object-schema" "^1.2.0" 140 | debug "^4.1.1" 141 | minimatch "^3.0.4" 142 | 143 | "@humanwhocodes/object-schema@^1.2.0": 144 | version "1.2.0" 145 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" 146 | integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== 147 | 148 | "@types/json5@^0.0.29": 149 | version "0.0.29" 150 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 151 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= 152 | 153 | acorn-jsx@^5.3.1: 154 | version "5.3.2" 155 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 156 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 157 | 158 | acorn@^7.4.0: 159 | version "7.4.1" 160 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 161 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 162 | 163 | ajv@^6.10.0, ajv@^6.12.4: 164 | version "6.12.6" 165 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 166 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 167 | dependencies: 168 | fast-deep-equal "^3.1.1" 169 | fast-json-stable-stringify "^2.0.0" 170 | json-schema-traverse "^0.4.1" 171 | uri-js "^4.2.2" 172 | 173 | ajv@^8.0.1: 174 | version "8.6.3" 175 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" 176 | integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== 177 | dependencies: 178 | fast-deep-equal "^3.1.1" 179 | json-schema-traverse "^1.0.0" 180 | require-from-string "^2.0.2" 181 | uri-js "^4.2.2" 182 | 183 | ansi-colors@^4.1.1: 184 | version "4.1.1" 185 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 186 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 187 | 188 | ansi-regex@^5.0.1: 189 | version "5.0.1" 190 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 191 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 192 | 193 | ansi-styles@^3.2.1: 194 | version "3.2.1" 195 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 196 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 197 | dependencies: 198 | color-convert "^1.9.0" 199 | 200 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 201 | version "4.3.0" 202 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 203 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 204 | dependencies: 205 | color-convert "^2.0.1" 206 | 207 | argparse@^1.0.7: 208 | version "1.0.10" 209 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 210 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 211 | dependencies: 212 | sprintf-js "~1.0.2" 213 | 214 | array-includes@^3.1.4: 215 | version "3.1.4" 216 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" 217 | integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== 218 | dependencies: 219 | call-bind "^1.0.2" 220 | define-properties "^1.1.3" 221 | es-abstract "^1.19.1" 222 | get-intrinsic "^1.1.1" 223 | is-string "^1.0.7" 224 | 225 | array.prototype.flat@^1.2.5: 226 | version "1.2.5" 227 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" 228 | integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== 229 | dependencies: 230 | call-bind "^1.0.2" 231 | define-properties "^1.1.3" 232 | es-abstract "^1.19.0" 233 | 234 | astral-regex@^2.0.0: 235 | version "2.0.0" 236 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 237 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 238 | 239 | babel-eslint@^10.1.0: 240 | version "10.1.0" 241 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" 242 | integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== 243 | dependencies: 244 | "@babel/code-frame" "^7.0.0" 245 | "@babel/parser" "^7.7.0" 246 | "@babel/traverse" "^7.7.0" 247 | "@babel/types" "^7.7.0" 248 | eslint-visitor-keys "^1.0.0" 249 | resolve "^1.12.0" 250 | 251 | balanced-match@^1.0.0: 252 | version "1.0.2" 253 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 254 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 255 | 256 | brace-expansion@^1.1.7: 257 | version "1.1.11" 258 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 259 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 260 | dependencies: 261 | balanced-match "^1.0.0" 262 | concat-map "0.0.1" 263 | 264 | call-bind@^1.0.0, call-bind@^1.0.2: 265 | version "1.0.2" 266 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 267 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 268 | dependencies: 269 | function-bind "^1.1.1" 270 | get-intrinsic "^1.0.2" 271 | 272 | callsites@^3.0.0: 273 | version "3.1.0" 274 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 275 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 276 | 277 | chalk@^2.0.0: 278 | version "2.4.2" 279 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 280 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 281 | dependencies: 282 | ansi-styles "^3.2.1" 283 | escape-string-regexp "^1.0.5" 284 | supports-color "^5.3.0" 285 | 286 | chalk@^4.0.0: 287 | version "4.1.2" 288 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 289 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 290 | dependencies: 291 | ansi-styles "^4.1.0" 292 | supports-color "^7.1.0" 293 | 294 | color-convert@^1.9.0: 295 | version "1.9.3" 296 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 297 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 298 | dependencies: 299 | color-name "1.1.3" 300 | 301 | color-convert@^2.0.1: 302 | version "2.0.1" 303 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 304 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 305 | dependencies: 306 | color-name "~1.1.4" 307 | 308 | color-name@1.1.3: 309 | version "1.1.3" 310 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 311 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 312 | 313 | color-name@~1.1.4: 314 | version "1.1.4" 315 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 316 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 317 | 318 | concat-map@0.0.1: 319 | version "0.0.1" 320 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 321 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 322 | 323 | cross-spawn@^7.0.2: 324 | version "7.0.3" 325 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 326 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 327 | dependencies: 328 | path-key "^3.1.0" 329 | shebang-command "^2.0.0" 330 | which "^2.0.1" 331 | 332 | debug@^2.6.9: 333 | version "2.6.9" 334 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 335 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 336 | dependencies: 337 | ms "2.0.0" 338 | 339 | debug@^3.2.7: 340 | version "3.2.7" 341 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 342 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 343 | dependencies: 344 | ms "^2.1.1" 345 | 346 | debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: 347 | version "4.3.2" 348 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 349 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 350 | dependencies: 351 | ms "2.1.2" 352 | 353 | deep-is@^0.1.3: 354 | version "0.1.4" 355 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 356 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 357 | 358 | define-properties@^1.1.3: 359 | version "1.1.3" 360 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 361 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 362 | dependencies: 363 | object-keys "^1.0.12" 364 | 365 | doctrine@^2.1.0: 366 | version "2.1.0" 367 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 368 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 369 | dependencies: 370 | esutils "^2.0.2" 371 | 372 | doctrine@^3.0.0: 373 | version "3.0.0" 374 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 375 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 376 | dependencies: 377 | esutils "^2.0.2" 378 | 379 | emoji-regex@^8.0.0: 380 | version "8.0.0" 381 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 382 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 383 | 384 | enquirer@^2.3.5: 385 | version "2.3.6" 386 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 387 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 388 | dependencies: 389 | ansi-colors "^4.1.1" 390 | 391 | es-abstract@^1.19.0, es-abstract@^1.19.1: 392 | version "1.19.1" 393 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 394 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 395 | dependencies: 396 | call-bind "^1.0.2" 397 | es-to-primitive "^1.2.1" 398 | function-bind "^1.1.1" 399 | get-intrinsic "^1.1.1" 400 | get-symbol-description "^1.0.0" 401 | has "^1.0.3" 402 | has-symbols "^1.0.2" 403 | internal-slot "^1.0.3" 404 | is-callable "^1.2.4" 405 | is-negative-zero "^2.0.1" 406 | is-regex "^1.1.4" 407 | is-shared-array-buffer "^1.0.1" 408 | is-string "^1.0.7" 409 | is-weakref "^1.0.1" 410 | object-inspect "^1.11.0" 411 | object-keys "^1.1.1" 412 | object.assign "^4.1.2" 413 | string.prototype.trimend "^1.0.4" 414 | string.prototype.trimstart "^1.0.4" 415 | unbox-primitive "^1.0.1" 416 | 417 | es-to-primitive@^1.2.1: 418 | version "1.2.1" 419 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 420 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 421 | dependencies: 422 | is-callable "^1.1.4" 423 | is-date-object "^1.0.1" 424 | is-symbol "^1.0.2" 425 | 426 | esbuild-android-arm64@0.13.8: 427 | version "0.13.8" 428 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz#c20e875c3c98164b1ffba9b28637bdf96f5e9e7c" 429 | integrity sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA== 430 | 431 | esbuild-darwin-64@0.13.8: 432 | version "0.13.8" 433 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz#f46e6b471ddbf62265234808a6a1aa91df18a417" 434 | integrity sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng== 435 | 436 | esbuild-darwin-arm64@0.13.8: 437 | version "0.13.8" 438 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz#a991157a6013facd4f2e14159b7da52626c90154" 439 | integrity sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ== 440 | 441 | esbuild-freebsd-64@0.13.8: 442 | version "0.13.8" 443 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz#301601d2e443ad458960e359b402a17d9500be9d" 444 | integrity sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw== 445 | 446 | esbuild-freebsd-arm64@0.13.8: 447 | version "0.13.8" 448 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz#039a63acc12ec0892006c147ea221e55f9125a9f" 449 | integrity sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng== 450 | 451 | esbuild-linux-32@0.13.8: 452 | version "0.13.8" 453 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz#c537b67d7e694b60bfa2786581412838c6ba0284" 454 | integrity sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw== 455 | 456 | esbuild-linux-64@0.13.8: 457 | version "0.13.8" 458 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz#0092fc8a064001a777bfa0e3b425bb8be8f96e6a" 459 | integrity sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w== 460 | 461 | esbuild-linux-arm64@0.13.8: 462 | version "0.13.8" 463 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz#5cd3f2bb924212971482e8dbc25c4afd09b28110" 464 | integrity sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ== 465 | 466 | esbuild-linux-arm@0.13.8: 467 | version "0.13.8" 468 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz#ad634f96bf2975536907aeb9fdb75a3194f4ddce" 469 | integrity sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg== 470 | 471 | esbuild-linux-mips64le@0.13.8: 472 | version "0.13.8" 473 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz#57857edfebf9bf65766dc8be1637f2179c990572" 474 | integrity sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA== 475 | 476 | esbuild-linux-ppc64le@0.13.8: 477 | version "0.13.8" 478 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz#fdb82a059a5b86bb10fb42091b4ebcf488b9cd46" 479 | integrity sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig== 480 | 481 | esbuild-netbsd-64@0.13.8: 482 | version "0.13.8" 483 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz#d7879e7123d3b2c04754ece8bd061aa6866deeff" 484 | integrity sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q== 485 | 486 | esbuild-openbsd-64@0.13.8: 487 | version "0.13.8" 488 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz#88b280b6cb0a3f6adb60abf27fc506c506a35cf0" 489 | integrity sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw== 490 | 491 | esbuild-sunos-64@0.13.8: 492 | version "0.13.8" 493 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz#229ae7c7703196a58acd0f0291ad9bebda815d63" 494 | integrity sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw== 495 | 496 | esbuild-windows-32@0.13.8: 497 | version "0.13.8" 498 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz#892d093e32a21c0c9135e5a0ffdc380aeb70e763" 499 | integrity sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A== 500 | 501 | esbuild-windows-64@0.13.8: 502 | version "0.13.8" 503 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz#7defd8d79ae3bb7e6f53b65a7190be7daf901686" 504 | integrity sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg== 505 | 506 | esbuild-windows-arm64@0.13.8: 507 | version "0.13.8" 508 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz#e59ae004496fd8a5ab67bfc7945a2e47480d6fb9" 509 | integrity sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg== 510 | 511 | esbuild@^0.13.8: 512 | version "0.13.8" 513 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.8.tgz#bd7cc51b881ab067789f88e17baca74724c1ec4f" 514 | integrity sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw== 515 | optionalDependencies: 516 | esbuild-android-arm64 "0.13.8" 517 | esbuild-darwin-64 "0.13.8" 518 | esbuild-darwin-arm64 "0.13.8" 519 | esbuild-freebsd-64 "0.13.8" 520 | esbuild-freebsd-arm64 "0.13.8" 521 | esbuild-linux-32 "0.13.8" 522 | esbuild-linux-64 "0.13.8" 523 | esbuild-linux-arm "0.13.8" 524 | esbuild-linux-arm64 "0.13.8" 525 | esbuild-linux-mips64le "0.13.8" 526 | esbuild-linux-ppc64le "0.13.8" 527 | esbuild-netbsd-64 "0.13.8" 528 | esbuild-openbsd-64 "0.13.8" 529 | esbuild-sunos-64 "0.13.8" 530 | esbuild-windows-32 "0.13.8" 531 | esbuild-windows-64 "0.13.8" 532 | esbuild-windows-arm64 "0.13.8" 533 | 534 | escape-string-regexp@^1.0.5: 535 | version "1.0.5" 536 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 537 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 538 | 539 | escape-string-regexp@^4.0.0: 540 | version "4.0.0" 541 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 542 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 543 | 544 | eslint-config-standard@^16.0.2: 545 | version "16.0.3" 546 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" 547 | integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== 548 | 549 | eslint-import-resolver-node@^0.3.6: 550 | version "0.3.6" 551 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" 552 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== 553 | dependencies: 554 | debug "^3.2.7" 555 | resolve "^1.20.0" 556 | 557 | eslint-module-utils@^2.7.0: 558 | version "2.7.1" 559 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" 560 | integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== 561 | dependencies: 562 | debug "^3.2.7" 563 | find-up "^2.1.0" 564 | pkg-dir "^2.0.0" 565 | 566 | eslint-plugin-es@^3.0.0: 567 | version "3.0.1" 568 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" 569 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== 570 | dependencies: 571 | eslint-utils "^2.0.0" 572 | regexpp "^3.0.0" 573 | 574 | eslint-plugin-import@^2.22.1: 575 | version "2.25.2" 576 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" 577 | integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== 578 | dependencies: 579 | array-includes "^3.1.4" 580 | array.prototype.flat "^1.2.5" 581 | debug "^2.6.9" 582 | doctrine "^2.1.0" 583 | eslint-import-resolver-node "^0.3.6" 584 | eslint-module-utils "^2.7.0" 585 | has "^1.0.3" 586 | is-core-module "^2.7.0" 587 | is-glob "^4.0.3" 588 | minimatch "^3.0.4" 589 | object.values "^1.1.5" 590 | resolve "^1.20.0" 591 | tsconfig-paths "^3.11.0" 592 | 593 | eslint-plugin-node@^11.1.0: 594 | version "11.1.0" 595 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" 596 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== 597 | dependencies: 598 | eslint-plugin-es "^3.0.0" 599 | eslint-utils "^2.0.0" 600 | ignore "^5.1.1" 601 | minimatch "^3.0.4" 602 | resolve "^1.10.1" 603 | semver "^6.1.0" 604 | 605 | eslint-plugin-promise@^4.2.1: 606 | version "4.3.1" 607 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" 608 | integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== 609 | 610 | eslint-scope@^5.1.1: 611 | version "5.1.1" 612 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 613 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 614 | dependencies: 615 | esrecurse "^4.3.0" 616 | estraverse "^4.1.1" 617 | 618 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 619 | version "2.1.0" 620 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 621 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 622 | dependencies: 623 | eslint-visitor-keys "^1.1.0" 624 | 625 | eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 626 | version "1.3.0" 627 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 628 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 629 | 630 | eslint-visitor-keys@^2.0.0: 631 | version "2.1.0" 632 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 633 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 634 | 635 | eslint@^7.22.0: 636 | version "7.32.0" 637 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 638 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 639 | dependencies: 640 | "@babel/code-frame" "7.12.11" 641 | "@eslint/eslintrc" "^0.4.3" 642 | "@humanwhocodes/config-array" "^0.5.0" 643 | ajv "^6.10.0" 644 | chalk "^4.0.0" 645 | cross-spawn "^7.0.2" 646 | debug "^4.0.1" 647 | doctrine "^3.0.0" 648 | enquirer "^2.3.5" 649 | escape-string-regexp "^4.0.0" 650 | eslint-scope "^5.1.1" 651 | eslint-utils "^2.1.0" 652 | eslint-visitor-keys "^2.0.0" 653 | espree "^7.3.1" 654 | esquery "^1.4.0" 655 | esutils "^2.0.2" 656 | fast-deep-equal "^3.1.3" 657 | file-entry-cache "^6.0.1" 658 | functional-red-black-tree "^1.0.1" 659 | glob-parent "^5.1.2" 660 | globals "^13.6.0" 661 | ignore "^4.0.6" 662 | import-fresh "^3.0.0" 663 | imurmurhash "^0.1.4" 664 | is-glob "^4.0.0" 665 | js-yaml "^3.13.1" 666 | json-stable-stringify-without-jsonify "^1.0.1" 667 | levn "^0.4.1" 668 | lodash.merge "^4.6.2" 669 | minimatch "^3.0.4" 670 | natural-compare "^1.4.0" 671 | optionator "^0.9.1" 672 | progress "^2.0.0" 673 | regexpp "^3.1.0" 674 | semver "^7.2.1" 675 | strip-ansi "^6.0.0" 676 | strip-json-comments "^3.1.0" 677 | table "^6.0.9" 678 | text-table "^0.2.0" 679 | v8-compile-cache "^2.0.3" 680 | 681 | espree@^7.3.0, espree@^7.3.1: 682 | version "7.3.1" 683 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 684 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 685 | dependencies: 686 | acorn "^7.4.0" 687 | acorn-jsx "^5.3.1" 688 | eslint-visitor-keys "^1.3.0" 689 | 690 | esprima@^4.0.0: 691 | version "4.0.1" 692 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 693 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 694 | 695 | esquery@^1.4.0: 696 | version "1.4.0" 697 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 698 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 699 | dependencies: 700 | estraverse "^5.1.0" 701 | 702 | esrecurse@^4.3.0: 703 | version "4.3.0" 704 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 705 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 706 | dependencies: 707 | estraverse "^5.2.0" 708 | 709 | estraverse@^4.1.1: 710 | version "4.3.0" 711 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 712 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 713 | 714 | estraverse@^5.1.0, estraverse@^5.2.0: 715 | version "5.2.0" 716 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 717 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 718 | 719 | esutils@^2.0.2: 720 | version "2.0.3" 721 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 722 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 723 | 724 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 725 | version "3.1.3" 726 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 727 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 728 | 729 | fast-json-stable-stringify@^2.0.0: 730 | version "2.1.0" 731 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 732 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 733 | 734 | fast-levenshtein@^2.0.6: 735 | version "2.0.6" 736 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 737 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 738 | 739 | file-entry-cache@^6.0.1: 740 | version "6.0.1" 741 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 742 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 743 | dependencies: 744 | flat-cache "^3.0.4" 745 | 746 | find-up@^2.1.0: 747 | version "2.1.0" 748 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 749 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 750 | dependencies: 751 | locate-path "^2.0.0" 752 | 753 | flat-cache@^3.0.4: 754 | version "3.0.4" 755 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 756 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 757 | dependencies: 758 | flatted "^3.1.0" 759 | rimraf "^3.0.2" 760 | 761 | flatted@^3.1.0: 762 | version "3.2.2" 763 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" 764 | integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== 765 | 766 | fs.realpath@^1.0.0: 767 | version "1.0.0" 768 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 769 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 770 | 771 | function-bind@^1.1.1: 772 | version "1.1.1" 773 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 774 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 775 | 776 | functional-red-black-tree@^1.0.1: 777 | version "1.0.1" 778 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 779 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 780 | 781 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 782 | version "1.1.1" 783 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 784 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 785 | dependencies: 786 | function-bind "^1.1.1" 787 | has "^1.0.3" 788 | has-symbols "^1.0.1" 789 | 790 | get-symbol-description@^1.0.0: 791 | version "1.0.0" 792 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 793 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 794 | dependencies: 795 | call-bind "^1.0.2" 796 | get-intrinsic "^1.1.1" 797 | 798 | glob-parent@^5.1.2: 799 | version "5.1.2" 800 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 801 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 802 | dependencies: 803 | is-glob "^4.0.1" 804 | 805 | glob@^7.1.3: 806 | version "7.2.0" 807 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 808 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 809 | dependencies: 810 | fs.realpath "^1.0.0" 811 | inflight "^1.0.4" 812 | inherits "2" 813 | minimatch "^3.0.4" 814 | once "^1.3.0" 815 | path-is-absolute "^1.0.0" 816 | 817 | globals@^11.1.0: 818 | version "11.12.0" 819 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 820 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 821 | 822 | globals@^13.6.0, globals@^13.9.0: 823 | version "13.11.0" 824 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" 825 | integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== 826 | dependencies: 827 | type-fest "^0.20.2" 828 | 829 | has-bigints@^1.0.1: 830 | version "1.0.1" 831 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 832 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 833 | 834 | has-flag@^3.0.0: 835 | version "3.0.0" 836 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 837 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 838 | 839 | has-flag@^4.0.0: 840 | version "4.0.0" 841 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 842 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 843 | 844 | has-symbols@^1.0.1, has-symbols@^1.0.2: 845 | version "1.0.2" 846 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 847 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 848 | 849 | has-tostringtag@^1.0.0: 850 | version "1.0.0" 851 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 852 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 853 | dependencies: 854 | has-symbols "^1.0.2" 855 | 856 | has@^1.0.3: 857 | version "1.0.3" 858 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 859 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 860 | dependencies: 861 | function-bind "^1.1.1" 862 | 863 | ignore@^4.0.6: 864 | version "4.0.6" 865 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 866 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 867 | 868 | ignore@^5.1.1: 869 | version "5.1.8" 870 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 871 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 872 | 873 | import-fresh@^3.0.0, import-fresh@^3.2.1: 874 | version "3.3.0" 875 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 876 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 877 | dependencies: 878 | parent-module "^1.0.0" 879 | resolve-from "^4.0.0" 880 | 881 | imurmurhash@^0.1.4: 882 | version "0.1.4" 883 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 884 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 885 | 886 | inflight@^1.0.4: 887 | version "1.0.6" 888 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 889 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 890 | dependencies: 891 | once "^1.3.0" 892 | wrappy "1" 893 | 894 | inherits@2: 895 | version "2.0.4" 896 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 897 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 898 | 899 | internal-slot@^1.0.3: 900 | version "1.0.3" 901 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 902 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 903 | dependencies: 904 | get-intrinsic "^1.1.0" 905 | has "^1.0.3" 906 | side-channel "^1.0.4" 907 | 908 | is-bigint@^1.0.1: 909 | version "1.0.4" 910 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 911 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 912 | dependencies: 913 | has-bigints "^1.0.1" 914 | 915 | is-boolean-object@^1.1.0: 916 | version "1.1.2" 917 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 918 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 919 | dependencies: 920 | call-bind "^1.0.2" 921 | has-tostringtag "^1.0.0" 922 | 923 | is-callable@^1.1.4, is-callable@^1.2.4: 924 | version "1.2.4" 925 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 926 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 927 | 928 | is-core-module@^2.2.0, is-core-module@^2.7.0: 929 | version "2.8.0" 930 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 931 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 932 | dependencies: 933 | has "^1.0.3" 934 | 935 | is-date-object@^1.0.1: 936 | version "1.0.5" 937 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 938 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 939 | dependencies: 940 | has-tostringtag "^1.0.0" 941 | 942 | is-extglob@^2.1.1: 943 | version "2.1.1" 944 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 945 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 946 | 947 | is-fullwidth-code-point@^3.0.0: 948 | version "3.0.0" 949 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 950 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 951 | 952 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 953 | version "4.0.3" 954 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 955 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 956 | dependencies: 957 | is-extglob "^2.1.1" 958 | 959 | is-negative-zero@^2.0.1: 960 | version "2.0.1" 961 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 962 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 963 | 964 | is-number-object@^1.0.4: 965 | version "1.0.6" 966 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 967 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 968 | dependencies: 969 | has-tostringtag "^1.0.0" 970 | 971 | is-regex@^1.1.4: 972 | version "1.1.4" 973 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 974 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 975 | dependencies: 976 | call-bind "^1.0.2" 977 | has-tostringtag "^1.0.0" 978 | 979 | is-shared-array-buffer@^1.0.1: 980 | version "1.0.1" 981 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 982 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 983 | 984 | is-string@^1.0.5, is-string@^1.0.7: 985 | version "1.0.7" 986 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 987 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 988 | dependencies: 989 | has-tostringtag "^1.0.0" 990 | 991 | is-symbol@^1.0.2, is-symbol@^1.0.3: 992 | version "1.0.4" 993 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 994 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 995 | dependencies: 996 | has-symbols "^1.0.2" 997 | 998 | is-weakref@^1.0.1: 999 | version "1.0.1" 1000 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" 1001 | integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== 1002 | dependencies: 1003 | call-bind "^1.0.0" 1004 | 1005 | isexe@^2.0.0: 1006 | version "2.0.0" 1007 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1008 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1009 | 1010 | js-tokens@^4.0.0: 1011 | version "4.0.0" 1012 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1013 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1014 | 1015 | js-yaml@^3.13.1: 1016 | version "3.14.1" 1017 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1018 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1019 | dependencies: 1020 | argparse "^1.0.7" 1021 | esprima "^4.0.0" 1022 | 1023 | jsesc@^2.5.1: 1024 | version "2.5.2" 1025 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1026 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1027 | 1028 | json-schema-traverse@^0.4.1: 1029 | version "0.4.1" 1030 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1031 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1032 | 1033 | json-schema-traverse@^1.0.0: 1034 | version "1.0.0" 1035 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1036 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1037 | 1038 | json-stable-stringify-without-jsonify@^1.0.1: 1039 | version "1.0.1" 1040 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1041 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1042 | 1043 | json5@^1.0.1: 1044 | version "1.0.1" 1045 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1046 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1047 | dependencies: 1048 | minimist "^1.2.0" 1049 | 1050 | levn@^0.4.1: 1051 | version "0.4.1" 1052 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1053 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1054 | dependencies: 1055 | prelude-ls "^1.2.1" 1056 | type-check "~0.4.0" 1057 | 1058 | locate-path@^2.0.0: 1059 | version "2.0.0" 1060 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1061 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1062 | dependencies: 1063 | p-locate "^2.0.0" 1064 | path-exists "^3.0.0" 1065 | 1066 | lodash.clonedeep@^4.5.0: 1067 | version "4.5.0" 1068 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1069 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 1070 | 1071 | lodash.merge@^4.6.2: 1072 | version "4.6.2" 1073 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1074 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1075 | 1076 | lodash.truncate@^4.4.2: 1077 | version "4.4.2" 1078 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1079 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 1080 | 1081 | lru-cache@^6.0.0: 1082 | version "6.0.0" 1083 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1084 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1085 | dependencies: 1086 | yallist "^4.0.0" 1087 | 1088 | minimatch@^3.0.4: 1089 | version "3.0.4" 1090 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1091 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1092 | dependencies: 1093 | brace-expansion "^1.1.7" 1094 | 1095 | minimist@^1.2.0: 1096 | version "1.2.5" 1097 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1098 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1099 | 1100 | ms@2.0.0: 1101 | version "2.0.0" 1102 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1103 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1104 | 1105 | ms@2.1.2: 1106 | version "2.1.2" 1107 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1108 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1109 | 1110 | ms@^2.1.1: 1111 | version "2.1.3" 1112 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1113 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1114 | 1115 | natural-compare@^1.4.0: 1116 | version "1.4.0" 1117 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1118 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1119 | 1120 | object-inspect@^1.11.0, object-inspect@^1.9.0: 1121 | version "1.11.0" 1122 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" 1123 | integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== 1124 | 1125 | object-keys@^1.0.12, object-keys@^1.1.1: 1126 | version "1.1.1" 1127 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1128 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1129 | 1130 | object.assign@^4.1.2: 1131 | version "4.1.2" 1132 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1133 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1134 | dependencies: 1135 | call-bind "^1.0.0" 1136 | define-properties "^1.1.3" 1137 | has-symbols "^1.0.1" 1138 | object-keys "^1.1.1" 1139 | 1140 | object.values@^1.1.5: 1141 | version "1.1.5" 1142 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" 1143 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== 1144 | dependencies: 1145 | call-bind "^1.0.2" 1146 | define-properties "^1.1.3" 1147 | es-abstract "^1.19.1" 1148 | 1149 | once@^1.3.0: 1150 | version "1.4.0" 1151 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1152 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1153 | dependencies: 1154 | wrappy "1" 1155 | 1156 | optionator@^0.9.1: 1157 | version "0.9.1" 1158 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1159 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1160 | dependencies: 1161 | deep-is "^0.1.3" 1162 | fast-levenshtein "^2.0.6" 1163 | levn "^0.4.1" 1164 | prelude-ls "^1.2.1" 1165 | type-check "^0.4.0" 1166 | word-wrap "^1.2.3" 1167 | 1168 | p-limit@^1.1.0: 1169 | version "1.3.0" 1170 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1171 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1172 | dependencies: 1173 | p-try "^1.0.0" 1174 | 1175 | p-locate@^2.0.0: 1176 | version "2.0.0" 1177 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1178 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1179 | dependencies: 1180 | p-limit "^1.1.0" 1181 | 1182 | p-try@^1.0.0: 1183 | version "1.0.0" 1184 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1185 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1186 | 1187 | parent-module@^1.0.0: 1188 | version "1.0.1" 1189 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1190 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1191 | dependencies: 1192 | callsites "^3.0.0" 1193 | 1194 | path-exists@^3.0.0: 1195 | version "3.0.0" 1196 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1197 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1198 | 1199 | path-is-absolute@^1.0.0: 1200 | version "1.0.1" 1201 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1202 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1203 | 1204 | path-key@^3.1.0: 1205 | version "3.1.1" 1206 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1207 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1208 | 1209 | path-parse@^1.0.6: 1210 | version "1.0.7" 1211 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1212 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1213 | 1214 | pkg-dir@^2.0.0: 1215 | version "2.0.0" 1216 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1217 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1218 | dependencies: 1219 | find-up "^2.1.0" 1220 | 1221 | prelude-ls@^1.2.1: 1222 | version "1.2.1" 1223 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1224 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1225 | 1226 | progress@^2.0.0: 1227 | version "2.0.3" 1228 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1229 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1230 | 1231 | punycode@^2.1.0: 1232 | version "2.1.1" 1233 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1234 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1235 | 1236 | regexpp@^3.0.0, regexpp@^3.1.0: 1237 | version "3.2.0" 1238 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1239 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1240 | 1241 | require-from-string@^2.0.2: 1242 | version "2.0.2" 1243 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1244 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1245 | 1246 | resolve-from@^4.0.0: 1247 | version "4.0.0" 1248 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1249 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1250 | 1251 | resolve@^1.10.1, resolve@^1.12.0, resolve@^1.20.0: 1252 | version "1.20.0" 1253 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1254 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1255 | dependencies: 1256 | is-core-module "^2.2.0" 1257 | path-parse "^1.0.6" 1258 | 1259 | rimraf@^3.0.2: 1260 | version "3.0.2" 1261 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1262 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1263 | dependencies: 1264 | glob "^7.1.3" 1265 | 1266 | semver@^6.1.0: 1267 | version "6.3.0" 1268 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1269 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1270 | 1271 | semver@^7.2.1: 1272 | version "7.3.5" 1273 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1274 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1275 | dependencies: 1276 | lru-cache "^6.0.0" 1277 | 1278 | shebang-command@^2.0.0: 1279 | version "2.0.0" 1280 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1281 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1282 | dependencies: 1283 | shebang-regex "^3.0.0" 1284 | 1285 | shebang-regex@^3.0.0: 1286 | version "3.0.0" 1287 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1288 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1289 | 1290 | side-channel@^1.0.4: 1291 | version "1.0.4" 1292 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1293 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1294 | dependencies: 1295 | call-bind "^1.0.0" 1296 | get-intrinsic "^1.0.2" 1297 | object-inspect "^1.9.0" 1298 | 1299 | slice-ansi@^4.0.0: 1300 | version "4.0.0" 1301 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1302 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1303 | dependencies: 1304 | ansi-styles "^4.0.0" 1305 | astral-regex "^2.0.0" 1306 | is-fullwidth-code-point "^3.0.0" 1307 | 1308 | source-map@^0.5.0: 1309 | version "0.5.7" 1310 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1311 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1312 | 1313 | sprintf-js@~1.0.2: 1314 | version "1.0.3" 1315 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1316 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1317 | 1318 | string-width@^4.2.3: 1319 | version "4.2.3" 1320 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1321 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1322 | dependencies: 1323 | emoji-regex "^8.0.0" 1324 | is-fullwidth-code-point "^3.0.0" 1325 | strip-ansi "^6.0.1" 1326 | 1327 | string.prototype.trimend@^1.0.4: 1328 | version "1.0.4" 1329 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 1330 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1331 | dependencies: 1332 | call-bind "^1.0.2" 1333 | define-properties "^1.1.3" 1334 | 1335 | string.prototype.trimstart@^1.0.4: 1336 | version "1.0.4" 1337 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 1338 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1339 | dependencies: 1340 | call-bind "^1.0.2" 1341 | define-properties "^1.1.3" 1342 | 1343 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1344 | version "6.0.1" 1345 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1346 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1347 | dependencies: 1348 | ansi-regex "^5.0.1" 1349 | 1350 | strip-bom@^3.0.0: 1351 | version "3.0.0" 1352 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1353 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1354 | 1355 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1356 | version "3.1.1" 1357 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1358 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1359 | 1360 | supports-color@^5.3.0: 1361 | version "5.5.0" 1362 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1363 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1364 | dependencies: 1365 | has-flag "^3.0.0" 1366 | 1367 | supports-color@^7.1.0: 1368 | version "7.2.0" 1369 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1370 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1371 | dependencies: 1372 | has-flag "^4.0.0" 1373 | 1374 | table@^6.0.9: 1375 | version "6.7.2" 1376 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" 1377 | integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== 1378 | dependencies: 1379 | ajv "^8.0.1" 1380 | lodash.clonedeep "^4.5.0" 1381 | lodash.truncate "^4.4.2" 1382 | slice-ansi "^4.0.0" 1383 | string-width "^4.2.3" 1384 | strip-ansi "^6.0.1" 1385 | 1386 | text-table@^0.2.0: 1387 | version "0.2.0" 1388 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1389 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1390 | 1391 | to-fast-properties@^2.0.0: 1392 | version "2.0.0" 1393 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1394 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1395 | 1396 | tsconfig-paths@^3.11.0: 1397 | version "3.11.0" 1398 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" 1399 | integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== 1400 | dependencies: 1401 | "@types/json5" "^0.0.29" 1402 | json5 "^1.0.1" 1403 | minimist "^1.2.0" 1404 | strip-bom "^3.0.0" 1405 | 1406 | type-check@^0.4.0, type-check@~0.4.0: 1407 | version "0.4.0" 1408 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1409 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1410 | dependencies: 1411 | prelude-ls "^1.2.1" 1412 | 1413 | type-fest@^0.20.2: 1414 | version "0.20.2" 1415 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1416 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1417 | 1418 | unbox-primitive@^1.0.1: 1419 | version "1.0.1" 1420 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 1421 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 1422 | dependencies: 1423 | function-bind "^1.1.1" 1424 | has-bigints "^1.0.1" 1425 | has-symbols "^1.0.2" 1426 | which-boxed-primitive "^1.0.2" 1427 | 1428 | uri-js@^4.2.2: 1429 | version "4.4.1" 1430 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1431 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1432 | dependencies: 1433 | punycode "^2.1.0" 1434 | 1435 | v8-compile-cache@^2.0.3: 1436 | version "2.3.0" 1437 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1438 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1439 | 1440 | which-boxed-primitive@^1.0.2: 1441 | version "1.0.2" 1442 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1443 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1444 | dependencies: 1445 | is-bigint "^1.0.1" 1446 | is-boolean-object "^1.1.0" 1447 | is-number-object "^1.0.4" 1448 | is-string "^1.0.5" 1449 | is-symbol "^1.0.3" 1450 | 1451 | which@^2.0.1: 1452 | version "2.0.2" 1453 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1454 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1455 | dependencies: 1456 | isexe "^2.0.0" 1457 | 1458 | word-wrap@^1.2.3: 1459 | version "1.2.3" 1460 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1461 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1462 | 1463 | wrappy@1: 1464 | version "1.0.2" 1465 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1466 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1467 | 1468 | yallist@^4.0.0: 1469 | version "4.0.0" 1470 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1471 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1472 | --------------------------------------------------------------------------------