diff --git a/packages/expressjs/package.json b/packages/expressjs/package.json index 7870616..3f12815 100644 --- a/packages/expressjs/package.json +++ b/packages/expressjs/package.json @@ -40,6 +40,8 @@ "postupdate": "yarn && yarn build && yarn test" }, "dependencies": { + "@qiwi/decorator-utils": "^1.3.1", + "@qiwi/mware": "^1.10.0", "@qiwi/json-rpc-common": "^1.0.2", "@qiwi/substrate": "^1.18.16", "@types/express": "^4.17.3", diff --git a/packages/expressjs/src/main/ts/index.ts b/packages/expressjs/src/main/ts/index.ts index bcc7a0f..a269985 100644 --- a/packages/expressjs/src/main/ts/index.ts +++ b/packages/expressjs/src/main/ts/index.ts @@ -2,7 +2,7 @@ import 'reflect-metadata' import {get} from 'lodash' -import {Request, Response} from 'express' +import {Request, Response, NextFunction} from 'express' import { JSON_RPC_METADATA, @@ -18,6 +18,8 @@ import { OK, } from '@qiwi/json-rpc-common' import {IMetaTypedValue} from '@qiwi/substrate' +import {constructDecorator, METHOD} from '@qiwi/decorator-utils' + export * from '@qiwi/json-rpc-common' export const enum JsonRpcDecoratorType { @@ -26,6 +28,16 @@ export const enum JsonRpcDecoratorType { PARAMS = 'params', } +const asyncMiddleware = (fn: Function) => function(this: any, req: Request, res: Response, next: NextFunction) { + return Promise.resolve(fn.call(this, req, res, next)).catch(next) +} + +const AsyncMiddleware = constructDecorator((targetType, target) => { + if (targetType === METHOD) { + return asyncMiddleware(target) + } +}) + type IJsonRpcMetaTypedValue = IMetaTypedValue export function JsonRpcMiddleware(): ClassDecorator { @@ -34,6 +46,7 @@ export function JsonRpcMiddleware(): ClassDecorator { const extend: Extender = (base) => { class Extended extends base { + @AsyncMiddleware() protected middleware(req: Request, res: Response): any { const boxedJsonRpc = (this.constructor as any).parseRequest(req) if (!boxedJsonRpc) { diff --git a/packages/expressjs/src/test/ts/index.ts b/packages/expressjs/src/test/ts/index.ts index b1480af..fe36710 100644 --- a/packages/expressjs/src/test/ts/index.ts +++ b/packages/expressjs/src/test/ts/index.ts @@ -46,7 +46,7 @@ describe('expressjs-json-rpc', () => { const controller = new SomeJsonRpcController() const mware = controller.middleware.bind(controller) - it('properly handles request', () => { + it('properly handles request', async() => { const {req, res} = reqresnext({ body: { jsonrpc: '2.0', @@ -59,7 +59,7 @@ describe('expressjs-json-rpc', () => { }, }) - mware(req, res) + await mware(req, res) expect(res.statusCode).toBe(OK) expect(res.body).toBe( @@ -71,7 +71,7 @@ describe('expressjs-json-rpc', () => { ) }) - it('finds proper method', () => { + it('finds proper method', async() => { const {req, res} = reqresnext({ body: { jsonrpc: '2.0', @@ -84,7 +84,7 @@ describe('expressjs-json-rpc', () => { }, }) - mware(req, res) + await mware(req, res) expect(res.statusCode).toBe(OK) expect(res.body).toBe( @@ -96,7 +96,7 @@ describe('expressjs-json-rpc', () => { ) }) - it('returns error if method does not exist', () => { + it('returns error if method does not exist', async() => { const {req, res} = reqresnext({ body: { jsonrpc: '2.0', @@ -106,7 +106,7 @@ describe('expressjs-json-rpc', () => { }, }) - mware(req, res) + await mware(req, res) expect(res.statusCode).toBe(OK) expect(res.body).toBe( @@ -122,7 +122,7 @@ describe('expressjs-json-rpc', () => { ) }) - it('returns error if method returns JsonRpcError', () => { + it('returns error if method returns JsonRpcError', async() => { const {req, res} = reqresnext({ body: { jsonrpc: '2.0', @@ -132,7 +132,7 @@ describe('expressjs-json-rpc', () => { }, }) - mware(req, res) + await mware(req, res) expect(res.statusCode).toBe(OK) expect(res.body).toBe( @@ -148,7 +148,7 @@ describe('expressjs-json-rpc', () => { }) describe('static', () => { - describe('parseRequest', () => { + describe('#parseRequest', () => { it('parseRequest return IJsonRpcMetaTypedValue', () => { // @ts-ignore const res = SomeJsonRpcController.parseRequest({ @@ -180,7 +180,7 @@ describe('expressjs-json-rpc', () => { }) }) - describe('resolveHandler', () => { + describe('#resolveHandler', () => { it('work correctly', () => { // @ts-ignore const boxedRpc = SomeJsonRpcController.parseRequest({ @@ -205,7 +205,7 @@ describe('expressjs-json-rpc', () => { }) }) - describe('resolveParam', () => { + describe('#resolveParam', () => { it('work correctly', () => { // @ts-ignore const boxedRpc = SomeJsonRpcController.parseRequest({ diff --git a/yarn.lock b/yarn.lock index e617206..93cb309 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2139,6 +2139,11 @@ dependencies: "@types/node" ">= 8" +"@qiwi/decorator-utils@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@qiwi/decorator-utils/-/decorator-utils-1.3.1.tgz#fa290c3e3e4f00e496c1bd68845e59570ce699c0" + integrity sha512-SmyuJ3lRhW5ogkqBKnUKZl//2itGVOZ6obyyLyfGvlqKl8fup93rGIrQ1/4ZqFmz/BnSEsuSe7fpli3Id6PxRg== + "@qiwi/multi-semantic-release@^2.4.3": version "2.4.3" resolved "https://registry.yarnpkg.com/@qiwi/multi-semantic-release/-/multi-semantic-release-2.4.3.tgz#aa25110750eb534d8ea4223e218a4a4a6ca651f4" @@ -2162,6 +2167,65 @@ stream-buffers "^3.0.2" tempy "^0.4.0" +"@qiwi/mware-context@*": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-context/-/mware-context-1.10.0.tgz#7fd4590c33c8aa35c3212daf91ae2692cb5b6458" + integrity sha512-FVOOu1enKy38Fqs1ohOjYWYe18GtqJKfaMzC1y+s2mTl0eSQzfBjfpyDkKVcNds8kGrs+OiWsREwlhLuCKwmsQ== + +"@qiwi/mware-core@^1.8.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-core/-/mware-core-1.10.0.tgz#ce50b32f4f7839ffcd734b075512f70d7e5c2500" + integrity sha512-yEh4+A8gVzjv5AUUFnFfF7UX9E5vZqGsmknvocvnalGCfuTLnd6qVBUXgRVu5m/52wiwK0njcnZ2qb0rkV8ceA== + +"@qiwi/mware-cors@^1.8.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-cors/-/mware-cors-1.10.0.tgz#e5ac80c492aefafa6e160eeee966ed737baf6b94" + integrity sha512-At2h06aKPXq9uTnQAH5GRSyrk29hxjKACMw4pCfIsTeWCTtS36rSPnv/iHsvGgPoVzXeGZKJe3BpTAqy/Kk9CQ== + dependencies: + lodash "^4.17.15" + +"@qiwi/mware-crumbs@^1.8.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-crumbs/-/mware-crumbs-1.10.0.tgz#65f20bd1737ee9bad9561d60fe0eafb8b28c132a" + integrity sha512-oZtPyMwjkp/L2fKqB0dv8TT39lZ25E9bwtuJ8lOlyr6IXCCKKgwIIy1DyFsj014tY1bRB7w5YAuzVvJdfEV7GA== + dependencies: + ip "^1.1.5" + +"@qiwi/mware-logger@^1.8.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-logger/-/mware-logger-1.10.0.tgz#174ec181ab437af77e14e0078b5202d8f6f096cf" + integrity sha512-9OssbrZ+WMlVV3YAu3xRPQjFWq8DKhPBOdBQ7EvwD2WW+OLjAYrXzClvEterLikT7qfRPeU0N5JFEEisyyPhTg== + dependencies: + http-status-codes "^1.4.0" + +"@qiwi/mware-mdc@^1.9.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-mdc/-/mware-mdc-1.10.0.tgz#f9ec6f0d40a45bb6724dd768f041d1e937c5a2ad" + integrity sha512-EC0bGpKT66v7yptIif4Qf+/wDXzOCbYWSnPqTUOyzZAJ8w95Rlr7y8kXNm87ISyD9uVcteR6G6uN72y/vDwP/w== + dependencies: + "@qiwi/mware-context" "*" + cls-hooked "^4.2.2" + +"@qiwi/mware-validator@^1.8.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware-validator/-/mware-validator-1.10.0.tgz#3dd17af97f70ad10ed43ad0948ce1349c8d29f66" + integrity sha512-B6caaYyjNOlGwvMNyk+z5TMJhK7HBrwnx5PbjvCzix/98xMQIUJHSaT7wb5q1p5MUXbxQLMaH/R36B6PU26hrA== + dependencies: + ajv "^6.12.0" + http-status-codes "^1.4.0" + +"@qiwi/mware@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@qiwi/mware/-/mware-1.10.0.tgz#4b50aad07dbc623410b34250aafe64dd91730dd0" + integrity sha512-Z3vvu1yBso29UETAlMTNMvsZRMcF0hNaolv1sJmgU8ebDWSPMgamXwCA0N7Dw0FRL3GfHuekp5X32Qy8wO+4LQ== + dependencies: + "@qiwi/mware-core" "^1.8.1" + "@qiwi/mware-cors" "^1.8.1" + "@qiwi/mware-crumbs" "^1.8.1" + "@qiwi/mware-logger" "^1.8.1" + "@qiwi/mware-mdc" "^1.9.0" + "@qiwi/mware-validator" "^1.8.1" + "@qiwi/semantic-release-gh-pages-plugin@^1.15.9": version "1.15.9" resolved "https://registry.yarnpkg.com/@qiwi/semantic-release-gh-pages-plugin/-/semantic-release-gh-pages-plugin-1.15.9.tgz#d20f209026eec0b62d823339a88e7415e59d3a56" @@ -2771,7 +2835,7 @@ aggregate-error@^3.0.0, aggregate-error@^3.0.1: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.2, ajv@^6.5.5: +ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: version "6.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== @@ -3010,6 +3074,13 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-hook-jl@^1.7.6: + version "1.7.6" + resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" + integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== + dependencies: + stack-chain "^1.3.7" + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -3785,6 +3856,15 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +cls-hooked@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" + integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== + dependencies: + async-hook-jl "^1.7.6" + emitter-listener "^1.0.1" + semver "^5.4.1" + cmd-shim@^3.0.0, cmd-shim@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" @@ -4455,14 +4535,14 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^3.1.0, debug@^3.2.6: +debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debuglog@*, debuglog@^1.0.1: +debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -4566,11 +4646,6 @@ detect-indent@^5.0.0, detect-indent@~5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4766,6 +4841,13 @@ email-addresses@^3.0.1: resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb" integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== +emitter-listener@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" + integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== + dependencies: + shimmer "^1.2.0" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -6156,6 +6238,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-status-codes@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-1.4.0.tgz#6e4c15d16ff3a9e2df03b89f3a55e1aae05fb477" + integrity sha512-JrT3ua+WgH8zBD3HEJYbeEgnuQaAnUeRRko/YojPAJjGmIfGD3KPU/asLdsLwKjfxOmQe5nXMQ0pt/7MyapVbQ== + https-proxy-agent@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" @@ -6192,7 +6279,7 @@ humanize-url@^1.0.0: normalize-url "^1.0.0" strip-url-auth "^1.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6289,7 +6376,7 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -imurmurhash@*, imurmurhash@^0.1.4: +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -6412,7 +6499,7 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@1.1.5: +ip@1.1.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -8084,11 +8171,6 @@ lockfile@^1.0.4: dependencies: signal-exit "^3.0.2" -lodash._baseindexof@*: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" - integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= - lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -8097,29 +8179,12 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~3.0.0" -lodash._bindcallback@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._cacheindexof@*: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" - integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= - -lodash._createcache@*: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" - integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= - dependencies: - lodash._getnative "^3.0.0" - lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@*, lodash._getnative@^3.0.0: +lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= @@ -8215,11 +8280,6 @@ lodash.pairs@^3.0.1: dependencies: lodash.keys "^3.0.0" -lodash.restparam@*: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -8908,15 +8968,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9017,22 +9068,6 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.52: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" @@ -9156,7 +9191,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.4, npm-packlist@^1.4.8: +npm-packlist@^1.1.12, npm-packlist@^1.4.4, npm-packlist@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== @@ -9336,7 +9371,7 @@ npm@^6.10.3: worker-farm "^1.7.0" write-file-atomic "^2.4.3" -npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: +npmlog@^4.1.2, npmlog@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -10598,7 +10633,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -11113,7 +11148,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -11495,6 +11530,11 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +shimmer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -11767,6 +11807,11 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-chain@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= + stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" @@ -12161,7 +12206,7 @@ sync-rpc@^1.2.1: dependencies: get-port "^3.1.0" -tar@^4.4.10, tar@^4.4.12, tar@^4.4.13, tar@^4.4.2, tar@^4.4.8: +tar@^4.4.10, tar@^4.4.12, tar@^4.4.13, tar@^4.4.8: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==