From d4f07913c8c711c03958e2ff03f5d23d2f51c862 Mon Sep 17 00:00:00 2001 From: Annie Li Date: Fri, 23 Sep 2022 15:15:03 -0700 Subject: [PATCH 01/22] Migrate other Stripe infrastructure to TS --- .eslintrc.js | 1 + lib/Webhooks.js | 6 +++-- lib/crypto/SubtleCryptoProvider.js | 2 +- lib/multipart.js | 9 ++++--- lib/net/FetchHttpClient.js | 3 ++- lib/net/NodeHttpClient.js | 3 ++- lib/utils.js | 9 ++++--- src/Error.ts | 4 +-- ...ourceNamespace.js => ResourceNamespace.ts} | 0 src/{Webhooks.js => Webhooks.ts} | 10 +++++--- .../{CryptoProvider.js => CryptoProvider.ts} | 6 ++--- ...ryptoProvider.js => NodeCryptoProvider.ts} | 13 ++++++---- ...ptoProvider.js => SubtleCryptoProvider.ts} | 10 +++++--- src/{multipart.js => multipart.ts} | 11 +++++--- ...{FetchHttpClient.js => FetchHttpClient.ts} | 10 ++++++-- src/net/{HttpClient.js => HttpClient.ts} | 14 +++++++++-- .../{NodeHttpClient.js => NodeHttpClient.ts} | 9 +++++-- src/{utils.js => utils.ts} | 25 +++++++++++++++---- 18 files changed, 100 insertions(+), 45 deletions(-) rename src/{ResourceNamespace.js => ResourceNamespace.ts} (100%) rename src/{Webhooks.js => Webhooks.ts} (96%) rename src/crypto/{CryptoProvider.js => CryptoProvider.ts} (88%) rename src/crypto/{NodeCryptoProvider.js => NodeCryptoProvider.ts} (58%) rename src/crypto/{SubtleCryptoProvider.js => SubtleCryptoProvider.ts} (89%) rename src/{multipart.js => multipart.ts} (91%) rename src/net/{FetchHttpClient.js => FetchHttpClient.ts} (95%) rename src/net/{HttpClient.js => HttpClient.ts} (82%) rename src/net/{NodeHttpClient.js => NodeHttpClient.ts} (93%) rename src/{utils.js => utils.ts} (97%) diff --git a/.eslintrc.js b/.eslintrc.js index 7eecf96137..041cd2c19e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -271,6 +271,7 @@ module.exports = { '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/explicit-function-return-type': 0, '@typescript-eslint/no-var-requires': 0, + '@typescript-eslint/no-this-alias': 0, 'prefer-rest-params': 'off', }, }, diff --git a/lib/Webhooks.js b/lib/Webhooks.js index cfd9232527..9fb4850523 100644 --- a/lib/Webhooks.js +++ b/lib/Webhooks.js @@ -1,8 +1,10 @@ 'use strict'; const utils = require('./utils'); -const {StripeError, StripeSignatureVerificationError} = require('./Error'); +const _Error = require('./Error'); +const {StripeError, StripeSignatureVerificationError} = _Error; const Webhook = { DEFAULT_TOLERANCE: 300, + signature: null, constructEvent(payload, header, secret, tolerance, cryptoProvider) { this.signature.verifyHeader( payload, @@ -205,7 +207,7 @@ function parseHeader(header, scheme) { (accum, item) => { const kv = item.split('='); if (kv[0] === 't') { - accum.timestamp = kv[1]; + accum.timestamp = parseInt(kv[1], 10); } if (kv[0] === scheme) { accum.signatures.push(kv[1]); diff --git a/lib/crypto/SubtleCryptoProvider.js b/lib/crypto/SubtleCryptoProvider.js index 6ff0e2b3c2..cbf5d01373 100644 --- a/lib/crypto/SubtleCryptoProvider.js +++ b/lib/crypto/SubtleCryptoProvider.js @@ -21,7 +21,7 @@ class SubtleCryptoProvider extends CryptoProvider { } /** @override */ async computeHMACSignatureAsync(payload, secret) { - const encoder = new TextEncoder('utf-8'); + const encoder = new TextEncoder(); const key = await this.subtleCrypto.importKey( 'raw', encoder.encode(secret), diff --git a/lib/multipart.js b/lib/multipart.js index bb186e00db..d88d468b1f 100644 --- a/lib/multipart.js +++ b/lib/multipart.js @@ -1,6 +1,7 @@ 'use strict'; const utils = require('./utils'); -const {StripeError} = require('./Error'); +const _Error = require('./Error'); +const {StripeError} = _Error; class StreamProcessingError extends StripeError {} // Method for formatting HTTP body for the multipart/form-data specification // Mostly taken from Fermata.js @@ -26,7 +27,7 @@ const multipartDataGenerator = (method, data, headers) => { for (const k in flattenedData) { const v = flattenedData[k]; push(`--${segno}`); - if (v.hasOwnProperty('data')) { + if (Object.prototype.hasOwnProperty.call(v, 'data')) { push( `Content-Disposition: form-data; name=${q(k)}; filename=${q( v.name || 'blob' @@ -79,4 +80,6 @@ const multipartRequestDataProcessor = (method, data, headers, callback) => { const buffer = multipartDataGenerator(method, data, headers); return callback(null, buffer); }; -module.exports.multipartRequestDataProcessor = multipartRequestDataProcessor; +module.exports = { + multipartRequestDataProcessor: multipartRequestDataProcessor, +}; diff --git a/lib/net/FetchHttpClient.js b/lib/net/FetchHttpClient.js index e57891b8cd..195b1bb0c6 100644 --- a/lib/net/FetchHttpClient.js +++ b/lib/net/FetchHttpClient.js @@ -1,5 +1,6 @@ 'use strict'; -const {HttpClient, HttpClientResponse} = require('./HttpClient'); +const _HttpClient = require('./HttpClient'); +const {HttpClient, HttpClientResponse} = _HttpClient; /** * HTTP client which uses a `fetch` function to issue requests. * diff --git a/lib/net/NodeHttpClient.js b/lib/net/NodeHttpClient.js index 1f9d12c4d8..c5712dfe2f 100644 --- a/lib/net/NodeHttpClient.js +++ b/lib/net/NodeHttpClient.js @@ -1,7 +1,8 @@ 'use strict'; const http = require('http'); const https = require('https'); -const {HttpClient, HttpClientResponse} = require('./HttpClient'); +const _HttpClient = require('./HttpClient'); +const {HttpClient, HttpClientResponse} = _HttpClient; const defaultHttpAgent = new http.Agent({keepAlive: true}); const defaultHttpsAgent = new https.Agent({keepAlive: true}); /** diff --git a/lib/utils.js b/lib/utils.js index 9efd90fd63..d88ffb9d2e 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -31,7 +31,7 @@ const DEPRECATED_OPTIONS = { stripeVersion: 'apiVersion', }; const DEPRECATED_OPTIONS_KEYS = Object.keys(DEPRECATED_OPTIONS); -const utils = (module.exports = { +const utils = { isOptionsHash(o) { return ( o && @@ -342,7 +342,7 @@ const utils = (module.exports = { const value = obj[key]; const newKey = prevKey ? `${prevKey}[${key}]` : key; if (utils.isObject(value)) { - if (!Buffer.isBuffer(value) && !value.hasOwnProperty('data')) { + if (!Buffer.isBuffer(value) && !hasOwn(value, 'data')) { // Non-buffer non-file Objects are recursively flattened return step(value, newKey); } else { @@ -355,7 +355,7 @@ const utils = (module.exports = { } }); }; - step(data); + step(data, null); return result; }, /** @@ -386,7 +386,7 @@ const utils = (module.exports = { platform: process.platform, }; }, -}); +}; function emitWarning(warning) { if (typeof process.emitWarning !== 'function') { return console.warn( @@ -395,3 +395,4 @@ function emitWarning(warning) { } return process.emitWarning(warning, 'Stripe'); } +module.exports = utils; diff --git a/src/Error.ts b/src/Error.ts index c5de62ea0c..3a9cc390aa 100644 --- a/src/Error.ts +++ b/src/Error.ts @@ -18,7 +18,7 @@ type StripeRawError = { doc_url?: string; decline_code?: string; param?: string; - detail?: string; + detail?: any; charge?: string; payment_method_type?: string; @@ -44,7 +44,7 @@ class StripeError extends Error { readonly code?: string; readonly doc_url?: string; readonly param?: string; - readonly detail?: string; + readonly detail?: any; readonly statusCode?: number; readonly charge?: string; readonly decline_code?: string; diff --git a/src/ResourceNamespace.js b/src/ResourceNamespace.ts similarity index 100% rename from src/ResourceNamespace.js rename to src/ResourceNamespace.ts diff --git a/src/Webhooks.js b/src/Webhooks.ts similarity index 96% rename from src/Webhooks.js rename to src/Webhooks.ts index ffbe2004a9..0d3a7683e2 100644 --- a/src/Webhooks.js +++ b/src/Webhooks.ts @@ -1,10 +1,12 @@ 'use strict'; -const utils = require('./utils'); -const {StripeError, StripeSignatureVerificationError} = require('./Error'); +import utils = require('./utils'); +import _Error = require('./Error'); +const {StripeError, StripeSignatureVerificationError} = _Error; const Webhook = { DEFAULT_TOLERANCE: 300, // 5 minutes + signature: null, constructEvent(payload, header, secret, tolerance, cryptoProvider) { this.signature.verifyHeader( @@ -242,7 +244,7 @@ function parseHeader(header, scheme) { const kv = item.split('='); if (kv[0] === 't') { - accum.timestamp = kv[1]; + accum.timestamp = parseInt(kv[1], 10); } if (kv[0] === scheme) { @@ -274,4 +276,4 @@ function getNodeCryptoProvider() { Webhook.signature = signature; -module.exports = Webhook; +export = Webhook; diff --git a/src/crypto/CryptoProvider.js b/src/crypto/CryptoProvider.ts similarity index 88% rename from src/crypto/CryptoProvider.js rename to src/crypto/CryptoProvider.ts index 8f038d06ca..f7be333d61 100644 --- a/src/crypto/CryptoProvider.js +++ b/src/crypto/CryptoProvider.ts @@ -13,7 +13,7 @@ class CryptoProvider { * - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd' * - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43 */ - computeHMACSignature(payload, secret) { + computeHMACSignature(payload: string, secret: string): string { throw new Error('computeHMACSignature not implemented.'); } @@ -28,9 +28,9 @@ class CryptoProvider { * - computeHMACSignature('', 'test_secret') => 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd' * - computeHMACSignature('\ud83d\ude00', 'test_secret') => '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43 */ - computeHMACSignatureAsync(payload, secret) { + computeHMACSignatureAsync(payload: string, secret: string): Promise { throw new Error('computeHMACSignatureAsync not implemented.'); } } -module.exports = CryptoProvider; +export = CryptoProvider; diff --git a/src/crypto/NodeCryptoProvider.js b/src/crypto/NodeCryptoProvider.ts similarity index 58% rename from src/crypto/NodeCryptoProvider.js rename to src/crypto/NodeCryptoProvider.ts index 83c2037ea2..9963825f47 100644 --- a/src/crypto/NodeCryptoProvider.js +++ b/src/crypto/NodeCryptoProvider.ts @@ -1,15 +1,15 @@ 'use strict'; -const crypto = require('crypto'); +import crypto = require('crypto'); -const CryptoProvider = require('./CryptoProvider'); +import CryptoProvider = require('./CryptoProvider'); /** * `CryptoProvider which uses the Node `crypto` package for its computations. */ class NodeCryptoProvider extends CryptoProvider { /** @override */ - computeHMACSignature(payload, secret) { + computeHMACSignature(payload: string, secret: string): string { return crypto .createHmac('sha256', secret) .update(payload, 'utf8') @@ -17,10 +17,13 @@ class NodeCryptoProvider extends CryptoProvider { } /** @override */ - async computeHMACSignatureAsync(payload, secret) { + async computeHMACSignatureAsync( + payload: string, + secret: string + ): Promise { const signature = await this.computeHMACSignature(payload, secret); return signature; } } -module.exports = NodeCryptoProvider; +export = NodeCryptoProvider; diff --git a/src/crypto/SubtleCryptoProvider.js b/src/crypto/SubtleCryptoProvider.ts similarity index 89% rename from src/crypto/SubtleCryptoProvider.js rename to src/crypto/SubtleCryptoProvider.ts index 45aa40dd46..762bbaaf9c 100644 --- a/src/crypto/SubtleCryptoProvider.js +++ b/src/crypto/SubtleCryptoProvider.ts @@ -1,6 +1,6 @@ 'use strict'; -const CryptoProvider = require('./CryptoProvider'); +import CryptoProvider = require('./CryptoProvider'); /** * `CryptoProvider which uses the SubtleCrypto interface of the Web Crypto API. @@ -8,6 +8,8 @@ const CryptoProvider = require('./CryptoProvider'); * This only supports asynchronous operations. */ class SubtleCryptoProvider extends CryptoProvider { + subtleCrypto: any; + constructor(subtleCrypto) { super(); @@ -18,7 +20,7 @@ class SubtleCryptoProvider extends CryptoProvider { } /** @override */ - computeHMACSignature(payload, secret) { + computeHMACSignature(payload: string, secret: string): string { throw new Error( 'SubtleCryptoProvider cannot be used in a synchronous context.' ); @@ -26,7 +28,7 @@ class SubtleCryptoProvider extends CryptoProvider { /** @override */ async computeHMACSignatureAsync(payload, secret) { - const encoder = new TextEncoder('utf-8'); + const encoder = new TextEncoder(); const key = await this.subtleCrypto.importKey( 'raw', @@ -66,4 +68,4 @@ for (let i = 0; i < byteHexMapping.length; i++) { byteHexMapping[i] = i.toString(16).padStart(2, '0'); } -module.exports = SubtleCryptoProvider; +export = SubtleCryptoProvider; diff --git a/src/multipart.js b/src/multipart.ts similarity index 91% rename from src/multipart.js rename to src/multipart.ts index 90682aedda..328452fdc8 100644 --- a/src/multipart.js +++ b/src/multipart.ts @@ -1,7 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const {StripeError} = require('./Error'); +import utils = require('./utils'); +import _Error = require('./Error'); +const {StripeError} = _Error; class StreamProcessingError extends StripeError {} @@ -33,7 +34,7 @@ const multipartDataGenerator = (method, data, headers) => { for (const k in flattenedData) { const v = flattenedData[k]; push(`--${segno}`); - if (v.hasOwnProperty('data')) { + if (Object.prototype.hasOwnProperty.call(v, 'data')) { push( `Content-Disposition: form-data; name=${q(k)}; filename=${q( v.name || 'blob' @@ -93,4 +94,6 @@ const multipartRequestDataProcessor = (method, data, headers, callback) => { return callback(null, buffer); }; -module.exports.multipartRequestDataProcessor = multipartRequestDataProcessor; +export = { + multipartRequestDataProcessor: multipartRequestDataProcessor, +}; diff --git a/src/net/FetchHttpClient.js b/src/net/FetchHttpClient.ts similarity index 95% rename from src/net/FetchHttpClient.js rename to src/net/FetchHttpClient.ts index 431282cd19..3a21ba10f1 100644 --- a/src/net/FetchHttpClient.js +++ b/src/net/FetchHttpClient.ts @@ -1,6 +1,7 @@ 'use strict'; -const {HttpClient, HttpClientResponse} = require('./HttpClient'); +import _HttpClient = require('./HttpClient'); +const {HttpClient, HttpClientResponse} = _HttpClient; /** * HTTP client which uses a `fetch` function to issue requests. @@ -11,6 +12,9 @@ const {HttpClient, HttpClientResponse} = require('./HttpClient'); * node-fetch package (https://github.com/node-fetch/node-fetch). */ class FetchHttpClient extends HttpClient { + _fetchFn: any; + _res: any; + constructor(fetchFn) { super(); this._fetchFn = fetchFn; @@ -88,6 +92,8 @@ class FetchHttpClient extends HttpClient { } class FetchHttpClientResponse extends HttpClientResponse { + _res: any; + constructor(res) { super( res.status, @@ -135,4 +141,4 @@ class FetchHttpClientResponse extends HttpClientResponse { } } -module.exports = {FetchHttpClient, FetchHttpClientResponse}; +export = {FetchHttpClient, FetchHttpClientResponse}; diff --git a/src/net/HttpClient.js b/src/net/HttpClient.ts similarity index 82% rename from src/net/HttpClient.js rename to src/net/HttpClient.ts index b309ce7d9d..3c5baefbc3 100644 --- a/src/net/HttpClient.js +++ b/src/net/HttpClient.ts @@ -1,5 +1,7 @@ 'use strict'; +type TimeoutError = TypeError & {code?: string}; + /** * Encapsulates the logic for issuing a request to the Stripe API. * @@ -10,6 +12,9 @@ * returning their own response class when making requests. */ class HttpClient { + static CONNECTION_CLOSED_ERROR_CODES: string[]; + static TIMEOUT_ERROR_CODE: string; + /** The client name used for diagnostics. */ getClientName() { throw new Error('getClientName not implemented.'); @@ -30,7 +35,9 @@ class HttpClient { /** Helper to make a consistent timeout error across implementations. */ static makeTimeoutError() { - const timeoutErr = new TypeError(HttpClient.TIMEOUT_ERROR_CODE); + const timeoutErr: TimeoutError = new TypeError( + HttpClient.TIMEOUT_ERROR_CODE + ); timeoutErr.code = HttpClient.TIMEOUT_ERROR_CODE; return timeoutErr; } @@ -40,6 +47,9 @@ HttpClient.CONNECTION_CLOSED_ERROR_CODES = ['ECONNRESET', 'EPIPE']; HttpClient.TIMEOUT_ERROR_CODE = 'ETIMEDOUT'; class HttpClientResponse { + _statusCode: number; + _headers: object; + constructor(statusCode, headers) { this._statusCode = statusCode; this._headers = headers; @@ -66,4 +76,4 @@ class HttpClientResponse { } } -module.exports = {HttpClient, HttpClientResponse}; +export = {HttpClient, HttpClientResponse}; diff --git a/src/net/NodeHttpClient.js b/src/net/NodeHttpClient.ts similarity index 93% rename from src/net/NodeHttpClient.js rename to src/net/NodeHttpClient.ts index 222a446ce7..f34358f748 100644 --- a/src/net/NodeHttpClient.js +++ b/src/net/NodeHttpClient.ts @@ -3,7 +3,8 @@ const http = require('http'); const https = require('https'); -const {HttpClient, HttpClientResponse} = require('./HttpClient'); +import _HttpClient = require('./HttpClient'); +const {HttpClient, HttpClientResponse} = _HttpClient; const defaultHttpAgent = new http.Agent({keepAlive: true}); const defaultHttpsAgent = new https.Agent({keepAlive: true}); @@ -13,6 +14,8 @@ const defaultHttpsAgent = new https.Agent({keepAlive: true}); * requests.` */ class NodeHttpClient extends HttpClient { + _agent: any; + constructor(agent) { super(); this._agent = agent; @@ -86,6 +89,8 @@ class NodeHttpClient extends HttpClient { } class NodeHttpClientResponse extends HttpClientResponse { + _res: any; + constructor(res) { super(res.statusCode, res.headers || {}); this._res = res; @@ -122,4 +127,4 @@ class NodeHttpClientResponse extends HttpClientResponse { } } -module.exports = {NodeHttpClient, NodeHttpClientResponse}; +export = {NodeHttpClient, NodeHttpClientResponse}; diff --git a/src/utils.js b/src/utils.ts similarity index 97% rename from src/utils.js rename to src/utils.ts index 7eed41defd..1a75f72732 100644 --- a/src/utils.js +++ b/src/utils.ts @@ -37,7 +37,20 @@ const DEPRECATED_OPTIONS = { }; const DEPRECATED_OPTIONS_KEYS = Object.keys(DEPRECATED_OPTIONS); -const utils = (module.exports = { +type Settings = { + timeout?: number; + maxNetworkRetries?: number; +}; + +type Options = { + auth?: any; + host?: any; + settings?: Settings; + streaming?: boolean; + headers?: {[header: string]: string}; +}; + +const utils = { isOptionsHash(o) { return ( o && @@ -140,7 +153,7 @@ const utils = (module.exports = { * Return the options hash from a list of arguments */ getOptionsFromArgs: (args) => { - const opts = { + const opts: Options = { auth: null, headers: {}, settings: {}, @@ -388,7 +401,7 @@ const utils = (module.exports = { const newKey = prevKey ? `${prevKey}[${key}]` : key; if (utils.isObject(value)) { - if (!Buffer.isBuffer(value) && !value.hasOwnProperty('data')) { + if (!Buffer.isBuffer(value) && !hasOwn(value, 'data')) { // Non-buffer non-file Objects are recursively flattened return step(value, newKey); } else { @@ -402,7 +415,7 @@ const utils = (module.exports = { }); }; - step(data); + step(data, null); return result; }, @@ -438,7 +451,7 @@ const utils = (module.exports = { platform: process.platform, }; }, -}); +}; function emitWarning(warning) { if (typeof process.emitWarning !== 'function') { @@ -449,3 +462,5 @@ function emitWarning(warning) { return process.emitWarning(warning, 'Stripe'); } + +export = utils; From 133d4a2cbb81e43cf5915d5a1cfda4b544e0a7c5 Mon Sep 17 00:00:00 2001 From: Annie Li Date: Mon, 26 Sep 2022 12:27:50 -0700 Subject: [PATCH 02/22] Reviewer comments --- .eslintrc.js | 1 - lib/Webhooks.js | 4 ++++ lib/utils.js | 1 + package.json | 2 +- src/Error.ts | 4 ++-- src/Webhooks.ts | 4 ++++ src/utils.ts | 1 + yarn.lock | 8 ++++---- 8 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 041cd2c19e..7eecf96137 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -271,7 +271,6 @@ module.exports = { '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/explicit-function-return-type': 0, '@typescript-eslint/no-var-requires': 0, - '@typescript-eslint/no-this-alias': 0, 'prefer-rest-params': 'off', }, }, diff --git a/lib/Webhooks.js b/lib/Webhooks.js index 9fb4850523..fd6a0504fd 100644 --- a/lib/Webhooks.js +++ b/lib/Webhooks.js @@ -144,6 +144,7 @@ function parseEventDetails(encodedPayload, encodedHeader, expectedScheme) { if (!details || details.timestamp === -1) { throw new StripeSignatureVerificationError({ message: 'Unable to extract timestamp and signatures from header', + // @ts-expect-error Type '{ decodedHeader: any; decodedPayload: any; }' is not assignable to type 'string'. detail: { decodedHeader, decodedPayload, @@ -153,6 +154,7 @@ function parseEventDetails(encodedPayload, encodedHeader, expectedScheme) { if (!details.signatures.length) { throw new StripeSignatureVerificationError({ message: 'No signatures found with expected scheme', + // @ts-expect-error Type '{ decodedHeader: any; decodedPayload: any; }' is not assignable to type 'string'. detail: { decodedHeader, decodedPayload, @@ -181,6 +183,7 @@ function validateComputedSignature( 'No signatures found matching the expected signature for payload.' + ' Are you passing the raw request body you received from Stripe?' + ' https://github.com/stripe/stripe-node#webhook-signing', + // @ts-expect-error Type '{ header: any; payload: any; }' is not assignable to type 'string'. detail: { header, payload, @@ -191,6 +194,7 @@ function validateComputedSignature( if (tolerance > 0 && timestampAge > tolerance) { throw new StripeSignatureVerificationError({ message: 'Timestamp outside the tolerance zone', + // @ts-expect-error detail: { header, payload, diff --git a/lib/utils.js b/lib/utils.js index d88ffb9d2e..c1b48eb913 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -189,6 +189,7 @@ const utils = { * Provide simple "Class" extension mechanism */ protoExtend(sub) { + // eslint-disable-next-line @typescript-eslint/no-this-alias const Super = this; const Constructor = hasOwn(sub, 'constructor') ? sub.constructor diff --git a/package.json b/package.json index ba4f71cf36..2a1c8f91d7 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "node-fetch": "^2.6.2", "nyc": "^15.1.0", "prettier": "^1.16.4", - "typescript": "^3.7.2" + "typescript": "^3.9.0" }, "resolutions": { "ansi-regex": "5.0.1", diff --git a/src/Error.ts b/src/Error.ts index 3a9cc390aa..c5de62ea0c 100644 --- a/src/Error.ts +++ b/src/Error.ts @@ -18,7 +18,7 @@ type StripeRawError = { doc_url?: string; decline_code?: string; param?: string; - detail?: any; + detail?: string; charge?: string; payment_method_type?: string; @@ -44,7 +44,7 @@ class StripeError extends Error { readonly code?: string; readonly doc_url?: string; readonly param?: string; - readonly detail?: any; + readonly detail?: string; readonly statusCode?: number; readonly charge?: string; readonly decline_code?: string; diff --git a/src/Webhooks.ts b/src/Webhooks.ts index 0d3a7683e2..61cd0b5167 100644 --- a/src/Webhooks.ts +++ b/src/Webhooks.ts @@ -171,6 +171,7 @@ function parseEventDetails(encodedPayload, encodedHeader, expectedScheme) { if (!details || details.timestamp === -1) { throw new StripeSignatureVerificationError({ message: 'Unable to extract timestamp and signatures from header', + // @ts-expect-error Type '{ decodedHeader: any; decodedPayload: any; }' is not assignable to type 'string'. detail: { decodedHeader, decodedPayload, @@ -181,6 +182,7 @@ function parseEventDetails(encodedPayload, encodedHeader, expectedScheme) { if (!details.signatures.length) { throw new StripeSignatureVerificationError({ message: 'No signatures found with expected scheme', + // @ts-expect-error Type '{ decodedHeader: any; decodedPayload: any; }' is not assignable to type 'string'. detail: { decodedHeader, decodedPayload, @@ -212,6 +214,7 @@ function validateComputedSignature( 'No signatures found matching the expected signature for payload.' + ' Are you passing the raw request body you received from Stripe?' + ' https://github.com/stripe/stripe-node#webhook-signing', + // @ts-expect-error Type '{ header: any; payload: any; }' is not assignable to type 'string'. detail: { header, payload, @@ -224,6 +227,7 @@ function validateComputedSignature( if (tolerance > 0 && timestampAge > tolerance) { throw new StripeSignatureVerificationError({ message: 'Timestamp outside the tolerance zone', + // @ts-expect-error detail: { header, payload, diff --git a/src/utils.ts b/src/utils.ts index 1a75f72732..9741d965f0 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -223,6 +223,7 @@ const utils = { * Provide simple "Class" extension mechanism */ protoExtend(sub) { + // eslint-disable-next-line @typescript-eslint/no-this-alias const Super = this; const Constructor = hasOwn(sub, 'constructor') ? sub.constructor diff --git a/yarn.lock b/yarn.lock index 7c7a6481f3..69574b9236 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2395,10 +2395,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^3.7.2: - version "3.9.9" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" - integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== +typescript@^3.9.0: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== uri-js@^4.2.2: version "4.4.1" From 818bfc2b88b22fdf1afd0f8cac4fd6970a770dc3 Mon Sep 17 00:00:00 2001 From: Annie Li Date: Mon, 26 Sep 2022 12:38:46 -0700 Subject: [PATCH 03/22] Update TypeScript --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2a1c8f91d7..5dd537c668 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "node-fetch": "^2.6.2", "nyc": "^15.1.0", "prettier": "^1.16.4", - "typescript": "^3.9.0" + "typescript": "^4.0.0" }, "resolutions": { "ansi-regex": "5.0.1", diff --git a/yarn.lock b/yarn.lock index 69574b9236..72f44410b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2395,10 +2395,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^3.9.0: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== +typescript@^4.0.0: + version "4.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" + integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== uri-js@^4.2.2: version "4.4.1" From e3a86ffc67d9e8d23264aae65fc6209bf486544e Mon Sep 17 00:00:00 2001 From: Annie Li Date: Mon, 26 Sep 2022 19:54:12 -0700 Subject: [PATCH 04/22] Reviewer comments --- lib/Webhooks.js | 2 +- package.json | 2 +- src/Webhooks.ts | 2 +- src/net/FetchHttpClient.ts | 7 +++++-- src/net/HttpClient.ts | 2 +- src/net/NodeHttpClient.ts | 6 +++--- src/utils.ts | 6 +++--- yarn.lock | 2 +- 8 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/Webhooks.js b/lib/Webhooks.js index fd6a0504fd..f7570b3946 100644 --- a/lib/Webhooks.js +++ b/lib/Webhooks.js @@ -194,7 +194,7 @@ function validateComputedSignature( if (tolerance > 0 && timestampAge > tolerance) { throw new StripeSignatureVerificationError({ message: 'Timestamp outside the tolerance zone', - // @ts-expect-error + // @ts-expect-error Type '{ header: any; payload: any; }' is not assignable to type 'string'. detail: { header, payload, diff --git a/package.json b/package.json index 5dd537c668..82e2f7dc33 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "node-fetch": "^2.6.2", "nyc": "^15.1.0", "prettier": "^1.16.4", - "typescript": "^4.0.0" + "typescript": "^4.8.3" }, "resolutions": { "ansi-regex": "5.0.1", diff --git a/src/Webhooks.ts b/src/Webhooks.ts index 61cd0b5167..240e062d35 100644 --- a/src/Webhooks.ts +++ b/src/Webhooks.ts @@ -227,7 +227,7 @@ function validateComputedSignature( if (tolerance > 0 && timestampAge > tolerance) { throw new StripeSignatureVerificationError({ message: 'Timestamp outside the tolerance zone', - // @ts-expect-error + // @ts-expect-error Type '{ header: any; payload: any; }' is not assignable to type 'string'. detail: { header, payload, diff --git a/src/net/FetchHttpClient.ts b/src/net/FetchHttpClient.ts index 3a21ba10f1..7208b8dc65 100644 --- a/src/net/FetchHttpClient.ts +++ b/src/net/FetchHttpClient.ts @@ -12,8 +12,11 @@ const {HttpClient, HttpClientResponse} = _HttpClient; * node-fetch package (https://github.com/node-fetch/node-fetch). */ class FetchHttpClient extends HttpClient { - _fetchFn: any; - _res: any; + _fetchFn: ( + input: RequestInfo | URL, + init?: RequestInit | undefined + ) => Promise; + _res: Response; constructor(fetchFn) { super(); diff --git a/src/net/HttpClient.ts b/src/net/HttpClient.ts index 3c5baefbc3..15d93d5d51 100644 --- a/src/net/HttpClient.ts +++ b/src/net/HttpClient.ts @@ -48,7 +48,7 @@ HttpClient.TIMEOUT_ERROR_CODE = 'ETIMEDOUT'; class HttpClientResponse { _statusCode: number; - _headers: object; + _headers: Record; constructor(statusCode, headers) { this._statusCode = statusCode; diff --git a/src/net/NodeHttpClient.ts b/src/net/NodeHttpClient.ts index f34358f748..f58d899aa3 100644 --- a/src/net/NodeHttpClient.ts +++ b/src/net/NodeHttpClient.ts @@ -1,7 +1,7 @@ 'use strict'; -const http = require('http'); -const https = require('https'); +import http = require('http'); +import https = require('https'); import _HttpClient = require('./HttpClient'); const {HttpClient, HttpClientResponse} = _HttpClient; @@ -14,7 +14,7 @@ const defaultHttpsAgent = new https.Agent({keepAlive: true}); * requests.` */ class NodeHttpClient extends HttpClient { - _agent: any; + _agent: http.Agent | https.Agent; constructor(agent) { super(); diff --git a/src/utils.ts b/src/utils.ts index 9741d965f0..11461eb4b5 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -43,11 +43,11 @@ type Settings = { }; type Options = { - auth?: any; - host?: any; + auth?: string; + host?: string; settings?: Settings; streaming?: boolean; - headers?: {[header: string]: string}; + headers?: Record; }; const utils = { diff --git a/yarn.lock b/yarn.lock index 72f44410b5..dac05c29fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2395,7 +2395,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.0.0: +typescript@^4.8.3: version "4.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== From 651024f710af712779dd95965a51e16f857dd230 Mon Sep 17 00:00:00 2001 From: Annie Li Date: Tue, 27 Sep 2022 09:51:21 -0700 Subject: [PATCH 05/22] Remove 'use strict' from migrated files --- lib/ResourceNamespace.js | 1 - src/ResourceNamespace.ts | 2 -- src/Webhooks.ts | 2 -- src/crypto/CryptoProvider.ts | 2 -- src/crypto/NodeCryptoProvider.ts | 2 -- src/crypto/SubtleCryptoProvider.ts | 2 -- src/multipart.ts | 2 -- src/net/FetchHttpClient.ts | 2 -- src/net/HttpClient.ts | 2 -- src/net/NodeHttpClient.ts | 2 -- src/utils.ts | 2 -- 11 files changed, 21 deletions(-) diff --git a/lib/ResourceNamespace.js b/lib/ResourceNamespace.js index 8267a0fa8b..665a5a3e20 100644 --- a/lib/ResourceNamespace.js +++ b/lib/ResourceNamespace.js @@ -1,4 +1,3 @@ -'use strict'; // ResourceNamespace allows you to create nested resources, i.e. `stripe.issuing.cards`. // It also works recursively, so you could do i.e. `stripe.billing.invoicing.pay`. function ResourceNamespace(stripe, resources) { diff --git a/src/ResourceNamespace.ts b/src/ResourceNamespace.ts index 0d76787d81..c4b6c5566d 100644 --- a/src/ResourceNamespace.ts +++ b/src/ResourceNamespace.ts @@ -1,5 +1,3 @@ -'use strict'; - // ResourceNamespace allows you to create nested resources, i.e. `stripe.issuing.cards`. // It also works recursively, so you could do i.e. `stripe.billing.invoicing.pay`. diff --git a/src/Webhooks.ts b/src/Webhooks.ts index 240e062d35..14d5a4ed8f 100644 --- a/src/Webhooks.ts +++ b/src/Webhooks.ts @@ -1,5 +1,3 @@ -'use strict'; - import utils = require('./utils'); import _Error = require('./Error'); const {StripeError, StripeSignatureVerificationError} = _Error; diff --git a/src/crypto/CryptoProvider.ts b/src/crypto/CryptoProvider.ts index f7be333d61..bd7387c886 100644 --- a/src/crypto/CryptoProvider.ts +++ b/src/crypto/CryptoProvider.ts @@ -1,5 +1,3 @@ -'use strict'; - /** * Interface encapsulating the various crypto computations used by the library, * allowing pluggable underlying crypto implementations. diff --git a/src/crypto/NodeCryptoProvider.ts b/src/crypto/NodeCryptoProvider.ts index 9963825f47..4521bc9106 100644 --- a/src/crypto/NodeCryptoProvider.ts +++ b/src/crypto/NodeCryptoProvider.ts @@ -1,5 +1,3 @@ -'use strict'; - import crypto = require('crypto'); import CryptoProvider = require('./CryptoProvider'); diff --git a/src/crypto/SubtleCryptoProvider.ts b/src/crypto/SubtleCryptoProvider.ts index 762bbaaf9c..3fe810fd9b 100644 --- a/src/crypto/SubtleCryptoProvider.ts +++ b/src/crypto/SubtleCryptoProvider.ts @@ -1,5 +1,3 @@ -'use strict'; - import CryptoProvider = require('./CryptoProvider'); /** diff --git a/src/multipart.ts b/src/multipart.ts index 328452fdc8..dbb59a8bcf 100644 --- a/src/multipart.ts +++ b/src/multipart.ts @@ -1,5 +1,3 @@ -'use strict'; - import utils = require('./utils'); import _Error = require('./Error'); const {StripeError} = _Error; diff --git a/src/net/FetchHttpClient.ts b/src/net/FetchHttpClient.ts index 7208b8dc65..6df1781d23 100644 --- a/src/net/FetchHttpClient.ts +++ b/src/net/FetchHttpClient.ts @@ -1,5 +1,3 @@ -'use strict'; - import _HttpClient = require('./HttpClient'); const {HttpClient, HttpClientResponse} = _HttpClient; diff --git a/src/net/HttpClient.ts b/src/net/HttpClient.ts index 15d93d5d51..f8d173193e 100644 --- a/src/net/HttpClient.ts +++ b/src/net/HttpClient.ts @@ -1,5 +1,3 @@ -'use strict'; - type TimeoutError = TypeError & {code?: string}; /** diff --git a/src/net/NodeHttpClient.ts b/src/net/NodeHttpClient.ts index f58d899aa3..e1f66879c7 100644 --- a/src/net/NodeHttpClient.ts +++ b/src/net/NodeHttpClient.ts @@ -1,5 +1,3 @@ -'use strict'; - import http = require('http'); import https = require('https'); diff --git a/src/utils.ts b/src/utils.ts index 11461eb4b5..f1bb3041d0 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,3 @@ -'use strict'; - const EventEmitter = require('events').EventEmitter; const qs = require('qs'); const crypto = require('crypto'); From bd502468ed69420821ff29131267f26875bd70fd Mon Sep 17 00:00:00 2001 From: Annie Li Date: Tue, 27 Sep 2022 11:51:01 -0700 Subject: [PATCH 06/22] Turn on alwaysStrict in tsconfig --- lib/ResourceNamespace.js | 1 + lib/apiVersion.js | 1 + tsconfig.json | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/ResourceNamespace.js b/lib/ResourceNamespace.js index 665a5a3e20..8267a0fa8b 100644 --- a/lib/ResourceNamespace.js +++ b/lib/ResourceNamespace.js @@ -1,3 +1,4 @@ +'use strict'; // ResourceNamespace allows you to create nested resources, i.e. `stripe.issuing.cards`. // It also works recursively, so you could do i.e. `stripe.billing.invoicing.pay`. function ResourceNamespace(stripe, resources) { diff --git a/lib/apiVersion.js b/lib/apiVersion.js index 9c1e0e38d1..518f4476ab 100644 --- a/lib/apiVersion.js +++ b/lib/apiVersion.js @@ -1,2 +1,3 @@ +'use strict'; // File generated from our OpenAPI spec module.exports = {ApiVersion: '2022-08-01'}; diff --git a/tsconfig.json b/tsconfig.json index f5cc13096a..199458365d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ "target": "es2017", "module": "commonjs", "checkJs": false, + "alwaysStrict": true, }, "include": ["./src/**/*"] } From 98a9b5cdee1ae66c152423a9d58dfe2fc420d078 Mon Sep 17 00:00:00 2001 From: anniel-stripe <97691964+anniel-stripe@users.noreply.github.com> Date: Tue, 27 Sep 2022 12:15:37 -0700 Subject: [PATCH 07/22] Update src/net/NodeHttpClient.ts Co-authored-by: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> --- src/net/NodeHttpClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/NodeHttpClient.ts b/src/net/NodeHttpClient.ts index e1f66879c7..00c578f88a 100644 --- a/src/net/NodeHttpClient.ts +++ b/src/net/NodeHttpClient.ts @@ -87,7 +87,7 @@ class NodeHttpClient extends HttpClient { } class NodeHttpClientResponse extends HttpClientResponse { - _res: any; + _res: Response; constructor(res) { super(res.statusCode, res.headers || {}); From cc86ba582d6a613ce8bc78152ff3492603350037 Mon Sep 17 00:00:00 2001 From: anniel-stripe <97691964+anniel-stripe@users.noreply.github.com> Date: Tue, 27 Sep 2022 12:16:13 -0700 Subject: [PATCH 08/22] Update src/crypto/SubtleCryptoProvider.ts Co-authored-by: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> --- src/crypto/SubtleCryptoProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crypto/SubtleCryptoProvider.ts b/src/crypto/SubtleCryptoProvider.ts index 3fe810fd9b..4127c2d463 100644 --- a/src/crypto/SubtleCryptoProvider.ts +++ b/src/crypto/SubtleCryptoProvider.ts @@ -6,7 +6,7 @@ import CryptoProvider = require('./CryptoProvider'); * This only supports asynchronous operations. */ class SubtleCryptoProvider extends CryptoProvider { - subtleCrypto: any; + subtleCrypto: Crypto; constructor(subtleCrypto) { super(); From 9ce094a540fd0c343bd865a31d7c2625d5d2c01d Mon Sep 17 00:00:00 2001 From: anniel-stripe <97691964+anniel-stripe@users.noreply.github.com> Date: Tue, 27 Sep 2022 12:16:21 -0700 Subject: [PATCH 09/22] Update src/crypto/SubtleCryptoProvider.ts Co-authored-by: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> --- src/crypto/SubtleCryptoProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crypto/SubtleCryptoProvider.ts b/src/crypto/SubtleCryptoProvider.ts index 4127c2d463..4bb9d675ff 100644 --- a/src/crypto/SubtleCryptoProvider.ts +++ b/src/crypto/SubtleCryptoProvider.ts @@ -25,7 +25,7 @@ class SubtleCryptoProvider extends CryptoProvider { } /** @override */ - async computeHMACSignatureAsync(payload, secret) { + async computeHMACSignatureAsync(payload, secret): Promise { const encoder = new TextEncoder(); const key = await this.subtleCrypto.importKey( From a2526b221f34ba4b461af055b01b11d7bed1bf95 Mon Sep 17 00:00:00 2001 From: Annie Li Date: Tue, 27 Sep 2022 12:32:10 -0700 Subject: [PATCH 10/22] Remove hasOwn alias, undo suggested commits --- lib/utils.js | 16 +++++++++++----- src/crypto/SubtleCryptoProvider.ts | 2 +- src/net/NodeHttpClient.ts | 2 +- src/utils.ts | 17 +++++++++++------ 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index c1b48eb913..a17afff790 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -2,7 +2,6 @@ const EventEmitter = require('events').EventEmitter; const qs = require('qs'); const crypto = require('crypto'); -const hasOwn = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); // Certain sandboxed environments (our known example right now are CloudFlare // Workers) may make `child_process` unavailable. Because `exec` isn't critical // to the operation of stripe-node, we handle this unavailability gracefully. @@ -36,8 +35,12 @@ const utils = { return ( o && typeof o === 'object' && - (OPTIONS_KEYS.some((prop) => hasOwn(o, prop)) || - DEPRECATED_OPTIONS_KEYS.some((prop) => hasOwn(o, prop))) + (OPTIONS_KEYS.some((prop) => + Object.prototype.hasOwnProperty.call(o, prop) + ) || + DEPRECATED_OPTIONS_KEYS.some((prop) => + Object.prototype.hasOwnProperty.call(o, prop) + )) ); }, /** @@ -191,7 +194,7 @@ const utils = { protoExtend(sub) { // eslint-disable-next-line @typescript-eslint/no-this-alias const Super = this; - const Constructor = hasOwn(sub, 'constructor') + const Constructor = Object.prototype.hasOwnProperty.call(sub, 'constructor') ? sub.constructor : function(...args) { Super.apply(this, args); @@ -343,7 +346,10 @@ const utils = { const value = obj[key]; const newKey = prevKey ? `${prevKey}[${key}]` : key; if (utils.isObject(value)) { - if (!Buffer.isBuffer(value) && !hasOwn(value, 'data')) { + if ( + !Buffer.isBuffer(value) && + !Object.prototype.hasOwnProperty.call(value, 'data') + ) { // Non-buffer non-file Objects are recursively flattened return step(value, newKey); } else { diff --git a/src/crypto/SubtleCryptoProvider.ts b/src/crypto/SubtleCryptoProvider.ts index 4bb9d675ff..cfdf61eedc 100644 --- a/src/crypto/SubtleCryptoProvider.ts +++ b/src/crypto/SubtleCryptoProvider.ts @@ -6,7 +6,7 @@ import CryptoProvider = require('./CryptoProvider'); * This only supports asynchronous operations. */ class SubtleCryptoProvider extends CryptoProvider { - subtleCrypto: Crypto; + subtleCrypto: any; constructor(subtleCrypto) { super(); diff --git a/src/net/NodeHttpClient.ts b/src/net/NodeHttpClient.ts index 00c578f88a..e1f66879c7 100644 --- a/src/net/NodeHttpClient.ts +++ b/src/net/NodeHttpClient.ts @@ -87,7 +87,7 @@ class NodeHttpClient extends HttpClient { } class NodeHttpClientResponse extends HttpClientResponse { - _res: Response; + _res: any; constructor(res) { super(res.statusCode, res.headers || {}); diff --git a/src/utils.ts b/src/utils.ts index f1bb3041d0..b3ac274cbc 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,8 +2,6 @@ const EventEmitter = require('events').EventEmitter; const qs = require('qs'); const crypto = require('crypto'); -const hasOwn = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); - // Certain sandboxed environments (our known example right now are CloudFlare // Workers) may make `child_process` unavailable. Because `exec` isn't critical // to the operation of stripe-node, we handle this unavailability gracefully. @@ -53,8 +51,12 @@ const utils = { return ( o && typeof o === 'object' && - (OPTIONS_KEYS.some((prop) => hasOwn(o, prop)) || - DEPRECATED_OPTIONS_KEYS.some((prop) => hasOwn(o, prop))) + (OPTIONS_KEYS.some((prop) => + Object.prototype.hasOwnProperty.call(o, prop) + ) || + DEPRECATED_OPTIONS_KEYS.some((prop) => + Object.prototype.hasOwnProperty.call(o, prop) + )) ); }, @@ -223,7 +225,7 @@ const utils = { protoExtend(sub) { // eslint-disable-next-line @typescript-eslint/no-this-alias const Super = this; - const Constructor = hasOwn(sub, 'constructor') + const Constructor = Object.prototype.hasOwnProperty.call(sub, 'constructor') ? sub.constructor : function(...args) { Super.apply(this, args); @@ -400,7 +402,10 @@ const utils = { const newKey = prevKey ? `${prevKey}[${key}]` : key; if (utils.isObject(value)) { - if (!Buffer.isBuffer(value) && !hasOwn(value, 'data')) { + if ( + !Buffer.isBuffer(value) && + !Object.prototype.hasOwnProperty.call(value, 'data') + ) { // Non-buffer non-file Objects are recursively flattened return step(value, newKey); } else { From 2704e87c4b3784e2283d4c9900f8feb97f37b938 Mon Sep 17 00:00:00 2001 From: anniel-stripe <97691964+anniel-stripe@users.noreply.github.com> Date: Tue, 27 Sep 2022 12:38:25 -0700 Subject: [PATCH 11/22] Update src/net/FetchHttpClient.ts Co-authored-by: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> --- src/net/FetchHttpClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/FetchHttpClient.ts b/src/net/FetchHttpClient.ts index 6df1781d23..630bddc42d 100644 --- a/src/net/FetchHttpClient.ts +++ b/src/net/FetchHttpClient.ts @@ -93,7 +93,7 @@ class FetchHttpClient extends HttpClient { } class FetchHttpClientResponse extends HttpClientResponse { - _res: any; + _res: Response; constructor(res) { super( From 06a6d4e5f5a89fc87e31b255e05e4bfa18f15913 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Tue, 27 Sep 2022 21:45:32 -0700 Subject: [PATCH 12/22] Add more types to HTTP clients --- src/crypto/SubtleCryptoProvider.ts | 9 ++++++--- src/net/HttpClient.ts | 6 +++--- src/net/NodeHttpClient.ts | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/crypto/SubtleCryptoProvider.ts b/src/crypto/SubtleCryptoProvider.ts index cfdf61eedc..999181e4cc 100644 --- a/src/crypto/SubtleCryptoProvider.ts +++ b/src/crypto/SubtleCryptoProvider.ts @@ -6,9 +6,9 @@ import CryptoProvider = require('./CryptoProvider'); * This only supports asynchronous operations. */ class SubtleCryptoProvider extends CryptoProvider { - subtleCrypto: any; + subtleCrypto: SubtleCrypto; - constructor(subtleCrypto) { + constructor(subtleCrypto: SubtleCrypto) { super(); // If no subtle crypto is interface, default to the global namespace. This @@ -25,7 +25,10 @@ class SubtleCryptoProvider extends CryptoProvider { } /** @override */ - async computeHMACSignatureAsync(payload, secret): Promise { + async computeHMACSignatureAsync( + payload: string, + secret: string + ): Promise { const encoder = new TextEncoder(); const key = await this.subtleCrypto.importKey( diff --git a/src/net/HttpClient.ts b/src/net/HttpClient.ts index f8d173193e..2c035d7cd7 100644 --- a/src/net/HttpClient.ts +++ b/src/net/HttpClient.ts @@ -53,11 +53,11 @@ class HttpClientResponse { this._headers = headers; } - getStatusCode() { + getStatusCode(): number { return this._statusCode; } - getHeaders() { + getHeaders(): Record { return this._headers; } @@ -69,7 +69,7 @@ class HttpClientResponse { throw new Error('toStream not implemented.'); } - toJSON() { + toJSON(): any { throw new Error('toJSON not implemented.'); } } diff --git a/src/net/NodeHttpClient.ts b/src/net/NodeHttpClient.ts index e1f66879c7..1d556a0906 100644 --- a/src/net/NodeHttpClient.ts +++ b/src/net/NodeHttpClient.ts @@ -87,9 +87,9 @@ class NodeHttpClient extends HttpClient { } class NodeHttpClientResponse extends HttpClientResponse { - _res: any; + _res: http.IncomingMessage; - constructor(res) { + constructor(res: http.IncomingMessage) { super(res.statusCode, res.headers || {}); this._res = res; } @@ -106,7 +106,7 @@ class NodeHttpClientResponse extends HttpClientResponse { return this._res; } - toJSON() { + toJSON(): any { return new Promise((resolve, reject) => { let response = ''; From db94c299ce2fa1eeaad8123830ee3108153d5a6c Mon Sep 17 00:00:00 2001 From: yejia-stripe <90646909+yejia-stripe@users.noreply.github.com> Date: Thu, 29 Sep 2022 11:01:44 -0400 Subject: [PATCH 13/22] API Updates (#1564) Codegen for openapi v197 --- OPENAPI_VERSION | 2 +- types/2022-08-01/Charges.d.ts | 4 +-- types/2022-08-01/Checkout/Sessions.d.ts | 7 ++++- types/2022-08-01/PaymentIntents.d.ts | 42 +++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION index 72833e6d4c..01daefacc4 100644 --- a/OPENAPI_VERSION +++ b/OPENAPI_VERSION @@ -1 +1 @@ -v196 \ No newline at end of file +v197 \ No newline at end of file diff --git a/types/2022-08-01/Charges.d.ts b/types/2022-08-01/Charges.d.ts index a46fb2bf59..0f6755848c 100644 --- a/types/2022-08-01/Charges.d.ts +++ b/types/2022-08-01/Charges.d.ts @@ -1030,7 +1030,7 @@ declare module 'stripe' { /** * Whether this [PaymentIntent](https://stripe.com/docs/api/payment_intents) is eligible for incremental authorizations. Request support using [request_incremental_authorization_support](https://stripe.com/docs/api/payment_intents/create#create_payment_intent-payment_method_options-card_present-request_incremental_authorization_support). */ - incremental_authorization_supported: boolean | null; + incremental_authorization_supported: boolean; /** * The name of the card's issuing bank. (For internal use only and not typically available in standard API requests.) @@ -1050,7 +1050,7 @@ declare module 'stripe' { /** * Defines whether the authorized amount can be over-captured or not */ - overcapture_supported: boolean | null; + overcapture_supported: boolean; /** * How card details were read in this transaction. diff --git a/types/2022-08-01/Checkout/Sessions.d.ts b/types/2022-08-01/Checkout/Sessions.d.ts index 52436937c5..13afebb3a2 100644 --- a/types/2022-08-01/Checkout/Sessions.d.ts +++ b/types/2022-08-01/Checkout/Sessions.d.ts @@ -80,6 +80,11 @@ declare module 'stripe' { */ consent_collection: Session.ConsentCollection | null; + /** + * Time at which the object was created. Measured in seconds since the Unix epoch. + */ + created: number; + /** * Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). */ @@ -3146,7 +3151,7 @@ declare module 'stripe' { description?: string; /** - * A list of items, each with an attached plan, that the customer is subscribing to. Prefer using `line_items`. + * This parameter is deprecated. Use the line_items parameter on the Session instead. */ items?: Array; diff --git a/types/2022-08-01/PaymentIntents.d.ts b/types/2022-08-01/PaymentIntents.d.ts index 82e1665e75..f740166411 100644 --- a/types/2022-08-01/PaymentIntents.d.ts +++ b/types/2022-08-01/PaymentIntents.d.ts @@ -1578,6 +1578,15 @@ declare module 'stripe' { * The timestamp at which the Pix expires. */ expires_at: number | null; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + */ + setup_future_usage?: 'none'; } interface Promptpay { @@ -3412,6 +3421,17 @@ declare module 'stripe' { * The timestamp at which the Pix expires (between 10 and 1209600 seconds in the future). Defaults to 1 day in the future. */ expires_at?: number; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + * + * If `setup_future_usage` is already set and you are performing a request using a publishable key, you may only update the value from `on_session` to `off_session`. + */ + setup_future_usage?: 'none'; } interface Promptpay { @@ -5158,6 +5178,17 @@ declare module 'stripe' { * The timestamp at which the Pix expires (between 10 and 1209600 seconds in the future). Defaults to 1 day in the future. */ expires_at?: number; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + * + * If `setup_future_usage` is already set and you are performing a request using a publishable key, you may only update the value from `on_session` to `off_session`. + */ + setup_future_usage?: 'none'; } interface Promptpay { @@ -7039,6 +7070,17 @@ declare module 'stripe' { * The timestamp at which the Pix expires (between 10 and 1209600 seconds in the future). Defaults to 1 day in the future. */ expires_at?: number; + + /** + * Indicates that you intend to make future payments with this PaymentIntent's payment method. + * + * Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes. + * + * When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication). + * + * If `setup_future_usage` is already set and you are performing a request using a publishable key, you may only update the value from `on_session` to `off_session`. + */ + setup_future_usage?: 'none'; } interface Promptpay { From d00097b6e5dc0e828c0bf721a86b022819ebc694 Mon Sep 17 00:00:00 2001 From: Yejia Chen Date: Thu, 29 Sep 2022 11:09:11 -0400 Subject: [PATCH 14/22] Bump version to 10.12.0 --- CHANGELOG.md | 10 ++++++++++ VERSION | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34747f0a36..6cc3bddd6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 10.12.0 - 2022-09-29 +* [#1564](https://github.com/stripe/stripe-node/pull/1564) API Updates + * Change type of `Charge.payment_method_details.card_present.incremental_authorization_supported` and `Charge.payment_method_details.card_present.overcapture_supported` from `boolean | null` to `boolean` + * Add support for `created` on `Checkout.Session` + * Add support for `setup_future_usage` on `PaymentIntent.payment_method_options.pix`, `PaymentIntentConfirmParams.payment_method_options.pix`, `PaymentIntentCreateParams.payment_method_options.pix`, and `PaymentIntentUpdateParams.payment_method_options.pix` + * Deprecate `CheckoutSessionCreateParams.subscription_data.items` (use the `line_items` param instead). This will be removed in the next major version. +* [#1563](https://github.com/stripe/stripe-node/pull/1563) Migrate other Stripe infrastructure to TS +* [#1562](https://github.com/stripe/stripe-node/pull/1562) Restore lib after generating +* [#1551](https://github.com/stripe/stripe-node/pull/1551) Re-introduce Typescript changes + ## 10.11.0 - 2022-09-22 * [#1560](https://github.com/stripe/stripe-node/pull/1560) API Updates * Add support for `terms_of_service` on `Checkout.Session.consent_collection`, `Checkout.Session.consent`, `CheckoutSessionCreateParams.consent_collection`, `PaymentLink.consent_collection`, and `PaymentLinkCreateParams.consent_collection` diff --git a/VERSION b/VERSION index 7258702289..c4d592e166 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.11.0 +10.12.0 diff --git a/package.json b/package.json index 82e2f7dc33..b3bea9f33f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "10.11.0", + "version": "10.12.0", "description": "Stripe API wrapper", "keywords": [ "stripe", From 7e89403b03e263c4369f86e1369679ac4bee0717 Mon Sep 17 00:00:00 2001 From: pakrym-stripe <99349468+pakrym-stripe@users.noreply.github.com> Date: Thu, 29 Sep 2022 08:23:13 -0700 Subject: [PATCH 15/22] Fix release tag calculation (#1567) --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6240f246fd..6fde9bdf62 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -125,7 +125,7 @@ jobs: npm config set //registry.npmjs.org/:_authToken $NPM_AUTH_TOKEN # print the NPM user name for validation npm whoami - VERSION=$(npm -s run env echo '$npm_package_version') + VERSION=$(node -p "require('./package.json').version" ) # Only publish stable versions to the latest tag if [[ "$VERSION" =~ ^[^-]+$ ]]; then NPM_TAG="latest" From 234923e41f32150a865859778a6d34fdfe2df262 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> Date: Mon, 3 Oct 2022 12:48:24 -0700 Subject: [PATCH 16/22] Upgrade dev dependencies (#1568) * Upgrade @types/node * Upgrade @typescript-eslint/eslint-plugin * Upgrade @typescript-eslint/parser * Upgrade eslint * Lint * Add ESLint congif for TS tests * Add Node configuration to ESLint configuration * Remove 'Function' declaration * Downgrade lint packages and suppress lint errors * Upgrade ansi-regex * Downgrade @typescript-eslint/parser * Reset angi-regex * Yarn.lock * Upgrade chai * Upgrade mocha * Downgrade mocha * Add ^ * Upgrade eslint-config-prettier * Upgrade eslint-plugin-chai-friendly * Upgrade eslint-plugin-prettier * Downgrade eslint-plugin-prettier * Remove ansi-regex * Upgrade typescript * Upgrade mocha-junit-reporter * Upgrade qs * Upgrade prettier * Upgrade nock * Formatting * Downgrade prettier * Lint * Upgrade nanoid * Revert nanoid * Upgrade node-fetch * Downgrade node-fetch * Revert types/node change * Revert fetch type --- .eslintrc.js | 4 +- .../typescript-node-express/.eslintrc.js | 3 + .../typescript-node-express/express-ts.ts | 9 +- lib/StripeMethod.js | 4 +- package.json | 33 +- src/Error.ts | 1 + src/StripeMethod.ts | 4 +- test/.eslintrc.js | 22 +- test/StripeResource.spec.js | 9 +- test/autoPagination.spec.js | 49 +- test/crypto/SubtleCryptoProvider.spec.js | 4 +- test/resources/Plans.spec.js | 10 +- testUtils/.eslintrc.js | 22 +- types/.eslintrc.js | 4 + types/Webhooks.d.ts | 8 - types/lib.d.ts | 2 +- types/test/.eslintrc.js | 6 + types/test/typescriptTest.ts | 10 +- yarn.lock | 992 +++++++++--------- 19 files changed, 611 insertions(+), 585 deletions(-) create mode 100644 types/test/.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js index 7eecf96137..4eb5fcc6be 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -251,8 +251,8 @@ module.exports = { extends: ['plugin:prettier/recommended'], overrides: [ { - files: ["**/*.ts"], - parser: "@typescript-eslint/parser", + files: ['**/*.ts'], + parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'prettier'], extends: [ 'eslint:recommended', diff --git a/examples/webhook-signing/typescript-node-express/.eslintrc.js b/examples/webhook-signing/typescript-node-express/.eslintrc.js index 788ac02227..48397a4bdb 100644 --- a/examples/webhook-signing/typescript-node-express/.eslintrc.js +++ b/examples/webhook-signing/typescript-node-express/.eslintrc.js @@ -1,4 +1,7 @@ module.exports = { + env: { + node: true, + }, root: true, parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'prettier'], diff --git a/examples/webhook-signing/typescript-node-express/express-ts.ts b/examples/webhook-signing/typescript-node-express/express-ts.ts index c0a4c1d4b7..219854fcc0 100644 --- a/examples/webhook-signing/typescript-node-express/express-ts.ts +++ b/examples/webhook-signing/typescript-node-express/express-ts.ts @@ -65,6 +65,9 @@ app.post( } ); -app.listen(3000, (): void => { - console.log('Example app listening on port 3000!'); -}); +app.listen( + 3000, + (): void => { + console.log('Example app listening on port 3000!'); + } +); diff --git a/lib/StripeMethod.js b/lib/StripeMethod.js index f4e9ada721..c256dc3ed3 100644 --- a/lib/StripeMethod.js +++ b/lib/StripeMethod.js @@ -22,7 +22,9 @@ const makeAutoPaginationMethods = autoPagination.makeAutoPaginationMethods; function stripeMethod(spec) { if (spec.path !== undefined && spec.fullPath !== undefined) { throw new Error( - `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).` + `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${ + spec.fullPath + }).` ); } return function(...args) { diff --git a/package.json b/package.json index b3bea9f33f..fbfe3a3ce8 100644 --- a/package.json +++ b/package.json @@ -27,31 +27,30 @@ "main": "lib/stripe.js", "types": "types/2022-08-01/index.d.ts", "devDependencies": { - "@typescript-eslint/eslint-plugin": "^2.13.0", - "@typescript-eslint/parser": "^2.13.0", - "chai": "~4.2.0", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "chai": "^4.3.6", "chai-as-promised": "~7.1.1", "coveralls": "^3.1.1", - "eslint": "^6.8.0", - "eslint-config-prettier": "^4.1.0", - "eslint-plugin-chai-friendly": "^0.4.0", - "eslint-plugin-prettier": "^3.0.1", - "mocha": "^8.3.2", - "mocha-junit-reporter": "^1.23.1", - "nock": "^13.1.1", - "node-fetch": "^2.6.2", + "eslint": "7.32.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-chai-friendly": "^0.7.2", + "eslint-plugin-prettier": "3.4.1", + "mocha": "^8.4.0", + "mocha-junit-reporter": "^2.1.0", + "nock": "^13.2.9", + "node-fetch": "2.6.6", "nyc": "^15.1.0", - "prettier": "^1.16.4", - "typescript": "^4.8.3" + "prettier": "1.16.4", + "typescript": "^4.8.4" }, "resolutions": { - "ansi-regex": "5.0.1", "minimist": "1.2.6", - "nanoid": "3.2.0" + "nanoid": "^3.2.0" }, "dependencies": { "@types/node": ">=8.1.0", - "qs": "^6.10.3" + "qs": "^6.11.0" }, "license": "MIT", "scripts": { @@ -68,5 +67,5 @@ "report": "nyc -r text -r lcov report", "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", "prettier-format": "prettier --config .prettierrc 'lib/**/*.js' --write" -} + } } diff --git a/src/Error.ts b/src/Error.ts index c5de62ea0c..fbf88cc5d6 100644 --- a/src/Error.ts +++ b/src/Error.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ type RawErrorType = | 'card_error' | 'invalid_request_error' diff --git a/src/StripeMethod.ts b/src/StripeMethod.ts index f2c0595988..5f9911d204 100644 --- a/src/StripeMethod.ts +++ b/src/StripeMethod.ts @@ -22,7 +22,9 @@ const makeAutoPaginationMethods = autoPagination.makeAutoPaginationMethods; function stripeMethod(spec) { if (spec.path !== undefined && spec.fullPath !== undefined) { throw new Error( - `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).` + `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${ + spec.fullPath + }).` ); } return function(...args) { diff --git a/test/.eslintrc.js b/test/.eslintrc.js index a7a9e54609..0848ed5408 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -1,14 +1,12 @@ module.exports = { - "env": { - "mocha": true - }, - "plugins": [ - "chai-friendly" - ], - "rules": { - "no-loop-func": "off", - "no-sync": "off", - "no-unused-expressions": 0, - "chai-friendly/no-unused-expressions": 2 - } + env: { + mocha: true, + }, + plugins: ['chai-friendly'], + rules: { + 'no-loop-func': 'off', + 'no-sync': 'off', + 'no-unused-expressions': 0, + 'chai-friendly/no-unused-expressions': 2, + }, }; diff --git a/test/StripeResource.spec.js b/test/StripeResource.spec.js index 78b999aedb..87f2fd9d95 100644 --- a/test/StripeResource.spec.js +++ b/test/StripeResource.spec.js @@ -117,7 +117,9 @@ describe('StripeResource', () => { } ) .get( - `${options.path}?customer=cus_123&subscription_items[0][plan]=foo&subscription_items[0][quantity]=2&subscription_items[1][id]=si_123&subscription_items[1][deleted]=true`, + `${ + options.path + }?customer=cus_123&subscription_items[0][plan]=foo&subscription_items[0][quantity]=2&subscription_items[1][id]=si_123&subscription_items[1][deleted]=true`, '' ) .reply(200, '{}'); @@ -255,10 +257,7 @@ describe('StripeResource', () => { path: '/v1/subscriptions/sub_123', data: { customer: 'cus_123', - items: [ - {plan: 'foo', quantity: 2}, - {id: 'si_123', deleted: true}, - ], + items: [{plan: 'foo', quantity: 2}, {id: 'si_123', deleted: true}], }, body: 'customer=cus_123&items[0][plan]=foo&items[0][quantity]=2&items[1][id]=si_123&items[1][deleted]=true', diff --git a/test/autoPagination.spec.js b/test/autoPagination.spec.js index 0dff2fb644..4f7cf69a96 100644 --- a/test/autoPagination.spec.js +++ b/test/autoPagination.spec.js @@ -497,10 +497,7 @@ describe('auto pagination', function() { describe('foward pagination', () => { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - ], + pages: [[1, 2], [3, 4]], limit: 10, expectedIds: [1, 2, 3, 4], expectedParamsLog: ['?starting_after=2'], @@ -518,11 +515,7 @@ describe('auto pagination', function() { it('respects limit even when paginating', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - [5, 6], - ], + pages: [[1, 2], [3, 4], [5, 6]], limit: 5, expectedIds: [1, 2, 3, 4, 5], expectedParamsLog: ['?starting_after=2', '?starting_after=4'], @@ -531,13 +524,7 @@ describe('auto pagination', function() { it('paginates through multiple full pages', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - [5, 6], - [7, 8], - [9, 10], - ], + pages: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]], limit: 10, expectedIds: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], expectedParamsLog: [ @@ -553,10 +540,7 @@ describe('auto pagination', function() { describe('backwards pagination', () => { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [ - [-2, -1], - [-4, -3], - ], + pages: [[-2, -1], [-4, -3]], limit: 5, expectedIds: [-1, -2, -3, -4], expectedParamsLog: ['?ending_before=-2'], @@ -576,11 +560,7 @@ describe('auto pagination', function() { it('respects limit', () => { return testCase(mockPagination, { - pages: [ - [-2, -1], - [-4, -3], - [-6, -5], - ], + pages: [[-2, -1], [-4, -3], [-6, -5]], limit: 5, expectedIds: [-1, -2, -3, -4, -5], expectedParamsLog: ['?ending_before=-2', '?ending_before=-4'], @@ -641,10 +621,7 @@ describe('auto pagination', function() { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - ], + pages: [[1, 2], [3, 4]], limit: 10, expectedIds: [1, 2, 3, 4], expectedParamsLog: ['?page=2-encoded'], @@ -662,11 +639,7 @@ describe('auto pagination', function() { it('respects limit even when paginating', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - [5, 6], - ], + pages: [[1, 2], [3, 4], [5, 6]], limit: 5, expectedIds: [1, 2, 3, 4, 5], expectedParamsLog: ['?page=2-encoded', '?page=4-encoded'], @@ -675,13 +648,7 @@ describe('auto pagination', function() { it('paginates through multiple full pages', () => { return testCase(mockPagination, { - pages: [ - [1, 2], - [3, 4], - [5, 6], - [7, 8], - [9, 10], - ], + pages: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]], limit: 10, expectedIds: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], expectedParamsLog: [ diff --git a/test/crypto/SubtleCryptoProvider.spec.js b/test/crypto/SubtleCryptoProvider.spec.js index 2fc067170d..f3c4015f30 100644 --- a/test/crypto/SubtleCryptoProvider.spec.js +++ b/test/crypto/SubtleCryptoProvider.spec.js @@ -7,7 +7,9 @@ const expect = require('chai').expect; // webcrypto is only available on Node 15+. if (!webcrypto || !webcrypto.subtle) { console.log( - `Skipping SubtleCryptoProvider tests. No 'webcrypto.subtle' available for ${process.version}.` + `Skipping SubtleCryptoProvider tests. No 'webcrypto.subtle' available for ${ + process.version + }.` ); return; } diff --git a/test/resources/Plans.spec.js b/test/resources/Plans.spec.js index 3757f7dfed..9786516a95 100644 --- a/test/resources/Plans.spec.js +++ b/test/resources/Plans.spec.js @@ -51,10 +51,7 @@ describe('Plans Resource', () => { stripe.plans.create({ currency: 'usd', billing_scheme: 'tiered', - tiers: [ - {up_to: 123, amount: 100}, - {up_to: 'inf', amount: 200}, - ], + tiers: [{up_to: 123, amount: 100}, {up_to: 'inf', amount: 200}], tiers_mode: 'volume', }); expect(stripe.LAST_REQUEST).to.deep.equal({ @@ -64,10 +61,7 @@ describe('Plans Resource', () => { data: { currency: 'usd', billing_scheme: 'tiered', - tiers: [ - {up_to: 123, amount: 100}, - {up_to: 'inf', amount: 200}, - ], + tiers: [{up_to: 123, amount: 100}, {up_to: 'inf', amount: 200}], tiers_mode: 'volume', }, settings: {}, diff --git a/testUtils/.eslintrc.js b/testUtils/.eslintrc.js index a7a9e54609..0848ed5408 100644 --- a/testUtils/.eslintrc.js +++ b/testUtils/.eslintrc.js @@ -1,14 +1,12 @@ module.exports = { - "env": { - "mocha": true - }, - "plugins": [ - "chai-friendly" - ], - "rules": { - "no-loop-func": "off", - "no-sync": "off", - "no-unused-expressions": 0, - "chai-friendly/no-unused-expressions": 2 - } + env: { + mocha: true, + }, + plugins: ['chai-friendly'], + rules: { + 'no-loop-func': 'off', + 'no-sync': 'off', + 'no-unused-expressions': 0, + 'chai-friendly/no-unused-expressions': 2, + }, }; diff --git a/types/.eslintrc.js b/types/.eslintrc.js index 788ac02227..4e269b6be8 100644 --- a/types/.eslintrc.js +++ b/types/.eslintrc.js @@ -1,5 +1,8 @@ module.exports = { root: true, + env: { + node: true, + }, parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'prettier'], extends: [ @@ -14,5 +17,6 @@ module.exports = { '@typescript-eslint/no-unused-vars': 0, '@typescript-eslint/triple-slash-reference': 0, '@typescript-eslint/ban-ts-ignore': 0, + '@typescript-eslint/ban-types': 0, }, }; diff --git a/types/Webhooks.d.ts b/types/Webhooks.d.ts index 9c9087e907..96a99e7053 100644 --- a/types/Webhooks.d.ts +++ b/types/Webhooks.d.ts @@ -13,7 +13,6 @@ declare module 'stripe' { * Raw text body payload received from Stripe. */ payload: string | Buffer, - /** * Value of the `stripe-signature` header from Stripe. * Typically a string. @@ -25,18 +24,15 @@ declare module 'stripe' { * only a string. */ header: string | Buffer | Array, - /** * Your Webhook Signing Secret for this endpoint (e.g., 'whsec_...'). * You can get this [in your dashboard](https://dashboard.stripe.com/webhooks). */ secret: string, - /** * Seconds of tolerance on timestamps. */ tolerance?: number, - /** * Optional CryptoProvider to use for computing HMAC signatures. */ @@ -54,7 +50,6 @@ declare module 'stripe' { * Raw text body payload received from Stripe. */ payload: string | Buffer, - /** * Value of the `stripe-signature` header from Stripe. * Typically a string. @@ -66,18 +61,15 @@ declare module 'stripe' { * only a string. */ header: string | Buffer | Array, - /** * Your Webhook Signing Secret for this endpoint (e.g., 'whsec_...'). * You can get this [in your dashboard](https://dashboard.stripe.com/webhooks). */ secret: string, - /** * Seconds of tolerance on timestamps. */ tolerance?: number, - /** * Optional CryptoProvider to use for computing HMAC signatures. */ diff --git a/types/lib.d.ts b/types/lib.d.ts index cf4b19e211..16b6724c6b 100644 --- a/types/lib.d.ts +++ b/types/lib.d.ts @@ -14,7 +14,7 @@ declare module 'stripe' { export class StripeResource { static extend< - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any T extends {[prop: string]: any} & { includeBasic?: Array< 'create' | 'retrieve' | 'update' | 'list' | 'del' diff --git a/types/test/.eslintrc.js b/types/test/.eslintrc.js new file mode 100644 index 0000000000..8e2594c739 --- /dev/null +++ b/types/test/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + extends: '../.eslintrc.js', + rules: { + '@typescript-eslint/ban-ts-comment': 0, + }, +}; diff --git a/types/test/typescriptTest.ts b/types/test/typescriptTest.ts index ebd0b7da64..4bb8d1359d 100644 --- a/types/test/typescriptTest.ts +++ b/types/test/typescriptTest.ts @@ -106,11 +106,13 @@ stripe.setHost('host', 'port', 'protocol'); } } - const cusList: Stripe.ApiList = await stripe.customers.list(); + const cusList: Stripe.ApiList< + Stripe.Customer + > = await stripe.customers.list(); - const aThousandCustomers: Array = await stripe.customers - .list() - .autoPagingToArray({limit: 1000}); + const aThousandCustomers: Array< + Stripe.Customer + > = await stripe.customers.list().autoPagingToArray({limit: 1000}); const nothing: void = await stripe.customers .list() diff --git a/yarn.lock b/yarn.lock index dac05c29fe..5167555cae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,14 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== @@ -134,6 +141,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -148,6 +160,15 @@ "@babel/traverse" "^7.14.0" "@babel/types" "^7.14.0" +"@babel/highlight@^7.10.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.12.13": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" @@ -193,6 +214,35 @@ "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -209,75 +259,118 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/json-schema@^7.0.3": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@types/node@>=8.1.0": - version "15.3.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.1.tgz#23a06b87eedb524016616e886b116b8fdcb180af" - integrity sha512-weaeiP4UF4XgF++3rpQhpIJWsCTS4QJw5gvBhQu6cFIxTwyxWIe3xbnrY/o2lTCQ0lsdb8YIUDUvLR4Vuz5rbw== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@typescript-eslint/eslint-plugin@^2.13.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/json-schema@^7.0.7": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/node@>=8.1.0": + version "18.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.0.tgz#b8ee8d83a99470c0661bd899417fcd77060682fe" + integrity sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA== + +"@typescript-eslint/eslint-plugin@^4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.13.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.1.1: +acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -290,7 +383,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -300,24 +393,37 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-regex@5.0.1, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.0: +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -363,6 +469,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -380,10 +491,10 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== asynckit@^0.4.0: version "0.4.0" @@ -425,7 +536,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -498,19 +609,20 @@ chai-as-promised@~7.1.1: dependencies: check-error "^1.0.2" -chai@~4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== +chai@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" deep-eql "^3.0.1" get-func-name "^2.0.0" - pathval "^1.1.0" + loupe "^2.3.1" + pathval "^1.1.1" type-detect "^4.0.5" -chalk@^2.0.0, chalk@^2.1.0: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -519,7 +631,7 @@ chalk@^2.0.0, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== @@ -527,11 +639,6 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -562,18 +669,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -661,18 +756,7 @@ coveralls@^3.1.1: minimist "^1.2.5" request "^2.88.2" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -693,7 +777,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@4.3.1, debug@^4.0.1, debug@^4.1.1: +debug@4.3.1, debug@^4.1.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -707,6 +791,13 @@ debug@^2.2.0: dependencies: ms "2.0.0" +debug@^4.0.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^4.1.0: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -731,10 +822,10 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== default-require-extensions@^3.0.0: version "3.0.0" @@ -753,6 +844,13 @@ diff@5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -773,16 +871,18 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.735.tgz#fa1a8660f2790662291cb2136f0e446a444cdfdc" integrity sha512-cp7MWzC3NseUJV2FJFgaiesdrS+A8ZUjX5fLAxdRlcaPDkaPGFplX930S5vf84yqDp4LjuLdKouWuVOTwUfqHQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" @@ -793,7 +893,7 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== @@ -803,26 +903,24 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-prettier@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz#c55c1fcac8ce4518aeb77906984e134d9eb5a4f0" - integrity sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA== - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== -eslint-plugin-chai-friendly@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.4.1.tgz#9eeb17f92277ba80bb64f0e946c6936a3ae707b4" - integrity sha512-hkpLN7VVoGGsofZjUhcQ+sufC3FgqMJwD0DvAcRfxY1tVRyQyVsqpaKnToPHJQOrRo0FQ0fSEDwW2gr4rsNdGA== +eslint-plugin-chai-friendly@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz#0ebfbb2c1244f5de2997f3963d155758234f2b0f" + integrity sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg== -eslint-plugin-prettier@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" - integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== +eslint-plugin-prettier@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@^5.0.0: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -830,83 +928,91 @@ eslint-scope@^5.0.0: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: - "@babel/code-frame" "^7.0.0" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" + glob-parent "^5.1.2" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash.merge "^4.6.2" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -940,15 +1046,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -959,7 +1056,7 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -969,29 +1066,40 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: - escape-string-regexp "^1.0.5" + reusify "^1.0.4" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" @@ -1025,24 +1133,23 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.1.0" + rimraf "^3.0.2" flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== foreground-child@^2.0.0: version "2.0.0" @@ -1089,7 +1196,7 @@ function-bind@^1.1.1: functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -1120,11 +1227,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1132,7 +1234,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -1168,12 +1270,24 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.6.0, globals@^13.9.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - type-fest "^0.8.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" graceful-fs@^4.1.15: version "4.2.6" @@ -1247,19 +1361,17 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-fresh@^3.0.0: +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1290,25 +1402,6 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1329,7 +1422,7 @@ is-extglob@^2.1.1: is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -1474,6 +1567,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -1511,13 +1609,13 @@ lcov-parse@^1.0.0: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" integrity sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" locate-path@^5.0.0: version "5.0.0" @@ -1538,12 +1636,17 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: +lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -1560,6 +1663,13 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" +loupe@^2.3.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + dependencies: + get-func-name "^2.0.0" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1583,6 +1693,19 @@ md5@^2.1.0: crypt "0.0.2" is-buffer "~1.1.6" +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -1595,11 +1718,6 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.52.0" -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -1612,25 +1730,25 @@ minimist@1.2.6, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mocha-junit-reporter@^1.23.1: - version "1.23.3" - resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.3.tgz#941e219dd759ed732f8641e165918aa8b167c981" - integrity sha512-ed8LqbRj1RxZfjt/oC9t12sfrWsjZ3gNnbhV1nuj9R/Jb5/P3Xb4duv2eCfCDMYH+fEu0mqca7m4wsiVjsxsvA== +mocha-junit-reporter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-2.1.0.tgz#7997348c2e757686c54e42b3756930b55a4518a4" + integrity sha512-Zhz1J+XqJUaAOuSFtHgi2+b+W3rP1SZtaU3HHNNp1iEKMSeoC1/EQUVkGknkLNOBxJhXJ4xLgOr8TbYAZOkUIw== dependencies: debug "^2.2.0" md5 "^2.1.0" mkdirp "~0.5.1" - strip-ansi "^4.0.0" + strip-ansi "^6.0.1" xml "^1.0.0" -mocha@^8.3.2: +mocha@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== @@ -1676,40 +1794,30 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@3.1.20, nanoid@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== +nanoid@3.1.20, nanoid@^3.2.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nock@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.1.1.tgz#3c830129d4560957f59b6f480a41ddbaf9cf57af" - integrity sha512-YKTR9MjfK3kS9/l4nuTxyYm30cgOExRHzkLNhL8nhEUyU4f8Za/dRxOqjhVT1vGs0svWo3dDnJTUX1qxYeWy5w== +nock@^13.2.9: + version "13.2.9" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.9.tgz#4faf6c28175d36044da4cfa68e33e5a15086ad4c" + integrity sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" - lodash.set "^4.3.2" + lodash "^4.17.21" propagate "^2.0.0" -node-fetch@^2.6.2: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== +node-fetch@2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== dependencies: whatwg-url "^5.0.0" @@ -1780,29 +1888,17 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" p-limit@^2.2.0: version "2.3.0" @@ -1871,17 +1967,17 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -pathval@^1.1.0: +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== @@ -1896,6 +1992,11 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -1903,10 +2004,10 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -1915,10 +2016,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.16.4: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@1.16.4: + version "1.16.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" + integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== process-on-spawn@^1.0.0: version "1.0.0" @@ -1947,10 +2048,10 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@^6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -1959,6 +2060,11 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -1973,15 +2079,10 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== release-zalgo@^1.0.0: version "1.0.0" @@ -2021,6 +2122,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -2036,39 +2142,24 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - tslib "^1.9.0" + queue-microtask "^1.2.2" safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" @@ -2080,25 +2171,20 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.2.1, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" @@ -2114,13 +2200,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2128,11 +2207,6 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" @@ -2152,14 +2226,19 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" source-map@^0.5.0: version "0.5.7" @@ -2211,15 +2290,6 @@ sshpk@^1.7.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" @@ -2229,6 +2299,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -2236,13 +2315,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -2250,12 +2322,19 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-json-comments@3.1.1, strip-json-comments@^3.0.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -2281,15 +2360,16 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.0.9: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" test-exclude@^6.0.0: version "6.0.0" @@ -2305,18 +2385,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -2340,14 +2408,14 @@ tough-cookie@~2.5.0: tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tsutils@^3.17.1: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -2366,24 +2434,24 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -2395,10 +2463,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== +typescript@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== uri-js@^4.2.2: version "4.4.1" @@ -2429,12 +2497,12 @@ verror@1.10.0: webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" @@ -2451,13 +2519,6 @@ which@2.0.2, which@^2.0.1: dependencies: isexe "^2.0.0" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -2465,7 +2526,7 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -2508,13 +2569,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - xml@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" From 30b4679357275505bcc326f1de367061e68bd9c3 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:51:04 -0700 Subject: [PATCH 17/22] Update node-fetch to 2.6.7 (#1570) * Update node-fetch to 2.6.7 * Yarn.lock * Formatting * Lint --- .../typescript-node-express/express-ts.ts | 9 ++-- lib/StripeMethod.js | 4 +- package.json | 8 +-- src/StripeMethod.ts | 4 +- test/StripeResource.spec.js | 9 ++-- test/autoPagination.spec.js | 49 ++++++++++++++++--- test/crypto/SubtleCryptoProvider.spec.js | 4 +- test/resources/Plans.spec.js | 10 +++- types/lib.d.ts | 2 +- types/test/typescriptTest.ts | 10 ++-- yarn.lock | 20 ++++---- 11 files changed, 79 insertions(+), 50 deletions(-) diff --git a/examples/webhook-signing/typescript-node-express/express-ts.ts b/examples/webhook-signing/typescript-node-express/express-ts.ts index 219854fcc0..c0a4c1d4b7 100644 --- a/examples/webhook-signing/typescript-node-express/express-ts.ts +++ b/examples/webhook-signing/typescript-node-express/express-ts.ts @@ -65,9 +65,6 @@ app.post( } ); -app.listen( - 3000, - (): void => { - console.log('Example app listening on port 3000!'); - } -); +app.listen(3000, (): void => { + console.log('Example app listening on port 3000!'); +}); diff --git a/lib/StripeMethod.js b/lib/StripeMethod.js index c256dc3ed3..f4e9ada721 100644 --- a/lib/StripeMethod.js +++ b/lib/StripeMethod.js @@ -22,9 +22,7 @@ const makeAutoPaginationMethods = autoPagination.makeAutoPaginationMethods; function stripeMethod(spec) { if (spec.path !== undefined && spec.fullPath !== undefined) { throw new Error( - `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${ - spec.fullPath - }).` + `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).` ); } return function(...args) { diff --git a/package.json b/package.json index fbfe3a3ce8..bf0c358be1 100644 --- a/package.json +++ b/package.json @@ -32,16 +32,16 @@ "chai": "^4.3.6", "chai-as-promised": "~7.1.1", "coveralls": "^3.1.1", - "eslint": "7.32.0", + "eslint": "^7.32.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-chai-friendly": "^0.7.2", - "eslint-plugin-prettier": "3.4.1", + "eslint-plugin-prettier": "^3.4.1", "mocha": "^8.4.0", "mocha-junit-reporter": "^2.1.0", "nock": "^13.2.9", - "node-fetch": "2.6.6", + "node-fetch": "^2.6.7", "nyc": "^15.1.0", - "prettier": "1.16.4", + "prettier": "^1.16.4", "typescript": "^4.8.4" }, "resolutions": { diff --git a/src/StripeMethod.ts b/src/StripeMethod.ts index 5f9911d204..f2c0595988 100644 --- a/src/StripeMethod.ts +++ b/src/StripeMethod.ts @@ -22,9 +22,7 @@ const makeAutoPaginationMethods = autoPagination.makeAutoPaginationMethods; function stripeMethod(spec) { if (spec.path !== undefined && spec.fullPath !== undefined) { throw new Error( - `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${ - spec.fullPath - }).` + `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).` ); } return function(...args) { diff --git a/test/StripeResource.spec.js b/test/StripeResource.spec.js index 87f2fd9d95..78b999aedb 100644 --- a/test/StripeResource.spec.js +++ b/test/StripeResource.spec.js @@ -117,9 +117,7 @@ describe('StripeResource', () => { } ) .get( - `${ - options.path - }?customer=cus_123&subscription_items[0][plan]=foo&subscription_items[0][quantity]=2&subscription_items[1][id]=si_123&subscription_items[1][deleted]=true`, + `${options.path}?customer=cus_123&subscription_items[0][plan]=foo&subscription_items[0][quantity]=2&subscription_items[1][id]=si_123&subscription_items[1][deleted]=true`, '' ) .reply(200, '{}'); @@ -257,7 +255,10 @@ describe('StripeResource', () => { path: '/v1/subscriptions/sub_123', data: { customer: 'cus_123', - items: [{plan: 'foo', quantity: 2}, {id: 'si_123', deleted: true}], + items: [ + {plan: 'foo', quantity: 2}, + {id: 'si_123', deleted: true}, + ], }, body: 'customer=cus_123&items[0][plan]=foo&items[0][quantity]=2&items[1][id]=si_123&items[1][deleted]=true', diff --git a/test/autoPagination.spec.js b/test/autoPagination.spec.js index 4f7cf69a96..0dff2fb644 100644 --- a/test/autoPagination.spec.js +++ b/test/autoPagination.spec.js @@ -497,7 +497,10 @@ describe('auto pagination', function() { describe('foward pagination', () => { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4]], + pages: [ + [1, 2], + [3, 4], + ], limit: 10, expectedIds: [1, 2, 3, 4], expectedParamsLog: ['?starting_after=2'], @@ -515,7 +518,11 @@ describe('auto pagination', function() { it('respects limit even when paginating', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4], [5, 6]], + pages: [ + [1, 2], + [3, 4], + [5, 6], + ], limit: 5, expectedIds: [1, 2, 3, 4, 5], expectedParamsLog: ['?starting_after=2', '?starting_after=4'], @@ -524,7 +531,13 @@ describe('auto pagination', function() { it('paginates through multiple full pages', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]], + pages: [ + [1, 2], + [3, 4], + [5, 6], + [7, 8], + [9, 10], + ], limit: 10, expectedIds: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], expectedParamsLog: [ @@ -540,7 +553,10 @@ describe('auto pagination', function() { describe('backwards pagination', () => { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [[-2, -1], [-4, -3]], + pages: [ + [-2, -1], + [-4, -3], + ], limit: 5, expectedIds: [-1, -2, -3, -4], expectedParamsLog: ['?ending_before=-2'], @@ -560,7 +576,11 @@ describe('auto pagination', function() { it('respects limit', () => { return testCase(mockPagination, { - pages: [[-2, -1], [-4, -3], [-6, -5]], + pages: [ + [-2, -1], + [-4, -3], + [-6, -5], + ], limit: 5, expectedIds: [-1, -2, -3, -4, -5], expectedParamsLog: ['?ending_before=-2', '?ending_before=-4'], @@ -621,7 +641,10 @@ describe('auto pagination', function() { it('paginates forwards through a page', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4]], + pages: [ + [1, 2], + [3, 4], + ], limit: 10, expectedIds: [1, 2, 3, 4], expectedParamsLog: ['?page=2-encoded'], @@ -639,7 +662,11 @@ describe('auto pagination', function() { it('respects limit even when paginating', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4], [5, 6]], + pages: [ + [1, 2], + [3, 4], + [5, 6], + ], limit: 5, expectedIds: [1, 2, 3, 4, 5], expectedParamsLog: ['?page=2-encoded', '?page=4-encoded'], @@ -648,7 +675,13 @@ describe('auto pagination', function() { it('paginates through multiple full pages', () => { return testCase(mockPagination, { - pages: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]], + pages: [ + [1, 2], + [3, 4], + [5, 6], + [7, 8], + [9, 10], + ], limit: 10, expectedIds: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], expectedParamsLog: [ diff --git a/test/crypto/SubtleCryptoProvider.spec.js b/test/crypto/SubtleCryptoProvider.spec.js index f3c4015f30..2fc067170d 100644 --- a/test/crypto/SubtleCryptoProvider.spec.js +++ b/test/crypto/SubtleCryptoProvider.spec.js @@ -7,9 +7,7 @@ const expect = require('chai').expect; // webcrypto is only available on Node 15+. if (!webcrypto || !webcrypto.subtle) { console.log( - `Skipping SubtleCryptoProvider tests. No 'webcrypto.subtle' available for ${ - process.version - }.` + `Skipping SubtleCryptoProvider tests. No 'webcrypto.subtle' available for ${process.version}.` ); return; } diff --git a/test/resources/Plans.spec.js b/test/resources/Plans.spec.js index 9786516a95..3757f7dfed 100644 --- a/test/resources/Plans.spec.js +++ b/test/resources/Plans.spec.js @@ -51,7 +51,10 @@ describe('Plans Resource', () => { stripe.plans.create({ currency: 'usd', billing_scheme: 'tiered', - tiers: [{up_to: 123, amount: 100}, {up_to: 'inf', amount: 200}], + tiers: [ + {up_to: 123, amount: 100}, + {up_to: 'inf', amount: 200}, + ], tiers_mode: 'volume', }); expect(stripe.LAST_REQUEST).to.deep.equal({ @@ -61,7 +64,10 @@ describe('Plans Resource', () => { data: { currency: 'usd', billing_scheme: 'tiered', - tiers: [{up_to: 123, amount: 100}, {up_to: 'inf', amount: 200}], + tiers: [ + {up_to: 123, amount: 100}, + {up_to: 'inf', amount: 200}, + ], tiers_mode: 'volume', }, settings: {}, diff --git a/types/lib.d.ts b/types/lib.d.ts index 16b6724c6b..cf4b19e211 100644 --- a/types/lib.d.ts +++ b/types/lib.d.ts @@ -14,7 +14,7 @@ declare module 'stripe' { export class StripeResource { static extend< - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any T extends {[prop: string]: any} & { includeBasic?: Array< 'create' | 'retrieve' | 'update' | 'list' | 'del' diff --git a/types/test/typescriptTest.ts b/types/test/typescriptTest.ts index 4bb8d1359d..ebd0b7da64 100644 --- a/types/test/typescriptTest.ts +++ b/types/test/typescriptTest.ts @@ -106,13 +106,11 @@ stripe.setHost('host', 'port', 'protocol'); } } - const cusList: Stripe.ApiList< - Stripe.Customer - > = await stripe.customers.list(); + const cusList: Stripe.ApiList = await stripe.customers.list(); - const aThousandCustomers: Array< - Stripe.Customer - > = await stripe.customers.list().autoPagingToArray({limit: 1000}); + const aThousandCustomers: Array = await stripe.customers + .list() + .autoPagingToArray({limit: 1000}); const nothing: void = await stripe.customers .list() diff --git a/yarn.lock b/yarn.lock index 5167555cae..eba80e65a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -913,7 +913,7 @@ eslint-plugin-chai-friendly@^0.7.2: resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz#0ebfbb2c1244f5de2997f3963d155758234f2b0f" integrity sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg== -eslint-plugin-prettier@3.4.1: +eslint-plugin-prettier@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== @@ -952,7 +952,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@7.32.0: +eslint@^7.32.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== @@ -1814,10 +1814,10 @@ nock@^13.2.9: lodash "^4.17.21" propagate "^2.0.0" -node-fetch@2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -2016,10 +2016,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@1.16.4: - version "1.16.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== +prettier@^1.16.4: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== process-on-spawn@^1.0.0: version "1.0.0" From e628ac6ac01a68ed97ee9f02c04673ca6e563762 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <99290280+kamil-stripe@users.noreply.github.com> Date: Thu, 6 Oct 2022 11:11:37 -0700 Subject: [PATCH 18/22] API Updates (#1571) Codegen for openapi v201 --- OPENAPI_VERSION | 2 +- types/2022-08-01/Accounts.d.ts | 2 ++ types/2022-08-01/Capabilities.d.ts | 2 ++ types/2022-08-01/Charges.d.ts | 3 ++- types/2022-08-01/Customers.d.ts | 4 ++-- types/2022-08-01/Invoices.d.ts | 2 +- types/2022-08-01/PaymentIntents.d.ts | 3 +++ types/2022-08-01/PaymentMethods.d.ts | 4 +++- types/2022-08-01/Persons.d.ts | 2 ++ types/2022-08-01/Quotes.d.ts | 6 +++--- types/2022-08-01/Reporting/ReportRuns.d.ts | 3 +++ types/2022-08-01/SetupAttempts.d.ts | 4 ++++ types/2022-08-01/SetupIntents.d.ts | 3 +++ types/2022-08-01/SubscriptionSchedules.d.ts | 12 ++++++------ types/2022-08-01/Subscriptions.d.ts | 10 +++++++--- .../Treasury/FinancialAccountFeatures.d.ts | 6 +++--- 16 files changed, 47 insertions(+), 21 deletions(-) diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION index 01daefacc4..bd1eedd478 100644 --- a/OPENAPI_VERSION +++ b/OPENAPI_VERSION @@ -1 +1 @@ -v197 \ No newline at end of file +v201 \ No newline at end of file diff --git a/types/2022-08-01/Accounts.d.ts b/types/2022-08-01/Accounts.d.ts index 4e8d019d44..6e08f94748 100644 --- a/types/2022-08-01/Accounts.d.ts +++ b/types/2022-08-01/Accounts.d.ts @@ -708,6 +708,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' @@ -831,6 +832,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' diff --git a/types/2022-08-01/Capabilities.d.ts b/types/2022-08-01/Capabilities.d.ts index c4248d0ae1..9c695dd846 100644 --- a/types/2022-08-01/Capabilities.d.ts +++ b/types/2022-08-01/Capabilities.d.ts @@ -119,6 +119,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' @@ -248,6 +249,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' diff --git a/types/2022-08-01/Charges.d.ts b/types/2022-08-01/Charges.d.ts index 0f6755848c..752f3b41ca 100644 --- a/types/2022-08-01/Charges.d.ts +++ b/types/2022-08-01/Charges.d.ts @@ -1178,7 +1178,7 @@ declare module 'stripe' { account_holder_type: Fpx.AccountHolderType | null; /** - * The customer's bank. Can be one of `affin_bank`, `agrobank`, `alliance_bank`, `ambank`, `bank_islam`, `bank_muamalat`, `bank_rakyat`, `bsn`, `cimb`, `hong_leong_bank`, `hsbc`, `kfh`, `maybank2u`, `ocbc`, `public_bank`, `rhb`, `standard_chartered`, `uob`, `deutsche_bank`, `maybank2e`, or `pb_enterprise`. + * The customer's bank. Can be one of `affin_bank`, `agrobank`, `alliance_bank`, `ambank`, `bank_islam`, `bank_muamalat`, `bank_rakyat`, `bsn`, `cimb`, `hong_leong_bank`, `hsbc`, `kfh`, `maybank2u`, `ocbc`, `public_bank`, `rhb`, `standard_chartered`, `uob`, `deutsche_bank`, `maybank2e`, `pb_enterprise`, or `bank_of_china`. */ bank: Fpx.Bank; @@ -1198,6 +1198,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' diff --git a/types/2022-08-01/Customers.d.ts b/types/2022-08-01/Customers.d.ts index 1e2bb4513a..84f6dff8b9 100644 --- a/types/2022-08-01/Customers.d.ts +++ b/types/2022-08-01/Customers.d.ts @@ -29,7 +29,7 @@ declare module 'stripe' { balance: number; /** - * The current funds being held by Stripe on behalf of the customer. These funds can be applied towards payment intents with source "cash_balance".The settings[reconciliation_mode] field describes whether these funds are applied to such payment intents manually or automatically. + * The current funds being held by Stripe on behalf of the customer. These funds can be applied towards payment intents with source "cash_balance". The settings[reconciliation_mode] field describes whether these funds are applied to such payment intents manually or automatically. */ cash_balance?: Stripe.CashBalance | null; @@ -75,7 +75,7 @@ declare module 'stripe' { email: string | null; /** - * The current multi-currency balances, if any, being stored on the customer.If positive in a currency, the customer has a credit to apply to their next invoice denominated in that currency.If negative, the customer has an amount owed that will be added to their next invoice denominated in that currency. These balances do not refer to any unpaid invoices.They solely track amounts that have yet to be successfully applied to any invoice. A balance in a particular currency is only applied to any invoice as an invoice in that currency is finalized. + * The current multi-currency balances, if any, being stored on the customer. If positive in a currency, the customer has a credit to apply to their next invoice denominated in that currency. If negative, the customer has an amount owed that will be added to their next invoice denominated in that currency. These balances do not refer to any unpaid invoices. They solely track amounts that have yet to be successfully applied to any invoice. A balance in a particular currency is only applied to any invoice as an invoice in that currency is finalized. */ invoice_credit_balance?: { [key: string]: number; diff --git a/types/2022-08-01/Invoices.d.ts b/types/2022-08-01/Invoices.d.ts index a1c41cccdc..4ce0946231 100644 --- a/types/2022-08-01/Invoices.d.ts +++ b/types/2022-08-01/Invoices.d.ts @@ -337,7 +337,7 @@ declare module 'stripe' { rendering_options: Invoice.RenderingOptions | null; /** - * Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance. + * Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance. For revision invoices, this also includes any customer balance that was applied to the original invoice. */ starting_balance: number; diff --git a/types/2022-08-01/PaymentIntents.d.ts b/types/2022-08-01/PaymentIntents.d.ts index f740166411..9ee206724a 100644 --- a/types/2022-08-01/PaymentIntents.d.ts +++ b/types/2022-08-01/PaymentIntents.d.ts @@ -2328,6 +2328,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' @@ -4085,6 +4086,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' @@ -5977,6 +5979,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' diff --git a/types/2022-08-01/PaymentMethods.d.ts b/types/2022-08-01/PaymentMethods.d.ts index f676037bbb..7f29b79ddd 100644 --- a/types/2022-08-01/PaymentMethods.d.ts +++ b/types/2022-08-01/PaymentMethods.d.ts @@ -462,7 +462,7 @@ declare module 'stripe' { account_holder_type: Fpx.AccountHolderType | null; /** - * The customer's bank, if provided. Can be one of `affin_bank`, `agrobank`, `alliance_bank`, `ambank`, `bank_islam`, `bank_muamalat`, `bank_rakyat`, `bsn`, `cimb`, `hong_leong_bank`, `hsbc`, `kfh`, `maybank2u`, `ocbc`, `public_bank`, `rhb`, `standard_chartered`, `uob`, `deutsche_bank`, `maybank2e`, or `pb_enterprise`. + * The customer's bank, if provided. Can be one of `affin_bank`, `agrobank`, `alliance_bank`, `ambank`, `bank_islam`, `bank_muamalat`, `bank_rakyat`, `bsn`, `cimb`, `hong_leong_bank`, `hsbc`, `kfh`, `maybank2u`, `ocbc`, `public_bank`, `rhb`, `standard_chartered`, `uob`, `deutsche_bank`, `maybank2e`, `pb_enterprise`, or `bank_of_china`. */ bank: Fpx.Bank; } @@ -477,6 +477,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' @@ -1139,6 +1140,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' diff --git a/types/2022-08-01/Persons.d.ts b/types/2022-08-01/Persons.d.ts index 69454e031d..ef735d1634 100644 --- a/types/2022-08-01/Persons.d.ts +++ b/types/2022-08-01/Persons.d.ts @@ -306,6 +306,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' @@ -453,6 +454,7 @@ declare module 'stripe' { namespace Error { type Code = | 'invalid_address_city_state_postal_code' + | 'invalid_dob_age_under_18' | 'invalid_street_address' | 'invalid_tos_acceptance' | 'invalid_value_other' diff --git a/types/2022-08-01/Quotes.d.ts b/types/2022-08-01/Quotes.d.ts index 8158049226..9810469ee2 100644 --- a/types/2022-08-01/Quotes.d.ts +++ b/types/2022-08-01/Quotes.d.ts @@ -49,7 +49,7 @@ declare module 'stripe' { automatic_tax: Quote.AutomaticTax; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or on finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically`. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or on finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`. */ collection_method: Quote.CollectionMethod; @@ -533,7 +533,7 @@ declare module 'stripe' { automatic_tax?: QuoteCreateParams.AutomaticTax; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically`. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`. */ collection_method?: QuoteCreateParams.CollectionMethod; @@ -794,7 +794,7 @@ declare module 'stripe' { automatic_tax?: QuoteUpdateParams.AutomaticTax; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically`. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`. */ collection_method?: QuoteUpdateParams.CollectionMethod; diff --git a/types/2022-08-01/Reporting/ReportRuns.d.ts b/types/2022-08-01/Reporting/ReportRuns.d.ts index ef0ab6b091..47e9dfe777 100644 --- a/types/2022-08-01/Reporting/ReportRuns.d.ts +++ b/types/2022-08-01/Reporting/ReportRuns.d.ts @@ -384,6 +384,7 @@ declare module 'stripe' { | 'America/North_Dakota/Beulah' | 'America/North_Dakota/Center' | 'America/North_Dakota/New_Salem' + | 'America/Nuuk' | 'America/Ojinaga' | 'America/Panama' | 'America/Pangnirtung' @@ -657,6 +658,7 @@ declare module 'stripe' { | 'Europe/Kaliningrad' | 'Europe/Kiev' | 'Europe/Kirov' + | 'Europe/Kyiv' | 'Europe/Lisbon' | 'Europe/Ljubljana' | 'Europe/London' @@ -752,6 +754,7 @@ declare module 'stripe' { | 'Pacific/Guam' | 'Pacific/Honolulu' | 'Pacific/Johnston' + | 'Pacific/Kanton' | 'Pacific/Kiritimati' | 'Pacific/Kosrae' | 'Pacific/Kwajalein' diff --git a/types/2022-08-01/SetupAttempts.d.ts b/types/2022-08-01/SetupAttempts.d.ts index 0cac118b6c..11043e066b 100644 --- a/types/2022-08-01/SetupAttempts.d.ts +++ b/types/2022-08-01/SetupAttempts.d.ts @@ -108,6 +108,8 @@ declare module 'stripe' { ideal?: PaymentMethodDetails.Ideal; + klarna?: PaymentMethodDetails.Klarna; + link?: PaymentMethodDetails.Link; sepa_debit?: PaymentMethodDetails.SepaDebit; @@ -309,6 +311,8 @@ declare module 'stripe' { | 'TRIONL2U'; } + interface Klarna {} + interface Link {} interface SepaDebit {} diff --git a/types/2022-08-01/SetupIntents.d.ts b/types/2022-08-01/SetupIntents.d.ts index 6f1b9cd4c2..bba293a326 100644 --- a/types/2022-08-01/SetupIntents.d.ts +++ b/types/2022-08-01/SetupIntents.d.ts @@ -1032,6 +1032,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' @@ -1907,6 +1908,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' @@ -2864,6 +2866,7 @@ declare module 'stripe' { | 'ambank' | 'bank_islam' | 'bank_muamalat' + | 'bank_of_china' | 'bank_rakyat' | 'bsn' | 'cimb' diff --git a/types/2022-08-01/SubscriptionSchedules.d.ts b/types/2022-08-01/SubscriptionSchedules.d.ts index b1e0652e6d..36e028e606 100644 --- a/types/2022-08-01/SubscriptionSchedules.d.ts +++ b/types/2022-08-01/SubscriptionSchedules.d.ts @@ -132,7 +132,7 @@ declare module 'stripe' { billing_thresholds: DefaultSettings.BillingThresholds | null; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. */ collection_method: DefaultSettings.CollectionMethod | null; @@ -227,7 +227,7 @@ declare module 'stripe' { billing_thresholds: Phase.BillingThresholds | null; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. */ collection_method: Phase.CollectionMethod | null; @@ -474,7 +474,7 @@ declare module 'stripe' { >; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: DefaultSettings.CollectionMethod; @@ -572,7 +572,7 @@ declare module 'stripe' { billing_thresholds?: Stripe.Emptyable; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: Phase.CollectionMethod; @@ -909,7 +909,7 @@ declare module 'stripe' { >; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: DefaultSettings.CollectionMethod; @@ -1007,7 +1007,7 @@ declare module 'stripe' { billing_thresholds?: Stripe.Emptyable; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: Phase.CollectionMethod; diff --git a/types/2022-08-01/Subscriptions.d.ts b/types/2022-08-01/Subscriptions.d.ts index 2eb9585614..49025a3342 100644 --- a/types/2022-08-01/Subscriptions.d.ts +++ b/types/2022-08-01/Subscriptions.d.ts @@ -60,7 +60,7 @@ declare module 'stripe' { canceled_at: number | null; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. */ collection_method: Subscription.CollectionMethod; @@ -594,7 +594,7 @@ declare module 'stripe' { cancel_at_period_end?: boolean; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically`. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`. */ collection_method?: SubscriptionCreateParams.CollectionMethod; @@ -654,6 +654,8 @@ declare module 'stripe' { off_session?: boolean; /** + * Only applies to subscriptions with `collection_method=charge_automatically`. + * * Use `allow_incomplete` to create subscriptions with `status=incomplete` if the first invoice cannot be paid. Creating subscriptions with this status allows you to manage scenarios where additional user actions are needed to pay a subscription's invoice. For example, SCA regulation may require 3DS authentication to complete payment. See the [SCA Migration Guide](https://stripe.com/docs/billing/migration/strong-customer-authentication) for Billing to learn more. This is the default behavior. * * Use `default_incomplete` to create Subscriptions with `status=incomplete` when the first invoice requires payment, otherwise start as active. Subscriptions transition to `status=active` when successfully confirming the payment intent on the first invoice. This allows simpler management of scenarios where additional user actions are needed to pay a subscription's invoice. Such as failed payments, [SCA regulation](https://stripe.com/docs/billing/migration/strong-customer-authentication), or collecting a mandate for a bank debit payment method. If the payment intent is not confirmed within 23 hours subscriptions transition to `status=incomplete_expired`, which is a terminal state. @@ -661,6 +663,8 @@ declare module 'stripe' { * Use `error_if_incomplete` if you want Stripe to return an HTTP 402 status code if a subscription's first invoice cannot be paid. For example, if a payment method requires 3DS authentication due to SCA regulation and further user action is needed, this parameter does not create a subscription and returns an error instead. This was the default behavior for API versions prior to 2019-03-14. See the [changelog](https://stripe.com/docs/upgrades#2019-03-14) to learn more. * * `pending_if_incomplete` is only used with updates and cannot be passed when creating a subscription. + * + * Subscriptions with `collection_method=send_invoice` are automatically activated regardless of the first invoice status. */ payment_behavior?: SubscriptionCreateParams.PaymentBehavior; @@ -1210,7 +1214,7 @@ declare module 'stripe' { cancel_at_period_end?: boolean; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically`. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`. */ collection_method?: SubscriptionUpdateParams.CollectionMethod; diff --git a/types/2022-08-01/Treasury/FinancialAccountFeatures.d.ts b/types/2022-08-01/Treasury/FinancialAccountFeatures.d.ts index 53fde18412..7b38965633 100644 --- a/types/2022-08-01/Treasury/FinancialAccountFeatures.d.ts +++ b/types/2022-08-01/Treasury/FinancialAccountFeatures.d.ts @@ -235,7 +235,7 @@ declare module 'stripe' { interface InboundTransfers { /** - * Toggle settings for enabling/disabling a feature + * Toggle settings for enabling/disabling an ACH specific feature */ ach?: InboundTransfers.Ach; } @@ -360,7 +360,7 @@ declare module 'stripe' { interface OutboundPayments { /** - * Toggle settings for enabling/disabling a feature + * Toggle settings for enabling/disabling an ACH specific feature */ ach?: OutboundPayments.Ach; @@ -490,7 +490,7 @@ declare module 'stripe' { interface OutboundTransfers { /** - * Toggle settings for enabling/disabling a feature + * Toggle settings for enabling/disabling an ACH specific feature */ ach?: OutboundTransfers.Ach; From deb7bb54c82115d04ad8ba246d8a0ffb0b7c885c Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Thu, 6 Oct 2022 12:02:49 -0700 Subject: [PATCH 19/22] Bump version to 10.13.0 --- CHANGELOG.md | 18 ++++++++++++++---- VERSION | 2 +- package.json | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cc3bddd6f..a26157c4cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,21 @@ # Changelog +## 10.13.0 - 2022-10-06 +* [#1571](https://github.com/stripe/stripe-node/pull/1571) API Updates + * Add support for new value `invalid_dob_age_under_18` on enums `Account.future_requirements.errors[].code`, `Account.requirements.errors[].code`, `Capability.future_requirements.errors[].code`, `Capability.requirements.errors[].code`, `Person.future_requirements.errors[].code`, and `Person.requirements.errors[].code` + * Add support for new value `bank_of_china` on enums `Charge.payment_method_details.fpx.bank`, `PaymentIntentConfirmParams.payment_method_data.fpx.bank`, `PaymentIntentCreateParams.payment_method_data.fpx.bank`, `PaymentIntentUpdateParams.payment_method_data.fpx.bank`, `PaymentMethod.fpx.bank`, `PaymentMethodCreateParams.fpx.bank`, `SetupIntentConfirmParams.payment_method_data.fpx.bank`, `SetupIntentCreateParams.payment_method_data.fpx.bank`, and `SetupIntentUpdateParams.payment_method_data.fpx.bank` + * Add support for new values `America/Nuuk`, `Europe/Kyiv`, and `Pacific/Kanton` on enum `ReportingReportRunCreateParams.parameters.timezone` + * Add support for `klarna` on `SetupAttempt.payment_method_details` +* [#1570](https://github.com/stripe/stripe-node/pull/1570) Update node-fetch to 2.6.7 +* [#1568](https://github.com/stripe/stripe-node/pull/1568) Upgrade dependencies +* [#1567](https://github.com/stripe/stripe-node/pull/1567) Fix release tag calculation + ## 10.12.0 - 2022-09-29 * [#1564](https://github.com/stripe/stripe-node/pull/1564) API Updates - * Change type of `Charge.payment_method_details.card_present.incremental_authorization_supported` and `Charge.payment_method_details.card_present.overcapture_supported` from `boolean | null` to `boolean` - * Add support for `created` on `Checkout.Session` - * Add support for `setup_future_usage` on `PaymentIntent.payment_method_options.pix`, `PaymentIntentConfirmParams.payment_method_options.pix`, `PaymentIntentCreateParams.payment_method_options.pix`, and `PaymentIntentUpdateParams.payment_method_options.pix` - * Deprecate `CheckoutSessionCreateParams.subscription_data.items` (use the `line_items` param instead). This will be removed in the next major version. + * Change type of `Charge.payment_method_details.card_present.incremental_authorization_supported` and `Charge.payment_method_details.card_present.overcapture_supported` from `boolean | null` to `boolean` + * Add support for `created` on `Checkout.Session` + * Add support for `setup_future_usage` on `PaymentIntent.payment_method_options.pix`, `PaymentIntentConfirmParams.payment_method_options.pix`, `PaymentIntentCreateParams.payment_method_options.pix`, and `PaymentIntentUpdateParams.payment_method_options.pix` + * Deprecate `CheckoutSessionCreateParams.subscription_data.items` (use the `line_items` param instead). This will be removed in the next major version. * [#1563](https://github.com/stripe/stripe-node/pull/1563) Migrate other Stripe infrastructure to TS * [#1562](https://github.com/stripe/stripe-node/pull/1562) Restore lib after generating * [#1551](https://github.com/stripe/stripe-node/pull/1551) Re-introduce Typescript changes diff --git a/VERSION b/VERSION index c4d592e166..db24ab967f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.12.0 +10.13.0 diff --git a/package.json b/package.json index bf0c358be1..afacfbbfd1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "10.12.0", + "version": "10.13.0", "description": "Stripe API wrapper", "keywords": [ "stripe", From 76169497a7d0b5714074969e74b64e551a70dc32 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Thu, 6 Oct 2022 12:12:10 -0700 Subject: [PATCH 20/22] Set version to 10.13.0 to simplify merge --- VERSION | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index b31e24a70e..db24ab967f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.12.0-beta.1 +10.13.0 diff --git a/package.json b/package.json index ab681534c2..d9b66e1d8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "10.12.0-beta.1", + "version": "10.13.0", "description": "Stripe API wrapper", "keywords": [ "stripe", From 5ce9c4b82e71006bf89108e0f6f08fb1ed6d7a31 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Thu, 6 Oct 2022 12:12:10 -0700 Subject: [PATCH 21/22] Reset version to 10.12.0-beta.1 --- VERSION | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index db24ab967f..b31e24a70e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.13.0 +10.12.0-beta.1 diff --git a/package.json b/package.json index afacfbbfd1..5c4f821965 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "10.13.0", + "version": "10.12.0-beta.1", "description": "Stripe API wrapper", "keywords": [ "stripe", From 973f9a30742081c0a36800f0dbd44c4edf5351a9 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Thu, 6 Oct 2022 12:12:28 -0700 Subject: [PATCH 22/22] Codegen for openapi v201 --- types/2022-08-01/Capital/FinancingOffers.d.ts | 4 +-- types/2022-08-01/Orders.d.ts | 9 +++++++ types/2022-08-01/PaymentIntents.d.ts | 11 ++++++++ types/2022-08-01/QuotePhases.d.ts | 2 +- types/2022-08-01/Quotes.d.ts | 4 +-- types/2022-08-01/SubscriptionSchedules.d.ts | 26 ++++++------------- 6 files changed, 33 insertions(+), 23 deletions(-) diff --git a/types/2022-08-01/Capital/FinancingOffers.d.ts b/types/2022-08-01/Capital/FinancingOffers.d.ts index 2d39f82ec0..1d532d115e 100644 --- a/types/2022-08-01/Capital/FinancingOffers.d.ts +++ b/types/2022-08-01/Capital/FinancingOffers.d.ts @@ -133,9 +133,9 @@ declare module 'stripe' { /** * Populated when the `product_type` of the `financingoffer` is `refill`. - * Represents the discount rate percentage on remaining premium on the existing loan. When the `financing_offer` + * Represents the discount rate percentage on remaining fee on the existing loan. When the `financing_offer` * is paid out, the `previous_financing_fee_discount_amount` will be computed as the multiple of this rate - * and the remaining premium. + * and the remaining fee. */ previous_financing_fee_discount_rate: number | null; diff --git a/types/2022-08-01/Orders.d.ts b/types/2022-08-01/Orders.d.ts index 40252e19e3..bd9aa6a027 100644 --- a/types/2022-08-01/Orders.d.ts +++ b/types/2022-08-01/Orders.d.ts @@ -601,6 +601,11 @@ declare module 'stripe' { * Preferred locale of the PayPal checkout page that the customer is redirected to. */ preferred_locale: string | null; + + /** + * A unique reference ID of the PayPal transaction. This must be a globally unique ID across all PayPal transactions or the transaction will fail. + */ + reference_id?: string | null; } interface SepaDebit { @@ -1756,6 +1761,8 @@ declare module 'stripe' { capture_method?: Stripe.Emptyable<'manual'>; preferred_locale?: Paypal.PreferredLocale; + + reference_id?: string; } namespace Paypal { @@ -2972,6 +2979,8 @@ declare module 'stripe' { capture_method?: Stripe.Emptyable<'manual'>; preferred_locale?: Paypal.PreferredLocale; + + reference_id?: string; } namespace Paypal { diff --git a/types/2022-08-01/PaymentIntents.d.ts b/types/2022-08-01/PaymentIntents.d.ts index 77b394e878..5495a224f0 100644 --- a/types/2022-08-01/PaymentIntents.d.ts +++ b/types/2022-08-01/PaymentIntents.d.ts @@ -1585,6 +1585,11 @@ declare module 'stripe' { * Preferred locale of the PayPal checkout page that the customer is redirected to. */ preferred_locale: string | null; + + /** + * A unique reference ID of the PayPal transaction. This must be a globally unique ID across all PayPal transactions or the transaction will fail. + */ + reference_id?: string | null; } interface Pix { @@ -3455,6 +3460,8 @@ declare module 'stripe' { capture_method?: Stripe.Emptyable<'manual'>; preferred_locale?: Paypal.PreferredLocale; + + reference_id?: string; } namespace Paypal { @@ -5299,6 +5306,8 @@ declare module 'stripe' { capture_method?: Stripe.Emptyable<'manual'>; preferred_locale?: Paypal.PreferredLocale; + + reference_id?: string; } namespace Paypal { @@ -7241,6 +7250,8 @@ declare module 'stripe' { capture_method?: Stripe.Emptyable<'manual'>; preferred_locale?: Paypal.PreferredLocale; + + reference_id?: string; } namespace Paypal { diff --git a/types/2022-08-01/QuotePhases.d.ts b/types/2022-08-01/QuotePhases.d.ts index 614ff76f3e..a1d17c9208 100644 --- a/types/2022-08-01/QuotePhases.d.ts +++ b/types/2022-08-01/QuotePhases.d.ts @@ -32,7 +32,7 @@ declare module 'stripe' { billing_cycle_anchor: 'reset' | null; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. */ collection_method: QuotePhase.CollectionMethod | null; diff --git a/types/2022-08-01/Quotes.d.ts b/types/2022-08-01/Quotes.d.ts index caa19a6b3d..3e0f068577 100644 --- a/types/2022-08-01/Quotes.d.ts +++ b/types/2022-08-01/Quotes.d.ts @@ -814,7 +814,7 @@ declare module 'stripe' { billing_cycle_anchor?: 'reset'; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: Phase.CollectionMethod; @@ -1317,7 +1317,7 @@ declare module 'stripe' { billing_cycle_anchor?: 'reset'; /** - * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to `charge_automatically` on creation. + * Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation. */ collection_method?: Phase.CollectionMethod; diff --git a/types/2022-08-01/SubscriptionSchedules.d.ts b/types/2022-08-01/SubscriptionSchedules.d.ts index ec59f9574e..859d5e68aa 100644 --- a/types/2022-08-01/SubscriptionSchedules.d.ts +++ b/types/2022-08-01/SubscriptionSchedules.d.ts @@ -1631,7 +1631,7 @@ declare module 'stripe' { /** * Changes to apply to the phases of the subscription schedule, in the order provided. */ - amendments: Array; + amendments?: Array; /** * Specifies which fields in the response should be expanded. @@ -1677,7 +1677,7 @@ declare module 'stripe' { /** * A precise Unix timestamp for the amendment to end. Must be after the `amendment_start`. */ - timestamp?: AmendmentEnd.Timestamp; + timestamp?: number; /** * Select one of three ways to pass the `amendment_end`. @@ -1702,13 +1702,6 @@ declare module 'stripe' { type Interval = 'day' | 'month' | 'week' | 'year'; } - interface Timestamp { - /** - * A precise numeric timestamp, provided as an integer number of seconds since the Unix epoch. - */ - value: number; - } - type Type = 'duration' | 'schedule_end' | 'timestamp'; } @@ -1721,7 +1714,7 @@ declare module 'stripe' { /** * A precise Unix timestamp for the amendment to start. */ - timestamp?: AmendmentStart.Timestamp; + timestamp?: number; /** * Select one of three ways to pass the `amendment_start`. @@ -1737,13 +1730,6 @@ declare module 'stripe' { index: number; } - interface Timestamp { - /** - * A precise numeric timestamp, provided as an integer number of seconds since the Unix epoch. - */ - value: number; - } - type Type = 'amendment_end' | 'now' | 'timestamp'; } @@ -2047,7 +2033,11 @@ declare module 'stripe' { */ amend( id: string, - params: SubscriptionScheduleAmendParams, + params?: SubscriptionScheduleAmendParams, + options?: RequestOptions + ): Promise>; + amend( + id: string, options?: RequestOptions ): Promise>;