diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6173ee..f3d4a81 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: ['12', '14', '16'] + node-version: ['14', '16', '18'] steps: - name: Clone repository uses: actions/checkout@v2 diff --git a/dist/src/index.js b/dist/src/index.js index 0ccb9c2..7850c70 100644 --- a/dist/src/index.js +++ b/dist/src/index.js @@ -14,27 +14,29 @@ export default class Pokedex { } async getResource(endpoint, callback) { try { + // Fail if the endpoint is not supplied if (!endpoint) { throw new Error('Param "endpoint" is required needs to be a string or array of strings'); } + // Fail if the input types aren't accepted + if (!Array.isArray(endpoint) && typeof endpoint !== 'string') { + throw new Error('Param "endpoint" needs to be a string or array of strings'); + } + /// If the user has submitted a string, return the JSON promise if (typeof endpoint === 'string') { return getJSON(this.options, endpoint, callback); } - else if (typeof endpoint === 'object') { - const mapper = async (endpoints) => { - const queryRes = await getJSON(this.options, endpoints); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "endpoint" needs to be a string or array of strings'); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (endpoints) => { + const queryRes = await getJSON(this.options, endpoints); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); + if (callback) { + callback(mappedResults); } + return mappedResults; } catch (error) { handleError(error, callback); @@ -43,27 +45,29 @@ export default class Pokedex { /** @deprecated - will be removed on the next version. Use {@link getResource} instead */ async resource(endpoint, callback) { try { + // Fail if the endpoint is not supplied if (!endpoint) { throw new Error('Param "endpoint" is required needs to be a string or array of strings'); } + // Fail if the input types aren't accepted + if (!Array.isArray(endpoint) && typeof endpoint !== 'string') { + throw new Error('Param "endpoint" needs to be a string or array of strings'); + } + /// If the user has submitted a string, return the JSON promise if (typeof endpoint === 'string') { return getJSON(this.options, endpoint, callback); } - else if (typeof endpoint === 'object') { - const mapper = async (endpoints) => { - const queryRes = await getJSON(this.options, endpoints); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "endpoint" needs to be a string or array of strings'); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (endpoints) => { + const queryRes = await getJSON(this.options, endpoints); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); + if (callback) { + callback(mappedResults); } + return mappedResults; } catch (error) { handleError(error, callback); @@ -71,32 +75,30 @@ export default class Pokedex { } async getBerryByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -104,32 +106,30 @@ export default class Pokedex { } async getBerryFirmnessByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -137,32 +137,30 @@ export default class Pokedex { } async getBerryFlavorByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -170,32 +168,30 @@ export default class Pokedex { } async getContestTypeByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -203,32 +199,30 @@ export default class Pokedex { } async getContestEffectById(id, callback) { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${id}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${ids}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } - else { + // Fail if the param is not supplied + if (!id) { throw new Error('Param "id" is required (Must be a number or array of numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${id}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${ids}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -236,32 +230,30 @@ export default class Pokedex { } async getSuperContestEffectById(id, callback) { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${id}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${ids}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } - else { + // Fail if the param is not supplied + if (!id) { throw new Error('Param "id" is required (Must be a number or array of numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${id}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${ids}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -269,32 +261,30 @@ export default class Pokedex { } async getEncounterMethodByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -302,32 +292,30 @@ export default class Pokedex { } async getEncounterConditionByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -335,32 +323,30 @@ export default class Pokedex { } async getEncounterConditionValueByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -368,32 +354,30 @@ export default class Pokedex { } async getEvolutionChainById(id, callback) { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${id}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${ids}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } - else { + // Fail if the param is not supplied + if (!id) { throw new Error('Param "id" is required (Must be a number or array of numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${id}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${ids}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -401,32 +385,30 @@ export default class Pokedex { } async getEvolutionTriggerByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -434,32 +416,30 @@ export default class Pokedex { } async getGenerationByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -467,32 +447,30 @@ export default class Pokedex { } async getPokedexByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -500,32 +478,30 @@ export default class Pokedex { } async getVersionByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -533,32 +509,30 @@ export default class Pokedex { } async getVersionGroupByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -566,32 +540,30 @@ export default class Pokedex { } async getItemByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -599,32 +571,30 @@ export default class Pokedex { } async getItemAttributeByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -632,32 +602,30 @@ export default class Pokedex { } async getItemCategoryByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -665,32 +633,30 @@ export default class Pokedex { } async getItemFlingEffectByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -698,32 +664,30 @@ export default class Pokedex { } async getItemPocketByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -731,32 +695,30 @@ export default class Pokedex { } async getMachineById(id, callback) { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${id}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${ids}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } - else { + // Fail if the param is not supplied + if (!id) { throw new Error('Param "id" is required (Must be a number or array of numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${id}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${ids}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -764,32 +726,30 @@ export default class Pokedex { } async getMoveByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -797,32 +757,30 @@ export default class Pokedex { } async getMoveAilmentByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -830,32 +788,30 @@ export default class Pokedex { } async getMoveBattleStyleByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -863,32 +819,30 @@ export default class Pokedex { } async getMoveCategoryByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -896,32 +850,30 @@ export default class Pokedex { } async getMoveDamageClassByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -929,32 +881,30 @@ export default class Pokedex { } async getMoveLearnMethodByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -962,32 +912,30 @@ export default class Pokedex { } async getMoveTargetByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -995,32 +943,30 @@ export default class Pokedex { } async getLocationByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1028,32 +974,30 @@ export default class Pokedex { } async getLocationAreaByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1061,32 +1005,30 @@ export default class Pokedex { } async getPalParkAreaByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1094,32 +1036,30 @@ export default class Pokedex { } async getRegionByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1127,32 +1067,30 @@ export default class Pokedex { } async getAbilityByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1160,32 +1098,30 @@ export default class Pokedex { } async getCharacteristicById(id, callback) { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${id}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${ids}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } - else { + // Fail if the param is not supplied + if (!id) { throw new Error('Param "id" is required (Must be a number or array of numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${id}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${ids}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1193,32 +1129,30 @@ export default class Pokedex { } async getEggGroupByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1226,32 +1160,30 @@ export default class Pokedex { } async getGenderByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1259,32 +1191,30 @@ export default class Pokedex { } async getGrowthRateByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1292,32 +1222,30 @@ export default class Pokedex { } async getNatureByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1325,32 +1253,30 @@ export default class Pokedex { } async getPokeathlonStatByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1358,32 +1284,30 @@ export default class Pokedex { } async getPokemonByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1391,32 +1315,30 @@ export default class Pokedex { } async getPokemonColorByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1424,32 +1346,30 @@ export default class Pokedex { } async getPokemonFormByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1457,32 +1377,30 @@ export default class Pokedex { } async getPokemonHabitatByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1490,32 +1408,30 @@ export default class Pokedex { } async getPokemonShapeByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1523,32 +1439,30 @@ export default class Pokedex { } async getPokemonSpeciesByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1556,32 +1470,30 @@ export default class Pokedex { } async getStatByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1589,32 +1501,30 @@ export default class Pokedex { } async getTypeByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); @@ -1622,32 +1532,30 @@ export default class Pokedex { } async getLanguageByName(nameOrId, callback) { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrId}/`, callback); - } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrIds}/`); - return queryRes; - }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - if (callback) { - callback(mappedResults); - } - return mappedResults; - } - else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } - else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrId}/`, callback); + } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrIds}/`); + return queryRes; + }; + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + return mappedResults; } catch (error) { handleError(error, callback); diff --git a/dist/src/interfaces/PokeAPIOptions.js b/dist/src/interfaces/PokeAPIOptions.js index ef4dc36..c4c32f0 100644 --- a/dist/src/interfaces/PokeAPIOptions.js +++ b/dist/src/interfaces/PokeAPIOptions.js @@ -1,4 +1,5 @@ class PokeAPIOptions { + /* eslint-disable default-param-last */ constructor(config = {}, cache) { this.protocol = 'https'; this.hostName = '://pokeapi.co'; diff --git a/dist/src/utils/Getter.js b/dist/src/utils/Getter.js index a9581cd..d3f0733 100644 --- a/dist/src/utils/Getter.js +++ b/dist/src/utils/Getter.js @@ -1,7 +1,6 @@ /* eslint-disable import/no-unresolved */ import axios from 'axios'; import handleError from './ErrorHandler.js'; -// eslint-disable-next-line consistent-return async function getJSON(values, url, // eslint-disable-next-line no-unused-vars callback) { @@ -12,38 +11,42 @@ callback) { try { // Retrieve possible content from memory-cache const cachedResult = values.cache.get(url); + // If we have in cache + if (callback && cachedResult) { + // Call callback without errors + callback(cachedResult); + } + // Return the cache if (cachedResult) { - if (callback) { - // Call callback without errors - callback(cachedResult); - } return cachedResult; } + // If we don't have in cache + // get the data from the API const response = await axios.get(url, options); - // if there is an error + // If there is an error on the request if (response.status !== 200) { - handleError(response, callback); + throw response; + } + // If everything was good + // set the data + const responseData = response.data; + // Cache the object in memory-cache + // only if cacheLimit > 0 + if (values.cacheLimit > 0) { + values.cache.set(url, responseData, values.cacheLimit); } - else { - // If everything was good - // cache the object in memory-cache - // only if cacheLimit > 0 - const responseData = response.data; - if (values.cacheLimit > 0) { - values.cache.set(url, responseData, values.cacheLimit); - } - // If a callback is present - if (callback) { - // Call it, without errors - callback(responseData); - } - else { - return responseData; - } + // If a callback is present + if (callback) { + // Call it, without errors + callback(responseData); } + return responseData; } catch (error) { handleError(error, callback); } + // If we return nothing and the error handler fails + // reject the promise + return Promise.reject(); } export default getJSON; diff --git a/generator/Main.ts b/generator/Main.ts index c5697d5..3e9c88e 100644 --- a/generator/Main.ts +++ b/generator/Main.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import path from 'path'; -import { Project } from 'ts-morph'; +import { MethodDeclarationStructure, OptionalKind, Project } from 'ts-morph'; import endpoints from '../src/utils/Endpoints.js'; import rootEndpoints from '../src/utils/RootEndpoints.js'; @@ -115,34 +115,40 @@ console.timeLog(mainLabel, ' - Base generated, generating methods...'); // Add the get generic resource array method const getResourceCode = `try { + // Fail if the endpoint is not supplied if (!endpoint) { throw new Error('Param "endpoint" is required needs to be a string or array of strings'); } + // Fail if the input types aren't accepted + if (!Array.isArray(endpoint) && typeof endpoint !== 'string') { + throw new Error('Param "endpoint" needs to be a string or array of strings'); + } + + /// If the user has submitted a string, return the JSON promise if (typeof endpoint === 'string') { return getJSON(this.options, endpoint, callback); - } else if (typeof endpoint === 'object') { - const mapper = async (endpoints: string) => { - const queryRes = await getJSON(this.options, endpoints); - return queryRes; - }; + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (endpoints: string) => { + const queryRes = await getJSON(this.options, endpoints); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "endpoint" needs to be a string or array of strings'); + if (callback) { + callback(mappedResults); } + + return mappedResults; } catch (error) { handleError(error, callback); }`; -let methodStructure = { +let methodStructure: OptionalKind = { name: 'getResource', isAsync: true, parameters: [{ @@ -155,6 +161,36 @@ let methodStructure = { hasQuestionToken: true, }], returnType: 'Promise', + overloads: [ + { + parameters: [ + { + name: 'endpoint', + type: 'string', + }, + { + name: 'callback', + type: '(result: any, error?: any) => any', + hasQuestionToken: true, + }, + ], + returnType: 'Promise', + }, + { + parameters: [ + { + name: 'endpoint', + type: 'string[]', + }, + { + name: 'callback', + type: '(result: any[], error?: any) => any', + hasQuestionToken: true, + }, + ], + returnType: 'Promise', + }, + ], }; pokeApiClass.addMethod(methodStructure).setBodyText(getResourceCode); @@ -182,6 +218,11 @@ for (const [methodName, endpoint, jsdocs] of endpoints) { const inputParam = methodName.match(/ByName$/) ? 'nameOrId' : 'id'; const inputParamType = methodName.match(/ByName$/) ? 'string | number | Array' : 'number | number[]'; + const singleParamType = methodName.match(/ByName$/) ? 'string | number' : 'number'; + const multipleParamType = methodName.match(/ByName$/) ? 'Array' : 'number[]'; + + const returnType = `PokeAPITypes.${apiMap[endpoint]}`; + methodStructure = { name: methodName, isAsync: true, @@ -191,50 +232,80 @@ for (const [methodName, endpoint, jsdocs] of endpoints) { }, { name: 'callback', - type: `(result: PokeAPITypes.${apiMap[endpoint]} | PokeAPITypes.${apiMap[endpoint]}[], error?: any) => any`, + type: `((result: ${returnType}, error?: any) => any) & ((result: ${returnType}[], error?: any) => any)`, hasQuestionToken: true, }], - returnType: `Promise`, + returnType: `Promise<${returnType} | ${returnType}[]>`, + overloads: [ + { + parameters: [ + { + name: inputParam, + type: singleParamType, + }, + { + name: 'callback', + type: `(result: ${returnType}, error?: any) => any`, + hasQuestionToken: true, + }, + ], + returnType: `Promise<${returnType}>`, + }, + { + parameters: [ + { + name: inputParam, + type: multipleParamType, + }, + { + name: 'callback', + type: `(result: ${returnType}[], error?: any) => any`, + hasQuestionToken: true, + }, + ], + returnType: `Promise<${returnType}[]>`, + }, + ], }; const generatedMethod = pokeApiClass.addMethod(methodStructure).setBodyText(`try { - if (${inputParam}) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof ${inputParam} === 'number' || typeof ${inputParam} === 'string') { - return getJSON(this.options, \`\${this.options.protocol}\${this.options.hostName}\${this.options.versionPath}${endpoint}/\${${inputParam}}/\`, callback); - } + // Fail if the param is not supplied + if (!${inputParam}) { + throw new Error('Param "${inputParam}" is required (Must be a ${methodName.match(/ByName$/) ? 'string, array of strings or array of string and/or numbers' : 'number or array of numbers'} )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof ${inputParam} === 'object') { - const mapper = async (${inputParam}s: ${inputParamType}) => { - const queryRes = await getJSON(this.options, \`\${this.options.protocol}\${this.options.hostName}\${this.options.versionPath}${endpoint}/\${${inputParam}s}/\`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(${inputParam}) && typeof ${inputParam} !== 'number' && typeof ${inputParam} !== 'string') { + throw new Error('Param "${inputParam}" must be a ${methodName.match(/ByName$/) ? 'string, array of strings or array of string and/or numbers' : 'number or array of numbers'}'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(${inputParam}, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof ${inputParam} === 'number' || typeof ${inputParam} === 'string') { + return getJSON<${returnType}>(this.options, \`\${this.options.protocol}\${this.options.hostName}\${this.options.versionPath}${endpoint}/\${${inputParam}}/\`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (${inputParam}s: ${inputParamType}) => { + const queryRes = await getJSON<${returnType}>(this.options, \`\${this.options.protocol}\${this.options.hostName}\${this.options.versionPath}${endpoint}/\${${inputParam}s}/\`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "${inputParam}" must be a ${methodName.match(/ByName$/) ? 'string, array of strings or array of string and/or numbers' : 'number or array of numbers'}'); - } - } else { - throw new Error('Param "${inputParam}" is required (Must be a ${methodName.match(/ByName$/) ? 'string, array of strings or array of string and/or numbers' : 'number or array of numbers'} )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(${inputParam}, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; +} catch (error) { handleError(error, callback); - }`); +}`); // Add the declaration to the types file - // Sanitizing the namespace and remove the async keyword + // Removing the async keyword methodStructure.isAsync = false; - methodStructure.parameters[1].type = methodStructure.parameters[1].type.replace(/PokeAPITypes/g, 'PokeAPI'); - methodStructure.returnType = methodStructure.returnType.replace(/PokeAPITypes/g, 'PokeAPI'); const declaredMethod = declarationClass.addMethod(methodStructure); // If the method has a JSDoc, add it @@ -263,7 +334,7 @@ for (const [method, rawEndpoint, jsdocs] of rootEndpoints) { } // Infer the return type from the name - const returnType = apiMap[endpoint].includes('NamedList') ? 'NamedAPIResourceList' : 'APIResourceList'; + const returnType = `PokeAPITypes.${apiMap[endpoint].includes('NamedList') ? 'NamedAPIResourceList' : 'APIResourceList'}`; const methodStructure = { name: method, @@ -275,10 +346,10 @@ for (const [method, rawEndpoint, jsdocs] of rootEndpoints) { }, { name: 'callback', - type: `(result: PokeAPITypes.${returnType}, error?: any) => any`, + type: `(result: ${returnType}, error?: any) => any`, hasQuestionToken: true, }], - returnType: `Promise`, + returnType: `Promise<${returnType}>`, }; const generatedMethod = pokeApiClass.addMethod(methodStructure).setBodyText(`try { @@ -300,10 +371,8 @@ for (const [method, rawEndpoint, jsdocs] of rootEndpoints) { }`); // Add the declaration to the types file - // Sanitizing the namespace and remove the async keyword + // Removing the async keyword methodStructure.isAsync = false; - methodStructure.parameters[1].type = methodStructure.parameters[1].type.replace(/PokeAPITypes/g, 'PokeAPI'); - methodStructure.returnType = methodStructure.returnType.replace(/PokeAPITypes/g, 'PokeAPI'); const declaredMethod = declarationClass.addMethod(methodStructure); // If the method has a JSDoc, add it @@ -378,6 +447,10 @@ declarationClass.getParentModule().addExportAssignment({ expression: 'PokeAPI', }); +// Sanitize the namespaces of the declaration file and format it again +declarationClass.replaceWithText(declarationClass.getFullText().replace(/PokeAPITypes/g, 'PokeAPI')); +declarationClass.formatText(); + // Top level async function (async () => { // Save and compile to JS diff --git a/generator/TypesGenerator.ts b/generator/TypesGenerator.ts index a6a7468..6f0d74e 100644 --- a/generator/TypesGenerator.ts +++ b/generator/TypesGenerator.ts @@ -41,7 +41,7 @@ async function generateFinalFile(types: string) { * Code by: HRKings * And: Christian Garza * Code inspired by: Mudkip -* Execute \`npm run generate\` to regenerate +* Execute \`npm run generate:types\` to regenerate */`, { overwrite: true }); // Create the root module @@ -58,12 +58,14 @@ async function generateFinalFile(types: string) { namespace.setBodyText(types); // Remove interfaces that are wrongly generated - namespace.getInterface('EvolutionChainElement').remove(); - namespace.getInterface('GenerationElement').remove(); - namespace.getInterface('VersionGroupNamedList').remove(); + namespace.getInterface('EvolutionChainElement')?.remove(); + namespace.getInterface('ResultElement')?.remove(); + namespace.getInterface('GenerationElement')?.remove(); + namespace.getInterface('VersionGroupNamedList')?.remove(); // Replace the wrong definitions with the correct ones namespace.setBodyText(namespace.getBodyText() + .replace(/ResultElement/g, 'APIResource') .replace(/EvolutionChainElement/g, 'APIResource') .replace(/GenerationElement/g, 'NamedAPIResource')); diff --git a/package-lock.json b/package-lock.json index cc705cf..ae78545 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4493 +1,43 @@ { "name": "pokedex-promise-v2", - "version": "4.0.1", - "lockfileVersion": 2, + "version": "4.1.0", + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "pokedex-promise-v2", - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "axios": "^0.24.0", - "node-cache": "^5.1.2", - "p-map": "^5.3.0" - }, - "devDependencies": { - "@types/chai": "^4.2.22", - "@types/chai-as-promised": "^7.1.4", - "@types/chai-things": "^0.0.35", - "@types/memory-cache": "^0.2.1", - "@types/mocha": "^9.0.0", - "@types/node": "^16.11.7", - "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.4.0", - "chai": "^4.3.4", - "chai-as-promised": "^7.1.1", - "chai-things": "^0.2.0", - "directory-tree": "^3.0.1", - "doctoc": "^2.1.0", - "eslint": "^8.3.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.25.3", - "lodash": "^4.17.21", - "mocha": "^9.1.3", - "quicktype-core": "^6.0.70", - "ts-morph": "^12.2.0", - "typescript": "^4.5.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@mark.probst/unicode-properties": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mark.probst/unicode-properties/-/unicode-properties-1.1.0.tgz", - "integrity": "sha512-7AQsO0hMmpqDledV7AhBuSYqYPFsKP9PaltMecX9nlnsyFxqtsqUg9/pvB2L/jxvskrDrNkdKYz2KTbQznCtng==", - "dev": true, - "dependencies": { - "brfs": "^1.4.0", - "unicode-trie": "^0.3.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@textlint/ast-node-types": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.3.tgz", - "integrity": "sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==", - "dev": true - }, - "node_modules/@textlint/markdown-to-ast": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.1.7.tgz", - "integrity": "sha512-B0QtokeQR4a9+4q0NQr8T9l7A1fFihTN5Ze57tVgqW+3ymzXEouh8DvPHeNQ4T6jEkAThvdjk95mxAMpGRJ79w==", - "dev": true, - "dependencies": { - "@textlint/ast-node-types": "^4.2.5", - "debug": "^4.1.1", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" - } - }, - "node_modules/@ts-morph/common": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.11.1.tgz", - "integrity": "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.7", - "minimatch": "^3.0.4", - "mkdirp": "^1.0.4", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@types/chai": { - "version": "4.2.22", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.22.tgz", - "integrity": "sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==", - "dev": true - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz", - "integrity": "sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chai-things": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@types/chai-things/-/chai-things-0.0.35.tgz", - "integrity": "sha512-BC8FwMf9FHj87XT4dgTwbdb8dNRilGqYWGmwLPdJ54YNk6K2PlcFTt68NGHjgPDnms8zIYcOtmPePd0mPNTo/Q==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/memory-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", - "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "5.4.0", - "@typescript-eslint/scope-manager": "5.4.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", - "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.0.tgz", - "integrity": "sha512-8DGp7zUt1E9k0NE2q4jlXHk+V3ORErmwolEdRz9iV+LKJ40WhMHh92cxAvhqV2I+zEn/gotIoqoMs0NjF3xofg==", - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", - "dev": true, - "dependencies": { - "emoji-regex": "~6.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "dependencies": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - }, - "bin": { - "brfs": "bin/cmd.js" - } - }, - "node_modules/browser-or-node": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz", - "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==", - "dev": true - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "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.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/chai-things": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chai-things/-/chai-things-0.2.0.tgz", - "integrity": "sha1-xVEoN4+bs5nplPAAUhUZhO1uvnA=", - "dev": true - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/clean-stack": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.1.0.tgz", - "integrity": "sha512-dxXQYI7mfQVcaF12s6sjNFoZ6ZPDQuBBLp3QJ5156k9EvUFClUoZ11fo8HnLQO241DDVntHEug8MOuFO5PSfRg==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/code-block-writer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", - "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", - "dev": true - }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/collection-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collection-utils/-/collection-utils-1.0.1.tgz", - "integrity": "sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/directory-tree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/directory-tree/-/directory-tree-3.0.1.tgz", - "integrity": "sha512-IJL5L/zd73xbchfsIKMrhaRJCt28ek1UsS6LNZ6b9r7m+VbU1fd7JZAypn6gl1g4hpxn21QF3/scAWKIOMk4Ug==", - "dev": true, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/doctoc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.1.0.tgz", - "integrity": "sha512-0darEVEuWKLyIlpGOzE5cILf/pgUu25qUs6YwCqLqfxb8+3b9Cl4iakA8vwYrBQOkJ5SwpHKEPVMu2KOMrTA7A==", - "dev": true, - "dependencies": { - "@textlint/markdown-to-ast": "~6.1.7", - "anchor-markdown-header": "~0.5.7", - "htmlparser2": "~4.1.0", - "minimist": "~1.2.5", - "underscore": "~1.12.1", - "update-section": "~0.3.3" - }, - "bin": { - "doctoc": "doctoc.js" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/domutils/node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", - "dev": true - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "dependencies": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", - "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", - "dev": true, - "dependencies": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "dependencies": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "dependencies": { - "vlq": "^0.2.2" - } - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.25", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/node-cache": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", - "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", - "dependencies": { - "clone": "2.x" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.3.0.tgz", - "integrity": "sha512-SRbIQFoLYNezHkqZslqeg963HYUtqOrfMCxjNrFOpJ19WTYuq26rQoOXeX8QQiMLUlLqdYV/7PuDsdYJ7hLE1w==", - "dependencies": { - "aggregate-error": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quicktype-core": { - "version": "6.0.70", - "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-6.0.70.tgz", - "integrity": "sha512-BMoG1omvauNhgGFzz1AkFVIC0LPXPArE6cCGI5fTeHvXKQsVUCbHt+seee2TaqUkELX9Pk6yA0s8OW8vW3kllA==", - "dev": true, - "dependencies": { - "@mark.probst/unicode-properties": "~1.1.0", - "browser-or-node": "^1.2.1", - "collection-utils": "^1.0.1", - "is-url": "^1.2.4", - "isomorphic-fetch": "^2.2.1", - "js-base64": "^2.4.3", - "pako": "^1.0.6", - "pluralize": "^7.0.0", - "readable-stream": "2.3.0", - "urijs": "^1.19.1", - "wordwrap": "^1.0.0", - "yaml": "^1.5.0" - } - }, - "node_modules/quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "dependencies": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - }, - "bin": { - "quote-stream": "bin/cmd.js" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", - "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.0", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/remark-frontmatter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz", - "integrity": "sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==", - "dev": true, - "dependencies": { - "fault": "^1.0.1", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", - "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", - "dev": true, - "dependencies": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "dependencies": { - "escodegen": "^1.11.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "dependencies": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - } - }, - "node_modules/static-module/node_modules/object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - }, - "node_modules/static-module/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/static-module/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/static-module/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/structured-source": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", - "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", - "dev": true, - "dependencies": { - "boundary": "^1.0.1" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-morph": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-12.2.0.tgz", - "integrity": "sha512-WHXLtFDcIRwoqaiu0elAoZ/AmI+SwwDafnPKjgJmdwJ2gRVO0jMKBt88rV2liT/c6MTsXyuWbGFiHe9MRddWJw==", - "dev": true, - "dependencies": { - "@ts-morph/common": "~0.11.1", - "code-block-writer": "^10.1.1" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "dependencies": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "node_modules/unicode-trie/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "node_modules/unified": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", - "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", - "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^2.0.0", - "x-is-string": "^0.1.0" - } - }, - "node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "node_modules/unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dev": true, - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", - "dev": true - }, - "node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/update-section": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", - "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/vfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", - "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.4", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - } - }, - "node_modules/vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", - "dev": true, - "dependencies": { - "unist-util-stringify-position": "^1.1.1" - } - }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, "dependencies": { "@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } } }, "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -4531,24 +81,26 @@ } }, "@textlint/ast-node-types": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.3.tgz", - "integrity": "sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==", + "version": "12.2.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", + "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", "dev": true }, "@textlint/markdown-to-ast": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.1.7.tgz", - "integrity": "sha512-B0QtokeQR4a9+4q0NQr8T9l7A1fFihTN5Ze57tVgqW+3ymzXEouh8DvPHeNQ4T6jEkAThvdjk95mxAMpGRJ79w==", + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", + "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.2.5", - "debug": "^4.1.1", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" + "@textlint/ast-node-types": "^12.2.2", + "debug": "^4.3.4", + "mdast-util-gfm-autolink-literal": "^0.1.3", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.7", + "unified": "^9.2.2" } }, "@ts-morph/common": { @@ -4564,15 +116,15 @@ } }, "@types/chai": { - "version": "4.2.22", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.22.tgz", - "integrity": "sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", "dev": true }, "@types/chai-as-promised": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz", - "integrity": "sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz", + "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==", "dev": true, "requires": { "@types/chai": "*" @@ -4588,116 +140,152 @@ } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, "@types/memory-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.2.tgz", + "integrity": "sha512-xNnm6EkmYYhTnLiOHC2bdKgcYY5qjjrq5vl9KXD2nh0em0koZoFS500EL4Q4V/eW+A3P7NC7P7GIYzNOSQp7jQ==", "dev": true }, "@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, "@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", + "version": "16.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.7.tgz", + "integrity": "sha512-SghuoXv8ghvkrKjTyvhRTeNzivPzGQ8pe09PPGdyqsExiKvBYV/6E3imvjsaJuW8ca61qQN2+SoSzyEHS9r2LA==", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", - "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.0.tgz", + "integrity": "sha512-QrZqaIOzJAjv0sfjY4EjbXUi3ZOFpKfzntx22gPGr9pmFcTjcFw/1sS1LJhEubfAGwuLjNrPV0rH+D1/XZFy7Q==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.4.0", - "@typescript-eslint/scope-manager": "5.4.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/type-utils": "5.46.0", + "@typescript-eslint/utils": "5.46.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", - "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", + "@typescript-eslint/parser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.0.tgz", + "integrity": "sha512-joNO6zMGUZg+C73vwrKXCd8usnsmOYmgW/w5ZW0pG0RGvqeznjtGDk61EqqTpNrFLUYBW2RSBFrxdAZMqA4OZA==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", + "debug": "^4.3.4" } }, - "@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", + "@typescript-eslint/scope-manager": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.0.tgz", + "integrity": "sha512-7wWBq9d/GbPiIM6SqPK9tfynNxVbfpihoY5cSFMer19OYUA3l4powA2uv0AV2eAZV6KoAh6lkzxv4PoxOLh1oA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0" } }, - "@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", + "@typescript-eslint/type-utils": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.0.tgz", + "integrity": "sha512-dwv4nimVIAsVS2dTA0MekkWaRnoYNXY26dKz8AN5W3cBFYwYGFQEqm/cG+TOoooKlncJS4RTbFKgcFY/pOiBCg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" + "@typescript-eslint/typescript-estree": "5.46.0", + "@typescript-eslint/utils": "5.46.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.0.tgz", + "integrity": "sha512-wHWgQHFB+qh6bu0IAPAJCdeCdI0wwzZnnWThlmHNY01XJ9Z97oKqKOzWYpR2I83QmshhQJl6LDM9TqMiMwJBTw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.0.tgz", + "integrity": "sha512-kDLNn/tQP+Yp8Ro2dUpyyVV0Ksn2rmpPpB0/3MO874RNmXtypMwSeazjEN/Q6CTp8D7ExXAAekPEcCEB/vtJkw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, + "@typescript-eslint/utils": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.0.tgz", + "integrity": "sha512-4O+Ps1CRDw+D+R40JYh5GlKLQERXRKW5yIQoNDpmXPJ+C7kaPF9R7GWl+PxGgXjB3PQCqsaaZUpZ9dG4U6DO7g==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, "@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.0.tgz", + "integrity": "sha512-E13gBoIXmaNhwjipuvQg1ByqSAu/GbEpP/qzFihugJ+MomtoJtFAJG/+2DRPByf57B863m0/q7Zt16V9ohhANw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.46.0", + "eslint-visitor-keys": "^3.3.0" } }, "@ungap/promise-all-settled": { @@ -4707,22 +295,21 @@ "dev": true }, "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "aggregate-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.0.tgz", - "integrity": "sha512-8DGp7zUt1E9k0NE2q4jlXHk+V3ORErmwolEdRz9iV+LKJ40WhMHh92cxAvhqV2I+zEn/gotIoqoMs0NjF3xofg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", "requires": { "clean-stack": "^4.0.0", "indent-string": "^5.0.0" @@ -4741,12 +328,12 @@ } }, "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", + "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", "dev": true, "requires": { - "emoji-regex": "~6.1.0" + "emoji-regex": "~10.1.0" } }, "ansi-colors": { @@ -4762,18 +349,18 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -4786,16 +373,22 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" } }, @@ -4806,14 +399,15 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" } }, "assertion-error": { @@ -4848,12 +442,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4900,7 +488,7 @@ "buffer-equal": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", "dev": true }, "buffer-from": { @@ -4926,21 +514,28 @@ "dev": true }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", "dev": true }, "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", + "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" } @@ -4957,17 +552,18 @@ "chai-things": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chai-things/-/chai-things-0.2.0.tgz", - "integrity": "sha1-xVEoN4+bs5nplPAAUhUZhO1uvnA=", + "integrity": "sha512-6ns0SU21xdRCoEXVKH3HGbwnsgfVMXQ+sU5V8PI9rfxaITos8lss1vUxbF1FAcJKjfqmmmLVlr/z3sLes00w+A==", "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "character-entities": { @@ -4991,13 +587,13 @@ "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -5022,9 +618,9 @@ } }, "clean-stack": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.1.0.tgz", - "integrity": "sha512-dxXQYI7mfQVcaF12s6sjNFoZ6ZPDQuBBLp3QJ5156k9EvUFClUoZ11fo8HnLQO241DDVntHEug8MOuFO5PSfRg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "requires": { "escape-string-regexp": "5.0.0" }, @@ -5045,37 +641,12 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } } }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, "code-block-writer": { "version": "10.1.1", @@ -5083,12 +654,6 @@ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", "dev": true }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "dev": true - }, "collection-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collection-utils/-/collection-utils-1.0.1.tgz", @@ -5096,24 +661,62 @@ "dev": true }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { @@ -5129,19 +732,16 @@ } }, "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "core-util-is": { "version": "1.0.3", @@ -5161,9 +761,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -5176,14 +776,20 @@ "dev": true }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, "requires": { "type-detect": "^4.0.0" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5191,12 +797,13 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "diff": { @@ -5215,23 +822,27 @@ } }, "directory-tree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/directory-tree/-/directory-tree-3.0.1.tgz", - "integrity": "sha512-IJL5L/zd73xbchfsIKMrhaRJCt28ek1UsS6LNZ6b9r7m+VbU1fd7JZAypn6gl1g4hpxn21QF3/scAWKIOMk4Ug==", - "dev": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/directory-tree/-/directory-tree-3.4.0.tgz", + "integrity": "sha512-8eNxj/KngIac7449j8GYzapoDfr0DjtR/HMKwYBI4xqnBRLVkVAs1hzso1pimXK/U8ihAXlKmxVAmorb/GD/Rg==", + "dev": true, + "requires": { + "command-line-args": "^5.2.0", + "command-line-usage": "^6.1.1" + } }, "doctoc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.1.0.tgz", - "integrity": "sha512-0darEVEuWKLyIlpGOzE5cILf/pgUu25qUs6YwCqLqfxb8+3b9Cl4iakA8vwYrBQOkJ5SwpHKEPVMu2KOMrTA7A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", + "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "~6.1.7", - "anchor-markdown-header": "~0.5.7", - "htmlparser2": "~4.1.0", - "minimist": "~1.2.5", - "underscore": "~1.12.1", - "update-section": "~0.3.3" + "@textlint/markdown-to-ast": "^12.1.1", + "anchor-markdown-header": "^0.6.0", + "htmlparser2": "^7.2.0", + "minimist": "^1.2.6", + "underscore": "^1.13.2", + "update-section": "^0.3.3" } }, "doctrine": { @@ -5244,9 +855,9 @@ } }, "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -5254,30 +865,27 @@ "entities": "^2.0.0" }, "dependencies": { - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true } } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { - "domelementtype": "^2.0.1" + "domelementtype": "^2.2.0" } }, "domutils": { @@ -5289,32 +897,21 @@ "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } } }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "requires": { "readable-stream": "^2.0.2" } }, "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", "dev": true }, "encoding": { @@ -5326,47 +923,52 @@ "iconv-lite": "^0.6.2" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" } }, "es-to-primitive": { @@ -5387,9 +989,9 @@ "dev": true }, "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "escodegen": { @@ -5408,7 +1010,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -5432,13 +1034,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -5447,55 +1049,96 @@ } }, "eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", + "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -5508,11 +1151,20 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -5558,14 +1210,12 @@ } }, "eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -5580,9 +1230,9 @@ } }, "eslint-plugin-import": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", - "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -5590,14 +1240,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -5621,7 +1271,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -5654,26 +1304,26 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true }, "esquery": { @@ -5729,15 +1379,13 @@ "dev": true }, "falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", + "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", "dev": true, "requires": { "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" + "isarray": "^2.0.1" }, "dependencies": { "acorn": { @@ -5761,9 +1409,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -5793,13 +1441,13 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -5832,13 +1480,23 @@ "to-regex-range": "^5.0.1" } }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + } + }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "flat": { @@ -5858,32 +1516,26 @@ } }, "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, "format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -5899,10 +1551,22 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "get-caller-file": { @@ -5914,18 +1578,18 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-symbol-description": { @@ -5939,9 +1603,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -5962,28 +1626,43 @@ } }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -6000,21 +1679,30 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -6033,15 +1721,15 @@ "dev": true }, "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "requires": { "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, "iconv-lite": { @@ -6054,9 +1742,9 @@ } }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", "dev": true }, "import-fresh": { @@ -6072,7 +1760,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -6083,7 +1771,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -6152,21 +1840,21 @@ } }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -6190,7 +1878,13 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -6209,9 +1903,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-number": { @@ -6221,18 +1915,24 @@ "dev": true }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-regex": { @@ -6246,15 +1946,18 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, "is-string": { @@ -6288,42 +1991,30 @@ "dev": true }, "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "dev": true - }, - "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", "dev": true, "requires": { "node-fetch": "^1.0.1", @@ -6336,6 +2027,12 @@ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "dev": true }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -6354,7 +2051,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json5": { @@ -6377,13 +2074,12 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -6392,6 +2088,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6406,6 +2108,72 @@ "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" } }, "lru-cache": { @@ -6426,16 +2194,142 @@ "vlq": "^0.2.2" } }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, + "mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "requires": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + } + } + }, + "mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + } + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "requires": { + "micromark-extension-frontmatter": "^0.2.0" + } + }, + "mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "requires": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + } + }, + "mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + } + }, + "mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } + }, + "mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "requires": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + } + }, + "mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "~0.6.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true }, "merge-source-map": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", "dev": true, "requires": { "source-map": "^0.5.6" @@ -6444,7 +2338,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -6455,29 +2349,113 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "requires": { + "fault": "^1.0.0" + } + }, + "micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "requires": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + } + }, + "micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "requires": { + "micromark": "~2.11.3" + } + }, + "micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, + "micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "dev": true + }, + "micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dev": true, + "requires": { + "micromark": "~2.11.0" + } + }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mkdirp": { @@ -6487,84 +2465,79 @@ "dev": true }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, "requires": { - "p-limit": "^3.0.2" + "brace-expansion": "^1.1.7" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "supports-color": { @@ -6585,15 +2558,21 @@ "dev": true }, "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "node-cache": { @@ -6621,9 +2600,9 @@ "dev": true }, "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "object-keys": { @@ -6633,43 +2612,43 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -6690,37 +2669,31 @@ } }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^3.0.2" } }, "p-map": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.3.0.tgz", - "integrity": "sha512-SRbIQFoLYNezHkqZslqeg963HYUtqOrfMCxjNrFOpJ19WTYuq26rQoOXeX8QQiMLUlLqdYV/7PuDsdYJ7hLE1w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", "requires": { "aggregate-error": "^4.0.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -6737,9 +2710,9 @@ } }, "parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "requires": { "character-entities": "^1.0.0", @@ -6757,15 +2730,15 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -6793,20 +2766,11 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", @@ -6820,15 +2784,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "punycode": { @@ -6844,9 +2802,9 @@ "dev": true }, "quicktype-core": { - "version": "6.0.70", - "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-6.0.70.tgz", - "integrity": "sha512-BMoG1omvauNhgGFzz1AkFVIC0LPXPArE6cCGI5fTeHvXKQsVUCbHt+seee2TaqUkELX9Pk6yA0s8OW8vW3kllA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-6.1.0.tgz", + "integrity": "sha512-r5+sRrUBX5RSdNNG2zpYD706Lxsq/0Tvh7te52csKrKKcAGGcSd1mx4sWWjhnBc54I0ZkrLHk/urIWwCDihgMg==", "dev": true, "requires": { "@mark.probst/unicode-properties": "~1.1.0", @@ -6866,7 +2824,7 @@ "quote-stream": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", "dev": true, "requires": { "buffer-equal": "0.0.1", @@ -6896,6 +2854,23 @@ "safe-buffer": "~5.1.0", "string_decoder": "~1.0.0", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "readdirp": { @@ -6907,71 +2882,89 @@ "picomatch": "^2.2.1" } }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", + "dev": true, + "requires": { + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" + } + }, "remark-frontmatter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz", - "integrity": "sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "dev": true, + "requires": { + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" + } + }, + "remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", "dev": true, "requires": { - "fault": "^1.0.1", - "xtend": "^4.0.1" + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" } }, "remark-parse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", - "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, "requires": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" + "mdast-util-from-markdown": "^0.8.0" } }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { @@ -7010,6 +3003,17 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -7017,9 +3021,9 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7037,7 +3041,7 @@ "shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", "dev": true }, "shebang-command": { @@ -7079,12 +3083,6 @@ "dev": true, "optional": true }, - "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "dev": true - }, "static-eval": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", @@ -7116,7 +3114,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -7140,13 +3138,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -7182,12 +3180,6 @@ "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -7202,45 +3194,57 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } } } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -7255,7 +3259,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-json-comments": { @@ -7264,28 +3268,51 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "structured-source": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", - "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "boundary": "^1.0.1" + "has-flag": "^3.0.0" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } } }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "through2": { @@ -7298,12 +3325,6 @@ "xtend": "~4.0.1" }, "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -7318,15 +3339,6 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } } } }, @@ -7346,21 +3358,9 @@ } }, "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", "dev": true }, "trough": { @@ -7380,14 +3380,14 @@ } }, "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -7430,47 +3430,43 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, "underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, - "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dev": true, - "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - } - }, "unicode-trie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", "dev": true, "requires": { "pako": "^0.2.5", @@ -7480,68 +3476,54 @@ "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "dev": true } } }, "unified": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", - "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dev": true, "requires": { "bail": "^1.0.0", "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", "trough": "^1.0.0", - "vfile": "^2.0.0", - "x-is-string": "^0.1.0" + "vfile": "^4.0.0" } }, "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, - "unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dev": true, - "requires": { - "unist-util-visit": "^1.1.0" - } - }, "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", - "dev": true - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "requires": { - "unist-util-visit-parents": "^2.0.0" + "@types/unist": "^2.0.2" } }, "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } }, "update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", - "integrity": "sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=", + "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", "dev": true }, "uri-js": { @@ -7554,48 +3536,37 @@ } }, "urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==", + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "dev": true }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "vfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", - "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "requires": { - "is-buffer": "^1.1.4", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" } }, - "vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "dev": true - }, "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, "requires": { - "unist-util-stringify-position": "^1.1.1" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "vlq": { @@ -7641,13 +3612,31 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "wrap-ansi": { @@ -7661,41 +3650,36 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "xtend": { @@ -7735,31 +3719,6 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } } }, "yargs-parser": { @@ -7778,14 +3737,6 @@ "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } } }, "yocto-queue": { @@ -7793,6 +3744,12 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } } diff --git a/package.json b/package.json index cf719c5..5b31f3e 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "pokedex-promise-v2", "type": "module", - "version": "4.0.1", + "version": "4.1.0", "description": "A library used to get information about Pokemons.", "engines": { - "node": ">=12" + "node": ">=14" }, "main": "dist/src/index.js", "typings": "types/index.d.ts", @@ -50,29 +50,29 @@ "dependencies": { "axios": "^0.24.0", "node-cache": "^5.1.2", - "p-map": "^5.3.0" + "p-map": "^5.5.0" }, "devDependencies": { - "@types/chai": "^4.2.22", - "@types/chai-as-promised": "^7.1.4", + "@types/chai": "^4.3.4", + "@types/chai-as-promised": "^7.1.5", "@types/chai-things": "^0.0.35", - "@types/memory-cache": "^0.2.1", - "@types/mocha": "^9.0.0", - "@types/node": "^16.11.7", - "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.4.0", - "chai": "^4.3.4", + "@types/memory-cache": "^0.2.2", + "@types/mocha": "^9.1.1", + "@types/node": "^16.18.7", + "@typescript-eslint/eslint-plugin": "^5.46.0", + "@typescript-eslint/parser": "^5.46.0", + "chai": "^4.3.7", "chai-as-promised": "^7.1.1", "chai-things": "^0.2.0", - "directory-tree": "^3.0.1", - "doctoc": "^2.1.0", - "eslint": "^8.3.0", + "directory-tree": "^3.4.0", + "doctoc": "^2.2.1", + "eslint": "^8.29.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.25.3", + "eslint-plugin-import": "^2.26.0", "lodash": "^4.17.21", - "mocha": "^9.1.3", - "quicktype-core": "^6.0.70", + "mocha": "^9.2.2", + "quicktype-core": "^6.1.0", "ts-morph": "^12.2.0", - "typescript": "^4.5.2" + "typescript": "^4.9.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 126f262..66cb2d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,89 +1,94 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: - '@types/chai': ^4.2.22 - '@types/chai-as-promised': ^7.1.4 + '@types/chai': ^4.3.4 + '@types/chai-as-promised': ^7.1.5 '@types/chai-things': ^0.0.35 - '@types/memory-cache': ^0.2.1 - '@types/mocha': ^9.0.0 - '@types/node': ^16.11.7 - '@typescript-eslint/eslint-plugin': ^5.2.0 - '@typescript-eslint/parser': ^5.2.0 + '@types/memory-cache': ^0.2.2 + '@types/mocha': ^9.1.1 + '@types/node': ^16.18.7 + '@typescript-eslint/eslint-plugin': ^5.46.0 + '@typescript-eslint/parser': ^5.46.0 axios: ^0.24.0 - chai: ^4.3.4 + chai: ^4.3.7 chai-as-promised: ^7.1.1 chai-things: ^0.2.0 - directory-tree: ^3.0.0 - doctoc: ^2.1.0 - eslint: ^8.1.0 - eslint-config-airbnb-base: ^14.2.1 - eslint-plugin-import: ^2.25.3 + directory-tree: ^3.4.0 + doctoc: ^2.2.1 + eslint: ^8.29.0 + eslint-config-airbnb-base: ^15.0.0 + eslint-plugin-import: ^2.26.0 lodash: ^4.17.21 - mocha: ^8.4.0 + mocha: ^9.2.2 node-cache: ^5.1.2 - p-map: ^5.3.0 - quicktype-core: ^6.0.70 - ts-morph: ^12.0.0 - typescript: ^4.4.4 + p-map: ^5.5.0 + quicktype-core: ^6.1.0 + ts-morph: ^12.2.0 + typescript: ^4.9.4 dependencies: axios: 0.24.0 node-cache: 5.1.2 - p-map: 5.3.0 + p-map: 5.5.0 devDependencies: - '@types/chai': 4.2.22 - '@types/chai-as-promised': 7.1.4 + '@types/chai': 4.3.4 + '@types/chai-as-promised': 7.1.5 '@types/chai-things': 0.0.35 - '@types/memory-cache': 0.2.1 - '@types/mocha': 9.0.0 - '@types/node': 16.11.7 - '@typescript-eslint/eslint-plugin': 5.3.1_4653b7803b7453f5f37717b7e1448517 - '@typescript-eslint/parser': 5.3.1_eslint@8.2.0+typescript@4.4.4 - chai: 4.3.4 - chai-as-promised: 7.1.1_chai@4.3.4 + '@types/memory-cache': 0.2.2 + '@types/mocha': 9.1.1 + '@types/node': 16.18.7 + '@typescript-eslint/eslint-plugin': 5.46.0_5mle7isnkfgjmrghnnczirv6iy + '@typescript-eslint/parser': 5.46.0_ha6vam6werchizxrnqvarmz2zu + chai: 4.3.7 + chai-as-promised: 7.1.1_chai@4.3.7 chai-things: 0.2.0 - directory-tree: 3.0.0 - doctoc: 2.1.0 - eslint: 8.2.0 - eslint-config-airbnb-base: 14.2.1_6e04a54c7bcd7530b1a4c2da0aa486b1 - eslint-plugin-import: 2.25.3_eslint@8.2.0 + directory-tree: 3.4.0 + doctoc: 2.2.1 + eslint: 8.29.0 + eslint-config-airbnb-base: 15.0.0_lt3hqehuojhfcbzgzqfngbtmrq + eslint-plugin-import: 2.26.0_jx43xxcguvnqqmtmaaygwl7cmu lodash: 4.17.21 - mocha: 8.4.0 - quicktype-core: 6.0.70 + mocha: 9.2.2 + quicktype-core: 6.1.0 ts-morph: 12.2.0 - typescript: 4.4.4 + typescript: 4.9.4 packages: - /@eslint/eslintrc/1.0.4: - resolution: {integrity: sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==} + /@eslint/eslintrc/1.3.3: + resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.2 - espree: 9.0.0 - globals: 13.12.0 - ignore: 4.0.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.18.0 + ignore: 5.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 - minimatch: 3.0.4 + minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/config-array/0.6.0: - resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} + /@humanwhocodes/config-array/0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.2 - minimatch: 3.0.4 + debug: 4.3.4 + minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true @@ -113,23 +118,25 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.14.0 dev: true - /@textlint/ast-node-types/4.4.3: - resolution: {integrity: sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==} + /@textlint/ast-node-types/12.2.2: + resolution: {integrity: sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==} dev: true - /@textlint/markdown-to-ast/6.1.7: - resolution: {integrity: sha512-B0QtokeQR4a9+4q0NQr8T9l7A1fFihTN5Ze57tVgqW+3ymzXEouh8DvPHeNQ4T6jEkAThvdjk95mxAMpGRJ79w==} + /@textlint/markdown-to-ast/12.2.3: + resolution: {integrity: sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==} dependencies: - '@textlint/ast-node-types': 4.4.3 - debug: 4.3.2 - remark-frontmatter: 1.3.3 - remark-parse: 5.0.0 - structured-source: 3.0.2 - traverse: 0.6.6 - unified: 6.2.0 + '@textlint/ast-node-types': 12.2.2 + debug: 4.3.4 + mdast-util-gfm-autolink-literal: 0.1.3 + remark-footnotes: 3.0.0 + remark-frontmatter: 3.0.0 + remark-gfm: 1.0.0 + remark-parse: 9.0.0 + traverse: 0.6.7 + unified: 9.2.2 transitivePeerDependencies: - supports-color dev: true @@ -137,50 +144,64 @@ packages: /@ts-morph/common/0.11.1: resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} dependencies: - fast-glob: 3.2.7 - minimatch: 3.0.4 + fast-glob: 3.2.12 + minimatch: 3.1.2 mkdirp: 1.0.4 path-browserify: 1.0.1 dev: true - /@types/chai-as-promised/7.1.4: - resolution: {integrity: sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==} + /@types/chai-as-promised/7.1.5: + resolution: {integrity: sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==} dependencies: - '@types/chai': 4.2.22 + '@types/chai': 4.3.4 dev: true /@types/chai-things/0.0.35: resolution: {integrity: sha512-BC8FwMf9FHj87XT4dgTwbdb8dNRilGqYWGmwLPdJ54YNk6K2PlcFTt68NGHjgPDnms8zIYcOtmPePd0mPNTo/Q==} dependencies: - '@types/chai': 4.2.22 + '@types/chai': 4.3.4 dev: true - /@types/chai/4.2.22: - resolution: {integrity: sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==} + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/json-schema/7.0.9: - resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true /@types/json5/0.0.29: - resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/memory-cache/0.2.2: + resolution: {integrity: sha512-xNnm6EkmYYhTnLiOHC2bdKgcYY5qjjrq5vl9KXD2nh0em0koZoFS500EL4Q4V/eW+A3P7NC7P7GIYzNOSQp7jQ==} dev: true - /@types/memory-cache/0.2.1: - resolution: {integrity: sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==} + /@types/mocha/9.1.1: + resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} dev: true - /@types/mocha/9.0.0: - resolution: {integrity: sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==} + /@types/node/16.18.7: + resolution: {integrity: sha512-SghuoXv8ghvkrKjTyvhRTeNzivPzGQ8pe09PPGdyqsExiKvBYV/6E3imvjsaJuW8ca61qQN2+SoSzyEHS9r2LA==} dev: true - /@types/node/16.11.7: - resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@typescript-eslint/eslint-plugin/5.3.1_4653b7803b7453f5f37717b7e1448517: - resolution: {integrity: sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==} + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + + /@typescript-eslint/eslint-plugin/5.46.0_5mle7isnkfgjmrghnnczirv6iy: + resolution: {integrity: sha512-QrZqaIOzJAjv0sfjY4EjbXUi3ZOFpKfzntx22gPGr9pmFcTjcFw/1sS1LJhEubfAGwuLjNrPV0rH+D1/XZFy7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -190,74 +211,77 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.3.1_eslint@8.2.0+typescript@4.4.4 - '@typescript-eslint/parser': 5.3.1_eslint@8.2.0+typescript@4.4.4 - '@typescript-eslint/scope-manager': 5.3.1 - debug: 4.3.2 - eslint: 8.2.0 - functional-red-black-tree: 1.0.1 - ignore: 5.1.9 + '@typescript-eslint/parser': 5.46.0_ha6vam6werchizxrnqvarmz2zu + '@typescript-eslint/scope-manager': 5.46.0 + '@typescript-eslint/type-utils': 5.46.0_ha6vam6werchizxrnqvarmz2zu + '@typescript-eslint/utils': 5.46.0_ha6vam6werchizxrnqvarmz2zu + debug: 4.3.4 + eslint: 8.29.0 + ignore: 5.2.1 + natural-compare-lite: 1.4.0 regexpp: 3.2.0 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.4 - typescript: 4.4.4 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.3.1_eslint@8.2.0+typescript@4.4.4: - resolution: {integrity: sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==} + /@typescript-eslint/parser/5.46.0_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-joNO6zMGUZg+C73vwrKXCd8usnsmOYmgW/w5ZW0pG0RGvqeznjtGDk61EqqTpNrFLUYBW2RSBFrxdAZMqA4OZA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: '*' + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.3.1 - '@typescript-eslint/types': 5.3.1 - '@typescript-eslint/typescript-estree': 5.3.1_typescript@4.4.4 - eslint: 8.2.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.2.0 + '@typescript-eslint/scope-manager': 5.46.0 + '@typescript-eslint/types': 5.46.0 + '@typescript-eslint/typescript-estree': 5.46.0_typescript@4.9.4 + debug: 4.3.4 + eslint: 8.29.0 + typescript: 4.9.4 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/parser/5.3.1_eslint@8.2.0+typescript@4.4.4: - resolution: {integrity: sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==} + /@typescript-eslint/scope-manager/5.46.0: + resolution: {integrity: sha512-7wWBq9d/GbPiIM6SqPK9tfynNxVbfpihoY5cSFMer19OYUA3l4powA2uv0AV2eAZV6KoAh6lkzxv4PoxOLh1oA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.46.0 + '@typescript-eslint/visitor-keys': 5.46.0 + dev: true + + /@typescript-eslint/type-utils/5.46.0_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-dwv4nimVIAsVS2dTA0MekkWaRnoYNXY26dKz8AN5W3cBFYwYGFQEqm/cG+TOoooKlncJS4RTbFKgcFY/pOiBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.3.1 - '@typescript-eslint/types': 5.3.1 - '@typescript-eslint/typescript-estree': 5.3.1_typescript@4.4.4 - debug: 4.3.2 - eslint: 8.2.0 - typescript: 4.4.4 + '@typescript-eslint/typescript-estree': 5.46.0_typescript@4.9.4 + '@typescript-eslint/utils': 5.46.0_ha6vam6werchizxrnqvarmz2zu + debug: 4.3.4 + eslint: 8.29.0 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.3.1: - resolution: {integrity: sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.3.1 - '@typescript-eslint/visitor-keys': 5.3.1 - dev: true - - /@typescript-eslint/types/5.3.1: - resolution: {integrity: sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==} + /@typescript-eslint/types/5.46.0: + resolution: {integrity: sha512-wHWgQHFB+qh6bu0IAPAJCdeCdI0wwzZnnWThlmHNY01XJ9Z97oKqKOzWYpR2I83QmshhQJl6LDM9TqMiMwJBTw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.3.1_typescript@4.4.4: - resolution: {integrity: sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==} + /@typescript-eslint/typescript-estree/5.46.0_typescript@4.9.4: + resolution: {integrity: sha512-kDLNn/tQP+Yp8Ro2dUpyyVV0Ksn2rmpPpB0/3MO874RNmXtypMwSeazjEN/Q6CTp8D7ExXAAekPEcCEB/vtJkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -265,36 +289,56 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.3.1 - '@typescript-eslint/visitor-keys': 5.3.1 - debug: 4.3.2 - globby: 11.0.4 + '@typescript-eslint/types': 5.46.0 + '@typescript-eslint/visitor-keys': 5.46.0 + debug: 4.3.4 + globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.4.4 - typescript: 4.4.4 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys/5.3.1: - resolution: {integrity: sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==} + /@typescript-eslint/utils/5.46.0_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-4O+Ps1CRDw+D+R40JYh5GlKLQERXRKW5yIQoNDpmXPJ+C7kaPF9R7GWl+PxGgXjB3PQCqsaaZUpZ9dG4U6DO7g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 5.3.1 - eslint-visitor-keys: 3.1.0 + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.46.0 + '@typescript-eslint/types': 5.46.0 + '@typescript-eslint/typescript-estree': 5.46.0_typescript@4.9.4 + eslint: 8.29.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.29.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.46.0: + resolution: {integrity: sha512-E13gBoIXmaNhwjipuvQg1ByqSAu/GbEpP/qzFihugJ+MomtoJtFAJG/+2DRPByf57B863m0/q7Zt16V9ohhANw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.46.0 + eslint-visitor-keys: 3.3.0 dev: true /@ungap/promise-all-settled/1.1.2: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: true - /acorn-jsx/5.3.2_acorn@8.5.0: + /acorn-jsx/5.3.2_acorn@8.8.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.5.0 + acorn: 8.8.1 dev: true /acorn/7.4.1: @@ -303,17 +347,17 @@ packages: hasBin: true dev: true - /acorn/8.5.0: - resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /aggregate-error/4.0.0: - resolution: {integrity: sha512-8DGp7zUt1E9k0NE2q4jlXHk+V3ORErmwolEdRz9iV+LKJ40WhMHh92cxAvhqV2I+zEn/gotIoqoMs0NjF3xofg==} + /aggregate-error/4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: - clean-stack: 4.1.0 + clean-stack: 4.2.0 indent-string: 5.0.0 dev: false @@ -326,10 +370,10 @@ packages: uri-js: 4.4.1 dev: true - /anchor-markdown-header/0.5.7: - resolution: {integrity: sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=} + /anchor-markdown-header/0.6.0: + resolution: {integrity: sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==} dependencies: - emoji-regex: 6.1.3 + emoji-regex: 10.1.0 dev: true /ansi-colors/4.1.1: @@ -337,16 +381,18 @@ packages: engines: {node: '>=6'} dev: true - /ansi-regex/3.0.0: - resolution: {integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=} - engines: {node: '>=4'} - dev: true - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -354,26 +400,36 @@ packages: color-convert: 2.0.1 dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.0 + picomatch: 2.3.1 dev: true /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-includes/3.1.4: - resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} + /array-back/3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back/4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - get-intrinsic: 1.1.1 + define-properties: 1.1.4 + es-abstract: 1.20.5 + get-intrinsic: 1.1.3 is-string: 1.0.7 dev: true @@ -382,13 +438,14 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat/1.2.5: - resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.20.5 + es-shim-unscopables: 1.0.0 dev: true /assertion-error/1.1.0: @@ -398,7 +455,7 @@ packages: /axios/0.24.0: resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: - follow-redirects: 1.14.5 + follow-redirects: 1.15.2 transitivePeerDependencies: - debug dev: false @@ -416,10 +473,6 @@ packages: engines: {node: '>=8'} dev: true - /boundary/1.0.1: - resolution: {integrity: sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=} - dev: true - /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -439,7 +492,7 @@ packages: hasBin: true dependencies: quote-stream: 1.0.2 - resolve: 1.20.0 + resolve: 1.22.1 static-module: 2.2.5 through2: 2.0.5 dev: true @@ -453,7 +506,7 @@ packages: dev: true /buffer-equal/0.0.1: - resolution: {integrity: sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=} + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} engines: {node: '>=0.4.0'} dev: true @@ -465,7 +518,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.3 dev: true /callsites/3.1.0: @@ -473,36 +526,50 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.2.0: - resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /chai-as-promised/7.1.1_chai@4.3.4: + /ccount/1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + dev: true + + /chai-as-promised/7.1.1_chai@4.3.7: resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} peerDependencies: chai: '>= 2.1.2 < 5' dependencies: - chai: 4.3.4 + chai: 4.3.7 check-error: 1.0.2 dev: true /chai-things/0.2.0: - resolution: {integrity: sha1-xVEoN4+bs5nplPAAUhUZhO1uvnA=} + resolution: {integrity: sha512-6ns0SU21xdRCoEXVKH3HGbwnsgfVMXQ+sU5V8PI9rfxaITos8lss1vUxbF1FAcJKjfqmmmLVlr/z3sLes00w+A==} dev: true - /chai/4.3.4: - resolution: {integrity: sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==} + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.2 - deep-eql: 3.0.1 + deep-eql: 4.1.3 get-func-name: 2.0.0 + loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 dev: true + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -524,26 +591,26 @@ packages: dev: true /check-error/1.0.2: - resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /chokidar/3.5.1: - resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.2 + anymatch: 3.1.3 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 normalize-path: 3.0.0 - readdirp: 3.5.0 + readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 dev: true - /clean-stack/4.1.0: - resolution: {integrity: sha512-dxXQYI7mfQVcaF12s6sjNFoZ6ZPDQuBBLp3QJ5156k9EvUFClUoZ11fo8HnLQO241DDVntHEug8MOuFO5PSfRg==} + /clean-stack/4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 @@ -558,7 +625,7 @@ packages: dev: true /clone/2.1.2: - resolution: {integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=} + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} dev: false @@ -566,14 +633,16 @@ packages: resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} dev: true - /collapse-white-space/1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - dev: true - /collection-utils/1.0.1: resolution: {integrity: sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==} dev: true + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -581,10 +650,34 @@ packages: color-name: 1.1.4 dev: true + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /command-line-args/5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage/6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + dev: true + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true @@ -599,14 +692,12 @@ packages: typedarray: 0.0.6 dev: true - /confusing-browser-globals/1.0.10: - resolution: {integrity: sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==} + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true /core-util-is/1.0.3: @@ -624,18 +715,28 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 dev: true - /debug/4.3.1_supports-color@8.1.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + /debug/4.3.3_supports-color@8.1.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -647,8 +748,8 @@ packages: supports-color: 8.1.1 dev: true - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -664,21 +765,27 @@ packages: engines: {node: '>=10'} dev: true - /deep-eql/3.0.1: - resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} - engines: {node: '>=0.12'} + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: + has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true @@ -694,20 +801,24 @@ packages: path-type: 4.0.0 dev: true - /directory-tree/3.0.0: - resolution: {integrity: sha512-rPOvylpnKTuGp5wwEKwnAK506lHg9e0Db+q0J8br0IwMATfOE/2Ksqjgf5Tb9mfIWA8RzVJyta0ScXPgarD6BA==} + /directory-tree/3.4.0: + resolution: {integrity: sha512-8eNxj/KngIac7449j8GYzapoDfr0DjtR/HMKwYBI4xqnBRLVkVAs1hzso1pimXK/U8ihAXlKmxVAmorb/GD/Rg==} engines: {node: '>=10.0'} + hasBin: true + dependencies: + command-line-args: 5.2.1 + command-line-usage: 6.1.3 dev: true - /doctoc/2.1.0: - resolution: {integrity: sha512-0darEVEuWKLyIlpGOzE5cILf/pgUu25qUs6YwCqLqfxb8+3b9Cl4iakA8vwYrBQOkJ5SwpHKEPVMu2KOMrTA7A==} + /doctoc/2.2.1: + resolution: {integrity: sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==} hasBin: true dependencies: - '@textlint/markdown-to-ast': 6.1.7 - anchor-markdown-header: 0.5.7 - htmlparser2: 4.1.0 - minimist: 1.2.5 - underscore: 1.12.1 + '@textlint/markdown-to-ast': 12.2.3 + anchor-markdown-header: 0.6.0 + htmlparser2: 7.2.0 + minimist: 1.2.7 + underscore: 1.13.6 update-section: 0.3.3 transitivePeerDependencies: - supports-color @@ -727,48 +838,41 @@ packages: esutils: 2.0.3 dev: true - /dom-serializer/1.3.2: - resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: - domelementtype: 2.2.0 - domhandler: 4.2.2 + domelementtype: 2.3.0 + domhandler: 4.3.1 entities: 2.2.0 dev: true - /domelementtype/2.2.0: - resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} - dev: true - - /domhandler/3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.2.0 + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domhandler/4.2.2: - resolution: {integrity: sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==} + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: - domelementtype: 2.2.0 + domelementtype: 2.3.0 dev: true /domutils/2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: - dom-serializer: 1.3.2 - domelementtype: 2.2.0 - domhandler: 4.2.2 + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 dev: true /duplexer2/0.1.4: - resolution: {integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=} + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} dependencies: readable-stream: 2.3.7 dev: true - /emoji-regex/6.1.3: - resolution: {integrity: sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=} + /emoji-regex/10.1.0: + resolution: {integrity: sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==} dev: true /emoji-regex/8.0.0: @@ -781,48 +885,57 @@ packages: iconv-lite: 0.6.3 dev: true - /enquirer/2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.1 - dev: true - /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + /entities/3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + dev: true + + /es-abstract/1.20.5: + resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 - get-intrinsic: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 + gopd: 1.0.1 has: 1.0.3 - has-symbols: 1.0.2 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.1 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 + is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-weakref: 1.0.1 - object-inspect: 1.11.0 + is-weakref: 1.0.2 + object-inspect: 1.12.2 object-keys: 1.1.1 - object.assign: 4.1.2 - string.prototype.trimend: 1.0.4 - string.prototype.trimstart: 1.0.4 - unbox-primitive: 1.0.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + unbox-primitive: 1.0.2 + dev: true + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 dev: true /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: - is-callable: 1.2.4 + is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 dev: true @@ -832,6 +945,11 @@ packages: engines: {node: '>=6'} dev: true + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -868,56 +986,88 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-airbnb-base/14.2.1_6e04a54c7bcd7530b1a4c2da0aa486b1: - resolution: {integrity: sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==} - engines: {node: '>= 6'} + /eslint-config-airbnb-base/15.0.0_lt3hqehuojhfcbzgzqfngbtmrq: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - eslint: ^5.16.0 || ^6.8.0 || ^7.2.0 - eslint-plugin-import: ^2.22.1 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 dependencies: - confusing-browser-globals: 1.0.10 - eslint: 8.2.0 - eslint-plugin-import: 2.25.3_eslint@8.2.0 - object.assign: 4.1.2 - object.entries: 1.1.5 + confusing-browser-globals: 1.0.11 + eslint: 8.29.0 + eslint-plugin-import: 2.26.0_jx43xxcguvnqqmtmaaygwl7cmu + object.assign: 4.1.4 + object.entries: 1.1.6 + semver: 6.3.0 dev: true /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 - resolve: 1.20.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color dev: true - /eslint-module-utils/2.7.1: - resolution: {integrity: sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==} + /eslint-module-utils/2.7.4_gt5xgaqja2wfyrirr5sgi3l66m: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 5.46.0_ha6vam6werchizxrnqvarmz2zu debug: 3.2.7 - find-up: 2.1.0 - pkg-dir: 2.0.0 + eslint: 8.29.0 + eslint-import-resolver-node: 0.3.6 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-import/2.25.3_eslint@8.2.0: - resolution: {integrity: sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==} + /eslint-plugin-import/2.26.0_jx43xxcguvnqqmtmaaygwl7cmu: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: - array-includes: 3.1.4 - array.prototype.flat: 1.2.5 + '@typescript-eslint/parser': 5.46.0_ha6vam6werchizxrnqvarmz2zu + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.2.0 + eslint: 8.29.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.1 + eslint-module-utils: 2.7.4_gt5xgaqja2wfyrirr5sgi3l66m has: 1.0.3 - is-core-module: 2.8.0 + is-core-module: 2.11.0 is-glob: 4.0.3 - minimatch: 3.0.4 - object.values: 1.1.5 - resolve: 1.20.0 - tsconfig-paths: 3.11.0 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true /eslint-scope/5.1.1: @@ -928,21 +1078,21 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/6.0.0: - resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.2.0: + /eslint-utils/3.0.0_eslint@8.29.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.2.0 + eslint: 8.29.0 eslint-visitor-keys: 2.1.0 dev: true @@ -951,69 +1101,70 @@ packages: engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.1.0: - resolution: {integrity: sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==} + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.2.0: - resolution: {integrity: sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==} + /eslint/8.29.0: + resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.0.4 - '@humanwhocodes/config-array': 0.6.0 + '@eslint/eslintrc': 1.3.3 + '@humanwhocodes/config-array': 0.11.7 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.2 + debug: 4.3.4 doctrine: 3.0.0 - enquirer: 2.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 6.0.0 - eslint-utils: 3.0.0_eslint@8.2.0 - eslint-visitor-keys: 3.1.0 - espree: 9.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.29.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 + find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.12.0 - ignore: 4.0.6 + globals: 13.18.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.1 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.2.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.0.4 + minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - progress: 2.0.3 regexpp: 3.2.0 - semver: 7.3.5 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color dev: true - /espree/9.0.0: - resolution: {integrity: sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==} + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.5.0 - acorn-jsx: 5.3.2_acorn@8.5.0 - eslint-visitor-keys: 3.1.0 + acorn: 8.8.1 + acorn-jsx: 5.3.2_acorn@8.8.1 + eslint-visitor-keys: 3.3.0 dev: true /esprima/3.1.3: - resolution: {integrity: sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=} + resolution: {integrity: sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==} engines: {node: '>=4'} hasBin: true dev: true @@ -1057,29 +1208,27 @@ packages: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true - /falafel/2.2.4: - resolution: {integrity: sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==} + /falafel/2.2.5: + resolution: {integrity: sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==} engines: {node: '>=0.4.0'} dependencies: acorn: 7.4.1 - foreach: 2.0.5 isarray: 2.0.5 - object-keys: 1.1.1 dev: true /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob/3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 dev: true /fast-json-stable-stringify/2.1.0: @@ -1087,11 +1236,11 @@ packages: dev: true /fast-levenshtein/2.0.6: - resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq/1.14.0: + resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} dependencies: reusify: 1.0.4 dev: true @@ -1116,11 +1265,11 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up/2.1.0: - resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} - engines: {node: '>=4'} + /find-replace/3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} dependencies: - locate-path: 2.0.0 + array-back: 3.1.0 dev: true /find-up/5.0.0: @@ -1135,7 +1284,7 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.4 + flatted: 3.2.7 rimraf: 3.0.2 dev: true @@ -1144,12 +1293,12 @@ packages: hasBin: true dev: true - /flatted/3.2.4: - resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /follow-redirects/1.14.5: - resolution: {integrity: sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==} + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -1158,17 +1307,13 @@ packages: optional: true dev: false - /foreach/2.0.5: - resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} - dev: true - /format/0.2.2: - resolution: {integrity: sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=} + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} dev: true /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents/2.3.2: @@ -1183,8 +1328,18 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /functional-red-black-tree/1.0.1: - resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true /get-caller-file/2.0.5: @@ -1193,15 +1348,15 @@ packages: dev: true /get-func-name/2.0.0: - resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.1.1: - resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /get-symbol-description/1.0.0: @@ -1209,7 +1364,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.3 dev: true /glob-parent/5.1.2: @@ -1226,54 +1381,69 @@ packages: is-glob: 4.0.3 dev: true - /glob/7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + /glob/7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true - /globals/13.12.0: - resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} + /globals/13.18.0: + resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globby/11.0.4: - resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.7 - ignore: 5.1.9 + fast-glob: 3.2.12 + ignore: 5.2.1 merge2: 1.4.1 slash: 3.0.0 dev: true + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + /growl/1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} dev: true - /has-bigints/1.0.1: - resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} dev: true /has-flag/4.0.0: @@ -1281,8 +1451,14 @@ packages: engines: {node: '>=8'} dev: true - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true @@ -1290,7 +1466,7 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /has/1.0.3: @@ -1305,13 +1481,13 @@ packages: hasBin: true dev: true - /htmlparser2/4.1.0: - resolution: {integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==} + /htmlparser2/7.2.0: + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} dependencies: - domelementtype: 2.2.0 - domhandler: 3.3.0 + domelementtype: 2.3.0 + domhandler: 4.3.1 domutils: 2.8.0 - entities: 2.2.0 + entities: 3.0.1 dev: true /iconv-lite/0.6.3: @@ -1321,13 +1497,8 @@ packages: safer-buffer: 2.1.2 dev: true - /ignore/4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - - /ignore/5.1.9: - resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} + /ignore/5.2.1: + resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} engines: {node: '>= 4'} dev: true @@ -1340,7 +1511,7 @@ packages: dev: true /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true @@ -1350,7 +1521,7 @@ packages: dev: false /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -1364,7 +1535,7 @@ packages: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -1383,7 +1554,7 @@ packages: /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: - has-bigints: 1.0.1 + has-bigints: 1.0.2 dev: true /is-binary-path/2.1.0: @@ -1401,17 +1572,18 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} dev: true - /is-callable/1.2.4: - resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-core-module/2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: true @@ -1428,15 +1600,10 @@ packages: dev: true /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/2.0.0: - resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} - engines: {node: '>=4'} - dev: true - /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -1453,13 +1620,13 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-negative-zero/2.0.1: - resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.6: - resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 @@ -1470,9 +1637,9 @@ packages: engines: {node: '>=0.12.0'} dev: true - /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} - engines: {node: '>=0.10.0'} + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} dev: true /is-plain-obj/2.1.0: @@ -1488,12 +1655,14 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 dev: true /is-stream/1.1.0: - resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true @@ -1508,29 +1677,26 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} dev: true /is-url/1.2.4: resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} dev: true - /is-weakref/1.0.1: - resolution: {integrity: sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==} + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-whitespace-character/1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - dev: true - - /is-word-character/1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - dev: true - /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true /isarray/2.0.5: @@ -1538,11 +1704,11 @@ packages: dev: true /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true /isomorphic-fetch/2.2.1: - resolution: {integrity: sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=} + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} dependencies: node-fetch: 1.7.3 whatwg-fetch: 3.6.2 @@ -1552,11 +1718,8 @@ packages: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} dev: true - /js-yaml/4.0.0: - resolution: {integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==} - hasBin: true - dependencies: - argparse: 2.0.1 + /js-sdsl/4.2.0: + resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} dev: true /js-yaml/4.1.0: @@ -1571,18 +1734,18 @@ packages: dev: true /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.7 dev: true /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -1597,14 +1760,6 @@ packages: type-check: 0.4.0 dev: true - /locate-path/2.0.0: - resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: true - /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1612,6 +1767,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -1620,11 +1779,22 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-symbols/4.0.0: - resolution: {integrity: sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==} + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /longest-streak/2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + dev: true + + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.0 dev: true /lru-cache/6.0.0: @@ -1640,12 +1810,105 @@ packages: vlq: 0.2.3 dev: true - /markdown-escapes/1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + /markdown-table/2.0.0: + resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} + dependencies: + repeat-string: 1.6.1 + dev: true + + /mdast-util-find-and-replace/1.1.1: + resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==} + dependencies: + escape-string-regexp: 4.0.0 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true + + /mdast-util-footnote/0.1.7: + resolution: {integrity: sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==} + dependencies: + mdast-util-to-markdown: 0.6.5 + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-from-markdown/0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-frontmatter/0.2.0: + resolution: {integrity: sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==} + dependencies: + micromark-extension-frontmatter: 0.2.2 + dev: true + + /mdast-util-gfm-autolink-literal/0.1.3: + resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==} + dependencies: + ccount: 1.1.0 + mdast-util-find-and-replace: 1.1.1 + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-strikethrough/0.2.3: + resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm-table/0.1.6: + resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==} + dependencies: + markdown-table: 2.0.0 + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm-task-list-item/0.1.6: + resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm/0.1.2: + resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==} + dependencies: + mdast-util-gfm-autolink-literal: 0.1.3 + mdast-util-gfm-strikethrough: 0.2.3 + mdast-util-gfm-table: 0.1.6 + mdast-util-gfm-task-list-item: 0.1.6 + mdast-util-to-markdown: 0.6.5 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-markdown/0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + dependencies: + '@types/unist': 2.0.6 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + dev: true + + /mdast-util-to-string/2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true /merge-source-map/1.0.4: - resolution: {integrity: sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=} + resolution: {integrity: sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==} dependencies: source-map: 0.5.7 dev: true @@ -1655,22 +1918,101 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch/4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + /micromark-extension-footnote/0.3.2: + resolution: {integrity: sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-frontmatter/0.2.2: + resolution: {integrity: sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==} + dependencies: + fault: 1.0.4 + dev: true + + /micromark-extension-gfm-autolink-literal/0.5.7: + resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-strikethrough/0.6.5: + resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-table/0.4.3: + resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-tagfilter/0.3.0: + resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==} + dev: true + + /micromark-extension-gfm-task-list-item/0.3.3: + resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm/0.3.3: + resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==} + dependencies: + micromark: 2.11.4 + micromark-extension-gfm-autolink-literal: 0.5.7 + micromark-extension-gfm-strikethrough: 0.6.5 + micromark-extension-gfm-table: 0.4.3 + micromark-extension-gfm-tagfilter: 0.3.0 + micromark-extension-gfm-task-list-item: 0.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark/2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 - picomatch: 2.3.0 + picomatch: 2.3.1 dev: true - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minimatch/4.2.1: + resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true /mkdirp/1.0.4: @@ -1679,40 +2021,39 @@ packages: hasBin: true dev: true - /mocha/8.4.0: - resolution: {integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==} - engines: {node: '>= 10.12.0'} + /mocha/9.2.2: + resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} + engines: {node: '>= 12.0.0'} hasBin: true dependencies: '@ungap/promise-all-settled': 1.1.2 ansi-colors: 4.1.1 browser-stdout: 1.3.1 - chokidar: 3.5.1 - debug: 4.3.1_supports-color@8.1.1 + chokidar: 3.5.3 + debug: 4.3.3_supports-color@8.1.1 diff: 5.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 7.1.6 + glob: 7.2.0 growl: 1.10.5 he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 - minimatch: 3.0.4 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 4.2.1 ms: 2.1.3 - nanoid: 3.1.20 - serialize-javascript: 5.0.1 + nanoid: 3.3.1 + serialize-javascript: 6.0.0 strip-json-comments: 3.1.1 supports-color: 8.1.1 which: 2.0.2 - wide-align: 1.1.3 - workerpool: 6.1.0 + workerpool: 6.2.0 yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 dev: true /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true /ms/2.1.2: @@ -1723,14 +2064,18 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /nanoid/3.1.20: - resolution: {integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==} + /nanoid/3.3.1: + resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare/1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /node-cache/5.1.2: @@ -1752,8 +2097,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect/1.11.0: - resolution: {integrity: sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==} + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true /object-inspect/1.4.1: @@ -1765,36 +2110,36 @@ packages: engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.2: - resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.entries/1.1.5: - resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.20.5 dev: true - /object.values/1.1.5: - resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.20.5 dev: true /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true @@ -1823,13 +2168,6 @@ packages: word-wrap: 1.2.3 dev: true - /p-limit/1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: true - /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1837,13 +2175,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-locate/2.0.0: - resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: true - /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -1851,20 +2182,15 @@ packages: p-limit: 3.1.0 dev: true - /p-map/5.3.0: - resolution: {integrity: sha512-SRbIQFoLYNezHkqZslqeg963HYUtqOrfMCxjNrFOpJ19WTYuq26rQoOXeX8QQiMLUlLqdYV/7PuDsdYJ7hLE1w==} + /p-map/5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: - aggregate-error: 4.0.0 + aggregate-error: 4.0.1 dev: false - /p-try/1.0.0: - resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} - engines: {node: '>=4'} - dev: true - /pako/0.2.9: - resolution: {integrity: sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=} + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} dev: true /pako/1.0.11: @@ -1878,8 +2204,8 @@ packages: callsites: 3.1.0 dev: true - /parse-entities/1.2.2: - resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} + /parse-entities/2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: character-entities: 1.2.4 character-entities-legacy: 1.1.4 @@ -1893,18 +2219,13 @@ packages: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true - /path-exists/3.0.0: - resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} - engines: {node: '>=4'} - dev: true - /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true @@ -1926,25 +2247,18 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pkg-dir/2.0.0: - resolution: {integrity: sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - dev: true - /pluralize/7.0.0: resolution: {integrity: sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==} engines: {node: '>=4'} dev: true /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true @@ -1954,18 +2268,13 @@ packages: dev: true /process-nextick-args/1.0.7: - resolution: {integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=} + resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} dev: true /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /progress/2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -1975,8 +2284,8 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quicktype-core/6.0.70: - resolution: {integrity: sha512-BMoG1omvauNhgGFzz1AkFVIC0LPXPArE6cCGI5fTeHvXKQsVUCbHt+seee2TaqUkELX9Pk6yA0s8OW8vW3kllA==} + /quicktype-core/6.1.0: + resolution: {integrity: sha512-r5+sRrUBX5RSdNNG2zpYD706Lxsq/0Tvh7te52csKrKKcAGGcSd1mx4sWWjhnBc54I0ZkrLHk/urIWwCDihgMg==} dependencies: '@mark.probst/unicode-properties': 1.1.0 browser-or-node: 1.3.0 @@ -1987,17 +2296,17 @@ packages: pako: 1.0.11 pluralize: 7.0.0 readable-stream: 2.3.0 - urijs: 1.19.7 + urijs: 1.19.11 wordwrap: 1.0.0 yaml: 1.10.2 dev: true /quote-stream/1.0.2: - resolution: {integrity: sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=} + resolution: {integrity: sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==} hasBin: true dependencies: buffer-equal: 0.0.1 - minimist: 1.2.5 + minimist: 1.2.7 through2: 2.0.5 dev: true @@ -2031,11 +2340,25 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp/3.5.0: - resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: - picomatch: 2.3.0 + picomatch: 2.3.1 + dev: true + + /reduce-flatten/2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 dev: true /regexpp/3.2.0: @@ -2043,45 +2366,46 @@ packages: engines: {node: '>=8'} dev: true - /remark-frontmatter/1.3.3: - resolution: {integrity: sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==} + /remark-footnotes/3.0.0: + resolution: {integrity: sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==} dependencies: - fault: 1.0.4 - xtend: 4.0.2 + mdast-util-footnote: 0.1.7 + micromark-extension-footnote: 0.3.2 + transitivePeerDependencies: + - supports-color dev: true - /remark-parse/5.0.0: - resolution: {integrity: sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==} + /remark-frontmatter/3.0.0: + resolution: {integrity: sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==} dependencies: - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 1.1.4 - vfile-location: 2.0.6 - xtend: 4.0.2 + mdast-util-frontmatter: 0.2.0 + micromark-extension-frontmatter: 0.2.2 dev: true - /repeat-string/1.6.1: - resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} - engines: {node: '>=0.10'} + /remark-gfm/1.0.0: + resolution: {integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==} + dependencies: + mdast-util-gfm: 0.1.2 + micromark-extension-gfm: 0.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse/9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color dev: true - /replace-ext/1.0.0: - resolution: {integrity: sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=} - engines: {node: '>= 0.10'} + /repeat-string/1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} dev: true /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true @@ -2090,11 +2414,13 @@ packages: engines: {node: '>=4'} dev: true - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true dependencies: - is-core-module: 2.8.0 + is-core-module: 2.11.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify/1.0.4: @@ -2106,7 +2432,7 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 dev: true /run-parallel/1.2.0: @@ -2123,26 +2449,39 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-regex: 1.1.4 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /serialize-javascript/5.0.1: - resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} + /serialize-javascript/6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true /shallow-copy/0.0.1: - resolution: {integrity: sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=} + resolution: {integrity: sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==} dev: true /shebang-command/2.0.0: @@ -2161,8 +2500,8 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.1 - object-inspect: 1.11.0 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 dev: true /slash/3.0.0: @@ -2171,7 +2510,7 @@ packages: dev: true /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: true @@ -2182,10 +2521,6 @@ packages: dev: true optional: true - /state-toggle/1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - dev: true - /static-eval/2.1.0: resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} dependencies: @@ -2196,10 +2531,10 @@ packages: resolution: {integrity: sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==} dependencies: concat-stream: 1.6.2 - convert-source-map: 1.8.0 + convert-source-map: 1.9.0 duplexer2: 0.1.4 escodegen: 1.9.1 - falafel: 2.2.4 + falafel: 2.2.5 has: 1.0.3 magic-string: 0.22.5 merge-source-map: 1.0.4 @@ -2211,14 +2546,6 @@ packages: through2: 2.0.5 dev: true - /string-width/2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - dev: true - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2228,18 +2555,20 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.trimend/1.0.4: - resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 + es-abstract: 1.20.5 dev: true - /string.prototype.trimstart/1.0.4: - resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 + es-abstract: 1.20.5 dev: true /string_decoder/1.0.3: @@ -2254,13 +2583,6 @@ packages: safe-buffer: 5.1.2 dev: true - /strip-ansi/4.0.0: - resolution: {integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=} - engines: {node: '>=4'} - dependencies: - ansi-regex: 3.0.0 - dev: true - /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2269,7 +2591,7 @@ packages: dev: true /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true @@ -2278,10 +2600,11 @@ packages: engines: {node: '>=8'} dev: true - /structured-source/3.0.2: - resolution: {integrity: sha1-3YAkJeD1PcSm56yjdSkBoczaevU=} + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: - boundary: 1.0.1 + has-flag: 3.0.0 dev: true /supports-color/7.2.0: @@ -2298,8 +2621,23 @@ packages: has-flag: 4.0.0 dev: true + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /table-layout/1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + dev: true + /text-table/0.2.0: - resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true /through2/2.0.5: @@ -2320,16 +2658,8 @@ packages: is-number: 7.0.0 dev: true - /traverse/0.6.6: - resolution: {integrity: sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=} - dev: true - - /trim-trailing-lines/1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - dev: true - - /trim/0.0.1: - resolution: {integrity: sha1-WFhUf2spB1fulczMZm+1AITEYN0=} + /traverse/0.6.7: + resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true /trough/1.0.5: @@ -2343,12 +2673,12 @@ packages: code-block-writer: 10.1.1 dev: true - /tsconfig-paths/3.11.0: - resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==} + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 - minimist: 1.2.5 + minimist: 1.2.7 strip-bom: 3.0.0 dev: true @@ -2356,18 +2686,18 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.4.4: + /tsutils/3.21.0_typescript@4.9.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.4.4 + typescript: 4.9.4 dev: true /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -2391,81 +2721,76 @@ packages: dev: true /typedarray/0.0.6: - resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript/4.4.4: - resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==} + /typescript/4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /unbox-primitive/1.0.1: - resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} - dependencies: - function-bind: 1.1.1 - has-bigints: 1.0.1 - has-symbols: 1.0.2 - which-boxed-primitive: 1.0.2 + /typical/4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} dev: true - /underscore/1.12.1: - resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} + /typical/5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} dev: true - /unherit/1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - inherits: 2.0.4 - xtend: 4.0.2 + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /underscore/1.13.6: + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} dev: true /unicode-trie/0.3.1: - resolution: {integrity: sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=} + resolution: {integrity: sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==} dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 dev: true - /unified/6.2.0: - resolution: {integrity: sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==} + /unified/9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} dependencies: + '@types/unist': 2.0.6 bail: 1.0.5 extend: 3.0.2 - is-plain-obj: 1.1.0 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 trough: 1.0.5 - vfile: 2.3.0 - x-is-string: 0.1.0 - dev: true - - /unist-util-is/3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + vfile: 4.2.1 dev: true - /unist-util-remove-position/1.1.4: - resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} - dependencies: - unist-util-visit: 1.4.1 - dev: true - - /unist-util-stringify-position/1.1.2: - resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} + /unist-util-is/4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} dev: true - /unist-util-visit-parents/2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + /unist-util-stringify-position/2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: - unist-util-is: 3.0.0 + '@types/unist': 2.0.6 dev: true - /unist-util-visit/1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + /unist-util-visit-parents/3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} dependencies: - unist-util-visit-parents: 2.1.2 + '@types/unist': 2.0.6 + unist-util-is: 4.1.0 dev: true /update-section/0.3.3: - resolution: {integrity: sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg=} + resolution: {integrity: sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==} dev: true /uri-js/4.4.1: @@ -2474,35 +2799,28 @@ packages: punycode: 2.1.1 dev: true - /urijs/1.19.7: - resolution: {integrity: sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==} + /urijs/1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - dev: true - - /v8-compile-cache/2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - - /vfile-location/2.0.6: - resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vfile-message/1.1.1: - resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} + /vfile-message/2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} dependencies: - unist-util-stringify-position: 1.1.2 + '@types/unist': 2.0.6 + unist-util-stringify-position: 2.0.3 dev: true - /vfile/2.3.0: - resolution: {integrity: sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==} + /vfile/4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} dependencies: - is-buffer: 1.1.6 - replace-ext: 1.0.0 - unist-util-stringify-position: 1.1.2 - vfile-message: 1.1.1 + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 dev: true /vlq/0.2.3: @@ -2518,7 +2836,7 @@ packages: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 - is-number-object: 1.0.6 + is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 dev: true @@ -2531,23 +2849,25 @@ packages: isexe: 2.0.0 dev: true - /wide-align/1.1.3: - resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} - dependencies: - string-width: 2.1.1 - dev: true - /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true /wordwrap/1.0.0: - resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wordwrapjs/4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 dev: true - /workerpool/6.1.0: - resolution: {integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==} + /workerpool/6.2.0: + resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} dev: true /wrap-ansi/7.0.0: @@ -2560,11 +2880,7 @@ packages: dev: true /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - dev: true - - /x-is-string/0.1.0: - resolution: {integrity: sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true /xtend/4.0.2: @@ -2595,7 +2911,7 @@ packages: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} dependencies: - camelcase: 6.2.0 + camelcase: 6.3.0 decamelize: 4.0.0 flat: 5.0.2 is-plain-obj: 2.1.0 @@ -2618,3 +2934,7 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + + /zwitch/1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true diff --git a/src/index.ts b/src/index.ts index 515e159..146d9c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,1745 +18,1953 @@ export default class Pokedex { this.options = new PokeAPIOptions(options, new NodeCache()); } + getResource(endpoint: string, callback?: (result: any, error?: any) => any): Promise; + getResource(endpoint: string[], callback?: (result: any[], error?: any) => any): Promise; async getResource(endpoint: string | string[], callback?: (result: any | any[], error?: any) => any): Promise { try { + // Fail if the endpoint is not supplied if (!endpoint) { throw new Error('Param "endpoint" is required needs to be a string or array of strings'); } + // Fail if the input types aren't accepted + if (!Array.isArray(endpoint) && typeof endpoint !== 'string') { + throw new Error('Param "endpoint" needs to be a string or array of strings'); + } + + /// If the user has submitted a string, return the JSON promise if (typeof endpoint === 'string') { return getJSON(this.options, endpoint, callback); - } else if (typeof endpoint === 'object') { - const mapper = async (endpoints: string) => { - const queryRes = await getJSON(this.options, endpoints); - return queryRes; - }; + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (endpoints: string) => { + const queryRes = await getJSON(this.options, endpoints); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "endpoint" needs to be a string or array of strings'); + if (callback) { + callback(mappedResults); } + + return mappedResults; } catch (error) { handleError(error, callback); } } + resource(endpoint: string, callback?: (result: any, error?: any) => any): Promise; + resource(endpoint: string[], callback?: (result: any[], error?: any) => any): Promise; /** @deprecated - will be removed on the next version. Use {@link getResource} instead */ async resource(endpoint: string | string[], callback?: (result: any | any[], error?: any) => any): Promise { try { + // Fail if the endpoint is not supplied if (!endpoint) { throw new Error('Param "endpoint" is required needs to be a string or array of strings'); } + // Fail if the input types aren't accepted + if (!Array.isArray(endpoint) && typeof endpoint !== 'string') { + throw new Error('Param "endpoint" needs to be a string or array of strings'); + } + + /// If the user has submitted a string, return the JSON promise if (typeof endpoint === 'string') { return getJSON(this.options, endpoint, callback); - } else if (typeof endpoint === 'object') { - const mapper = async (endpoints: string) => { - const queryRes = await getJSON(this.options, endpoints); - return queryRes; - }; + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (endpoints: string) => { + const queryRes = await getJSON(this.options, endpoints); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(endpoint, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "endpoint" needs to be a string or array of strings'); + if (callback) { + callback(mappedResults); } + + return mappedResults; } catch (error) { handleError(error, callback); } } - async getBerryByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Berry | PokeAPITypes.Berry[], error?: any) => any): Promise { + getBerryByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Berry, error?: any) => any): Promise; + getBerryByName(nameOrId: Array, callback?: (result: PokeAPITypes.Berry[], error?: any) => any): Promise; + async getBerryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Berry, error?: any) => any) & ((result: PokeAPITypes.Berry[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrId}/`, callback); - } - - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrIds}/`); - return queryRes; - }; - - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - - if (callback) { - callback(mappedResults); - } - - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { - handleError(error, callback); - } - } - async getBerryFirmnessByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.BerryFirmness | PokeAPITypes.BerryFirmness[], error?: any) => any): Promise { - try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrId}/`, callback); - } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getBerryFlavorByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.BerryFlavor | PokeAPITypes.BerryFlavor[], error?: any) => any): Promise { + getBerryFirmnessByName(nameOrId: string | number, callback?: (result: PokeAPITypes.BerryFirmness, error?: any) => any): Promise; + getBerryFirmnessByName(nameOrId: Array, callback?: (result: PokeAPITypes.BerryFirmness[], error?: any) => any): Promise; + async getBerryFirmnessByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.BerryFirmness, error?: any) => any) & ((result: PokeAPITypes.BerryFirmness[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrId}/`, callback); - } - - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrIds}/`); - return queryRes; - }; - - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - - if (callback) { - callback(mappedResults); - } - - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { - handleError(error, callback); - } - } - async getContestTypeByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.ContestType | PokeAPITypes.ContestType[], error?: any) => any): Promise { - try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrId}/`, callback); - } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-firmness/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getContestEffectById(id: number | number[], callback?: (result: PokeAPITypes.ContestEffect | PokeAPITypes.ContestEffect[], error?: any) => any): Promise { + getBerryFlavorByName(nameOrId: string | number, callback?: (result: PokeAPITypes.BerryFlavor, error?: any) => any): Promise; + getBerryFlavorByName(nameOrId: Array, callback?: (result: PokeAPITypes.BerryFlavor[], error?: any) => any): Promise; + async getBerryFlavorByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.BerryFlavor, error?: any) => any) & ((result: PokeAPITypes.BerryFlavor[], error?: any) => any)): Promise { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${id}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids: number | number[]) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${ids}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}berry-flavor/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } else { - throw new Error('Param "id" is required (Must be a number or array of numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getSuperContestEffectById(id: number | number[], callback?: (result: PokeAPITypes.SuperContestEffect | PokeAPITypes.SuperContestEffect[], error?: any) => any): Promise { + getContestTypeByName(nameOrId: string | number, callback?: (result: PokeAPITypes.ContestType, error?: any) => any): Promise; + getContestTypeByName(nameOrId: Array, callback?: (result: PokeAPITypes.ContestType[], error?: any) => any): Promise; + async getContestTypeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.ContestType, error?: any) => any) & ((result: PokeAPITypes.ContestType[], error?: any) => any)): Promise { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${id}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids: number | number[]) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${ids}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-type/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } else { - throw new Error('Param "id" is required (Must be a number or array of numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEncounterMethodByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.EncounterMethod | PokeAPITypes.EncounterMethod[], error?: any) => any): Promise { + getContestEffectById(id: number, callback?: (result: PokeAPITypes.ContestEffect, error?: any) => any): Promise; + getContestEffectById(id: number[], callback?: (result: PokeAPITypes.ContestEffect[], error?: any) => any): Promise; + async getContestEffectById(id: number | number[], callback?: ((result: PokeAPITypes.ContestEffect, error?: any) => any) & ((result: PokeAPITypes.ContestEffect[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!id) { + throw new Error('Param "id" is required (Must be a number or array of numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${id}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids: number | number[]) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}contest-effect/${ids}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEncounterConditionByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.EncounterCondition | PokeAPITypes.EncounterCondition[], error?: any) => any): Promise { + getSuperContestEffectById(id: number, callback?: (result: PokeAPITypes.SuperContestEffect, error?: any) => any): Promise; + getSuperContestEffectById(id: number[], callback?: (result: PokeAPITypes.SuperContestEffect[], error?: any) => any): Promise; + async getSuperContestEffectById(id: number | number[], callback?: ((result: PokeAPITypes.SuperContestEffect, error?: any) => any) & ((result: PokeAPITypes.SuperContestEffect[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!id) { + throw new Error('Param "id" is required (Must be a number or array of numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${id}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids: number | number[]) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}super-contest-effect/${ids}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEncounterConditionValueByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.EncounterConditionValue | PokeAPITypes.EncounterConditionValue[], error?: any) => any): Promise { + getEncounterMethodByName(nameOrId: string | number, callback?: (result: PokeAPITypes.EncounterMethod, error?: any) => any): Promise; + getEncounterMethodByName(nameOrId: Array, callback?: (result: PokeAPITypes.EncounterMethod[], error?: any) => any): Promise; + async getEncounterMethodByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.EncounterMethod, error?: any) => any) & ((result: PokeAPITypes.EncounterMethod[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-method/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEvolutionChainById(id: number | number[], callback?: (result: PokeAPITypes.EvolutionChain | PokeAPITypes.EvolutionChain[], error?: any) => any): Promise { + getEncounterConditionByName(nameOrId: string | number, callback?: (result: PokeAPITypes.EncounterCondition, error?: any) => any): Promise; + getEncounterConditionByName(nameOrId: Array, callback?: (result: PokeAPITypes.EncounterCondition[], error?: any) => any): Promise; + async getEncounterConditionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.EncounterCondition, error?: any) => any) & ((result: PokeAPITypes.EncounterCondition[], error?: any) => any)): Promise { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${id}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids: number | number[]) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${ids}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } else { - throw new Error('Param "id" is required (Must be a number or array of numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEvolutionTriggerByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.EvolutionTrigger | PokeAPITypes.EvolutionTrigger[], error?: any) => any): Promise { + getEncounterConditionValueByName(nameOrId: string | number, callback?: (result: PokeAPITypes.EncounterConditionValue, error?: any) => any): Promise; + getEncounterConditionValueByName(nameOrId: Array, callback?: (result: PokeAPITypes.EncounterConditionValue[], error?: any) => any): Promise; + async getEncounterConditionValueByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.EncounterConditionValue, error?: any) => any) & ((result: PokeAPITypes.EncounterConditionValue[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}encounter-condition-value/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getGenerationByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Generation | PokeAPITypes.Generation[], error?: any) => any): Promise { + getEvolutionChainById(id: number, callback?: (result: PokeAPITypes.EvolutionChain, error?: any) => any): Promise; + getEvolutionChainById(id: number[], callback?: (result: PokeAPITypes.EvolutionChain[], error?: any) => any): Promise; + async getEvolutionChainById(id: number | number[], callback?: ((result: PokeAPITypes.EvolutionChain, error?: any) => any) & ((result: PokeAPITypes.EvolutionChain[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!id) { + throw new Error('Param "id" is required (Must be a number or array of numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${id}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids: number | number[]) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-chain/${ids}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokedexByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Pokedex | PokeAPITypes.Pokedex[], error?: any) => any): Promise { + getEvolutionTriggerByName(nameOrId: string | number, callback?: (result: PokeAPITypes.EvolutionTrigger, error?: any) => any): Promise; + getEvolutionTriggerByName(nameOrId: Array, callback?: (result: PokeAPITypes.EvolutionTrigger[], error?: any) => any): Promise; + async getEvolutionTriggerByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.EvolutionTrigger, error?: any) => any) & ((result: PokeAPITypes.EvolutionTrigger[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}evolution-trigger/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getVersionByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Version | PokeAPITypes.Version[], error?: any) => any): Promise { + getGenerationByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Generation, error?: any) => any): Promise; + getGenerationByName(nameOrId: Array, callback?: (result: PokeAPITypes.Generation[], error?: any) => any): Promise; + async getGenerationByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Generation, error?: any) => any) & ((result: PokeAPITypes.Generation[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}generation/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getVersionGroupByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.VersionGroup | PokeAPITypes.VersionGroup[], error?: any) => any): Promise { + getPokedexByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Pokedex, error?: any) => any): Promise; + getPokedexByName(nameOrId: Array, callback?: (result: PokeAPITypes.Pokedex[], error?: any) => any): Promise; + async getPokedexByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Pokedex, error?: any) => any) & ((result: PokeAPITypes.Pokedex[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokedex/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getItemByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Item | PokeAPITypes.Item[], error?: any) => any): Promise { + getVersionByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Version, error?: any) => any): Promise; + getVersionByName(nameOrId: Array, callback?: (result: PokeAPITypes.Version[], error?: any) => any): Promise; + async getVersionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Version, error?: any) => any) & ((result: PokeAPITypes.Version[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getItemAttributeByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.ItemAttribute | PokeAPITypes.ItemAttribute[], error?: any) => any): Promise { + getVersionGroupByName(nameOrId: string | number, callback?: (result: PokeAPITypes.VersionGroup, error?: any) => any): Promise; + getVersionGroupByName(nameOrId: Array, callback?: (result: PokeAPITypes.VersionGroup[], error?: any) => any): Promise; + async getVersionGroupByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.VersionGroup, error?: any) => any) & ((result: PokeAPITypes.VersionGroup[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}version-group/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getItemCategoryByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.ItemCategory | PokeAPITypes.ItemCategory[], error?: any) => any): Promise { + getItemByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Item, error?: any) => any): Promise; + getItemByName(nameOrId: Array, callback?: (result: PokeAPITypes.Item[], error?: any) => any): Promise; + async getItemByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Item, error?: any) => any) & ((result: PokeAPITypes.Item[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getItemFlingEffectByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.ItemFlingEffect | PokeAPITypes.ItemFlingEffect[], error?: any) => any): Promise { + getItemAttributeByName(nameOrId: string | number, callback?: (result: PokeAPITypes.ItemAttribute, error?: any) => any): Promise; + getItemAttributeByName(nameOrId: Array, callback?: (result: PokeAPITypes.ItemAttribute[], error?: any) => any): Promise; + async getItemAttributeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.ItemAttribute, error?: any) => any) & ((result: PokeAPITypes.ItemAttribute[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-attribute/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getItemPocketByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.ItemPocket | PokeAPITypes.ItemPocket[], error?: any) => any): Promise { + getItemCategoryByName(nameOrId: string | number, callback?: (result: PokeAPITypes.ItemCategory, error?: any) => any): Promise; + getItemCategoryByName(nameOrId: Array, callback?: (result: PokeAPITypes.ItemCategory[], error?: any) => any): Promise; + async getItemCategoryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.ItemCategory, error?: any) => any) & ((result: PokeAPITypes.ItemCategory[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-category/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMachineById(id: number | number[], callback?: (result: PokeAPITypes.Machine | PokeAPITypes.Machine[], error?: any) => any): Promise { + getItemFlingEffectByName(nameOrId: string | number, callback?: (result: PokeAPITypes.ItemFlingEffect, error?: any) => any): Promise; + getItemFlingEffectByName(nameOrId: Array, callback?: (result: PokeAPITypes.ItemFlingEffect[], error?: any) => any): Promise; + async getItemFlingEffectByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.ItemFlingEffect, error?: any) => any) & ((result: PokeAPITypes.ItemFlingEffect[], error?: any) => any)): Promise { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${id}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids: number | number[]) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${ids}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-fling-effect/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } else { - throw new Error('Param "id" is required (Must be a number or array of numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Move | PokeAPITypes.Move[], error?: any) => any): Promise { + getItemPocketByName(nameOrId: string | number, callback?: (result: PokeAPITypes.ItemPocket, error?: any) => any): Promise; + getItemPocketByName(nameOrId: Array, callback?: (result: PokeAPITypes.ItemPocket[], error?: any) => any): Promise; + async getItemPocketByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.ItemPocket, error?: any) => any) & ((result: PokeAPITypes.ItemPocket[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}item-pocket/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveAilmentByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveAilment | PokeAPITypes.MoveAilment[], error?: any) => any): Promise { + getMachineById(id: number, callback?: (result: PokeAPITypes.Machine, error?: any) => any): Promise; + getMachineById(id: number[], callback?: (result: PokeAPITypes.Machine[], error?: any) => any): Promise; + async getMachineById(id: number | number[], callback?: ((result: PokeAPITypes.Machine, error?: any) => any) & ((result: PokeAPITypes.Machine[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!id) { + throw new Error('Param "id" is required (Must be a number or array of numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${id}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids: number | number[]) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}machine/${ids}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveBattleStyleByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveBattleStyle | PokeAPITypes.MoveBattleStyle[], error?: any) => any): Promise { + getMoveByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Move, error?: any) => any): Promise; + getMoveByName(nameOrId: Array, callback?: (result: PokeAPITypes.Move[], error?: any) => any): Promise; + async getMoveByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Move, error?: any) => any) & ((result: PokeAPITypes.Move[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveCategoryByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveCategory | PokeAPITypes.MoveCategory[], error?: any) => any): Promise { + getMoveAilmentByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveAilment, error?: any) => any): Promise; + getMoveAilmentByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveAilment[], error?: any) => any): Promise; + async getMoveAilmentByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveAilment, error?: any) => any) & ((result: PokeAPITypes.MoveAilment[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-ailment/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveDamageClassByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveDamageClass | PokeAPITypes.MoveDamageClass[], error?: any) => any): Promise { + getMoveBattleStyleByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveBattleStyle, error?: any) => any): Promise; + getMoveBattleStyleByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveBattleStyle[], error?: any) => any): Promise; + async getMoveBattleStyleByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveBattleStyle, error?: any) => any) & ((result: PokeAPITypes.MoveBattleStyle[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-battle-style/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveLearnMethodByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveLearnMethod | PokeAPITypes.MoveLearnMethod[], error?: any) => any): Promise { + getMoveCategoryByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveCategory, error?: any) => any): Promise; + getMoveCategoryByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveCategory[], error?: any) => any): Promise; + async getMoveCategoryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveCategory, error?: any) => any) & ((result: PokeAPITypes.MoveCategory[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-category/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getMoveTargetByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.MoveTarget | PokeAPITypes.MoveTarget[], error?: any) => any): Promise { + getMoveDamageClassByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveDamageClass, error?: any) => any): Promise; + getMoveDamageClassByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveDamageClass[], error?: any) => any): Promise; + async getMoveDamageClassByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveDamageClass, error?: any) => any) & ((result: PokeAPITypes.MoveDamageClass[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-damage-class/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getLocationByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Location | PokeAPITypes.Location[], error?: any) => any): Promise { + getMoveLearnMethodByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveLearnMethod, error?: any) => any): Promise; + getMoveLearnMethodByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveLearnMethod[], error?: any) => any): Promise; + async getMoveLearnMethodByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveLearnMethod, error?: any) => any) & ((result: PokeAPITypes.MoveLearnMethod[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-learn-method/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getLocationAreaByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.LocationArea | PokeAPITypes.LocationArea[], error?: any) => any): Promise { + getMoveTargetByName(nameOrId: string | number, callback?: (result: PokeAPITypes.MoveTarget, error?: any) => any): Promise; + getMoveTargetByName(nameOrId: Array, callback?: (result: PokeAPITypes.MoveTarget[], error?: any) => any): Promise; + async getMoveTargetByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.MoveTarget, error?: any) => any) & ((result: PokeAPITypes.MoveTarget[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}move-target/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + + return mappedResults; + } catch (error) { + handleError(error, callback); + } + } + + getLocationByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Location, error?: any) => any): Promise; + getLocationByName(nameOrId: Array, callback?: (result: PokeAPITypes.Location[], error?: any) => any): Promise; + async getLocationByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Location, error?: any) => any) & ((result: PokeAPITypes.Location[], error?: any) => any)): Promise { + try { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrId}/`, callback); + } + + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location/${nameOrIds}/`); + return queryRes; + }; + + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPalParkAreaByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PalParkArea | PokeAPITypes.PalParkArea[], error?: any) => any): Promise { + getLocationAreaByName(nameOrId: string | number, callback?: (result: PokeAPITypes.LocationArea, error?: any) => any): Promise; + getLocationAreaByName(nameOrId: Array, callback?: (result: PokeAPITypes.LocationArea[], error?: any) => any): Promise; + async getLocationAreaByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.LocationArea, error?: any) => any) & ((result: PokeAPITypes.LocationArea[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}location-area/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + + return mappedResults; + } catch (error) { + handleError(error, callback); + } + } + + getPalParkAreaByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PalParkArea, error?: any) => any): Promise; + getPalParkAreaByName(nameOrId: Array, callback?: (result: PokeAPITypes.PalParkArea[], error?: any) => any): Promise; + async getPalParkAreaByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PalParkArea, error?: any) => any) & ((result: PokeAPITypes.PalParkArea[], error?: any) => any)): Promise { + try { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrId}/`, callback); + } + + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pal-park-area/${nameOrIds}/`); + return queryRes; + }; + + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getRegionByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Region | PokeAPITypes.Region[], error?: any) => any): Promise { + getRegionByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Region, error?: any) => any): Promise; + getRegionByName(nameOrId: Array, callback?: (result: PokeAPITypes.Region[], error?: any) => any): Promise; + async getRegionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Region, error?: any) => any) & ((result: PokeAPITypes.Region[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrId}/`, callback); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}region/${nameOrIds}/`); + return queryRes; + }; - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } - if (callback) { - callback(mappedResults); - } + return mappedResults; + } catch (error) { + handleError(error, callback); + } + } - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + getAbilityByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Ability, error?: any) => any): Promise; + getAbilityByName(nameOrId: Array, callback?: (result: PokeAPITypes.Ability[], error?: any) => any): Promise; + async getAbilityByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Ability, error?: any) => any) & ((result: PokeAPITypes.Ability[], error?: any) => any)): Promise { + try { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrId}/`, callback); + } + + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrIds}/`); + return queryRes; + }; + + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); + } + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getAbilityByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Ability | PokeAPITypes.Ability[], error?: any) => any): Promise { + getCharacteristicById(id: number, callback?: (result: PokeAPITypes.Characteristic, error?: any) => any): Promise; + getCharacteristicById(id: number[], callback?: (result: PokeAPITypes.Characteristic[], error?: any) => any): Promise; + async getCharacteristicById(id: number | number[], callback?: ((result: PokeAPITypes.Characteristic, error?: any) => any) & ((result: PokeAPITypes.Characteristic[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!id) { + throw new Error('Param "id" is required (Must be a number or array of numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}ability/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(id) && typeof id !== 'number' && typeof id !== 'string') { + throw new Error('Param "id" must be a number or array of numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof id === 'number' || typeof id === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${id}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (ids: number | number[]) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${ids}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getCharacteristicById(id: number | number[], callback?: (result: PokeAPITypes.Characteristic | PokeAPITypes.Characteristic[], error?: any) => any): Promise { + getEggGroupByName(nameOrId: string | number, callback?: (result: PokeAPITypes.EggGroup, error?: any) => any): Promise; + getEggGroupByName(nameOrId: Array, callback?: (result: PokeAPITypes.EggGroup[], error?: any) => any): Promise; + async getEggGroupByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.EggGroup, error?: any) => any) & ((result: PokeAPITypes.EggGroup[], error?: any) => any)): Promise { try { - if (id) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof id === 'number' || typeof id === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${id}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof id === 'object') { - const mapper = async (ids: number | number[]) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}characteristic/${ids}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(id, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "id" must be a number or array of numbers'); - } - } else { - throw new Error('Param "id" is required (Must be a number or array of numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getEggGroupByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.EggGroup | PokeAPITypes.EggGroup[], error?: any) => any): Promise { + getGenderByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Gender, error?: any) => any): Promise; + getGenderByName(nameOrId: Array, callback?: (result: PokeAPITypes.Gender[], error?: any) => any): Promise; + async getGenderByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Gender, error?: any) => any) & ((result: PokeAPITypes.Gender[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrId}/`, callback); - } - - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}egg-group/${nameOrIds}/`); - return queryRes; - }; - - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - - if (callback) { - callback(mappedResults); - } - - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { + // Fail if the param is not supplied + if (!nameOrId) { throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); } - } catch (error) { - handleError(error, callback); - } - } - async getGenderByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Gender | PokeAPITypes.Gender[], error?: any) => any): Promise { - try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrId}/`, callback); - } + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}gender/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getGrowthRateByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.GrowthRate | PokeAPITypes.GrowthRate[], error?: any) => any): Promise { + getGrowthRateByName(nameOrId: string | number, callback?: (result: PokeAPITypes.GrowthRate, error?: any) => any): Promise; + getGrowthRateByName(nameOrId: Array, callback?: (result: PokeAPITypes.GrowthRate[], error?: any) => any): Promise; + async getGrowthRateByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.GrowthRate, error?: any) => any) & ((result: PokeAPITypes.GrowthRate[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}growth-rate/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getNatureByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Nature | PokeAPITypes.Nature[], error?: any) => any): Promise { + getNatureByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Nature, error?: any) => any): Promise; + getNatureByName(nameOrId: Array, callback?: (result: PokeAPITypes.Nature[], error?: any) => any): Promise; + async getNatureByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Nature, error?: any) => any) & ((result: PokeAPITypes.Nature[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}nature/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokeathlonStatByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokeathlonStat | PokeAPITypes.PokeathlonStat[], error?: any) => any): Promise { + getPokeathlonStatByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokeathlonStat, error?: any) => any): Promise; + getPokeathlonStatByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokeathlonStat[], error?: any) => any): Promise; + async getPokeathlonStatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokeathlonStat, error?: any) => any) & ((result: PokeAPITypes.PokeathlonStat[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokeathlon-stat/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Pokemon | PokeAPITypes.Pokemon[], error?: any) => any): Promise { + getPokemonByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Pokemon, error?: any) => any): Promise; + getPokemonByName(nameOrId: Array, callback?: (result: PokeAPITypes.Pokemon[], error?: any) => any): Promise; + async getPokemonByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Pokemon, error?: any) => any) & ((result: PokeAPITypes.Pokemon[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonColorByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokemonColor | PokeAPITypes.PokemonColor[], error?: any) => any): Promise { + getPokemonColorByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokemonColor, error?: any) => any): Promise; + getPokemonColorByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokemonColor[], error?: any) => any): Promise; + async getPokemonColorByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokemonColor, error?: any) => any) & ((result: PokeAPITypes.PokemonColor[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-color/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonFormByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokemonForm | PokeAPITypes.PokemonForm[], error?: any) => any): Promise { + getPokemonFormByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokemonForm, error?: any) => any): Promise; + getPokemonFormByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokemonForm[], error?: any) => any): Promise; + async getPokemonFormByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokemonForm, error?: any) => any) & ((result: PokeAPITypes.PokemonForm[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-form/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonHabitatByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokemonHabitat | PokeAPITypes.PokemonHabitat[], error?: any) => any): Promise { + getPokemonHabitatByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokemonHabitat, error?: any) => any): Promise; + getPokemonHabitatByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokemonHabitat[], error?: any) => any): Promise; + async getPokemonHabitatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokemonHabitat, error?: any) => any) & ((result: PokeAPITypes.PokemonHabitat[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-habitat/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonShapeByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokemonShape | PokeAPITypes.PokemonShape[], error?: any) => any): Promise { + getPokemonShapeByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokemonShape, error?: any) => any): Promise; + getPokemonShapeByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokemonShape[], error?: any) => any): Promise; + async getPokemonShapeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokemonShape, error?: any) => any) & ((result: PokeAPITypes.PokemonShape[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-shape/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getPokemonSpeciesByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.PokemonSpecies | PokeAPITypes.PokemonSpecies[], error?: any) => any): Promise { + getPokemonSpeciesByName(nameOrId: string | number, callback?: (result: PokeAPITypes.PokemonSpecies, error?: any) => any): Promise; + getPokemonSpeciesByName(nameOrId: Array, callback?: (result: PokeAPITypes.PokemonSpecies[], error?: any) => any): Promise; + async getPokemonSpeciesByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.PokemonSpecies, error?: any) => any) & ((result: PokeAPITypes.PokemonSpecies[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}pokemon-species/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getStatByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Stat | PokeAPITypes.Stat[], error?: any) => any): Promise { + getStatByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Stat, error?: any) => any): Promise; + getStatByName(nameOrId: Array, callback?: (result: PokeAPITypes.Stat[], error?: any) => any): Promise; + async getStatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Stat, error?: any) => any) & ((result: PokeAPITypes.Stat[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrId}/`, callback); + } - if (callback) { - callback(mappedResults); - } + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}stat/${nameOrIds}/`); + return queryRes; + }; - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getTypeByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Type | PokeAPITypes.Type[], error?: any) => any): Promise { + getTypeByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Type, error?: any) => any): Promise; + getTypeByName(nameOrId: Array, callback?: (result: PokeAPITypes.Type[], error?: any) => any): Promise; + async getTypeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Type, error?: any) => any) & ((result: PokeAPITypes.Type[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } + + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrIds}/`); - return queryRes; - }; + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}type/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } - async getLanguageByName(nameOrId: string | number | Array, callback?: (result: PokeAPITypes.Language | PokeAPITypes.Language[], error?: any) => any): Promise { + getLanguageByName(nameOrId: string | number, callback?: (result: PokeAPITypes.Language, error?: any) => any): Promise; + getLanguageByName(nameOrId: Array, callback?: (result: PokeAPITypes.Language[], error?: any) => any): Promise; + async getLanguageByName(nameOrId: string | number | Array, callback?: ((result: PokeAPITypes.Language, error?: any) => any) & ((result: PokeAPITypes.Language[], error?: any) => any)): Promise { try { - if (nameOrId) { - // If the user has submitted a Name or an ID, return the JSON promise - if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { - return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrId}/`, callback); - } + // Fail if the param is not supplied + if (!nameOrId) { + throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + } - // If the user has submitted an Array return a new promise which will - // resolve when all getJSON calls are ended - else if (typeof nameOrId === 'object') { - const mapper = async (nameOrIds: string | number | Array) => { - const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrIds}/`); - return queryRes; - }; + // Fail if the input types aren't accepted + if (!Array.isArray(nameOrId) && typeof nameOrId !== 'number' && typeof nameOrId !== 'string') { + throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); + } + + // If the user has submitted a Name or an ID, return the JSON promise + if (typeof nameOrId === 'number' || typeof nameOrId === 'string') { + return getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrId}/`, callback); + } - // Fetch data asynchronously to be faster - const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); + // If the user has submitted an Array return a new promise which will resolve when all getJSON calls are ended + const mapper = async (nameOrIds: string | number | Array) => { + const queryRes = await getJSON(this.options, `${this.options.protocol}${this.options.hostName}${this.options.versionPath}language/${nameOrIds}/`); + return queryRes; + }; - if (callback) { - callback(mappedResults); - } + // Fetch data asynchronously to be faster + const mappedResults = await pMap(nameOrId, mapper, { concurrency: 4 }); - return mappedResults; - } else { - throw new Error('Param "nameOrId" must be a string, array of strings or array of string and/or numbers'); - } - } else { - throw new Error('Param "nameOrId" is required (Must be a string, array of strings or array of string and/or numbers )'); + // Invoke the callback if we have one + if (callback) { + callback(mappedResults); } - } catch (error) { + + return mappedResults; + } catch (error) { handleError(error, callback); - } + } } async getBerriesList(interval?: ListEndpointOptions, callback?: (result: PokeAPITypes.NamedAPIResourceList, error?: any) => any): Promise { diff --git a/src/utils/Getter.ts b/src/utils/Getter.ts index a6a2a77..6fc09eb 100644 --- a/src/utils/Getter.ts +++ b/src/utils/Getter.ts @@ -4,7 +4,6 @@ import axios, { AxiosResponse } from 'axios'; import handleError from './ErrorHandler.js'; import PokeAPIOptions from '../interfaces/PokeAPIOptions.js'; -// eslint-disable-next-line consistent-return async function getJSON( values: PokeAPIOptions, url: string, @@ -15,44 +14,55 @@ async function getJSON( baseURL: `${values.protocol}${values.hostName}/`, timeout: values.timeout, }; + try { // Retrieve possible content from memory-cache const cachedResult = values.cache.get(url); - if (cachedResult) { - if (callback) { - // Call callback without errors - callback(cachedResult); - } + // If we have in cache + if (callback && cachedResult) { + // Call callback without errors + callback(cachedResult); + } + // Return the cache + if (cachedResult) { return cachedResult; } + // If we don't have in cache + // get the data from the API const response: AxiosResponse = await axios.get(url, options); - // if there is an error + + // If there is an error on the request if (response.status !== 200) { - handleError(response, callback); - } else { - // If everything was good - // cache the object in memory-cache - // only if cacheLimit > 0 - const responseData = response.data; - - if (values.cacheLimit > 0) { - values.cache.set(url, responseData, values.cacheLimit); - } - - // If a callback is present - if (callback) { - // Call it, without errors - callback(responseData); - } else { - return responseData; - } + throw response; + } + + // If everything was good + // set the data + const responseData = response.data; + + // Cache the object in memory-cache + // only if cacheLimit > 0 + if (values.cacheLimit > 0) { + values.cache.set(url, responseData, values.cacheLimit); + } + + // If a callback is present + if (callback) { + // Call it, without errors + callback(responseData); } + + return responseData; } catch (error) { handleError(error, callback); } + + // If we return nothing and the error handler fails + // reject the promise + return Promise.reject(); } export default getJSON; diff --git a/test/Async.spec.ts b/test/Async.spec.ts index 40a0b2f..f1285df 100644 --- a/test/Async.spec.ts +++ b/test/Async.spec.ts @@ -1,5 +1,4 @@ import assert from 'assert'; -import { Berry } from 'pokedex-promise-v2'; import Pokedex from '../src/index.js'; @@ -11,7 +10,7 @@ const P = new Pokedex({ (async () => { try { - const berry = await P.getBerryByName(1) as Berry; + const berry = await P.getBerryByName(1); assert.equal(berry.name, 'cheri'); } catch (error) { console.log(error); diff --git a/test/ClearCache.spec.ts b/test/ClearCache.spec.ts index b41e2be..7173e89 100644 --- a/test/ClearCache.spec.ts +++ b/test/ClearCache.spec.ts @@ -1,5 +1,4 @@ import assert from 'assert'; -import { Pokemon } from 'pokedex-promise-v2'; import Pokedex from '../src/index.js'; @@ -7,7 +6,7 @@ const P = new Pokedex(); (async () => { try { - let { name } = await P.getPokemonByName('eevee') as Pokemon; + let { name } = await P.getPokemonByName('eevee'); assert.strictEqual(name, 'eevee'); assert.strictEqual(P.cacheSize(), 1); @@ -16,7 +15,7 @@ const P = new Pokedex(); assert.strictEqual(P.cacheSize(), 0); - name = (await P.getPokemonByName('eevee') as Pokemon).name; + name = (await P.getPokemonByName('eevee')).name; assert.strictEqual(name, 'eevee'); assert.strictEqual(P.cacheSize(), 1); diff --git a/types/index.d.ts b/types/index.d.ts index 037ddab..0f0697e 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -4,7 +4,7 @@ * Code by: HRKings * And: Christian Garza * Code inspired by: Mudkip -* Execute `npm run generate` to regenerate +* Execute `npm run generate:types` to regenerate */ declare module 'pokedex-promise-v2' { namespace PokeAPI { @@ -626,7 +626,7 @@ declare module 'pokedex-promise-v2' { interface ItemSprites { /** The default depiction of this item. */ - default: string; + default: null | string; } /** Item attributes define particular aspects of items, e.g. "usable in battle" or "consumable". */ @@ -832,7 +832,7 @@ declare module 'pokedex-promise-v2' { /** The type of appeal this move gives a Pokémon when used in a contest. */ contest_type: null | NamedAPIResource; /** The type of damage the move inflicts on the target, e.g. physical. */ - damage_class: null | NamedAPIResource; + damage_class: NamedAPIResource; /** The percent value of how likely it is this moves effect will happen. */ effect_chance: number | null; /** The list of previous effects this move has had across version groups of the games. */ @@ -1234,7 +1234,7 @@ declare module 'pokedex-promise-v2' { /** A list of abilities this Pokémon could potentially have. */ abilities: AbilityElement[]; /** The base experience gained for defeating this Pokémon. */ - base_experience: number; + base_experience: number | null; /** A list of forms this Pokémon can take on. */ forms: NamedAPIResource[]; /** A list of game indices relevent to Pokémon item by generation. */ @@ -1697,7 +1697,7 @@ declare module 'pokedex-promise-v2' { /** A Pokémon Species forms the basis for at least one Pokémon. Attributes of a Pokémon species are shared across all varieties of Pokémon within the species. A good example is Wormadam; Wormadam is the species which can be found in three different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant. */ interface PokemonSpecies { /** The happiness when caught by a normal Pokéball; up to 255. The higher the number, the happier the Pokémon. */ - base_happiness: number; + base_happiness: number | null; /** The base capture rate; up to 255. The higher the number, the easier the catch. */ capture_rate: number; /** The color of this Pokémon for Pokédex search. */ @@ -1705,7 +1705,7 @@ declare module 'pokedex-promise-v2' { /** A list of egg groups this Pokémon species is a member of. */ egg_groups: NamedAPIResource[]; /** The evolution chain this Pokémon species is a member of. */ - evolution_chain: APIResource; + evolution_chain: null | APIResource; /** The Pokémon species that evolves into this Pokemon_species. */ evolves_from_species: null | NamedAPIResource; /** A list of flavor text entries for this Pokémon species. */ @@ -1727,7 +1727,7 @@ declare module 'pokedex-promise-v2' { /** Whether or not this Pokémon has visual gender differences. */ has_gender_differences: boolean; /** Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's. */ - hatch_counter: number; + hatch_counter: number | null; /** The identifier for this resource. */ id: number; /** Whether or not this is a baby Pokémon. */ @@ -1747,7 +1747,7 @@ declare module 'pokedex-promise-v2' { /** A list of Pokedexes and the indexes reserved within them for this Pokémon species. */ pokedex_numbers: PokedexNumber[]; /** The shape of this Pokémon for Pokédex search. */ - shape: NamedAPIResource; + shape: null | NamedAPIResource; /** A list of the Pokémon that exist within this Pokémon species. */ varieties: Variety[]; } @@ -1798,7 +1798,7 @@ declare module 'pokedex-promise-v2' { /** A list of locations that can be found in this region. */ locations: NamedAPIResource[]; /** The generation this region was introduced in. */ - main_generation: NamedAPIResource; + main_generation: null | NamedAPIResource; /** The name for this resource. */ name: string; /** The name of this resource listed in different languages. */ @@ -2013,59 +2013,161 @@ declare module 'pokedex-promise-v2' { cacheLimit?: number; } + + class PokeAPI { constructor(options?: PokeAPIOptions); + getResource(endpoint: string, callback?: (result: any, error?: any) => any): Promise; + getResource(endpoint: string[], callback?: (result: any[], error?: any) => any): Promise; getResource(endpoint: string | string[], callback?: (result: any | any[], error?: any) => any): Promise; /** @deprecated - will be removed on the next version. Use {@link getResource} instead */ + resource(endpoint: string, callback?: (result: any, error?: any) => any): Promise; + resource(endpoint: string[], callback?: (result: any[], error?: any) => any): Promise; resource(endpoint: string | string[], callback?: (result: any | any[], error?: any) => any): Promise; - getBerryByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Berry | PokeAPI.Berry[], error?: any) => any): Promise; - getBerryFirmnessByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.BerryFirmness | PokeAPI.BerryFirmness[], error?: any) => any): Promise; - getBerryFlavorByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.BerryFlavor | PokeAPI.BerryFlavor[], error?: any) => any): Promise; - getContestTypeByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.ContestType | PokeAPI.ContestType[], error?: any) => any): Promise; - getContestEffectById(id: number | number[], callback?: (result: PokeAPI.ContestEffect | PokeAPI.ContestEffect[], error?: any) => any): Promise; - getSuperContestEffectById(id: number | number[], callback?: (result: PokeAPI.SuperContestEffect | PokeAPI.SuperContestEffect[], error?: any) => any): Promise; - getEncounterMethodByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.EncounterMethod | PokeAPI.EncounterMethod[], error?: any) => any): Promise; - getEncounterConditionByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.EncounterCondition | PokeAPI.EncounterCondition[], error?: any) => any): Promise; - getEncounterConditionValueByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.EncounterConditionValue | PokeAPI.EncounterConditionValue[], error?: any) => any): Promise; - getEvolutionChainById(id: number | number[], callback?: (result: PokeAPI.EvolutionChain | PokeAPI.EvolutionChain[], error?: any) => any): Promise; - getEvolutionTriggerByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.EvolutionTrigger | PokeAPI.EvolutionTrigger[], error?: any) => any): Promise; - getGenerationByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Generation | PokeAPI.Generation[], error?: any) => any): Promise; - getPokedexByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Pokedex | PokeAPI.Pokedex[], error?: any) => any): Promise; - getVersionByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Version | PokeAPI.Version[], error?: any) => any): Promise; - getVersionGroupByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.VersionGroup | PokeAPI.VersionGroup[], error?: any) => any): Promise; - getItemByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Item | PokeAPI.Item[], error?: any) => any): Promise; - getItemAttributeByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.ItemAttribute | PokeAPI.ItemAttribute[], error?: any) => any): Promise; - getItemCategoryByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.ItemCategory | PokeAPI.ItemCategory[], error?: any) => any): Promise; - getItemFlingEffectByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.ItemFlingEffect | PokeAPI.ItemFlingEffect[], error?: any) => any): Promise; - getItemPocketByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.ItemPocket | PokeAPI.ItemPocket[], error?: any) => any): Promise; - getMachineById(id: number | number[], callback?: (result: PokeAPI.Machine | PokeAPI.Machine[], error?: any) => any): Promise; - getMoveByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Move | PokeAPI.Move[], error?: any) => any): Promise; - getMoveAilmentByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveAilment | PokeAPI.MoveAilment[], error?: any) => any): Promise; - getMoveBattleStyleByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveBattleStyle | PokeAPI.MoveBattleStyle[], error?: any) => any): Promise; - getMoveCategoryByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveCategory | PokeAPI.MoveCategory[], error?: any) => any): Promise; - getMoveDamageClassByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveDamageClass | PokeAPI.MoveDamageClass[], error?: any) => any): Promise; - getMoveLearnMethodByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveLearnMethod | PokeAPI.MoveLearnMethod[], error?: any) => any): Promise; - getMoveTargetByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.MoveTarget | PokeAPI.MoveTarget[], error?: any) => any): Promise; - getLocationByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Location | PokeAPI.Location[], error?: any) => any): Promise; - getLocationAreaByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.LocationArea | PokeAPI.LocationArea[], error?: any) => any): Promise; - getPalParkAreaByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PalParkArea | PokeAPI.PalParkArea[], error?: any) => any): Promise; - getRegionByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Region | PokeAPI.Region[], error?: any) => any): Promise; - getAbilityByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Ability | PokeAPI.Ability[], error?: any) => any): Promise; - getCharacteristicById(id: number | number[], callback?: (result: PokeAPI.Characteristic | PokeAPI.Characteristic[], error?: any) => any): Promise; - getEggGroupByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.EggGroup | PokeAPI.EggGroup[], error?: any) => any): Promise; - getGenderByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Gender | PokeAPI.Gender[], error?: any) => any): Promise; - getGrowthRateByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.GrowthRate | PokeAPI.GrowthRate[], error?: any) => any): Promise; - getNatureByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Nature | PokeAPI.Nature[], error?: any) => any): Promise; - getPokeathlonStatByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokeathlonStat | PokeAPI.PokeathlonStat[], error?: any) => any): Promise; - getPokemonByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Pokemon | PokeAPI.Pokemon[], error?: any) => any): Promise; - getPokemonColorByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokemonColor | PokeAPI.PokemonColor[], error?: any) => any): Promise; - getPokemonFormByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokemonForm | PokeAPI.PokemonForm[], error?: any) => any): Promise; - getPokemonHabitatByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokemonHabitat | PokeAPI.PokemonHabitat[], error?: any) => any): Promise; - getPokemonShapeByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokemonShape | PokeAPI.PokemonShape[], error?: any) => any): Promise; - getPokemonSpeciesByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.PokemonSpecies | PokeAPI.PokemonSpecies[], error?: any) => any): Promise; - getStatByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Stat | PokeAPI.Stat[], error?: any) => any): Promise; - getTypeByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Type | PokeAPI.Type[], error?: any) => any): Promise; - getLanguageByName(nameOrId: string | number | Array, callback?: (result: PokeAPI.Language | PokeAPI.Language[], error?: any) => any): Promise; + getBerryByName(nameOrId: string | number, callback?: (result: PokeAPI.Berry, error?: any) => any): Promise; + getBerryByName(nameOrId: Array, callback?: (result: PokeAPI.Berry[], error?: any) => any): Promise; + getBerryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Berry, error?: any) => any) & ((result: PokeAPI.Berry[], error?: any) => any)): Promise; + getBerryFirmnessByName(nameOrId: string | number, callback?: (result: PokeAPI.BerryFirmness, error?: any) => any): Promise; + getBerryFirmnessByName(nameOrId: Array, callback?: (result: PokeAPI.BerryFirmness[], error?: any) => any): Promise; + getBerryFirmnessByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.BerryFirmness, error?: any) => any) & ((result: PokeAPI.BerryFirmness[], error?: any) => any)): Promise; + getBerryFlavorByName(nameOrId: string | number, callback?: (result: PokeAPI.BerryFlavor, error?: any) => any): Promise; + getBerryFlavorByName(nameOrId: Array, callback?: (result: PokeAPI.BerryFlavor[], error?: any) => any): Promise; + getBerryFlavorByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.BerryFlavor, error?: any) => any) & ((result: PokeAPI.BerryFlavor[], error?: any) => any)): Promise; + getContestTypeByName(nameOrId: string | number, callback?: (result: PokeAPI.ContestType, error?: any) => any): Promise; + getContestTypeByName(nameOrId: Array, callback?: (result: PokeAPI.ContestType[], error?: any) => any): Promise; + getContestTypeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.ContestType, error?: any) => any) & ((result: PokeAPI.ContestType[], error?: any) => any)): Promise; + getContestEffectById(id: number, callback?: (result: PokeAPI.ContestEffect, error?: any) => any): Promise; + getContestEffectById(id: number[], callback?: (result: PokeAPI.ContestEffect[], error?: any) => any): Promise; + getContestEffectById(id: number | number[], callback?: ((result: PokeAPI.ContestEffect, error?: any) => any) & ((result: PokeAPI.ContestEffect[], error?: any) => any)): Promise; + getSuperContestEffectById(id: number, callback?: (result: PokeAPI.SuperContestEffect, error?: any) => any): Promise; + getSuperContestEffectById(id: number[], callback?: (result: PokeAPI.SuperContestEffect[], error?: any) => any): Promise; + getSuperContestEffectById(id: number | number[], callback?: ((result: PokeAPI.SuperContestEffect, error?: any) => any) & ((result: PokeAPI.SuperContestEffect[], error?: any) => any)): Promise; + getEncounterMethodByName(nameOrId: string | number, callback?: (result: PokeAPI.EncounterMethod, error?: any) => any): Promise; + getEncounterMethodByName(nameOrId: Array, callback?: (result: PokeAPI.EncounterMethod[], error?: any) => any): Promise; + getEncounterMethodByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.EncounterMethod, error?: any) => any) & ((result: PokeAPI.EncounterMethod[], error?: any) => any)): Promise; + getEncounterConditionByName(nameOrId: string | number, callback?: (result: PokeAPI.EncounterCondition, error?: any) => any): Promise; + getEncounterConditionByName(nameOrId: Array, callback?: (result: PokeAPI.EncounterCondition[], error?: any) => any): Promise; + getEncounterConditionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.EncounterCondition, error?: any) => any) & ((result: PokeAPI.EncounterCondition[], error?: any) => any)): Promise; + getEncounterConditionValueByName(nameOrId: string | number, callback?: (result: PokeAPI.EncounterConditionValue, error?: any) => any): Promise; + getEncounterConditionValueByName(nameOrId: Array, callback?: (result: PokeAPI.EncounterConditionValue[], error?: any) => any): Promise; + getEncounterConditionValueByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.EncounterConditionValue, error?: any) => any) & ((result: PokeAPI.EncounterConditionValue[], error?: any) => any)): Promise; + getEvolutionChainById(id: number, callback?: (result: PokeAPI.EvolutionChain, error?: any) => any): Promise; + getEvolutionChainById(id: number[], callback?: (result: PokeAPI.EvolutionChain[], error?: any) => any): Promise; + getEvolutionChainById(id: number | number[], callback?: ((result: PokeAPI.EvolutionChain, error?: any) => any) & ((result: PokeAPI.EvolutionChain[], error?: any) => any)): Promise; + getEvolutionTriggerByName(nameOrId: string | number, callback?: (result: PokeAPI.EvolutionTrigger, error?: any) => any): Promise; + getEvolutionTriggerByName(nameOrId: Array, callback?: (result: PokeAPI.EvolutionTrigger[], error?: any) => any): Promise; + getEvolutionTriggerByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.EvolutionTrigger, error?: any) => any) & ((result: PokeAPI.EvolutionTrigger[], error?: any) => any)): Promise; + getGenerationByName(nameOrId: string | number, callback?: (result: PokeAPI.Generation, error?: any) => any): Promise; + getGenerationByName(nameOrId: Array, callback?: (result: PokeAPI.Generation[], error?: any) => any): Promise; + getGenerationByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Generation, error?: any) => any) & ((result: PokeAPI.Generation[], error?: any) => any)): Promise; + getPokedexByName(nameOrId: string | number, callback?: (result: PokeAPI.Pokedex, error?: any) => any): Promise; + getPokedexByName(nameOrId: Array, callback?: (result: PokeAPI.Pokedex[], error?: any) => any): Promise; + getPokedexByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Pokedex, error?: any) => any) & ((result: PokeAPI.Pokedex[], error?: any) => any)): Promise; + getVersionByName(nameOrId: string | number, callback?: (result: PokeAPI.Version, error?: any) => any): Promise; + getVersionByName(nameOrId: Array, callback?: (result: PokeAPI.Version[], error?: any) => any): Promise; + getVersionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Version, error?: any) => any) & ((result: PokeAPI.Version[], error?: any) => any)): Promise; + getVersionGroupByName(nameOrId: string | number, callback?: (result: PokeAPI.VersionGroup, error?: any) => any): Promise; + getVersionGroupByName(nameOrId: Array, callback?: (result: PokeAPI.VersionGroup[], error?: any) => any): Promise; + getVersionGroupByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.VersionGroup, error?: any) => any) & ((result: PokeAPI.VersionGroup[], error?: any) => any)): Promise; + getItemByName(nameOrId: string | number, callback?: (result: PokeAPI.Item, error?: any) => any): Promise; + getItemByName(nameOrId: Array, callback?: (result: PokeAPI.Item[], error?: any) => any): Promise; + getItemByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Item, error?: any) => any) & ((result: PokeAPI.Item[], error?: any) => any)): Promise; + getItemAttributeByName(nameOrId: string | number, callback?: (result: PokeAPI.ItemAttribute, error?: any) => any): Promise; + getItemAttributeByName(nameOrId: Array, callback?: (result: PokeAPI.ItemAttribute[], error?: any) => any): Promise; + getItemAttributeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.ItemAttribute, error?: any) => any) & ((result: PokeAPI.ItemAttribute[], error?: any) => any)): Promise; + getItemCategoryByName(nameOrId: string | number, callback?: (result: PokeAPI.ItemCategory, error?: any) => any): Promise; + getItemCategoryByName(nameOrId: Array, callback?: (result: PokeAPI.ItemCategory[], error?: any) => any): Promise; + getItemCategoryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.ItemCategory, error?: any) => any) & ((result: PokeAPI.ItemCategory[], error?: any) => any)): Promise; + getItemFlingEffectByName(nameOrId: string | number, callback?: (result: PokeAPI.ItemFlingEffect, error?: any) => any): Promise; + getItemFlingEffectByName(nameOrId: Array, callback?: (result: PokeAPI.ItemFlingEffect[], error?: any) => any): Promise; + getItemFlingEffectByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.ItemFlingEffect, error?: any) => any) & ((result: PokeAPI.ItemFlingEffect[], error?: any) => any)): Promise; + getItemPocketByName(nameOrId: string | number, callback?: (result: PokeAPI.ItemPocket, error?: any) => any): Promise; + getItemPocketByName(nameOrId: Array, callback?: (result: PokeAPI.ItemPocket[], error?: any) => any): Promise; + getItemPocketByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.ItemPocket, error?: any) => any) & ((result: PokeAPI.ItemPocket[], error?: any) => any)): Promise; + getMachineById(id: number, callback?: (result: PokeAPI.Machine, error?: any) => any): Promise; + getMachineById(id: number[], callback?: (result: PokeAPI.Machine[], error?: any) => any): Promise; + getMachineById(id: number | number[], callback?: ((result: PokeAPI.Machine, error?: any) => any) & ((result: PokeAPI.Machine[], error?: any) => any)): Promise; + getMoveByName(nameOrId: string | number, callback?: (result: PokeAPI.Move, error?: any) => any): Promise; + getMoveByName(nameOrId: Array, callback?: (result: PokeAPI.Move[], error?: any) => any): Promise; + getMoveByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Move, error?: any) => any) & ((result: PokeAPI.Move[], error?: any) => any)): Promise; + getMoveAilmentByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveAilment, error?: any) => any): Promise; + getMoveAilmentByName(nameOrId: Array, callback?: (result: PokeAPI.MoveAilment[], error?: any) => any): Promise; + getMoveAilmentByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveAilment, error?: any) => any) & ((result: PokeAPI.MoveAilment[], error?: any) => any)): Promise; + getMoveBattleStyleByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveBattleStyle, error?: any) => any): Promise; + getMoveBattleStyleByName(nameOrId: Array, callback?: (result: PokeAPI.MoveBattleStyle[], error?: any) => any): Promise; + getMoveBattleStyleByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveBattleStyle, error?: any) => any) & ((result: PokeAPI.MoveBattleStyle[], error?: any) => any)): Promise; + getMoveCategoryByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveCategory, error?: any) => any): Promise; + getMoveCategoryByName(nameOrId: Array, callback?: (result: PokeAPI.MoveCategory[], error?: any) => any): Promise; + getMoveCategoryByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveCategory, error?: any) => any) & ((result: PokeAPI.MoveCategory[], error?: any) => any)): Promise; + getMoveDamageClassByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveDamageClass, error?: any) => any): Promise; + getMoveDamageClassByName(nameOrId: Array, callback?: (result: PokeAPI.MoveDamageClass[], error?: any) => any): Promise; + getMoveDamageClassByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveDamageClass, error?: any) => any) & ((result: PokeAPI.MoveDamageClass[], error?: any) => any)): Promise; + getMoveLearnMethodByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveLearnMethod, error?: any) => any): Promise; + getMoveLearnMethodByName(nameOrId: Array, callback?: (result: PokeAPI.MoveLearnMethod[], error?: any) => any): Promise; + getMoveLearnMethodByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveLearnMethod, error?: any) => any) & ((result: PokeAPI.MoveLearnMethod[], error?: any) => any)): Promise; + getMoveTargetByName(nameOrId: string | number, callback?: (result: PokeAPI.MoveTarget, error?: any) => any): Promise; + getMoveTargetByName(nameOrId: Array, callback?: (result: PokeAPI.MoveTarget[], error?: any) => any): Promise; + getMoveTargetByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.MoveTarget, error?: any) => any) & ((result: PokeAPI.MoveTarget[], error?: any) => any)): Promise; + getLocationByName(nameOrId: string | number, callback?: (result: PokeAPI.Location, error?: any) => any): Promise; + getLocationByName(nameOrId: Array, callback?: (result: PokeAPI.Location[], error?: any) => any): Promise; + getLocationByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Location, error?: any) => any) & ((result: PokeAPI.Location[], error?: any) => any)): Promise; + getLocationAreaByName(nameOrId: string | number, callback?: (result: PokeAPI.LocationArea, error?: any) => any): Promise; + getLocationAreaByName(nameOrId: Array, callback?: (result: PokeAPI.LocationArea[], error?: any) => any): Promise; + getLocationAreaByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.LocationArea, error?: any) => any) & ((result: PokeAPI.LocationArea[], error?: any) => any)): Promise; + getPalParkAreaByName(nameOrId: string | number, callback?: (result: PokeAPI.PalParkArea, error?: any) => any): Promise; + getPalParkAreaByName(nameOrId: Array, callback?: (result: PokeAPI.PalParkArea[], error?: any) => any): Promise; + getPalParkAreaByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PalParkArea, error?: any) => any) & ((result: PokeAPI.PalParkArea[], error?: any) => any)): Promise; + getRegionByName(nameOrId: string | number, callback?: (result: PokeAPI.Region, error?: any) => any): Promise; + getRegionByName(nameOrId: Array, callback?: (result: PokeAPI.Region[], error?: any) => any): Promise; + getRegionByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Region, error?: any) => any) & ((result: PokeAPI.Region[], error?: any) => any)): Promise; + getAbilityByName(nameOrId: string | number, callback?: (result: PokeAPI.Ability, error?: any) => any): Promise; + getAbilityByName(nameOrId: Array, callback?: (result: PokeAPI.Ability[], error?: any) => any): Promise; + getAbilityByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Ability, error?: any) => any) & ((result: PokeAPI.Ability[], error?: any) => any)): Promise; + getCharacteristicById(id: number, callback?: (result: PokeAPI.Characteristic, error?: any) => any): Promise; + getCharacteristicById(id: number[], callback?: (result: PokeAPI.Characteristic[], error?: any) => any): Promise; + getCharacteristicById(id: number | number[], callback?: ((result: PokeAPI.Characteristic, error?: any) => any) & ((result: PokeAPI.Characteristic[], error?: any) => any)): Promise; + getEggGroupByName(nameOrId: string | number, callback?: (result: PokeAPI.EggGroup, error?: any) => any): Promise; + getEggGroupByName(nameOrId: Array, callback?: (result: PokeAPI.EggGroup[], error?: any) => any): Promise; + getEggGroupByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.EggGroup, error?: any) => any) & ((result: PokeAPI.EggGroup[], error?: any) => any)): Promise; + getGenderByName(nameOrId: string | number, callback?: (result: PokeAPI.Gender, error?: any) => any): Promise; + getGenderByName(nameOrId: Array, callback?: (result: PokeAPI.Gender[], error?: any) => any): Promise; + getGenderByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Gender, error?: any) => any) & ((result: PokeAPI.Gender[], error?: any) => any)): Promise; + getGrowthRateByName(nameOrId: string | number, callback?: (result: PokeAPI.GrowthRate, error?: any) => any): Promise; + getGrowthRateByName(nameOrId: Array, callback?: (result: PokeAPI.GrowthRate[], error?: any) => any): Promise; + getGrowthRateByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.GrowthRate, error?: any) => any) & ((result: PokeAPI.GrowthRate[], error?: any) => any)): Promise; + getNatureByName(nameOrId: string | number, callback?: (result: PokeAPI.Nature, error?: any) => any): Promise; + getNatureByName(nameOrId: Array, callback?: (result: PokeAPI.Nature[], error?: any) => any): Promise; + getNatureByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Nature, error?: any) => any) & ((result: PokeAPI.Nature[], error?: any) => any)): Promise; + getPokeathlonStatByName(nameOrId: string | number, callback?: (result: PokeAPI.PokeathlonStat, error?: any) => any): Promise; + getPokeathlonStatByName(nameOrId: Array, callback?: (result: PokeAPI.PokeathlonStat[], error?: any) => any): Promise; + getPokeathlonStatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokeathlonStat, error?: any) => any) & ((result: PokeAPI.PokeathlonStat[], error?: any) => any)): Promise; + getPokemonByName(nameOrId: string | number, callback?: (result: PokeAPI.Pokemon, error?: any) => any): Promise; + getPokemonByName(nameOrId: Array, callback?: (result: PokeAPI.Pokemon[], error?: any) => any): Promise; + getPokemonByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Pokemon, error?: any) => any) & ((result: PokeAPI.Pokemon[], error?: any) => any)): Promise; + getPokemonColorByName(nameOrId: string | number, callback?: (result: PokeAPI.PokemonColor, error?: any) => any): Promise; + getPokemonColorByName(nameOrId: Array, callback?: (result: PokeAPI.PokemonColor[], error?: any) => any): Promise; + getPokemonColorByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokemonColor, error?: any) => any) & ((result: PokeAPI.PokemonColor[], error?: any) => any)): Promise; + getPokemonFormByName(nameOrId: string | number, callback?: (result: PokeAPI.PokemonForm, error?: any) => any): Promise; + getPokemonFormByName(nameOrId: Array, callback?: (result: PokeAPI.PokemonForm[], error?: any) => any): Promise; + getPokemonFormByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokemonForm, error?: any) => any) & ((result: PokeAPI.PokemonForm[], error?: any) => any)): Promise; + getPokemonHabitatByName(nameOrId: string | number, callback?: (result: PokeAPI.PokemonHabitat, error?: any) => any): Promise; + getPokemonHabitatByName(nameOrId: Array, callback?: (result: PokeAPI.PokemonHabitat[], error?: any) => any): Promise; + getPokemonHabitatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokemonHabitat, error?: any) => any) & ((result: PokeAPI.PokemonHabitat[], error?: any) => any)): Promise; + getPokemonShapeByName(nameOrId: string | number, callback?: (result: PokeAPI.PokemonShape, error?: any) => any): Promise; + getPokemonShapeByName(nameOrId: Array, callback?: (result: PokeAPI.PokemonShape[], error?: any) => any): Promise; + getPokemonShapeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokemonShape, error?: any) => any) & ((result: PokeAPI.PokemonShape[], error?: any) => any)): Promise; + getPokemonSpeciesByName(nameOrId: string | number, callback?: (result: PokeAPI.PokemonSpecies, error?: any) => any): Promise; + getPokemonSpeciesByName(nameOrId: Array, callback?: (result: PokeAPI.PokemonSpecies[], error?: any) => any): Promise; + getPokemonSpeciesByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.PokemonSpecies, error?: any) => any) & ((result: PokeAPI.PokemonSpecies[], error?: any) => any)): Promise; + getStatByName(nameOrId: string | number, callback?: (result: PokeAPI.Stat, error?: any) => any): Promise; + getStatByName(nameOrId: Array, callback?: (result: PokeAPI.Stat[], error?: any) => any): Promise; + getStatByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Stat, error?: any) => any) & ((result: PokeAPI.Stat[], error?: any) => any)): Promise; + getTypeByName(nameOrId: string | number, callback?: (result: PokeAPI.Type, error?: any) => any): Promise; + getTypeByName(nameOrId: Array, callback?: (result: PokeAPI.Type[], error?: any) => any): Promise; + getTypeByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Type, error?: any) => any) & ((result: PokeAPI.Type[], error?: any) => any)): Promise; + getLanguageByName(nameOrId: string | number, callback?: (result: PokeAPI.Language, error?: any) => any): Promise; + getLanguageByName(nameOrId: Array, callback?: (result: PokeAPI.Language[], error?: any) => any): Promise; + getLanguageByName(nameOrId: string | number | Array, callback?: ((result: PokeAPI.Language, error?: any) => any) & ((result: PokeAPI.Language[], error?: any) => any)): Promise; getBerriesList(interval?: ListEndpointOptions, callback?: (result: PokeAPI.NamedAPIResourceList, error?: any) => any): Promise; getBerriesFirmnessList(interval?: ListEndpointOptions, callback?: (result: PokeAPI.NamedAPIResourceList, error?: any) => any): Promise; /** @deprecated will be removed on a future version. Use {@link getBerriesFirmnessList} instead */ @@ -2118,7 +2220,7 @@ declare module 'pokedex-promise-v2' { getStatsList(interval?: ListEndpointOptions, callback?: (result: PokeAPI.NamedAPIResourceList, error?: any) => any): Promise; getTypesList(interval?: ListEndpointOptions, callback?: (result: PokeAPI.NamedAPIResourceList, error?: any) => any): Promise; getLanguagesList(interval?: ListEndpointOptions, callback?: (result: PokeAPI.NamedAPIResourceList, error?: any) => any): Promise; - getEndpointsList(interval?: ListEndpointOptions, callback?: (result: any, error?: any) => any): Promise; + getEndpointsList(interval?: ListEndpointOptions, callback?: (result: any, error?: any) => any): Promise; } export = PokeAPI;