├── .gitignore ├── .travis.yml ├── index.js ├── index.d.ts ├── package.json ├── README.md ├── test.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8" 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const asyncUtil = fn => 2 | function asyncUtilWrap(...args) { 3 | const fnReturn = fn(...args) 4 | const next = args[args.length-1] 5 | return Promise.resolve(fnReturn).catch(next) 6 | } 7 | 8 | module.exports = asyncUtil 9 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import express = require('express'); 2 | import core = require('express-serve-static-core'); 3 | 4 | declare function expressAsyncHandler< 5 | P = core.ParamsDictionary, 6 | ResBody = any, 7 | ReqBody = any, 8 | ReqQuery = core.Query, 9 | >(handler: (...args: Parameters>) => void | Promise): 10 | express.RequestHandler; 11 | 12 | declare namespace expressAsyncHandler { 13 | 14 | } 15 | 16 | export = expressAsyncHandler; 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-async-handler", 3 | "version": "1.2.0", 4 | "description": "Express Error Handler for Async Functions", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/Abazhenov/express-async-handler.git" 9 | }, 10 | "scripts": { 11 | "test": "mocha test.js" 12 | }, 13 | "keywords": [ 14 | "express", 15 | "async", 16 | "error middleware", 17 | "await", 18 | "error", 19 | "handling" 20 | ], 21 | "author": "Alex Bazhenov", 22 | "license": "MIT", 23 | "devDependencies": { 24 | "@types/express": "*", 25 | "chai": "^4.3.4", 26 | "mocha": "^9.1.3", 27 | "sinon": "^11.1.2", 28 | "sinon-chai": "^3.7.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Simple middleware for handling exceptions inside of async express routes and passing them to your express error handlers. 2 | 3 | ### Installation: 4 | 5 | ``` 6 | npm install --save express-async-handler 7 | ``` 8 | or 9 | ``` 10 | yarn add express-async-handler 11 | ``` 12 | 13 | ### Usage: 14 | 15 | ```javascript 16 | const asyncHandler = require('express-async-handler') 17 | 18 | express.get('/', asyncHandler(async (req, res, next) => { 19 | const bar = await foo.findAll(); 20 | res.send(bar) 21 | })) 22 | ``` 23 | 24 | Without express-async-handler 25 | 26 | ```javascript 27 | express.get('/',(req, res, next) => { 28 | foo.findAll() 29 | .then ( bar => { 30 | res.send(bar) 31 | } ) 32 | .catch(next); // error passed on to the error handling route 33 | }) 34 | ``` 35 | 36 | #### Import in Typescript: 37 | 38 | ```javascript 39 | import asyncHandler from "express-async-handler" 40 | ``` 41 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | const chai = require('chai') 2 | const sinon = require('sinon') 3 | const sinonChai = require('sinon-chai') 4 | const { expect } = chai 5 | 6 | chai.use(sinonChai) 7 | chai.should() 8 | 9 | 10 | 11 | const asyncUtil = require('./index') 12 | 13 | describe('asyncUtil', () => { 14 | 15 | it('should catch exceptions of a function passed into it', async () => { 16 | const error = new Error('catch me!') 17 | const foo = asyncUtil(() => { 18 | throw error 19 | }) 20 | expect(foo).to.throw(error) 21 | }) 22 | 23 | it('should call next with the error when an async function passed into it throws', async () => { 24 | const error = new Error('catch me!') 25 | const next = sinon.spy(); 26 | const foo = asyncUtil(async (req, res, next) => { 27 | throw error 28 | }) 29 | 30 | await foo(null, null, next) 31 | expect(next).to.have.been.calledWith(error) 32 | }) 33 | 34 | it('should call next with the arguments when an async function passed into it calls next', async () => { 35 | const next = sinon.spy() 36 | const foo = asyncUtil(async (req, res, next) => { 37 | next('test') 38 | }) 39 | 40 | await foo(null, null, next) 41 | expect(next).to.have.been.calledWith('test') 42 | }) 43 | 44 | it('should provide additional arguments to the middleware', async () => { 45 | const next = sinon.spy() 46 | const id = '1'; 47 | const foo = asyncUtil(async (req, res, next, id) => { 48 | return id; 49 | }) 50 | 51 | const result = await foo(null, null, next, id); 52 | expect(result).to.equal(id); 53 | }) 54 | 55 | it('should accept a non-async function', async () => { 56 | const next = sinon.spy() 57 | const foo = asyncUtil((req, res, next) => { 58 | next('test') 59 | }) 60 | 61 | await foo(null, null, next) 62 | expect(next).to.have.been.calledWith('test') 63 | }) 64 | 65 | it('should accept a non-async function erroring', async () => { 66 | const error = new Error('catch me!') 67 | const next = sinon.spy(); 68 | const foo = asyncUtil((req, res, next) => { 69 | next(error) 70 | }) 71 | 72 | await foo(null, null, next) 73 | expect(next).to.have.been.calledWith(error) 74 | }) 75 | 76 | // NB, thenables are not guaranteed to have a `catch` method. 77 | it('should handle thenables', async () => { 78 | const error = Error('catch me!') 79 | // construct a minimalist thenable which we can fail at a specific time 80 | let thenable, triggerFailure 81 | const registeringThenable = new Promise(res => { 82 | thenable = { 83 | then: sinon.spy((success, fail) => { 84 | triggerFailure = fail 85 | res() 86 | }) 87 | } 88 | }) 89 | 90 | // test the actual library feature 91 | const next = sinon.spy() 92 | const catchingThenable = asyncUtil(_ => thenable)(null, null, next) 93 | await registeringThenable 94 | expect(thenable.then).to.have.been.called 95 | expect(next).not.to.have.been.called 96 | triggerFailure(error) 97 | await catchingThenable 98 | expect(next).to.have.been.calledWith(error) 99 | }) 100 | }) 101 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": 6 | version "1.8.3" 7 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" 8 | integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== 9 | dependencies: 10 | type-detect "4.0.8" 11 | 12 | "@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.2": 13 | version "7.1.2" 14 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" 15 | integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== 16 | dependencies: 17 | "@sinonjs/commons" "^1.7.0" 18 | 19 | "@sinonjs/samsam@^6.0.2": 20 | version "6.0.2" 21 | resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" 22 | integrity sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ== 23 | dependencies: 24 | "@sinonjs/commons" "^1.6.0" 25 | lodash.get "^4.4.2" 26 | type-detect "^4.0.8" 27 | 28 | "@sinonjs/text-encoding@^0.7.1": 29 | version "0.7.1" 30 | resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" 31 | integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== 32 | 33 | "@types/body-parser@*": 34 | version "1.19.1" 35 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" 36 | integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== 37 | dependencies: 38 | "@types/connect" "*" 39 | "@types/node" "*" 40 | 41 | "@types/connect@*": 42 | version "3.4.35" 43 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 44 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 45 | dependencies: 46 | "@types/node" "*" 47 | 48 | "@types/express-serve-static-core@^4.17.18": 49 | version "4.17.24" 50 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" 51 | integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== 52 | dependencies: 53 | "@types/node" "*" 54 | "@types/qs" "*" 55 | "@types/range-parser" "*" 56 | 57 | "@types/express@*": 58 | version "4.17.13" 59 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" 60 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== 61 | dependencies: 62 | "@types/body-parser" "*" 63 | "@types/express-serve-static-core" "^4.17.18" 64 | "@types/qs" "*" 65 | "@types/serve-static" "*" 66 | 67 | "@types/mime@^1": 68 | version "1.3.2" 69 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 70 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 71 | 72 | "@types/node@*": 73 | version "16.11.0" 74 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" 75 | integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== 76 | 77 | "@types/qs@*": 78 | version "6.9.7" 79 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 80 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 81 | 82 | "@types/range-parser@*": 83 | version "1.2.4" 84 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 85 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 86 | 87 | "@types/serve-static@*": 88 | version "1.13.10" 89 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" 90 | integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== 91 | dependencies: 92 | "@types/mime" "^1" 93 | "@types/node" "*" 94 | 95 | "@ungap/promise-all-settled@1.1.2": 96 | version "1.1.2" 97 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 98 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 99 | 100 | ansi-colors@4.1.1: 101 | version "4.1.1" 102 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 103 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 104 | 105 | ansi-regex@^5.0.1: 106 | version "5.0.1" 107 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 108 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 109 | 110 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 111 | version "4.3.0" 112 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 113 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 114 | dependencies: 115 | color-convert "^2.0.1" 116 | 117 | anymatch@~3.1.2: 118 | version "3.1.2" 119 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 120 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 121 | dependencies: 122 | normalize-path "^3.0.0" 123 | picomatch "^2.0.4" 124 | 125 | argparse@^2.0.1: 126 | version "2.0.1" 127 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 128 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 129 | 130 | assertion-error@^1.1.0: 131 | version "1.1.0" 132 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 133 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 134 | 135 | balanced-match@^1.0.0: 136 | version "1.0.2" 137 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 138 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 139 | 140 | binary-extensions@^2.0.0: 141 | version "2.2.0" 142 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 143 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 144 | 145 | brace-expansion@^1.1.7: 146 | version "1.1.11" 147 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 148 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 149 | dependencies: 150 | balanced-match "^1.0.0" 151 | concat-map "0.0.1" 152 | 153 | braces@~3.0.2: 154 | version "3.0.2" 155 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 156 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 157 | dependencies: 158 | fill-range "^7.0.1" 159 | 160 | browser-stdout@1.3.1: 161 | version "1.3.1" 162 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 163 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 164 | 165 | camelcase@^6.0.0: 166 | version "6.2.0" 167 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 168 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 169 | 170 | chai@^4.3.4: 171 | version "4.3.4" 172 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" 173 | integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== 174 | dependencies: 175 | assertion-error "^1.1.0" 176 | check-error "^1.0.2" 177 | deep-eql "^3.0.1" 178 | get-func-name "^2.0.0" 179 | pathval "^1.1.1" 180 | type-detect "^4.0.5" 181 | 182 | chalk@^4.1.0: 183 | version "4.1.2" 184 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 185 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 186 | dependencies: 187 | ansi-styles "^4.1.0" 188 | supports-color "^7.1.0" 189 | 190 | check-error@^1.0.2: 191 | version "1.0.2" 192 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 193 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 194 | 195 | chokidar@3.5.2: 196 | version "3.5.2" 197 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 198 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 199 | dependencies: 200 | anymatch "~3.1.2" 201 | braces "~3.0.2" 202 | glob-parent "~5.1.2" 203 | is-binary-path "~2.1.0" 204 | is-glob "~4.0.1" 205 | normalize-path "~3.0.0" 206 | readdirp "~3.6.0" 207 | optionalDependencies: 208 | fsevents "~2.3.2" 209 | 210 | cliui@^7.0.2: 211 | version "7.0.4" 212 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 213 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 214 | dependencies: 215 | string-width "^4.2.0" 216 | strip-ansi "^6.0.0" 217 | wrap-ansi "^7.0.0" 218 | 219 | color-convert@^2.0.1: 220 | version "2.0.1" 221 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 222 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 223 | dependencies: 224 | color-name "~1.1.4" 225 | 226 | color-name@~1.1.4: 227 | version "1.1.4" 228 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 229 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 230 | 231 | concat-map@0.0.1: 232 | version "0.0.1" 233 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 234 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 235 | 236 | debug@4.3.2: 237 | version "4.3.2" 238 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 239 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 240 | dependencies: 241 | ms "2.1.2" 242 | 243 | decamelize@^4.0.0: 244 | version "4.0.0" 245 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 246 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 247 | 248 | deep-eql@^3.0.1: 249 | version "3.0.1" 250 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 251 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 252 | dependencies: 253 | type-detect "^4.0.0" 254 | 255 | diff@5.0.0, diff@^5.0.0: 256 | version "5.0.0" 257 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 258 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 259 | 260 | emoji-regex@^8.0.0: 261 | version "8.0.0" 262 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 263 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 264 | 265 | escalade@^3.1.1: 266 | version "3.1.1" 267 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 268 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 269 | 270 | escape-string-regexp@4.0.0: 271 | version "4.0.0" 272 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 273 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 274 | 275 | fill-range@^7.0.1: 276 | version "7.0.1" 277 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 278 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 279 | dependencies: 280 | to-regex-range "^5.0.1" 281 | 282 | find-up@5.0.0: 283 | version "5.0.0" 284 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 285 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 286 | dependencies: 287 | locate-path "^6.0.0" 288 | path-exists "^4.0.0" 289 | 290 | flat@^5.0.2: 291 | version "5.0.2" 292 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 293 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 294 | 295 | fs.realpath@^1.0.0: 296 | version "1.0.0" 297 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 298 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 299 | 300 | fsevents@~2.3.2: 301 | version "2.3.2" 302 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 303 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 304 | 305 | get-caller-file@^2.0.5: 306 | version "2.0.5" 307 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 308 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 309 | 310 | get-func-name@^2.0.0: 311 | version "2.0.0" 312 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 313 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 314 | 315 | glob-parent@~5.1.2: 316 | version "5.1.2" 317 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 318 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 319 | dependencies: 320 | is-glob "^4.0.1" 321 | 322 | glob@7.1.7: 323 | version "7.1.7" 324 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 325 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 326 | dependencies: 327 | fs.realpath "^1.0.0" 328 | inflight "^1.0.4" 329 | inherits "2" 330 | minimatch "^3.0.4" 331 | once "^1.3.0" 332 | path-is-absolute "^1.0.0" 333 | 334 | growl@1.10.5: 335 | version "1.10.5" 336 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 337 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 338 | 339 | has-flag@^4.0.0: 340 | version "4.0.0" 341 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 342 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 343 | 344 | he@1.2.0: 345 | version "1.2.0" 346 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 347 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 348 | 349 | inflight@^1.0.4: 350 | version "1.0.6" 351 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 352 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 353 | dependencies: 354 | once "^1.3.0" 355 | wrappy "1" 356 | 357 | inherits@2: 358 | version "2.0.4" 359 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 360 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 361 | 362 | is-binary-path@~2.1.0: 363 | version "2.1.0" 364 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 365 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 366 | dependencies: 367 | binary-extensions "^2.0.0" 368 | 369 | is-extglob@^2.1.1: 370 | version "2.1.1" 371 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 372 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 373 | 374 | is-fullwidth-code-point@^3.0.0: 375 | version "3.0.0" 376 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 377 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 378 | 379 | is-glob@^4.0.1, is-glob@~4.0.1: 380 | version "4.0.3" 381 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 382 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 383 | dependencies: 384 | is-extglob "^2.1.1" 385 | 386 | is-number@^7.0.0: 387 | version "7.0.0" 388 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 389 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 390 | 391 | is-plain-obj@^2.1.0: 392 | version "2.1.0" 393 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 394 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 395 | 396 | is-unicode-supported@^0.1.0: 397 | version "0.1.0" 398 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 399 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 400 | 401 | isarray@0.0.1: 402 | version "0.0.1" 403 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 404 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 405 | 406 | isexe@^2.0.0: 407 | version "2.0.0" 408 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 409 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 410 | 411 | js-yaml@4.1.0: 412 | version "4.1.0" 413 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 414 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 415 | dependencies: 416 | argparse "^2.0.1" 417 | 418 | just-extend@^4.0.2: 419 | version "4.2.1" 420 | resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" 421 | integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== 422 | 423 | locate-path@^6.0.0: 424 | version "6.0.0" 425 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 426 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 427 | dependencies: 428 | p-locate "^5.0.0" 429 | 430 | lodash.get@^4.4.2: 431 | version "4.4.2" 432 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 433 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= 434 | 435 | log-symbols@4.1.0: 436 | version "4.1.0" 437 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 438 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 439 | dependencies: 440 | chalk "^4.1.0" 441 | is-unicode-supported "^0.1.0" 442 | 443 | minimatch@3.0.4, minimatch@^3.0.4: 444 | version "3.0.4" 445 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 446 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 447 | dependencies: 448 | brace-expansion "^1.1.7" 449 | 450 | mocha@^9.1.3: 451 | version "9.1.3" 452 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.3.tgz#8a623be6b323810493d8c8f6f7667440fa469fdb" 453 | integrity sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw== 454 | dependencies: 455 | "@ungap/promise-all-settled" "1.1.2" 456 | ansi-colors "4.1.1" 457 | browser-stdout "1.3.1" 458 | chokidar "3.5.2" 459 | debug "4.3.2" 460 | diff "5.0.0" 461 | escape-string-regexp "4.0.0" 462 | find-up "5.0.0" 463 | glob "7.1.7" 464 | growl "1.10.5" 465 | he "1.2.0" 466 | js-yaml "4.1.0" 467 | log-symbols "4.1.0" 468 | minimatch "3.0.4" 469 | ms "2.1.3" 470 | nanoid "3.1.25" 471 | serialize-javascript "6.0.0" 472 | strip-json-comments "3.1.1" 473 | supports-color "8.1.1" 474 | which "2.0.2" 475 | workerpool "6.1.5" 476 | yargs "16.2.0" 477 | yargs-parser "20.2.4" 478 | yargs-unparser "2.0.0" 479 | 480 | ms@2.1.2: 481 | version "2.1.2" 482 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 483 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 484 | 485 | ms@2.1.3: 486 | version "2.1.3" 487 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 488 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 489 | 490 | nanoid@3.1.25: 491 | version "3.1.25" 492 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" 493 | integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== 494 | 495 | nise@^5.1.0: 496 | version "5.1.0" 497 | resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.0.tgz#713ef3ed138252daef20ec035ab62b7a28be645c" 498 | integrity sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ== 499 | dependencies: 500 | "@sinonjs/commons" "^1.7.0" 501 | "@sinonjs/fake-timers" "^7.0.4" 502 | "@sinonjs/text-encoding" "^0.7.1" 503 | just-extend "^4.0.2" 504 | path-to-regexp "^1.7.0" 505 | 506 | normalize-path@^3.0.0, normalize-path@~3.0.0: 507 | version "3.0.0" 508 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 509 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 510 | 511 | once@^1.3.0: 512 | version "1.4.0" 513 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 514 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 515 | dependencies: 516 | wrappy "1" 517 | 518 | p-limit@^3.0.2: 519 | version "3.1.0" 520 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 521 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 522 | dependencies: 523 | yocto-queue "^0.1.0" 524 | 525 | p-locate@^5.0.0: 526 | version "5.0.0" 527 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 528 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 529 | dependencies: 530 | p-limit "^3.0.2" 531 | 532 | path-exists@^4.0.0: 533 | version "4.0.0" 534 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 535 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 536 | 537 | path-is-absolute@^1.0.0: 538 | version "1.0.1" 539 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 540 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 541 | 542 | path-to-regexp@^1.7.0: 543 | version "1.8.0" 544 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" 545 | integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== 546 | dependencies: 547 | isarray "0.0.1" 548 | 549 | pathval@^1.1.1: 550 | version "1.1.1" 551 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 552 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 553 | 554 | picomatch@^2.0.4, picomatch@^2.2.1: 555 | version "2.3.0" 556 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 557 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 558 | 559 | randombytes@^2.1.0: 560 | version "2.1.0" 561 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 562 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 563 | dependencies: 564 | safe-buffer "^5.1.0" 565 | 566 | readdirp@~3.6.0: 567 | version "3.6.0" 568 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 569 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 570 | dependencies: 571 | picomatch "^2.2.1" 572 | 573 | require-directory@^2.1.1: 574 | version "2.1.1" 575 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 576 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 577 | 578 | safe-buffer@^5.1.0: 579 | version "5.2.1" 580 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 581 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 582 | 583 | serialize-javascript@6.0.0: 584 | version "6.0.0" 585 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 586 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 587 | dependencies: 588 | randombytes "^2.1.0" 589 | 590 | sinon-chai@^3.7.0: 591 | version "3.7.0" 592 | resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783" 593 | integrity sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g== 594 | 595 | sinon@^11.1.2: 596 | version "11.1.2" 597 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" 598 | integrity sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw== 599 | dependencies: 600 | "@sinonjs/commons" "^1.8.3" 601 | "@sinonjs/fake-timers" "^7.1.2" 602 | "@sinonjs/samsam" "^6.0.2" 603 | diff "^5.0.0" 604 | nise "^5.1.0" 605 | supports-color "^7.2.0" 606 | 607 | string-width@^4.1.0, string-width@^4.2.0: 608 | version "4.2.3" 609 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 610 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 611 | dependencies: 612 | emoji-regex "^8.0.0" 613 | is-fullwidth-code-point "^3.0.0" 614 | strip-ansi "^6.0.1" 615 | 616 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 617 | version "6.0.1" 618 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 619 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 620 | dependencies: 621 | ansi-regex "^5.0.1" 622 | 623 | strip-json-comments@3.1.1: 624 | version "3.1.1" 625 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 626 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 627 | 628 | supports-color@8.1.1: 629 | version "8.1.1" 630 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 631 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 632 | dependencies: 633 | has-flag "^4.0.0" 634 | 635 | supports-color@^7.1.0, supports-color@^7.2.0: 636 | version "7.2.0" 637 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 638 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 639 | dependencies: 640 | has-flag "^4.0.0" 641 | 642 | to-regex-range@^5.0.1: 643 | version "5.0.1" 644 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 645 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 646 | dependencies: 647 | is-number "^7.0.0" 648 | 649 | type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: 650 | version "4.0.8" 651 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 652 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 653 | 654 | which@2.0.2: 655 | version "2.0.2" 656 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 657 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 658 | dependencies: 659 | isexe "^2.0.0" 660 | 661 | workerpool@6.1.5: 662 | version "6.1.5" 663 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" 664 | integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== 665 | 666 | wrap-ansi@^7.0.0: 667 | version "7.0.0" 668 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 669 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 670 | dependencies: 671 | ansi-styles "^4.0.0" 672 | string-width "^4.1.0" 673 | strip-ansi "^6.0.0" 674 | 675 | wrappy@1: 676 | version "1.0.2" 677 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 678 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 679 | 680 | y18n@^5.0.5: 681 | version "5.0.8" 682 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 683 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 684 | 685 | yargs-parser@20.2.4: 686 | version "20.2.4" 687 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 688 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 689 | 690 | yargs-parser@^20.2.2: 691 | version "20.2.9" 692 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 693 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 694 | 695 | yargs-unparser@2.0.0: 696 | version "2.0.0" 697 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 698 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 699 | dependencies: 700 | camelcase "^6.0.0" 701 | decamelize "^4.0.0" 702 | flat "^5.0.2" 703 | is-plain-obj "^2.1.0" 704 | 705 | yargs@16.2.0: 706 | version "16.2.0" 707 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 708 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 709 | dependencies: 710 | cliui "^7.0.2" 711 | escalade "^3.1.1" 712 | get-caller-file "^2.0.5" 713 | require-directory "^2.1.1" 714 | string-width "^4.2.0" 715 | y18n "^5.0.5" 716 | yargs-parser "^20.2.2" 717 | 718 | yocto-queue@^0.1.0: 719 | version "0.1.0" 720 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 721 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 722 | --------------------------------------------------------------------------------