From 4371448ffa9a3eec8e6a63e51e49cec535d0c3c9 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Fri, 18 Nov 2022 18:38:31 +0100 Subject: [PATCH 01/16] Rewrite to TS and use Kontent.ai SDKs --- .github/workflows/deploy.yml | 3 +- .gitignore | 1 + actions/changeContentItemWorkflow.js | 247 - actions/createContentItem.js | 76 - actions/deleteLanguageVariant.js | 47 - actions/updateLanguageVariant.js | 105 - authentication.js | 93 - fields/codeNameField.js | 6 - fields/constants.js | 4 - fields/elements/getContentTypeElements.js | 63 - fields/elements/getContentTypeFields.js | 43 - fields/elements/getElementFieldProps.js | 34 - fields/elements/getItemElementFields.js | 73 - fields/filters/assetSearchFields.js | 57 - fields/filters/getFieldType.js | 22 - fields/filters/getOperatorChoices.js | 48 - fields/filters/itemSearchFields.js | 85 - fields/filters/languageSearchFields.js | 58 - fields/getContentItemField.js | 17 - fields/getContentTypeField.js | 14 - fields/getContentTypeFieldForSamples.js | 14 - fields/getLanguageField.js | 13 - fields/getLinkedItemField.js | 14 - fields/getWorkflowStepField.js | 14 - fields/output/assetOutputFields.js | 79 - fields/output/contentItemOutputFields.js | 11 - .../output/getAdditionalItemOutputFields.js | 14 - .../getAdditionalTaxonomyOutputFields.js | 14 - fields/output/getElementOutputFields.js | 25 - .../output/standardizedSystemOutputFields.js | 64 - fields/samples/contentItemSample.js | 31 - .../samples/getSampleItemExistencePayload.js | 27 - fields/samples/getSampleItemPublishPayload.js | 25 - fields/samples/getSampleTaxonomyPayload.js | 31 - fields/samples/getSampleWorkflowPayload.js | 33 - fields/samples/getTriggerSampleOutput.js | 37 - fields/samples/taxonomyGroupSample.js | 22 - index.js | 87 +- package-lock.json | 26372 ++++++++++++++-- package.json | 32 +- searches/findAsset.js | 72 - searches/findContentItem.js | 46 - searches/findLanguage.js | 55 - searches/findWorkflowStep.js | 65 - src/actions/changeContentItemWorkflow.ts | 199 + src/actions/createContentItem.ts | 78 + src/actions/deleteLanguageVariant.ts | 57 + src/actions/updateLanguageVariant.ts | 102 + src/authentication.ts | 58 + src/fields/constants.ts | 2 + src/fields/elements/getContentTypeElements.ts | 27 + src/fields/elements/getElementFieldProps.ts | 34 + src/fields/elements/getItemElementFields.ts | 92 + src/fields/field.ts | 13 + src/fields/filters/assetSearchFields.ts | 48 + src/fields/filters/getFieldType.ts | 22 + src/fields/filters/getOperatorChoices.ts | 50 + src/fields/filters/itemSearchFields.ts | 90 + src/fields/filters/languageSearchFields.ts | 60 + src/fields/getContentItemField.ts | 13 + src/fields/getContentTypeField.ts | 10 + src/fields/getContentTypeFieldForSamples.ts | 10 + src/fields/getLanguageField.ts | 9 + src/fields/getLinkedItemField.ts | 10 + src/fields/getWorkflowStepField.ts | 10 + src/fields/output/contentItemOutputFields.ts | 18 + src/fields/output/deliveryItemOutputFields.ts | 79 + src/fields/output/getElementOutputFields.ts | 22 + src/fields/output/outputField.ts | 7 + src/fields/output/outputFromOutputFields.ts | 34 + .../output/standardizedSystemOutputFields.ts | 67 + src/fields/samples/contentItemSample.ts | 32 + .../samples/getSampleItemExistencePayload.ts | 32 + .../samples/getSampleItemPublishPayload.ts | 25 + .../samples/getSampleTaxonomyPayload.ts | 30 + .../samples/getSampleWorkflowPayload.ts | 36 + src/fields/samples/getTriggerSampleOutput.ts | 47 + src/fields/samples/taxonomyGroupSample.ts | 22 + src/index.ts | 80 + src/searches/findAsset.ts | 173 + src/searches/findContentItem.ts | 39 + src/searches/findLanguage.ts | 110 + src/searches/findWorkflowStep.ts | 91 + src/test/index.test.ts | 17 + src/triggers/dropdowns/getContentItems.ts | 43 + src/triggers/dropdowns/getContentTypes.ts | 64 + src/triggers/dropdowns/getLanguages.ts | 49 + src/triggers/dropdowns/getLinkedItems.ts | 43 + src/triggers/dropdowns/getWorkflowSteps.ts | 43 + src/triggers/triggerItemExistenceChanged.ts | 134 + src/triggers/triggerItemPublishChanged.ts | 138 + src/triggers/triggerTaxonomyChanged.ts | 156 + src/triggers/triggerWorkflowStatusChanged.ts | 135 + src/types/global.d.ts | 3 + src/types/kontentBundle.ts | 11 + src/utils/assets/getAsset.ts | 10 + src/utils/assets/getAssetByExternalId.ts | 10 + src/utils/elements/getElementsForUpsert.ts | 99 + src/utils/elements/isElementWithName.ts | 8 + src/utils/getSecret.ts | 10 + src/utils/hasValidSignature.ts | 14 + src/utils/items/create/createItem.ts | 30 + src/utils/items/delete/deleteVariant.ts | 16 + src/utils/items/get/findContentItem.ts | 72 + src/utils/items/get/findItemByIdentifier.ts | 41 + src/utils/items/get/getAllItemsDelivery.ts | 10 + src/utils/items/get/getContentItem.ts | 19 + src/utils/items/get/getFilterParams.ts | 17 + src/utils/items/get/getItem.ts | 29 + src/utils/items/get/getItemResult.ts | 146 + src/utils/items/get/getItemVariant.ts | 20 + src/utils/items/get/getVariant.ts | 11 + src/utils/items/update/upsertVariant.ts | 22 + src/utils/kontentServices/deliverClient.ts | 12 + src/utils/kontentServices/httpService.ts | 82 + src/utils/kontentServices/managementClient.ts | 11 + src/utils/languages/getLanguage.ts | 10 + src/utils/languages/getLanguageByCodename.ts | 10 + .../languages/getLanguageByExternalId.ts | 10 + src/utils/languages/getLanguages.ts | 9 + src/utils/types/getContentType.ts | 10 + src/utils/types/getContentTypes.ts | 10 + src/utils/unsubscribeHook.ts | 16 + .../webhooks/parseWebhookWorkflowTrigger.ts | 21 + src/utils/workflows/getWorkflowSteps.ts | 9 + src/utils/workflows/stepCheckers.ts | 17 + test/index.js | 17 - triggers/dropdowns/getContentItems.js | 54 - triggers/dropdowns/getContentTypes.js | 62 - triggers/dropdowns/getLanguages.js | 40 - triggers/dropdowns/getLinkedItems.js | 54 - triggers/dropdowns/getWorkflowSteps.js | 36 - triggers/makeHookItemOutput.js | 14 - triggers/makeHookTaxonomyOutput.js | 14 - triggers/triggerItemExistenceChanged.js | 143 - triggers/triggerItemPublishChanged.js | 139 - triggers/triggerTaxonomyChanged.js | 190 - triggers/triggerWorkflowStatusChanged.js | 138 - tsconfig.json | 12 + utils/assets/getAsset.js | 22 - utils/assets/getAssetByExternalId.js | 22 - utils/elements/getElementsForUpsert.js | 70 - utils/getSecret.js | 9 - utils/handleErrors.js | 14 - utils/hasValidSignature.js | 14 - utils/items/create/createItem.js | 30 - utils/items/delete/deleteVariant.js | 20 - utils/items/get/findContentItem.js | 90 - utils/items/get/findItemByIdentifier.js | 42 - utils/items/get/getAllItems.js | 24 - utils/items/get/getAllItemsDelivery.js | 19 - utils/items/get/getContentItem.js | 22 - utils/items/get/getContentItemRaw.js | 23 - utils/items/get/getFilterParams.js | 19 - utils/items/get/getItem.js | 26 - utils/items/get/getItemResult.js | 123 - utils/items/get/getItemVariant.js | 41 - utils/items/get/getVariant.js | 26 - utils/items/update/upsertVariant.js | 29 - utils/languages/getLanguage.js | 22 - utils/languages/getLanguageByCodename.js | 22 - utils/languages/getLanguageByExternalId.js | 22 - utils/languages/getLanguages.js | 22 - utils/taxonomy/get/getTaxonomyGroupRaw.js | 23 - utils/types/getContentType.js | 21 - utils/types/getContentTypes.js | 23 - utils/unsubscribeHook.js | 24 - utils/workflows/getWorkflowSteps.js | 21 - 168 files changed, 27051 insertions(+), 6625 deletions(-) delete mode 100644 actions/changeContentItemWorkflow.js delete mode 100644 actions/createContentItem.js delete mode 100644 actions/deleteLanguageVariant.js delete mode 100644 actions/updateLanguageVariant.js delete mode 100644 authentication.js delete mode 100644 fields/codeNameField.js delete mode 100644 fields/constants.js delete mode 100644 fields/elements/getContentTypeElements.js delete mode 100644 fields/elements/getContentTypeFields.js delete mode 100644 fields/elements/getElementFieldProps.js delete mode 100644 fields/elements/getItemElementFields.js delete mode 100644 fields/filters/assetSearchFields.js delete mode 100644 fields/filters/getFieldType.js delete mode 100644 fields/filters/getOperatorChoices.js delete mode 100644 fields/filters/itemSearchFields.js delete mode 100644 fields/filters/languageSearchFields.js delete mode 100644 fields/getContentItemField.js delete mode 100644 fields/getContentTypeField.js delete mode 100644 fields/getContentTypeFieldForSamples.js delete mode 100644 fields/getLanguageField.js delete mode 100644 fields/getLinkedItemField.js delete mode 100644 fields/getWorkflowStepField.js delete mode 100644 fields/output/assetOutputFields.js delete mode 100644 fields/output/contentItemOutputFields.js delete mode 100644 fields/output/getAdditionalItemOutputFields.js delete mode 100644 fields/output/getAdditionalTaxonomyOutputFields.js delete mode 100644 fields/output/getElementOutputFields.js delete mode 100644 fields/output/standardizedSystemOutputFields.js delete mode 100644 fields/samples/contentItemSample.js delete mode 100644 fields/samples/getSampleItemExistencePayload.js delete mode 100644 fields/samples/getSampleItemPublishPayload.js delete mode 100644 fields/samples/getSampleTaxonomyPayload.js delete mode 100644 fields/samples/getSampleWorkflowPayload.js delete mode 100644 fields/samples/getTriggerSampleOutput.js delete mode 100644 fields/samples/taxonomyGroupSample.js delete mode 100644 searches/findAsset.js delete mode 100644 searches/findContentItem.js delete mode 100644 searches/findLanguage.js delete mode 100644 searches/findWorkflowStep.js create mode 100644 src/actions/changeContentItemWorkflow.ts create mode 100644 src/actions/createContentItem.ts create mode 100644 src/actions/deleteLanguageVariant.ts create mode 100644 src/actions/updateLanguageVariant.ts create mode 100644 src/authentication.ts create mode 100644 src/fields/constants.ts create mode 100644 src/fields/elements/getContentTypeElements.ts create mode 100644 src/fields/elements/getElementFieldProps.ts create mode 100644 src/fields/elements/getItemElementFields.ts create mode 100644 src/fields/field.ts create mode 100644 src/fields/filters/assetSearchFields.ts create mode 100644 src/fields/filters/getFieldType.ts create mode 100644 src/fields/filters/getOperatorChoices.ts create mode 100644 src/fields/filters/itemSearchFields.ts create mode 100644 src/fields/filters/languageSearchFields.ts create mode 100644 src/fields/getContentItemField.ts create mode 100644 src/fields/getContentTypeField.ts create mode 100644 src/fields/getContentTypeFieldForSamples.ts create mode 100644 src/fields/getLanguageField.ts create mode 100644 src/fields/getLinkedItemField.ts create mode 100644 src/fields/getWorkflowStepField.ts create mode 100644 src/fields/output/contentItemOutputFields.ts create mode 100644 src/fields/output/deliveryItemOutputFields.ts create mode 100644 src/fields/output/getElementOutputFields.ts create mode 100644 src/fields/output/outputField.ts create mode 100644 src/fields/output/outputFromOutputFields.ts create mode 100644 src/fields/output/standardizedSystemOutputFields.ts create mode 100644 src/fields/samples/contentItemSample.ts create mode 100644 src/fields/samples/getSampleItemExistencePayload.ts create mode 100644 src/fields/samples/getSampleItemPublishPayload.ts create mode 100644 src/fields/samples/getSampleTaxonomyPayload.ts create mode 100644 src/fields/samples/getSampleWorkflowPayload.ts create mode 100644 src/fields/samples/getTriggerSampleOutput.ts create mode 100644 src/fields/samples/taxonomyGroupSample.ts create mode 100644 src/index.ts create mode 100644 src/searches/findAsset.ts create mode 100644 src/searches/findContentItem.ts create mode 100644 src/searches/findLanguage.ts create mode 100644 src/searches/findWorkflowStep.ts create mode 100644 src/test/index.test.ts create mode 100644 src/triggers/dropdowns/getContentItems.ts create mode 100644 src/triggers/dropdowns/getContentTypes.ts create mode 100644 src/triggers/dropdowns/getLanguages.ts create mode 100644 src/triggers/dropdowns/getLinkedItems.ts create mode 100644 src/triggers/dropdowns/getWorkflowSteps.ts create mode 100644 src/triggers/triggerItemExistenceChanged.ts create mode 100644 src/triggers/triggerItemPublishChanged.ts create mode 100644 src/triggers/triggerTaxonomyChanged.ts create mode 100644 src/triggers/triggerWorkflowStatusChanged.ts create mode 100644 src/types/global.d.ts create mode 100644 src/types/kontentBundle.ts create mode 100644 src/utils/assets/getAsset.ts create mode 100644 src/utils/assets/getAssetByExternalId.ts create mode 100644 src/utils/elements/getElementsForUpsert.ts create mode 100644 src/utils/elements/isElementWithName.ts create mode 100644 src/utils/getSecret.ts create mode 100644 src/utils/hasValidSignature.ts create mode 100644 src/utils/items/create/createItem.ts create mode 100644 src/utils/items/delete/deleteVariant.ts create mode 100644 src/utils/items/get/findContentItem.ts create mode 100644 src/utils/items/get/findItemByIdentifier.ts create mode 100644 src/utils/items/get/getAllItemsDelivery.ts create mode 100644 src/utils/items/get/getContentItem.ts create mode 100644 src/utils/items/get/getFilterParams.ts create mode 100644 src/utils/items/get/getItem.ts create mode 100644 src/utils/items/get/getItemResult.ts create mode 100644 src/utils/items/get/getItemVariant.ts create mode 100644 src/utils/items/get/getVariant.ts create mode 100644 src/utils/items/update/upsertVariant.ts create mode 100644 src/utils/kontentServices/deliverClient.ts create mode 100644 src/utils/kontentServices/httpService.ts create mode 100644 src/utils/kontentServices/managementClient.ts create mode 100644 src/utils/languages/getLanguage.ts create mode 100644 src/utils/languages/getLanguageByCodename.ts create mode 100644 src/utils/languages/getLanguageByExternalId.ts create mode 100644 src/utils/languages/getLanguages.ts create mode 100644 src/utils/types/getContentType.ts create mode 100644 src/utils/types/getContentTypes.ts create mode 100644 src/utils/unsubscribeHook.ts create mode 100644 src/utils/webhooks/parseWebhookWorkflowTrigger.ts create mode 100644 src/utils/workflows/getWorkflowSteps.ts create mode 100644 src/utils/workflows/stepCheckers.ts delete mode 100644 test/index.js delete mode 100644 triggers/dropdowns/getContentItems.js delete mode 100644 triggers/dropdowns/getContentTypes.js delete mode 100644 triggers/dropdowns/getLanguages.js delete mode 100644 triggers/dropdowns/getLinkedItems.js delete mode 100644 triggers/dropdowns/getWorkflowSteps.js delete mode 100644 triggers/makeHookItemOutput.js delete mode 100644 triggers/makeHookTaxonomyOutput.js delete mode 100644 triggers/triggerItemExistenceChanged.js delete mode 100644 triggers/triggerItemPublishChanged.js delete mode 100644 triggers/triggerTaxonomyChanged.js delete mode 100644 triggers/triggerWorkflowStatusChanged.js create mode 100644 tsconfig.json delete mode 100644 utils/assets/getAsset.js delete mode 100644 utils/assets/getAssetByExternalId.js delete mode 100644 utils/elements/getElementsForUpsert.js delete mode 100644 utils/getSecret.js delete mode 100644 utils/handleErrors.js delete mode 100644 utils/hasValidSignature.js delete mode 100644 utils/items/create/createItem.js delete mode 100644 utils/items/delete/deleteVariant.js delete mode 100644 utils/items/get/findContentItem.js delete mode 100644 utils/items/get/findItemByIdentifier.js delete mode 100644 utils/items/get/getAllItems.js delete mode 100644 utils/items/get/getAllItemsDelivery.js delete mode 100644 utils/items/get/getContentItem.js delete mode 100644 utils/items/get/getContentItemRaw.js delete mode 100644 utils/items/get/getFilterParams.js delete mode 100644 utils/items/get/getItem.js delete mode 100644 utils/items/get/getItemResult.js delete mode 100644 utils/items/get/getItemVariant.js delete mode 100644 utils/items/get/getVariant.js delete mode 100644 utils/items/update/upsertVariant.js delete mode 100644 utils/languages/getLanguage.js delete mode 100644 utils/languages/getLanguageByCodename.js delete mode 100644 utils/languages/getLanguageByExternalId.js delete mode 100644 utils/languages/getLanguages.js delete mode 100644 utils/taxonomy/get/getTaxonomyGroupRaw.js delete mode 100644 utils/types/getContentType.js delete mode 100644 utils/types/getContentTypes.js delete mode 100644 utils/unsubscribeHook.js delete mode 100644 utils/workflows/getWorkflowSteps.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 52bae2a..d461051 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,5 +28,4 @@ jobs: with: node-version: ${{ matrix.node-version }} - run: npm ci - - run: npm run zapier-test - \ No newline at end of file + - run: npm run test diff --git a/.gitignore b/.gitignore index 9f0c890..92bf6d6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules .env .idea .zapierapprc +lib diff --git a/actions/changeContentItemWorkflow.js b/actions/changeContentItemWorkflow.js deleted file mode 100644 index 331fce2..0000000 --- a/actions/changeContentItemWorkflow.js +++ /dev/null @@ -1,247 +0,0 @@ -const handleErrors = require('../utils/handleErrors'); -const getVariant = require('../utils/items/get/getVariant'); -const getWorkflowSteps = require('../utils/workflows/getWorkflowSteps'); -const getWorkflowStepField = require('../fields/getWorkflowStepField'); -const getContentItemField = require('../fields/getContentItemField'); - -function isFirstWorkflowStep(stepId, workflowSteps) { - const firstStep = workflowSteps[0]; - - return firstStep && (firstStep.id === stepId); -} - -function isPublishedWorkflowStep(stepId, workflowSteps) { - const nextToLastStep = workflowSteps[workflowSteps.length - 2]; - - return nextToLastStep && (nextToLastStep.id === stepId) && (nextToLastStep.name === "Published"); -} - -function isScheduledWorkflowStep(workflowStepId, workflowSteps) { - const stepBeforePublish = workflowSteps[workflowSteps.length - 3]; - - return stepBeforePublish && (stepBeforePublish.id === workflowStepId) && (stepBeforePublish.name === "Scheduled"); -} - -async function execute(z, bundle) { - async function createNewVersion(itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/new-version`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - handleErrors(response); - } - - async function publish(itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/publish`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - handleErrors(response); - } - - async function schedulePublishing(itemId, languageId, publishDate) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/publish`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: { - 'scheduled_to': publishDate - } - }; - - const response = await z.request(options); - handleErrors(response); - } - - async function cancelScheduling(itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/cancel-scheduled-publish`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - handleErrors(response); - } - - async function changeWorkflowStep(itemId, languageId, workflowStepId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/workflow/${workflowStepId}`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - handleErrors(response); - } - - async function setWorkflowStep(itemId, languageId, workflowStepId) { - const variant = await getVariant(z, bundle, itemId, languageId); - const workflowSteps = await getWorkflowSteps(z, bundle); - - const targetIsScheduled = isScheduledWorkflowStep(workflowStepId, workflowSteps); - - const currentStepId = variant.workflow_step.id; - if ((currentStepId === workflowStepId) && !targetIsScheduled) { - // Already in that step (except for scheduled) - return {message: "Content item is already in the requested workflow step"}; - } - - const targetIsFirst = isFirstWorkflowStep(workflowStepId, workflowSteps); - - const isPublished = isPublishedWorkflowStep(currentStepId, workflowSteps); - if (isPublished) { - // Create new version first - await createNewVersion(itemId, languageId); - if (targetIsFirst) { - // New version ends up in first WF step - return {message: "New Draft version has been created"}; - } - } else { - const isScheduled = isScheduledWorkflowStep(currentStepId, workflowSteps); - if (isScheduled) { - // Cancel scheduling first - await cancelScheduling(itemId, languageId); - if (targetIsFirst) { - // Cancelled scheduling ends up in first WF step - return {message: "Scheduling cancelled and content item has retuned to Draft"}; - } - } - } - - const targetIsPublished = isPublishedWorkflowStep(workflowStepId, workflowSteps); - if (targetIsPublished) { - await publish(itemId, languageId); - - return {message: "Content item has been published"}; - } else { - if (targetIsScheduled) { - const publishDate = bundle.inputData.publishDate; - - // If publish date is soon (within a minute from now) or in the past, we need to publish as scheduling may fail - - //const isInPast = moment(publishDate).add(-1, 'm').isBefore(); - const isInPast = new Date(publishDate).getTime() < new Date(new Date().toUTCString()).getTime() - if (isInPast) { - await publish(itemId, languageId); - - return {message: "Content item has been published instead of scheduling in a moment"}; - } else { - await schedulePublishing(itemId, languageId, publishDate); - - return {message: "Content item has been scheduled to publishing"}; - } - } else { - await changeWorkflowStep(itemId, languageId, workflowStepId); - - return {message: "Content item workflow step has changed"}; - } - } - - return { success: true }; - } - - // ID = "/" - const fullItemId = bundle.inputData.fullItemId; - if (!fullItemId) { - throw Error('Missing full item ID'); - } - - const parsedId = fullItemId.split('/'); - const itemId = parsedId[0]; - const languageId = parsedId[1]; - - if (!itemId || !languageId) { - throw Error(`Full item ID has to be in format "[item id]/[language id]", found "${fullItemId}"`); - } - - const workflowStepId = bundle.inputData.workflowStepIds; - z.console.log(bundle.inputData.workflowStepIds); - if (!workflowStepId) { - throw Error('Missing target workflow step ID'); - } - - const result = await setWorkflowStep(itemId, languageId, workflowStepId); - - return result; -} - -async function getScheduledPublishingFields(z, bundle) { - const workflowSteps = await getWorkflowSteps(z, bundle); - const stepId = bundle.inputData.workflowStepIds; - - const isScheduledSelected = isScheduledWorkflowStep(stepId, workflowSteps); - if (isScheduledSelected) { - // Only display the datetime field for Scheduled workflow step - return [{ - type: 'datetime', - key: 'publishDate', - label: 'To be published on', - helpText: 'In case the publishing time is in the past, the content item gets published immediately.', - required: true - }]; - } - - return []; -} - -const changeContentItemWorkflow = { - noun: "Language variant workflow change", - display: { - "hidden": false, - "important": true, - "description": "Changes a language variant's workflow.", - "label": "Change Language Variant Workflow Step" - }, - key: "change_item_workflow", - operation: { - perform: execute, - inputFields: [ - getContentItemField({ - helpText: "Select the content item to update.\n\nFor a custom value use compound content item id in a form of \"[item id]/[language id]\"", - }), - getWorkflowStepField({ - required: true, - helpText: "Select a workflow step to which the content item should move.\n\n[More about workflow in Kentico Kontent ...](https://docs.kontent.ai/tutorials/collaborate-with-your-team/workflows/setting-up-a-workflow-for-your-content)", - search: "find_workflow_step.id", - }), - getScheduledPublishingFields - ], - sample: { - success: true, - }, - }, -}; - -module.exports = changeContentItemWorkflow; diff --git a/actions/createContentItem.js b/actions/createContentItem.js deleted file mode 100644 index 08b93ab..0000000 --- a/actions/createContentItem.js +++ /dev/null @@ -1,76 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const getContentTypeField = require('../fields/getContentTypeField'); -const getItemElementFields = require('../fields/elements/getItemElementFields'); -const createItem = require('../utils/items/create/createItem'); -const upsertVariant = require('../utils/items/update/upsertVariant'); -const getItemResult = require('../utils/items/get/getItemResult'); -const contentItemSample = require('../fields/samples/contentItemSample'); -const contentItemOutputFields = require('../fields/output/contentItemOutputFields'); - -const itemNameField = { - required: true, - label: "Content item name", - helpText: "Name of the content item. Displays in content inventory. Shared by all language variants.", - key: "name", - type: "string", -}; - -const externalIdField = { - required: false, - label: "External ID", - helpText: "Any unique identifier for the item in the external system. Can be used to link the content item for future updates. [Read more about external ID ...](https://developer.kontent.ai/v1/reference#content-management-api-reference-by-external-id)", - key: "externalId", - type: "string", -}; - -const elementsInfoField = { - label: "Elements", - helpText: `#### Content item variant elements - -The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. - -[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, - key: "elements_header", - type: "copy", -}; - -async function execute(z, bundle) { - const name = bundle.inputData.name; - const contentTypeId = bundle.inputData.contentTypeId; - const languageId = bundle.inputData.languageId; - const externalId = bundle.inputData.externalId; - - const item = await createItem(z, bundle, name, contentTypeId, externalId); - const variant = await upsertVariant(z, bundle, item.id, languageId, contentTypeId); - const result = getItemResult(z, bundle, item, variant, false); - - return result; -} - -const createContentItem = { - noun: "New content item", - display: { - hidden: false, - important: true, - description: "Creates a content item and language variant using Kontent Management API. The created item is not published, but only in the Draft workflow step.", - label: "Create Content Item" - }, - key: "create_item", - operation: { - perform: execute, - inputFields: [ - getLanguageField({ required: true }), - getContentTypeField({ required: true, altersDynamicFields: true }), - itemNameField, - externalIdField, - elementsInfoField, - async function (z, bundle) { - return await getItemElementFields(z, bundle, bundle.inputData.contentTypeId); - } - ], - sample: contentItemSample, - outputFields: contentItemOutputFields, - }, -}; - -module.exports = createContentItem; diff --git a/actions/deleteLanguageVariant.js b/actions/deleteLanguageVariant.js deleted file mode 100644 index 5c87710..0000000 --- a/actions/deleteLanguageVariant.js +++ /dev/null @@ -1,47 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const findItemByIdentifier = require('../utils/items/get/findItemByIdentifier'); -const contentItemSample = require('../fields/samples/contentItemSample'); -const contentItemOutputFields = require('../fields/output/contentItemOutputFields'); -const itemSearchFields = require('../fields/filters/itemSearchFields'); -const deleteVariant = require('../utils/items/delete/deleteVariant'); - -async function execute(z, bundle) { - const languageId = bundle.inputData.languageId; - const searchField = bundle.inputData.searchField; - const searchValue = bundle.inputData.searchValue; - - // Check existing content item item, it may be available through the find action - const existingItem = searchField && searchValue && await findItemByIdentifier(z, bundle, null, searchField, searchValue); - if(existingItem && existingItem.length > 0) { - const statusCode = await deleteVariant(z, bundle, existingItem[0].id, languageId); - if(statusCode !== 204) { - throw new z.errors.HaltedError(`Skipped, Kontent responded with ${statusCode}.`) - } - else return existingItem[0]; - } - else { - throw new z.errors.HaltedError('Skipped, language variant not found.'); - } -} - -const deleteLanguageVariant = { - noun: "Delete language variant", - display: { - hidden: false, - important: false, - description: "Deletes an existing language variant using Kontent Management API.", - label: "Delete Language Variant" - }, - key: "delete_variant", - operation: { - perform: execute, - inputFields: [ - getLanguageField({ required: true }), - ...itemSearchFields, - ], - sample: contentItemSample, - outputFields: contentItemOutputFields, - }, -}; - -module.exports = deleteLanguageVariant; \ No newline at end of file diff --git a/actions/updateLanguageVariant.js b/actions/updateLanguageVariant.js deleted file mode 100644 index a5df80b..0000000 --- a/actions/updateLanguageVariant.js +++ /dev/null @@ -1,105 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const getContentTypeField = require('../fields/getContentTypeField'); -const getItemElementFields = require('../fields/elements/getItemElementFields'); -const upsertVariant = require('../utils/items/update/upsertVariant'); -const findItemByIdentifier = require('../utils/items/get/findItemByIdentifier'); -const getItemResult = require('../utils/items/get/getItemResult'); -const getVariant = require('../utils/items/get/getVariant'); -const getWorkflowSteps = require('../utils/workflows/getWorkflowSteps'); -const handleErrors = require('../utils/handleErrors'); -const contentItemSample = require('../fields/samples/contentItemSample'); -const contentItemOutputFields = require('../fields/output/contentItemOutputFields'); -const itemSearchFields = require('../fields/filters/itemSearchFields'); - -const elementsInfoField = { - label: "Elements", - helpText: `#### Content item variant elements - -The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. - -[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, - key: "elements_header", - type: "copy", -}; - -async function execute(z, bundle) { - const contentTypeId = bundle.inputData.contentTypeId; - const languageId = bundle.inputData.languageId; - const searchField = bundle.inputData.searchField; - const searchValue = bundle.inputData.searchValue; - - // Check existing content item item, it may be available through the find action - const existingItem = searchField && searchValue && await findItemByIdentifier(z, bundle, contentTypeId, searchField, searchValue); - if(existingItem && existingItem.length > 0) { - - const existingVariant = await getVariant(z, bundle, existingItem[0].id, languageId); - if(existingVariant) { - return await tryUpdate(z, bundle, existingVariant, existingItem[0]); - } - } - - throw new z.errors.HaltedError('Skipped, language variant not found.'); -} - -function isPublishedWorkflowStep(stepId, workflowSteps) { - const nextToLastStep = workflowSteps[workflowSteps.length - 2]; - - return nextToLastStep && (nextToLastStep.id === stepId) && (nextToLastStep.name === "Published"); -} - -async function createNewVersion(z, bundle, itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}/new-version`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - handleErrors(response); -} - -async function tryUpdate(z, bundle, variant, item) { - const workflowSteps = await getWorkflowSteps(z, bundle); - const currentStepId = variant.workflow_step.id; - - const isPublished = isPublishedWorkflowStep(currentStepId, workflowSteps); - if (isPublished) { - // Create new version first - await createNewVersion(z, bundle, variant.item.id, variant.language.id); - } - - result = await upsertVariant(z, bundle, item.id, variant.language.id, item.type.id); - return await getItemResult(z, bundle, item, result, false); -} - -const updateLanguageVariant = { - noun: "Update language variant", - display: { - hidden: false, - important: true, - description: "Updates a language variant using Kontent Management API.", - label: "Update Language Variant" - }, - key: "update_variant", - operation: { - perform: execute, - inputFields: [ - getLanguageField({ required: true }), - getContentTypeField({ required: true, altersDynamicFields: true }), - ...itemSearchFields, - elementsInfoField, - async function (z, bundle) { - return await getItemElementFields(z, bundle, bundle.inputData.contentTypeId); - } - ], - sample: contentItemSample, - outputFields: contentItemOutputFields, - }, -}; - -module.exports = updateLanguageVariant; \ No newline at end of file diff --git a/authentication.js b/authentication.js deleted file mode 100644 index f9e35b3..0000000 --- a/authentication.js +++ /dev/null @@ -1,93 +0,0 @@ -const handleErrors = require('./utils/handleErrors'); - -async function execute(z, bundle) { - async function checkCmApi() { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}`, - }, - }; - - const response = await z.request(options); - handleErrors(response); - - const info = z.JSON.parse(response.content); - - return info; - } - - async function checkPreviewApi() { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/types`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}`, - }, - }; - - const response = await z.request(options); - handleErrors(response); - - return true; - } - - async function checkConnection() { - const projectInfo = checkCmApi(); - const previewApi = checkPreviewApi(); - - const results = await Promise.all([ - projectInfo, - previewApi, - ]); - - return { - projectName: results[0].name, - }; - } - - const result = await checkConnection(); - - return result; -} - -const Authentication = { - type: 'custom', - test: execute, - fields: [ - { - label: 'Delivery API Project ID', - key: 'projectId', - type: 'string', - required: true, - helpText: 'Your project ID is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.' - }, - { - label: 'Management API Key', - key: 'cmApiKey', - type: 'string', - required: true, - helpText: 'The Management API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.' - }, - { - label: 'Preview API Key', - key: 'previewApiKey', - type: 'string', - required: true, - helpText: 'The Preview API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys. You can use the Primary or Secondary key.' - }, - { - label: 'Secure Access Key', - key: 'secureApiKey', - type: 'string', - required: false, - helpText: 'This is required for taxonomy steps if [Secure Access](https://docs.kontent.ai/tutorials/develop-apps/get-content/securing-public-access) is enabled in your project and is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.' - } - ], - connectionLabel: '{{projectName}} - {{bundle.authData.projectId}}' -}; - -module.exports = Authentication; diff --git a/fields/codeNameField.js b/fields/codeNameField.js deleted file mode 100644 index ee3907c..0000000 --- a/fields/codeNameField.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - label: 'Content item code name', - helpText: 'Fires only for the item of the give code name. Leave blank for all content items.', - key: 'targetCodename', - type: 'string' -} \ No newline at end of file diff --git a/fields/constants.js b/fields/constants.js deleted file mode 100644 index 5b30a51..0000000 --- a/fields/constants.js +++ /dev/null @@ -1,4 +0,0 @@ -const ElementsPrefix = 'elements.'; -const SystemPrefix = 'system.'; - -module.exports = { ElementsPrefix, SystemPrefix } diff --git a/fields/elements/getContentTypeElements.js b/fields/elements/getContentTypeElements.js deleted file mode 100644 index b9e096a..0000000 --- a/fields/elements/getContentTypeElements.js +++ /dev/null @@ -1,63 +0,0 @@ -const handleErrors = require('../../utils/handleErrors'); -const getContentType = require('../../utils/types/getContentType'); - -async function getContentTypeElements(z, bundle, contentTypeId) { - if (!contentTypeId) { - return []; - } - - async function getElements(element) { - if (element.type === 'snippet') { - return await getSnippetElements(element.snippet.id, element) - } else { - return [element]; - } - } - - async function getAllElements(elements, parentElement) { - const fieldPromises = elements.map(getElements); - const fieldElements = await Promise.all(fieldPromises); - - const allFields = []; - for (var i = 0; i < fieldElements.length; i++) { - const elements = fieldElements[i]; - const elementsWithParent = parentElement ? - elements.map(element => Object.assign( - {}, - element, - {codename: `${parentElement.codename}__${element.codename}`} - )) : - elements; - - - allFields.push(...elementsWithParent); - } - return allFields; - } - - async function getSnippetElements(snippetId, parentElement) { - var request = { - 'method': 'GET', - 'url': `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/snippets/${snippetId}`, - 'params': {}, - 'headers': { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - } - }; - - const response = await z.request(request); - handleErrors(response); - const results = z.JSON.parse(response.content); - - const allSnippetElements = await getAllElements(results.elements, parentElement); - return allSnippetElements; - } - - const type = await getContentType(z, bundle, contentTypeId); - const allElements = await getAllElements(type.elements); - - return allElements; -} - -module.exports = getContentTypeElements; diff --git a/fields/elements/getContentTypeFields.js b/fields/elements/getContentTypeFields.js deleted file mode 100644 index 6c2f1ef..0000000 --- a/fields/elements/getContentTypeFields.js +++ /dev/null @@ -1,43 +0,0 @@ -const getContentTypeElements = require('./getContentTypeElements'); -const getElementFieldProps = require('./getElementFieldProps'); - -async function getContentTypeFields(z, bundle, contentTypeId) { - - function getField(element, extraProps) { - const baseProps = { - key: `elements__${element.codename}`, - label: element.name, - helpText: element.guidelines, - required: element.is_required, - }; - const typeProps = getElementFieldProps(element); - - return Object.assign(baseProps, typeProps, extraProps || {}); - } - - function getSimpleElementField(element) { - switch (element.type) { - case 'multiple_choice': - case 'asset': - case 'modular_content': - case 'taxonomy': - return getField(element, { list: true }); - - case 'text': - case 'rich_text': - case 'custom': - case 'number': - case 'date_time': - case 'url_slug': - case 'guidelines': - return getField(element); - } - } - - const elements = await getContentTypeElements(z, bundle, contentTypeId); - const fields = elements.map(getSimpleElementField); - - return fields; -} - -module.exports = getContentTypeFields; diff --git a/fields/elements/getElementFieldProps.js b/fields/elements/getElementFieldProps.js deleted file mode 100644 index 12a1a04..0000000 --- a/fields/elements/getElementFieldProps.js +++ /dev/null @@ -1,34 +0,0 @@ -function getElementFieldProps(element) { - switch (element.type) { - case 'text': - case 'rich_text': - case 'url_slug': - return { type: 'unicode' }; - - case 'custom': - return { type: 'text' }; - - case 'multiple_choice': - case 'asset': - case 'modular_content': - case 'taxonomy': - return { - type: 'text', - list: true, - }; - - case 'number': - return { type: 'float' }; - - case 'date_time': - return { type: 'datetime' }; - - case 'guidelines': - return { type: 'copy' }; - - default: - return { type: 'text' }; - } -} - -module.exports = getElementFieldProps; diff --git a/fields/elements/getItemElementFields.js b/fields/elements/getItemElementFields.js deleted file mode 100644 index 5df42f7..0000000 --- a/fields/elements/getItemElementFields.js +++ /dev/null @@ -1,73 +0,0 @@ -const getContentTypeElements = require('./getContentTypeElements'); -const getLinkedItemField = require('../getLinkedItemField'); - -async function getItemElementFields(z, bundle, contentTypeId) { - - function getField(element, extra) { - const base = { - key: `elements__${element.codename}`, - label: element.name || element.codename, - helpText: element.guidelines || '', - required: !!element.is_required - }; - - //element-specific changes to helpText - switch (element.type) { - case 'modular_content': - base.helpText += ' The value of this field should be a comma-separated list of content item IDs or [external IDs](https://docs.kontent.ai/reference/management-api-v2#section/External-IDs-for-imported-content), or a single value on each line.'; - break; - case 'multiple_choice': - case 'asset': - case 'taxonomy': - base.helpText += ' The value of this field should be a comma-separated list of IDs or codenames, or a single value on each line.'; - } - - //provide selectable options for multichoice - if(element.type === 'multiple_choice') { - base['choices'] = element.options.map(o => ({ - label: o.name, - value: o.codename - })); - - if(element.mode === 'single') extra['list'] = false; - } - - return Object.assign(base, extra); - } - - function getSimpleElementField(element) { - switch (element.type) { - case 'text': - case 'rich_text': - case 'custom': - return getField(element, {type: 'text'}); - - case 'number': - return getField(element, {type: 'float'}); - - case 'date_time': - return getField(element, {type: 'datetime'}); - - case 'modular_content': - return getLinkedItemField(getField(element)); - - case 'multiple_choice': - case 'asset': - case 'taxonomy': - return getField(element, {type: 'unicode', list: true}); - - case 'url_slug': - return getField(element, {type: 'unicode'}); - - case 'guidelines': - return getField(element, {type: 'copy'}); - } - } - - const elements = await getContentTypeElements(z, bundle, contentTypeId); - const fields = elements.map(getSimpleElementField); - - return fields; -} - -module.exports = getItemElementFields; diff --git a/fields/filters/assetSearchFields.js b/fields/filters/assetSearchFields.js deleted file mode 100644 index 2342226..0000000 --- a/fields/filters/assetSearchFields.js +++ /dev/null @@ -1,57 +0,0 @@ -//const getOperatorChoices = require('./getOperatorChoices'); - -const searchInfo = async function(z, bundle) { - return { - label: 'Search info', - key: 'searchInfo', - helpText: `### Search by value - - You can search for the asset based on several values.`, - type: 'copy', - }; -}; - -const searchField = async function (z, bundle) { - const choices = [ - { value: 'id', sample: 'id', label: 'Asset ID' }, - { value: 'externalId', sample: 'externalId', label: 'External ID' } - ]; - - return [{ - label: 'Search field', - key: 'searchField', - helpText: 'Select the field based on which the asset should be found.', - required: true, - choices, - altersDynamicFields: true, - }]; -}; - -const searchOperator = async function (z, bundle) { - const choices = [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, - ]; //await getOperatorChoices(z, bundle, contentTypeId, searchField); - TODO allow other operators - - return [{ - label: 'Search operator', - key: 'searchPattern', - helpText: 'Select how the search value should be matched.', - required: true, - choices, - default: choices[0].value, - altersDynamicFields: true, - }]; -}; - -const searchValue = async function (z, bundle) { - return { - label: "Search value", - key: "searchValue", - helpText: "Value to match in the search field. The value must match exactly.", - type: "string", - required: true, - altersDynamicFields: false - } -}; - -module.exports = [searchInfo, searchField, searchOperator, searchValue]; diff --git a/fields/filters/getFieldType.js b/fields/filters/getFieldType.js deleted file mode 100644 index 93d394b..0000000 --- a/fields/filters/getFieldType.js +++ /dev/null @@ -1,22 +0,0 @@ -const getContentTypeElements = require('../elements/getContentTypeElements'); -const { ElementsPrefix, SystemPrefix } = require ('../constants'); - -async function getFieldType(z, bundle, contentTypeId, field) { - if (field.indexOf(ElementsPrefix) === 0) { - const elementCodeName = field.substr(ElementsPrefix.length); - const elements = await getContentTypeElements(z, bundle, contentTypeId); - - const element = elements.filter(e => e.codename === elementCodeName)[0]; - if (element) { - return element.type; - } - } - - if (field.indexOf(SystemPrefix) === 0) { - return 'text'; - } - - return 'id'; -} - -module.exports = getFieldType; diff --git a/fields/filters/getOperatorChoices.js b/fields/filters/getOperatorChoices.js deleted file mode 100644 index c88767a..0000000 --- a/fields/filters/getOperatorChoices.js +++ /dev/null @@ -1,48 +0,0 @@ -const getFieldType = require('./getFieldType'); - -async function getOperatorChoices(z, bundle, contentTypeId, field) { - if (!field) { - return [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, - ]; - } - - const fieldType = await getFieldType(z, bundle, contentTypeId, field); - - switch (fieldType) { - case 'id': - return [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, - ]; - - case 'text': - case 'url_slug': - case 'custom': - return [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, - { value: '{0}[range]={1},{1}~', sample: '{0}[range]={1},{1}~', label: 'Starts with' }, - ]; - - case 'multiple_choice': - case 'modular_content': - case 'taxonomy': - return [ - { value: '{0}[contains]={1}', sample: '{0}[contains]={1}', label: 'Contains the value' }, - { value: '{0}[any]={1}', sample: '{0}[any]={1}', label: 'Contains any value from a list ,' }, - { value: '{0}[all]={1}', sample: '{0}[all]={1}', label: 'Contains all values from a list ,' }, - ]; - - case 'number': - return [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals =' }, - { value: '{0}[lt]={1}', sample: '{0}[lt]={1}', label: 'Less than <' }, - { value: '{0}[lte]={1}', sample: '{0}[lte]={1}', label: 'Less than or equal <=' }, - { value: '{0}[gt]={1}', sample: '{0}[gt]={1}', label: 'Greater than >' }, - { value: '{0}[gte]={1}', sample: '{0}[gte]={1}', label: 'Greater than or equal >=' }, - { value: '{0}[range]={1}', sample: '{0}[range]={1}', label: 'Range ,' }, - { value: '{0}[in]={1}', sample: '{0}[in]={1}', label: 'Any of listed values ,' }, - ]; - } -} - -module.exports = getOperatorChoices; diff --git a/fields/filters/itemSearchFields.js b/fields/filters/itemSearchFields.js deleted file mode 100644 index 8b81344..0000000 --- a/fields/filters/itemSearchFields.js +++ /dev/null @@ -1,85 +0,0 @@ -const getContentTypeElements = require('../elements/getContentTypeElements'); -const getOperatorChoices = require('./getOperatorChoices'); -const { ElementsPrefix, SystemPrefix } = require ('../constants'); - -const searchInfo = { - label: 'Search info', - key: 'searchInfo', - helpText: `### Search by field - -You can search the item by a particular field value.`, - type: 'copy', -}; - -async function getSearchField(z, bundle, contentTypeId) { - const elements = await getContentTypeElements(z, bundle, contentTypeId); - const choices = [ - { value: 'id', sample: 'id', label: 'Item ID' }, - { value: 'externalId', sample: 'externalId', label: 'External ID' }, - { value: `${SystemPrefix}codename`, sample: `${SystemPrefix}codename`, label: 'Code name' } - ]; - - for (var i = 0; i < elements.length; i++) { - const element = elements[i]; - if(element.type === 'guidelines') continue; - - switch (element.type) { - case 'text': - case 'custom': - case 'url_slug': - - case 'multiple_choice': - case 'modular_content': - case 'taxonomy': - - case 'number': - choices.push({ - value: `${ElementsPrefix}${element.codename}`, - sample: `${ElementsPrefix}${element.codename}`, - label: element.name || element.codename - }); - } - } - - return [{ - label: 'Search field', - key: 'searchField', - helpText: 'Select the field based on which the item should be found.', - required: true, - choices, - altersDynamicFields: true, - }]; -} - -const searchField = async function (z, bundle) { - return await getSearchField(z, bundle, bundle.inputData.contentTypeId); -}; - -async function getSearchOperator(z, bundle, contentTypeId, searchField) { - const choices = await getOperatorChoices(z, bundle, contentTypeId, searchField); - - return [{ - label: 'Search operator', - key: 'searchPattern', - helpText: 'Select how the search value should be matched.', - required: true, - choices, - default: choices[0].value, - altersDynamicFields: true, - }]; -} - -const searchOperator = async function (z, bundle) { - return await getSearchOperator(z, bundle, bundle.inputData.contentTypeId, bundle.inputData.searchField); -}; - -const searchValue = { - label: "Search value", - key: "searchValue", - helpText: "Value to match in the search field. The value must match exactly.", - type: "string", - required: true, - altersDynamicFields: false -}; - -module.exports = [searchInfo, searchField, searchOperator, searchValue]; diff --git a/fields/filters/languageSearchFields.js b/fields/filters/languageSearchFields.js deleted file mode 100644 index 79b6880..0000000 --- a/fields/filters/languageSearchFields.js +++ /dev/null @@ -1,58 +0,0 @@ -//const getOperatorChoices = require('./getOperatorChoices'); - -const searchInfo = async function(z, bundle) { - return { - label: 'Search info', - key: 'searchInfo', - helpText: `### Search by value - - You can search for the language based on several values.`, - type: 'copy', - }; -}; - -const searchField = async function (z, bundle) { - const choices = [ - { value: 'id', sample: 'id', label: 'Language ID' }, - { value: 'externalId', sample: 'externalId', label: 'External ID' }, - { value: 'codename', sample: `codename`, label: 'Code name' } - ]; - - return [{ - label: 'Search field', - key: 'searchField', - helpText: 'Select the field based on which the language should be found.', - required: true, - choices, - altersDynamicFields: true, - }]; -}; - -const searchOperator = async function (z, bundle) { - const choices = [ - { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, - ]; //await getOperatorChoices(z, bundle, contentTypeId, searchField); - TODO allow other operators - - return [{ - label: 'Search operator', - key: 'searchPattern', - helpText: 'Select how the search value should be matched.', - required: true, - choices, - default: choices[0].value, - altersDynamicFields: true, - }]; -}; - -const searchValue = async function (z, bundle) { - return { - label: "Search value", - key: "searchValue", - helpText: "Value to match in the search field. The value must match exactly.", - type: "string", - required: true, - altersDynamicFields: false - } -}; - -module.exports = [searchInfo, searchField, searchOperator, searchValue]; diff --git a/fields/getContentItemField.js b/fields/getContentItemField.js deleted file mode 100644 index 5eba6e9..0000000 --- a/fields/getContentItemField.js +++ /dev/null @@ -1,17 +0,0 @@ -function getContentItemField(extras) { - return Object.assign( - { - search: "find_item.id", - list: false, - required: false, - dynamic: "get_content_items.id.system__name", - label: "Content item", - key: "fullItemId", - type: "string", - altersDynamicFields: false - }, - extras || {}, - ); -} - -module.exports = getContentItemField; diff --git a/fields/getContentTypeField.js b/fields/getContentTypeField.js deleted file mode 100644 index a3699bb..0000000 --- a/fields/getContentTypeField.js +++ /dev/null @@ -1,14 +0,0 @@ -function getContentTypeField(extras) { - return Object.assign( - { - label: 'Content type', - key: 'contentTypeId', - type: 'string', - helpText: 'Note: dynamic values from other steps cannot be used here', - dynamic: 'get_content_types.system__id.system__name', - }, - extras || {}, - ); -} - -module.exports = getContentTypeField; diff --git a/fields/getContentTypeFieldForSamples.js b/fields/getContentTypeFieldForSamples.js deleted file mode 100644 index e781963..0000000 --- a/fields/getContentTypeFieldForSamples.js +++ /dev/null @@ -1,14 +0,0 @@ -function getContentTypeFieldForSamples(extras) { - return Object.assign( - { - label: 'Content type for samples', - key: 'contentTypeId', - type: 'string', - helpText: 'If you select a content type, the samples from this trigger will be of that type. If empty, the first found items will be provided.', - dynamic: 'get_content_types.system__id.system__name', - }, - extras || {}, - ); -} - -module.exports = getContentTypeFieldForSamples; \ No newline at end of file diff --git a/fields/getLanguageField.js b/fields/getLanguageField.js deleted file mode 100644 index b44d749..0000000 --- a/fields/getLanguageField.js +++ /dev/null @@ -1,13 +0,0 @@ -function getLanguageField(extras) { - return Object.assign( - { - label: 'Language', - key: 'languageId', - type: 'string', - dynamic: 'get_languages.id.name', - }, - extras || {}, - ); -} - -module.exports = getLanguageField; diff --git a/fields/getLinkedItemField.js b/fields/getLinkedItemField.js deleted file mode 100644 index 26f2f27..0000000 --- a/fields/getLinkedItemField.js +++ /dev/null @@ -1,14 +0,0 @@ -function getLinkedItemField(extras) { - return Object.assign( - { - search: "find_item.id", - list: true, - dynamic: "get_linked_items.id.system__name", - type: "string", - altersDynamicFields: false - }, - extras || {}, - ); -} - -module.exports = getLinkedItemField; diff --git a/fields/getWorkflowStepField.js b/fields/getWorkflowStepField.js deleted file mode 100644 index 45460ac..0000000 --- a/fields/getWorkflowStepField.js +++ /dev/null @@ -1,14 +0,0 @@ -function getWorkflowStepField(extras) { - return Object.assign( - { - list: false, - dynamic: "get_workflow_steps.id.name", - label: "Workflow steps", - key: "workflowStepIds", - type: "string", - }, - extras || {}, - ); -} - -module.exports = getWorkflowStepField; diff --git a/fields/output/assetOutputFields.js b/fields/output/assetOutputFields.js deleted file mode 100644 index 70ec9b9..0000000 --- a/fields/output/assetOutputFields.js +++ /dev/null @@ -1,79 +0,0 @@ -const assetOutputFields = [ - { - key: 'descriptions[]language__id', - label: 'Description language IDs', - type: 'string' - }, - { - key: 'descriptions[]description', - label: 'Description translations', - type: 'string' - }, - { - key: 'id', - label: 'Asset ID', - type: 'string', - }, - { - key: 'external_id', - label: 'External ID', - type: 'string', - }, - { - key: 'file_name', - label: 'File name', - type: 'string', - }, - { - key: 'title', - label: 'Title', - type: 'string', - }, - { - key: 'url', - label: 'Asset URL', - type: 'string', - }, - { - key: 'size', - label: 'File size in bytes', - type: 'number', - }, - { - key: 'image_height', - label: 'Height', - type: 'number', - }, - { - key: 'image_width', - label: 'Width', - type: 'number', - }, - { - key: 'type', - label: 'File type', - type: 'string', - }, - { - key: 'last_modified', - label: 'Last modified', - type: 'datetime', - }, - { - key: 'file_reference__id', - label: 'Asset reference ID', - type: 'string', - }, - { - key: 'file_reference__type', - label: 'Asset reference type', - type: 'string', - }, - { - key: 'folder__id', - label: 'Asset folder ID', - type: 'string', - } -]; - -module.exports = assetOutputFields; diff --git a/fields/output/contentItemOutputFields.js b/fields/output/contentItemOutputFields.js deleted file mode 100644 index db0f6b9..0000000 --- a/fields/output/contentItemOutputFields.js +++ /dev/null @@ -1,11 +0,0 @@ -const standardizedSystemOutputFields = require('./standardizedSystemOutputFields'); -const getElementOutputFields = require('./getElementOutputFields'); - -const contentItemOutputFields = [ - ...standardizedSystemOutputFields, - async function (z, bundle) { - return await getElementOutputFields(z, bundle, bundle.inputData.contentTypeId); - } -]; - -module.exports = contentItemOutputFields; diff --git a/fields/output/getAdditionalItemOutputFields.js b/fields/output/getAdditionalItemOutputFields.js deleted file mode 100644 index 9486b08..0000000 --- a/fields/output/getAdditionalItemOutputFields.js +++ /dev/null @@ -1,14 +0,0 @@ -function getAdditionalItemOutputFields(extras) { - return { - label: 'Additional step output', - key: 'selectedOutput', - helpText: 'Additional data about the webhook that can be made available in later steps', - list: true, - choices: { - json: 'Raw JSON of variant', - payload: 'Webhook payload' - } - } -} - -module.exports = getAdditionalItemOutputFields; \ No newline at end of file diff --git a/fields/output/getAdditionalTaxonomyOutputFields.js b/fields/output/getAdditionalTaxonomyOutputFields.js deleted file mode 100644 index 4ad255e..0000000 --- a/fields/output/getAdditionalTaxonomyOutputFields.js +++ /dev/null @@ -1,14 +0,0 @@ -function getAdditionalTaxonomyOutputFields(extras) { - return { - label: 'Additional step output', - key: 'selectedOutput', - helpText: 'Additional data about the webhook that can be made available in later steps', - list: true, - choices: { - json: 'Raw JSON of the taxonomy group', - payload: 'Webhook payload' - } - } -} - -module.exports = getAdditionalTaxonomyOutputFields; \ No newline at end of file diff --git a/fields/output/getElementOutputFields.js b/fields/output/getElementOutputFields.js deleted file mode 100644 index 273547d..0000000 --- a/fields/output/getElementOutputFields.js +++ /dev/null @@ -1,25 +0,0 @@ -const getContentTypeElements = require('../elements/getContentTypeElements'); -const getElementFieldProps = require('../elements/getElementFieldProps'); - -async function getElementOutputFields(z, bundle, contentTypeId) { - if (!contentTypeId) { - return []; - } - - const elements = await getContentTypeElements(z, bundle, contentTypeId); - const fields = elements - .filter(element => element.type !== 'guidelines') - .map(element => { - const baseProps = { - label: element.name, - key: `elements__${element.codename}`, - }; - const typeProps = getElementFieldProps(element); - - return Object.assign(baseProps, typeProps); - }); - - return fields; -} - -module.exports = getElementOutputFields; diff --git a/fields/output/standardizedSystemOutputFields.js b/fields/output/standardizedSystemOutputFields.js deleted file mode 100644 index 1d31235..0000000 --- a/fields/output/standardizedSystemOutputFields.js +++ /dev/null @@ -1,64 +0,0 @@ -const standardizedSystemOutputFields = [ - { - key: 'system__name', - label: 'Item name', - type: 'string', - }, - { - key: 'system__language', - label: 'Language codename', - type: 'string', - }, - { - key: 'system__lastModified', - label: 'Last modified', - type: 'datetime', - }, - { - key: 'system__codename', - label: 'Item codename', - type: 'string', - }, - { - key: 'system__type', - label: 'Content type codename', - type: 'string', - }, - { - key: 'system__id', - label: 'Item ID', - type: 'string', - }, - { - key: 'system__externalId', - label: 'Item external ID', - type: 'string', - }, - { - key: 'system__projectId', - label: 'Project ID', - type: 'string', - }, - { - key: 'system__fullId', - label: 'Full item ID', - type: 'string', - }, - { - key: 'system__languageId', - label: 'Language ID', - type: 'string', - }, - { - key: 'system__workflowStepId', - label: 'Workflow step ID', - type: 'string', - }, - { - key: 'system__contentTypeId', - label: 'Content type ID', - type: 'string', - }, -]; - -module.exports = standardizedSystemOutputFields; diff --git a/fields/samples/contentItemSample.js b/fields/samples/contentItemSample.js deleted file mode 100644 index 77857e0..0000000 --- a/fields/samples/contentItemSample.js +++ /dev/null @@ -1,31 +0,0 @@ -const contentItemSample = { - system: { - projectId: '471f9f4c-4f97-009b-a0b8-79db2558e63f', - id: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5', - name: 'Coffee Beverages Explained', - codename: 'coffee_beverages_explained', - type: 'article', - language: 'en-US', - lastModified: '2020-03-25T19:59:26.8076754Z', - fullId: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5/00000000-0000-0000-0000-000000000000', - workflowStepId: 'b4363ccd-8f21-45fd-a840-5843d7b7f008', - contentTypeId: 'b7aa4a53-d9b1-48cf-b7a6-ed0b182c4b89', - languageId: '00000000-0000-0000-0000-000000000000' - }, - elements: { - title: 'Coffee Beverages Explained', - teaser_image: ['e700596b-03b0-4cee-ac5c-9212762c027a'], - post_date: '2014-11-18T00:00:00Z', - summary: 'Espresso and filtered coffee are the two main categories of coffee, based on the method of preparation. Learn about individual types of coffee that fall under these categories.', - body_copy: '


', - related_articles: [], - meta_keywords: 'article', - personas: ['208a9095-1b92-10da-7627-75ae311935cf'], - meta_description: 'Espresso and filtered coffee are the two main categories of coffee. Learn about individual types of coffee that fall under these categories.', - url_pattern: 'coffee-beverages-explained', - sitemap: ['7ca9b56c-6379-46dc-ae90-3df4b9abd217'] - }, - modular_content: [] -}; - -module.exports = contentItemSample; diff --git a/fields/samples/getSampleItemExistencePayload.js b/fields/samples/getSampleItemExistencePayload.js deleted file mode 100644 index 0ef7c61..0000000 --- a/fields/samples/getSampleItemExistencePayload.js +++ /dev/null @@ -1,27 +0,0 @@ -function getSampleItemExistencePayload(z, bundle, sampleItem) { - return { - data: { - items: [ - { - item: { - id: sampleItem ? sampleItem.system.id : '42c21e82-0772-4d79-a6b3-c916e51b24ff' - }, - language: { - id: bundle.inputData.languageId ? bundle.inputData.languageId : '00000000-0000-0000-0000-000000000000' - } - } - ] - }, - message: { - id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', - project_id: bundle.authData.projectId, - type: 'content_item_variant', - operation: 'restore', - api_name: 'content_management', - created_timestamp: new Date().toJSON(), - webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } -} - -module.exports = getSampleItemExistencePayload; \ No newline at end of file diff --git a/fields/samples/getSampleItemPublishPayload.js b/fields/samples/getSampleItemPublishPayload.js deleted file mode 100644 index d040f54..0000000 --- a/fields/samples/getSampleItemPublishPayload.js +++ /dev/null @@ -1,25 +0,0 @@ -function getSampleItemPublishPayload(z, bundle, sampleItem) { - return { - data: { - items: [ - { - id: sampleItem.system.id, - codename: sampleItem.system.codename, - language: sampleItem.system.language, - type: sampleItem.system.type - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: bundle.authData.projectId, - type: 'content_item_variant', - operation: 'publish', - api_name: 'delivery_production', - created_timestamp: new Date().toJSON(), - webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } -} - -module.exports = getSampleItemPublishPayload; \ No newline at end of file diff --git a/fields/samples/getSampleTaxonomyPayload.js b/fields/samples/getSampleTaxonomyPayload.js deleted file mode 100644 index a75209d..0000000 --- a/fields/samples/getSampleTaxonomyPayload.js +++ /dev/null @@ -1,31 +0,0 @@ -function getSampleTaxonomyPayload(z, bundle, sampleGroup) { - return { - data: { - items: [ - { - id: 'e113e464-bffb-4fbd-a29b-47991d003732', - codename: 'my_article', - language: 'en-US', - type: 'article' - } - ], - taxonomies: [ - { - id: sampleGroup.system.id, - codename: sampleGroup.system.codename - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: bundle.authData.projectId, - type: 'taxonomy', - operation: 'upsert', - api_name: 'delivery_production', - created_timestamp: new Date().toJSON(), - webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } -} - -module.exports = getSampleTaxonomyPayload; \ No newline at end of file diff --git a/fields/samples/getSampleWorkflowPayload.js b/fields/samples/getSampleWorkflowPayload.js deleted file mode 100644 index 377ac4a..0000000 --- a/fields/samples/getSampleWorkflowPayload.js +++ /dev/null @@ -1,33 +0,0 @@ -function getSampleWorkflowPayload(z, bundle, sampleItem) { - return { - data: { - items: [ - { - item: { - id: sampleItem.system.id - }, - language: { - id: bundle.inputData.languageId ? bundle.inputData.languageId : '00000000-0000-0000-0000-000000000000' - }, - transition_from: { - id: '13145328-b946-4e47-9c9d-6f40c7aaeaef' - }, - transition_to: { - id: 'b4363ccd-8f21-45fd-a840-5843d7b7f008' - } - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: bundle.authData.projectId, - type: 'content_item_variant', - operation: 'change_workflow_step', - api_name: 'content_management', - created_timestamp: new Date().toJSON(), - webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } -} - -module.exports = getSampleWorkflowPayload; \ No newline at end of file diff --git a/fields/samples/getTriggerSampleOutput.js b/fields/samples/getTriggerSampleOutput.js deleted file mode 100644 index ee26f7e..0000000 --- a/fields/samples/getTriggerSampleOutput.js +++ /dev/null @@ -1,37 +0,0 @@ -const getAllItemsDelivery = require('../../utils/items/get/getAllItemsDelivery'); -const getContentType = require('../../utils/types/getContentType'); -const getLanguage = require('../../utils/languages/getLanguage'); -const makeHookItemOutput = require('../../triggers/makeHookItemOutput'); - -async function getTriggerSampleOutput(z, bundle, payloadFunc) { - const allItems = await getAllItemsDelivery(z, bundle); - if(!allItems) return null; - let items = allItems; - - //try to load items of the selected type - const contentTypeId = bundle.inputData.contentTypeId; - if(contentTypeId) { - const type = await getContentType(z, bundle, contentTypeId); - const typeMatches = items.filter(i => i.system.type === type.codename); - if(typeMatches.length > 0) { - items = typeMatches; - } - } - - //try to load items of the selected language - const languageId = bundle.inputData.languageId; - if(languageId) { - const lang = await getLanguage(z, bundle, languageId); - const langMatches = items.filter(i => i.system.language === lang.codename); - if(langMatches.length > 0) { - items = langMatches; - } - } - - items = items.slice(0, 3); - if(items.length === 0) items.push(allItems[0]); - - return await makeHookItemOutput(z, bundle, items, payloadFunc); -} - -module.exports = getTriggerSampleOutput; \ No newline at end of file diff --git a/fields/samples/taxonomyGroupSample.js b/fields/samples/taxonomyGroupSample.js deleted file mode 100644 index 96ff292..0000000 --- a/fields/samples/taxonomyGroupSample.js +++ /dev/null @@ -1,22 +0,0 @@ -const taxonomyGroupSample = { - system: { - id: 'f30c7f72-e9ab-8832-2a57-62944a038809', - name: 'Programming language', - codename: 'programming_language', - last_modified: '2019-08-31T09:41:06.520241Z' - }, - terms: [ - { - name: 'C#', - codename: 'c_', - terms: [] - }, - { - name: 'JavaScript', - codename: 'javascript', - terms: [] - } - ] -} - -module.exports = taxonomyGroupSample; \ No newline at end of file diff --git a/index.js b/index.js index 420b217..4d5e21a 100644 --- a/index.js +++ b/index.js @@ -1,86 +1 @@ -const authentication = require('./authentication'); - -const triggerWorkflowStatusChanged = require('./triggers/triggerWorkflowStatusChanged'); -const triggerTaxonomyChanged = require('./triggers/triggerTaxonomyChanged'); -const triggerItemPublishChanged = require('./triggers/triggerItemPublishChanged'); -const triggerItemExistenceChanged = require('./triggers/triggerItemExistenceChanged'); - -const getContentItems = require('./triggers/dropdowns/getContentItems'); -const getLinkedItems = require('./triggers/dropdowns/getLinkedItems'); -const getWorkflowSteps = require('./triggers/dropdowns/getWorkflowSteps'); -const getContentTypes = require('./triggers/dropdowns/getContentTypes'); -const getLanguages = require('./triggers/dropdowns/getLanguages'); - -const findContentItem = require('./searches/findContentItem'); -const findWorkflowStep = require('./searches/findWorkflowStep'); -const findLanguage = require('./searches/findLanguage'); -const findAsset = require('./searches/findAsset'); - -const deleteLanguageVariant = require('./actions/deleteLanguageVariant'); -const createContentItem = require('./actions/createContentItem'); -const updateLanguageVariant = require('./actions/updateLanguageVariant'); -const changeContentItemWorkflow = require('./actions/changeContentItemWorkflow'); - -// We can roll up all our behaviors in an App. -const App = { - // This is just shorthand to reference the installed dependencies you have. Zapier will - // need to know these before we can upload - version: require('./package.json').version, - platformVersion: require('zapier-platform-core').version, - - authentication: authentication, - - // beforeRequest & afterResponse are optional hooks into the provided HTTP client - beforeRequest: [], - - afterResponse: [], - - // If you want to define optional resources to simplify creation of triggers, searches, creates - do that here! - resources: {}, - - // If you want your trigger to show up, you better include it here! - triggers: { - [triggerWorkflowStatusChanged.key]: triggerWorkflowStatusChanged, - [triggerTaxonomyChanged.key]: triggerTaxonomyChanged, - [triggerItemPublishChanged.key]: triggerItemPublishChanged, - [triggerItemExistenceChanged.key]: triggerItemExistenceChanged, - - // Lists for dropdowns - [getLinkedItems.key]: getLinkedItems, - [getContentTypes.key]: getContentTypes, - [getContentItems.key]: getContentItems, - [getWorkflowSteps.key]: getWorkflowSteps, - [getLanguages.key]: getLanguages, - }, - - // If you want your searches to show up, you better include it here! - searches: { - [findContentItem.key]: findContentItem, - [findWorkflowStep.key]: findWorkflowStep, - [findLanguage.key]: findLanguage, - [findAsset.key]: findAsset, - }, - - // If you want your creates to show up, you better include it here! - creates: { - [createContentItem.key]: createContentItem, - [changeContentItemWorkflow.key]: changeContentItemWorkflow, - [updateLanguageVariant.key]: updateLanguageVariant, - [deleteLanguageVariant.key]: deleteLanguageVariant, - }, - - searchOrCreates: { - find_item: { - search: 'find_item', - create: 'create_item', - key: 'find_item', - display: { - 'description': 'Finds a content item matching the provided parameters. If more items match, it returns the first found item.', - 'label': 'Find or create content item' - } - } - } -}; - -// Finally, export the app. -module.exports = App; +module.exports = require('./lib').default; diff --git a/package-lock.json b/package-lock.json index c726595..010a8c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,505 +1,17621 @@ { - "name": "kentico-kontent", - "version": "0.1.3", - "lockfileVersion": 1, + "name": "zapier-cli", + "version": "0.2.0", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "zapier-cli", + "version": "0.2.0", + "dependencies": { + "@kontent-ai/delivery-sdk": "^12.4.0", + "@kontent-ai/management-sdk": "^3.4.0", + "zapier-platform-core": "12.2.0" + }, + "devDependencies": { + "@types/jest": "^26.0.23", + "@types/node": "^14", + "jest": "^26.6.3", + "typescript": "^4.9.3", + "zapier-platform-cli": "^12.2.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", + "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", + "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-flow-strip-types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", + "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "dev": true, + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.13.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@kontent-ai/core-sdk": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.1.1.tgz", + "integrity": "sha512-wSzROG/wA9Zyg3HRcZrH8AUWh372CXuhxZxDdY4YcS54lAhs90SEpcsytuo2sraP8FsCqHkyX03NbrgNz8KXFw==", + "dependencies": { + "axios": "0.27.2" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@kontent-ai/delivery-sdk": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/delivery-sdk/-/delivery-sdk-12.4.1.tgz", + "integrity": "sha512-279xSuPUMJYeKYgD/rOHHgi56ahp5jzaIgPKufEODm+ktHOTLR9Gp+b7zDY+QI77+qmhfQR9ESKrWiWyKmNkTA==", + "dependencies": { + "@kontent-ai/core-sdk": "10.1.1", + "url-parse": "1.5.10", + "uuid": "9.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@kontent-ai/management-sdk": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/management-sdk/-/management-sdk-3.4.0.tgz", + "integrity": "sha512-WnA868I1S8/wHnZVurTODW/VAVvKLReBuw85N1u1zhASACEYe4QMRD4m2jDkKQE/18k0EpND7ox3pTD8R70lWw==", + "dependencies": { + "@kontent-ai/core-sdk": "10.0.0", + "mime": "3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@kontent-ai/management-sdk/node_modules/@kontent-ai/core-sdk": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.0.0.tgz", + "integrity": "sha512-Qm3QbNmnsXPweHvB3roa5WuX0Z0Uesg0ehfJGM6Gr/5eI4/dCXs+M3CA2fB+KQ/mQoxJ9hbLyIXbhPiFVS+eZw==", + "dependencies": { + "axios": "0.27.2" + }, + "engines": { + "node": ">= 8" + } + }, + "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/@npmcli/arborist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", + "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/arborist/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", + "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", + "dev": true, + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", + "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "node_modules/@npmcli/metavuln-calculator/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "node_modules/@npmcli/package-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", + "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/@npmcli/run-script": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/@oclif/color": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz", + "integrity": "sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^3.0.0", + "strip-ansi": "^5.2.0", + "supports-color": "^5.4.0", + "tslib": "^1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/color/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/color/node_modules/ansi-styles": { + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/color/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@oclif/color/node_modules/chalk/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/@oclif/color/node_modules/chalk/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/@oclif/color/node_modules/chalk/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/@oclif/color/node_modules/chalk/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/@oclif/color/node_modules/color-convert": { + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@oclif/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@oclif/color/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/color/node_modules/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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/color/node_modules/supports-color/node_modules/has-flag": { + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/color/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/@oclif/command": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", + "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", + "dev": true, + "dependencies": { + "@oclif/config": "^1.15.1", + "@oclif/errors": "^1.3.3", + "@oclif/parser": "^3.8.3", + "@oclif/plugin-help": "^3", + "debug": "^4.1.1", + "semver": "^7.3.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@oclif/config": "^1" + } + }, + "node_modules/@oclif/command/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@oclif/config": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", + "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", + "dev": true, + "dependencies": { + "@oclif/errors": "^1.3.3", + "@oclif/parser": "^3.8.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-wsl": "^2.1.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/errors": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.6.tgz", + "integrity": "sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ==", + "dev": true, + "dependencies": { + "clean-stack": "^3.0.0", + "fs-extra": "^8.1", + "indent-string": "^4.0.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/errors/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@oclif/errors/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@oclif/errors/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@oclif/errors/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/@oclif/help": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oclif/help/-/help-1.0.4.tgz", + "integrity": "sha512-w3xsdZj1af/dFN7oCmvAHbHRj6L0SOO5uGXEve0LLroAJSM3DeEpzgNMjxS5RTV2gVC4RmJ/rTqmp0SRaXGiTA==", + "dev": true, + "dependencies": { + "@oclif/config": "1.18.6", + "@oclif/errors": "1.3.6", + "chalk": "^4.1.2", + "indent-string": "^4.0.0", + "lodash": "^4.17.21", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/help/node_modules/@oclif/config": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.6.tgz", + "integrity": "sha512-OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA==", + "dev": true, + "dependencies": { + "@oclif/errors": "^1.3.6", + "@oclif/parser": "^3.8.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-wsl": "^2.1.1", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/linewrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", + "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==", + "dev": true + }, + "node_modules/@oclif/parser": { + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.9.tgz", + "integrity": "sha512-1j/kThdse7yHQz6+c3v8RA1I3gD6+SGt2O7IAb/MAMoxqyBrFQDabQHH2UU4eVFGMLN7U91AiYJp11zJ9LcQAg==", + "dev": true, + "dependencies": { + "@oclif/errors": "^1.3.6", + "@oclif/linewrap": "^1.0.0", + "chalk": "^4.1.0", + "tslib": "^2.4.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.3.0.tgz", + "integrity": "sha512-gCuIUCswvoU1BxDDvHSUGxW8rFagiacle8jHqE49+WnuniXD/N8NmJvnzmlNyc8qLE192CnKK+qYyAF+vaFQBg==", + "dev": true, + "dependencies": { + "@oclif/command": "^1.5.13", + "@oclif/config": "^1.13.0", + "chalk": "^4.1.0", + "cli-ux": "^5.2.1", + "debug": "^4.0.0", + "fs-extra": "^9.0.1", + "moment": "^2.22.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@oclif/plugin-help": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.2.tgz", + "integrity": "sha512-SPZ8U8PBYK0n4srFjCLedk0jWU4QlxgEYLCXIBShJgOwPhTTQknkUlsEwaMIevvCU4iCQZhfMX+D8Pz5GZjFgA==", + "dev": true, + "dependencies": { + "@oclif/command": "^1.5.20", + "@oclif/config": "^1.15.1", + "@oclif/errors": "^1.2.2", + "chalk": "^4.1.0", + "indent-string": "^4.0.0", + "lodash.template": "^4.4.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/plugin-help/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-help/node_modules/ansi-styles": { + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-help/node_modules/color-convert": { + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@oclif/plugin-help/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@oclif/plugin-help/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-help/node_modules/wrap-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", + "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/plugin-help/node_modules/wrap-ansi/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-help/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.4.tgz", + "integrity": "sha512-G440PCuMi/OT8b71aWkR+kCWikngGtyRjOR24sPMDbpUFV4+B3r51fz1fcqeUiiEOYqUpr0Uy/sneUe1O/NfBg==", + "dev": true, + "dependencies": { + "@oclif/color": "^0.x", + "@oclif/command": "^1.6.0", + "cli-ux": "^4.9.0", + "fast-levenshtein": "^2.0.6", + "lodash": "^4.17.13" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/ansi-styles": { + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/chalk": { + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/cli-ux": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz", + "integrity": "sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "dependencies": { + "@oclif/errors": "^1.2.2", + "@oclif/linewrap": "^1.0.0", + "@oclif/screen": "^1.0.3", + "ansi-escapes": "^3.1.0", + "ansi-styles": "^3.2.1", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "clean-stack": "^2.0.0", + "extract-stack": "^1.0.0", + "fs-extra": "^7.0.0", + "hyperlinker": "^1.0.0", + "indent-string": "^3.2.0", + "is-wsl": "^1.1.0", + "lodash": "^4.17.11", + "password-prompt": "^1.0.7", + "semver": "^5.6.0", + "strip-ansi": "^5.0.0", + "supports-color": "^5.5.0", + "supports-hyperlinks": "^1.0.1", + "treeify": "^1.1.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/color-convert": { + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@oclif/plugin-not-found/node_modules/escape-string-regexp": { + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/extract-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz", + "integrity": "sha512-M5Ge0JIrn12EtIVpje2G+hI5X78hmX4UDzynZ7Vnp1MiPSqleEonmgr2Rh59eygEEgq3YJ1GDP96rnM8tnVg/Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/has-flag": { + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "dev": true, + "dependencies": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@oclif/plugin-not-found/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/@oclif/plugin-not-found/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@oclif/screen": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", + "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "dependencies": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "devOptional": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/vinyl": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.7.tgz", + "integrity": "sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==", + "dev": true, + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@zapier/secret-scrubber": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@zapier/secret-scrubber/-/secret-scrubber-1.0.7.tgz", + "integrity": "sha512-NfqHsMLhjebSsIXOpn6oumkbj0fdViLPNxaQDicj0RTTUEc6LjCzCIj31imI/gVtXcd5oI1fmDJ/M9SQosuH0w==", + "dependencies": { + "lodash.isplainobject": "^4.0.6" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/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/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/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/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.5.tgz", + "integrity": "sha512-IWwXKnCbirdbyXSfUDvCCrmYrOHANRZcc8NcRrvTlIApdl7PwE9oGcsYvNeJPAVY1M+70b4PxXGKIf8AEuiQ6w==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aggregate-error/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, + "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/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/archiver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/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/archiver-utils/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/archiver-utils/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/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/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/are-we-there-yet/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/are-we-there-yet/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/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bin-links": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", + "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "dev": true, + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/binaryextensions": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz", + "integrity": "sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw==", + "dev": true, + "engines": { + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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/boxen/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/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/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "dependencies": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, + "node_modules/browser-pack/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/browser-pack/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/browser-pack/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/browser-pack/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/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "dev": true, + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/browserify/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/browserify/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/browserify/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/browserify/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/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "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": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/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/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.11.2.tgz", + "integrity": "sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==", + "dev": true, + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-table/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-ux": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.7.tgz", + "integrity": "sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "dependencies": { + "@oclif/command": "^1.8.15", + "@oclif/errors": "^1.3.5", + "@oclif/linewrap": "^1.0.0", + "@oclif/screen": "^1.0.4", + "ansi-escapes": "^4.3.0", + "ansi-styles": "^4.2.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.0", + "clean-stack": "^3.0.0", + "cli-progress": "^3.4.0", + "extract-stack": "^2.0.0", + "fs-extra": "^8.1", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.13.1", + "lodash": "^4.17.21", + "natural-orderby": "^2.0.1", + "object-treeify": "^1.1.4", + "password-prompt": "^1.1.2", + "semver": "^7.3.2", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "supports-color": "^8.1.0", + "supports-hyperlinks": "^2.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cli-ux/node_modules/@oclif/command": { + "version": "1.8.20", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.20.tgz", + "integrity": "sha512-BHM9byujY0kf0PiRorIyp99K50cA3i6Hyro0+TPpFFx+4QM+PyQ5vMHO/TG5wkEP8tIivNRs24bF8QVyJru25g==", + "dev": true, + "dependencies": { + "@oclif/config": "^1.18.2", + "@oclif/errors": "^1.3.6", + "@oclif/help": "^1.0.1", + "@oclif/parser": "^3.8.9", + "debug": "^4.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@oclif/config": "^1" + } + }, + "node_modules/cli-ux/node_modules/@oclif/config": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.6.tgz", + "integrity": "sha512-OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA==", + "dev": true, + "dependencies": { + "@oclif/errors": "^1.3.6", + "@oclif/parser": "^3.8.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-wsl": "^2.1.1", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cli-ux/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/cli-ux/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/cli-ux/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-ux/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/cli-ux/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/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/cloneable-readable/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/cloneable-readable/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/cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "dev": true, + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combine-source-map/node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "dev": true + }, + "node_modules/combine-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "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/concat-stream/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/concat-stream/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/concat-stream/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/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/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==" + }, + "node_modules/convert-source-map": { + "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 + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "peer": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "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/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "engines": { + "node": ">=4.0.0" + } + }, + "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/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/deps-sort/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/deps-sort/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/deps-sort/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/deps-sort/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/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "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/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/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/duplexer2/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/duplexer2/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/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/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==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/error/-/error-10.4.0.tgz", + "integrity": "sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "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/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/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/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/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/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "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/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-stack": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", + "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "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.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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.6.0" + } + }, + "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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "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/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/first-chunk-stream/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/first-chunk-stream/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/first-chunk-stream/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/flow-parser": { + "version": "0.193.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.193.0.tgz", + "integrity": "sha512-x7ZoArE1UO3Nk2rkq/KK/Tkp714QDMVzEsxIyK2+p7Alx+88LY7KgqmeQZuiAG8TCHucmYuHefbk3KsVFVjouA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "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/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "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-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/github-username": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-6.0.0.tgz", + "integrity": "sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==", + "dev": true, + "dependencies": { + "@octokit/rest": "^18.0.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grouped-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-2.0.0.tgz", + "integrity": "sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true, + "optional": true + }, + "node_modules/gulp-filter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", + "integrity": "sha512-ZGWtJo0j1mHfP77tVuhyqem4MRA5NfNRjoVe6VAkLGeQQ/QGo2VsFwp7zfPTGDsd1rwzBmoDHhxpE6f5B3Zuaw==", + "dev": true, + "dependencies": { + "multimatch": "^5.0.0", + "plugin-error": "^1.0.1", + "streamfilter": "^3.0.0", + "to-absolute-glob": "^2.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "gulp": ">=4" + }, + "peerDependenciesMeta": { + "gulp": { + "optional": true + } + } + }, + "node_modules/gulp-prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-prettier/-/gulp-prettier-3.0.0.tgz", + "integrity": "sha512-vZFyC1F+7EjuI2WDUOcbPt9o3ZjdqjFMjr8a9Yk2K8EmNhP1w6X01QAkv5Ym3dsHCBsBA4AEFcYds2vOTSgx0A==", + "dev": true, + "dependencies": { + "plugin-error": "^1.0.1", + "prettier": "^2.0.0", + "through2": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-prettier/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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-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.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "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/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/hyperlinker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "dev": true, + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/inline-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inquirer": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.0.0.tgz", + "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.6", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, + "node_modules/insert-module-globals/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/insert-module-globals/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/insert-module-globals/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/insert-module-globals/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/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "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.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "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, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-scoped": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz", + "integrity": "sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==", + "dev": true, + "dependencies": { + "scoped-regex": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jscodeshift": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.12.0.tgz", + "integrity": "sha512-LEgr+wklbtEQD6SptyVYox+YZ7v+4NQeWHgqASedxl2LxQ+/kSQs6Nhs/GX+ymVOu84Hsz9/C2hQfDY89dKZ6A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "colors": "^1.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.20.4", + "temp": "^0.8.1", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "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-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsonschema": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz", + "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==", + "engines": { + "node": "*" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/just-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", + "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", + "dev": true + }, + "node_modules/just-diff-apply": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", + "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", + "dev": true + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/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/lazystream/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/lazystream/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/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "peer": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "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/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "dev": true, + "peer": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/marked-terminal": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.1.tgz", + "integrity": "sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "cardinal": "^2.1.1", + "chalk": "^4.1.0", + "cli-table": "^0.3.1", + "node-emoji": "^1.10.0", + "supports-hyperlinks": "^2.1.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mem-fs": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-2.2.1.tgz", + "integrity": "sha512-yiAivd4xFOH/WXlUi6v/nKopBh1QLzwjFi36NK88cGt/PRXI8WeBASqY+YSjIVWvQTx3hR8zHKDBMV6hWmglNA==", + "dev": true, + "dependencies": { + "@types/node": "^15.6.1", + "@types/vinyl": "^2.0.4", + "vinyl": "^2.0.1", + "vinyl-file": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mem-fs-editor": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.5.0.tgz", + "integrity": "sha512-7p+bBDqsSisO20YIZf2ntYvST27fFJINn7CKE21XdPUQDcLV62b/yB5sTOooQeEoiZ3rldZQ+4RfONgL/gbRoA==", + "dev": true, + "dependencies": { + "binaryextensions": "^4.16.0", + "commondir": "^1.0.1", + "deep-extend": "^0.6.0", + "ejs": "^3.1.8", + "globby": "^11.1.0", + "isbinaryfile": "^4.0.8", + "minimatch": "^3.1.2", + "multimatch": "^5.0.0", + "normalize-path": "^3.0.0", + "textextensions": "^5.13.0" + }, + "engines": { + "node": ">=12.10.0" + }, + "peerDependencies": { + "mem-fs": "^2.1.0" + }, + "peerDependenciesMeta": { + "mem-fs": { + "optional": true + } + } + }, + "node_modules/mem-fs/node_modules/@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/module-deps/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/module-deps/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/module-deps/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/module-deps/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/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-orderby": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", + "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-abort-controller": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", + "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-notifier/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-notifier/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ora": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", + "integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "dev": true, + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-conflict-json": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", + "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/parse-gitignore": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.4.0.tgz", + "integrity": "sha512-D7ihy03eLEIDWOY1YHY3w6I/l00M+3V5HBytBId9OcdVY9w3thE0uAPtRftdIpKrSsinYNb+/DpEFZygdB+J2g==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "is-glob": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-gitignore/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + } + }, + "node_modules/password-prompt/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/password-prompt/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/password-prompt/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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": "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/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preferred-pm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz", + "integrity": "sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/preferred-pm/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/preferred-pm/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/preferred-pm/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/preferred-pm/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/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/proc-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", + "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", + "dev": true + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "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/promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "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/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "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/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/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true + }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/read-only-stream/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/read-only-stream/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/read-only-stream/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/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "dev": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dev": true, + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "peer": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "peer": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "peer": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "peer": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true, + "peer": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/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/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scoped-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz", + "integrity": "sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "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/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "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/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/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/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/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/stream-combiner2/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/stream-combiner2/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/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-splicer/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/stream-splicer/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/stream-splicer/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/streamfilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz", + "integrity": "sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.6" + }, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/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": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==", + "dev": true, + "dependencies": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom-stream/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "dependencies": { + "minimist": "^1.1.0" + } + }, + "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/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "dependencies": { + "acorn-node": "^1.2.0" + } + }, + "node_modules/tar": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", + "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "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": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/textextensions": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-5.15.0.tgz", + "integrity": "sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw==", + "dev": true, + "engines": { + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "dev": true, + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/treeverse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", + "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "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": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true, + "bin": { + "umd": "bin/cli.js" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "peer": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz", + "integrity": "sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "strip-bom-buf": "^1.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vinyl/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/which-pm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", + "integrity": "sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==", + "dev": true, + "dependencies": { + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8.15" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "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": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yeoman-environment": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.3.0.tgz", + "integrity": "sha512-2OV2hgRoLjkQrtNIfaTejinMHR5yjJ4DF/aG1Le/qnzHRAsE6gfFm9YL2Sq5FW5l16XSmt7BCMQlcDVyPTxpSg==", + "dev": true, + "dependencies": { + "@npmcli/arborist": "^2.2.2", + "are-we-there-yet": "^1.1.5", + "arrify": "^2.0.1", + "binaryextensions": "^4.15.0", + "chalk": "^4.1.0", + "cli-table": "^0.3.1", + "commander": "7.1.0", + "dateformat": "^4.5.0", + "debug": "^4.1.1", + "diff": "^5.0.0", + "error": "^10.4.0", + "escape-string-regexp": "^4.0.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "globby": "^11.0.1", + "grouped-queue": "^2.0.0", + "inquirer": "^8.0.0", + "is-scoped": "^2.1.0", + "lodash": "^4.17.10", + "log-symbols": "^4.0.0", + "mem-fs": "^1.2.0 || ^2.0.0", + "mem-fs-editor": "^8.1.2 || ^9.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-queue": "^6.6.2", + "pacote": "^11.2.6", + "preferred-pm": "^3.0.3", + "pretty-bytes": "^5.3.0", + "semver": "^7.1.3", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "textextensions": "^5.12.0", + "untildify": "^4.0.0" + }, + "bin": { + "yoe": "cli/index.js" + }, + "engines": { + "node": ">=12.10.0" + }, + "peerDependencies": { + "mem-fs": "^1.2.0 || ^2.0.0", + "mem-fs-editor": "^8.1.2 || ^9.0.0" + } + }, + "node_modules/yeoman-environment/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/yeoman-environment/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/yeoman-environment/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/yeoman-environment/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yeoman-environment/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/yeoman-environment/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/yeoman-environment/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/yeoman-environment/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/yeoman-environment/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yeoman-generator": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.2.0.tgz", + "integrity": "sha512-LCHaYrcgtC4NpYAkritCEteuDSjBdhsQNYrssZjnK0okRFvroMXDX4//CA1RfVsjCHKi4Df6lILOUYCRiYKG4g==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "dargs": "^7.0.0", + "debug": "^4.1.1", + "execa": "^4.1.0", + "github-username": "^6.0.0", + "lodash": "^4.17.11", + "minimist": "^1.2.5", + "read-pkg-up": "^7.0.1", + "run-async": "^2.0.0", + "semver": "^7.2.1", + "shelljs": "^0.8.4", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=12.10.0" + }, + "peerDependencies": { + "yeoman-environment": "^3.2.0" + }, + "peerDependenciesMeta": { + "yeoman-environment": { + "optional": true + } + } + }, + "node_modules/yeoman-generator/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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" + } + }, + "node_modules/zapier-platform-cli": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-cli/-/zapier-platform-cli-12.2.0.tgz", + "integrity": "sha512-5FZ2DKY/CFkkrktB42wmkt+bo25Vl3Cb7A+WV6vl8U/HFTuW1PNsG232AQljJTqkX5cVyjySBis5acu7yvAE+g==", + "dev": true, + "dependencies": { + "@oclif/command": "1.8.0", + "@oclif/config": "1.17.0", + "@oclif/plugin-autocomplete": "0.3.0", + "@oclif/plugin-help": "3.2.2", + "@oclif/plugin-not-found": "1.2.4", + "adm-zip": "0.5.5", + "archiver": "5.3.0", + "browserify": "17.0.0", + "cli-table3": "0.6.0", + "colors": "1.4.0", + "debug": "4.3.1", + "fs-extra": "10.0.0", + "gulp-filter": "7.0.0", + "gulp-prettier": "3.0.0", + "ignore": "5.1.8", + "inquirer": "8.0.0", + "jscodeshift": "0.12.0", + "klaw": "3.0.0", + "lodash": "4.17.21", + "marked": "4.0.10", + "marked-terminal": "4.1.1", + "node-fetch": "2.6.7", + "ora": "5.4.0", + "parse-gitignore": "0.4.0", + "prettier": "2.3.0", + "read": "1.0.7", + "semver": "7.3.5", + "string-length": "4.0.2", + "through2": "4.0.2", + "tmp": "0.2.1", + "update-notifier": "5.1.0", + "yeoman-environment": "3.3.0", + "yeoman-generator": "5.2.0" + }, + "bin": { + "zapier": "src/bin/run" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/zapier-platform-cli/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/zapier-platform-cli/node_modules/marked": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/zapier-platform-cli/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/zapier-platform-core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-core/-/zapier-platform-core-12.2.0.tgz", + "integrity": "sha512-TE6yHCr2tRcrFDbKqrt9t3X4KztbSsopdlKSs2FKjbBjHLsZgz8Z/l1oViv1WxEcvYTAQapo4hqeKostFW+sRw==", + "dependencies": { + "@zapier/secret-scrubber": "^1.0.7", + "bluebird": "3.7.2", + "content-disposition": "0.5.3", + "dotenv": "9.0.2", + "form-data": "4.0.0", + "lodash": "4.17.21", + "mime-types": "2.1.34", + "node-abort-controller": "3.0.1", + "node-fetch": "2.6.7", + "oauth-sign": "0.9.0", + "semver": "7.3.5", + "zapier-platform-schema": "12.2.0" + }, + "engines": { + "node": ">=12", + "npm": ">=5.6.0" + }, + "optionalDependencies": { + "@types/node": "^14.14.35" + } + }, + "node_modules/zapier-platform-core/node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/zapier-platform-core/node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/zapier-platform-core/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/zapier-platform-schema": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-schema/-/zapier-platform-schema-12.2.0.tgz", + "integrity": "sha512-dKPG5RhD78kqJ8SL871tnVV2yTZh/lq96qz1VDAIWxiEiygW+CD5NX88Xuk4weUCZU/FXj8BLBuuUbUrwLP3eg==", + "dependencies": { + "jsonschema": "1.2.2", + "lodash": "4.17.21" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + } + }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "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": "^1.9.0" + } + }, + "chalk": { + "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": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "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.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "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 + }, + "has-flag": { + "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 + }, + "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": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, + "peer": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, - "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, + "peer": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, + "peer": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, + "peer": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "@babel/plugin-transform-flow-strip-types": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-flow": "^7.18.6" } }, - "@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, + "peer": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, + "peer": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" } }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz", + "integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", + "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-flow-strip-types": "^7.18.6" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + } + }, + "@babel/register": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", + "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "dev": true, + "peer": true, + "requires": { + "regenerator-runtime": "^0.13.10" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" } }, - "@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" } }, - "@babel/plugin-syntax-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", - "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", - "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", - "dev": true, + "@kontent-ai/core-sdk": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.1.1.tgz", + "integrity": "sha512-wSzROG/wA9Zyg3HRcZrH8AUWh372CXuhxZxDdY4YcS54lAhs90SEpcsytuo2sraP8FsCqHkyX03NbrgNz8KXFw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "axios": "0.27.2" } }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz", - "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==", - "dev": true, + "@kontent-ai/delivery-sdk": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/delivery-sdk/-/delivery-sdk-12.4.1.tgz", + "integrity": "sha512-279xSuPUMJYeKYgD/rOHHgi56ahp5jzaIgPKufEODm+ktHOTLR9Gp+b7zDY+QI77+qmhfQR9ESKrWiWyKmNkTA==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-flow": "^7.12.13" + "@kontent-ai/core-sdk": "10.1.1", + "url-parse": "1.5.10", + "uuid": "9.0.0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", - "dev": true, + "@kontent-ai/management-sdk": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/management-sdk/-/management-sdk-3.4.0.tgz", + "integrity": "sha512-WnA868I1S8/wHnZVurTODW/VAVvKLReBuw85N1u1zhASACEYe4QMRD4m2jDkKQE/18k0EpND7ox3pTD8R70lWw==", "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@kontent-ai/core-sdk": "10.0.0", + "mime": "3.0.0" + }, + "dependencies": { + "@kontent-ai/core-sdk": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.0.0.tgz", + "integrity": "sha512-Qm3QbNmnsXPweHvB3roa5WuX0Z0Uesg0ehfJGM6Gr/5eI4/dCXs+M3CA2fB+KQ/mQoxJ9hbLyIXbhPiFVS+eZw==", + "requires": { + "axios": "0.27.2" + } + } } }, - "@babel/plugin-transform-typescript": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", - "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", + "@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, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-typescript": "^7.12.13" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "@babel/preset-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.12.13.tgz", - "integrity": "sha512-gcEjiwcGHa3bo9idURBp5fmJPcyFPOszPQjztXrOjUE2wWVqc6fIVJPgWPIQksaQ5XZ2HWiRsf2s1fRGVjUtVw==", + "@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 + }, + "@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, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-flow-strip-types": "^7.12.13" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "@babel/preset-typescript": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz", - "integrity": "sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-transform-typescript": "^7.13.0" + "@npmcli/arborist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", + "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "dependencies": { + "semver": { + "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" + } + } } }, - "@babel/register": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.13.8.tgz", - "integrity": "sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==", + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "lodash": "^4.17.19", - "make-dir": "^2.1.0", - "pirates": "^4.0.0", - "source-map-support": "^0.5.16" + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" }, "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "semver": { + "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" + } } } }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "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" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" } }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "@npmcli/map-workspaces": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", + "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", + "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { - "ms": "2.1.2" + "lru-cache": "^6.0.0" } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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 } } }, - "@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/package-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", + "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "json-parse-even-better-errors": "^2.3.1" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } }, "@oclif/color": { "version": "0.1.2", @@ -515,9 +17631,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "ansi-styles": { @@ -586,13 +17702,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "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==", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "strip-ansi": { @@ -603,79 +17713,81 @@ "requires": { "ansi-regex": "^4.1.0" } + }, + "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": { + "has-flag": "^3.0.0" + }, + "dependencies": { + "has-flag": { + "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 + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, "@oclif/command": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.6.1.tgz", - "integrity": "sha512-pvmMmfGn+zm4e4RwVw63mg9sIaqKqmVsFbImQoUrCO/43UmWzoSHWNXKdgEGigOezWrkZfFucaeZcSbp149OWg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", + "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", "dev": true, "requires": { "@oclif/config": "^1.15.1", - "@oclif/errors": "^1.2.2", + "@oclif/errors": "^1.3.3", "@oclif/parser": "^3.8.3", "@oclif/plugin-help": "^3", "debug": "^4.1.1", - "semver": "^5.6.0" + "semver": "^7.3.2" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { - "ms": "2.1.2" + "lru-cache": "^6.0.0" } - }, - "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 } } }, "@oclif/config": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.15.1.tgz", - "integrity": "sha512-GdyHpEZuWlfU8GSaZoiywtfVBsPcfYn1KuSLT1JTfvZGpPG6vShcGr24YZ3HG2jXUFlIuAqDcYlTzOrqOdTPNQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", + "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", "dev": true, "requires": { - "@oclif/errors": "^1.0.0", + "@oclif/errors": "^1.3.3", "@oclif/parser": "^3.8.0", "debug": "^4.1.1", - "tslib": "^1.9.3" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - } + "globby": "^11.0.1", + "is-wsl": "^2.1.1", + "tslib": "^2.0.0" } }, "@oclif/errors": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.4.tgz", - "integrity": "sha512-pJKXyEqwdfRTUdM8n5FIHiQQHg5ETM0Wlso8bF9GodczO40mF5Z3HufnYWJE7z8sGKxOeJCdbAVZbS8Y+d5GCw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.6.tgz", + "integrity": "sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ==", "dev": true, "requires": { "clean-stack": "^3.0.0", "fs-extra": "^8.1", "indent-string": "^4.0.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" }, "dependencies": { @@ -689,6 +17801,65 @@ "jsonfile": "^4.0.0", "universalify": "^0.1.0" } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@oclif/help": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oclif/help/-/help-1.0.4.tgz", + "integrity": "sha512-w3xsdZj1af/dFN7oCmvAHbHRj6L0SOO5uGXEve0LLroAJSM3DeEpzgNMjxS5RTV2gVC4RmJ/rTqmp0SRaXGiTA==", + "dev": true, + "requires": { + "@oclif/config": "1.18.6", + "@oclif/errors": "1.3.6", + "chalk": "^4.1.2", + "indent-string": "^4.0.0", + "lodash": "^4.17.21", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "@oclif/config": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.6.tgz", + "integrity": "sha512-OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA==", + "dev": true, + "requires": { + "@oclif/errors": "^1.3.6", + "@oclif/parser": "^3.8.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-wsl": "^2.1.1", + "tslib": "^2.3.1" + } } } }, @@ -699,81 +17870,74 @@ "dev": true }, "@oclif/parser": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", - "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.9.tgz", + "integrity": "sha512-1j/kThdse7yHQz6+c3v8RA1I3gD6+SGt2O7IAb/MAMoxqyBrFQDabQHH2UU4eVFGMLN7U91AiYJp11zJ9LcQAg==", "dev": true, "requires": { - "@oclif/errors": "^1.2.2", + "@oclif/errors": "^1.3.6", "@oclif/linewrap": "^1.0.0", - "chalk": "^2.4.2", - "tslib": "^1.9.3" + "chalk": "^4.1.0", + "tslib": "^2.4.1" } }, "@oclif/plugin-autocomplete": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.2.0.tgz", - "integrity": "sha512-pHbaE2PH7d9lHjCgFrrQ+ZIwvY+7OAQaGoaANqDbicBNDK/Rszt4N4oGj22dJT7sCQ8a/3Eh942rjxYIq9Mi9Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.3.0.tgz", + "integrity": "sha512-gCuIUCswvoU1BxDDvHSUGxW8rFagiacle8jHqE49+WnuniXD/N8NmJvnzmlNyc8qLE192CnKK+qYyAF+vaFQBg==", "dev": true, "requires": { "@oclif/command": "^1.5.13", "@oclif/config": "^1.13.0", - "chalk": "^2.4.1", + "chalk": "^4.1.0", "cli-ux": "^5.2.1", "debug": "^4.0.0", - "fs-extra": "^7.0.0", + "fs-extra": "^9.0.1", "moment": "^2.22.1" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true } } }, "@oclif/plugin-help": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.0.0.tgz", - "integrity": "sha512-mrV1O1VXy+ssW0kmIvFYkuEEPYZWKpyqydyHbKa316esAHatsZlrw6cRItf3TuKHTAqeGuXPctPV4mO2e21F9w==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.2.tgz", + "integrity": "sha512-SPZ8U8PBYK0n4srFjCLedk0jWU4QlxgEYLCXIBShJgOwPhTTQknkUlsEwaMIevvCU4iCQZhfMX+D8Pz5GZjFgA==", "dev": true, "requires": { "@oclif/command": "^1.5.20", "@oclif/config": "^1.15.1", - "chalk": "^2.4.1", + "@oclif/errors": "^1.2.2", + "chalk": "^4.1.0", "indent-string": "^4.0.0", "lodash.template": "^4.4.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0", - "widest-line": "^2.0.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", "wrap-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true }, "ansi-styles": { @@ -794,44 +17958,18 @@ "color-name": "1.1.3" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, "wrap-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", @@ -843,12 +17981,6 @@ "strip-ansi": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -862,7 +17994,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -892,9 +18024,9 @@ "dev": true }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "ansi-styles": { @@ -906,6 +18038,17 @@ "color-convert": "^1.9.0" } }, + "chalk": { + "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": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -953,13 +18096,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "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 }, "extract-stack": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-1.0.0.tgz", - "integrity": "sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo=", + "integrity": "sha512-M5Ge0JIrn12EtIVpje2G+hI5X78hmX4UDzynZ7Vnp1MiPSqleEonmgr2Rh59eygEEgq3YJ1GDP96rnM8tnVg/Q==", "dev": true }, "fs-extra": { @@ -973,16 +18122,37 @@ "universalify": "^0.1.0" } }, + "has-flag": { + "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 + }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", "dev": true }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "strip-ansi": { @@ -1016,10 +18186,22 @@ "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", "dev": true } } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true } } }, @@ -1029,12 +18211,170 @@ "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==", "dev": true }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "requires": { + "@octokit/types": "^6.40.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "requires": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true }, + "@sinonjs/commons": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -1044,49 +18384,201 @@ "defer-to-connect": "^1.0.1" } }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, "requires": { - "@types/minimatch": "*", "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "@types/node": { - "version": "8.10.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz", - "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==" + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "devOptional": true }, "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "@types/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/vinyl": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.7.tgz", + "integrity": "sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==", "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@zapier/secret-scrubber": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@zapier/secret-scrubber/-/secret-scrubber-1.0.7.tgz", + "integrity": "sha512-NfqHsMLhjebSsIXOpn6oumkbj0fdViLPNxaQDicj0RTTUEc6LjCzCIj31imI/gVtXcd5oI1fmDJ/M9SQosuH0w==", + "requires": { + "lodash.isplainobject": "^4.0.6" } }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", @@ -1096,6 +18588,14 @@ "acorn": "^7.0.0", "acorn-walk": "^7.0.0", "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } } }, "acorn-walk": { @@ -1105,60 +18605,70 @@ "dev": true }, "adm-zip": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.5.tgz", + "integrity": "sha512-IWwXKnCbirdbyXSfUDvCCrmYrOHANRZcc8NcRrvTlIApdl7PwE9oGcsYvNeJPAVY1M+70b4PxXGKIf8AEuiQ6w==", "dev": true }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { - "string-width": "^3.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, "ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -1169,18 +18679,18 @@ } }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -1195,44 +18705,44 @@ "ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", "dev": true }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, "archiver": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-4.0.1.tgz", - "integrity": "sha512-/YV1pU4Nhpf/rJArM23W6GTUjT0l++VbjykrCRua1TSXrn+yM8Qs7XvtwSiRse0iCe49EPNf7ktXnPsWuSb91Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "async": "^2.6.3", + "async": "^3.2.0", "buffer-crc32": "^0.2.1", - "glob": "^7.1.6", "readable-stream": "^3.6.0", - "tar-stream": "^2.1.2", - "zip-stream": "^3.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - } + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" } }, "archiver-utils": { @@ -1253,20 +18763,48 @@ "readable-stream": "^2.0.0" }, "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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, "requires": { - "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" + "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" } }, + "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 + }, + "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" + } + } + } + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -1281,6 +18819,21 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, @@ -1296,7 +18849,7 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true }, "arr-flatten": { @@ -1308,7 +18861,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-differ": { @@ -1323,16 +18876,10 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, "arrify": { @@ -1341,6 +18888,21 @@ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -1374,13 +18936,13 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", "dev": true }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "requires": { "inherits": "2.0.1" @@ -1388,31 +18950,37 @@ } } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, "ast-types": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", - "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", "dev": true, "requires": { - "lodash": "^4.17.14" + "tslib": "^2.0.1" } }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "at-least-node": { "version": "1.0.0", @@ -1426,34 +18994,163 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "dev": true, + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true + "dev": true, + "requires": {} }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", "dev": true, "requires": { - "object.assign": "^4.1.0" + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" } }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base": { @@ -1474,40 +19171,11 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -1517,10 +19185,39 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, - "binaryextensions": { + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "bin-links": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", + "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "dev": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binaryextensions": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz", + "integrity": "sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw==", "dev": true }, "bl": { @@ -1534,79 +19231,66 @@ "readable-stream": "^3.4.0" }, "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } } } }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.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==", + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "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" - } - }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "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 }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "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, "requires": { - "string-width": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -1622,44 +19306,18 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } + "fill-range": "^7.0.1" } }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, "browser-pack": { @@ -1668,9 +19326,9 @@ "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", "dev": true, "requires": { - "JSONStream": "^1.0.3", "combine-source-map": "~0.8.0", "defined": "^1.0.0", + "JSONStream": "^1.0.3", "safe-buffer": "^5.1.1", "through2": "^2.0.0", "umd": "^3.0.0" @@ -1691,6 +19349,21 @@ "util-deprecate": "~1.0.1" } }, + "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 + }, + "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" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -1703,39 +19376,30 @@ } } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } + "resolve": "^1.17.0" } }, - "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 - }, "browserify": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.1.tgz", - "integrity": "sha512-EQX0h59Pp+0GtSRb5rL6OTfrttlzv+uyaUVlK6GX3w11SQ0jKPKyjC/54RhPR2ib2KmfcELM06e8FxcI5XNU2A==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", "dev": true, "requires": { - "JSONStream": "^1.0.3", "assert": "^1.4.0", "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", + "browser-resolve": "^2.0.0", "browserify-zlib": "~0.2.0", "buffer": "~5.2.1", "cached-path-relative": "^1.0.0", @@ -1744,31 +19408,32 @@ "constants-browserify": "~1.0.0", "crypto-browserify": "^3.0.0", "defined": "^1.0.0", - "deps-sort": "^2.0.0", + "deps-sort": "^2.0.1", "domain-browser": "^1.2.0", "duplexer2": "~0.1.2", - "events": "^2.0.0", + "events": "^3.0.0", "glob": "^7.1.0", "has": "^1.0.0", "htmlescape": "^1.1.0", "https-browserify": "^1.0.0", "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", "labeled-stream-splicer": "^2.0.0", "mkdirp-classic": "^0.5.2", - "module-deps": "^6.0.0", + "module-deps": "^6.2.3", "os-browserify": "~0.3.0", "parents": "^1.0.1", - "path-browserify": "~0.0.0", + "path-browserify": "^1.0.0", "process": "~0.11.0", "punycode": "^1.3.2", "querystring-es3": "~0.2.0", "read-only-stream": "^2.0.0", "readable-stream": "^2.0.2", "resolve": "^1.1.4", - "shasum": "^1.0.0", + "shasum-object": "^1.0.0", "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", + "stream-browserify": "^3.0.0", "stream-http": "^3.0.0", "string_decoder": "^1.1.1", "subarg": "^1.0.0", @@ -1777,20 +19442,16 @@ "timers-browserify": "^1.0.1", "tty-browserify": "0.0.1", "url": "~0.11.0", - "util": "~0.10.1", + "util": "~0.12.0", "vm-browserify": "^1.0.0", "xtend": "^4.0.0" }, "dependencies": { - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "readable-stream": { "version": "2.3.7", @@ -1807,6 +19468,21 @@ "util-deprecate": "~1.0.1" } }, + "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 + }, + "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" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -1881,20 +19557,6 @@ "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "browserify-zlib": { @@ -1907,52 +19569,92 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" } }, "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "dev": true, "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "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 }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1985,15 +19687,6 @@ "responselike": "^1.0.2" }, "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -2003,9 +19696,9 @@ } }, "cached-path-relative": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", - "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", "dev": true }, "call-bind": { @@ -2018,10 +19711,10 @@ "get-intrinsic": "^1.0.2" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -2031,62 +19724,44 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } }, "cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dev": true, "requires": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" } }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "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": "^1.9.0" - } - }, - "color-convert": { - "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.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "char-regex": { @@ -2101,6 +19776,12 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -2117,6 +19798,12 @@ "safe-buffer": "^5.0.1" } }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -2132,11 +19819,68 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -2173,25 +19917,24 @@ } }, "cli-progress": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.0.tgz", - "integrity": "sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.11.2.tgz", + "integrity": "sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==", "dev": true, "requires": { - "colors": "^1.1.2", - "string-width": "^4.2.0" + "string-width": "^4.2.3" } }, "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, "cli-table": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", - "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dev": true, "requires": { "colors": "1.0.3" @@ -2200,7 +19943,7 @@ "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true } } @@ -2217,15 +19960,15 @@ } }, "cli-ux": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.5.1.tgz", - "integrity": "sha512-t3DT1U1C3rArLGYLpKa3m9dr/8uKZRI8HRm/rXKL7UTjm4c+Yd9zHNWg1tP8uaJkUbhmvx5SQHwb3VWpPUVdHQ==", + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.6.7.tgz", + "integrity": "sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g==", "dev": true, "requires": { - "@oclif/command": "^1.6.0", - "@oclif/errors": "^1.2.1", + "@oclif/command": "^1.8.15", + "@oclif/errors": "^1.3.5", "@oclif/linewrap": "^1.0.0", - "@oclif/screen": "^1.0.3", + "@oclif/screen": "^1.0.4", "ansi-escapes": "^4.3.0", "ansi-styles": "^4.2.0", "cardinal": "^2.1.1", @@ -2238,26 +19981,44 @@ "indent-string": "^4.0.0", "is-wsl": "^2.2.0", "js-yaml": "^3.13.1", - "lodash": "^4.17.11", + "lodash": "^4.17.21", "natural-orderby": "^2.0.1", "object-treeify": "^1.1.4", "password-prompt": "^1.1.2", "semver": "^7.3.2", "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "supports-color": "^7.1.0", + "supports-color": "^8.1.0", "supports-hyperlinks": "^2.1.0", "tslib": "^2.0.0" }, "dependencies": { - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "@oclif/command": { + "version": "1.8.20", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.20.tgz", + "integrity": "sha512-BHM9byujY0kf0PiRorIyp99K50cA3i6Hyro0+TPpFFx+4QM+PyQ5vMHO/TG5wkEP8tIivNRs24bF8QVyJru25g==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@oclif/config": "^1.18.2", + "@oclif/errors": "^1.3.6", + "@oclif/help": "^1.0.1", + "@oclif/parser": "^3.8.9", + "debug": "^4.1.1", + "semver": "^7.3.8" + } + }, + "@oclif/config": { + "version": "1.18.6", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.6.tgz", + "integrity": "sha512-OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA==", + "dev": true, + "requires": { + "@oclif/errors": "^1.3.6", + "@oclif/parser": "^3.8.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-wsl": "^2.1.1", + "tslib": "^2.3.1" } }, "fs-extra": { @@ -2271,54 +20032,68 @@ "universalify": "^0.1.0" } }, - "has-flag": { + "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } }, "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" } }, "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==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" } }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true } } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", "dev": true }, "clone-deep": { @@ -2333,9 +20108,9 @@ } }, "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -2344,7 +20119,7 @@ "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", "dev": true }, "cloneable-readable": { @@ -2372,13 +20147,55 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, + "cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -2400,12 +20217,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -2415,13 +20226,27 @@ "combine-source-map": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", "dev": true, "requires": { "convert-source-map": "~1.1.0", "inline-source-map": "~0.6.0", "lodash.memoize": "~3.0.3", "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } } }, "combined-stream": { @@ -2433,15 +20258,21 @@ } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true + }, + "common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { @@ -2451,38 +20282,21 @@ "dev": true }, "compress-commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz", - "integrity": "sha512-FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", "dev": true, "requires": { "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", + "crc32-stream": "^4.0.2", "normalize-path": "^3.0.0", - "readable-stream": "^2.3.7" - }, - "dependencies": { - "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, - "requires": { - "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" - } - } + "readable-stream": "^3.6.0" } }, "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": { @@ -2511,6 +20325,21 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, @@ -2526,35 +20355,6 @@ "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } } }, "console-browserify": { @@ -2563,10 +20363,16 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true }, "content-disposition": { @@ -2575,42 +20381,56 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" + }, + "dependencies": { + "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==" + } } }, "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "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 }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "peer": true, + "requires": { + "browserslist": "^4.21.4" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - } - }, "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "requires": { - "crc": "^3.4.4", + "crc-32": "^1.2.0", "readable-stream": "^3.4.0" } }, @@ -2632,15 +20452,6 @@ } } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -2669,16 +20480,14 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-browserify": { @@ -2706,10 +20515,33 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, "dargs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-6.1.0.tgz", - "integrity": "sha512-5dVBvpBLBnPwSsYXqfybFyehMmC/EenKEcf23AhCTgTf48JFBbmJKqoZBsERDnjL0FyiVTYWdFsRfTLHxLyKdQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, "dash-ast": { @@ -2718,31 +20550,69 @@ "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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.0.0" + "ms": "2.1.2" } }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decimal.js": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "dev": true }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "requires": { "mimic-response": "^1.0.0" @@ -2754,10 +20624,22 @@ "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", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -2769,15 +20651,6 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "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==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -2786,49 +20659,36 @@ "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } } }, "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", "dev": true }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, "deps-sort": { "version": "2.0.1", @@ -2857,6 +20717,21 @@ "util-deprecate": "~1.0.1" } }, + "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 + }, + "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" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -2879,29 +20754,43 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "dev": true, "requires": { - "acorn-node": "^1.6.1", + "acorn-node": "^1.8.2", "defined": "^1.0.0", - "minimist": "^1.1.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "minimist": "^1.2.6" + } + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" } }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, "diffie-hellman": { @@ -2924,21 +20813,12 @@ } }, "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - } + "path-type": "^4.0.0" } }, "domain-browser": { @@ -2947,6 +20827,23 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, "dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -2957,25 +20854,14 @@ } }, "dotenv": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz", - "integrity": "sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA==" - }, - "download-stats": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/download-stats/-/download-stats-0.3.4.tgz", - "integrity": "sha512-ic2BigbyUWx7/CBbsfGjf71zUNZB4edBGC3oRliSzsoNmvyVx3Ycfp1w3vp2Y78Ee0eIIkjIEO5KzW0zThDGaA==", - "dev": true, - "requires": { - "JSONStream": "^1.2.1", - "lazy-cache": "^2.0.1", - "moment": "^2.15.1" - } + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==" }, "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" @@ -2995,43 +20881,53 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, - "editions": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz", - "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { - "errlop": "^2.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } }, "electron-to-chromium": { - "version": "1.3.698", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz", - "integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "elliptic": { @@ -3054,21 +20950,41 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true } } }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, "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 }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "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==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3078,20 +20994,23 @@ "once": "^1.4.0" } }, - "errlop": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz", - "integrity": "sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==", + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, "error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/error/-/error-10.4.0.tgz", + "integrity": "sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -3115,21 +21034,52 @@ "dev": true }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, "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 }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "evp_bytestokey": { @@ -3142,79 +21092,39 @@ "safe-buffer": "^5.1.1" } }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "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 - }, - "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, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "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 - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "requires": { "debug": "^2.3.3", @@ -3238,7 +21148,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -3247,24 +21157,107 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -3312,7 +21305,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -3321,45 +21314,16 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true } } @@ -3370,43 +21334,67 @@ "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==", "dev": true }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "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 + }, "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "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": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, + "fast-json-stable-stringify": { + "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 + }, "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 }, "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "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==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -3414,37 +21402,54 @@ "dev": true, "requires": { "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "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 + } } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "minimatch": "^5.0.1" }, "dependencies": { - "extend-shallow": { + "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "balanced-match": "^1.0.0" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } } } }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -3454,21 +21459,99 @@ "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "dev": true, + "requires": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" } }, "first-chunk-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "integrity": "sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -3488,41 +21571,70 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, "flow-parser": { - "version": "0.147.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.147.0.tgz", - "integrity": "sha512-z+b/pgp2QLvsWJkzhKXU8yC5TmaNyXGRmHac3x0Swmn9uQESRXhNIJq9TPHKPPeWgFym33OLO+5BlIdy/tXRCQ==", + "version": "0.193.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.193.0.tgz", + "integrity": "sha512-x7ZoArE1UO3Nk2rkq/KK/Tkp714QDMVzEsxIyK2+p7Alx+88LY7KgqmeQZuiAG8TCHucmYuHefbk3KsVFVjouA==", "dev": true }, "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", - "dev": true + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "form-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz", - "integrity": "sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -3535,55 +21647,105 @@ "dev": true }, "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dev": true, "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "universalify": "^2.0.0" }, "dependencies": { - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } + "ansi-regex": "^2.0.0" } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3596,21 +21758,33 @@ "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", "dev": true }, + "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 + }, "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-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -3619,113 +21793,57 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, - "gh-got": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-5.0.0.tgz", - "integrity": "sha1-7pW+NxBv2HSKlvjR20uuqJ4b+oo=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { - "got": "^6.2.0", - "is-plain-obj": "^1.1.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - } + "assert-plus": "^1.0.0" } }, "github-username": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/github-username/-/github-username-3.0.0.tgz", - "integrity": "sha1-CnciGbMTB0NCnyRW0L3T21Xc57E=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-6.0.0.tgz", + "integrity": "sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==", "dev": true, "requires": { - "gh-got": "^5.0.0" + "@octokit/rest": "^18.0.6" } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "requires": { - "ini": "1.3.7" + "ini": "2.0.0" } }, "globals": { @@ -3735,43 +21853,36 @@ "dev": true }, "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true } } }, + "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" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -3789,38 +21900,48 @@ "p-cancelable": "^1.0.0", "to-readable-stream": "^1.0.0", "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "grouped-queue": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-1.1.0.tgz", - "integrity": "sha512-rZOFKfCqLhsu5VqjBjEWiwrYqJR07KxIkH4mLZlNlGDfntbb4FbMyGFP14TlvRPrU9S3Hnn/sgxbC5ZeN0no3Q==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-2.0.0.tgz", + "integrity": "sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==", "dev": true }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true, + "optional": true + }, "gulp-filter": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-6.0.0.tgz", - "integrity": "sha512-veQFW93kf6jBdWdF/RxMEIlDK2mkjHyPftM381DID2C9ImTVngwYpyyThxm4/EpgcNOT37BLefzMOjEKbyYg0Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", + "integrity": "sha512-ZGWtJo0j1mHfP77tVuhyqem4MRA5NfNRjoVe6VAkLGeQQ/QGo2VsFwp7zfPTGDsd1rwzBmoDHhxpE6f5B3Zuaw==", "dev": true, "requires": { - "multimatch": "^4.0.0", + "multimatch": "^5.0.0", "plugin-error": "^1.0.1", - "streamfilter": "^3.0.0" + "streamfilter": "^3.0.0", + "to-absolute-glob": "^2.0.2" } }, "gulp-prettier": { @@ -3832,6 +21953,34 @@ "plugin-error": "^1.0.1", "prettier": "^2.0.0", "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" } }, "has": { @@ -3844,21 +21993,36 @@ } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "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": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "requires": { "get-value": "^2.0.6", @@ -3869,17 +22033,37 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -3902,20 +22086,6 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "hash.js": { @@ -3928,16 +22098,10 @@ "minimalistic-assert": "^1.0.1" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "requires": { "hash.js": "^1.0.3", @@ -3946,15 +22110,30 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "htmlescape": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", "dev": true }, "http-cache-semantics": { @@ -3963,18 +22142,59 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, "hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -3997,21 +22217,40 @@ "dev": true }, "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, "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": { @@ -4020,10 +22259,16 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "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", @@ -4031,72 +22276,53 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, "inline-source-map": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", "dev": true, "requires": { "source-map": "~0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } } }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.0.0.tgz", + "integrity": "sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.6", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.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 - }, - "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" - } - } } }, "insert-module-globals": { @@ -4105,11 +22331,11 @@ "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", "dev": true, "requires": { - "JSONStream": "^1.0.3", "acorn-node": "^1.5.2", "combine-source-map": "^0.8.0", "concat-stream": "^1.6.1", "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", "path-is-absolute": "^1.0.1", "process": "~0.11.0", "through2": "^2.0.0", @@ -4132,6 +22358,21 @@ "util-deprecate": "~1.0.1" } }, + "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 + }, + "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" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -4150,30 +22391,45 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-buffer": { @@ -4182,6 +22438,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "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-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -4192,57 +22454,38 @@ } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "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" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extendable": { @@ -4257,7 +22500,7 @@ "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": { @@ -4266,23 +22509,38 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "is-interactive": { @@ -4291,31 +22549,29 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true + }, "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-obj": { "version": "2.0.0", @@ -4329,12 +22585,6 @@ "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=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4344,43 +22594,74 @@ "isobject": "^3.0.1" } }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } }, "is-scoped": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", - "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz", + "integrity": "sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==", "dev": true, "requires": { - "scoped-regex": "^1.0.0" + "scoped-regex": "^2.0.0" } }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "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 }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, "is-windows": { @@ -4407,36 +22688,538 @@ "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 }, "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "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" + } + } + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } }, - "istextorbinary": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.6.0.tgz", - "integrity": "sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==", + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { - "binaryextensions": "^2.1.2", - "editions": "^2.2.0", - "textextensions": "^2.5.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" } }, "js-tokens": { @@ -4455,31 +23238,207 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "jscodeshift": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.9.0.tgz", - "integrity": "sha512-SUeXq8dJzj5LR8uy71axgG3bmiHoC0IdHy7n89SqKzkzBWpAds5F9IIGE+lqUSZX9J0ZfEzN8fXWIqQV0dIp2w==", - "dev": true, - "requires": { - "@babel/core": "^7.1.6", - "@babel/parser": "^7.1.6", - "@babel/plugin-proposal-class-properties": "^7.1.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.1.0", - "@babel/plugin-proposal-optional-chaining": "^7.1.0", - "@babel/plugin-transform-modules-commonjs": "^7.1.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-typescript": "^7.1.0", - "@babel/register": "^7.0.0", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.12.0.tgz", + "integrity": "sha512-LEgr+wklbtEQD6SptyVYox+YZ7v+4NQeWHgqASedxl2LxQ+/kSQs6Nhs/GX+ymVOu84Hsz9/C2hQfDY89dKZ6A==", + "dev": true, + "requires": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", "babel-core": "^7.0.0-bridge.0", "colors": "^1.1.2", "flow-parser": "0.*", - "graceful-fs": "^4.1.11", + "graceful-fs": "^4.2.4", "micromatch": "^3.1.10", "neo-async": "^2.5.0", "node-dir": "^0.1.17", - "recast": "^0.18.1", + "recast": "^0.20.4", "temp": "^0.8.1", "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "jsesc": { @@ -4491,7 +23450,7 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "dev": true }, "json-parse-even-better-errors": { @@ -4500,51 +23459,58 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "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 + }, + "json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "minimist": "^1.2.5" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true } } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "jsonschema": { @@ -4552,6 +23518,40 @@ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz", "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==" }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "just-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", + "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", + "dev": true + }, + "just-diff-apply": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", + "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", + "dev": true + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -4576,6 +23576,12 @@ "graceful-fs": "^4.1.9" } }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -4595,19 +23601,10 @@ "package-json": "^6.3.0" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "^0.1.0" - } - }, "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "requires": { "readable-stream": "^2.0.5" @@ -4627,64 +23624,126 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "load-yaml-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "peer": true + }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", "dev": true }, "lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", "dev": true }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, "lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", "dev": true }, "lodash.template": { @@ -4706,25 +23765,20 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true - }, "lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "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, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "lowercase-keys": { @@ -4737,81 +23791,86 @@ "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, "requires": { "yallist": "^4.0.0" } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" } }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" } }, "marked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", - "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", - "dev": true - }, - "marked-terminal": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.0.tgz", - "integrity": "sha512-5KllfAOW02WS6hLRQ7cNvGOxvKW1BKuXELH4EtbWfyWgxQhROoMxEvuQ/3fTgkNjledR0J48F4HbapvYp1zWkQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", "dev": true, - "requires": { - "ansi-escapes": "^4.3.1", - "cardinal": "^2.1.1", - "chalk": "^4.0.0", - "cli-table": "^0.3.1", - "node-emoji": "^1.10.0", - "supports-hyperlinks": "^2.1.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.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 - }, - "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" - } - } + "peer": true + }, + "marked-terminal": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.1.tgz", + "integrity": "sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.1", + "cardinal": "^2.1.1", + "chalk": "^4.1.0", + "cli-table": "^0.3.1", + "node-emoji": "^1.10.0", + "supports-hyperlinks": "^2.1.0" } }, "md5.js": { @@ -4826,95 +23885,41 @@ } }, "mem-fs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.2.0.tgz", - "integrity": "sha512-b8g0jWKdl8pM0LqAPdK9i8ERL7nYrzmJfRhxMiWH2uYdfYnb7uXnmwVb0ZGe7xyEl4lj+nLIU3yf4zPUT+XsVQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-2.2.1.tgz", + "integrity": "sha512-yiAivd4xFOH/WXlUi6v/nKopBh1QLzwjFi36NK88cGt/PRXI8WeBASqY+YSjIVWvQTx3hR8zHKDBMV6hWmglNA==", "dev": true, "requires": { - "through2": "^3.0.0", + "@types/node": "^15.6.1", + "@types/vinyl": "^2.0.4", "vinyl": "^2.0.1", "vinyl-file": "^3.0.0" + }, + "dependencies": { + "@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==", + "dev": true + } } }, "mem-fs-editor": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-6.0.0.tgz", - "integrity": "sha512-e0WfJAMm8Gv1mP5fEq/Blzy6Lt1VbLg7gNnZmZak7nhrBTibs+c6nQ4SKs/ZyJYHS1mFgDJeopsLAv7Ow0FMFg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.5.0.tgz", + "integrity": "sha512-7p+bBDqsSisO20YIZf2ntYvST27fFJINn7CKE21XdPUQDcLV62b/yB5sTOooQeEoiZ3rldZQ+4RfONgL/gbRoA==", "dev": true, "requires": { + "binaryextensions": "^4.16.0", "commondir": "^1.0.1", "deep-extend": "^0.6.0", - "ejs": "^2.6.1", - "glob": "^7.1.4", - "globby": "^9.2.0", - "isbinaryfile": "^4.0.0", - "mkdirp": "^0.5.0", - "multimatch": "^4.0.0", - "rimraf": "^2.6.3", - "through2": "^3.0.1", - "vinyl": "^2.2.0" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "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 - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "ejs": "^3.1.8", + "globby": "^11.1.0", + "isbinaryfile": "^4.0.8", + "minimatch": "^3.1.2", + "multimatch": "^5.0.0", + "normalize-path": "^3.0.0", + "textextensions": "^5.13.0" } }, "merge-stream": { @@ -4930,24 +23935,13 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "miller-rabin": { @@ -4968,17 +23962,22 @@ } } }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.43.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -5002,24 +24001,101 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "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": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -5031,13 +24107,10 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "mkdirp-classic": { "version": "0.5.3", @@ -5045,23 +24118,15 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" } }, "module-deps": { @@ -5070,7 +24135,6 @@ "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", "dev": true, "requires": { - "JSONStream": "^1.0.3", "browser-resolve": "^2.0.0", "cached-path-relative": "^1.0.2", "concat-stream": "~1.6.0", @@ -5078,6 +24142,7 @@ "detective": "^5.2.0", "duplexer2": "^0.1.2", "inherits": "^2.0.1", + "JSONStream": "^1.0.3", "parents": "^1.0.0", "readable-stream": "^2.0.2", "resolve": "^1.4.0", @@ -5087,15 +24152,6 @@ "xtend": "^4.0.0" }, "dependencies": { - "browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "requires": { - "resolve": "^1.17.0" - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -5111,6 +24167,21 @@ "util-deprecate": "~1.0.1" } }, + "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 + }, + "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" + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -5124,21 +24195,21 @@ } }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, "requires": { "@types/minimatch": "^3.0.3", @@ -5173,12 +24244,24 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "natural-orderby": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", "dev": true }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -5191,41 +24274,142 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-abort-controller": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", + "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" + }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", "dev": true, "requires": { "minimatch": "^3.0.2" } }, "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "requires": { - "lodash.toarray": "^4.4.0" + "lodash": "^4.17.21" } }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "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" + } + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + } + } + }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5236,6 +24420,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -5245,23 +24437,124 @@ "dev": true }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, - "npm-api": { + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "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" + } + } + } + }, + "npm-normalize-package-bin": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-api/-/npm-api-1.0.1.tgz", - "integrity": "sha512-4sITrrzEbPcr0aNV28QyOmgn6C9yKiF8k92jn4buYAK8wmA5xo1qL3II5/gT1r7wxbXBflSduZ2K3FbtOrtGkA==", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "requires": { - "JSONStream": "^1.3.5", - "clone-deep": "^4.0.1", - "download-stats": "^0.3.4", - "moment": "^2.24.0", - "node-fetch": "^2.6.0", - "paged-request": "^2.0.1" + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver": { + "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" + } + } + } + }, + "npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + }, + "dependencies": { + "semver": { + "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" + } + } + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" } }, "npm-run-path": { @@ -5271,16 +24564,32 @@ "dev": true, "requires": { "path-key": "^3.0.0" - }, - "dependencies": { - "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 - } } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -5289,13 +24598,13 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -5306,16 +24615,53 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -5323,12 +24669,6 @@ } } }, - "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 - }, "object-treeify": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", @@ -5338,28 +24678,16 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" } }, - "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, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -5368,7 +24696,7 @@ "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" @@ -5383,59 +24711,47 @@ "mimic-fn": "^2.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "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" + } + }, "ora": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", - "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", + "integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==", "dev": true, "requires": { - "chalk": "^3.0.0", + "bl": "^4.1.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", + "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.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 - }, - "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" - } - } } }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "p-cancelable": { @@ -5444,10 +24760,16 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-limit": { @@ -5460,12 +24782,40 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" } }, "p-try": { @@ -5484,23 +24834,33 @@ "registry-auth-token": "^4.0.0", "registry-url": "^5.0.0", "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, - "paged-request": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-2.0.2.tgz", - "integrity": "sha512-NWrGqneZImDdcMU/7vMcAOo1bIi5h/pmpJqe7/jdsy85BA/s5MSaU/KlpxwW/IVPmIwBcq2uKPrBWWhEWhtxag==", - "dev": true, - "requires": { - "axios": "^0.21.1" + "pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" } }, "pako": { @@ -5512,7 +24872,7 @@ "parents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", "dev": true, "requires": { "path-platform": "~0.11.15" @@ -5531,14 +24891,36 @@ "safe-buffer": "^5.1.1" } }, + "parse-conflict-json": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", + "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, "parse-gitignore": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.4.0.tgz", - "integrity": "sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=", + "integrity": "sha512-D7ihy03eLEIDWOY1YHY3w6I/l00M+3V5HBytBId9OcdVY9w3thE0uAPtRftdIpKrSsinYNb+/DpEFZygdB+J2g==", "dev": true, "requires": { "array-unique": "^0.3.2", "is-glob": "^3.1.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "parse-json": { @@ -5553,10 +24935,16 @@ "lines-and-columns": "^1.1.6" } }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "password-prompt": { @@ -5574,72 +24962,104 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "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": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "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 }, "path-platform": { "version": "0.11.15", "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -5649,28 +25069,43 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "plugin-error": { @@ -5688,19 +25123,76 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "preferred-pm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz", + "integrity": "sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==", + "dev": true, + "requires": { + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "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==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true }, "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true }, "pretty-bytes": { @@ -5709,16 +25201,28 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "proc-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", + "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", "dev": true }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, "process-nextick-args": { @@ -5727,6 +25231,50 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true + }, + "promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -5760,9 +25308,9 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "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 }, "pupa": { @@ -5774,16 +25322,33 @@ "escape-goat": "^2.0.0" } }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "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 }, "randombytes": { @@ -5817,37 +25382,39 @@ "strip-json-comments": "~2.0.1" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true } } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "requires": { "mute-stream": "~0.0.4" } }, - "read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - } + "read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true }, "read-only-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -5867,9 +25434,34 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -5891,13 +25483,22 @@ } }, "read-pkg-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-5.0.0.tgz", - "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^3.0.0", - "read-pkg": "^5.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, "readable-stream": { @@ -5911,30 +25512,63 @@ "util-deprecate": "^1.0.1" } }, - "recast": { - "version": "0.18.10", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.10.tgz", - "integrity": "sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ==", + "readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", "dev": true, "requires": { - "ast-types": "0.13.3", - "esprima": "~4.0.0", - "private": "^0.1.8", - "source-map": "~0.6.1" + "minimatch": "^5.1.0" }, "dependencies": { - "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 + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } } } }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dev": true, + "requires": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -5943,12 +25577,46 @@ "redeyed": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dev": true, "requires": { "esprima": "~4.0.0" } }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "peer": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "peer": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "peer": true + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -5959,13 +25627,28 @@ "safe-regex": "^1.1.0" } }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "peer": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", "dev": true, "requires": { - "rc": "^1.2.8" + "rc": "1.2.8" } }, "registry-url": { @@ -5977,22 +25660,48 @@ "rc": "^1.2.8" } }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true, + "peer": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "replace-ext": { @@ -6001,26 +25710,116 @@ "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "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.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "resolve-from": "^5.0.0" } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "requires": { "lowercase-keys": "^1.0.0" @@ -6042,29 +25841,25 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - } } }, "ripemd160": { @@ -6077,51 +25872,320 @@ "inherits": "^2.0.1" } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "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==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "requires": { - "ret": "~0.1.10" + "xmlchars": "^2.2.0" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "scoped-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", - "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz", + "integrity": "sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==", "dev": true }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "semver-diff": { "version": "3.1.1", @@ -6130,24 +26194,13 @@ "dev": true, "requires": { "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "^0.3.0" - } + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "set-value": { "version": "2.0.1", @@ -6164,7 +26217,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -6173,7 +26226,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true } } @@ -6197,16 +26250,6 @@ "kind-of": "^6.0.2" } }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "dev": true, - "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" - } - }, "shasum-object": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", @@ -6217,30 +26260,30 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true }, "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", @@ -6248,64 +26291,17 @@ "rechoir": "^0.6.2" } }, - "should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "dev": true, - "requires": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "dev": true, - "requires": { - "should-type": "^1.4.0" - } - }, - "should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", - "dev": true - }, - "should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "should-util": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.0.tgz", - "integrity": "sha1-yYzaN0qmsZDfi6h8mInCtNtiAGM=", - "dev": true + "optional": true }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "simple-concat": { @@ -6314,10 +26310,22 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "snapdragon": { @@ -6348,7 +26356,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -6357,16 +26365,85 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -6385,40 +26462,11 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -6434,7 +26482,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -6442,10 +26490,31 @@ } } }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-resolve": { @@ -6462,21 +26531,13 @@ } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "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 - } } }, "source-map-url": { @@ -6512,9 +26573,9 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "split-string": { @@ -6529,13 +26590,48 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -6545,45 +26641,85 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "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, - "requires": { - "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" - } - } + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" } }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, "requires": { "duplexer2": "~0.1.0", @@ -6604,27 +26740,34 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, "stream-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", - "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", "readable-stream": "^3.6.0", "xtend": "^4.0.2" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } } }, "stream-splicer": { @@ -6651,6 +26794,21 @@ "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } + }, + "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 + }, + "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" + } } } }, @@ -6663,64 +26821,55 @@ "readable-stream": "^3.0.6" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-length": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", - "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" } }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "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.0" - } - }, - "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": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true }, "strip-bom-buf": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", "dev": true, "requires": { "is-utf8": "^0.2.1" @@ -6729,13 +26878,30 @@ "strip-bom-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==", "dev": true, "requires": { "first-chunk-stream": "^2.0.0", "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -6745,62 +26911,49 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true }, "subarg": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", "dev": true, "requires": { "minimist": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "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": "^3.0.0" + "has-flag": "^4.0.0" } }, "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "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" - } - } } }, + "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 + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -6810,6 +26963,20 @@ "acorn-node": "^1.2.0" } }, + "tar": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", + "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -6830,51 +26997,77 @@ "dev": true, "requires": { "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } }, "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 }, "textextensions": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz", - "integrity": "sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-5.15.0.tgz", + "integrity": "sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw==", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "readable-stream": "2 || 3" + "readable-stream": "3" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timers-browserify": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", "dev": true, "requires": { "process": "~0.11.0" @@ -6887,43 +27080,34 @@ "dev": true, "requires": { "rimraf": "^3.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" } }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -6932,7 +27116,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -6959,13 +27143,33 @@ } }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "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, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" } }, "treeify": { @@ -6974,10 +27178,16 @@ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true }, + "treeverse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", + "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", + "dev": true + }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "tty-browserify": { @@ -6986,16 +27196,46 @@ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "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 + }, "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "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 }, "typedarray-to-buffer": { @@ -7007,12 +27247,24 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true + }, "umd": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", "dev": true }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, "undeclared-identifiers": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", @@ -7026,6 +27278,38 @@ "xtend": "^4.0.1" } }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "peer": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "peer": true + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -7041,11 +27325,29 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true } } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -7055,16 +27357,22 @@ "crypto-random-string": "^2.0.0" } }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -7074,7 +27382,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "requires": { "get-value": "^2.0.3", @@ -7085,7 +27393,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "requires": { "isarray": "1.0.0" @@ -7096,81 +27404,79 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true } } }, "untildify": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", - "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } }, "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "dev": true, "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", + "boxen": "^5.0.0", + "chalk": "^4.1.0", "configstore": "^5.0.1", "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" }, "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.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 - }, - "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==", + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "lru-cache": "^6.0.0" } } } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "requires": { "punycode": "1.3.2", @@ -7180,15 +27486,24 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true } } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "requires": { "prepend-http": "^2.0.0" @@ -7201,20 +27516,48 @@ "dev": true }, "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "dev": true, "requires": { - "inherits": "2.0.3" + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "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 - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7225,6 +27568,26 @@ "spdx-expression-parse": "^3.0.0" } }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", @@ -7242,7 +27605,7 @@ "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==", "dev": true } } @@ -7250,7 +27613,7 @@ "vinyl-file": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz", - "integrity": "sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=", + "integrity": "sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -7258,14 +27621,6 @@ "strip-bom-buf": "^1.0.0", "strip-bom-stream": "^2.0.0", "vinyl": "^2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "vm-browserify": { @@ -7274,81 +27629,147 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" } }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "which-pm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", + "integrity": "sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==", "dev": true, "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" } }, - "with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, "requires": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" } }, + "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 + }, "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==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -7359,183 +27780,241 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } }, "yeoman-environment": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.10.0.tgz", - "integrity": "sha512-dn754zZm1kTWS94V5riNLNjs9Wn6Zjl+9jgbQ37EmHEhcRR30fY1sgBnhYZyTpa+zK7ipFI6dMH9Sg0SAMW3hw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.3.0.tgz", + "integrity": "sha512-2OV2hgRoLjkQrtNIfaTejinMHR5yjJ4DF/aG1Le/qnzHRAsE6gfFm9YL2Sq5FW5l16XSmt7BCMQlcDVyPTxpSg==", "dev": true, "requires": { - "chalk": "^2.4.1", - "debug": "^3.1.0", - "diff": "^3.5.0", - "escape-string-regexp": "^1.0.2", - "execa": "^4.0.0", - "globby": "^8.0.1", - "grouped-queue": "^1.1.0", - "inquirer": "^7.1.0", - "is-scoped": "^1.0.0", + "@npmcli/arborist": "^2.2.2", + "are-we-there-yet": "^1.1.5", + "arrify": "^2.0.1", + "binaryextensions": "^4.15.0", + "chalk": "^4.1.0", + "cli-table": "^0.3.1", + "commander": "7.1.0", + "dateformat": "^4.5.0", + "debug": "^4.1.1", + "diff": "^5.0.0", + "error": "^10.4.0", + "escape-string-regexp": "^4.0.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "globby": "^11.0.1", + "grouped-queue": "^2.0.0", + "inquirer": "^8.0.0", + "is-scoped": "^2.1.0", "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mem-fs": "^1.1.0", - "mem-fs-editor": "^6.0.0", - "npm-api": "^1.0.0", + "log-symbols": "^4.0.0", + "mem-fs": "^1.2.0 || ^2.0.0", + "mem-fs-editor": "^8.1.2 || ^9.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-queue": "^6.6.2", + "pacote": "^11.2.6", + "preferred-pm": "^3.0.3", + "pretty-bytes": "^5.3.0", "semver": "^7.1.3", - "strip-ansi": "^4.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0", "text-table": "^0.2.0", - "untildify": "^3.0.3", - "yeoman-generator": "^4.8.2" + "textextensions": "^5.12.0", + "untildify": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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 }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "chalk": "^2.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "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": { - "lru-cache": "^6.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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" + } + }, + "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, "requires": { - "ansi-regex": "^3.0.0" + "p-limit": "^3.0.2" + } + }, + "semver": { + "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" } } } }, "yeoman-generator": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-4.10.1.tgz", - "integrity": "sha512-QgbtHSaqBAkyJJM0heQUhT63ubCt34NBFMEBydOBUdAuy8RBvGSzeqVBSZOjdh1tSLrwWXlU3Ck6y14awinF6Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.2.0.tgz", + "integrity": "sha512-LCHaYrcgtC4NpYAkritCEteuDSjBdhsQNYrssZjnK0okRFvroMXDX4//CA1RfVsjCHKi4Df6lILOUYCRiYKG4g==", "dev": true, "requires": { - "async": "^2.6.2", - "chalk": "^2.4.2", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^6.1.0", - "dateformat": "^3.0.3", + "chalk": "^4.1.0", + "dargs": "^7.0.0", "debug": "^4.1.1", - "diff": "^4.0.1", - "error": "^7.0.2", - "find-up": "^3.0.0", - "github-username": "^3.0.0", - "grouped-queue": "^1.1.0", - "istextorbinary": "^2.5.1", + "execa": "^4.1.0", + "github-username": "^6.0.0", "lodash": "^4.17.11", - "make-dir": "^3.0.0", - "mem-fs-editor": "^6.0.0", "minimist": "^1.2.5", - "pretty-bytes": "^5.2.0", - "read-chunk": "^3.2.0", - "read-pkg-up": "^5.0.0", - "rimraf": "^2.6.3", + "read-pkg-up": "^7.0.1", "run-async": "^2.0.0", "semver": "^7.2.1", - "shelljs": "^0.8.3", - "text-table": "^0.2.0", - "through2": "^3.0.1", - "yeoman-environment": "^2.9.5" + "shelljs": "^0.8.4", + "text-table": "^0.2.0" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "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 - }, "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" @@ -7543,116 +28022,139 @@ } } }, + "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 + }, "zapier-platform-cli": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/zapier-platform-cli/-/zapier-platform-cli-10.2.0.tgz", - "integrity": "sha512-dIdcI2UbF4t6/nimNT4f7R3Shekvqe+2qrf2QUzd+LF1E/nxxlNImpPdEyTiBYbYYlG/Fsgl916LfwE5FwT8sQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-cli/-/zapier-platform-cli-12.2.0.tgz", + "integrity": "sha512-5FZ2DKY/CFkkrktB42wmkt+bo25Vl3Cb7A+WV6vl8U/HFTuW1PNsG232AQljJTqkX5cVyjySBis5acu7yvAE+g==", "dev": true, "requires": { - "@oclif/command": "1.6.1", - "@oclif/config": "1.15.1", - "@oclif/plugin-autocomplete": "0.2.0", - "@oclif/plugin-help": "3.0.0", + "@oclif/command": "1.8.0", + "@oclif/config": "1.17.0", + "@oclif/plugin-autocomplete": "0.3.0", + "@oclif/plugin-help": "3.2.2", "@oclif/plugin-not-found": "1.2.4", - "adm-zip": "0.4.14", - "archiver": "4.0.1", - "browserify": "16.5.1", + "adm-zip": "0.5.5", + "archiver": "5.3.0", + "browserify": "17.0.0", "cli-table3": "0.6.0", "colors": "1.4.0", - "debug": "4.1.1", - "fs-extra": "9.0.0", - "gulp-filter": "6.0.0", + "debug": "4.3.1", + "fs-extra": "10.0.0", + "gulp-filter": "7.0.0", "gulp-prettier": "3.0.0", - "ignore": "5.1.4", - "inquirer": "7.1.0", - "jscodeshift": "0.9.0", + "ignore": "5.1.8", + "inquirer": "8.0.0", + "jscodeshift": "0.12.0", "klaw": "3.0.0", - "lodash": "4.17.19", - "marked": "1.0.0", - "marked-terminal": "4.1.0", - "node-fetch": "2.6.1", - "ora": "4.0.4", + "lodash": "4.17.21", + "marked": "4.0.10", + "marked-terminal": "4.1.1", + "node-fetch": "2.6.7", + "ora": "5.4.0", "parse-gitignore": "0.4.0", - "prettier": "2.0.5", + "prettier": "2.3.0", "read": "1.0.7", - "semver": "7.3.2", - "string-length": "4.0.1", - "through2": "3.0.1", + "semver": "7.3.5", + "string-length": "4.0.2", + "through2": "4.0.2", "tmp": "0.2.1", - "update-notifier": "4.1.0", - "yeoman-environment": "2.10.0", - "yeoman-generator": "4.10.1" + "update-notifier": "5.1.0", + "yeoman-environment": "3.3.0", + "yeoman-generator": "5.2.0" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "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==", - "dev": true - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "marked": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", "dev": true }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, "zapier-platform-core": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/zapier-platform-core/-/zapier-platform-core-9.1.0.tgz", - "integrity": "sha512-X0TRbMVpVpzjlXyAsW6R5iQpqtGzEOfKcPe2m/zccMLY0j6T09FPrYCFpKWNlhoHRGgC50HWeUccVjccExJSSw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-core/-/zapier-platform-core-12.2.0.tgz", + "integrity": "sha512-TE6yHCr2tRcrFDbKqrt9t3X4KztbSsopdlKSs2FKjbBjHLsZgz8Z/l1oViv1WxEcvYTAQapo4hqeKostFW+sRw==", "requires": { - "@types/node": "8.10.20", - "bluebird": "3.5.5", + "@types/node": "^14.14.35", + "@zapier/secret-scrubber": "^1.0.7", + "bluebird": "3.7.2", "content-disposition": "0.5.3", - "dotenv": "8.1.0", - "form-data": "2.5.0", - "lodash": "4.17.15", - "node-fetch": "2.6.0", + "dotenv": "9.0.2", + "form-data": "4.0.0", + "lodash": "4.17.21", + "mime-types": "2.1.34", + "node-abort-controller": "3.0.1", + "node-fetch": "2.6.7", "oauth-sign": "0.9.0", - "semver": "5.6.0", - "zapier-platform-schema": "9.1.0" + "semver": "7.3.5", + "zapier-platform-schema": "12.2.0" + }, + "dependencies": { + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "zapier-platform-schema": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/zapier-platform-schema/-/zapier-platform-schema-9.1.0.tgz", - "integrity": "sha512-mfib7+8ZIgGF/Gy5gNpOYhRmVbBPXNsRivjZ2hjV6flwP6pETpcJu4Vu9X9L8i9paf8zLfBb2EdOUp5vrlN6CA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/zapier-platform-schema/-/zapier-platform-schema-12.2.0.tgz", + "integrity": "sha512-dKPG5RhD78kqJ8SL871tnVV2yTZh/lq96qz1VDAIWxiEiygW+CD5NX88Xuk4weUCZU/FXj8BLBuuUbUrwLP3eg==", "requires": { "jsonschema": "1.2.2", - "lodash": "4.17.15" + "lodash": "4.17.21" } }, "zip-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz", - "integrity": "sha512-r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "compress-commons": "^3.0.0", + "compress-commons": "^4.1.0", "readable-stream": "^3.6.0" } } diff --git a/package.json b/package.json index f83afdc..bbedac6 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,22 @@ { - "name": "kentico-kontent", - "version": "0.1.3", - "description": "An app for Kentico Kontent headless content management system.", - "repository": "https://github.com/kentico-ericd/kc-zapierapp", - "homepage": "https://kontent.ai/", - "author": "Eric Dugre ", - "license": "MIT", - "main": "index.js", + "name": "zapier-cli", + "version": "0.2.0", "scripts": { - "zapier-test": "zapier test", - "test": "mocha --recursive" - }, - "engines": { - "node": "8.10.0", - "npm": ">=5.6.0" + "test": "npm run build && jest --testTimeout 10000 --rootDir ./lib/test", + "build": "tsc", + "watch": "tsc --watch", + "buildAndPush": "npm run build && zapier push" }, "dependencies": { - "zapier-platform-core": "9.1.0" + "zapier-platform-core": "12.2.0", + "@kontent-ai/delivery-sdk": "^12.4.0", + "@kontent-ai/management-sdk": "^3.4.0" }, "devDependencies": { - "zapier-platform-cli": "^10.2.0", - "mocha": "^5.2.0", - "should": "^13.2.0" + "zapier-platform-cli": "^12.2.0", + "jest": "^26.6.3", + "@types/jest": "^26.0.23", + "@types/node": "^14", + "typescript": "^4.9.3" } } diff --git a/searches/findAsset.js b/searches/findAsset.js deleted file mode 100644 index 3234b3b..0000000 --- a/searches/findAsset.js +++ /dev/null @@ -1,72 +0,0 @@ -const assetSearchFields = require('../fields/filters/assetSearchFields'); -const assetOutputFields = require('../fields/output/assetOutputFields'); -const getAsset = require('../utils/assets/getAsset'); -const getAssetByExternalId = require('../utils/assets/getAssetByExternalId'); - -async function execute(z, bundle) { - let found; - - const searchField = bundle.inputData.searchField; - const searchPattern = bundle.inputData.searchPattern; - const searchValue = bundle.inputData.searchValue; - - switch(searchField) { - case 'id': - found = await getAsset(z, bundle, searchValue); - break; - case 'externalId': - found = await getAssetByExternalId(z, bundle, searchValue); - break; - } - - return [found]; -} - -const findAsset = { - noun: 'Asset search', - display: { - hidden: false, - important: false, - description: 'Finds an asset based on its ID or external ID', - label: 'Find Asset', - }, - key: 'find_asset', - operation: { - perform: execute, - inputFields: [ - ...assetSearchFields - ], - outputFields: [ - ...assetOutputFields - ], - sample: { - descriptions: [ - { - language: { - id: '00000000-0000-0000-0000-000000000000' - }, - description: `The asset's alt text for the default language.` - } - ], - external_id: 'custom-asset-identifier', - file_name: 'file_name.png', - file_reference: { - id: '806ec84e-7c71-4856-9519-ee3dd3558583', - type: 'internal' - }, - folder: { - id: '8fe4ff47-0ca8-449d-bc63-c280efee44ea' - }, - id: 'fcbb12e6-66a3-4672-85d9-d502d16b8d9c', - image_height: 548, - image_width: 1280, - last_modified: '2019-09-12T08:29:36.1645977Z', - size: 148636, - title: 'Makes the asset easier to find when you need it', - type: 'image/png', - url: 'https://assets-us-01.kc-usercontent.com/8d20758c-d74c-4f59-ae04-ee928c0816b7/adf26cd2-1acb-403f-9d1e-6d04e46c39f1/file_name.png' - } - }, -}; - -module.exports = findAsset; diff --git a/searches/findContentItem.js b/searches/findContentItem.js deleted file mode 100644 index f7db5a5..0000000 --- a/searches/findContentItem.js +++ /dev/null @@ -1,46 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const itemSearchFields = require('../fields/filters/itemSearchFields'); -const getElementOutputFields = require('../fields/output/getElementOutputFields'); -const standardizedSystemOutputFields = require('../fields/output/standardizedSystemOutputFields'); -const contentItemSample = require('../fields/samples/contentItemSample'); -const findContentItem = require('../utils/items/get/findContentItem'); -const getContentTypeField = require('../fields/getContentTypeField'); - -async function execute(z, bundle) { - const languageId = bundle.inputData.languageId; - const contentTypeId = bundle.inputData.contentTypeId; - - const searchField = bundle.inputData.searchField; - const searchPattern = bundle.inputData.searchPattern; - const searchValue = bundle.inputData.searchValue; - - const found = await findContentItem(z, bundle, languageId, contentTypeId, searchField, searchPattern, searchValue); - - return found; -} - -module.exports = { - noun: 'Content item search', - display: { - hidden: false, - important: true, - description: 'Finds a content item matching the provided parameters. If more items match, it returns the first found item.', - label: 'Find Content Item' - }, - key: 'find_item', - operation: { - perform: execute, - inputFields: [ - getLanguageField({ required: true }), - getContentTypeField({ required: true, altersDynamicFields: true }), - ...itemSearchFields, - ], - sample: contentItemSample, - outputFields: [ - ...standardizedSystemOutputFields, - async function (z, bundle) { - return await getElementOutputFields(z, bundle, bundle.inputData.contentTypeId); - } - ] - }, -}; diff --git a/searches/findLanguage.js b/searches/findLanguage.js deleted file mode 100644 index 12c381e..0000000 --- a/searches/findLanguage.js +++ /dev/null @@ -1,55 +0,0 @@ -const languageSearchFields = require('../fields/filters/languageSearchFields'); -const getLanguage = require('../utils/languages/getLanguage'); -const getLanguageByCodename = require('../utils/languages/getLanguageByCodename'); -const getLanguageByExternalId = require('../utils/languages/getLanguageByExternalId'); - -async function execute(z, bundle) { - const searchField = bundle.inputData.searchField; - const searchPattern = bundle.inputData.searchPattern; - const searchValue = bundle.inputData.searchValue; - - let found; - switch(searchField) { - case 'id': - found = await getLanguage(z, bundle, searchValue); - break; - case 'codename': - found = await getLanguageByCodename(z, bundle, searchValue); - break; - case 'externalId': - found = await getLanguageByExternalId(z, bundle, searchValue); - break; - } - - return [found]; -} - -const findLanguage = { - noun: 'Language search', - display: { - hidden: false, - important: false, - description: 'Finds a language based on its ID, code name, or external ID.', - label: 'Find Language', - }, - key: 'find_language', - operation: { - perform: execute, - inputFields: [ - ...languageSearchFields - ], - sample: { - id: '1c37a40c-9158-031d-9d2d-adf65a568cd6', - name: 'Czech', - codename: 'cz-CZ', - external_id: 'lang_czech', - is_active: true, - is_default: false, - fallback_language: { - id: '00000000-0000-0000-0000-000000000000' - } - }, - }, -}; - -module.exports = findLanguage; diff --git a/searches/findWorkflowStep.js b/searches/findWorkflowStep.js deleted file mode 100644 index 11830e3..0000000 --- a/searches/findWorkflowStep.js +++ /dev/null @@ -1,65 +0,0 @@ -const getWorkflowSteps = require('../utils/workflows/getWorkflowSteps'); - -async function execute(z, bundle) { - async function findWorkflowStep(stepName) { - if (!stepName) { - return []; - } - - const workflowSteps = await getWorkflowSteps(z, bundle); - const search = stepName.toLowerCase(); - - const fullMatch = workflowSteps.filter(step => step.name.toLowerCase() === search); - if (fullMatch.length) { - return fullMatch; - } - - const partialMatch = workflowSteps.filter(step => step.name.toLowerCase().indexOf(search) >= 0); - return partialMatch; - } - - const stepName = bundle.inputData.stepName; - const found = await findWorkflowStep(stepName); - - return found; -} - -const findWorkflowStep = { - noun: 'Workflow step search', - display: { - hidden: false, - important: false, - description: 'Finds a workflow step based on its name.', - label: 'Find Workflow Step', - }, - key: 'find_workflow_step', - operation: { - perform: execute, - inputFields: [ - { - label: 'Step name', - key: 'stepName', - helpText: 'Name of the workflow step, the search is case insensitive. If an exact match is not found, searches as a substring.', - type: 'string', - required: true, - } - ], - sample: { - 'transitions_to': [], - 'id': '88ac5e6e-1c5c-4638-96e1-0d61221ad5bf', - 'name': 'Draft' - }, - outputFields: [ - { - 'key': 'id', - 'label': 'Workflow step ID' - }, - { - 'key': 'name', - 'label': 'Name' - } - ] - }, -}; - -module.exports = findWorkflowStep; diff --git a/src/actions/changeContentItemWorkflow.ts b/src/actions/changeContentItemWorkflow.ts new file mode 100644 index 0000000..e0d9756 --- /dev/null +++ b/src/actions/changeContentItemWorkflow.ts @@ -0,0 +1,199 @@ +import { getVariant } from '../utils/items/get/getVariant'; +import { getContentItemField } from '../fields/getContentItemField'; +import { getWorkflowStepField } from '../fields/getWorkflowStepField'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { getWorkflowSteps } from '../utils/workflows/getWorkflowSteps'; +import { Field } from '../fields/field'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; +import { isPublishedWorkflowStep, isScheduledWorkflowStep } from '../utils/workflows/stepCheckers'; +import { OutputField } from '../fields/output/outputField'; +import { OutputFromOutputFields } from '../fields/output/outputFromOutputFields'; + +const execute = async (z: ZObject, bundle: KontentBundle): Promise => { + const createNewVersion = (itemId: string, languageId: string) => + createManagementClient(z, bundle) + .createNewVersionOfLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .toPromise(); + + const publish = (itemId: string, languageId: string) => + createManagementClient(z, bundle) + .publishLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .withoutData() + .toPromise(); + + const schedulePublishing = (itemId: string, languageId: string, publishDate: string) => + createManagementClient(z, bundle) + .publishLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .withData({ scheduled_to: publishDate }) + .toPromise(); + + const cancelScheduling = (itemId: string, languageId: string) => + createManagementClient(z, bundle) + .cancelSheduledPublishingOfLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .toPromise(); + + const changeWorkflowStep = (itemId: string, languageId: string, workflowStepId: string) => + createManagementClient(z, bundle) + .changeWorkflowStepOfLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .byWorkflowStepId(workflowStepId) + .toPromise(); + + const setWorkflowStep = async (itemId: string, languageId: string, workflowStepId: string) => { + const variant = await getVariant(z, bundle, itemId, languageId); + const workflowSteps = await getWorkflowSteps(z, bundle); + + const targetIsScheduled = isScheduledWorkflowStep(workflowStepId, workflowSteps); + + const currentStepId = variant.workflowStep.id || ''; + if ((currentStepId === workflowStepId) && !targetIsScheduled) { + // Already in that step (except for scheduled) + return { message: 'Content item is already in the requested workflow step' }; + } + + const targetIsFirst = workflowSteps[0]?.id === workflowStepId; + + if (isPublishedWorkflowStep(currentStepId, workflowSteps)) { + // Create new version first + await createNewVersion(itemId, languageId); + if (targetIsFirst) { + // New version ends up in first WF step + return { message: 'New Draft version has been created' }; + } + } + else if (isScheduledWorkflowStep(currentStepId, workflowSteps)) { + // Cancel scheduling first + await cancelScheduling(itemId, languageId); + if (targetIsFirst) { + // Cancelled scheduling ends up in first WF step + return { message: 'Scheduling cancelled and content item has retuned to Draft' }; + } + } + + if (isPublishedWorkflowStep(workflowStepId, workflowSteps)) { + await publish(itemId, languageId); + + return { message: 'Content item has been published' }; + } + else if (targetIsScheduled) { + const publishDate = bundle.inputData.publishDate; + if (!publishDate) { + throw new Error('Missing required field publishDate.'); + } + + // If publish date is soon (within a minute from now) or in the past, we need to publish as scheduling may fail + + //const isInPast = moment(publishDate).add(-1, 'm').isBefore(); + const isInPast = new Date(publishDate).getTime() < new Date(new Date().toUTCString()).getTime(); + if (isInPast) { + await publish(itemId, languageId); + + return { message: 'Content item has been published instead of scheduling in a moment' }; + } + else { + await schedulePublishing(itemId, languageId, publishDate); + + return { message: 'Content item has been scheduled to publishing' }; + } + } + else { + await changeWorkflowStep(itemId, languageId, workflowStepId); + + return { message: 'Content item workflow step has changed' }; + } + }; + + // ID = "/" + const fullItemId = bundle.inputData.fullItemId; + if (!fullItemId) { + throw new Error('Missing full item ID'); + } + + const [itemId, languageId] = fullItemId.split('/'); + + if (!itemId || !languageId) { + throw new Error(`Full item ID has to be in format "[item id]/[language id]", found "${fullItemId}"`); + } + + const workflowStepId = bundle.inputData.workflowStepIds; + z.console.log(bundle.inputData.workflowStepIds); + if (!workflowStepId) { + throw new Error('Missing target workflow step ID'); + } + + return await setWorkflowStep(itemId, languageId, workflowStepId); +}; + +const getScheduledPublishingFields = async (z: ZObject, bundle: KontentBundle): Promise> => { + const workflowSteps = await getWorkflowSteps(z, bundle); + const stepId = bundle.inputData.workflowStepIds; + + const isScheduledSelected = isScheduledWorkflowStep(stepId, workflowSteps); + if (isScheduledSelected) { + // Only display the datetime field for Scheduled workflow step + return [{ + type: 'datetime', + key: 'publishDate', + label: 'To be published on', + helpText: 'In case the publishing time is in the past, the content item gets published immediately.', + required: true, + }]; + } + + return []; +}; + +const outputFields = [ + { + key: 'message', + label: 'Operation result message', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +type Output = OutputFromOutputFields; + +export const changeContentItemWorkflow = { + noun: 'Language variant workflow change', + display: { + 'hidden': false, + 'important': true, + 'description': 'Changes a language variant\'s workflow.', + 'label': 'Change Language Variant Workflow Step', + }, + key: 'change_item_workflow', + operation: { + perform: execute, + inputFields: [ + getContentItemField({ + helpText: 'Select the content item to update.\n\nFor a custom value use compound content item id in a form of "[item id]/[language id]"', + }), + getWorkflowStepField({ + required: true, + helpText: 'Select a workflow step to which the content item should move.\n\n[More about workflow in Kentico Kontent ...](https://docs.kontent.ai/tutorials/collaborate-with-your-team/workflows/setting-up-a-workflow-for-your-content)', + search: 'find_workflow_step.id', + }), + getScheduledPublishingFields, + ], + outputFields, + sample: { + message: 'Content item workflow step has changed', + }, + }, +}; + +type InputData = Readonly<{ + fullItemId?: string; + workflowStepIds: string; + publishDate?: string; +}>; diff --git a/src/actions/createContentItem.ts b/src/actions/createContentItem.ts new file mode 100644 index 0000000..230606f --- /dev/null +++ b/src/actions/createContentItem.ts @@ -0,0 +1,78 @@ +import { getLanguageField } from '../fields/getLanguageField'; +import { getContentTypeField } from '../fields/getContentTypeField'; +import { ElementFields, getItemElementFields } from '../fields/elements/getItemElementFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { Field } from '../fields/field'; +import { contentItemSample } from '../fields/samples/contentItemSample'; +import { ContentItemOutputFields, contentItemOutputFields } from '../fields/output/contentItemOutputFields'; +import { createItem } from '../utils/items/create/createItem'; +import { upsertVariant } from '../utils/items/update/upsertVariant'; +import { getItemResult } from '../utils/items/get/getItemResult'; + +const itemNameField: Field = { + required: true, + label: 'Content item name', + helpText: 'Name of the content item. Displays in content inventory. Shared by all language variants.', + key: 'name', + type: 'string', +}; + +const externalIdField: Field = { + required: false, + label: 'External ID', + helpText: 'Any unique identifier for the item in the external system. Can be used to link the content item for future updates. [Read more about external ID ...](https://developer.kontent.ai/v1/reference#content-management-api-reference-by-external-id)', + key: 'externalId', + type: 'string', +}; + +const elementsInfoField: Field = { + label: 'Elements', + helpText: `#### Content item variant elements + +The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. + +[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, + key: 'elements_header', + type: 'copy', +}; + +const execute = async (z: ZObject, bundle: KontentBundle): Promise => { + const item = await createItem(z, bundle, bundle.inputData); + const variant = await upsertVariant(z, bundle, { ...bundle.inputData, itemId: item.id }); + return getItemResult(z, bundle, item, variant, false); +}; + +export const createContentItem = { + noun: 'New content item', + display: { + hidden: false, + important: true, + description: 'Creates a content item and language variant using Kontent Management API. The created item is not published, but only in the Draft workflow step.', + label: 'Create Content Item', + }, + key: 'create_item', + operation: { + perform: execute, + inputFields: [ + getLanguageField({ required: true }), + getContentTypeField({ required: true, altersDynamicFields: true }), + itemNameField, + externalIdField, + elementsInfoField, + (z: ZObject, bundle: KontentBundle) => getItemElementFields(z, bundle, bundle.inputData.contentTypeId), + ], + sample: contentItemSample, + outputFields: contentItemOutputFields, + }, +}; + +type InputData = Readonly<{ + languageId: string; + contentTypeId: string; + name: string; + externalId?: string; + elements_header?: string; +}> & ElementFields; + +type Output = ContentItemOutputFields; diff --git a/src/actions/deleteLanguageVariant.ts b/src/actions/deleteLanguageVariant.ts new file mode 100644 index 0000000..22e97ac --- /dev/null +++ b/src/actions/deleteLanguageVariant.ts @@ -0,0 +1,57 @@ +import { getLanguageField } from '../fields/getLanguageField'; +import { itemSearchFields, ItemSearchFieldsOutputType } from '../fields/filters/itemSearchFields'; +import { contentItemSample } from '../fields/samples/contentItemSample'; +import { ContentItemOutputFields, contentItemOutputFields } from '../fields/output/contentItemOutputFields'; +import { findItemByIdentifier } from '../utils/items/get/findItemByIdentifier'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { deleteVariant } from '../utils/items/delete/deleteVariant'; +import { getVariant } from '../utils/items/get/getVariant'; +import { getItemResult } from '../utils/items/get/getItemResult'; + +async function execute(z: ZObject, bundle: KontentBundle): Promise { + const searchField = bundle.inputData.searchField; + const searchValue = bundle.inputData.searchValue; + + // Check existing content item, it may be available through the find action + const existingItem = searchField && searchValue && await findItemByIdentifier(z, bundle, searchField, searchValue); + if (!existingItem) { + throw new z.errors.HaltedError('Skipped, item not found.'); + } + + const existingVariant = await getVariant(z, bundle, existingItem.id, bundle.inputData.languageId); + if (!existingVariant) { + throw new z.errors.HaltedError('Skipped, language variant not found.'); + } + + const statusCode = await deleteVariant(z, bundle, { ...bundle.inputData, itemId: existingItem.id }); + if (statusCode !== 204) { + throw new z.errors.HaltedError(`Skipped, Kontent responded with ${statusCode}.`); + } + + return await getItemResult(z, bundle, existingItem, existingVariant, false); +} + +export const deleteLanguageVariant = { + noun: 'Delete language variant', + display: { + hidden: false, + important: false, + description: 'Deletes an existing language variant using Kontent Management API.', + label: 'Delete Language Variant', + }, + key: 'delete_variant', + operation: { + perform: execute, + inputFields: [ + getLanguageField({ required: true }), + ...itemSearchFields, + ], + sample: contentItemSample, + outputFields: contentItemOutputFields, + }, +}; + +type InputData = Readonly<{ + languageId: string; +}> & ItemSearchFieldsOutputType; diff --git a/src/actions/updateLanguageVariant.ts b/src/actions/updateLanguageVariant.ts new file mode 100644 index 0000000..3483d17 --- /dev/null +++ b/src/actions/updateLanguageVariant.ts @@ -0,0 +1,102 @@ +import { getLanguageField } from '../fields/getLanguageField'; +import { getContentTypeField } from '../fields/getContentTypeField'; +import { ElementFields, getItemElementFields } from '../fields/elements/getItemElementFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { itemSearchFields, ItemSearchFieldsOutputType } from '../fields/filters/itemSearchFields'; +import { contentItemSample } from '../fields/samples/contentItemSample'; +import { ContentItemOutputFields, contentItemOutputFields } from '../fields/output/contentItemOutputFields'; +import { Field } from '../fields/field'; +import { findItemByIdentifier } from '../utils/items/get/findItemByIdentifier'; +import { getVariant } from '../utils/items/get/getVariant'; +import { ContentItemModels, LanguageVariantModels } from '@kontent-ai/management-sdk'; +import { getWorkflowSteps } from '../utils/workflows/getWorkflowSteps'; +import { upsertVariant } from '../utils/items/update/upsertVariant'; +import { getItemResult } from '../utils/items/get/getItemResult'; +import { isPublishedWorkflowStep } from '../utils/workflows/stepCheckers'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; + +const elementsInfoField: Field = { + label: 'Elements', + helpText: `#### Content item variant elements + +The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. + +[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, + key: 'elements_header', + type: 'copy', +}; + +async function execute(z: ZObject, bundle: KontentBundle): Promise { + const languageId = bundle.inputData.languageId; + const searchField = bundle.inputData.searchField; + const searchValue = bundle.inputData.searchValue; + + // Check existing content item, it may be available through the find action + const existingItem = searchField && searchValue && await findItemByIdentifier(z, bundle, searchField, searchValue); + if (!existingItem || existingItem.type.id !== bundle.inputData.contentTypeId) { + throw new z.errors.HaltedError('Skipped, matching item not found.'); + } + + const existingVariant = await getVariant(z, bundle, existingItem.id, languageId); + if (!existingVariant) { + throw new z.errors.HaltedError('Skipped, language variant not found.'); + } + + return await tryUpdate(z, bundle, existingVariant, existingItem); +} + +const createNewVersion = async (z: ZObject, bundle: KontentBundle<{}>, itemId: string, languageId: string) => + createManagementClient(z, bundle) + .createNewVersionOfLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .toPromise(); + +async function tryUpdate(z: ZObject, bundle: KontentBundle, variant: LanguageVariantModels.ContentItemLanguageVariant, item: ContentItemModels.ContentItem) { + const workflowSteps = await getWorkflowSteps(z, bundle); + const currentStepId = variant.workflowStep.id; + + if (currentStepId && isPublishedWorkflowStep(currentStepId, workflowSteps)) { + // Create new version first + await createNewVersion(z, bundle, item.id, variant.language.id || ''); + } + + const result = await upsertVariant(z, bundle, { + itemId: item.id, + languageId: variant.language.id || '', + contentTypeId: item.type.id, + }); + + return await getItemResult(z, bundle, item, result, false); +} + +export const updateLanguageVariant = { + noun: 'Update language variant', + display: { + hidden: false, + important: true, + description: 'Updates a language variant using Kontent Management API.', + label: 'Update Language Variant', + }, + key: 'update_variant', + operation: { + perform: execute, + inputFields: [ + getLanguageField({ required: true }), + getContentTypeField({ required: true, altersDynamicFields: true }), + ...itemSearchFields, + elementsInfoField, + (z: ZObject, bundle: KontentBundle<{ contentTypeId: string }>) => + getItemElementFields(z, bundle, bundle.inputData.contentTypeId), + ], + sample: contentItemSample, + outputFields: contentItemOutputFields, + }, +}; + +type InputData = Readonly<{ + languageId: string; + contentTypeId: string; + elements_header?: string; +}> & ItemSearchFieldsOutputType & ElementFields; diff --git a/src/authentication.ts b/src/authentication.ts new file mode 100644 index 0000000..ded8459 --- /dev/null +++ b/src/authentication.ts @@ -0,0 +1,58 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from './types/kontentBundle'; +import { createManagementClient } from './utils/kontentServices/managementClient'; +import { createDeliveryClient } from './utils/kontentServices/deliverClient'; + +const execute = (z: ZObject, bundle: KontentBundle<{}>) => + Promise.all([ + checkCmApi(z, bundle), + checkPreviewApi(z, bundle), + ]) + .then(([{ name }]) => ({ projectName: name })); + +export const Authentication = { + type: 'custom', + test: execute, + fields: [ + { + label: 'Delivery API Project ID', + key: 'projectId', + type: 'string', + required: true, + helpText: 'Your project ID is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + }, + { + label: 'Management API Key', + key: 'cmApiKey', + type: 'string', + required: true, + helpText: 'The Management API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + }, + { + label: 'Preview API Key', + key: 'previewApiKey', + type: 'string', + required: true, + helpText: 'The Preview API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys. You can use the Primary or Secondary key.', + }, + { + label: 'Secure Access Key', + key: 'secureApiKey', + type: 'string', + required: false, + helpText: 'This is required for taxonomy steps if [Secure Access](https://docs.kontent.ai/tutorials/develop-apps/get-content/securing-public-access) is enabled in your project and is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + }, + ], + connectionLabel: '{{projectName}} - {{bundle.authData.projectId}}', +}; + +const checkCmApi = (z: ZObject, bundle: KontentBundle<{}>) => + createManagementClient(z, bundle) + .projectInformation() + .toPromise() + .then(res => res.data.project); + +const checkPreviewApi = (z: ZObject, bundle: KontentBundle<{}>) => + createDeliveryClient(z, bundle) + .types() + .toPromise(); diff --git a/src/fields/constants.ts b/src/fields/constants.ts new file mode 100644 index 0000000..b699c09 --- /dev/null +++ b/src/fields/constants.ts @@ -0,0 +1,2 @@ +export const ElementsPrefix = 'elements.'; +export const SystemPrefix = 'system.'; diff --git a/src/fields/elements/getContentTypeElements.ts b/src/fields/elements/getContentTypeElements.ts new file mode 100644 index 0000000..b201ce0 --- /dev/null +++ b/src/fields/elements/getContentTypeElements.ts @@ -0,0 +1,27 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { getContentType } from '../../utils/types/getContentType'; +import { ContentTypeElements, ManagementClient } from '@kontent-ai/management-sdk'; +import { createManagementClient } from '../../utils/kontentServices/managementClient'; + +export const getContentTypeElements = (z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string) => { + if (!contentTypeId) { + return Promise.resolve([]); + } + const managementClient = createManagementClient(z, bundle); + + return getContentType(z, bundle, contentTypeId) + .then(type => Promise.all(type.elements + .map(el => el.type === 'snippet' ? getSnippetElements(managementClient, el) : Promise.resolve([el]))) + .then(allElements => allElements.flat())); +}; + +const getSnippetElements = (managementClient: ManagementClient, element: ContentTypeElements.ISnippetElement) => + managementClient + .viewContentTypeSnippet() + .byTypeId(element.snippet.id ?? '') + .toPromise() + .then(res => res.data.elements.map(el => ({ + ...el, + codename: `${res.data.codename}__${(el as Exclude).codename}`, // type override is because of MAPI SDK bad types, snippet cannot contain snippet element + }))); diff --git a/src/fields/elements/getElementFieldProps.ts b/src/fields/elements/getElementFieldProps.ts new file mode 100644 index 0000000..ff1e2be --- /dev/null +++ b/src/fields/elements/getElementFieldProps.ts @@ -0,0 +1,34 @@ +import { ContentTypeElements } from '@kontent-ai/management-sdk'; + +export function getElementFieldProps(element: ContentTypeElements.ContentTypeElementModel) { + switch (element.type) { + case 'text': + case 'rich_text': + case 'url_slug': + return { type: 'unicode' }; + + case 'custom': + return { type: 'text' }; + + case 'multiple_choice': + case 'asset': + case 'modular_content': + case 'taxonomy': + return { + type: 'text', + list: true, + }; + + case 'number': + return { type: 'float' }; + + case 'date_time': + return { type: 'datetime' }; + + case 'guidelines': + return { type: 'copy' }; + + default: + return { type: 'text' }; + } +} diff --git a/src/fields/elements/getItemElementFields.ts b/src/fields/elements/getItemElementFields.ts new file mode 100644 index 0000000..1fcb095 --- /dev/null +++ b/src/fields/elements/getItemElementFields.ts @@ -0,0 +1,92 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { getContentTypeElements } from './getContentTypeElements'; +import { ContentTypeElements } from '@kontent-ai/management-sdk'; +import { Field } from '../field'; +import { getLinkedItemField } from '../getLinkedItemField'; + +export const getItemElementFields = async (z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string) => + getContentTypeElements(z, bundle, contentTypeId) + .then(elements => elements.map(getSimpleElementField)); + +export type ElementFields = Readonly<{ + [key: `elements_${string}`]: string | string[] | number | undefined; +}>; + +function getSimpleElementField(element: ContentTypeElements.ContentTypeElementModel) { + switch (element.type) { + case 'text': + case 'rich_text': + case 'custom': + return getField(element, { type: 'text' }); + + case 'number': + return getField(element, { type: 'float' }); + + case 'date_time': + return getField(element, { type: 'datetime' }); + + case 'modular_content': + return getLinkedItemField(getField(element)); + + case 'multiple_choice': + case 'asset': + case 'taxonomy': + return getField(element, { type: 'unicode', list: true }); + + case 'url_slug': + return getField(element, { type: 'unicode' }); + + case 'guidelines': + return getField(element, { type: 'copy' }); + default: + return undefined; + } +} + +function getField(element: ElementWithoutSnippets, extra?: Partial) { + const base = { + key: `elements__${element.codename}`, + label: getElementName(element), + helpText: createElementHelpText(element), + required: element.type !== 'guidelines' && !!element.is_required, + }; + + const choices = element.type === 'multiple_choice' + ? element.options.map(o => ({ label: o.name, value: o.codename || '', sample: '' })) + : undefined; + + const list = element.type === 'multiple_choice' ? false : undefined; + + return { + ...base, + choices, + list, + ...extra, + }; +} + +type ElementWithoutSnippets = Exclude; + +const getElementName = (element: ElementWithoutSnippets): string => { + switch (element.type) { + case 'guidelines': + case 'taxonomy': + return element.codename || ''; + default: + return element.name || element.codename || ''; + } +}; + +const createElementHelpText = (element: ElementWithoutSnippets): string | undefined => { + switch (element.type) { + case 'modular_content': + return element.guidelines + ' The value of this field should be a comma-separated list of content item IDs or [external IDs](https://docs.kontent.ai/reference/management-api-v2#section/External-IDs-for-imported-content), or a single value on each line.'; + case 'multiple_choice': + case 'asset': + case 'taxonomy': + return element.guidelines + ' The value of this field should be a comma-separated list of IDs or codenames, or a single value on each line.'; + default: + return element.guidelines; + } +}; diff --git a/src/fields/field.ts b/src/fields/field.ts new file mode 100644 index 0000000..eb4b06f --- /dev/null +++ b/src/fields/field.ts @@ -0,0 +1,13 @@ +export type Field = Readonly<{ + key: string; + type: 'string' | 'number' | 'datetime' | 'copy' | 'text' | 'unicode' | 'float'; + label: string; + dynamic?: string; + list?: boolean; + required?: boolean; + helpText?: string; + altersDynamicFields?: boolean; + choices?: ReadonlyArray> + default?: string; + search?: string; +}>; diff --git a/src/fields/filters/assetSearchFields.ts b/src/fields/filters/assetSearchFields.ts new file mode 100644 index 0000000..a8a96dc --- /dev/null +++ b/src/fields/filters/assetSearchFields.ts @@ -0,0 +1,48 @@ +import { Field } from '../field'; + +export const searchInfo: Field = { + label: 'Search info', + key: 'searchInfo', + helpText: `### Search by value + + You can search for the asset based on several values.`, + type: 'copy', +}; + +export const searchField: Field = { + label: 'Search field', + key: 'searchField', + type: 'string', + helpText: 'Select the field based on which the asset should be found.', + required: true, + choices: [ + { value: 'id', sample: 'id', label: 'Asset ID' }, + { value: 'externalId', sample: 'externalId', label: 'External ID' }, + ], + // altersDynamicFields: true, +}; + +const defaultSearchOperatorChoice = { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }; +const searchOperatorChoices = [ + defaultSearchOperatorChoice, +]; // getOperatorChoices(z, bundle, contentTypeId, searchField); - TODO allow other operators + +export const searchPattern: Field = { + label: 'Search operator', + key: 'searchPattern', + type: 'string', + helpText: 'Select how the search value should be matched.', + required: true, + choices: searchOperatorChoices, + default: defaultSearchOperatorChoice.value, + // altersDynamicFields: true, +}; + +export const searchValue: Field = { + label: 'Search value', + key: 'searchValue', + helpText: 'Value to match in the search field. The value must match exactly.', + type: 'string', + required: true, + altersDynamicFields: false, +}; diff --git a/src/fields/filters/getFieldType.ts b/src/fields/filters/getFieldType.ts new file mode 100644 index 0000000..5ed868f --- /dev/null +++ b/src/fields/filters/getFieldType.ts @@ -0,0 +1,22 @@ +import { ElementsPrefix, SystemPrefix } from '../constants'; +import { getContentTypeElements } from '../elements/getContentTypeElements'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; + +export async function getFieldType(z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string, field: string) { + if (field.indexOf(ElementsPrefix) === 0) { + const elementCodeName = field.slice(ElementsPrefix.length); + const elements = await getContentTypeElements(z, bundle, contentTypeId); + + const element = elements.find(e => e.codename === elementCodeName); + if (element) { + return element.type; + } + } + + if (field.indexOf(SystemPrefix) === 0) { + return 'text'; + } + + return 'id'; +} diff --git a/src/fields/filters/getOperatorChoices.ts b/src/fields/filters/getOperatorChoices.ts new file mode 100644 index 0000000..ad0b50d --- /dev/null +++ b/src/fields/filters/getOperatorChoices.ts @@ -0,0 +1,50 @@ +import { getFieldType } from './getFieldType'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; + +export async function getOperatorChoices(z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string, field: string) { + if (!field) { + return [ + { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, + ]; + } + + const fieldType = await getFieldType(z, bundle, contentTypeId, field); + + switch (fieldType) { + case 'id': + return [ + { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, + ]; + + case 'text': + case 'url_slug': + case 'custom': + return [ + { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, + { value: '{0}[range]={1},{1}~', sample: '{0}[range]={1},{1}~', label: 'Starts with' }, + ]; + + case 'multiple_choice': + case 'modular_content': + case 'taxonomy': + return [ + { value: '{0}[contains]={1}', sample: '{0}[contains]={1}', label: 'Contains the value' }, + { value: '{0}[any]={1}', sample: '{0}[any]={1}', label: 'Contains any value from a list ,' }, + { value: '{0}[all]={1}', sample: '{0}[all]={1}', label: 'Contains all values from a list ,' }, + ]; + + case 'number': + return [ + { value: '{0}={1}', sample: '{0}={1}', label: 'Equals =' }, + { value: '{0}[lt]={1}', sample: '{0}[lt]={1}', label: 'Less than <' }, + { value: '{0}[lte]={1}', sample: '{0}[lte]={1}', label: 'Less than or equal <=' }, + { value: '{0}[gt]={1}', sample: '{0}[gt]={1}', label: 'Greater than >' }, + { value: '{0}[gte]={1}', sample: '{0}[gte]={1}', label: 'Greater than or equal >=' }, + { value: '{0}[range]={1}', sample: '{0}[range]={1}', label: 'Range ,' }, + { value: '{0}[in]={1}', sample: '{0}[in]={1}', label: 'Any of listed values ,' }, + ]; + default: + return []; + } +} diff --git a/src/fields/filters/itemSearchFields.ts b/src/fields/filters/itemSearchFields.ts new file mode 100644 index 0000000..aa18b31 --- /dev/null +++ b/src/fields/filters/itemSearchFields.ts @@ -0,0 +1,90 @@ +import { getContentTypeElements } from '../elements/getContentTypeElements'; +import { ElementsPrefix, SystemPrefix } from '../constants'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { getOperatorChoices } from './getOperatorChoices'; +import { Field } from '../field'; + +const searchInfo = { + label: 'Search info', + key: 'searchInfo', + helpText: `### Search by field + +You can search the item by a particular field value.`, + type: 'copy', +}; + +const searchField = async (z: ZObject, bundle: KontentBundle<{ contentTypeId: string }>): Promise> =>{ + const elements = await getContentTypeElements(z, bundle, bundle.inputData.contentTypeId); + const baseChoices = [ + { value: 'id', sample: 'id', label: 'Item ID' }, + { value: 'externalId', sample: 'externalId', label: 'External ID' }, + { value: `${SystemPrefix}codename`, sample: `${SystemPrefix}codename`, label: 'Code name' }, + ]; + + const elementsChoices = elements + .flatMap(element => { + switch (element.type) { + case 'text': + case 'custom': + case 'url_slug': + case 'multiple_choice': + case 'modular_content': + case 'number': + return [{ + value: `${ElementsPrefix}${element.codename}`, + sample: `${ElementsPrefix}${element.codename}`, + label: element.name || element.codename || '', + }]; + case 'taxonomy': + return [{ + value: `${ElementsPrefix}${element.codename}`, + sample: `${ElementsPrefix}${element.codename}`, + label: element.codename || '', + }]; + default: + return []; + } + }); + + return [{ + label: 'Search field', + key: 'searchField', + type: 'string', + helpText: 'Select the field based on which the item should be found.', + required: true, + choices: [...baseChoices, ...elementsChoices], + altersDynamicFields: true, + }]; +}; + +const searchOperator = (z: ZObject, bundle: KontentBundle<{ contentTypeId: string; searchField: string }>): Promise> => + getOperatorChoices(z, bundle, bundle.inputData.contentTypeId, bundle.inputData.searchField) + .then(choices => [{ + label: 'Search operator', + key: 'searchPattern', + type: 'string', + helpText: 'Select how the search value should be matched.', + required: true, + choices, + default: choices[0]?.value || '', + altersDynamicFields: true, + }]); + +const searchValue: Field = { + label: 'Search value', + key: 'searchValue', + helpText: 'Value to match in the search field. The value must match exactly.', + type: 'string', + required: true, + altersDynamicFields: false, +}; + +export const itemSearchFields = [searchInfo, searchField, searchOperator, searchValue] as const; + +export type ItemSearchFieldsOutputType = Readonly<{ + searchValue: string; + searchPattern: string; + searchField: string; + searchInfo?: string; +}>; diff --git a/src/fields/filters/languageSearchFields.ts b/src/fields/filters/languageSearchFields.ts new file mode 100644 index 0000000..549ff2b --- /dev/null +++ b/src/fields/filters/languageSearchFields.ts @@ -0,0 +1,60 @@ +//const getOperatorChoices = require('./getOperatorChoices'); + +import { Field } from '../field'; + +const searchInfo: Field = { + label: 'Search info', + key: 'searchInfo', + helpText: `### Search by value + + You can search for the language based on several values.`, + type: 'copy', +}; + +const searchFieldChoices = [ + { value: 'id', sample: 'id', label: 'Language ID' }, + { value: 'externalId', sample: 'externalId', label: 'External ID' }, + { value: 'codename', sample: `codename`, label: 'Code name' }, +]; + +const searchField: Field = { + label: 'Search field', + key: 'searchField', + type: 'string', + helpText: 'Select the field based on which the language should be found.', + required: true, + choices: searchFieldChoices, + altersDynamicFields: false, +}; + +const searchOperatorChoices = [ + { value: '{0}={1}', sample: '{0}={1}', label: 'Equals' }, +]; //await getOperatorChoices(z, bundle, contentTypeId, searchField); - TODO allow other operators + +const searchOperatorField: Field = { + label: 'Search operator', + key: 'searchPattern', + type: 'string', + helpText: 'Select how the search value should be matched.', + required: true, + choices: searchOperatorChoices, + default: searchOperatorChoices[0]?.value ?? '', + altersDynamicFields: false, +}; + +const searchValueField: Field = { + label: 'Search value', + key: 'searchValue', + helpText: 'Value to match in the search field. The value must match exactly.', + type: 'string', + required: true, + altersDynamicFields: false, +}; + +export const languageSearchFields = [searchInfo, searchField, searchOperatorField, searchValueField]; + +export type LanguageSearchFieldsOutput = Readonly<{ + searchField: string; + searchPattern: string; + searchValue: string; +}>; diff --git a/src/fields/getContentItemField.ts b/src/fields/getContentItemField.ts new file mode 100644 index 0000000..df076a4 --- /dev/null +++ b/src/fields/getContentItemField.ts @@ -0,0 +1,13 @@ +import { Field } from './field'; + +export const getContentItemField = (extras?: Partial): Field => ({ + search: 'find_item.fullId', + list: false, + required: false, + dynamic: 'get_content_items.fullId.name', + label: 'Content item', + key: 'fullItemId', + type: 'string', + altersDynamicFields: false, + ...extras, +}); diff --git a/src/fields/getContentTypeField.ts b/src/fields/getContentTypeField.ts new file mode 100644 index 0000000..b046660 --- /dev/null +++ b/src/fields/getContentTypeField.ts @@ -0,0 +1,10 @@ +import { Field } from './field'; + +export const getContentTypeField = (extras?: Partial): Field => ({ + label: 'Content type', + key: 'contentTypeId', + type: 'string', + helpText: 'Note: dynamic values from other steps cannot be used here', + dynamic: 'get_content_types.id.name', + ...extras, +}); diff --git a/src/fields/getContentTypeFieldForSamples.ts b/src/fields/getContentTypeFieldForSamples.ts new file mode 100644 index 0000000..7c74747 --- /dev/null +++ b/src/fields/getContentTypeFieldForSamples.ts @@ -0,0 +1,10 @@ +import { Field } from './field'; + +export const getContentTypeFieldForSamples = (extras?: Partial): Field => ({ + label: 'Content type for samples', + key: 'contentTypeId', + type: 'string', + helpText: 'If you select a content type, the samples from this trigger will be of that type. If empty, the first found items will be provided.', + dynamic: 'get_content_types.id.name', + ...extras, +}); diff --git a/src/fields/getLanguageField.ts b/src/fields/getLanguageField.ts new file mode 100644 index 0000000..85b9e81 --- /dev/null +++ b/src/fields/getLanguageField.ts @@ -0,0 +1,9 @@ +import { Field } from './field'; + +export const getLanguageField = (extras?: Partial): Field => ({ + label: 'Language', + key: 'languageId', + type: 'string', + dynamic: 'get_languages.id.name', + ...extras, +}); diff --git a/src/fields/getLinkedItemField.ts b/src/fields/getLinkedItemField.ts new file mode 100644 index 0000000..d50177a --- /dev/null +++ b/src/fields/getLinkedItemField.ts @@ -0,0 +1,10 @@ +import { Field } from './field'; + +export const getLinkedItemField = (extras: Partial> & Pick): Field => ({ + search: 'find_item.id', + list: true, + dynamic: 'get_linked_items.id.name', + type: 'string', + altersDynamicFields: false, + ...extras, +}); diff --git a/src/fields/getWorkflowStepField.ts b/src/fields/getWorkflowStepField.ts new file mode 100644 index 0000000..ad1384e --- /dev/null +++ b/src/fields/getWorkflowStepField.ts @@ -0,0 +1,10 @@ +import { Field } from './field'; + +export const getWorkflowStepField = (extras?: Partial): Field => ({ + list: false, + dynamic: "get_workflow_steps.id.name", + label: "Workflow steps", + key: "workflowStepIds", + type: "string", + ...extras, +}); diff --git a/src/fields/output/contentItemOutputFields.ts b/src/fields/output/contentItemOutputFields.ts new file mode 100644 index 0000000..2eb0a85 --- /dev/null +++ b/src/fields/output/contentItemOutputFields.ts @@ -0,0 +1,18 @@ +import { StandardizedSystemOutputFields, standardizedSystemOutputFields } from './standardizedSystemOutputFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { ElementsOutputFields, getElementOutputFields } from './getElementOutputFields'; +import { OutputField } from './outputField'; + +export const contentItemOutputFields = [ + ...standardizedSystemOutputFields, + (z: ZObject, bundle: KontentBundle<{ contentTypeId: string }>) => + getElementOutputFields(z, bundle, bundle.inputData.contentTypeId), + { + key: 'modular_content', + type: 'string', + label: 'Serialized linked items' + } satisfies OutputField, +]; + +export type ContentItemOutputFields = StandardizedSystemOutputFields & ElementsOutputFields & Readonly<{ modular_content: string | undefined }>; diff --git a/src/fields/output/deliveryItemOutputFields.ts b/src/fields/output/deliveryItemOutputFields.ts new file mode 100644 index 0000000..559134d --- /dev/null +++ b/src/fields/output/deliveryItemOutputFields.ts @@ -0,0 +1,79 @@ +import { OutputField } from './outputField'; +import { OutputFromOutputFields } from './outputFromOutputFields'; +import { LanguageModels } from '@kontent-ai/management-sdk'; +import { IContentItem } from '@kontent-ai/delivery-sdk'; + +export const deliveryItemOutputFields = [ + { + key: 'name', + label: 'Item name', + type: 'string', + }, + { + key: 'language', + label: 'Language codename', + type: 'string', + }, + { + key: 'lastModified', + label: 'Last modified', + type: 'datetime', + }, + { + key: 'codename', + label: 'Item codename', + type: 'string', + }, + { + key: 'type', + label: 'Content type codename', + type: 'string', + }, + { + key: 'workflowStep', + label: 'Workflow step codename', + type: 'string', + }, + { + key: 'id', + label: 'Item ID', + type: 'string', + }, + { + key: 'fullId', + label: 'Full item ID', + type: 'string', + }, + { + key: 'languageId', + label: 'Language ID', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +export type DeliveryItemOutputFields = OutputFromOutputFields; + +export const prepareDeliveryItemForOutput = (allLanguages: ReadonlyArray) => + (item: IContentItem): DeliveryItemOutputFields => ({ + language: item.system.language, + type: item.system.type, + codename: item.system.codename, + id: item.system.id, + name: item.system.name, + lastModified: item.system.lastModified, + workflowStep: item.system.workflowStep || '', + languageId: allLanguages.find(l => l.codename === item.system.language)?.id ?? '', + fullId: `${item.system.id}/${allLanguages.find(l => l.codename === item.system.language)?.id}`, + }); + +export const deliveryItemOutputFieldsSample: DeliveryItemOutputFields = { + id: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5', + name: 'Coffee Beverages Explained', + codename: 'coffee_beverages_explained', + workflowStep: 'draft', + type: 'article', + language: 'en-US', + lastModified: '2020-03-25T19:59:26.8076754Z', + fullId: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5/00000000-0000-0000-0000-000000000000', + languageId: '00000000-0000-0000-0000-000000000000' +}; diff --git a/src/fields/output/getElementOutputFields.ts b/src/fields/output/getElementOutputFields.ts new file mode 100644 index 0000000..396c653 --- /dev/null +++ b/src/fields/output/getElementOutputFields.ts @@ -0,0 +1,22 @@ +import { getContentTypeElements } from '../elements/getContentTypeElements'; +import { getElementFieldProps } from '../elements/getElementFieldProps'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { isElementWithName } from '../../utils/elements/isElementWithName'; + +export async function getElementOutputFields(z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string) { + if (!contentTypeId) { + return Promise.resolve([]); + } + + return getContentTypeElements(z, bundle, contentTypeId) + .then(elements => elements + .filter(el => el.type !== 'guidelines') + .map(element => ({ + label: isElementWithName(element) ? element.name : undefined, + key: `elements__${element.codename}`, + ...getElementFieldProps(element), + }))); +} + +export type ElementsOutputFields = Readonly<{ elements: Readonly> }>; diff --git a/src/fields/output/outputField.ts b/src/fields/output/outputField.ts new file mode 100644 index 0000000..e5f496c --- /dev/null +++ b/src/fields/output/outputField.ts @@ -0,0 +1,7 @@ +export type OutputField = Readonly<{ + key: string; + label: string; + type: 'string' | 'datetime' | 'number' | 'boolean'; + required?: boolean; + list?: boolean; +}>; diff --git a/src/fields/output/outputFromOutputFields.ts b/src/fields/output/outputFromOutputFields.ts new file mode 100644 index 0000000..482050e --- /dev/null +++ b/src/fields/output/outputFromOutputFields.ts @@ -0,0 +1,34 @@ +import { OutputField } from './outputField'; + +export type OutputFromOutputFields, Acc = {}> = + Fields extends readonly [] + ? Acc + : Fields extends readonly [infer Field extends OutputField, ...infer RestFields extends ReadonlyArray] + ? OutputFromOutputFields> + : never; + +type CreateObjectFromField = + Field['key'] extends `${infer ObjectParentKey}__${infer ObjectChildKey}` + ? ObjectParentKey extends `${infer ArrayParentKey}[]${infer ArrayChildPart}` + ? { readonly [key in ArrayParentKey]: ReadonlyArray & { key: `${ArrayChildPart}__${ObjectChildKey}` }>> } + : { readonly [key in ObjectParentKey]: CreateObjectFromField & { key: ObjectChildKey }> } + : Field['key'] extends `${infer ArrayParentKey}[]${infer ArrayChildKey}` + ? { readonly [key in ArrayParentKey]: ReadonlyArray & { key: ArrayChildKey }>> } + : { readonly [key in Field['key']]: FieldType } + + +type FieldTypeToTSType = { + string: string; + datetime: string; + number: number; + boolean: boolean; +}; + +type FieldType = FieldTypeToTSType> = + MakeListIfNeeded>; + +type MakeOptionalIfNeeded = + Field['required'] extends true ? Type : Type | undefined; + +type MakeListIfNeeded = + Field['list'] extends true ? ReadonlyArray : Type; diff --git a/src/fields/output/standardizedSystemOutputFields.ts b/src/fields/output/standardizedSystemOutputFields.ts new file mode 100644 index 0000000..25d0d28 --- /dev/null +++ b/src/fields/output/standardizedSystemOutputFields.ts @@ -0,0 +1,67 @@ +import { OutputFromOutputFields } from './outputFromOutputFields'; +import { OutputField } from './outputField'; + +export const standardizedSystemOutputFields = [ + { + key: 'system__name', + label: 'Item name', + type: 'string', + }, + { + key: 'system__language', + label: 'Language codename', + type: 'string', + }, + { + key: 'system__lastModified', + label: 'Last modified', + type: 'datetime', + }, + { + key: 'system__codename', + label: 'Item codename', + type: 'string', + }, + { + key: 'system__type', + label: 'Content type codename', + type: 'string', + }, + { + key: 'system__id', + label: 'Item ID', + type: 'string', + }, + { + key: 'system__externalId', + label: 'Item external ID', + type: 'string', + }, + { + key: 'system__projectId', + label: 'Project ID', + type: 'string', + }, + { + key: 'system__fullId', + label: 'Full item ID', + type: 'string', + }, + { + key: 'system__languageId', + label: 'Language ID', + type: 'string', + }, + { + key: 'system__workflowStepId', + label: 'Workflow step ID', + type: 'string', + }, + { + key: 'system__contentTypeId', + label: 'Content type ID', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +export type StandardizedSystemOutputFields = OutputFromOutputFields; diff --git a/src/fields/samples/contentItemSample.ts b/src/fields/samples/contentItemSample.ts new file mode 100644 index 0000000..05c95ee --- /dev/null +++ b/src/fields/samples/contentItemSample.ts @@ -0,0 +1,32 @@ +import { ContentItemOutputFields } from '../output/contentItemOutputFields'; + +export const contentItemSample: ContentItemOutputFields = { + system: { + projectId: '471f9f4c-4f97-009b-a0b8-79db2558e63f', + id: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5', + name: 'Coffee Beverages Explained', + codename: 'coffee_beverages_explained', + type: 'article', + language: 'en-US', + lastModified: '2020-03-25T19:59:26.8076754Z', + fullId: 'cf106f4e-30a4-42ef-b313-b8ea3fd3e5c5/00000000-0000-0000-0000-000000000000', + workflowStepId: 'b4363ccd-8f21-45fd-a840-5843d7b7f008', + contentTypeId: 'b7aa4a53-d9b1-48cf-b7a6-ed0b182c4b89', + languageId: '00000000-0000-0000-0000-000000000000', + externalId: 'sample_external_id', + }, + elements: { + title: 'Coffee Beverages Explained', + teaser_image: ['e700596b-03b0-4cee-ac5c-9212762c027a'], + post_date: '2014-11-18T00:00:00Z', + summary: 'Espresso and filtered coffee are the two main categories of coffee, based on the method of preparation. Learn about individual types of coffee that fall under these categories.', + body_copy: '


', + related_articles: [], + meta_keywords: 'article', + personas: ['208a9095-1b92-10da-7627-75ae311935cf'], + meta_description: 'Espresso and filtered coffee are the two main categories of coffee. Learn about individual types of coffee that fall under these categories.', + url_pattern: 'coffee-beverages-explained', + sitemap: ['7ca9b56c-6379-46dc-ae90-3df4b9abd217'], + }, + modular_content: '[]', +}; diff --git a/src/fields/samples/getSampleItemExistencePayload.ts b/src/fields/samples/getSampleItemExistencePayload.ts new file mode 100644 index 0000000..b834330 --- /dev/null +++ b/src/fields/samples/getSampleItemExistencePayload.ts @@ -0,0 +1,32 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { IContentItem } from '@kontent-ai/delivery-sdk'; + +export const getSampleItemExistencePayload = (z: ZObject, bundle: KontentBundle, sampleItem: IContentItem) => ({ + data: { + items: [ + { + item: { + id: sampleItem ? sampleItem.system.id : '42c21e82-0772-4d79-a6b3-c916e51b24ff', + }, + language: { + id: bundle.inputData.languageId ? bundle.inputData.languageId + : '00000000-0000-0000-0000-000000000000', + }, + }, + ], + }, + message: { + id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', + project_id: bundle.authData.projectId, + type: 'content_item_variant', + operation: 'restore', + api_name: 'content_management', + created_timestamp: new Date().toJSON(), + webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732', + }, +}); + +type ExpectedInputData = Readonly<{ + languageId?: string; +}>; diff --git a/src/fields/samples/getSampleItemPublishPayload.ts b/src/fields/samples/getSampleItemPublishPayload.ts new file mode 100644 index 0000000..5ed5cb6 --- /dev/null +++ b/src/fields/samples/getSampleItemPublishPayload.ts @@ -0,0 +1,25 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { IContentItem } from '@kontent-ai/delivery-sdk'; + +export const getSampleItemPublishPayload = (z: ZObject, bundle: KontentBundle<{}>, sampleItem: IContentItem) => ({ + data: { + items: [ + { + id: sampleItem.system.id, + codename: sampleItem.system.codename, + language: sampleItem.system.language, + type: sampleItem.system.type + } + ] + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: bundle.authData.projectId, + type: 'content_item_variant', + operation: 'publish', + api_name: 'delivery_production', + created_timestamp: new Date().toJSON(), + webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' + } +}); diff --git a/src/fields/samples/getSampleTaxonomyPayload.ts b/src/fields/samples/getSampleTaxonomyPayload.ts new file mode 100644 index 0000000..e9c2852 --- /dev/null +++ b/src/fields/samples/getSampleTaxonomyPayload.ts @@ -0,0 +1,30 @@ +import { KontentBundle } from '../../types/kontentBundle'; +import { ITaxonomyGroup } from '@kontent-ai/delivery-sdk'; + +export const getSampleTaxonomyPayload = (bundle: KontentBundle<{}>, sampleGroup: ITaxonomyGroup) => ({ + data: { + items: [ + { + id: 'e113e464-bffb-4fbd-a29b-47991d003732', + codename: 'my_article', + language: 'en-US', + type: 'article' + } + ], + taxonomies: [ + { + id: sampleGroup.system.id, + codename: sampleGroup.system.codename + } + ] + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: bundle.authData.projectId, + type: 'taxonomy', + operation: 'upsert', + api_name: 'delivery_production', + created_timestamp: new Date().toJSON(), + webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' + } +}); diff --git a/src/fields/samples/getSampleWorkflowPayload.ts b/src/fields/samples/getSampleWorkflowPayload.ts new file mode 100644 index 0000000..8c15c73 --- /dev/null +++ b/src/fields/samples/getSampleWorkflowPayload.ts @@ -0,0 +1,36 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; + +export const getSampleWorkflowPayload = (z: ZObject, bundle: KontentBundle, sampleItem: Readonly<{ system: Readonly<{ id: string }> }>) => ({ + data: { + items: [ + { + item: { + id: sampleItem.system.id + }, + language: { + id: bundle.inputData.languageId ? bundle.inputData.languageId : '00000000-0000-0000-0000-000000000000' + }, + transition_from: { + id: '13145328-b946-4e47-9c9d-6f40c7aaeaef' + }, + transition_to: { + id: 'b4363ccd-8f21-45fd-a840-5843d7b7f008' + } + } + ] + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: bundle.authData.projectId, + type: 'content_item_variant', + operation: 'change_workflow_step', + api_name: 'content_management', + created_timestamp: new Date().toJSON(), + webhook_url: bundle.targetUrl ? bundle.targetUrl : 'https://hooks.zapier.com/hooks/standard/47991d003732' + } +}); + +type ExpectedInputData = Readonly<{ + languageId?: string; +}>; diff --git a/src/fields/samples/getTriggerSampleOutput.ts b/src/fields/samples/getTriggerSampleOutput.ts new file mode 100644 index 0000000..5279e74 --- /dev/null +++ b/src/fields/samples/getTriggerSampleOutput.ts @@ -0,0 +1,47 @@ +import { ZObject } from 'zapier-platform-core'; +import { getAllItemsDelivery } from '../../utils/items/get/getAllItemsDelivery'; +import { KontentBundle } from '../../types/kontentBundle'; +import { IContentItem } from '@kontent-ai/delivery-sdk'; +import { getContentType } from '../../utils/types/getContentType'; +import { getLanguage } from '../../utils/languages/getLanguage'; + +type ExpectedInputData = Readonly<{ + contentTypeId?: string; + languageId?: string; +}>; + +export const getTriggerSampleOutput = async (z: ZObject, bundle: KontentBundle) => { + const allItems = await getAllItemsDelivery(z, bundle); + if (!allItems) { + return null; + } + + const filteredByType = bundle.inputData.contentTypeId + ? await filterByContentType(z, bundle, bundle.inputData.contentTypeId, allItems) + : allItems; + + const filteredByLanguage = bundle.inputData.languageId + ? await filterByLanguage(z, bundle, bundle.inputData.languageId, filteredByType) + : filteredByType; + + return filteredByLanguage + .slice(0, 3); +}; + +const filterByContentType = async (z: ZObject, bundle: KontentBundle<{}>, typeId: string, items: ReadonlyArray) => { + const type = await getContentType(z, bundle, typeId); + const matches = items.filter(i => i.system.type === type.codename); + + return matches.length + ? matches + : items; +}; + +const filterByLanguage = async (z: ZObject, bundle: KontentBundle<{}>, languageId: string, items: ReadonlyArray) => { + const language = await getLanguage(z, bundle, languageId); + const matches = items.filter(i => i.system.language === language.codename); + + return matches.length + ? matches + : items; +}; diff --git a/src/fields/samples/taxonomyGroupSample.ts b/src/fields/samples/taxonomyGroupSample.ts new file mode 100644 index 0000000..153289b --- /dev/null +++ b/src/fields/samples/taxonomyGroupSample.ts @@ -0,0 +1,22 @@ +import { ITaxonomyGroup } from '@kontent-ai/delivery-sdk'; + +export const taxonomyGroupSample: ITaxonomyGroup = { + system: { + id: 'f30c7f72-e9ab-8832-2a57-62944a038809', + name: 'Programming language', + codename: 'programming_language', + lastModified: new Date('2019-08-31T09:41:06.520241Z'), + }, + terms: [ + { + name: 'C#', + codename: 'c_', + terms: [], + }, + { + name: 'JavaScript', + codename: 'javascript', + terms: [], + }, + ], +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..274da12 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,80 @@ +import { Authentication } from './authentication'; +import { version } from 'zapier-platform-core'; +import triggerWorkflowStatusChanged from './triggers/triggerWorkflowStatusChanged'; +import triggerTaxonomyChanged from './triggers/triggerTaxonomyChanged'; +import triggerItemPublishChanged from './triggers/triggerItemPublishChanged'; +import triggerItemExistenceChanged from './triggers/triggerItemExistenceChanged'; +import getContentItems from './triggers/dropdowns/getContentItems'; +import getLinkedItems from './triggers/dropdowns/getLinkedItems'; +import getContentTypes from './triggers/dropdowns/getContentTypes'; +import getWorkflowSteps from './triggers/dropdowns/getWorkflowSteps'; +import getLanguages from './triggers/dropdowns/getLanguages'; +import findContentItem from './searches/findContentItem'; +import findWorkflowStep from './searches/findWorkflowStep'; +import { findLanguage } from './searches/findLanguage'; +import { findAsset } from './searches/findAsset'; +import { changeContentItemWorkflow } from './actions/changeContentItemWorkflow'; +import { updateLanguageVariant } from './actions/updateLanguageVariant'; +import { createContentItem } from './actions/createContentItem'; +import { deleteLanguageVariant } from './actions/deleteLanguageVariant'; + +// We can roll up all our behaviors in an App. +export default { + // This is just shorthand to reference the installed dependencies you have. Zapier will + // need to know these before we can upload + version: require('../package.json').version, + platformVersion: version, + + authentication: Authentication, + + // beforeRequest & afterResponse are optional hooks into the provided HTTP client + beforeRequest: [], + + afterResponse: [], + + // If you want to define optional resources to simplify creation of triggers, searches, creates - do that here! + resources: {}, + + // If you want your trigger to show up, you better include it here! + triggers: { + [triggerWorkflowStatusChanged.key]: triggerWorkflowStatusChanged, + [triggerTaxonomyChanged.key]: triggerTaxonomyChanged, + [triggerItemPublishChanged.key]: triggerItemPublishChanged, + [triggerItemExistenceChanged.key]: triggerItemExistenceChanged, + + // Lists for dropdowns + [getLinkedItems.key]: getLinkedItems, + [getContentTypes.key]: getContentTypes, + [getContentItems.key]: getContentItems, + [getWorkflowSteps.key]: getWorkflowSteps, + [getLanguages.key]: getLanguages, + }, + + // If you want your searches to show up, you better include it here! + searches: { + [findContentItem.key]: findContentItem, + [findWorkflowStep.key]: findWorkflowStep, + [findLanguage.key]: findLanguage, + [findAsset.key]: findAsset, + }, + + // If you want your creates to show up, you better include it here! + creates: { + [createContentItem.key]: createContentItem, + [changeContentItemWorkflow.key]: changeContentItemWorkflow, + [updateLanguageVariant.key]: updateLanguageVariant, + [deleteLanguageVariant.key]: deleteLanguageVariant, + }, + + searchOrCreates: { + find_item: { + search: 'find_item', + create: 'create_item', + key: 'find_item', + display: { + 'description': 'Finds a content item matching the provided parameters. If more items match, it returns the first found item.', + 'label': 'Find or create content item' + } + } + } +}; diff --git a/src/searches/findAsset.ts b/src/searches/findAsset.ts new file mode 100644 index 0000000..f90f160 --- /dev/null +++ b/src/searches/findAsset.ts @@ -0,0 +1,173 @@ +import { searchField, searchInfo, searchPattern, searchValue } from '../fields/filters/assetSearchFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { getAsset } from '../utils/assets/getAsset'; +import { getAssetByExternalId } from '../utils/assets/getAssetByExternalId'; +import { OutputField } from '../fields/output/outputField'; +import { OutputFromOutputFields } from '../fields/output/outputFromOutputFields'; +import { AssetModels } from '@kontent-ai/management-sdk'; + +async function execute(z: ZObject, bundle: KontentBundle): Promise { + const searchField = bundle.inputData.searchField; + const searchValue = bundle.inputData.searchValue; + + switch (searchField) { + case 'id': + return [await getAsset(z, bundle, searchValue).then(prepareAssetForOutput)]; + case 'externalId': + return [await getAssetByExternalId(z, bundle, searchValue).then(prepareAssetForOutput)]; + default: + return []; + } +} + +const outputFields = [ + { + key: 'descriptions[]language__id', + label: 'Description language IDs', + type: 'string' + }, + { + key: 'descriptions[]description', + label: 'Description translations', + type: 'string' + }, + { + key: 'id', + label: 'Asset ID', + type: 'string', + }, + { + key: 'externalId', + label: 'External ID', + type: 'string', + }, + { + key: 'fileName', + label: 'File name', + type: 'string', + }, + { + key: 'title', + label: 'Title', + type: 'string', + }, + { + key: 'url', + label: 'Asset URL', + type: 'string', + }, + { + key: 'size', + label: 'File size in bytes', + type: 'number', + }, + { + key: 'imageHeight', + label: 'Height', + type: 'number', + }, + { + key: 'imageWidth', + label: 'Width', + type: 'number', + }, + { + key: 'type', + label: 'File type', + type: 'string', + }, + { + key: 'lastModified', + label: 'Last modified', + type: 'datetime', + }, + { + key: 'fileReference__id', + label: 'Asset reference ID', + type: 'string', + }, + { + key: 'fileReference__type', + label: 'Asset reference type', + type: 'string', + }, + { + key: 'folder__id', + label: 'Asset folder ID', + type: 'string', + } +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray>; + +export const findAsset = { + noun: 'Asset search', + display: { + hidden: false, + important: false, + description: 'Finds an asset based on its ID or external ID', + label: 'Find Asset', + }, + key: 'find_asset', + operation: { + perform: execute, + inputFields: [ + searchInfo, + searchField, + searchPattern, + searchValue, + ], + outputFields, + sample: { + descriptions: [ + { + language: { + id: '00000000-0000-0000-0000-000000000000', + }, + description: `The asset's alt text for the default language.`, + }, + ], + external_id: 'custom-asset-identifier', + file_name: 'file_name.png', + file_reference: { + id: '806ec84e-7c71-4856-9519-ee3dd3558583', + type: 'internal', + }, + folder: { + id: '8fe4ff47-0ca8-449d-bc63-c280efee44ea', + }, + id: 'fcbb12e6-66a3-4672-85d9-d502d16b8d9c', + image_height: 548, + image_width: 1280, + last_modified: '2019-09-12T08:29:36.1645977Z', + size: 148636, + title: 'Makes the asset easier to find when you need it', + type: 'image/png', + url: 'https://assets-us-01.kc-usercontent.com/8d20758c-d74c-4f59-ae04-ee928c0816b7/adf26cd2-1acb-403f-9d1e-6d04e46c39f1/file_name.png', + }, + }, +}; + +type InputData = Readonly<{ + searchInfo: string; + searchField: string; + searchPattern: string; + searchValue: string; +}>; + +const prepareAssetForOutput = (asset: AssetModels.Asset): Output[number] => ({ + descriptions: asset.descriptions.map(d => ({ ...d, description: d.description || '', language: { id: d.language.id || '' } })), + externalId: asset.externalId || '', + title: asset.title || '', + imageHeight: asset.imageHeight ?? undefined, + imageWidth: asset.imageWidth ?? undefined, + lastModified: asset.lastModified.toString(), + folder: { id: asset.folder?.id ?? undefined }, + url: asset.url, + type: asset.type, + size: asset.size, + id: asset.id, + fileName: asset.fileName, + fileReference: asset.fileReference +}); diff --git a/src/searches/findContentItem.ts b/src/searches/findContentItem.ts new file mode 100644 index 0000000..648f88b --- /dev/null +++ b/src/searches/findContentItem.ts @@ -0,0 +1,39 @@ +import { getLanguageField } from '../fields/getLanguageField'; +import { itemSearchFields, ItemSearchFieldsOutputType } from '../fields/filters/itemSearchFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { contentItemSample } from '../fields/samples/contentItemSample'; +import { findContentItem } from '../utils/items/get/findContentItem'; +import { getContentTypeField } from '../fields/getContentTypeField'; +import { ContentItemOutputFields, contentItemOutputFields } from '../fields/output/contentItemOutputFields'; + +const execute = (z: ZObject, bundle: KontentBundle): Promise => + findContentItem(z, bundle); + +type Output = ReadonlyArray; + +export default { + noun: 'Content item search', + display: { + hidden: false, + important: true, + description: 'Finds a content item matching the provided parameters. If more items match, it returns the first found item.', + label: 'Find Content Item', + }, + key: 'find_item', + operation: { + perform: execute, + inputFields: [ + getLanguageField({ required: true }), + getContentTypeField({ required: true, altersDynamicFields: true }), + ...itemSearchFields, + ], + sample: contentItemSample, + outputFields: contentItemOutputFields, + }, +}; + +type InputData = Readonly<{ + languageId: string; + contentTypeId: string; +}> & ItemSearchFieldsOutputType; diff --git a/src/searches/findLanguage.ts b/src/searches/findLanguage.ts new file mode 100644 index 0000000..ef5297e --- /dev/null +++ b/src/searches/findLanguage.ts @@ -0,0 +1,110 @@ +import { languageSearchFields, LanguageSearchFieldsOutput } from '../fields/filters/languageSearchFields'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { getLanguage } from '../utils/languages/getLanguage'; +import { getLanguageByCodename } from '../utils/languages/getLanguageByCodename'; +import { getLanguageByExternalId } from '../utils/languages/getLanguageByExternalId'; +import { OutputField } from '../fields/output/outputField'; +import { OutputFromOutputFields } from '../fields/output/outputFromOutputFields'; +import { LanguageModels } from '@kontent-ai/management-sdk'; + +async function execute(z: ZObject, bundle: KontentBundle): Promise { + const searchField = bundle.inputData.searchField; + const searchValue = bundle.inputData.searchValue; + + switch (searchField) { + case 'id': + return [await getLanguage(z, bundle, searchValue).then(prepareLanguageForOutput)]; + case 'codename': + return [await getLanguageByCodename(z, bundle, searchValue).then(prepareLanguageForOutput)]; + case 'externalId': + return [await getLanguageByExternalId(z, bundle, searchValue).then(prepareLanguageForOutput)]; + default: + return []; + } +} + +const outputFields = [ + { + key: 'id', + label: 'Language id', + type: 'string', + required: true, + }, + { + key: 'name', + label: 'Language name', + type: 'string', + required: true, + }, + { + key: 'codename', + label: 'Language codename', + type: 'string', + required: true, + }, + { + key: 'externalId', + label: 'Language externalId', + type: 'string', + }, + { + key: 'isActive', + label: 'Is language active', + type: 'boolean', + required: true, + }, + { + key: 'isDefault', + label: 'Is this the default language', + type: 'boolean', + required: true, + }, + { + key: 'fallbackLanguage__id', + label: 'Language id of a fallback language', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray>; + +export const findLanguage = { + noun: 'Language search', + display: { + hidden: false, + important: false, + description: 'Finds a language based on its ID, code name, or external ID.', + label: 'Find Language', + }, + key: 'find_language', + operation: { + perform: execute, + inputFields: [ + ...languageSearchFields, + ], + sample: { + id: '1c37a40c-9158-031d-9d2d-adf65a568cd6', + name: 'Czech', + codename: 'cz-CZ', + external_id: 'lang_czech', + is_active: true, + is_default: false, + fallback_language: { + id: '00000000-0000-0000-0000-000000000000', + }, + }, + }, +}; + +type InputData = LanguageSearchFieldsOutput; + +const prepareLanguageForOutput = (language: LanguageModels.LanguageModel): Output[number] => ({ + id: language.id, + codename: language.codename, + name: language.name, + externalId: language.externalId, + fallbackLanguage: { id: language.fallbackLanguage?.id }, + isActive: language.isActive, + isDefault: language.isDefault, +}); diff --git a/src/searches/findWorkflowStep.ts b/src/searches/findWorkflowStep.ts new file mode 100644 index 0000000..13d7d6e --- /dev/null +++ b/src/searches/findWorkflowStep.ts @@ -0,0 +1,91 @@ +import { getWorkflowSteps } from '../utils/workflows/getWorkflowSteps'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { OutputField } from '../fields/output/outputField'; +import { OutputFromOutputFields } from '../fields/output/outputFromOutputFields'; +import { WorkflowModels } from '@kontent-ai/management-sdk'; + +async function execute(z: ZObject, bundle: KontentBundle): Promise { + const stepName = bundle.inputData.stepName; + if (!stepName) { + return []; + } + + const workflowSteps = await getWorkflowSteps(z, bundle); + const search = stepName.toLowerCase(); + + const fullMatch = workflowSteps + .filter(step => step.name.toLowerCase() === search) + .map(prepareWorkflowStepOutput); + + if (fullMatch.length) { + return fullMatch; + } + + return workflowSteps + .filter(step => step.name.toLowerCase().includes(search)) + .map(prepareWorkflowStepOutput); +} + +const outputFields = [ + { + key: 'id', + label: 'Workflow step ID', + type: 'string', + required: true, + }, + { + key: 'name', + label: 'Name', + type: 'string', + required: true, + }, + { + key: 'transitionsTo', + label: 'Can transition to steps', + type: 'string', + required: true, + list: true, + } +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray>; + +export default { + noun: 'Workflow step search', + display: { + hidden: false, + important: false, + description: 'Finds a workflow step based on its name.', + label: 'Find Workflow Step', + }, + key: 'find_workflow_step', + operation: { + perform: execute, + inputFields: [ + { + label: 'Step name', + key: 'stepName', + helpText: 'Name of the workflow step, the search is case insensitive. If an exact match is not found, searches as a substring.', + type: 'string', + required: true, + }, + ], + sample: { + id: '88ac5e6e-1c5c-4638-96e1-0d61221ad5bf', + name: 'Draft', + transitionsTo: [], + }, + outputFields, + }, +}; + +type InputData = Readonly<{ + stepName: string; +}>; + +const prepareWorkflowStepOutput = (step: WorkflowModels.WorkflowStep): Output[number] => ({ + name: step.name, + id: step.id, + transitionsTo: step.transitionsTo +}); diff --git a/src/test/index.test.ts b/src/test/index.test.ts new file mode 100644 index 0000000..4ba307a --- /dev/null +++ b/src/test/index.test.ts @@ -0,0 +1,17 @@ +/* globals describe, expect, test */ + +import { createAppTester, tools } from 'zapier-platform-core'; +import App from '../index'; + +const appTester = createAppTester(App); + +describe('My App', () => { + + it('template test', (done) => { + const x = 1; + + expect(x).toBe(1); + done(); + }); + +}); diff --git a/src/triggers/dropdowns/getContentItems.ts b/src/triggers/dropdowns/getContentItems.ts new file mode 100644 index 0000000..064fee8 --- /dev/null +++ b/src/triggers/dropdowns/getContentItems.ts @@ -0,0 +1,43 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createDeliveryClient } from '../../utils/kontentServices/deliverClient'; +import { getLanguages } from '../../utils/languages/getLanguages'; +import { + deliveryItemOutputFields, + DeliveryItemOutputFields, + deliveryItemOutputFieldsSample, + prepareDeliveryItemForOutput, +} from '../../fields/output/deliveryItemOutputFields'; + +const execute = async (z: ZObject, bundle: KontentBundle<{}>): Promise => { + const languages = await getLanguages(z, bundle); + + return createDeliveryClient(z, bundle) + .items() + .queryConfig({ usePreviewMode: true }) + .limitParameter(10) + .skipParameter(10 * bundle.meta.page) + .depthParameter(0) + .orderByAscending('system.name') + .toAllPromise() + .then(res => res.data.items.map(prepareDeliveryItemForOutput(languages))); +}; + +type Output = ReadonlyArray; + +export default { + noun: 'Content item', + display: { + hidden: true, + important: false, + description: 'Gets content items for the input dropdown ordered by name.', + label: 'Get Content Items', + }, + key: 'get_content_items', + operation: { + perform: execute, + sample: deliveryItemOutputFieldsSample, + canPaginate: true, + outputFields: deliveryItemOutputFields, + }, +}; diff --git a/src/triggers/dropdowns/getContentTypes.ts b/src/triggers/dropdowns/getContentTypes.ts new file mode 100644 index 0000000..8020eca --- /dev/null +++ b/src/triggers/dropdowns/getContentTypes.ts @@ -0,0 +1,64 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { getContentTypes } from '../../utils/types/getContentTypes'; +import { OutputField } from '../../fields/output/outputField'; +import { OutputFromOutputFields } from '../../fields/output/outputFromOutputFields'; + +const execute = async (z: ZObject, bundle: KontentBundle<{}>): Promise => + getContentTypes(z, bundle) + .then(res => res.map(t => ({ + id: t.system.id, + name: t.system.name, + codename: t.system.codename, + lastModified: t.system.lastModified?.toString(), + }))); + +const outputFields = [ + { + key: 'codename', + label: 'Content type codename', + type: 'string', + }, + { + key: 'lastModified', + label: 'Last modified', + type: 'datetime', + }, + { + key: 'id', + label: 'Content type ID', + type: 'string', + }, + { + key: 'name', + label: 'Content type name', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray>; + +export default { + key: 'get_content_types', + noun: 'Content type choice', + display: { + label: 'Get Content type choices', + description: 'Gets content types for the input dropdown ordered by name.', + hidden: true, + }, + operation: { + type: 'polling', + perform: execute, + sample: { + 'elements': {}, + 'system': { + 'codename': 'about_us', + 'last_modified': '2018-02-27T18:50:42.3012044Z', + 'id': 'b2c14f2c-6467-460b-a70b-bca17972a33a', + 'name': 'About us', + }, + 'id': 'b2c14f2c-6467-460b-a70b-bca17972a33a', + }, + outputFields, + }, +}; diff --git a/src/triggers/dropdowns/getLanguages.ts b/src/triggers/dropdowns/getLanguages.ts new file mode 100644 index 0000000..e213109 --- /dev/null +++ b/src/triggers/dropdowns/getLanguages.ts @@ -0,0 +1,49 @@ +import { getLanguages } from '../../utils/languages/getLanguages'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { OutputField } from '../../fields/output/outputField'; +import { OutputFromOutputFields } from '../../fields/output/outputFromOutputFields'; + +const execute = (z: ZObject, bundle: KontentBundle<{}>): Promise => + getLanguages(z, bundle) + .then(res => res.map(l => ({ id: l.id, name: l.name, codename: l.codename }))); + +const outputFields = [ + { + key: 'id', + label: 'Language ID', + type: 'string', + }, + { + key: 'name', + label: 'Name', + type: 'string', + }, + { + key: 'codename', + label: 'Codename', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray> + +export default { + noun: 'Language', + display: { + hidden: true, + important: false, + description: 'Gets languages for the input dropdown, in the order, in which they are defined in Kentico Kontent.', + label: 'Get Languages', + }, + key: 'get_languages', + operation: { + perform: execute, + sample: { + id: '00000000-0000-0000-0000-000000000000', + codename: 'en-US', + name: 'English - United States', + }, + outputFields, + }, +}; diff --git a/src/triggers/dropdowns/getLinkedItems.ts b/src/triggers/dropdowns/getLinkedItems.ts new file mode 100644 index 0000000..14d55c3 --- /dev/null +++ b/src/triggers/dropdowns/getLinkedItems.ts @@ -0,0 +1,43 @@ +import { contentItemSample } from '../../fields/samples/contentItemSample'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createDeliveryClient } from '../../utils/kontentServices/deliverClient'; +import { getLanguages } from '../../utils/languages/getLanguages'; +import { + DeliveryItemOutputFields, + deliveryItemOutputFields, + prepareDeliveryItemForOutput, +} from '../../fields/output/deliveryItemOutputFields'; + +const execute = async (z: ZObject, bundle: KontentBundle<{}>): Promise => { + const languages = await getLanguages(z, bundle); + + return createDeliveryClient(z, bundle) + .items() + .queryConfig({ usePreviewMode: true }) + .depthParameter(0) + .limitParameter(10) + .skipParameter(10 * bundle.meta.page) + .orderByAscending('system.name') + .toAllPromise() + .then(res => res.data.items.map(prepareDeliveryItemForOutput(languages))); +}; + +type Output = ReadonlyArray + +export default { + noun: 'Linked item', + display: { + hidden: true, + important: false, + description: 'Gets content items for a linked items element ordered by name.', + label: 'Get Linked Items', +}, + key: 'get_linked_items', + operation: { + perform: execute, + sample: contentItemSample, + canPaginate: true, + outputFields: deliveryItemOutputFields, + }, +}; diff --git a/src/triggers/dropdowns/getWorkflowSteps.ts b/src/triggers/dropdowns/getWorkflowSteps.ts new file mode 100644 index 0000000..aba29ac --- /dev/null +++ b/src/triggers/dropdowns/getWorkflowSteps.ts @@ -0,0 +1,43 @@ +import { getWorkflowSteps } from '../../utils/workflows/getWorkflowSteps'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { OutputField } from '../../fields/output/outputField'; +import { OutputFromOutputFields } from '../../fields/output/outputFromOutputFields'; + +const execute = (z: ZObject, bundle: KontentBundle<{}>): Promise => + getWorkflowSteps(z, bundle) + .then(steps => steps.map(s => ({ id: s.id, name: s.name }))); + +const outputFields = [ + { + key: 'id', + label: 'Workflow step ID', + type: 'string', + }, + { + key: 'name', + label: 'Workflow step name', + type: 'string', + }, +] as const satisfies ReadonlyArray; + +type Output = ReadonlyArray>; + +export default { + noun: 'Workflow step', + display: { + hidden: true, + important: false, + description: 'Gets workflow steps for the input dropdown, in the order, in which they are defined in Kentico Kontent.', + label: 'Get Workflow Steps', + }, + key: 'get_workflow_steps', + operation: { + perform: execute, + sample: { + id: '88ac5e6e-1c5c-4638-96e1-0d61221ad5bf', + name: 'Draft', + }, + outputFields, + }, +}; diff --git a/src/triggers/triggerItemExistenceChanged.ts b/src/triggers/triggerItemExistenceChanged.ts new file mode 100644 index 0000000..466b3ed --- /dev/null +++ b/src/triggers/triggerItemExistenceChanged.ts @@ -0,0 +1,134 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { getSecret } from '../utils/getSecret'; +import { hasValidSignature } from '../utils/hasValidSignature'; +import { unsubscribeHook } from '../utils/unsubscribeHook'; +import { getTriggerSampleOutput } from '../fields/samples/getTriggerSampleOutput'; +import { getLanguageField } from '../fields/getLanguageField'; +import { getSampleItemExistencePayload } from '../fields/samples/getSampleItemExistencePayload'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; +import { parseWebhookContentChangeTrigger } from '../utils/webhooks/parseWebhookWorkflowTrigger'; +import { getContentTypeFieldForSamples } from '../fields/getContentTypeFieldForSamples'; + +const hookLabel = 'Variant Created, Deleted or Restored'; +const events = { + create: 'Create', + archive: 'Delete', + restore: 'Restore', +} as const; + +async function subscribeHook(z: ZObject, bundle: KontentBundle) { + //If no events were selected, respond to all of them + const watchedEvents = parseWebhookContentChangeTrigger(bundle.inputData.watchedEvents) ?? Object.keys(events); + + if (!bundle.targetUrl) { + throw new z.errors.Error('Missing targetUrl.'); + } + + return createManagementClient(z, bundle) + .addWebhook() + .withData({ + name: `${bundle.inputData.name || hookLabel} (Zapier)`, + url: bundle.targetUrl, + secret: getSecret(z, bundle), + triggers: { + management_api_content_changes: [ + { + type: 'content_item_variant', + operations: watchedEvents, + }, + ], + }, + }) + .toPromise() + .then(res => res.data); +} + +async function parsePayload(z: ZObject, bundle: KontentBundle) { + if (!hasValidSignature(z, bundle)) { + throw new Error('Unable to verify webhook signature.'); + } + + const items = bundle.cleanedRequest.data.items; + const item = items[0]; + if (!item) { + throw new z.errors.HaltedError('Skipped, no items found.'); + } + + const targetLanguageId = bundle.inputData.languageId; + if (targetLanguageId && (item.language.id !== targetLanguageId)) { + throw new z.errors.HaltedError('Skipped, language not matched.'); + } + + return [bundle.cleanedRequest]; +} + +export default { + key: 'management_item_existence_changed', + noun: hookLabel, + display: { + label: hookLabel, + description: 'Triggers when a language variant is created, deleted, or restored.', + }, + operation: { + inputFields: [ + { + label: 'Webhook name', + helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + key: 'name', + type: 'string', + }, + { + label: 'Events to watch', + helpText: 'Fires only when these events are performed on a language variant. Leave blank for all events.', + key: 'watchedEvents', + list: true, + choices: events, + }, + getLanguageField({ + helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', + }), + getContentTypeFieldForSamples, + ], + type: 'hook', + + performSubscribe: subscribeHook, + performUnsubscribe: unsubscribeHook, + + perform: parsePayload, + performList: (z: ZObject, bundle: KontentBundle) => + getTriggerSampleOutput(z, bundle) + .then(res => res?.map(i => getSampleItemExistencePayload(z, bundle, i))), + + sample: { + data: { + items: [ + { + item: { + id: '42c21e82-0772-4d79-a6b3-c916e51b24ff', + }, + language: { + id: '00000000-0000-0000-0000-000000000000', + }, + }, + ], + }, + message: { + id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', + project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', + type: 'content_item_variant', + operation: 'restore', + api_name: 'content_management', + created_timestamp: '2019-07-18T10:52:33.1059256Z', + webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732', + }, + }, + } +}; + +type InputData = Readonly<{ + name?: string; + watchedEvents?: ReadonlyArray; + languageId?: string; + contentTypeId?: string; +}>; diff --git a/src/triggers/triggerItemPublishChanged.ts b/src/triggers/triggerItemPublishChanged.ts new file mode 100644 index 0000000..3cfa1d8 --- /dev/null +++ b/src/triggers/triggerItemPublishChanged.ts @@ -0,0 +1,138 @@ +import { getSecret } from '../utils/getSecret'; +import { hasValidSignature } from '../utils/hasValidSignature'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; +import { unsubscribeHook } from '../utils/unsubscribeHook'; +import { getLanguage } from '../utils/languages/getLanguage'; +import { getTriggerSampleOutput } from '../fields/samples/getTriggerSampleOutput'; +import { getSampleItemPublishPayload } from '../fields/samples/getSampleItemPublishPayload'; +import { getLanguageField } from '../fields/getLanguageField'; +import { getContentTypeFieldForSamples } from '../fields/getContentTypeFieldForSamples'; +import { parseWebhookWorkflowTrigger } from '../utils/webhooks/parseWebhookWorkflowTrigger'; + +const hookLabel = 'Variant Published Status Changed'; + +const events = { + publish: 'Publish', + unpublish: 'Unpublish', +} as const; + +async function subscribeHook(z: ZObject, bundle: KontentBundle) { + //If no events were selected, respond to all of them + const watchedEvents = parseWebhookWorkflowTrigger(bundle.inputData.watchedEvents) ?? Object.keys(events); + + if (!bundle.targetUrl) { + throw new z.errors.Error('Missing targetUrl.'); + } + + return createManagementClient(z, bundle) + .addWebhook() + .withData({ + name: `${bundle.inputData.name || hookLabel} (Zapier)`, + url: bundle.targetUrl, + secret: getSecret(z, bundle), + enabled: true, + triggers: { + delivery_api_content_changes: [ + { + type: 'content_item_variant', + operations: watchedEvents, + }, + ], + }, + }) + .toPromise() + .then(res => res.data); +} + +async function parsePayload(z: ZObject, bundle: KontentBundle) { + if (!hasValidSignature(z, bundle)) { + throw new Error('Unable to verify webhook signature.'); + } + + const items = bundle.cleanedRequest.data.items; + const item = items[0]; + if (!item) { + throw new z.errors.HaltedError('Skipped, no items found.'); + } + + const targetLanguageId = bundle.inputData.languageId; + if (targetLanguageId) { + //language of POSTed item is a codename, get ID + const language = await getLanguage(z, bundle, targetLanguageId); + if (language.codename && (item.language !== language.codename)) { + throw new z.errors.HaltedError('Skipped, language not matched.'); + } + } + return [bundle.cleanedRequest]; +} + +export default { + key: 'deliver_variant_publish_changed', + noun: hookLabel, + display: { + important: true, + label: hookLabel, + description: 'Triggers when a language variant is published or unpublished.', + }, + operation: { + inputFields: [ + { + label: 'Webhook name', + helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + key: 'name', + type: 'string', + }, + { + label: 'Events to watch', + helpText: 'Fires only when these events are performed on a language. Leave blank for all events.', + key: 'watchedEvents', + list: true, + choices: events, + }, + getLanguageField({ + helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', + }), + getContentTypeFieldForSamples, + ], + type: 'hook', + + performSubscribe: subscribeHook, + performUnsubscribe: unsubscribeHook, + + perform: parsePayload, + performList: (z: ZObject, bundle: KontentBundle) => + getTriggerSampleOutput(z, bundle) + .then(res => res?.map(i => getSampleItemPublishPayload(z, bundle, i))), + + sample: { + data: { + items: [ + { + id: 'e113e464-bffb-4fbd-a29b-47991d003732', + codename: 'this_article_changed', + language: 'en-US', + type: 'article', + }, + ], + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', + type: 'content_item_variant', + operation: 'publish', + api_name: 'delivery_production', + created_timestamp: '2019-07-18T15:07:17.6823904Z', + webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732', + }, + }, + }, +}; + +type InputData = Readonly<{ + name?: string; + watchedEvents?: ReadonlyArray; + languageId?: string; + contentTypeId?: string; +}>; diff --git a/src/triggers/triggerTaxonomyChanged.ts b/src/triggers/triggerTaxonomyChanged.ts new file mode 100644 index 0000000..dee12e5 --- /dev/null +++ b/src/triggers/triggerTaxonomyChanged.ts @@ -0,0 +1,156 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { getSecret } from '../utils/getSecret'; +import { hasValidSignature } from '../utils/hasValidSignature'; +import { createDeliveryClient } from '../utils/kontentServices/deliverClient'; +import { taxonomyGroupSample } from '../fields/samples/taxonomyGroupSample'; +import { getSampleTaxonomyPayload } from '../fields/samples/getSampleTaxonomyPayload'; +import { unsubscribeHook } from '../utils/unsubscribeHook'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; +import { WebhookContracts } from '@kontent-ai/management-sdk'; + +const hookLabel = 'Taxonomy Group Changed'; +const numberOfSampleItems = 3; +const events = { + archive: 'Delete', + restore: 'Restore', + upsert: 'Create/Update', +} as const satisfies Readonly>>; + +const isValidEvent = (event: string): event is WebhookContracts.WebhookWorkflowStepOperationContract => + Object.keys(events).includes(event); + +async function subscribeHook(z: ZObject, bundle: KontentBundle) { + const watchedEvents = bundle.inputData.watchedEvents?.filter(isValidEvent) ?? Object.keys(events); + + return createManagementClient(z, bundle) + .addWebhook() + .withData({ + // bundle.targetUrl has the Hook URL this app should call when a recipe is created. + name: `${bundle.inputData.name || hookLabel} (Zapier)`, + url: bundle.targetUrl ?? '', + secret: getSecret(z, bundle), + triggers: { + delivery_api_content_changes: [ + { + type: 'taxonomy', + operations: watchedEvents, + }, + ], + }, + }) + .toPromise() + .then(res => res.data); +} + +async function parsePayload(z: ZObject, bundle: KontentBundle) { + if (!hasValidSignature(z, bundle)) { + throw new Error('Unable to verify webhook signature.'); + } + + const hookPayload = bundle.cleanedRequest; + const taxonomies = hookPayload.data.taxonomies; + const group = taxonomies[0]; + if (!group) { + throw new z.errors.HaltedError('Skipped, no taxonomy group found.'); + } + + //TODO make group dynamic input, check id instead + const targetCodename = bundle.inputData.targetCodename; + if (targetCodename && (group.codename !== targetCodename)) { + throw new z.errors.HaltedError('Skipped, codename not matched.'); + } + + return [bundle.cleanedRequest]; +} + +async function getSampleItems(z: ZObject, bundle: KontentBundle) { + const targetCodename = bundle.inputData.targetCodename; + + const promise = targetCodename + ? createDeliveryClient(z, bundle) + .taxonomy(targetCodename) + .toPromise() + .then(res => [res.data.taxonomy]) + : createDeliveryClient(z, bundle) + .taxonomies() + .toAllPromise() + .then(res => res.data.items); + + return promise + .then(res => res.length ? res.slice(0, numberOfSampleItems) : [taxonomyGroupSample]) + .then(res => res.map(g => getSampleTaxonomyPayload(bundle, g))); +} + +export default { + key: 'deliver_taxonomy_changed', + noun: hookLabel, + display: { + label: hookLabel, + description: 'Triggers when a taxonomy group is created, deleted, updated, or restored.', + }, + operation: { + inputFields: [ + { + label: 'Webhook name', + helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + key: 'name', + type: 'string', + }, + { + label: 'Events to watch', + helpText: 'Fires only when these events are performed on a taxonomy group. Leave blank for all events.', + key: 'watchedEvents', + list: true, + choices: events, + }, + { + label: 'Taxonomy group code name', + helpText: 'Fires only for the group of the give code name. Leave blank for all taxonomy groups.', + key: 'targetCodename', + type: 'string', + }, + ], + type: 'hook', + + performSubscribe: subscribeHook, + performUnsubscribe: unsubscribeHook, + + perform: parsePayload, + performList: getSampleItems, + + sample: { + data: { + items: [ + { + id: 'e113e464-bffb-4fbd-a29b-47991d003732', + codename: 'my_article', + language: 'en-US', + type: 'article', + }, + ], + taxonomies: [ + { + id: '13145328-b946-4e47-9c9d-6f40c7aaeaef', + codename: 'article_tags', + }, + ], + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', + type: 'taxonomy', + operation: 'upsert', + api_name: 'delivery_production', + created_timestamp: '2019-07-18T15:07:17.6823904Z', + webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732', + } + }, + }, +}; + +type InputData = Readonly<{ + name?: string; + watchedEvents?: ReadonlyArray; + targetCodename?: string; +}>; diff --git a/src/triggers/triggerWorkflowStatusChanged.ts b/src/triggers/triggerWorkflowStatusChanged.ts new file mode 100644 index 0000000..d75c308 --- /dev/null +++ b/src/triggers/triggerWorkflowStatusChanged.ts @@ -0,0 +1,135 @@ +import { ZObject } from 'zapier-platform-core'; +import { hasValidSignature } from '../utils/hasValidSignature'; +import { getWorkflowStepField } from '../fields/getWorkflowStepField'; +import { getLanguageField } from '../fields/getLanguageField'; +import { getContentTypeFieldForSamples } from '../fields/getContentTypeFieldForSamples'; +import { unsubscribeHook } from '../utils/unsubscribeHook'; +import { getTriggerSampleOutput } from '../fields/samples/getTriggerSampleOutput'; +import { KontentBundle } from '../types/kontentBundle'; +import { getSecret } from '../utils/getSecret'; +import { getSampleWorkflowPayload } from '../fields/samples/getSampleWorkflowPayload'; +import { createManagementClient } from '../utils/kontentServices/managementClient'; + + +const hookLabel = 'Variant Workflow Step Changed'; + +async function subscribeHook(z: ZObject, bundle: KontentBundle) { + const stepIDs = bundle.inputData.workflowStepIds.map(i => ({ id: i })); + + return createManagementClient(z, bundle) + .addWebhook() + .withData({ + name: `${bundle.inputData.name || hookLabel} (Zapier)`, + url: bundle.targetUrl ?? '', + secret: getSecret(z, bundle), + triggers: { + workflow_step_changes: [ + { + type: 'content_item_variant', + transitions_to: stepIDs, + }, + ], + }, + }) + .toPromise() + .then(res => ({ ...res.data })); +} + +async function parsePayload(z: ZObject, bundle: KontentBundle) { + if (!hasValidSignature(z, bundle)) { + throw new Error('Unable to verify webhook signature.'); + } + + const items = bundle.cleanedRequest.data.items; + const item = items[0]; + if (!item) { + throw new z.errors.HaltedError('Skipped, no items found.'); + } + + const languageId = bundle.inputData.languageId; + if (languageId && (item.language.id !== languageId)) { + throw new z.errors.HaltedError('Skipped, language not matched.'); + } + + const workflowStepIds = bundle.inputData.workflowStepIds; + if (workflowStepIds && (!workflowStepIds.includes(item.transition_to.id))) { + throw new z.errors.HaltedError('Skipped, target step not matched.'); + } + + return [bundle.cleanedRequest]; +} + +export default { + key: 'management_workflow_changed', + noun: hookLabel, + display: { + important: true, + label: hookLabel, + description: 'Triggers when a language variant workflow step changes.', + }, + operation: { + inputFields: [ + { + label: 'Webhook name', + helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + key: 'name', + type: 'string', + }, + getWorkflowStepField({ + required: true, + list: true, + helpText: 'Fires for the selected workflow steps.', + }), + getLanguageField({ + helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', + }), + getContentTypeFieldForSamples(), + ], + type: 'hook', + + performSubscribe: subscribeHook, + performUnsubscribe: unsubscribeHook, + + perform: parsePayload, + performList: (z: ZObject, bundle: KontentBundle) => + getTriggerSampleOutput(z, bundle) + .then(res => res?.map(i => getSampleWorkflowPayload(z, bundle, i))), + + sample: { + data: { + items: [ + { + item: { + id: 'e113e464-bffb-4fbd-a29b-47991d003732', + }, + language: { + id: '00000000-0000-0000-0000-000000000000', + }, + transition_from: { + id: '13145328-b946-4e47-9c9d-6f40c7aaeaef', + }, + transition_to: { + id: 'b4363ccd-8f21-45fd-a840-5843d7b7f008', + }, + }, + ], + }, + message: { + id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', + project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', + type: 'content_item_variant', + operation: 'change_workflow_step', + api_name: 'content_management', + created_timestamp: '2019-07-18T15:07:17.6823904Z', + webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732', + }, + }, + }, +}; + +type InputData = Readonly<{ + name?: string; + workflowStepIds: ReadonlyArray; + languageId?: string; + contentTypeId?: string; +}>; diff --git a/src/types/global.d.ts b/src/types/global.d.ts new file mode 100644 index 0000000..92ce20d --- /dev/null +++ b/src/types/global.d.ts @@ -0,0 +1,3 @@ +interface ObjectConstructor { + keys(o: Readonly>): TKey[]; +} diff --git a/src/types/kontentBundle.ts b/src/types/kontentBundle.ts new file mode 100644 index 0000000..adcc791 --- /dev/null +++ b/src/types/kontentBundle.ts @@ -0,0 +1,11 @@ +import { Bundle } from 'zapier-platform-core'; + +export type KontentBundle>> = + Omit, 'authData'> & Readonly<{ authData: AuthData }>; + +type AuthData = Readonly<{ + projectId: string; + cmApiKey: string; + previewApiKey: string; + secureApiKey?: string; +}>; diff --git a/src/utils/assets/getAsset.ts b/src/utils/assets/getAsset.ts new file mode 100644 index 0000000..f67f605 --- /dev/null +++ b/src/utils/assets/getAsset.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getAsset = (z: ZObject, bundle: KontentBundle<{}>, assetId: string) => + createManagementClient(z, bundle) + .viewAsset() + .byAssetId(assetId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/assets/getAssetByExternalId.ts b/src/utils/assets/getAssetByExternalId.ts new file mode 100644 index 0000000..5ba9c56 --- /dev/null +++ b/src/utils/assets/getAssetByExternalId.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getAssetByExternalId = async (z: ZObject, bundle: KontentBundle<{}>, externalId: string) => + createManagementClient(z, bundle) + .viewAsset() + .byAssetExternalId(externalId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/elements/getElementsForUpsert.ts b/src/utils/elements/getElementsForUpsert.ts new file mode 100644 index 0000000..ba700c4 --- /dev/null +++ b/src/utils/elements/getElementsForUpsert.ts @@ -0,0 +1,99 @@ +import { getContentTypeElements } from '../../fields/elements/getContentTypeElements'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { ContentTypeElements, ElementModels } from '@kontent-ai/management-sdk'; +import { ElementFields } from '../../fields/elements/getItemElementFields'; + +type ElementValue = ElementModels.ContentItemElement['value']; +type RawElementValue = string | string[] | number | undefined; + +const getElementValue = (value: RawElementValue, element: ContentTypeElements.ContentTypeElementModel): ElementValue => { + switch (element.type) { + case 'rich_text': { + if (typeof value === 'string' && value.trim().startsWith('<')) { + return value; + } + return `

${value}

`; + } + + case 'text': + case 'custom': + case 'number': + case 'date_time': + case 'url_slug': { + if (Array.isArray(value)) { + throw new Error(`Invalid value of type array for element of type ${element.type}.`); + } + + return value; + } + + case 'modular_content': + if (!Array.isArray(value)) { + return value; + } + return value.map(item => { + //try to determine if it's an ID or external ID + return item.length == 36 && (item.match(/-/g) || []).length === 4 + ? { id: item } + : { external_id: item }; + }); + + case 'multiple_choice': + case 'asset': + case 'taxonomy': { + if (!Array.isArray(value)) { + return value; + } + + return value.map(item => { + //try to determine if it's an ID or codename + if (item.length == 36 && (item.match(/-/g) || []).length === 4) { + return { id: item }; + } + else { + return { codename: item }; + } + }); + } + + case 'guidelines': + default: + return undefined; + } +}; + +type Element = Omit; +export const getElementsForUpsert = (z: ZObject, bundle: KontentBundle, contentTypeId: string): Promise> => + getContentTypeElements(z, bundle, contentTypeId) + .then(typeElements => typeElements + .map(element => { + const value = getElementValue(bundle.inputData[`elements__${element.codename}`], element); + if (!value) { + return undefined; + } + + const resultElement = { + element: { + id: element.id, + }, + value: value, + }; + + switch (element.type) { + case 'url_slug': + return { + ...resultElement, + mode: value !== '' ? 'custom' as const : undefined, + }; + default: + return resultElement; + } + }) + .filter(notUndefined), + ); + +export type ExpectedInputData = ElementFields; + +const notUndefined = (v: T | undefined): v is T => + v !== undefined; diff --git a/src/utils/elements/isElementWithName.ts b/src/utils/elements/isElementWithName.ts new file mode 100644 index 0000000..75e40af --- /dev/null +++ b/src/utils/elements/isElementWithName.ts @@ -0,0 +1,8 @@ +import { ContentTypeElements } from '@kontent-ai/management-sdk'; + +export const isElementWithName = (element: Element): element is Exclude => + !['guidelines', 'snippet', 'taxonomy'].includes(element.type); + +type ElementWithoutName = ContentTypeElements.IGuidelinesElement | + ContentTypeElements.ITaxonomyElement | + ContentTypeElements.ISnippetElement; diff --git a/src/utils/getSecret.ts b/src/utils/getSecret.ts new file mode 100644 index 0000000..9c6e822 --- /dev/null +++ b/src/utils/getSecret.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import * as crypto from 'crypto'; +import { KontentBundle } from '../types/kontentBundle'; + +const key = 'BP7XqTLDp_9WzvX6BOfsF9mkI25pPD4n4r4FS1d6Fx2pUgXasRDpCOL6tEcnUmVW_MXrc2BRQG1FWu60NHb0tVc'; + +export function getSecret(z: ZObject, bundle: KontentBundle<{}>) { + const zapID = (bundle.authData.projectId ?? '') + (bundle.authData.cmApiKey ?? '') + bundle.authData.previewApiKey; + return crypto.createHmac('sha256', key).update(zapID, 'utf8').digest('base64'); +} diff --git a/src/utils/hasValidSignature.ts b/src/utils/hasValidSignature.ts new file mode 100644 index 0000000..82aea75 --- /dev/null +++ b/src/utils/hasValidSignature.ts @@ -0,0 +1,14 @@ +import * as crypto from 'crypto'; +import { getSecret } from './getSecret'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; + +export function hasValidSignature(z: ZObject, bundle: KontentBundle<{}>) { + const secret = getSecret(z, bundle); + const givenSignature = bundle.rawRequest?.headers?.['Http-X-Kc-Signature'] ?? ''; + const computedSignature = crypto.createHmac('sha256', secret) + .update(bundle.rawRequest?.content ?? '') + .digest(); + + return crypto.timingSafeEqual(Buffer.from(givenSignature, 'base64'), computedSignature); +} diff --git a/src/utils/items/create/createItem.ts b/src/utils/items/create/createItem.ts new file mode 100644 index 0000000..4cb6c2d --- /dev/null +++ b/src/utils/items/create/createItem.ts @@ -0,0 +1,30 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createManagementClient } from '../../kontentServices/managementClient'; + +type Params = Readonly<{ + name: string; + contentTypeId: string; + externalId?: string; +}>; + +export const createItem = async (z: ZObject, bundle: KontentBundle<{}>, params: Params) => { + const client = createManagementClient(z, bundle); + + return client + .viewContentType() + .byTypeId(params.contentTypeId) + .toPromise() + .then(res => res.data) + .then(contentType => client + .addContentItem() + .withData({ + name: params.name, + type: { + codename: contentType.codename, + }, + external_id: params.externalId, + }) + .toPromise() + .then(res => res.data)); +}; diff --git a/src/utils/items/delete/deleteVariant.ts b/src/utils/items/delete/deleteVariant.ts new file mode 100644 index 0000000..9d6fa03 --- /dev/null +++ b/src/utils/items/delete/deleteVariant.ts @@ -0,0 +1,16 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createManagementClient } from '../../kontentServices/managementClient'; + +type Params = Readonly<{ + itemId: string; + languageId: string; +}>; + +export const deleteVariant = async (z: ZObject, bundle: KontentBundle<{}>, params: Params) => + createManagementClient(z, bundle) + .deleteLanguageVariant() + .byItemId(params.itemId) + .byLanguageId(params.languageId) + .toPromise() + .then(res => res.debug.response.status); diff --git a/src/utils/items/get/findContentItem.ts b/src/utils/items/get/findContentItem.ts new file mode 100644 index 0000000..40dbec4 --- /dev/null +++ b/src/utils/items/get/findContentItem.ts @@ -0,0 +1,72 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { findItemByIdentifier } from './findItemByIdentifier'; +import { getItemVariant } from './getItemVariant'; +import { getItemResult } from './getItemResult'; +import { getFilterParams } from './getFilterParams'; +import { getContentType } from '../../types/getContentType'; +import { createDeliveryClient } from '../../kontentServices/deliverClient'; +import { getContentItem } from './getContentItem'; +import { getLanguage } from '../../languages/getLanguage'; + +async function findContentItemByIdentifier(z: ZObject, bundle: KontentBundle) { + const item = await findItemByIdentifier(z, bundle, bundle.inputData.searchField, bundle.inputData.searchValue); + if (!item) { + // Not found + return null; + } + + const variant = await getItemVariant(z, bundle, item.id, bundle.inputData.languageId || ''); + if (!variant) { + // Not found + return null; + } + + // Found + const contentItem = await getItemResult(z, bundle, item, variant); + + return [contentItem]; +} + +async function findContentItemByElement(z: ZObject, bundle: KontentBundle) { + const searchParams = getFilterParams(bundle.inputData); + + // Translate IDs to code names for use with Delivery API + const contentType = bundle.inputData.contentTypeId && await getContentType(z, bundle, bundle.inputData.contentTypeId); + const contentTypeCodename = contentType && contentType.codename; + + const language = bundle.inputData.languageId && await getLanguage(z, bundle, bundle.inputData.languageId); + const languageCode = language && language.codename; + + const queryWithoutLanguage = createDeliveryClient(z, bundle) + .itemsFeed() + .withParameters(searchParams.map(([paramKey, paramValue]) => ({ getParam: () => `${paramKey}=${paramValue}` }))) + .types(contentTypeCodename ? [contentTypeCodename] : []) + .queryConfig({ usePreviewMode: true }) + .limitParameter(1); + + const query = languageCode + ? queryWithoutLanguage.languageParameter(languageCode) + : queryWithoutLanguage; + + return query + .toPromise() + .then(res => res.data.items) + .then(async ([firstItem]) => firstItem + ? [await getContentItem(z, bundle, firstItem.system.id, bundle.inputData.languageId || '')].filter(notNull) + : []); +} + +export const findContentItem = (z: ZObject, bundle: KontentBundle) => + findContentItemByIdentifier(z, bundle) + .then(res => res ?? findContentItemByElement(z, bundle)); + +type ExpectedInputData = Readonly<{ + languageId?: string; + contentTypeId?: string; + searchField: string; + searchValue: string; + searchPattern: string +}>; + +const notNull = (v: T | null): v is T => v !== null; diff --git a/src/utils/items/get/findItemByIdentifier.ts b/src/utils/items/get/findItemByIdentifier.ts new file mode 100644 index 0000000..6958067 --- /dev/null +++ b/src/utils/items/get/findItemByIdentifier.ts @@ -0,0 +1,41 @@ +import { getItem } from './getItem'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { ZObject } from 'zapier-platform-core'; + +const createIdentifier = (searchField: string, searchValue: string) => { + if (!searchValue) { + throw new Error(`Missing search value for ${searchField}`); + } + const value = searchValue; + + switch (searchField) { + case 'externalId': + return { + type: 'externalId' as const, + value, + }; + case 'id': + return { + type: 'id' as const, + value, + }; + case 'system.codename': + return { + type: 'codename' as const, + value, + }; + default: + return null; + } +}; + +export async function findItemByIdentifier(z: ZObject, bundle: KontentBundle<{}>, searchField: string, searchValue: string) { + const identifier = createIdentifier(searchField, searchValue); + if (!identifier) { + return null; + } + + const item = await getItem(z, bundle, identifier); + + return item || null; +} diff --git a/src/utils/items/get/getAllItemsDelivery.ts b/src/utils/items/get/getAllItemsDelivery.ts new file mode 100644 index 0000000..78b4b84 --- /dev/null +++ b/src/utils/items/get/getAllItemsDelivery.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createDeliveryClient } from '../../kontentServices/deliverClient'; + +export const getAllItemsDelivery = async (z: ZObject, bundle: KontentBundle<{}>) => + createDeliveryClient(z, bundle) + .itemsFeed() + .queryConfig({ usePreviewMode: true }) + .toAllPromise() + .then(res => res.data.items); diff --git a/src/utils/items/get/getContentItem.ts b/src/utils/items/get/getContentItem.ts new file mode 100644 index 0000000..899d6bf --- /dev/null +++ b/src/utils/items/get/getContentItem.ts @@ -0,0 +1,19 @@ +import { getItem } from './getItem'; +import { getItemResult } from './getItemResult'; +import { getItemVariant } from './getItemVariant'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; + +export const getContentItem = async (z: ZObject, bundle: KontentBundle<{}>, itemId: string, languageId: string) => { + const item = await getItem(z, bundle, { type: 'id', value: itemId }); + if (!item) { + return null; + } + + const variant = await getItemVariant(z, bundle, itemId, languageId); + if (!variant) { + return null; + } + + return await getItemResult(z, bundle, item, variant); +}; diff --git a/src/utils/items/get/getFilterParams.ts b/src/utils/items/get/getFilterParams.ts new file mode 100644 index 0000000..ad94a55 --- /dev/null +++ b/src/utils/items/get/getFilterParams.ts @@ -0,0 +1,17 @@ +type Params = Readonly<{ + searchField: string; + searchPattern?: string; + searchValue: string; +}>; + +export const getFilterParams = (params: Params): ReadonlyArray => { + const filterQuery = (params.searchPattern || '{0}={1}') + .replace('{0}', encodeURIComponent(params.searchField)) + .replace('{1}', encodeURIComponent(params.searchValue)); + + return filterQuery + .split('&') + .map(part => part.split('=')) + .filter((part): part is [string, string] => part.length === 2) + .map(([part1, part2]) => [decodeURIComponent(part1), decodeURIComponent(part2)]); +}; diff --git a/src/utils/items/get/getItem.ts b/src/utils/items/get/getItem.ts new file mode 100644 index 0000000..07666b6 --- /dev/null +++ b/src/utils/items/get/getItem.ts @@ -0,0 +1,29 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createManagementClient } from '../../kontentServices/managementClient'; +import { ContentItemIdentifierQuery, ViewContentItemQuery } from '@kontent-ai/management-sdk'; + +type Identifier = Readonly<{ + type: 'id' | 'externalId' | 'codename'; + value: string; +}>; + +export function getItem(z: ZObject, bundle: KontentBundle<{}>, identifier: Identifier) { + const client = createManagementClient(z, bundle) + .viewContentItem(); + + return addIdentifier(client, identifier) + .toPromise() + .then(res => res.data); +} + +const addIdentifier = (query: ContentItemIdentifierQuery, identifier: Identifier): ViewContentItemQuery => { + switch (identifier.type) { + case 'id': + return query.byItemId(identifier.value); + case 'codename': + return query.byItemCodename(identifier.value); + case 'externalId': + return query.byItemExternalId(identifier.value); + } +}; diff --git a/src/utils/items/get/getItemResult.ts b/src/utils/items/get/getItemResult.ts new file mode 100644 index 0000000..25e0813 --- /dev/null +++ b/src/utils/items/get/getItemResult.ts @@ -0,0 +1,146 @@ +import { getItemVariant } from './getItemVariant'; +import { findItemByIdentifier } from './findItemByIdentifier'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { getContentType } from '../../types/getContentType'; +import { getLanguage } from '../../languages/getLanguage'; +import { + ContentItemModels, + ContentTypeElements, + ContentTypeModels, + ElementModels, + LanguageVariantModels, + SharedModels, +} from '@kontent-ai/management-sdk'; + +async function findContentItemByIdentifier(z: ZObject, bundle: KontentBundle<{}>, languageId: string, itemId: string) { + const item = await findItemByIdentifier(z, bundle, 'id', itemId); + if (!item) { + // Not found + return null; + } + + const variant = await getItemVariant(z, bundle, item.id, languageId); + if (!variant) { + // Not found + return null; + } + + // Found + return await getItemResult(z, bundle, item, variant, false); +} + +const isReferenceObjectsArray = (v: string | number | undefined | SharedModels.IReferenceObject[]): v is SharedModels.IReferenceObject[] => + Array.isArray(v) && !!v.length && v.some(o => typeof o === 'object' && o !== null); + +function getElementValue(element: ElementModels.ContentItemElement, typeElement: ContentTypeElements.ContentTypeElementModel): string | number | string[] | undefined { + const value = element.value; + switch (typeElement.type) { + case 'text': + case 'rich_text': + case 'custom': + case 'number': + case 'date_time': + case 'url_slug': { + if (isReferenceObjectsArray(value)) { + throw new Error(`Element of type ${typeElement.type} contains reference objects. This should not happen.`); + } + return value; + } + + case 'modular_content': + case 'multiple_choice': + case 'asset': + case 'taxonomy': + return (value as SharedModels.IReferenceObject[] | undefined)?.map(item => item.id || ''); + + default: { + if (isReferenceObjectsArray(value)) { + throw new Error(`Element of type ${typeElement.type} contains reference objects. This should not happen.`); + } + return value; + } + } +} + +const getElements = (z: ZObject, bundle: KontentBundle<{}>, variant: LanguageVariantModels.ContentItemLanguageVariant, contentType: ContentTypeModels.ContentType) => + Object.fromEntries(variant.elements + .flatMap(element => { + const typeElement = contentType.elements.find(el => el.id === element.element.id); + if (!typeElement || typeElement.type === 'guidelines') { + return []; + } + return [ + // bad SDK types, even snippet element should have codename + [ + (typeElement as Exclude).codename || '', + getElementValue(element, typeElement), + ] as const, + ]; + })); + +async function getLinkedItems(z: ZObject, bundle: KontentBundle<{}>, variant: LanguageVariantModels.ContentItemLanguageVariant, contentType: ContentTypeModels.ContentType) { + const linkeditemsPromises = contentType.elements + .filter((el): el is ContentTypeElements.ILinkedItemsElement => el.type === 'modular_content') + .map(typeEl => variant.elements.find(el => el.element.id === typeEl.id)) + .flatMap(el => { + if (!el || !Array.isArray(el.value)) { + return []; + } + return el.value.map(item => findContentItemByIdentifier(z, bundle, variant.language.id || '', item.id || '')); + }); + + return Promise.all(linkeditemsPromises); +} + +export async function getItemResult(z: ZObject, bundle: KontentBundle<{}>, item: ContentItemModels.ContentItem, variant: LanguageVariantModels.ContentItemLanguageVariant, doModular = true): Promise { + const contentType = await getContentType(z, bundle, item.type.id); + const language = await getLanguage(z, bundle, variant.language.id || ''); + const elements = getElements(z, bundle, variant, contentType); + + //get modular content and set doModular to false in order prevent too much depth + const modular = doModular + ? await getLinkedItems(z, bundle, variant, contentType) + : []; + + const projectId = bundle.authData.projectId; + const fullId = `${item.id}/${variant.language.id}`; + + return { + system: { + projectId, + id: item.id, + name: item.name, + codename: item.codename, + type: contentType.codename, + language: language.codename, + externalId: item.externalId || '', + lastModified: variant.lastModified.toString(), + fullId: fullId, + workflowStepId: variant.workflowStep.id || '', + contentTypeId: item.type.id, + languageId: variant.language.id || '', + }, + elements: elements, + modular_content: z.JSON.stringify(modular), + }; +} + +type ItemResult = Readonly<{ + system: Readonly<{ + projectId: string; + id: string; + name: string; + codename: string; + type: string; + language: string; + externalId: string; + lastModified: string; + fullId: string; + workflowStepId: string; + contentTypeId: string; + languageId: string; + }>; + elements: Readonly>; + modular_content: string; +}>; diff --git a/src/utils/items/get/getItemVariant.ts b/src/utils/items/get/getItemVariant.ts new file mode 100644 index 0000000..2b3534f --- /dev/null +++ b/src/utils/items/get/getItemVariant.ts @@ -0,0 +1,20 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createManagementClient } from '../../kontentServices/managementClient'; + +const defaultLanguageId = '00000000-0000-0000-0000-000000000000'; + +export const getItemVariant = (z: ZObject, bundle: KontentBundle<{}>, itemId: string, languageId: string | null) => + createManagementClient(z, bundle) + .listLanguageVariantsOfItem() + .byItemId(itemId) + .toPromise() + .then(res => res.data.items) + .then(variants => { + const variantId = languageId || defaultLanguageId; + + return variants.find(v => v.language.id === variantId) || + variants.find(v => v.language.id === defaultLanguageId) || + variants[0] || + null; + }); diff --git a/src/utils/items/get/getVariant.ts b/src/utils/items/get/getVariant.ts new file mode 100644 index 0000000..e2ada78 --- /dev/null +++ b/src/utils/items/get/getVariant.ts @@ -0,0 +1,11 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; +import { createManagementClient } from '../../kontentServices/managementClient'; + +export const getVariant = async (z: ZObject, bundle: KontentBundle<{}>, itemId: string, languageId: string) => + createManagementClient(z, bundle) + .viewLanguageVariant() + .byItemId(itemId) + .byLanguageId(languageId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/items/update/upsertVariant.ts b/src/utils/items/update/upsertVariant.ts new file mode 100644 index 0000000..03f6110 --- /dev/null +++ b/src/utils/items/update/upsertVariant.ts @@ -0,0 +1,22 @@ +import { createManagementClient } from '../../kontentServices/managementClient'; +import { ExpectedInputData, getElementsForUpsert } from '../../elements/getElementsForUpsert'; +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../../types/kontentBundle'; + +type Params = Readonly<{ + itemId: string; + languageId: string; + contentTypeId: string; +}>; + +export const upsertVariant = async (z: ZObject, bundle: KontentBundle, params: Params) => { + const elements = await getElementsForUpsert(z, bundle, params.contentTypeId); + + return createManagementClient(z, bundle) + .upsertLanguageVariant() + .byItemId(params.itemId) + .byLanguageId(params.languageId) + .withData(builder => elements.map(builder.any)) + .toPromise() + .then(res => res.data); +}; diff --git a/src/utils/kontentServices/deliverClient.ts b/src/utils/kontentServices/deliverClient.ts new file mode 100644 index 0000000..87f6445 --- /dev/null +++ b/src/utils/kontentServices/deliverClient.ts @@ -0,0 +1,12 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { DeliveryClient } from '@kontent-ai/delivery-sdk'; +import { createHttpService } from './httpService'; + +export const createDeliveryClient = (z: ZObject, bundle: KontentBundle<{}>) => + new DeliveryClient({ + projectId: bundle.authData.projectId, + secureApiKey: bundle.authData.secureApiKey, + httpService: createHttpService(z), + previewApiKey: bundle.authData.previewApiKey, + }); diff --git a/src/utils/kontentServices/httpService.ts b/src/utils/kontentServices/httpService.ts new file mode 100644 index 0000000..6eae453 --- /dev/null +++ b/src/utils/kontentServices/httpService.ts @@ -0,0 +1,82 @@ +import { HttpResponse, ZObject } from 'zapier-platform-core'; +import { IDeliveryClientConfig } from '@kontent-ai/delivery-sdk'; + +export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpService'] => ({ + getAsync: (call, options) => + z.request({ + method: 'GET', + url: call.url, + headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + }) + .then(handleErrors) + .then(createResponse), + + patchAsync: (call, options) => + z.request({ + method: 'PATCH', + url: call.url, + body: z.JSON.stringify(call.body), + headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + }) + .then(handleErrors) + .then(createResponse), + + putAsync: (call, options) => + z.request({ + method: 'PUT', + url: call.url, + body: z.JSON.stringify(call.body), + headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + }) + .then(handleErrors) + .then(createResponse), + + postAsync: (call, options) => + z.request({ + method: 'POST', + url: call.url, + body: z.JSON.stringify(call.body), + headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + }) + .then(handleErrors) + .then(createResponse), + + deleteAsync: (call, options) => + z.request({ + method: 'DELETE', + url: call.url, + headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + }) + .then(handleErrors) + .then(createResponse), + + createCancelToken: () => ({ + token: null, + cancel: () => { + }, + }), +}); + +const createResponse = (res: HttpResponse) => ({ + status: res.status, + headers: Object.entries(res.headers).map(([header, value]) => ({ header, value })), + data: res.data, + rawResponse: res.content, + retryStrategy: { + options: {}, + retryAttempts: 0, + }, +}); + +export const handleErrors = (response: HttpResponse) => { + if (response.status === 400) { + throw new Error(`Request failed with code ${response.status}.\nResponse: ${response.content}`); + } + if (response.status === 401) { + throw new Error(`Request failed with code 401. Please disable Secure Access in Kentico Kontent or provide a Secure Access key.`); + } + + response.throwForStatus(); + + return response; +}; diff --git a/src/utils/kontentServices/managementClient.ts b/src/utils/kontentServices/managementClient.ts new file mode 100644 index 0000000..a56030b --- /dev/null +++ b/src/utils/kontentServices/managementClient.ts @@ -0,0 +1,11 @@ +import { ZObject } from 'zapier-platform-core'; +import { ManagementClient } from '@kontent-ai/management-sdk'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createHttpService } from './httpService'; + +export const createManagementClient = (z: ZObject, bundle: KontentBundle<{}>) => + new ManagementClient({ + apiKey: bundle.authData.cmApiKey, + projectId: bundle.authData.projectId, + httpService: createHttpService(z), + }); diff --git a/src/utils/languages/getLanguage.ts b/src/utils/languages/getLanguage.ts new file mode 100644 index 0000000..efcf959 --- /dev/null +++ b/src/utils/languages/getLanguage.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getLanguage = async (z: ZObject, bundle: KontentBundle<{}>, languageId: string) => + createManagementClient(z, bundle) + .viewLanguage() + .byLanguageId(languageId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/languages/getLanguageByCodename.ts b/src/utils/languages/getLanguageByCodename.ts new file mode 100644 index 0000000..85a5825 --- /dev/null +++ b/src/utils/languages/getLanguageByCodename.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getLanguageByCodename = (z: ZObject, bundle: KontentBundle<{}>, codename: string) => + createManagementClient(z, bundle) + .viewLanguage() + .byLanguageCodename(codename) + .toPromise() + .then(res => res.data); diff --git a/src/utils/languages/getLanguageByExternalId.ts b/src/utils/languages/getLanguageByExternalId.ts new file mode 100644 index 0000000..555496c --- /dev/null +++ b/src/utils/languages/getLanguageByExternalId.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getLanguageByExternalId = async (z: ZObject, bundle: KontentBundle<{}>, externalId: string) => + createManagementClient(z, bundle) + .viewLanguage() + .byExternalId(externalId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/languages/getLanguages.ts b/src/utils/languages/getLanguages.ts new file mode 100644 index 0000000..107d5cd --- /dev/null +++ b/src/utils/languages/getLanguages.ts @@ -0,0 +1,9 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getLanguages = (z: ZObject, bundle: KontentBundle<{}>) => + createManagementClient(z, bundle) + .listLanguages() + .toAllPromise() + .then(res => res.data.items); diff --git a/src/utils/types/getContentType.ts b/src/utils/types/getContentType.ts new file mode 100644 index 0000000..3a19d48 --- /dev/null +++ b/src/utils/types/getContentType.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getContentType = (z: ZObject, bundle: KontentBundle<{}>, contentTypeId: string) => + createManagementClient(z, bundle) + .viewContentType() + .byTypeId(contentTypeId) + .toPromise() + .then(res => res.data); diff --git a/src/utils/types/getContentTypes.ts b/src/utils/types/getContentTypes.ts new file mode 100644 index 0000000..32538c4 --- /dev/null +++ b/src/utils/types/getContentTypes.ts @@ -0,0 +1,10 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createDeliveryClient } from '../kontentServices/deliverClient'; + +export const getContentTypes = async (z: ZObject, bundle: KontentBundle<{}>) => + createDeliveryClient(z, bundle) + .types() + .queryConfig({ usePreviewMode: true }) + .toAllPromise() + .then(res => res.data.items); diff --git a/src/utils/unsubscribeHook.ts b/src/utils/unsubscribeHook.ts new file mode 100644 index 0000000..4f13683 --- /dev/null +++ b/src/utils/unsubscribeHook.ts @@ -0,0 +1,16 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../types/kontentBundle'; +import { createManagementClient } from './kontentServices/managementClient'; + +export function unsubscribeHook(z: ZObject, bundle: KontentBundle<{}>): Promise { + // bundle.subscribeData contains the parsed response JSON from the subscribe + // request made initially. + const webhook = bundle.subscribeData; + + return createManagementClient(z, bundle) + .deleteWebhook() + .byId(webhook?.id ?? '') + .toPromise() + .then(() => { + }); +} diff --git a/src/utils/webhooks/parseWebhookWorkflowTrigger.ts b/src/utils/webhooks/parseWebhookWorkflowTrigger.ts new file mode 100644 index 0000000..90905b4 --- /dev/null +++ b/src/utils/webhooks/parseWebhookWorkflowTrigger.ts @@ -0,0 +1,21 @@ +import { WebhookContracts } from '@kontent-ai/management-sdk'; + +export const parseWebhookWorkflowTrigger = (v: unknown): WebhookContracts.WebhookWorkflowStepOperationContract[] | null => + isArrayOf(isWebhookWorkflowEvent, v) + ? v + : null; + +export const parseWebhookContentChangeTrigger = (v: unknown): WebhookContracts.WebhookManagementContentChangesOperations[] | null => + isArrayOf(isWebhookContentChangeEvent, v) + ? v + : null; + +const isArrayOf = (guard: (v: unknown) => v is T, v: unknown): v is T[] => + Array.isArray(v) && + v.every(guard); + +const isWebhookWorkflowEvent = (v: unknown): v is WebhookContracts.WebhookWorkflowStepOperationContract => + typeof v === 'string' && ['publish', 'unpublish', 'archive', 'restore', 'upsert'].includes(v); + +const isWebhookContentChangeEvent = (v: unknown): v is WebhookContracts.WebhookManagementContentChangesOperations => + typeof v === 'string' && ['archive', 'create', 'restore'].includes(v); diff --git a/src/utils/workflows/getWorkflowSteps.ts b/src/utils/workflows/getWorkflowSteps.ts new file mode 100644 index 0000000..803a5a8 --- /dev/null +++ b/src/utils/workflows/getWorkflowSteps.ts @@ -0,0 +1,9 @@ +import { ZObject } from 'zapier-platform-core'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createManagementClient } from '../kontentServices/managementClient'; + +export const getWorkflowSteps = async (z: ZObject, bundle: KontentBundle<{}>) => + createManagementClient(z, bundle) + .listWorkflowSteps() + .toPromise() + .then(res => res.data); diff --git a/src/utils/workflows/stepCheckers.ts b/src/utils/workflows/stepCheckers.ts new file mode 100644 index 0000000..ebb70fd --- /dev/null +++ b/src/utils/workflows/stepCheckers.ts @@ -0,0 +1,17 @@ +import { WorkflowModels } from '@kontent-ai/management-sdk'; + +export const isPublishedWorkflowStep = (stepId: string, workflowSteps: ReadonlyArray) => { + const nextToLastStep = workflowSteps[workflowSteps.length - 2]; + + return nextToLastStep && + nextToLastStep.id === stepId && + nextToLastStep.name === 'Published'; +}; + +export const isScheduledWorkflowStep = (workflowStepId: string, workflowSteps: ReadonlyArray) => { + const stepBeforePublish = workflowSteps[workflowSteps.length - 3]; + + return stepBeforePublish && + stepBeforePublish.id === workflowStepId && + stepBeforePublish.name === 'Scheduled'; +}; diff --git a/test/index.js b/test/index.js deleted file mode 100644 index ef7dc88..0000000 --- a/test/index.js +++ /dev/null @@ -1,17 +0,0 @@ -require('should'); - -const zapier = require('zapier-platform-core'); - -// Use this to make test calls into your app: -const App = require('../index'); -const appTester = zapier.createAppTester(App); - -describe('My App', () => { - - it('template test', (done) => { - const x = 1; - x.should.eql(1); - done(); - }); - -}); diff --git a/triggers/dropdowns/getContentItems.js b/triggers/dropdowns/getContentItems.js deleted file mode 100644 index 4317cfa..0000000 --- a/triggers/dropdowns/getContentItems.js +++ /dev/null @@ -1,54 +0,0 @@ -const handleErrors = require('../../utils/handleErrors'); -const contentItemSample = require('../../fields/samples/contentItemSample'); -const standardizedSystemOutputFields = require('../../fields/output/standardizedSystemOutputFields'); - -async function execute(z, bundle) { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/items`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - }, - params: { - 'order': 'system.name[asc]', - 'depth': 0, - 'limit': 10, - 'skip': 10 * bundle.meta.page, - 'elements': '_' // Elements do not support empty value as "no elements" so we hack it like this - } - }; - - const response = await z.request(options); - handleErrors(response); - - const results = z.JSON.parse(response.content).items; - - const resultsWithId = results.map( - (item) => Object.assign( - item, - { - id: `${item.system.id}/${item.system.language}` - } - ) - ); - - return resultsWithId; -} - -module.exports = { - noun: "Content item", - display: { - hidden: true, - important: false, - description: "Gets content items for the input dropdown ordered by name.", - label: "Get Content Items" - }, - key: "get_content_items", - operation: { - perform: execute, - sample: contentItemSample, - canPaginate: true, - outputFields: standardizedSystemOutputFields, - }, -}; diff --git a/triggers/dropdowns/getContentTypes.js b/triggers/dropdowns/getContentTypes.js deleted file mode 100644 index 39d9d41..0000000 --- a/triggers/dropdowns/getContentTypes.js +++ /dev/null @@ -1,62 +0,0 @@ -const getContentTypes = require('../../utils/types/getContentTypes'); - -async function execute(z, bundle) { - const contentTypes = await getContentTypes(z, bundle); - - const resultsWithId = contentTypes.map( - (item) => Object.assign( - item, - { - id: item.system.id - } - ) - ); - - return resultsWithId; -} - -module.exports = { - key: 'get_content_types', - noun: 'Content type choice', - display: { - label: 'Get Content type choices', - description: 'Gets content types for the input dropdown ordered by name.', - hidden: true, - }, - operation: { - type: 'polling', - perform: execute, - sample: { - "elements": {}, - "system": { - "codename": "about_us", - "last_modified": "2018-02-27T18:50:42.3012044Z", - "id": "b2c14f2c-6467-460b-a70b-bca17972a33a", - "name": "About us" - }, - "id": "b2c14f2c-6467-460b-a70b-bca17972a33a" - }, - outputFields: [ - { - key: 'system__codename', - label: 'Content type codename', - type: 'string', - }, - { - key: 'system__last_modified', - label: 'Last modified', - type: 'datetime', - }, - { - key: 'system__id', - label: 'Content type ID', - type: 'string', - }, - { - key: 'system__name', - label: 'Content type name', - type: 'string', - }, - ] - } -}; diff --git a/triggers/dropdowns/getLanguages.js b/triggers/dropdowns/getLanguages.js deleted file mode 100644 index c5a5fac..0000000 --- a/triggers/dropdowns/getLanguages.js +++ /dev/null @@ -1,40 +0,0 @@ -const getLanguages = require('../../utils/languages/getLanguages'); - -async function execute(z, bundle) { - const languages = getLanguages(z, bundle); - - return languages; -} - -module.exports = { - noun: "Language", - display: { - hidden: true, - important: false, - description: "Gets languages for the input dropdown, in the order, in which they are defined in Kentico Kontent.", - label: "Get Languages" - }, - key: "get_languages", - operation: { - perform: execute, - sample: { - id: "00000000-0000-0000-0000-000000000000", - codename: "en-US", - name: "English - United States" - }, - outputFields: [ - { - key: "id", - label: "Language ID" - }, - { - key: "name", - label: "Name" - }, - { - key: "codename", - label: "Codename" - } - ] - }, -}; diff --git a/triggers/dropdowns/getLinkedItems.js b/triggers/dropdowns/getLinkedItems.js deleted file mode 100644 index 524ce04..0000000 --- a/triggers/dropdowns/getLinkedItems.js +++ /dev/null @@ -1,54 +0,0 @@ -const handleErrors = require('../../utils/handleErrors'); -const contentItemSample = require('../../fields/samples/contentItemSample'); -const standardizedSystemOutputFields = require('../../fields/output/standardizedSystemOutputFields'); - -async function execute(z, bundle) { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/items`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - }, - params: { - 'order': 'system.name[asc]', - 'depth': 0, - 'limit': 10, - 'skip': 10 * bundle.meta.page, - 'elements': '_' // Elements do not support empty value as "no elements" so we hack it like this - } - }; - - const response = await z.request(options); - handleErrors(response); - - const results = z.JSON.parse(response.content).items; - - const resultsWithId = results.map( - (item) => Object.assign( - item, - { - id: item.system.id - } - ) - ); - - return resultsWithId; -} - -module.exports = { - noun: "Linked item", - display: { - hidden: true, - important: false, - description: "Gets content items for a linked items element ordered by name.", - label: "Get Linked Items" - }, - key: "get_linked_items", - operation: { - perform: execute, - sample: contentItemSample, - canPaginate: true, - outputFields: standardizedSystemOutputFields, - }, -}; diff --git a/triggers/dropdowns/getWorkflowSteps.js b/triggers/dropdowns/getWorkflowSteps.js deleted file mode 100644 index a0b8520..0000000 --- a/triggers/dropdowns/getWorkflowSteps.js +++ /dev/null @@ -1,36 +0,0 @@ -const getWorkflowSteps = require('../../utils/workflows/getWorkflowSteps'); - -async function execute(z, bundle) { - const workflowSteps = await getWorkflowSteps(z, bundle); - - return workflowSteps; -} - -module.exports = { - noun: "Workflow step", - display: { - hidden: true, - important: false, - description: "Gets workflow steps for the input dropdown, in the order, in which they are defined in Kentico Kontent.", - label: "Get Workflow Steps" - }, - key: "get_workflow_steps", - operation: { - perform: execute, - sample: { - transitions_to: [], - id: "88ac5e6e-1c5c-4638-96e1-0d61221ad5bf", - name: "Draft" - }, - outputFields: [ - { - key: "id", - label: "Workflow step ID" - }, - { - key: "name", - label: "Name" - } - ] - }, -}; diff --git a/triggers/makeHookItemOutput.js b/triggers/makeHookItemOutput.js deleted file mode 100644 index e17a45e..0000000 --- a/triggers/makeHookItemOutput.js +++ /dev/null @@ -1,14 +0,0 @@ -async function makeHookItemOutput(z, bundle, items, payloadFunc) { - if(items) { - const objs = items.map(item => { - return payloadFunc(z, bundle, item); - }); - return [...objs]; - } - else { - //items will be null for archive events - return [payloadFunc()]; - } -} - -module.exports = makeHookItemOutput; \ No newline at end of file diff --git a/triggers/makeHookTaxonomyOutput.js b/triggers/makeHookTaxonomyOutput.js deleted file mode 100644 index c82bd35..0000000 --- a/triggers/makeHookTaxonomyOutput.js +++ /dev/null @@ -1,14 +0,0 @@ -async function makeHookTaxonomyOutput(z, bundle, groups, payloadFunc) { - if(groups) { - const objs = groups.map(group => { - return payloadFunc(z, bundle, group); - }); - - return [...objs]; - } - else { - return [payloadFunc()]; - } -} - -module.exports = makeHookTaxonomyOutput; \ No newline at end of file diff --git a/triggers/triggerItemExistenceChanged.js b/triggers/triggerItemExistenceChanged.js deleted file mode 100644 index eac43a3..0000000 --- a/triggers/triggerItemExistenceChanged.js +++ /dev/null @@ -1,143 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const getSampleItemExistencePayload = require('../fields/samples/getSampleItemExistencePayload'); -const getTriggerSampleOutput = require('../fields/samples/getTriggerSampleOutput'); -const getContentTypeFieldForSamples = require('../fields/getContentTypeFieldForSamples'); -const handleErrors = require('../utils/handleErrors'); -const getSecret = require('../utils/getSecret'); -const hasValidSignature = require('../utils/hasValidSignature'); -const unsubscribeHook = require('../utils/unsubscribeHook'); -const makeHookItemOutput = require('./makeHookItemOutput'); -const hookLabel = 'Variant Created, Deleted or Restored'; -const events = { - create: 'Create', - archive: 'Delete', - restore: 'Restore' -}; - -async function subscribeHook(z, bundle) { - //If no events were selected, respond to all of them - let watchedEvents = bundle.inputData.watchedEvents; - if (!watchedEvents) watchedEvents = Object.keys(events); - - const data = { - // bundle.targetUrl has the Hook URL this app should call when a recipe is created. - name: `${bundle.inputData.name || hookLabel} (Zapier)`, - url: bundle.targetUrl, - secret: getSecret(z, bundle), - triggers: { - management_api_content_changes: [ - { - type: 'content_item_variant', - operations: watchedEvents - } - ] - } - }; - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/webhooks`, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: JSON.stringify(data) - }; - - const response = await z.request(options); - handleErrors(response); - - const webhook = z.JSON.parse(response.content); - - return webhook; -} - -async function parsePayload(z, bundle) { - if (!hasValidSignature(z, bundle)) { - throw new Error('Unable to verify webhook signature.'); - } - - const items = bundle.cleanedRequest.data.items; - const item = items[0]; - if (!item) { - throw z.errors.HaltedError('Skipped, no items found.'); - } - - const targetLanguageId = bundle.inputData.languageId; - if (targetLanguageId && (item.language.id !== targetLanguageId)) { - throw new z.errors.HaltedError('Skipped, language not matched.'); - } - - const payloadFunc = () => { return bundle.cleanedRequest; }; - - //If responding to an 'archive' operation, variant isn't available anymore - if (bundle.cleanedRequest.message.operation === 'archive') { - return await makeHookItemOutput(z, bundle, null, payloadFunc); - } - else { - return await makeHookItemOutput(z, bundle, [item], payloadFunc); - } -} - -module.exports = { - key: 'management_item_existence_changed', - noun: hookLabel, - display: { - label: hookLabel, - description: 'Triggers when a language variant is created, deleted, or restored.' - }, - operation: { - inputFields: [ - { - label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', - key: 'name', - type: 'string', - }, - { - label: 'Events to watch', - helpText: 'Fires only when these events are performed on a language variant. Leave blank for all events.', - key: 'watchedEvents', - list: true, - choices: events - }, - getLanguageField({ - helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', - }), - getContentTypeFieldForSamples - ], - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: parsePayload, - performList: (z, bundle) => { return getTriggerSampleOutput(z, bundle, getSampleItemExistencePayload) }, - - sample: { - data: { - items: [ - { - item: { - id: '42c21e82-0772-4d79-a6b3-c916e51b24ff' - }, - language: { - id: '00000000-0000-0000-0000-000000000000' - } - } - ] - }, - message: { - id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', - project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', - type: 'content_item_variant', - operation: 'restore', - api_name: 'content_management', - created_timestamp: '2019-07-18T10:52:33.1059256Z', - webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } - } -}; diff --git a/triggers/triggerItemPublishChanged.js b/triggers/triggerItemPublishChanged.js deleted file mode 100644 index 9b6d78c..0000000 --- a/triggers/triggerItemPublishChanged.js +++ /dev/null @@ -1,139 +0,0 @@ -const getLanguageField = require('../fields/getLanguageField'); -const getSampleItemPublishPayload = require('../fields/samples/getSampleItemPublishPayload'); -const getTriggerSampleOutput = require('../fields/samples/getTriggerSampleOutput'); -const getContentTypeFieldForSamples = require('../fields/getContentTypeFieldForSamples'); -const handleErrors = require('../utils/handleErrors'); -const getSecret = require('../utils/getSecret'); -const hasValidSignature = require('../utils/hasValidSignature'); -const unsubscribeHook = require('../utils/unsubscribeHook'); -const getLanguage = require('../utils/languages/getLanguage'); -const makeHookItemOutput = require('./makeHookItemOutput'); -const hookLabel = 'Variant Published Status Changed'; -const events = { - publish: 'Publish', - unpublish: 'Unpublish' -}; - -async function subscribeHook(z, bundle) { - //If no events were selected, respond to all of them - let watchedEvents = bundle.inputData.watchedEvents; - if (!watchedEvents) watchedEvents = Object.keys(events); - - const data = { - // bundle.targetUrl has the Hook URL this app should call when a recipe is created. - name: `${bundle.inputData.name || hookLabel} (Zapier)`, - url: bundle.targetUrl, - secret: getSecret(z, bundle), - triggers: { - delivery_api_content_changes: [ - { - type: 'content_item_variant', - operations: watchedEvents - } - ] - } - }; - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/webhooks`, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: JSON.stringify(data) - }; - - const response = await z.request(options); - handleErrors(response); - - const webhook = z.JSON.parse(response.content); - - return webhook; -} - -async function parsePayload(z, bundle) { - if (!hasValidSignature(z, bundle)) { - throw new Error('Unable to verify webhook signature.'); - } - - const items = bundle.cleanedRequest.data.items; - const item = items[0]; - if (!item) { - throw z.errors.HaltedError('Skipped, no items found.'); - } - - const targetLanguageId = bundle.inputData.languageId; - if (targetLanguageId) { - //language of POSTed item is a codename, get ID - const language = await getLanguage(z, bundle, targetLanguageId); - const languageCodename = language.codename; - if (languageCodename && (item.language !== languageCodename)) { - throw new z.errors.HaltedError('Skipped, language not matched.'); - } - } - - return await makeHookItemOutput(z, bundle, [item], () => { return bundle.cleanedRequest }); -} - -module.exports = { - key: 'deliver_variant_publish_changed', - noun: hookLabel, - display: { - important: true, - label: hookLabel, - description: 'Triggers when a language variant is published or unpublished.' - }, - operation: { - inputFields: [ - { - label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', - key: 'name', - type: 'string', - }, - { - label: 'Events to watch', - helpText: 'Fires only when these events are performed on a language. Leave blank for all events.', - key: 'watchedEvents', - list: true, - choices: events - }, - getLanguageField({ - helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', - }), - getContentTypeFieldForSamples - ], - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: parsePayload, - performList: (z, bundle) => { return getTriggerSampleOutput(z, bundle, getSampleItemPublishPayload) }, - - sample: { - data: { - items: [ - { - id: 'e113e464-bffb-4fbd-a29b-47991d003732', - codename: 'this_article_changed', - language: 'en-US', - type: 'article' - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', - type: 'content_item_variant', - operation: 'publish', - api_name: 'delivery_production', - created_timestamp: '2019-07-18T15:07:17.6823904Z', - webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } - } -}; diff --git a/triggers/triggerTaxonomyChanged.js b/triggers/triggerTaxonomyChanged.js deleted file mode 100644 index dcf8113..0000000 --- a/triggers/triggerTaxonomyChanged.js +++ /dev/null @@ -1,190 +0,0 @@ -const taxonomyGroupSample = require('../fields/samples/taxonomyGroupSample'); -const getSampleTaxonomyPayload = require('../fields/samples/getSampleTaxonomyPayload'); -const handleErrors = require('../utils/handleErrors'); -const getSecret = require('../utils/getSecret'); -const hasValidSignature = require('../utils/hasValidSignature'); -const unsubscribeHook = require('../utils/unsubscribeHook'); -const makeHookTaxonomyOutput = require('./makeHookTaxonomyOutput'); -const hookLabel = 'Taxonomy Group Changed'; -const NUM_SAMPLE_ITEMS = 3; -const events = { - archive: 'Delete', - restore: 'Restore', - upsert: 'Create/Update' -}; - -async function subscribeHook(z, bundle) { - //If no events were selected, respond to all of them - let watchedEvents = bundle.inputData.watchedEvents; - if (!watchedEvents) watchedEvents = Object.keys(events); - - const data = { - // bundle.targetUrl has the Hook URL this app should call when a recipe is created. - name: `${bundle.inputData.name || hookLabel} (Zapier)`, - url: bundle.targetUrl, - secret: getSecret(z, bundle), - triggers: { - delivery_api_content_changes: [ - { - type: 'taxonomy', - operations: watchedEvents - } - ] - } - }; - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/webhooks`, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: JSON.stringify(data) - }; - - const response = await z.request(options); - handleErrors(response); - - const webhook = z.JSON.parse(response.content); - - return webhook; -} - -async function parsePayload(z, bundle) { - if (!hasValidSignature(z, bundle)) { - throw new Error('Unable to verify webhook signature.'); - } - - const hookPayload = bundle.cleanedRequest; - const taxonomies = hookPayload.data.taxonomies; - const group = taxonomies[0]; - if (!group) { - throw new z.errors.HaltedError('Skipped, no taxonomy group found.'); - } - - //TODO make group dynamic input, check id instead - const targetCodename = bundle.inputData.targetCodename; - if (targetCodename && (group.codename !== targetCodename)) { - throw new z.errors.HaltedError('Skipped, codename not matched.'); - } - - const payloadFunc = () => { return bundle.cleanedRequest; }; - - //If responding to an 'archive' operation, taxonomy group isn't available anymore - if (hookPayload.message.operation === 'archive') { - return makeHookTaxonomyOutput(z, bundle, null, payloadFunc); - } - else { - return makeHookTaxonomyOutput(z, bundle, [group], payloadFunc); - } -} - -async function getSampleItems(z, bundle) { - let url = `https://deliver.kontent.ai/${bundle.authData.projectId}/taxonomies`; - const targetCodename = bundle.inputData.targetCodename; - if (targetCodename) url += `/${targetCodename}`; - - const options = { - url: url, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - } - }; - - if (bundle.authData.secureApiKey) { - options.headers['Authorization'] = `Bearer ${bundle.authData.secureApiKey}`; - } - - let sampleGroups; - const response = await z.request(options); - handleErrors(response); - - const raw = z.JSON.parse(response.content); - if (targetCodename && raw.system) { - //Found group by codename - sampleGroups = [raw]; - } - else { - if (raw.taxonomies && raw.taxonomies.length > 0) { - sampleGroups = raw.taxonomies.slice(0, NUM_SAMPLE_ITEMS); - } - else { - //No group found, load sample - sampleGroups = [taxonomyGroupSample]; - } - } - - return await makeHookTaxonomyOutput(z, bundle, sampleGroups, getSampleTaxonomyPayload); -} - -module.exports = { - key: 'deliver_taxonomy_changed', - noun: hookLabel, - display: { - label: hookLabel, - description: 'Triggers when a taxonomy group is created, deleted, updated, or restored.' - }, - operation: { - inputFields: [ - { - label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', - key: 'name', - type: 'string', - }, - { - label: 'Events to watch', - helpText: 'Fires only when these events are performed on a taxonomy group. Leave blank for all events.', - key: 'watchedEvents', - list: true, - choices: events - }, - { - label: 'Taxonomy group code name', - helpText: 'Fires only for the group of the give code name. Leave blank for all taxonomy groups.', - key: 'targetCodename', - type: 'string' - }, - ], - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: parsePayload, - performList: getSampleItems, - - sample: { - data: { - items: [ - { - id: 'e113e464-bffb-4fbd-a29b-47991d003732', - codename: 'my_article', - language: 'en-US', - type: 'article' - } - ], - taxonomies: [ - { - id: '13145328-b946-4e47-9c9d-6f40c7aaeaef', - codename: 'article_tags' - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', - type: 'taxonomy', - operation: 'upsert', - api_name: 'delivery_production', - created_timestamp: '2019-07-18T15:07:17.6823904Z', - webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - }, - } -}; diff --git a/triggers/triggerWorkflowStatusChanged.js b/triggers/triggerWorkflowStatusChanged.js deleted file mode 100644 index 3ae2ece..0000000 --- a/triggers/triggerWorkflowStatusChanged.js +++ /dev/null @@ -1,138 +0,0 @@ -const getWorkflowStepField = require('../fields/getWorkflowStepField'); -const getLanguageField = require('../fields/getLanguageField'); -const getSampleWorkflowPayload = require('../fields/samples/getSampleWorkflowPayload'); -const getTriggerSampleOutput = require('../fields/samples/getTriggerSampleOutput'); -const getContentTypeFieldForSamples = require('../fields/getContentTypeFieldForSamples'); -const handleErrors = require('../utils/handleErrors'); -const getSecret = require('../utils/getSecret'); -const hasValidSignature = require('../utils/hasValidSignature'); -const unsubscribeHook = require('../utils/unsubscribeHook'); -const makeHookItemOutput = require('./makeHookItemOutput'); -const hookLabel = 'Variant Workflow Step Changed'; - -async function subscribeHook(z, bundle) { - const stepIDs = bundle.inputData.workflowStepIds.map(i => ({ id: i })); - const data = { - // bundle.targetUrl has the Hook URL this app should call when a recipe is created. - name: `${bundle.inputData.name || hookLabel} (Zapier)`, - url: bundle.targetUrl, - secret: getSecret(z, bundle), - triggers: { - workflow_step_changes: [ - { - type: 'content_item_variant', - transitions_to: stepIDs - } - ] - } - }; - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/webhooks`, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: JSON.stringify(data) - }; - - const response = await z.request(options); - handleErrors(response); - - const webhook = z.JSON.parse(response.content); - - return webhook; -} - -async function parsePayload(z, bundle) { - if (!hasValidSignature(z, bundle)) { - throw new Error('Unable to verify webhook signature.'); - } - - const items = bundle.cleanedRequest.data.items; - const item = items[0]; - if (!item) { - throw z.errors.HaltedError('Skipped, no items found.'); - } - - const languageId = bundle.inputData.languageId; - if (languageId && (item.language.id !== languageId)) { - throw new z.errors.HaltedError('Skipped, language not matched.'); - } - - const workflowStepIds = bundle.inputData.workflowStepIds; - if (workflowStepIds && (!workflowStepIds.includes(item.transition_to.id))) { - throw new z.errors.HaltedError('Skipped, target step not matched.'); - } - - return await makeHookItemOutput(z, bundle, [item], () => { return bundle.cleanedRequest; }); -} - -module.exports = { - key: 'management_workflow_changed', - noun: hookLabel, - display: { - important: true, - label: hookLabel, - description: 'Triggers when a language variant workflow step changes.' - }, - operation: { - inputFields: [ - { - label: "Webhook name", - helpText: "Enter a webhook name which will appear in the Kentico Kontent admin UI.", - key: "name", - type: "string", - }, - getWorkflowStepField({ - required: true, - list: true, - helpText: 'Fires for the selected workflow steps.', - }), - getLanguageField({ - helpText: 'Fires only for variants of the given languages. Leave blank for all languages.', - }), - getContentTypeFieldForSamples - ], - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: parsePayload, - performList: (z, bundle) => { return getTriggerSampleOutput(z, bundle, getSampleWorkflowPayload) }, - - sample: { - data: { - items: [ - { - item: { - id: 'e113e464-bffb-4fbd-a29b-47991d003732' - }, - language: { - id: '00000000-0000-0000-0000-000000000000' - }, - transition_from: { - id: '13145328-b946-4e47-9c9d-6f40c7aaeaef' - }, - transition_to: { - id: 'b4363ccd-8f21-45fd-a840-5843d7b7f008' - } - } - ] - }, - message: { - id: 'e2f99f74-4111-4033-8eff-54073fbd4e32', - project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', - type: 'content_item_variant', - operation: 'change_workflow_step', - api_name: 'content_management', - created_timestamp: '2019-07-18T15:07:17.6823904Z', - webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' - } - } - } -}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8e6ba0e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "moduleResolution": "node", + "lib": ["esnext", "DOM"], + "outDir": "./lib", + "rootDir": "./src", + "strict": true, + "noUncheckedIndexedAccess": true + } +} diff --git a/utils/assets/getAsset.js b/utils/assets/getAsset.js deleted file mode 100644 index f52ab5f..0000000 --- a/utils/assets/getAsset.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getAsset(z, bundle, assetId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/assets/${assetId}`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const asset = z.JSON.parse(response.content); - - return asset; -} - -module.exports = getAsset; diff --git a/utils/assets/getAssetByExternalId.js b/utils/assets/getAssetByExternalId.js deleted file mode 100644 index 7766a8a..0000000 --- a/utils/assets/getAssetByExternalId.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getAssetByExternalId(z, bundle, externalId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/assets/external-id/${externalId}`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const asset = z.JSON.parse(response.content); - - return asset; -} - -module.exports = getAssetByExternalId; diff --git a/utils/elements/getElementsForUpsert.js b/utils/elements/getElementsForUpsert.js deleted file mode 100644 index 4fef39d..0000000 --- a/utils/elements/getElementsForUpsert.js +++ /dev/null @@ -1,70 +0,0 @@ -const getContentTypeElements = require('../../fields/elements/getContentTypeElements'); - -function getElementValue(value, element) { - switch (element.type) { - case 'rich_text': - if (!value) value = ''; - if (value && value.trim().startsWith('<')) { - return value; - } - return `

${value}

`; - - case 'text': - case 'custom': - case 'number': - case 'date_time': - case 'url_slug': - return value; - - case 'modular_content': - return value && value.map(item => { - //try to determine if it's an ID or external ID - if(item.length == 36 && (item.match(/-/g)||[]).length === 4) return { id: item }; - else return { external_id: item }; - }); - - case 'multiple_choice': - case 'asset': - case 'taxonomy': - return value && value.map(item => { - //try to determine if it's an ID or codename - if(item.length == 36 && (item.match(/-/g)||[]).length === 4) return { id: item }; - else return { codename: item }; - }); - - case 'guidelines': - default: - return undefined; - } -} - -async function getElementsForUpsert(z, bundle, contentTypeId) { - const typeElements = await getContentTypeElements(z, bundle, contentTypeId); - const elements = typeElements.map((element) => { - let value = bundle.inputData[`elements__${element.codename}`]; - value = getElementValue(value, element); - if (!value) { - return undefined; - } - - const returnObj = { - element: { - id: element.id - }, - value: value - }; - - //element-specific fixes - switch (element.type) { - case 'url_slug': - if (value !== '') returnObj['mode'] = 'custom'; - break; - } - - return returnObj; - }).filter(e => !!e); - - return elements; -} - -module.exports = getElementsForUpsert; \ No newline at end of file diff --git a/utils/getSecret.js b/utils/getSecret.js deleted file mode 100644 index fe89be2..0000000 --- a/utils/getSecret.js +++ /dev/null @@ -1,9 +0,0 @@ -const crypto = require('crypto'); -const key = 'BP7XqTLDp_9WzvX6BOfsF9mkI25pPD4n4r4FS1d6Fx2pUgXasRDpCOL6tEcnUmVW_MXrc2BRQG1FWu60NHb0tVc'; - -function getSecret(z, bundle) { - const zapID = bundle.authData.projectId + bundle.authData.cmApiKey + bundle.authData.previewApiKey; - return crypto.createHmac('sha256', key).update(zapID, 'utf8').digest('base64'); -} - -module.exports = getSecret; \ No newline at end of file diff --git a/utils/handleErrors.js b/utils/handleErrors.js deleted file mode 100644 index 81621ab..0000000 --- a/utils/handleErrors.js +++ /dev/null @@ -1,14 +0,0 @@ -function handleErrors(response) { - if (response.status === 400) { - throw new Error(`Request failed with code ${response.status}.\nResponse: ${response.content}`); - } - if (response.status === 401) { - throw new Error(`Request failed with code 401. Please disable Secure Access in Kentico Kontent or provide a Secure Access key.`); - } - //Allow 404s for requests to specific codename objects (failed request will be handled in code) - if(response.status === 404) return; - - response.throwForStatus(); -} - -module.exports = handleErrors; diff --git a/utils/hasValidSignature.js b/utils/hasValidSignature.js deleted file mode 100644 index 13bf21a..0000000 --- a/utils/hasValidSignature.js +++ /dev/null @@ -1,14 +0,0 @@ -const crypto = require('crypto'); -const getSecret = require('./getSecret'); - -function hasValidSignature(z, bundle) { - const secret = getSecret(z, bundle); - const givenSignature = bundle.rawRequest.headers['Http-X-Kc-Signature']; - const computedSignature = crypto.createHmac('sha256', secret) - .update(bundle.rawRequest.content) - .digest(); - - return crypto.timingSafeEqual(Buffer.from(givenSignature, 'base64'), computedSignature); -} - -module.exports = hasValidSignature; \ No newline at end of file diff --git a/utils/items/create/createItem.js b/utils/items/create/createItem.js deleted file mode 100644 index 8d0e246..0000000 --- a/utils/items/create/createItem.js +++ /dev/null @@ -1,30 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function createItem(z, bundle, name, contentTypeId, externalId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items`, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: { - name, - type: { - id: contentTypeId - }, - externalId: externalId || undefined - } - }; - - const itemResponse = await z.request(options); - handleErrors(itemResponse); - - const item = z.JSON.parse(itemResponse.content); - - return item; -} - -module.exports = createItem; diff --git a/utils/items/delete/deleteVariant.js b/utils/items/delete/deleteVariant.js deleted file mode 100644 index 39e5247..0000000 --- a/utils/items/delete/deleteVariant.js +++ /dev/null @@ -1,20 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function deleteVariant(z, bundle, itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}`, - method: 'DELETE', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - }; - - const response = await z.request(options); - handleErrors(response); - - return response.status; -} - -module.exports = deleteVariant; \ No newline at end of file diff --git a/utils/items/get/findContentItem.js b/utils/items/get/findContentItem.js deleted file mode 100644 index 4348021..0000000 --- a/utils/items/get/findContentItem.js +++ /dev/null @@ -1,90 +0,0 @@ -const getFilterParams = require('./getFilterParams'); -const handleErrors = require('../../handleErrors'); -const getVariant = require('./getVariant'); -const getItemResult = require('./getItemResult'); -const getContentItem = require('./getContentItem'); -const findItemByIdentifier = require('./findItemByIdentifier'); -const getContentType = require('../../types/getContentType'); -const getLanguage = require('../../languages/getLanguage'); - -async function findContentItemByIdentifier(z, bundle, languageId, searchField, searchValue) { - const item = await findItemByIdentifier(z, bundle, null, searchField, searchValue); - if (!item || !item.length) { - // Not found - return null; - } - - const itemId = item[0].id; - - const variant = await getVariant(z, bundle, itemId, languageId); - if (!variant) { - // Not found - return null; - } - - // Found - const contentItem = await getItemResult(z, bundle, item[0], variant); - - return [contentItem]; -} - -async function findContentItemByElement(z, bundle, languageId, contentTypeId, searchField, searchPattern, searchValue) { - const searchParams = getFilterParams(searchField, searchPattern, searchValue); - - // Translate IDs to code names for use with Delivery API - const contentType = contentTypeId && await getContentType(z, bundle, contentTypeId); - const contentTypeCodename = contentType && contentType.codename; - - const language = languageId && await getLanguage(z, bundle, languageId); - const languageCode = language && language.codename; - - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/items`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - }, - params: Object.assign( - { - 'limit': 1 - }, - searchParams, - contentTypeCodename && {'system.type': contentTypeCodename}, - languageCode && {'language': languageCode}, - // No language fallbacks - languageCode && {'system.language': languageCode} - ) - }; - - const response = await z.request(options); - if (response.status === 404) { - return []; - } - - handleErrors(response); - - const results = z.JSON.parse(response.content).items; - if (!results || !results.length) { - return []; - } - - const found = results[0]; - const contentItem = await getContentItem(z, bundle, found.system.id, languageId); - - return [contentItem]; -} - -async function findContentItem(z, bundle, languageId, contentTypeId, searchField, searchPattern, searchValue) { - const foundByCmApi = await findContentItemByIdentifier(z, bundle, languageId, searchField, searchValue); - if (foundByCmApi) { - // Could search by identifier - return foundByCmApi; - } - - // Cannot search by identifier - const foundByElement = await findContentItemByElement(z, bundle, languageId, contentTypeId, searchField, searchPattern, searchValue); - return foundByElement; -} - -module.exports = findContentItem; diff --git a/utils/items/get/findItemByIdentifier.js b/utils/items/get/findItemByIdentifier.js deleted file mode 100644 index e342257..0000000 --- a/utils/items/get/findItemByIdentifier.js +++ /dev/null @@ -1,42 +0,0 @@ -const getItem = require('./getItem'); - -function getCmApiItemUrl(bundle, searchField, searchValue) { - if (!searchValue) { - throw new Error(`Missing search value for ${searchField}`); - } - - switch (searchField) { - case 'externalId': - return `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/external-id/${searchValue}`; - - case 'id': - return `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${searchValue}`; - - case 'system.codename': - return `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/codename/${searchValue}`; - - default: - return null; - } -} - -async function findItemByIdentifier(z, bundle, contentTypeId, searchField, searchValue) { - const cmApiItemUrl = getCmApiItemUrl(bundle, searchField, searchValue); - if (!cmApiItemUrl) { - return null; - } - - const item = await getItem(z, bundle, cmApiItemUrl); - if (!item) { - return []; - } - - // Validate content type - if (contentTypeId && (item.type.id !== contentTypeId)) { - return []; - } - - return [item]; -} - -module.exports = findItemByIdentifier; diff --git a/utils/items/get/getAllItems.js b/utils/items/get/getAllItems.js deleted file mode 100644 index 244b71b..0000000 --- a/utils/items/get/getAllItems.js +++ /dev/null @@ -1,24 +0,0 @@ -const handleErrors = require('../../handleErrors'); -async function getAllItems(z, bundle) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - }; - - const response = await z.request(options); - handleErrors(response); - - const items = z.JSON.parse(response.content).items; - if (!items.length) { - return null; - } - - return items; -} - -module.exports = getAllItems; \ No newline at end of file diff --git a/utils/items/get/getAllItemsDelivery.js b/utils/items/get/getAllItemsDelivery.js deleted file mode 100644 index ce40210..0000000 --- a/utils/items/get/getAllItemsDelivery.js +++ /dev/null @@ -1,19 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function getAllItemsDelivery(z, bundle) { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/items`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - } - }; - - const response = await z.request(options); - handleErrors(response); - - return z.JSON.parse(response.content).items; -} - -module.exports = getAllItemsDelivery; \ No newline at end of file diff --git a/utils/items/get/getContentItem.js b/utils/items/get/getContentItem.js deleted file mode 100644 index 24437fc..0000000 --- a/utils/items/get/getContentItem.js +++ /dev/null @@ -1,22 +0,0 @@ -const getVariant = require('./getVariant'); -const getItem = require('./getItem'); -const getItemResult = require('./getItemResult'); - -async function getContentItem(z, bundle, itemId, languageId) { - const url = `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}`; - - const item = await getItem(z, bundle, url); - if (!item) { - return null; - } - - const variant = await getVariant(z, bundle, itemId, languageId); - if (!variant) { - return null; - } - - const contentItem = await getItemResult(z, bundle, item, variant); - return contentItem; -} - -module.exports = getContentItem; diff --git a/utils/items/get/getContentItemRaw.js b/utils/items/get/getContentItemRaw.js deleted file mode 100644 index 809e07b..0000000 --- a/utils/items/get/getContentItemRaw.js +++ /dev/null @@ -1,23 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function getContentItemRaw(z, bundle, itemCodeName, languageCodename) { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/items/${itemCodeName}`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - }, - params: { - language: languageCodename - } - }; - - const response = await z.request(options); - handleErrors(response); - - return response.content -} - -module.exports = getContentItemRaw; diff --git a/utils/items/get/getFilterParams.js b/utils/items/get/getFilterParams.js deleted file mode 100644 index 6136c94..0000000 --- a/utils/items/get/getFilterParams.js +++ /dev/null @@ -1,19 +0,0 @@ -function getFilterParams(field, pattern, value) { - const filterParams = {}; - - const filterQuery = (pattern || '{0}={1}') - .replace('{0}', encodeURIComponent(field)) - .replace('{1}', encodeURIComponent(value)); - const filterParts = filterQuery.split('&'); - - for (var i = 0; i < filterParts.length; i++) { - const components = filterParts[i].split('='); - if (components.length === 2) { - filterParams[decodeURIComponent(components[0])] = decodeURIComponent(components[1]); - } - } - - return filterParams; -} - -module.exports = getFilterParams; diff --git a/utils/items/get/getItem.js b/utils/items/get/getItem.js deleted file mode 100644 index d0bfb38..0000000 --- a/utils/items/get/getItem.js +++ /dev/null @@ -1,26 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function getItem(z, bundle, url) { - const options = { - url: url, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - if (response.status === 404) { - return null - } - - handleErrors(response); - const item = z.JSON.parse(response.content); - - return item; -} - -module.exports = getItem; diff --git a/utils/items/get/getItemResult.js b/utils/items/get/getItemResult.js deleted file mode 100644 index 87646c7..0000000 --- a/utils/items/get/getItemResult.js +++ /dev/null @@ -1,123 +0,0 @@ -const getContentType = require('../../types/getContentType'); -const getLanguage = require('../../languages/getLanguage'); -const getVariant = require('./getVariant'); -const findItemByIdentifier = require('./findItemByIdentifier'); - -async function findContentItemByIdentifier(z, bundle, languageId, searchField, searchValue, doModular) { - const item = await findItemByIdentifier(z, bundle, null, searchField, searchValue); - if (!item || !item.length) { - // Not found - return null; - } - - const itemId = item[0].id; - - const variant = await getVariant(z, bundle, itemId, languageId); - if (!variant) { - // Not found - return null; - } - - // Found - return await getItemResult(z, bundle, item[0], variant, doModular); -} - -function getElementValue(element, typeElement) { - const value = element.value; - switch (typeElement.type) { - case 'text': - case 'rich_text': - case 'custom': - case 'number': - case 'date_time': - case 'url_slug': - return value; - - case 'modular_content': - case 'multiple_choice': - case 'asset': - case 'taxonomy': - return value && value.map(item => item.id); - - default: - return value; - } -} - -function getElements(z, bundle, variant, contentType) { - const elements = variant.elements; - const result = {}; - - for (var i = 0; i < elements.length; i++) { - const element = elements[i]; - if (element.type === 'guidelines') { - continue; - } - - const elementId = element.element.id; - - const typeElement = contentType.elements.filter(el => el.id === elementId)[0]; - if (typeElement) { - const value = getElementValue(element, typeElement); - result[typeElement.codename] = value; - } - } - - return result; -} - -async function getModularContent(z, bundle, variant, contentType, doModular) { - const modularContent = []; - const modularElements = contentType.elements.filter(el => el.type === 'modular_content'); - - for await(const modularElement of modularElements) { - const variantElement = variant.elements.filter(el => el.element.id === modularElement.id)[0]; - if (variantElement) { - //request all items and add to array - for await (const item of variantElement.value) { - const result = await findContentItemByIdentifier(z, bundle, variant.language.id, 'id', item.id, doModular); - if(result) modularContent.push(result); - } - } - } - - return modularContent; -} - -async function getItemResult(z, bundle, item, variant, doModular = true) { - const contentType = await getContentType(z, bundle, item.type.id); - const language = await getLanguage(z, bundle, variant.language.id); - const elements = await getElements(z, bundle, variant, contentType); - let modular = []; - - //get modular content and set doModular to false to prevent too much depth - if(doModular) { - modular = await getModularContent(z, bundle, variant, contentType, false); - } - - const projectId = bundle.authData.projectId; - const fullId = `${item.id}/${variant.language.id}`; - - const contentItem = { - system: { - projectId: projectId, - id: item.id, - name: item.name, - codename: item.codename, - type: contentType.codename, - language: language.codename, - externalId: item.external_id, - lastModified: variant.last_modified, - fullId: fullId, - workflowStepId: variant.workflow_step.id, - contentTypeId: item.type.id, - languageId: variant.language.id, - }, - elements: elements, - modular_content: z.JSON.stringify(modular) - }; - - return contentItem; -} - -module.exports = getItemResult; diff --git a/utils/items/get/getItemVariant.js b/utils/items/get/getItemVariant.js deleted file mode 100644 index f0b5e37..0000000 --- a/utils/items/get/getItemVariant.js +++ /dev/null @@ -1,41 +0,0 @@ -const handleErrors = require('../../handleErrors'); -async function getItemVariant(z, bundle, itemId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - }; - - const response = await z.request(options); - handleErrors(response); - - const variants = z.JSON.parse(response.content); - - //try to get variant in selected language, or use default - let variant; - const languageId = bundle.inputData.languageId ? bundle.inputData.languageId : '00000000-0000-0000-0000-000000000000'; - let matchedVariant = variants.filter(v => v.language.id === languageId); - if(matchedVariant.length > 0) { - //found match by language ID - variant = matchedVariant[0]; - } - else { - //try to get default language - matchedVariant = variants.filter(v => v.language.id === '00000000-0000-0000-0000-000000000000'); - if(matchedVariant.length > 0) { - variant = matchedVariant[0]; - } - else { - //couldn't find matching language or default language, just load any variant - variant = variants[0]; - } - } - - return variant; -} - -module.exports = getItemVariant; \ No newline at end of file diff --git a/utils/items/get/getVariant.js b/utils/items/get/getVariant.js deleted file mode 100644 index b287814..0000000 --- a/utils/items/get/getVariant.js +++ /dev/null @@ -1,26 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function getVariant(z, bundle, itemId, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - }; - - const response = await z.request(options); - if (response.status === 404) { - return null; - } - - handleErrors(response); - - const variant = z.JSON.parse(response.content); - return variant; -} - -module.exports = getVariant; diff --git a/utils/items/update/upsertVariant.js b/utils/items/update/upsertVariant.js deleted file mode 100644 index aac0a31..0000000 --- a/utils/items/update/upsertVariant.js +++ /dev/null @@ -1,29 +0,0 @@ -const handleErrors = require('../../handleErrors'); -const getElementsForUpsert = require('../../elements/getElementsForUpsert'); - -async function upsertVariant(z, bundle, itemId, languageId, contentTypeId) { - const elements = await getElementsForUpsert(z, bundle, contentTypeId); - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/items/${itemId}/variants/${languageId}`, - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {}, - body: { - elements, - } - }; - - const variantResponse = await z.request(options); - handleErrors(variantResponse); - - const variant = z.JSON.parse(variantResponse.content); - - return variant; -} - -module.exports = upsertVariant; \ No newline at end of file diff --git a/utils/languages/getLanguage.js b/utils/languages/getLanguage.js deleted file mode 100644 index 257eef6..0000000 --- a/utils/languages/getLanguage.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getLanguage(z, bundle, languageId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/languages/${languageId}`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const language = z.JSON.parse(response.content); - - return language; -} - -module.exports = getLanguage; diff --git a/utils/languages/getLanguageByCodename.js b/utils/languages/getLanguageByCodename.js deleted file mode 100644 index a61e9e9..0000000 --- a/utils/languages/getLanguageByCodename.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getLanguage(z, bundle, codename) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/languages/codename/${codename}`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const language = z.JSON.parse(response.content); - - return language; -} - -module.exports = getLanguage; diff --git a/utils/languages/getLanguageByExternalId.js b/utils/languages/getLanguageByExternalId.js deleted file mode 100644 index fc4a735..0000000 --- a/utils/languages/getLanguageByExternalId.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getLanguageByExternalId(z, bundle, externalId) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/languages/external-id/${externalId}`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const language = z.JSON.parse(response.content); - - return language; -} - -module.exports = getLanguageByExternalId; diff --git a/utils/languages/getLanguages.js b/utils/languages/getLanguages.js deleted file mode 100644 index 66bf583..0000000 --- a/utils/languages/getLanguages.js +++ /dev/null @@ -1,22 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getLanguages(z, bundle) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/languages`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const languages = z.JSON.parse(response.content).languages; - - return languages; -} - -module.exports = getLanguages; diff --git a/utils/taxonomy/get/getTaxonomyGroupRaw.js b/utils/taxonomy/get/getTaxonomyGroupRaw.js deleted file mode 100644 index c7229ce..0000000 --- a/utils/taxonomy/get/getTaxonomyGroupRaw.js +++ /dev/null @@ -1,23 +0,0 @@ -const handleErrors = require('../../handleErrors'); - -async function getTaxonomyGroupRaw(z, bundle, codename) { - const options = { - url: `https://deliver.kontent.ai/${bundle.authData.projectId}/taxonomies/${codename}`, - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - } - }; - - if(bundle.authData.secureApiKey) { - options.headers['Authorization'] = `Bearer ${bundle.authData.secureApiKey}`; - } - - const response = await z.request(options); - handleErrors(response); - - return response.content -} - -module.exports = getTaxonomyGroupRaw; \ No newline at end of file diff --git a/utils/types/getContentType.js b/utils/types/getContentType.js deleted file mode 100644 index f9caf82..0000000 --- a/utils/types/getContentType.js +++ /dev/null @@ -1,21 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getContentType(z, bundle, contentTypeId) { - var options = { - 'method': 'GET', - 'url': `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/types/${contentTypeId}`, - 'params': {}, - 'headers': { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - } - }; - - const response = await z.request(options); - handleErrors(response); - - const contentType = z.JSON.parse(response.content); - return contentType; -} - -module.exports = getContentType; diff --git a/utils/types/getContentTypes.js b/utils/types/getContentTypes.js deleted file mode 100644 index 8f523ca..0000000 --- a/utils/types/getContentTypes.js +++ /dev/null @@ -1,23 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getContentTypes(z, bundle) { - const options = { - url: `https://preview-deliver.kontent.ai/${bundle.authData.projectId}/types`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.previewApiKey}` - }, - params: { - 'order': 'system.name[asc]' - } - }; - - const response = await z.request(options); - handleErrors(response); - - const contentTypes = z.JSON.parse(response.content).types; - return contentTypes; -} - -module.exports = getContentTypes; diff --git a/utils/unsubscribeHook.js b/utils/unsubscribeHook.js deleted file mode 100644 index ec20c04..0000000 --- a/utils/unsubscribeHook.js +++ /dev/null @@ -1,24 +0,0 @@ -const handleErrors = require('../utils/handleErrors'); - -async function unsubscribeHook(z, bundle) { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - const webhook = bundle.subscribeData; - - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/webhooks/${webhook.id}`, - method: 'DELETE', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - }; - - const response = await z.request(options); - handleErrors(response); - - return true; -} - -module.exports = unsubscribeHook; \ No newline at end of file diff --git a/utils/workflows/getWorkflowSteps.js b/utils/workflows/getWorkflowSteps.js deleted file mode 100644 index 8ecb9b8..0000000 --- a/utils/workflows/getWorkflowSteps.js +++ /dev/null @@ -1,21 +0,0 @@ -const handleErrors = require('../handleErrors'); - -async function getWorkflowSteps(z, bundle) { - const options = { - url: `https://manage.kontent.ai/v2/projects/${bundle.authData.projectId}/workflow`, - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Authorization': `Bearer ${bundle.authData.cmApiKey}` - }, - params: {} - }; - - const response = await z.request(options); - handleErrors(response); - - const results = z.JSON.parse(response.content); - return results; -} - -module.exports = getWorkflowSteps; From 23bd03b9dda5fb37539c078739b47fca38c84e19 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Tue, 22 Nov 2022 11:22:27 +0100 Subject: [PATCH 02/16] Update company references --- .github/CODEOWNERS | 2 +- CODE_OF_CONDUCT.md | 4 +- CONTRIBUTING.md | 30 +++--- LICENSE.md | 4 +- README.md | 108 +++++++++---------- src/actions/changeContentItemWorkflow.ts | 2 +- src/actions/createContentItem.ts | 4 +- src/actions/updateLanguageVariant.ts | 4 +- src/authentication.ts | 8 +- src/fields/elements/getItemElementFields.ts | 2 +- src/triggers/dropdowns/getLanguages.ts | 2 +- src/triggers/dropdowns/getWorkflowSteps.ts | 2 +- src/triggers/triggerItemExistenceChanged.ts | 2 +- src/triggers/triggerItemPublishChanged.ts | 2 +- src/triggers/triggerTaxonomyChanged.ts | 2 +- src/triggers/triggerWorkflowStatusChanged.ts | 2 +- src/utils/kontentServices/httpService.ts | 2 +- 17 files changed, 89 insertions(+), 93 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0d48c4c..603387d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ # Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths. # See https://help.github.com/articles/about-code-owners/ -* @kentico-ericd \ No newline at end of file +* @kontent-ai/integrations diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c793246..2bbf8c9 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at DevelopersCommunity@kentico.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at devrel@kontent.ai. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. @@ -44,5 +44,3 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], versi [homepage]: https://contributor-covenant.org [version]: https://contributor-covenant.org/version/1/4/ - -![Analytics](https://kentico-ga-beacon.azurewebsites.net/api/UA-69014260-4/Kentico/Home/master/CODE_OF_CONDUCT.md?pixel) \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 091da59..2a197b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,12 @@ -# Ways to contribute +# Ways to contribute There are many different ways in which you can contribute. One of the easiest ways is simply to use our software and provide us with your feedback through the right channel. You can also help us improve the open-source projects by submitting pull requests with code and documentation changes. ## Where to get support -Please note that **level of provided support is always determined by the [LICENSE](LICENSE.md)** of a given open-source project. Also, always make sure you use the **[latest version](../../releases)** of any given OS project. We can't provide any help for older versions. We don't want to make things complicated so we try to take the same approach in all our repositories. +Please note that **level of provided support is always determined by the [LICENSE](LICENSE.md)** of a given open-source project. Also, always make sure you use the **[latest version](../../releases)** of any given OS project. We can't provide any help for older versions. We don't want to make things complicated so we try to take the same approach in all our repositories. -### I found a bug in a Kentico's open-source project +### I found a bug in a Kontent.ai open-source project Sorry to hear that. Just log a new [GitHub issue](../../issues) and someone will take a look at it. Remember, the more information you provide, the easier it will be to fix the issue. If you feel like it, you can also fix the bug on your own and submit a new pull request. @@ -14,38 +14,40 @@ Sorry to hear that. Just log a new [GitHub issue](../../issues) and someone will ### I need help with using the projects and/or coding -To get help with coding and structuring your projects, use [StackOverflow](https://stackoverflow.com/) to ask questions with one of the following tags: -- [`kentico-kontent`](https://stackoverflow.com/questions/tagged/kentico-kontent) -- [`kentico`](https://stackoverflow.com/questions/tagged/kentico) +To get help with coding and structuring your projects, use [StackOverflow](https://stackoverflow.com/) and tag your questions with [`kontent-ai`](https://stackoverflow.com/questions/tagged/kontent-ai) tag. Our team members and the community monitor these channels on a regular basis. ### I want to report a security bug -Security issues and bugs should be reported privately, via email, to the Kentico Developer Relations Team devrel@kentico.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. +Security issues and bugs should be reported privately, via email, to Kontent.ai Developer Relations Team devrel@kontent.ai. You should receive a response within 24 hours. If for some reason you do not, send us a follow up email to ensure we received your original message. + ### I have an idea for a new feature (or feedback on existing functionality) Everybody loves new features! You can submit a new [feature request](../../issues) or you can code it on your own and [send us a pull request](#submitting-pull-requests). In either case, don't forget to mention what's the use case and what's the expected output. + ## Submitting pull requests Unless you're fixing a typo, it's usually a good idea to discuss the feature before you submit a pull request with code changes, so let's start with submitting a new [GitHub issue](../../issues) and discussing the whether it fits the vision of a given project. -You might also read these two blogs posts on contributing code: [Open Source Contribution Etiquette](http://tirania.org/blog/archive/2010/Dec-31.html) by Miguel de Icaza and [Don't "Push" Your Pull Requests](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) by Ilya Grigorik. Note that all code submissions will be rigorously reviewed and tested by the Kentico Maintainers teams, and only those that meet an high bar for both quality and design/roadmap appropriateness will be merged into the source. +You might also read these two blogs posts on contributing code: [Open Source Contribution Etiquette](http://tirania.org/blog/archive/2010/Dec-31.html) by Miguel de Icaza and [Don't "Push" Your Pull Requests](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) by Ilya Grigorik. Note that all code submissions will be rigorously reviewed and tested by Kontent.ai maintainer teams, and only those that meet an high bar for both quality and design/roadmap appropriateness will be merged into the source. + ### Example - process of contribution -If not stated otherwise, we use [feature branch workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow). +If not stated otherwise, we use [feature branch workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow). To start with coding, fork the repository you want to contribute to, create a new branch, and start coding. Once the functionality is [done](#Definition-of-Done), you can submit a [pull request](https://help.github.com/articles/about-pull-requests/). -To test the new functionality, you need to install `zapier-platform-cli`, create a private integration, and test your code by creating new Zaps with it. You can follow Zapier's instructions to [install the CLI](https://platform.zapier.com/cli_tutorials/getting-started#installing-the-cli) and [deploying an app](https://platform.zapier.com/cli_tutorials/getting-started#deploying-an-app). - ### Definition of Done +- New/fixed code is covered with tests +- CI can build the code +- All tests are pass - New version number follows [semantic versioning](https://semver.org/) - Coding style (spaces, indentation) is in line with the rest of the code in a given repository - Documentation is updated (e.g. code examples in README, Wiki pages, etc.) @@ -57,12 +59,10 @@ To test the new functionality, you need to install `zapier-platform-cli`, create ### Feedback -Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient. Update your pull request according to feedback until it is approved by one of the Kentico maintainers. After that, one of our team members may adjust the branch you merge into based on the expected release schedule. +Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient. Update your pull request according to feedback until it is approved by one of Kontent.ai maintainers. After that, one of our team members may adjust the branch you merge into based on the expected release schedule. ## Code of Conduct -The Kentico team is committed to fostering a welcoming community, therefore this project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). If you have any additional questions or comments, you can contact us directly at devrel@kentico.com. - -![Analytics](https://kentico-ga-beacon.azurewebsites.net/api/UA-69014260-4/Kentico/Home/master/CONTRIBUTING.md?pixel) \ No newline at end of file +The Kontent.ai team is committed to fostering a welcoming community, therefore this project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). If you have any additional questions or comments, you can contact us directly at devrel@kontent.ai. diff --git a/LICENSE.md b/LICENSE.md index 7d9bc22..8f4058a 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016 Kentico +Copyright (c) 2022 Kontent s.r.o. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/README.md b/README.md index 1fe8900..8677f4e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -[![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-ASK%20NOW-FE7A16.svg?logo=stackoverflow&logoColor=white)](https://stackoverflow.com/tags/kentico-kontent) +[![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-ASK%20NOW-FE7A16.svg?logo=stackoverflow&logoColor=white)](https://stackoverflow.com/tags/kontent-ai) # Zapier CLI Integration -Source code for the Zapier integration with Kentico Kontent: https://zapier.com/apps/kentico-kontent/integrations. +Source code for the Zapier integration with Kontent.ai: https://zapier.com/apps/kentico-kontent/integrations. ## Integrations @@ -26,33 +26,33 @@ This integration contains 4 triggers, 4 actions, and 4 searches: ## Triggers -Using the Kentico Kontent integration, you only need to configure the Zap in Zapier. The creation of the webhook in Kontent is handled automatically by the integration; the webhook will be created when you turn on the Zap, and deleted when you turn it off. +Using the Kontent.ai integration, you only need to configure the Zap in Zapier. The creation of the webhook in Kontent.ai is handled automatically by the integration; the webhook will be created when you turn on the Zap, and deleted when you turn it off. -The output of a trigger in Zapier is exactly what [Kontent's webhook](https://kontent.ai/learn/reference/webhooks-reference) POSTs to Zapier. It will looks something like this: +The output of a trigger in Zapier is exactly what [Kontent.ai's webhook](https://kontent.ai/learn/reference/webhooks-reference) POSTs to Zapier. It will look something like this: ```js -{ - data: { - items: [ - { - item: { - id: '42c21e82-0772-4d79-a6b3-c916e51b24ff' - }, - language: { - id: '00000000-0000-0000-0000-000000000000' - } - } - ] - }, - message: { - id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', - project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', - type: 'content_item_variant', - operation: 'restore', - api_name: 'content_management', - created_timestamp: '2019-07-18T10:52:33.1059256Z', - webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' - } +return { + data: { + items: [ + { + item: { + id: '42c21e82-0772-4d79-a6b3-c916e51b24ff' + }, + language: { + id: '00000000-0000-0000-0000-000000000000' + } + } + ] + }, + message: { + id: 'a268da50-b3c5-4d09-9b36-6587c8dea500', + project_id: '11a3492b-cd32-0054-51d2-8234ec4244a6', + type: 'content_item_variant', + operation: 'restore', + api_name: 'content_management', + created_timestamp: '2019-07-18T10:52:33.1059256Z', + webhook_url: 'https://hooks.zapier.com/hooks/standard/47991d003732' + } } ``` @@ -67,21 +67,21 @@ There is also another optional field called __Content Type For Samples__. If you ![step 1](./images/chooseapp.png) -3. Click __Continue__ then __Sign in to Kentico Kontent__ on the next screen. You can find the credentials on the _API Keys_ page in Kontent. +3. Click __Continue__ then __Sign in to Kentico Kontent__ on the next screen. You can find the credentials on the _API Keys_ page in Kontent.ai. ![sign in](./images/authenticate.png) 4. Configure the conditions for your trigger. Most triggers have multiple events that can be "listened" to, and you can select multiple options or leave the field empty for all events. -5. Click __Test and Review__ to get a sample item from your Kontent project. This allows you to configure later steps using fields from your content items. +5. Click __Test and Review__ to get a sample item from your Kontent.ai project. This allows you to configure later steps using fields from your content items. -The output of the triggers will be the payload sent from Kontent, which you can read more about in [webhooks reference](https://kontent.ai/learn/reference/webhooks-reference). To find additional data about the item which triggered the webhook, you can use the __Find Content Item__ action. +The output of the triggers will be the payload sent from Kontent.ai, which you can read more about in [webhooks reference](https://kontent.ai/learn/reference/webhooks-reference). To find additional data about the item which triggered the webhook, you can use the __Find Content Item__ action. ## Actions -The integration contains actions to upsert/delete variants, create a content item, and change a variant's workflow step. For many of these steps, you are required to enter data in a particular format that Kontent will understand, e.g. in a __Linked items__ element. +The integration contains actions to upsert/delete variants, create a content item, and change a variant's workflow step. For many of these steps, you are required to enter data in a particular format that Kontent.ai will understand, e.g. in a __Linked items__ element. -You can find descriptions of formats that Zapier expects in fields [here](https://zapier.com/help/create/basics/different-field-types-in-zaps). As for the Kontent integration, here's some examples of the data to provide action steps: +You can find descriptions of formats that Zapier expects in fields [here](https://zapier.com/help/create/basics/different-field-types-in-zaps). As for the Kontent.ai integration, here's some examples of the data to provide action steps: - __Linked items__: ![linked items](./images/linkeditems.png) @@ -110,33 +110,33 @@ This follows the [formats specified by Zapier](https://zapier.com/help/create/ba ## Searches -Because the webhook notification from Kontent only contains basic information such as a content item ID and language ID, you may need to search your project for more information. For example, to load all data about a content item you can use a __Find Content Item__ action. You can search for an item based on the `id`, `codename`, `external_id`, or any of the content type's elements. +Because the webhook notification from Kontent.ai only contains basic information such as a content item ID and language ID, you may need to search your project for more information. For example, to load all data about a content item you can use a __Find Content Item__ action. You can search for an item based on the `id`, `codename`, `external_id`, or any of the content type's elements. Another useful example would be to translate language or workflow step IDs into codenames. The webhook notification contains IDs, but if you need to compare a language codename ("en-US") later on in the Zap, or if you're writing values to a Google Sheet and want to add the user-friendly name, you could add a __Find language__ step. You can search for the language via ID, and in the output you will find all the details of the language: ```js -{ - id: '1c37a40c-9158-031d-9d2d-adf65a568cd6', - name: 'Czech', - codename: 'cz-CZ', - external_id: 'lang_czech', - is_active: true, - is_default: false, - fallback_language: { - id: '00000000-0000-0000-0000-000000000000' - } +return { + id: '1c37a40c-9158-031d-9d2d-adf65a568cd6', + name: 'Czech', + codename: 'cz-CZ', + external_id: 'lang_czech', + is_active: true, + is_default: false, + fallback_language: { + id: '00000000-0000-0000-0000-000000000000' + } } ``` ## Example - Google calendar -Let's say your company manages events for a client. At this point, you've been using Kentico Kontent to store information about the events, but you've been manually creating the event in Google Calendar and emailing the attendees. We can now use Zapier to do this for us whenever a new event is published. +Let's say your company manages events for a client. At this point, you've been using Kontent.ai to store information about the events, but you've been manually creating the event in Google Calendar and emailing the attendees. We can now use Zapier to do this for us whenever a new event is published. The final Zap will look something like this: ![finished zap](./images/steps.png) -### Content types in Kontent +### Content types in Kontent.ai To start, we should have an __Event__ content type with fields for basic event information, and a __Linked items__ element which can only contain items from your __Contact__ content type: @@ -150,7 +150,7 @@ Create some Contact content items and publish them, then create an Event and lea ### Creating the Zap -To reduce the amount of manual work that needs to be done, we want Zapier to create a calendar item and send emails whenever an Event is published in Kontent. +To reduce the amount of manual work that needs to be done, we want Zapier to create a calendar item and send emails whenever an Event is published in Kontent.ai. #### Step 1 @@ -158,7 +158,7 @@ Of course, we start with the trigger. For the __Trigger event__ choose _Variant ![variant published step](./images/variantpublished.png) -Under __Webhook Name__ you can enter any value you'd like such as "Google Calendar Event Creation" which will appear in Kontent's Webhooks page, or you can leave it empty to use the default "Variant published status changed (Zapier)." +Under __Webhook Name__ you can enter any value you'd like such as "Google Calendar Event Creation" which will appear in Kontent.ai's Webhooks page, or you can leave it empty to use the default "Variant published status changed (Zapier)." #### Step 2 @@ -186,13 +186,11 @@ If you're not familiar with the basics of code steps, please read [Zapier's docu In the code of the step, use JSON to parse the `json` variable, then use `Object.values()` to create an array. Filter the array so that only contacts from the `attendees` variable remain, then `map` the email addresses to a new array. Then, output the emails: ```js -let modular = JSON.parse(inputData.json); -modular = Object.values(modular); -modular = modular.filter(m => inputData.attendees.includes(m.system.id)); +const email = Object.values(JSON.parse(inputData.json) || {}) + .filter(m => inputData.attendees.includes(m.system.id)) + .map(m => m.elements.email); -const emails = modular.map(m => m.elements.email); - -output = [{emails: emails}]; +return [{emails: emails}]; ``` #### Step 5 @@ -209,15 +207,15 @@ In the event's __Attendees__ field you can load the list of emails from step 4. #### Testing -We're pretty much done- turn on the Zap to create the webhook in Kontent. If the On/Off switch is greyed-out in Zapier, you most likely need to test one of the steps (or, choose __Skip test__). All steps should have a green check mark in the top-left corner. +We're pretty much done. Turn on the Zap to create the webhook in Kontent.ai. If the On/Off switch is greyed-out in Zapier, you most likely need to test one of the steps (or, choose __Skip test__). All steps should have a green check mark in the top-left corner. -When the Zap is turned on, you should see this in Kontent: +When the Zap is turned on, you should see this in Kontent.ai: ![webhook](./images/webhook.png) The endpoint and secret are automatically generated by the Zapier integration and will start to work immediately. __Do not change the secret!__ Webhook signatures are automatically validated by the integration for your security, but it relies on using this exact secret which is generated by hashing several values. -You can now test the Zap by publishing an Event content item in Kontent which has some Contacts linked as attendees. After a short time, you should see the "dot" next to the webhook turn green indicating that the POST was sent to Zapier. In Zapier, you can check __Task History__ in the right sidebar to check whether the Zap executed successfully: +You can now test the Zap by publishing an Event content item in Kontent.ai which has some Contacts linked as attendees. After a short time, you should see the "dot" next to the webhook turn green indicating that the POST was sent to Zapier. In Zapier, you can check __Task History__ in the right sidebar to check whether the Zap executed successfully: ![history](./images/history.png) diff --git a/src/actions/changeContentItemWorkflow.ts b/src/actions/changeContentItemWorkflow.ts index e0d9756..fb43e84 100644 --- a/src/actions/changeContentItemWorkflow.ts +++ b/src/actions/changeContentItemWorkflow.ts @@ -180,7 +180,7 @@ export const changeContentItemWorkflow = { }), getWorkflowStepField({ required: true, - helpText: 'Select a workflow step to which the content item should move.\n\n[More about workflow in Kentico Kontent ...](https://docs.kontent.ai/tutorials/collaborate-with-your-team/workflows/setting-up-a-workflow-for-your-content)', + helpText: 'Select a workflow step to which the content item should move.\n\n[More about workflow in Kontent.ai ...](https://kontent.ai/learn/tutorials/manage-kontent-ai/roles-and-workflow/manage-workflows/)', search: 'find_workflow_step.id', }), getScheduledPublishingFields, diff --git a/src/actions/createContentItem.ts b/src/actions/createContentItem.ts index 230606f..73be1e1 100644 --- a/src/actions/createContentItem.ts +++ b/src/actions/createContentItem.ts @@ -30,9 +30,9 @@ const elementsInfoField: Field = { label: 'Elements', helpText: `#### Content item variant elements -The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. +The following inputs represent elements of a chosen content type as defined in Kontent.ai. Element data is stored per language version. -[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, +[Read more about elements ...](https://kontent.ai/learn/reference/management-api-v2/#operation/delete-a-content-type-snippet)`, key: 'elements_header', type: 'copy', }; diff --git a/src/actions/updateLanguageVariant.ts b/src/actions/updateLanguageVariant.ts index 3483d17..728d2e2 100644 --- a/src/actions/updateLanguageVariant.ts +++ b/src/actions/updateLanguageVariant.ts @@ -20,9 +20,9 @@ const elementsInfoField: Field = { label: 'Elements', helpText: `#### Content item variant elements -The following inputs represent elements of a chosen content type as defined in Kentico Kontent. Element data is stored per language version. +The following inputs represent elements of a chosen content type as defined in Kontent.ai. Element data is stored per language version. -[Read more about elements ...](https://docs.kontent.ai/tutorials/define-content-structure/content-elements/content-type-elements-reference)`, +[Read more about elements ...](https://kontent.ai/learn/reference/management-api-v2/#tag/Elements-in-content-types)`, key: 'elements_header', type: 'copy', }; diff --git a/src/authentication.ts b/src/authentication.ts index ded8459..f64dd28 100644 --- a/src/authentication.ts +++ b/src/authentication.ts @@ -19,28 +19,28 @@ export const Authentication = { key: 'projectId', type: 'string', required: true, - helpText: 'Your project ID is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + helpText: 'Your project ID is available in the [Kontent.ai admin UI](https://app.kontent.ai) in Project Settings > API Keys.', }, { label: 'Management API Key', key: 'cmApiKey', type: 'string', required: true, - helpText: 'The Management API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + helpText: 'The Management API key is available in the [Kontent.ai admin UI](https://app.kontent.ai) in Project Settings > API Keys.', }, { label: 'Preview API Key', key: 'previewApiKey', type: 'string', required: true, - helpText: 'The Preview API key is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys. You can use the Primary or Secondary key.', + helpText: 'The Preview API key is available in the [Kontent.ai admin UI](https://app.kontent.ai) in Project Settings > API Keys. You can use the Primary or Secondary key.', }, { label: 'Secure Access Key', key: 'secureApiKey', type: 'string', required: false, - helpText: 'This is required for taxonomy steps if [Secure Access](https://docs.kontent.ai/tutorials/develop-apps/get-content/securing-public-access) is enabled in your project and is available in the [Kentico Kontent admin UI](https://app.kontent.ai) in Project Settings > API Keys.', + helpText: 'This is required for taxonomy steps if [Secure Access](https://kontent.ai/learn/tutorials/develop-apps/build-strong-foundation/restrict-public-access/) is enabled in your project and is available in the [Kontent.ai admin UI](https://app.kontent.ai) in Project Settings > API Keys.', }, ], connectionLabel: '{{projectName}} - {{bundle.authData.projectId}}', diff --git a/src/fields/elements/getItemElementFields.ts b/src/fields/elements/getItemElementFields.ts index 1fcb095..0ed8d3d 100644 --- a/src/fields/elements/getItemElementFields.ts +++ b/src/fields/elements/getItemElementFields.ts @@ -81,7 +81,7 @@ const getElementName = (element: ElementWithoutSnippets): string => { const createElementHelpText = (element: ElementWithoutSnippets): string | undefined => { switch (element.type) { case 'modular_content': - return element.guidelines + ' The value of this field should be a comma-separated list of content item IDs or [external IDs](https://docs.kontent.ai/reference/management-api-v2#section/External-IDs-for-imported-content), or a single value on each line.'; + return element.guidelines + ' The value of this field should be a comma-separated list of content item IDs or [external IDs](https://kontent.ai/learn/reference/management-api-v2/#section/Reference-object), or a single value on each line.'; case 'multiple_choice': case 'asset': case 'taxonomy': diff --git a/src/triggers/dropdowns/getLanguages.ts b/src/triggers/dropdowns/getLanguages.ts index e213109..4f886de 100644 --- a/src/triggers/dropdowns/getLanguages.ts +++ b/src/triggers/dropdowns/getLanguages.ts @@ -33,7 +33,7 @@ export default { display: { hidden: true, important: false, - description: 'Gets languages for the input dropdown, in the order, in which they are defined in Kentico Kontent.', + description: 'Gets languages for the input dropdown, in the order, in which they are defined in Kontent.ai.', label: 'Get Languages', }, key: 'get_languages', diff --git a/src/triggers/dropdowns/getWorkflowSteps.ts b/src/triggers/dropdowns/getWorkflowSteps.ts index aba29ac..92f6081 100644 --- a/src/triggers/dropdowns/getWorkflowSteps.ts +++ b/src/triggers/dropdowns/getWorkflowSteps.ts @@ -28,7 +28,7 @@ export default { display: { hidden: true, important: false, - description: 'Gets workflow steps for the input dropdown, in the order, in which they are defined in Kentico Kontent.', + description: 'Gets workflow steps for the input dropdown, in the order, in which they are defined in Kontent.ai.', label: 'Get Workflow Steps', }, key: 'get_workflow_steps', diff --git a/src/triggers/triggerItemExistenceChanged.ts b/src/triggers/triggerItemExistenceChanged.ts index 466b3ed..d517e95 100644 --- a/src/triggers/triggerItemExistenceChanged.ts +++ b/src/triggers/triggerItemExistenceChanged.ts @@ -74,7 +74,7 @@ export default { inputFields: [ { label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + helpText: 'Enter a webhook name which will appear in the Kontent.ai admin UI.', key: 'name', type: 'string', }, diff --git a/src/triggers/triggerItemPublishChanged.ts b/src/triggers/triggerItemPublishChanged.ts index 3cfa1d8..db869f3 100644 --- a/src/triggers/triggerItemPublishChanged.ts +++ b/src/triggers/triggerItemPublishChanged.ts @@ -80,7 +80,7 @@ export default { inputFields: [ { label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + helpText: 'Enter a webhook name which will appear in the Kontent.ai admin UI.', key: 'name', type: 'string', }, diff --git a/src/triggers/triggerTaxonomyChanged.ts b/src/triggers/triggerTaxonomyChanged.ts index dee12e5..40e841d 100644 --- a/src/triggers/triggerTaxonomyChanged.ts +++ b/src/triggers/triggerTaxonomyChanged.ts @@ -93,7 +93,7 @@ export default { inputFields: [ { label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + helpText: 'Enter a webhook name which will appear in the Kontent.ai admin UI.', key: 'name', type: 'string', }, diff --git a/src/triggers/triggerWorkflowStatusChanged.ts b/src/triggers/triggerWorkflowStatusChanged.ts index d75c308..2350d21 100644 --- a/src/triggers/triggerWorkflowStatusChanged.ts +++ b/src/triggers/triggerWorkflowStatusChanged.ts @@ -71,7 +71,7 @@ export default { inputFields: [ { label: 'Webhook name', - helpText: 'Enter a webhook name which will appear in the Kentico Kontent admin UI.', + helpText: 'Enter a webhook name which will appear in the Kontent.ai admin UI.', key: 'name', type: 'string', }, diff --git a/src/utils/kontentServices/httpService.ts b/src/utils/kontentServices/httpService.ts index 6eae453..4524a16 100644 --- a/src/utils/kontentServices/httpService.ts +++ b/src/utils/kontentServices/httpService.ts @@ -73,7 +73,7 @@ export const handleErrors = (response: HttpResponse) => { throw new Error(`Request failed with code ${response.status}.\nResponse: ${response.content}`); } if (response.status === 401) { - throw new Error(`Request failed with code 401. Please disable Secure Access in Kentico Kontent or provide a Secure Access key.`); + throw new Error(`Request failed with code 401. Please disable Secure Access in Kontent.ai or provide a Secure Access key.`); } response.throwForStatus(); From c8fe156ed6232b9e0fbf35e4947a3e937788f22b Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Tue, 22 Nov 2022 11:35:57 +0100 Subject: [PATCH 03/16] Update Kontent.ai app screenshots --- images/contact.png | Bin 15947 -> 99721 bytes images/eventdetails.png | Bin 38566 -> 101435 bytes images/webhook.png | Bin 44028 -> 84742 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/contact.png b/images/contact.png index d299f01b2d41536d3d8fac9e769b9233845b74ae..eba3fcb69ca5949661294a000ffc0072b7640ded 100644 GIT binary patch literal 99721 zcmcG#byU<{7x%5AA}S0@DluZvB_Yj#ARtJ03sNFo62c&eLyLrTi=-gkA|+i)cXtm1 zQZw%v1h4yf|9sYZuBGc*&id6kXUF&K{W*RLa+3I0Z(luk?i~J8DRHH9=Pr_fzvr%8 z0KYu^v+E50civt}^6|OcPRb?lkBg?FvZCkC<$t(#WN-=m8_z~c)BfB!f_m)V^G((n zM&QSr4o@^3l&wu1UK`jMpOdsRHny@ivv$x^y#j8*AfAegsyOSd9`8rK=!;(WJA^Jm zmr&KPu`E>eoZgtOV_x<5z9;)?x~nqkBUaz81-3oE&igR6_W68mJ7-i2`L~Bi!NKPy z*PlG34e<$cvHPP zuS74NO}4#V{#lp&@-sV6;>t1>A-=*p3G`y^`00a<0ZU8maoWN68jaOn+KDkdDsR%2 zwh4-BZSXWpYv=ni*tj;85=kMK-?BE{(oV_MBq(_6>*qqAM%ukH$!Z-*Io?}@U&G6v zFgV%15}Ka710Fynln_nP>J|ChezeVxICeAweKTwDDDY-?y{M8!L01Otm>^%Fv7M8Q z9z$mx%B`*q{A|bL#vkA0f;Ay0r+0E)y6Ajg&TVh!vF3yRMpkM|PsI*XqlohS z!A2rEiCdPocPTW<+N49>x-W(GM2D*@l_fM#3B`p@b7Z3p3?9|ETo$m4vN4 zJvM;vI@&h)IcjEx+0GBs2V5%PNEoi?k2TH@P}J{l`6BjpMrg;bTipGnt!q|FcZVOC zS=^wjgVX2yvU=(RLJi3ltW`otai8V~jErS1JKBr+J?@@9P$KbVVEzlkdH4a#j(KV;jw6JU1mr*X%9&QT5BM3DN zE4*zfCIN2Ijq5POW5)jC*67-Fr)36@ny0*{R{)|K2VVa=Qs(69Sd@whxY$x+z#u0) z=-1G5H(j-?-#T3lo&|1*4iyPM%DnLM0%4P!53;vcP)0?_5TUukH)O9(QX2MbLR1o` z)$N-a9-H-2s*X4%_?$5bY~7ktkXw%7J4I8R@MH-m-T?}hoy721>G zO4$yg&ILaDVHn?0Fxa?^L@@_m6~33vHPo)K!r#d1L}6UiD5|tNt@n^Wgd>%{RAYlA zyu62bgW|Kjw7;&-qXXPx#iZr!TSh*{dp{a0XbGC8nRBE^o){3rAEvHm=a6e|R7eA} zY0TPnwC@(b^wRc$Dos=n5pXidZIW+|=WnW}BJ5>tNv*yriein3)#`P2)4If@cn<<{>OHX z#G=plNJra00~1xBu`4)g<1cGPmYu~#fh()xCa3l!HntiY&VsUf>mBbeK&vE@=ci8M z)7Mx1&qfteexht#Q$a?5I z5R_xByK0CkcdHIG2UgP_)W{m_bX|!Y7>%EWkuEdS({<4mDsPTdPKLbCHbM-Cms#aN z5NT68t~WA9C)ZW{a*cNTk<4#2la-cu*ksh{{~oy=Y@5$?xFT z^p47t zdgy2YvFX&CK&7r}?93^D%{HJjl_PE-9f+*>ELSi%oBMD9TGaE%X!cXuVB=8WrynQR zspq`D9x9kHX&Xi%8*RkS2j02P8hI1zpFAs>?ckv!fw}b>3>0aFwYwELD(U43e&>z% z2x2n>Z}RCe*c-#-x8v{-|uoHB=Tvmy<{sDZ2CCeeu$$9lFWz7@X6atiS`)@ zmh5~@z=(wcuXce%Qk|0}&$I9;V>vFzpOeQ_?zRMKX^KD8o}5rU@~_!2;xN0eXR>vM|kPVeRxyV4JYnZ7G!=bjzv)kxC?3ZXonxc z{UF7=+LZU_lrhAgx;k|!?=%_=;II#$3vhhYW=NLZHBiXT_$M¨5!@72?W4%kZ9) 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

y@vi-vK&T>9kh&;%;iq94+!`YTEp) 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%0Ds?!0<1g3 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 literal 38566 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 literal 44028 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 A(f|Me From 3c797ad3a3aa50aa7383ab07532d3432ef437251 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Wed, 23 Nov 2022 09:58:37 +0100 Subject: [PATCH 04/16] Add tracking header to zapier requests --- src/utils/kontentServices/httpService.ts | 16 +++++++++++----- src/utils/kontentServices/trackingHeader.ts | 8 ++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 src/utils/kontentServices/trackingHeader.ts diff --git a/src/utils/kontentServices/httpService.ts b/src/utils/kontentServices/httpService.ts index 4524a16..bdbcbb8 100644 --- a/src/utils/kontentServices/httpService.ts +++ b/src/utils/kontentServices/httpService.ts @@ -1,12 +1,13 @@ import { HttpResponse, ZObject } from 'zapier-platform-core'; import { IDeliveryClientConfig } from '@kontent-ai/delivery-sdk'; +import { trackingHeader } from './trackingHeader'; export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpService'] => ({ getAsync: (call, options) => z.request({ method: 'GET', url: call.url, - headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + headers: Object.fromEntries(getHeaders(options?.headers).map(h => [h.header, h.value] as const)), }) .then(handleErrors) .then(createResponse), @@ -16,7 +17,7 @@ export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpServic method: 'PATCH', url: call.url, body: z.JSON.stringify(call.body), - headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + headers: Object.fromEntries(getHeaders(options?.headers).map(h => [h.header, h.value] as const)), }) .then(handleErrors) .then(createResponse), @@ -26,7 +27,7 @@ export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpServic method: 'PUT', url: call.url, body: z.JSON.stringify(call.body), - headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + headers: Object.fromEntries(getHeaders(options?.headers).map(h => [h.header, h.value] as const)), }) .then(handleErrors) .then(createResponse), @@ -36,7 +37,7 @@ export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpServic method: 'POST', url: call.url, body: z.JSON.stringify(call.body), - headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + headers: Object.fromEntries(getHeaders(options?.headers).map(h => [h.header, h.value] as const)), }) .then(handleErrors) .then(createResponse), @@ -45,7 +46,7 @@ export const createHttpService = (z: ZObject): IDeliveryClientConfig['httpServic z.request({ method: 'DELETE', url: call.url, - headers: options?.headers && Object.fromEntries(options.headers.map(h => [h.header, h.value] as const)), + headers: Object.fromEntries(getHeaders(options?.headers).map(h => [h.header, h.value] as const)), }) .then(handleErrors) .then(createResponse), @@ -80,3 +81,8 @@ export const handleErrors = (response: HttpResponse) => { return response; }; + +type Header = Readonly<{ header: string; value: string }>; + +const getHeaders = (passedHeaders: ReadonlyArray

| undefined): ReadonlyArray
=> + [...passedHeaders ?? [], trackingHeader]; diff --git a/src/utils/kontentServices/trackingHeader.ts b/src/utils/kontentServices/trackingHeader.ts new file mode 100644 index 0000000..9b2f69a --- /dev/null +++ b/src/utils/kontentServices/trackingHeader.ts @@ -0,0 +1,8 @@ +const sourceTrackingHeaderName = 'X-KC-SOURCE'; + +const packageInfo = require('../../../package.json'); + +export const trackingHeader = { + header: sourceTrackingHeaderName, + value: `${packageInfo.name};${packageInfo.version}`, +}; From 6ebadcde0488791a4dc84cbe962c97bb45fef612 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Wed, 23 Nov 2022 10:59:23 +0100 Subject: [PATCH 05/16] Add documentation to outputFromOutputFields types --- src/fields/output/outputFromOutputFields.ts | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/fields/output/outputFromOutputFields.ts b/src/fields/output/outputFromOutputFields.ts index 482050e..60d45ef 100644 --- a/src/fields/output/outputFromOutputFields.ts +++ b/src/fields/output/outputFromOutputFields.ts @@ -1,5 +1,27 @@ import { OutputField } from './outputField'; +/** + * Iterates over the fields and creates a type of expected output object build up from the fields. + * The resulting object is build as an intersection of smaller objects for each field. + * + * - Leverages TCO for better performance + * + * @example + * const outputFields = [ + * { + * key: 'a', + * label: 'my label', + * type: 'string', + * }, + * // ...more fields + * ] as const satisfies ReadonlyArray; // as const ensures the most specific type is inferred and satisfies ensures the specific inferred type is still a valid array of output fields + * + * type Output = OutputFromOutputFields; + * + * @example + * OutputFromOutputFields<[{ key: 'a__b'; label: ''; type: 'string' }, { key: 'a__c'; label: ''; type: 'number' }]> => + * { a: { b: string } } & { a: { c: number } } === { a: { b: string; c: number } } + */ export type OutputFromOutputFields, Acc = {}> = Fields extends readonly [] ? Acc @@ -7,6 +29,9 @@ export type OutputFromOutputFields, Ac ? OutputFromOutputFields> : never; +/** + * Create an object from a single {@link OutputField}. The result will be used in an intersection of all fields to build up the resulting object type. + */ type CreateObjectFromField = Field['key'] extends `${infer ObjectParentKey}__${infer ObjectChildKey}` ? ObjectParentKey extends `${infer ArrayParentKey}[]${infer ArrayChildPart}` @@ -17,6 +42,9 @@ type CreateObjectFromField = : { readonly [key in Field['key']]: FieldType } +/** + * Map from possible values of property 'type' on {@link OutputField} to their representation in TS. + */ type FieldTypeToTSType = { string: string; datetime: string; @@ -24,6 +52,12 @@ type FieldTypeToTSType = { boolean: boolean; }; +/** + * Creates a TS type for an {@link OutputField} property based on its 'type', 'required' and 'list' properties. + * + * - The Lookup parameter is not supposed to be used outside (always the default value should be used). + * It is meant to check (using its restriction) that the {@link FieldTypeToTSType} contains a binding for every possible value of property 'type' of the {@link OutputField} type. + */ type FieldType = FieldTypeToTSType> = MakeListIfNeeded>; From 778c9c7b366afc0226662136e0a9639310b2dd44 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Mon, 5 Dec 2022 18:10:23 +0100 Subject: [PATCH 06/16] Add tests --- jest.config.ts | 8 + package-lock.json | 6271 ++++++++--------- package.json | 15 +- .../actions/changeContentItemWorkflow.test.ts | 81 + src/test/actions/createContentItem.test.ts | 124 + .../actions/deleteLanguageVariant.test.ts | 201 + .../actions/updateLanguageVariant.test.ts | 180 + src/test/index.test.ts | 17 - src/test/searches/findAsset.test.ts | 132 + src/test/searches/findContentItem.test.ts | 340 + src/test/searches/findLanguage.test.ts | 121 + src/test/searches/findWorkflowStep.test.ts | 103 + .../dropdowns/getContentItems.test.ts | 132 + .../dropdowns/getContentTypes.test.ts | 70 + .../triggers/dropdowns/getLanguages.test.ts | 74 + .../dropdowns/getWorkflowSteps.test.ts | 69 + .../triggerItemExistenceChanged.test.ts | 50 + .../triggerItemPublishChanged.test.ts | 54 + .../triggers/triggerTaxonomyChanged.test.ts | 60 + .../triggerWorkflowStatusChanged.test.ts | 66 + src/test/utils/createPaginatedReplies.ts | 27 + src/test/utils/mockBundle.ts | 33 + .../prepareMocksForWebhookSubscribeTest.ts | 64 + src/utils/range.ts | 3 + 24 files changed, 4754 insertions(+), 3541 deletions(-) create mode 100644 jest.config.ts create mode 100644 src/test/actions/changeContentItemWorkflow.test.ts create mode 100644 src/test/actions/createContentItem.test.ts create mode 100644 src/test/actions/deleteLanguageVariant.test.ts create mode 100644 src/test/actions/updateLanguageVariant.test.ts delete mode 100644 src/test/index.test.ts create mode 100644 src/test/searches/findAsset.test.ts create mode 100644 src/test/searches/findContentItem.test.ts create mode 100644 src/test/searches/findLanguage.test.ts create mode 100644 src/test/searches/findWorkflowStep.test.ts create mode 100644 src/test/triggers/dropdowns/getContentItems.test.ts create mode 100644 src/test/triggers/dropdowns/getContentTypes.test.ts create mode 100644 src/test/triggers/dropdowns/getLanguages.test.ts create mode 100644 src/test/triggers/dropdowns/getWorkflowSteps.test.ts create mode 100644 src/test/triggers/triggerItemExistenceChanged.test.ts create mode 100644 src/test/triggers/triggerItemPublishChanged.test.ts create mode 100644 src/test/triggers/triggerTaxonomyChanged.test.ts create mode 100644 src/test/triggers/triggerWorkflowStatusChanged.test.ts create mode 100644 src/test/utils/createPaginatedReplies.ts create mode 100644 src/test/utils/mockBundle.ts create mode 100644 src/test/utils/prepareMocksForWebhookSubscribeTest.ts create mode 100644 src/utils/range.ts diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..b3cfb29 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,8 @@ +import type { Config } from 'jest'; + +const config: Config = { + preset: 'ts-jest', + testEnvironment: 'node', +}; + +export default config; diff --git a/package-lock.json b/package-lock.json index 010a8c6..1c3bffa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,12 @@ "zapier-platform-core": "12.2.0" }, "devDependencies": { - "@types/jest": "^26.0.23", + "@types/jest": "^29.2.3", "@types/node": "^14", - "jest": "^26.6.3", + "jest": "^29.3.1", + "nock": "^13.2.9", + "ts-jest": "^29.0.3", + "ts-node": "^10.9.1", "typescript": "^4.9.3", "zapier-platform-cli": "^12.2.0" } @@ -976,6 +979,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -1923,20 +1941,26 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=0.1.95" + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@gar/promisify": { @@ -1977,230 +2001,309 @@ } }, "node_modules/@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", + "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", + "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/reporters": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.2.0", + "jest-config": "^29.3.1", + "jest-haste-map": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-resolve-dependencies": "^29.3.1", + "jest-runner": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "jest-watcher": "^29.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", + "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", "dev": true, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/fake-timers": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", - "jest-mock": "^26.6.2" + "jest-mock": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "dev": true, + "dependencies": { + "expect": "^29.3.1", + "jest-snapshot": "^29.3.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.2.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", + "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", + "@jest/types": "^29.3.1", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-message-util": "^29.3.1", + "jest-mock": "^29.3.1", + "jest-util": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", + "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@jest/environment": "^29.3.1", + "@jest/expect": "^29.3.1", + "@jest/types": "^29.3.1", + "jest-mock": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", + "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "optionalDependencies": { - "node-notifier": "^8.0.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz", + "integrity": "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", + "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/types": "^29.3.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", + "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", "dev": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "@jest/test-result": "^29.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", + "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", + "@babel/core": "^7.11.6", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", "dev": true, "dependencies": { + "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -3447,6 +3550,12 @@ "@octokit/openapi-types": "^12.11.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -3466,9 +3575,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" @@ -3495,6 +3604,30 @@ "node": ">= 6" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "node_modules/@types/babel__core": { "version": "7.1.20", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", @@ -3576,13 +3709,13 @@ } }, "node_modules/@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "version": "29.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz", + "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==", "dev": true, "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "node_modules/@types/minimatch": { @@ -3626,9 +3759,9 @@ } }, "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.14.tgz", + "integrity": "sha512-9Pj7abXoW1RSTcZaL2Hk6G2XyLMlp5ECdVC/Zf2p/KBjC3srijLGgRAXOBjtFrJoIrvxdTKyKDA14bEcbxBaWw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -3648,12 +3781,6 @@ "lodash.isplainobject": "^4.0.6" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -3672,28 +3799,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/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/acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", @@ -3875,9 +3980,9 @@ "dev": true }, "node_modules/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, "dependencies": { "normalize-path": "^3.0.0", @@ -4002,6 +4107,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -4240,25 +4351,24 @@ } }, "node_modules/babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", + "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", "dev": true, "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", + "@jest/transform": "^29.3.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.2.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.8.0" } }, "node_modules/babel-plugin-istanbul": { @@ -4277,35 +4387,19 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", + "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { @@ -4374,16 +4468,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", + "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", + "babel-plugin-jest-hoist": "^29.2.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -4683,12 +4777,6 @@ "xtend": "~4.0.1" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browser-resolve": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", @@ -4907,6 +4995,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -5088,18 +5188,6 @@ } ] }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", @@ -5176,9 +5264,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, "node_modules/class-utils": { @@ -5538,14 +5626,34 @@ } }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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/clone": { @@ -6001,6 +6109,12 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6046,30 +6160,6 @@ "node": ">=8" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -6097,20 +6187,6 @@ "node": ">=0.10" } }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -6146,21 +6222,6 @@ "node": "*" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", - "dev": true - }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -6182,6 +6243,12 @@ "node": ">=4" } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -6191,12 +6258,6 @@ "node": ">=4.0.0" } }, - "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/deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -6386,12 +6447,12 @@ } }, "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/diffie-hellman": { @@ -6433,27 +6494,6 @@ "npm": ">=1.2" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -6572,12 +6612,12 @@ "dev": true }, "node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -6676,28 +6716,6 @@ "node": ">=8" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -6711,20 +6729,12 @@ "node": ">=4" } }, - "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/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6754,12 +6764,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true - }, "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -6930,20 +6934,19 @@ "dev": true }, "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/extend": { @@ -7804,13 +7807,6 @@ "node": ">=8.0.0" } }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true, - "optional": true - }, "node_modules/gulp-filter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", @@ -8051,18 +8047,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -8691,12 +8675,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -8864,14 +8842,15 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { @@ -8938,302 +8917,402 @@ } }, "node_modules/jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", + "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", "dev": true, "dependencies": { - "@jest/core": "^26.6.3", + "@jest/core": "^29.3.1", + "@jest/types": "^29.3.1", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^29.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", + "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/jest-changed-files/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/jest-circus": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", + "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.3.1", + "@jest/expect": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.3.1", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/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": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", + "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", "dev": true, "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/core": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-config": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", "prompts": "^2.0.1", - "yargs": "^15.4.1" + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", + "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.3.1", + "@jest/types": "^29.3.1", + "babel-jest": "^29.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.3.1", + "jest-environment-node": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-runner": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } } }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/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/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz", + "integrity": "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", + "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "jest-get-type": "^29.2.0", + "jest-util": "^29.3.1", + "pretty-format": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", + "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^29.3.1", + "@jest/fake-timers": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-mock": "^29.3.1", + "jest-util": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", + "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.3.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "optionalDependencies": { - "fsevents": "^2.1.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "fsevents": "^2.3.2" } }, "node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", + "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", "dev": true, "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", + "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*" + "@jest/types": "^29.3.1", + "@types/node": "*", + "jest-util": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -9254,157 +9333,170 @@ } }, "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", + "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", + "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "jest-regex-util": "^29.2.0", + "jest-snapshot": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", + "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/environment": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.2.0", + "jest-environment-node": "^29.3.1", + "jest-haste-map": "^29.3.1", + "jest-leak-detector": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-resolve": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-util": "^29.3.1", + "jest-watcher": "^29.3.1", + "jest-worker": "^29.3.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/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.14.2" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", + "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.3.1", + "@jest/fake-timers": "^29.3.1", + "@jest/globals": "^29.3.1", + "@jest/source-map": "^29.2.0", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/node": "*", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", + "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-mock": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", + "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", + "expect": "^29.3.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-haste-map": "^29.3.1", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "pretty-format": "^29.3.1", + "semver": "^7.3.5" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/semver": { @@ -9423,37 +9515,46 @@ } }, "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", + "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^29.3.1", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^29.3.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -9469,35 +9570,52 @@ } }, "node_modules/jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", + "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", "dev": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^26.6.2", + "emittery": "^0.13.1", + "jest-util": "^29.3.1", "string-length": "^4.0.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", + "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", "dev": true, "dependencies": { "@types/node": "*", + "jest-util": "^29.3.1", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/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.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-tokens": { @@ -9699,66 +9817,6 @@ "signal-exit": "^3.0.2" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -10012,19 +10070,6 @@ "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10199,6 +10244,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -10787,6 +10838,21 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/nock": { + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, "node_modules/node-abort-controller": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", @@ -10896,47 +10962,6 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "optional": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-notifier/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -11175,12 +11200,6 @@ "node": ">=0.10.0" } }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -11340,23 +11359,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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/ora": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", @@ -11404,18 +11406,6 @@ "node": ">=6" } }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -11634,12 +11624,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -11962,15 +11946,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -12005,18 +11980,29 @@ } }, "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "^29.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/proc-log": { @@ -12090,6 +12076,15 @@ "node": ">= 6" } }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -12241,9 +12236,9 @@ "dev": true }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "node_modules/read": { @@ -12692,12 +12687,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -12748,6 +12737,15 @@ "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -12823,15 +12821,6 @@ "inherits": "^2.0.1" } }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true, - "engines": { - "node": "6.* || >= 7.*" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -12917,62 +12906,58 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "devOptional": true }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "node_modules/scoped-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz", + "integrity": "sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==", "dev": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "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/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "dev": true, "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", @@ -12984,309 +12969,312 @@ "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, "engines": { - "node": ">=4.8" + "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "sha.js": "bin.js" } }, - "node_modules/sane/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "fast-safe-stringify": "^2.0.7" } }, - "node_modules/sane/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "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": { - "pump": "^3.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/sane/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, - "node_modules/sane/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/normalize-path": { + "node_modules/snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, "engines": { - "node": ">=4" - } - }, - "node_modules/sane/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/snapdragon/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, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/sane/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-descriptor": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "is-extendable": "^0.1.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dev": true, "dependencies": { - "xmlchars": "^2.2.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/scoped-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz", - "integrity": "sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==", + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">=8" - } - }, - "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": ">=0.10.0" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dev": true, "dependencies": { - "semver": "^6.3.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/set-value/node_modules/is-extendable": { + "node_modules/snapdragon/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", @@ -13295,248 +13283,223 @@ "node": ">=0.10.0" } }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "dependencies": { - "fast-safe-stringify": "^2.0.7" + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "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==", + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "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==", + "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, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", "dev": true }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "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": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=0.10.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "minipass": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "dependencies": { - "kind-of": "^3.2.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "is-descriptor": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon/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/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "node_modules/static-extend/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", @@ -13548,7 +13511,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", @@ -13560,7 +13523,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { + "node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", @@ -13572,7 +13535,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", @@ -13584,7 +13547,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { + "node_modules/static-extend/node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", @@ -13598,16 +13561,7 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { + "node_modules/static-extend/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -13616,1033 +13570,804 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" } }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" } }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "node_modules/stream-combiner2/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": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" + "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/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/stream-combiner2/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/stream-combiner2/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, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/stream-splicer/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": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "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/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "node_modules/stream-splicer/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/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/stream-splicer/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": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/streamfilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz", + "integrity": "sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.0" + "readable-stream": "^3.0.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.12.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "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": { - "minipass": "^3.1.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "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": { - "escape-string-regexp": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "is-utf8": "^0.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/strip-bom-stream/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "is-utf8": "^0.2.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "minimist": "^1.1.0" + } + }, + "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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/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, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", "dev": true, "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" + "acorn-node": "^1.2.0" } }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "node_modules/tar": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", + "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", "dev": true, "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/stream-combiner2/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==", + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "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" + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/stream-combiner2/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/stream-combiner2/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==", + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/stream-splicer/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/stream-splicer/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==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/stream-splicer/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/streamfilter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-3.0.0.tgz", - "integrity": "sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==", + "node_modules/textextensions": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-5.15.0.tgz", + "integrity": "sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw==", "dev": true, - "dependencies": { - "readable-stream": "^3.0.6" - }, "engines": { - "node": ">=8.12.0" + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, - "node_modules/string-length": { + "node_modules/through2": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "readable-stream": "3" } }, - "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==", + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "process": "~0.11.0" }, "engines": { - "node": ">=8" + "node": ">=0.6.0" } }, - "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==", + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.17.0" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, - "node_modules/strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==", + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", "dev": true, "dependencies": { - "is-utf8": "^0.2.1" + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/strip-bom-stream": { + "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "dependencies": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/strip-bom-stream/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "dependencies": { - "is-utf8": "^0.2.0" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, - "dependencies": { - "minimist": "^1.1.0" - } - }, - "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==", + "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": { - "has-flag": "^4.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.6" } }, - "node_modules/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==", + "node_modules/treeverse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", + "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", + "dev": true + }, + "node_modules/ts-jest": { + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", + "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.1", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "node_modules/ts-jest/node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { - "acorn-node": "^1.2.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, - "engines": { - "node": ">=10" + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, - "node_modules/temp": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "dependencies": { - "rimraf": "~2.6.2" - }, "engines": { - "node": ">=6.0.0" + "node": ">=0.3.1" } }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "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, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/textextensions": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-5.15.0.tgz", - "integrity": "sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">=10" }, "funding": { - "url": "https://bevry.me/fund" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "dependencies": { - "readable-stream": "3" + "is-typedarray": "^1.0.0" } }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true, - "dependencies": { - "process": "~0.11.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=0.6.0" + "node": ">=4.2.0" } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" + "bin": { + "umd": "bin/cli.js" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", "dev": true, "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "undeclared-identifiers": "bin.js" } }, - "node_modules/to-fast-properties": { + "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, + "peer": true, "engines": { "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "peer": true, "dependencies": { - "kind-of": "^3.0.2" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "peer": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "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.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "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": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true, - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "peer": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "dependencies": { "arr-union": "^3.1.0", @@ -14699,15 +14424,6 @@ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -14923,27 +14639,24 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" + "node": ">=10.12.0" } }, "node_modules/validate-npm-package-license": { @@ -15027,28 +14740,6 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", @@ -15073,48 +14764,10 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "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" @@ -15126,12 +14779,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, "node_modules/which-pm": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", @@ -15186,15 +14833,6 @@ "node": ">=8" } }, - "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/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -15227,27 +14865,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", @@ -15257,18 +14874,6 @@ "node": ">=8" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -15279,10 +14884,13 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "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", @@ -15290,38 +14898,30 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/yeoman-environment": { @@ -15554,6 +15154,15 @@ "node": ">=10" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -16427,6 +16036,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -17088,14 +16706,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, "@gar/promisify": { @@ -17130,194 +16759,248 @@ "dev": true }, "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", + "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", "slash": "^3.0.0" } }, "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", + "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/reporters": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.2.0", + "jest-config": "^29.3.1", + "jest-haste-map": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-resolve-dependencies": "^29.3.1", + "jest-runner": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "jest-watcher": "^29.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true + } } }, "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", + "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", "dev": true, "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/fake-timers": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", - "jest-mock": "^26.6.2" + "jest-mock": "^29.3.1" + } + }, + "@jest/expect": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "dev": true, + "requires": { + "expect": "^29.3.1", + "jest-snapshot": "^29.3.1" + } + }, + "@jest/expect-utils": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", + "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "dev": true, + "requires": { + "jest-get-type": "^29.2.0" } }, "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", + "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", + "@jest/types": "^29.3.1", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-message-util": "^29.3.1", + "jest-mock": "^29.3.1", + "jest-util": "^29.3.1" } }, "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", + "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", "dev": true, "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@jest/environment": "^29.3.1", + "@jest/expect": "^29.3.1", + "@jest/types": "^29.3.1", + "jest-mock": "^29.3.1" } }, "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", + "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" } }, "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz", + "integrity": "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", + "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/types": "^29.3.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", + "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", "dev": true, "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "@jest/test-result": "^29.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "slash": "^3.0.0" } }, "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", + "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", + "@babel/core": "^7.11.6", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } } }, "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", "dev": true, "requires": { + "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, @@ -18351,6 +18034,12 @@ "@octokit/openapi-types": "^12.11.0" } }, + "@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -18367,9 +18056,9 @@ } }, "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -18390,6 +18079,30 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "@types/babel__core": { "version": "7.1.20", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", @@ -18471,13 +18184,13 @@ } }, "@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "version": "29.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.3.tgz", + "integrity": "sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==", "dev": true, "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "@types/minimatch": { @@ -18521,9 +18234,9 @@ } }, "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.14.tgz", + "integrity": "sha512-9Pj7abXoW1RSTcZaL2Hk6G2XyLMlp5ECdVC/Zf2p/KBjC3srijLGgRAXOBjtFrJoIrvxdTKyKDA14bEcbxBaWw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -18543,12 +18256,6 @@ "lodash.isplainobject": "^4.0.6" } }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -18561,24 +18268,6 @@ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", @@ -18715,9 +18404,9 @@ "dev": true }, "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", @@ -18837,6 +18526,12 @@ } } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -19029,18 +18724,17 @@ "requires": {} }, "babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", + "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", "dev": true, "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", + "@jest/transform": "^29.3.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.2.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" } }, @@ -19055,32 +18749,17 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - } } }, "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", + "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -19138,12 +18817,12 @@ } }, "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", + "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^26.6.2", + "babel-plugin-jest-hoist": "^29.2.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -19376,12 +19055,6 @@ } } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browser-resolve": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", @@ -19580,6 +19253,15 @@ "update-browserslist-db": "^1.0.9" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -19729,15 +19411,6 @@ "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, "cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", @@ -19799,9 +19472,9 @@ } }, "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, "class-utils": { @@ -20074,14 +19747,27 @@ "dev": true }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } } }, "clone": { @@ -20479,6 +20165,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -20515,29 +20207,6 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -20559,17 +20228,6 @@ "assert-plus": "^1.0.0" } }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, "dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -20591,18 +20249,6 @@ "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "dev": true }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", - "dev": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -20618,18 +20264,18 @@ "mimic-response": "^1.0.0" } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, "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", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -20788,9 +20434,9 @@ "dev": true }, "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", + "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==", "dev": true }, "diffie-hellman": { @@ -20827,23 +20473,6 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -20954,9 +20583,9 @@ } }, "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true }, "emoji-regex": { @@ -21039,36 +20668,18 @@ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, "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 }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "peer": true }, "eventemitter3": { "version": "4.0.7", @@ -21092,12 +20703,6 @@ "safe-buffer": "^5.1.1" } }, - "exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -21235,17 +20840,16 @@ } }, "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", + "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" + "@jest/expect-utils": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1" } }, "extend": { @@ -21925,13 +21529,6 @@ "integrity": "sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true, - "optional": true - }, "gulp-filter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-7.0.0.tgz", @@ -22115,15 +21712,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -22594,12 +22182,6 @@ "isobject": "^3.0.1" } }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -22722,14 +22304,15 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" } }, @@ -22778,238 +22361,291 @@ } }, "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", + "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", "dev": true, "requires": { - "@jest/core": "^26.6.3", + "@jest/core": "^29.3.1", + "@jest/types": "^29.3.1", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^29.3.1" } }, "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", + "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "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" + } + } + } + }, + "jest-circus": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", + "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" + "@jest/environment": "^29.3.1", + "@jest/expect": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.3.1", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "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" + } + } } }, "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", + "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", "dev": true, "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/core": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-config": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", "prompts": "^2.0.1", - "yargs": "^15.4.1" + "yargs": "^17.3.1" } }, "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", + "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.3.1", + "@jest/types": "^29.3.1", + "babel-jest": "^29.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.3.1", + "jest-environment-node": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-runner": "^29.3.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.3.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true + }, + "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 + } } }, "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", + "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "diff-sequences": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" } }, "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz", + "integrity": "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", + "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - } - }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "jest-get-type": "^29.2.0", + "jest-util": "^29.3.1", + "pretty-format": "^29.3.1" } }, "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", + "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", "dev": true, "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^29.3.1", + "@jest/fake-timers": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "jest-mock": "^29.3.1", + "jest-util": "^29.3.1" } }, "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", + "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==", "dev": true }, "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", + "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.3.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", + "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", "dev": true, "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" } }, "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", + "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "pretty-format": "^29.3.1" } }, "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", + "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.3.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.3.1", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", + "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*" + "@jest/types": "^29.3.1", + "@types/node": "*", + "jest-util": "^29.3.1" } }, "jest-pnp-resolver": { @@ -23020,133 +22656,148 @@ "requires": {} }, "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", "dev": true }, "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", + "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", "dev": true, "requires": { - "@jest/types": "^26.6.2", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^29.3.1", + "jest-validate": "^29.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", + "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "jest-regex-util": "^29.2.0", + "jest-snapshot": "^29.3.1" } }, "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", + "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", "dev": true, "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/console": "^29.3.1", + "@jest/environment": "^29.3.1", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.2.0", + "jest-environment-node": "^29.3.1", + "jest-haste-map": "^29.3.1", + "jest-leak-detector": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-resolve": "^29.3.1", + "jest-runtime": "^29.3.1", + "jest-util": "^29.3.1", + "jest-watcher": "^29.3.1", + "jest-worker": "^29.3.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "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" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } } }, "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", + "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "dev": true, + "requires": { + "@jest/environment": "^29.3.1", + "@jest/fake-timers": "^29.3.1", + "@jest/globals": "^29.3.1", + "@jest/source-map": "^29.2.0", + "@jest/test-result": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/node": "*", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", + "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-mock": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.3.1", + "jest-snapshot": "^29.3.1", + "jest-util": "^29.3.1", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - } - }, - "jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "strip-bom": "^4.0.0" } }, "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", + "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.3.1", + "@jest/transform": "^29.3.1", + "@jest/types": "^29.3.1", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", + "expect": "^29.3.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.3.1", + "jest-get-type": "^29.2.0", + "jest-haste-map": "^29.3.1", + "jest-matcher-utils": "^29.3.1", + "jest-message-util": "^29.3.1", + "jest-util": "^29.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "pretty-format": "^29.3.1", + "semver": "^7.3.5" }, "dependencies": { "semver": { @@ -23161,31 +22812,39 @@ } }, "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^29.3.1", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ci-info": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", + "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "dev": true + } } }, "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", + "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^29.3.1", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^29.3.1" }, "dependencies": { "camelcase": { @@ -23197,29 +22856,42 @@ } }, "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", + "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", "dev": true, "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/test-result": "^29.3.1", + "@jest/types": "^29.3.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^26.6.2", + "emittery": "^0.13.1", + "jest-util": "^29.3.1", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", + "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", "dev": true, "requires": { "@types/node": "*", + "jest-util": "^29.3.1", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" + }, + "dependencies": { + "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, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "js-tokens": { @@ -23393,54 +23065,6 @@ } } }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -23648,16 +23272,6 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -23804,6 +23418,12 @@ "semver": "^6.0.0" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -24274,6 +23894,18 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "nock": { + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" + } + }, "node-abort-controller": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", @@ -24361,40 +23993,6 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "optional": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true - } - } - }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -24584,12 +24182,6 @@ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -24711,20 +24303,6 @@ "mimic-fn": "^2.1.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "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" - } - }, "ora": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", @@ -24760,12 +24338,6 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -24935,12 +24507,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -25177,12 +24743,6 @@ } } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -25202,15 +24762,22 @@ "dev": true }, "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", + "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", "dev": true, "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "^29.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } } }, "proc-log": { @@ -25269,6 +24836,12 @@ "sisteransi": "^1.0.5" } }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -25391,9 +24964,9 @@ } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "read": { @@ -25773,12 +25346,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -25810,371 +25377,127 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "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, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { - "xmlchars": "^2.2.0" + "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, "scoped-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz", @@ -26291,13 +25614,6 @@ "rechoir": "^0.6.2" } }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -26896,12 +26212,6 @@ } } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -26948,12 +26258,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -27010,16 +26314,6 @@ } } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -27043,12 +26337,6 @@ "integrity": "sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw==", "dev": true }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -27151,27 +26439,6 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, "treeify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", @@ -27184,6 +26451,74 @@ "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", "dev": true }, + "ts-jest": { + "version": "29.0.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz", + "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.1", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "dependencies": { + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "semver": { + "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" + } + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, "tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", @@ -27211,15 +26546,6 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -27363,12 +26689,6 @@ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -27539,23 +26859,21 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } + "convert-source-map": "^1.6.0" } }, "validate-npm-package-license": { @@ -27629,24 +26947,6 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", @@ -27671,38 +26971,6 @@ "defaults": "^1.0.3" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -27712,12 +26980,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, "which-pm": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", @@ -27760,12 +27022,6 @@ "string-width": "^4.0.0" } }, - "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 - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -27795,31 +27051,12 @@ "typedarray-to-buffer": "^3.1.5" } }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - }, "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -27827,9 +27064,9 @@ "dev": true }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { @@ -27838,33 +27075,25 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true }, "yeoman-environment": { "version": "3.3.0", @@ -28022,6 +27251,12 @@ } } }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index bbedac6..94c9dc1 100644 --- a/package.json +++ b/package.json @@ -8,15 +8,18 @@ "buildAndPush": "npm run build && zapier push" }, "dependencies": { - "zapier-platform-core": "12.2.0", "@kontent-ai/delivery-sdk": "^12.4.0", - "@kontent-ai/management-sdk": "^3.4.0" + "@kontent-ai/management-sdk": "^3.4.0", + "zapier-platform-core": "12.2.0" }, "devDependencies": { - "zapier-platform-cli": "^12.2.0", - "jest": "^26.6.3", - "@types/jest": "^26.0.23", + "@types/jest": "^29.2.3", "@types/node": "^14", - "typescript": "^4.9.3" + "jest": "^29.3.1", + "nock": "^13.2.9", + "ts-jest": "^29.0.3", + "ts-node": "^10.9.1", + "typescript": "^4.9.3", + "zapier-platform-cli": "^12.2.0" } } diff --git a/src/test/actions/changeContentItemWorkflow.test.ts b/src/test/actions/changeContentItemWorkflow.test.ts new file mode 100644 index 0000000..d231a35 --- /dev/null +++ b/src/test/actions/changeContentItemWorkflow.test.ts @@ -0,0 +1,81 @@ +import { createAppTester } from 'zapier-platform-core'; +import * as nock from 'nock'; +import { addInputData, mockBundle } from '../utils/mockBundle'; +import { LanguageVariantContracts, ManagementClient, WorkflowContracts } from '@kontent-ai/management-sdk'; +import App from '../../index'; +import { KontentBundle } from '../../types/kontentBundle'; +import { changeContentItemWorkflow, InputData } from '../../actions/changeContentItemWorkflow'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("changeContentItemWorkflow", () => { + it("changes WF step", async () => { + const bundle: KontentBundle = addInputData(mockBundle, { + fullItemId: `${rawVariant.item.id}/${rawVariant.language.id}`, + workflowStepIds: rawWfSteps[1]?.id || "", + }); + + const client = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedWfRequest = client.listWorkflowSteps(); + nock(expectedWfRequest.getUrl()).get("").reply(200, rawWfSteps); + + const expectedVariantRequest = client + .viewLanguageVariant() + .byItemId(rawVariant.item.id || "") + .byLanguageId(rawVariant.language.id || ""); + nock(expectedVariantRequest.getUrl()).get("").reply(200, rawVariant); + + const expectedChangeWfRequest = client + .changeWorkflowStepOfLanguageVariant() + .byItemId(rawVariant.item.id || "") + .byLanguageId(rawVariant.language.id || "") + .byWorkflowStepId(rawWfSteps[1]?.id || ""); + nock(expectedChangeWfRequest.getUrl()).put("").reply(204); + + const search = App.creates[changeContentItemWorkflow.key].operation.perform; + + const result = await appTester(search, bundle); + + expect(result).toMatchInlineSnapshot(` + { + "message": "Content item workflow step has changed", + } + `); + }); +}); + +const rawWfSteps: ReadonlyArray = [ + { + id: "50fc24bd-0fc1-426e-b9c3-572de7cd179a", + name: "Draft", + codename: "draft", + transitions_to: ["792ea977-4fc1-49c8-9950-4c245576f423"], + }, + { + id: "792ea977-4fc1-49c8-9950-4c245576f423", + name: "Review", + codename: "review", + transitions_to: ["4cf052e1-13a3-4649-9eb7-65e07a7cfc49"], + }, + { + id: "4cf052e1-13a3-4649-9eb7-65e07a7cfc49", + name: "Publish", + codename: "publish", + transitions_to: [], + }, +]; + +const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { + item: { id: "db2dcddc-62c5-41a7-81f5-9f958f69b0bd" }, + language: { id: "984efe5c-6898-4d51-8afa-a66b9de51cc0" }, + elements: [], + last_modified: new Date(1316, 5, 14).toISOString(), + workflow_step: { id: rawWfSteps[0]?.id }, +}; diff --git a/src/test/actions/createContentItem.test.ts b/src/test/actions/createContentItem.test.ts new file mode 100644 index 0000000..71f9697 --- /dev/null +++ b/src/test/actions/createContentItem.test.ts @@ -0,0 +1,124 @@ +import { createAppTester } from 'zapier-platform-core'; +import * as nock from 'nock'; +import { addInputData, mockBundle } from '../utils/mockBundle'; +import { + ContentItemContracts, + ContentTypeContracts, + LanguageContracts, + LanguageVariantContracts, + ManagementClient, +} from '@kontent-ai/management-sdk'; +import App from '../../index'; +import { KontentBundle } from '../../types/kontentBundle'; +import { createContentItem, InputData } from '../../actions/createContentItem'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("createContentItem", () => { + it("changes WF step", async () => { + const itemName = "Created item name"; + const itemExternalId = "Created item external id"; + + const bundle: KontentBundle = addInputData(mockBundle, { + name: itemName, + contentTypeId: rawContentType.id, + externalId: itemExternalId, + languageId: rawLanguage.id, + }); + + const client = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedGetTypeRequest = client + .viewContentType() + .byTypeId(rawContentType.id); + nock(expectedGetTypeRequest.getUrl()) + .get("") + .reply(200, rawContentType) + .persist(); + + const expectedGetLanguageRequest = client + .viewLanguage() + .byLanguageId(rawLanguage.id); + nock(expectedGetLanguageRequest.getUrl()).get("").reply(200, rawLanguage); + + const expectedCreateItemRequest = client.addContentItem().withData({ + name: itemName, + type: { codename: rawContentType.codename }, + external_id: itemExternalId, + }); + const itemId = "e819c466-4b0c-4fd9-9441-b41dd85a1cdc"; + nock(expectedCreateItemRequest.getUrl()) + .post("", JSON.stringify(expectedCreateItemRequest.data)) + .reply(201, { + id: itemId, + name: itemName, + codename: "generated_codename", + type: { id: rawContentType.id, codename: rawContentType.codename }, + external_id: itemExternalId, + last_modified: new Date(1993, 1, 1), + collection: { id: "00000000-0000-0000-0000-000000000000" }, + } as ContentItemContracts.IAddContentItemResponseContract); + + const expectedCreateVariantRequest = client + .upsertLanguageVariant() + .byItemId(itemId) + .byLanguageId(rawLanguage.id) + .withData(() => []); + nock(expectedCreateVariantRequest.getUrl()) + .put("", JSON.stringify(expectedCreateVariantRequest.data)) + .reply(201, { + item: { id: itemId }, + language: { id: rawLanguage.id }, + elements: [], + last_modified: new Date(1993, 1, 1).toISOString(), + workflow_step: { id: "3ecd7341-ad09-44b1-b457-4257ba3fa73b" }, + } as LanguageVariantContracts.IUpsertLanguageVariantResponseContract); + + const search = App.creates[createContentItem.key].operation.perform; + + const result = await appTester(search, bundle); + + expect(result).toMatchInlineSnapshot(` + { + "elements": {}, + "modular_content": "[]", + "system": { + "codename": "generated_codename", + "contentTypeId": "f14de016-4d57-475d-a855-b12967294a51", + "externalId": "Created item external id", + "fullId": "e819c466-4b0c-4fd9-9441-b41dd85a1cdc/ed733acb-e1e2-4c82-bfe4-ae82f73908f9", + "id": "e819c466-4b0c-4fd9-9441-b41dd85a1cdc", + "language": "test_language", + "languageId": "ed733acb-e1e2-4c82-bfe4-ae82f73908f9", + "lastModified": "1993-01-31T23:00:00.000Z", + "name": "Created item name", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "test_content_type", + "workflowStepId": "3ecd7341-ad09-44b1-b457-4257ba3fa73b", + }, + } + `); + }); +}); + +const rawContentType: ContentTypeContracts.IContentTypeContract = { + id: "f14de016-4d57-475d-a855-b12967294a51", + name: "Test content type", + codename: "test_content_type", + elements: [], + last_modified: new Date(1348, 4, 7).toISOString(), +}; + +const rawLanguage: LanguageContracts.ILanguageModelContract = { + id: "ed733acb-e1e2-4c82-bfe4-ae82f73908f9", + name: "Test language", + codename: "test_language", + is_active: true, + is_default: true, +}; diff --git a/src/test/actions/deleteLanguageVariant.test.ts b/src/test/actions/deleteLanguageVariant.test.ts new file mode 100644 index 0000000..509c4df --- /dev/null +++ b/src/test/actions/deleteLanguageVariant.test.ts @@ -0,0 +1,201 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { addInputData, mockBundle } from "../utils/mockBundle"; +import { + ContentItemContracts, + ContentTypeContracts, + LanguageContracts, + LanguageVariantContracts, + ManagementClient, +} from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import { + deleteLanguageVariant, + InputData, +} from "../../actions/deleteLanguageVariant"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("deleteLanguageVariant", () => { + it("deletes language variant through CM API", async () => { + const bundle: KontentBundle< + Omit + > = addInputData(mockBundle, { + languageId: rawVariant.language.id || "", + searchPattern: "{0}={1}", + }); + + const client = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedVariantRequest = client + .viewLanguageVariant() + .byItemId(rawVariant.item.id || "") + .byLanguageId(rawVariant.language.id || ""); + nock(expectedVariantRequest.getUrl()) + .get("") + .reply(200, rawVariant) + .persist(); + + const expectedLanguageRequest = client + .viewLanguage() + .byLanguageId(rawLanguage.id); + nock(expectedLanguageRequest.getUrl()) + .get("") + .reply(200, rawLanguage) + .persist(); + + const expectedContentTypeRequest = client + .viewContentType() + .byTypeId(rawContentType.id); + nock(expectedContentTypeRequest.getUrl()) + .get("") + .reply(200, rawContentType) + .persist(); + + const expectedDeleteRequest = client + .deleteLanguageVariant() + .byItemId(rawItem.id) + .byLanguageId(rawVariant.language.id || ""); + nock(expectedDeleteRequest.getUrl()).delete("").reply(204).persist(); + + const search = App.creates[deleteLanguageVariant.key].operation.perform; + + const expectedByIdRequest = client.viewContentItem().byItemId(rawItem.id); + nock(expectedByIdRequest.getUrl()).get("").reply(200, rawItem); + + const resultById = await appTester( + search, + addInputData(bundle, { searchField: "id", searchValue: rawItem.id }) + ); + + expect(resultById).toMatchInlineSnapshot(` + { + "elements": {}, + "modular_content": "[]", + "system": { + "codename": "some_item_name", + "contentTypeId": "22d83f4d-dec4-458b-8ef8-fc4a05761524", + "externalId": "item_external_id", + "fullId": "9d309f21-5326-42e3-ab12-0c4a5e9db64d/e3a742b4-a946-4baa-bf93-39ad1d13834b", + "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + "language": "sample_language", + "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "Some Item Name", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "sample_content_type", + "workflowStepId": "6b7590d5-75e5-4860-8cc0-02c5bffce2dc", + }, + } + `); + + const expectedByCodenameRequest = client + .viewContentItem() + .byItemCodename(rawItem.codename); + nock(expectedByCodenameRequest.getUrl()).get("").reply(200, rawItem); + + const resultByCodename = await appTester( + search, + addInputData(bundle, { + searchField: "system.codename", + searchValue: rawItem.codename, + }) + ); + + expect(resultByCodename).toMatchInlineSnapshot(` + { + "elements": {}, + "modular_content": "[]", + "system": { + "codename": "some_item_name", + "contentTypeId": "22d83f4d-dec4-458b-8ef8-fc4a05761524", + "externalId": "item_external_id", + "fullId": "9d309f21-5326-42e3-ab12-0c4a5e9db64d/e3a742b4-a946-4baa-bf93-39ad1d13834b", + "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + "language": "sample_language", + "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "Some Item Name", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "sample_content_type", + "workflowStepId": "6b7590d5-75e5-4860-8cc0-02c5bffce2dc", + }, + } + `); + + const expectedByExternalIdRequest = client + .viewContentItem() + .byItemExternalId(rawItem.external_id || ""); + nock(expectedByExternalIdRequest.getUrl()).get("").reply(200, rawItem); + + const resultByExternalId = await appTester( + search, + addInputData(bundle, { + searchField: "externalId", + searchValue: rawItem.external_id || "", + }) + ); + + expect(resultByExternalId).toMatchInlineSnapshot(` + { + "elements": {}, + "modular_content": "[]", + "system": { + "codename": "some_item_name", + "contentTypeId": "22d83f4d-dec4-458b-8ef8-fc4a05761524", + "externalId": "item_external_id", + "fullId": "9d309f21-5326-42e3-ab12-0c4a5e9db64d/e3a742b4-a946-4baa-bf93-39ad1d13834b", + "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + "language": "sample_language", + "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "Some Item Name", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "sample_content_type", + "workflowStepId": "6b7590d5-75e5-4860-8cc0-02c5bffce2dc", + }, + } + `); + }); +}); + +const rawLanguage: LanguageContracts.ILanguageModelContract = { + id: "e3a742b4-a946-4baa-bf93-39ad1d13834b", + name: "Sample language", + codename: "sample_language", + is_default: false, + is_active: true, +}; + +const rawContentType: ContentTypeContracts.IContentTypeContract = { + id: "22d83f4d-dec4-458b-8ef8-fc4a05761524", + name: "Sample content type", + codename: "sample_content_type", + last_modified: new Date(1212, 9, 26).toISOString(), + elements: [], +}; + +const rawItem: ContentItemContracts.IContentItemModelContract = { + id: "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + name: "Some Item Name", + codename: "some_item_name", + collection: { id: "1da391cf-d664-4492-a8f4-74420a08a069" }, + type: { id: rawContentType.id }, + external_id: "item_external_id", + last_modified: new Date(1355, 4, 5), +}; + +const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { + item: { id: rawItem.id }, + language: { id: rawLanguage.id }, + elements: [], + last_modified: new Date(1316, 5, 14).toISOString(), + workflow_step: { id: "6b7590d5-75e5-4860-8cc0-02c5bffce2dc" }, +}; diff --git a/src/test/actions/updateLanguageVariant.test.ts b/src/test/actions/updateLanguageVariant.test.ts new file mode 100644 index 0000000..84df310 --- /dev/null +++ b/src/test/actions/updateLanguageVariant.test.ts @@ -0,0 +1,180 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { addInputData, mockBundle } from "../utils/mockBundle"; +import { + ContentItemContracts, + ContentTypeContracts, + LanguageContracts, + LanguageVariantContracts, + ManagementClient, + WorkflowContracts, + languageVariantElementsBuilder, +} from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import { + InputData, + updateLanguageVariant, +} from "../../actions/updateLanguageVariant"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("updateLanguageVariant", () => { + it("updates language variant through CM API", async () => { + const newElementValue = "This is a very new value."; + + const bundle: KontentBundle< + Omit + > = addInputData(mockBundle, { + languageId: rawVariant.language.id || "", + searchPattern: "{0}={1}", + contentTypeId: rawContentType.id, + [`elements__${rawContentType.elements[0]?.codename || ""}`]: + newElementValue, + }); + + const client = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedVariantRequest = client + .viewLanguageVariant() + .byItemId(rawVariant.item.id || "") + .byLanguageId(rawVariant.language.id || ""); + nock(expectedVariantRequest.getUrl()) + .get("") + .reply(200, rawVariant) + .persist(); + + const expectedLanguageRequest = client + .viewLanguage() + .byLanguageId(rawLanguage.id); + nock(expectedLanguageRequest.getUrl()) + .get("") + .reply(200, rawLanguage) + .persist(); + + const expectedContentTypeRequest = client + .viewContentType() + .byTypeId(rawContentType.id); + nock(expectedContentTypeRequest.getUrl()) + .get("") + .reply(200, rawContentType) + .persist(); + + const expectedWfRequest = client.listWorkflowSteps(); + nock(expectedWfRequest.getUrl()).get("").reply(200, rawWfSteps); + + const expectedUpdateRequest = client + .upsertLanguageVariant() + .byItemId(rawItem.id) + .byLanguageId(rawLanguage.id) + .withData((builder) => [ + builder.textElement({ + element: { id: rawContentType.elements[0]?.id || "" }, + value: newElementValue, + }), + ]); + const expectedRawBody = JSON.stringify({ + elements: expectedUpdateRequest.data(languageVariantElementsBuilder), + }); + nock(expectedUpdateRequest.getUrl()) + .put("", expectedRawBody) + .reply(200, { + ...rawVariant, + elements: [{ ...rawVariant.elements[0], value: newElementValue }], + }); + + const search = App.creates[updateLanguageVariant.key].operation.perform; + + const expectedByIdRequest = client.viewContentItem().byItemId(rawItem.id); + nock(expectedByIdRequest.getUrl()).get("").reply(200, rawItem); + + const resultById = await appTester( + search, + addInputData(bundle, { searchField: "id", searchValue: rawItem.id }) + ); + + expect(resultById).toMatchInlineSnapshot(` + { + "elements": { + "text_element": "This is a very new value.", + }, + "modular_content": "[]", + "system": { + "codename": "some_item_name", + "contentTypeId": "22d83f4d-dec4-458b-8ef8-fc4a05761524", + "externalId": "item_external_id", + "fullId": "9d309f21-5326-42e3-ab12-0c4a5e9db64d/e3a742b4-a946-4baa-bf93-39ad1d13834b", + "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + "language": "sample_language", + "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "Some Item Name", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "sample_content_type", + "workflowStepId": "bc6be0f9-1f99-4acf-b2aa-bb856974a633", + }, + } + `); + }); +}); + +const rawWfSteps: ReadonlyArray = [ + { + id: "bc6be0f9-1f99-4acf-b2aa-bb856974a633", + name: "sample step", + codename: "sample_step", + transitions_to: [], + }, +]; + +const rawLanguage: LanguageContracts.ILanguageModelContract = { + id: "e3a742b4-a946-4baa-bf93-39ad1d13834b", + name: "Sample language", + codename: "sample_language", + is_default: false, + is_active: true, +}; + +const rawContentType: ContentTypeContracts.IContentTypeContract = { + id: "22d83f4d-dec4-458b-8ef8-fc4a05761524", + name: "Sample content type", + codename: "sample_content_type", + last_modified: new Date(1212, 9, 26).toISOString(), + elements: [ + { + id: "253ccb11-34f6-4879-932f-648eca309df1", + type: "text", + name: "Text element", + codename: "text_element", + }, + ], +}; + +const rawItem: ContentItemContracts.IContentItemModelContract = { + id: "9d309f21-5326-42e3-ab12-0c4a5e9db64d", + name: "Some Item Name", + codename: "some_item_name", + collection: { id: "1da391cf-d664-4492-a8f4-74420a08a069" }, + type: { id: rawContentType.id }, + external_id: "item_external_id", + last_modified: new Date(1355, 4, 5), +}; + +const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { + item: { id: rawItem.id }, + language: { id: rawLanguage.id }, + elements: [ + { + element: { id: "253ccb11-34f6-4879-932f-648eca309df1" }, + value: "some initial value", + }, + ], + last_modified: new Date(1316, 5, 14).toISOString(), + workflow_step: { id: rawWfSteps[0]?.id || "" }, +}; diff --git a/src/test/index.test.ts b/src/test/index.test.ts deleted file mode 100644 index 4ba307a..0000000 --- a/src/test/index.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* globals describe, expect, test */ - -import { createAppTester, tools } from 'zapier-platform-core'; -import App from '../index'; - -const appTester = createAppTester(App); - -describe('My App', () => { - - it('template test', (done) => { - const x = 1; - - expect(x).toBe(1); - done(); - }); - -}); diff --git a/src/test/searches/findAsset.test.ts b/src/test/searches/findAsset.test.ts new file mode 100644 index 0000000..6c0457b --- /dev/null +++ b/src/test/searches/findAsset.test.ts @@ -0,0 +1,132 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { mockBundle } from "../utils/mockBundle"; +import { AssetContracts, ManagementClient } from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import { findAsset, InputData } from "../../searches/findAsset"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("findAsset", () => { + it("returns asset returned from the CM API", async () => { + const expectedAssetId = "d0ee656f-e16c-4582-a697-d9d4d8df7f2c"; + const expectedAssetExternalId = "80ae417c-af1b-4969-a703-860349a7d2d6"; + + const bundleById: KontentBundle = { + ...mockBundle, + inputData: { + searchField: "id", + searchPattern: "{0}={1}", + searchValue: expectedAssetId, + }, + }; + + const bundleByExternalId: KontentBundle = { + ...bundleById, + inputData: { + ...bundleById.inputData, + searchField: "externalId", + searchValue: expectedAssetExternalId, + }, + }; + + const client = new ManagementClient({ + projectId: bundleById.authData.projectId, + apiKey: bundleById.authData.cmApiKey, + }); + + const expectedByIdRequest = client.viewAsset().byAssetId(expectedAssetId); + + const expectedByExternalIdRequest = client + .viewAsset() + .byAssetExternalId(expectedAssetExternalId); + + const expectedRawAsset: AssetContracts.IAssetModelContract = { + id: "d0442642-6e09-44a0-a5d3-1e842030cee6", + title: "test asset", + url: "https://bestAsset.test", + external_id: expectedAssetExternalId, + type: "image/png", + file_name: "bestAsset.png", + folder: { + id: "56771c7e-33e4-49c8-bffc-83f335e5343f", + }, + size: 300000, + descriptions: [], + image_height: 1080, + image_width: 1920, + last_modified: new Date(1278, 8, 26).toISOString(), + file_reference: { + type: "internal", + id: "bc28f312-dab4-4ee3-9f52-e53a1017d324", + }, + }; + + nock(expectedByIdRequest.getUrl()).get("").reply(200, expectedRawAsset); + nock(expectedByExternalIdRequest.getUrl()) + .get("") + .reply(200, { + ...expectedRawAsset, + title: "test asset found by external id", + }); + + const search = App.searches[findAsset.key].operation.perform; + + const resultById = await appTester(search, bundleById); + const resultByExternalId = await appTester(search, bundleByExternalId); + + expect(resultById).toMatchInlineSnapshot(` + [ + { + "descriptions": [], + "externalId": "80ae417c-af1b-4969-a703-860349a7d2d6", + "fileName": "bestAsset.png", + "fileReference": AssetFileReference { + "id": "bc28f312-dab4-4ee3-9f52-e53a1017d324", + "type": "internal", + }, + "folder": { + "id": "56771c7e-33e4-49c8-bffc-83f335e5343f", + }, + "id": "d0442642-6e09-44a0-a5d3-1e842030cee6", + "imageHeight": 1080, + "imageWidth": 1920, + "lastModified": "1278-09-25T23:02:16.000Z", + "size": 300000, + "title": "test asset", + "type": "image/png", + "url": "https://bestAsset.test", + }, + ] + `); + + expect(resultByExternalId).toMatchInlineSnapshot(` + [ + { + "descriptions": [], + "externalId": "80ae417c-af1b-4969-a703-860349a7d2d6", + "fileName": "bestAsset.png", + "fileReference": AssetFileReference { + "id": "bc28f312-dab4-4ee3-9f52-e53a1017d324", + "type": "internal", + }, + "folder": { + "id": "56771c7e-33e4-49c8-bffc-83f335e5343f", + }, + "id": "d0442642-6e09-44a0-a5d3-1e842030cee6", + "imageHeight": 1080, + "imageWidth": 1920, + "lastModified": "1278-09-25T23:02:16.000Z", + "size": 300000, + "title": "test asset found by external id", + "type": "image/png", + "url": "https://bestAsset.test", + }, + ] + `); + }); +}); diff --git a/src/test/searches/findContentItem.test.ts b/src/test/searches/findContentItem.test.ts new file mode 100644 index 0000000..313b766 --- /dev/null +++ b/src/test/searches/findContentItem.test.ts @@ -0,0 +1,340 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { addInputData, mockBundle } from "../utils/mockBundle"; +import { + ContentItemContracts, + ContentTypeContracts, + LanguageContracts, + ManagementClient, +} from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import { LanguageVariantContracts } from "@kontent-ai/management-sdk/lib/contracts"; +import { Contracts, DeliveryClient } from "@kontent-ai/delivery-sdk"; +import findContentItem, { InputData } from "../../searches/findContentItem"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("findContentItem", () => { + it("returns content item returned from the CM API found by id", async () => { + const bundle: KontentBundle< + Omit + > = addInputData(mockBundle, { + contentTypeId: rawContentType.id, + languageId: rawLanguage.id, + searchPattern: "{0}={1}", + searchInfo: "", + }); + + const managementClient = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedTypeRequest = managementClient + .viewContentType() + .byTypeId(rawContentType.id); + + nock(expectedTypeRequest.getUrl()) + .get("") + .reply(200, rawContentType) + .persist(); + + const expectedLanguageRequest = managementClient + .viewLanguage() + .byLanguageId(rawLanguage.id); + + nock(expectedLanguageRequest.getUrl()) + .get("") + .reply(200, rawLanguage) + .persist(); + + const expectedItemByIdQuery = managementClient + .viewContentItem() + .byItemId(rawContentItem.id); + + nock(expectedItemByIdQuery.getUrl()) + .get("") + .reply(200, rawContentItem) + .persist(); + + const expectedItemByCodenameQuery = managementClient + .viewContentItem() + .byItemCodename(rawContentItem.codename); + + nock(expectedItemByCodenameQuery.getUrl()) + .get("") + .reply(200, rawContentItem) + .persist(); + + const expectedItemByExternalIdQuery = managementClient + .viewContentItem() + .byItemExternalId(rawContentItem.external_id || ""); + + nock(expectedItemByExternalIdQuery.getUrl()) + .get("") + .reply(200, rawContentItem) + .persist(); + + const expectedVariantsOfItemQuery = managementClient + .listLanguageVariantsOfItem() + .byItemId(rawContentItem.id); + + nock(expectedVariantsOfItemQuery.getUrl()) + .get("") + .reply(200, [rawVariant]) + .persist(); + + const expectedItemByElementQuery = new DeliveryClient({ + projectId: bundle.authData.projectId, + previewApiKey: "someKey", + }) + .itemsFeed() + .withParameter({ getParam: () => `elements.text=greatText` }) + .types([rawContentType.codename]) + .queryConfig({ usePreviewMode: true }) + .limitParameter(1) + .languageParameter(rawLanguage.codename); + + const expectedItemByElementQueryUrl = expectedItemByElementQuery.getUrl(); + nock( + expectedItemByElementQueryUrl.slice( + 0, + expectedItemByElementQueryUrl.indexOf("?") + ) + ) + .get("") + .query( + new URLSearchParams( + expectedItemByElementQueryUrl.slice( + expectedItemByElementQueryUrl.indexOf("?") + 1 + ) + ) + ) + .reply(200, { items: [rawDeliveryItem], modular_content: {} }); + + const search = App.searches[findContentItem.key].operation.perform; + + const byIdResult = await appTester( + search, + addInputData(bundle, { + searchField: "id", + searchValue: rawContentItem.id, + }) + ); + + expect(byIdResult).toMatchInlineSnapshot(` + [ + { + "elements": { + "text": "greatText", + }, + "modular_content": "[]", + "system": { + "codename": "test_content_item", + "contentTypeId": "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", + "externalId": "test_item_external_id", + "fullId": "0de95e3e-2568-4aec-b996-dc71b1cf2944/2493d2af-27cd-4bb0-9f95-862ad58026ff", + "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", + "language": "test_language", + "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", + "lastModified": "1231-01-14T23:02:16.000Z", + "name": "test content item", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "test_content_type", + "workflowStepId": "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", + }, + }, + ] + `); + + const byCodenameResult = await appTester( + search, + addInputData(bundle, { + searchField: "system.codename", + searchValue: rawContentItem.codename, + }) + ); + + expect(byCodenameResult).toMatchInlineSnapshot(` + [ + { + "elements": { + "text": "greatText", + }, + "modular_content": "[]", + "system": { + "codename": "test_content_item", + "contentTypeId": "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", + "externalId": "test_item_external_id", + "fullId": "0de95e3e-2568-4aec-b996-dc71b1cf2944/2493d2af-27cd-4bb0-9f95-862ad58026ff", + "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", + "language": "test_language", + "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", + "lastModified": "1231-01-14T23:02:16.000Z", + "name": "test content item", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "test_content_type", + "workflowStepId": "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", + }, + }, + ] + `); + + const byExternalIdResult = await appTester( + search, + addInputData(bundle, { + searchField: "externalId", + searchValue: rawContentItem.external_id || "", + }) + ); + + expect(byExternalIdResult).toMatchInlineSnapshot(` + [ + { + "elements": { + "text": "greatText", + }, + "modular_content": "[]", + "system": { + "codename": "test_content_item", + "contentTypeId": "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", + "externalId": "test_item_external_id", + "fullId": "0de95e3e-2568-4aec-b996-dc71b1cf2944/2493d2af-27cd-4bb0-9f95-862ad58026ff", + "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", + "language": "test_language", + "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", + "lastModified": "1231-01-14T23:02:16.000Z", + "name": "test content item", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "test_content_type", + "workflowStepId": "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", + }, + }, + ] + `); + + const byElementResult = await appTester( + search, + addInputData(bundle, { + searchField: "elements.text", + searchValue: rawVariant.elements[0]?.value.toString() ?? "", + }) + ); + + expect(byElementResult).toMatchInlineSnapshot(` + [ + { + "elements": { + "text": "greatText", + }, + "modular_content": "[]", + "system": { + "codename": "test_content_item", + "contentTypeId": "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", + "externalId": "test_item_external_id", + "fullId": "0de95e3e-2568-4aec-b996-dc71b1cf2944/2493d2af-27cd-4bb0-9f95-862ad58026ff", + "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", + "language": "test_language", + "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", + "lastModified": "1231-01-14T23:02:16.000Z", + "name": "test content item", + "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", + "type": "test_content_type", + "workflowStepId": "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", + }, + }, + ] + `); + }); +}); + +const rawContentType: ContentTypeContracts.IContentTypeContract = { + id: "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", + name: "test content type", + codename: "test_content_type", + last_modified: new Date(1348, 4, 7).toISOString(), + elements: [ + { + id: "50702d62-b381-45bd-816e-57bf1ccd2de6", + type: "text", + name: "text element", + codename: "text", + }, + ], +}; + +const rawContentItem: ContentItemContracts.IContentItemModelContract = { + id: "0de95e3e-2568-4aec-b996-dc71b1cf2944", + type: { id: rawContentType.id, codename: rawContentType.codename }, + name: "test content item", + codename: "test_content_item", + last_modified: new Date(1356, 12, 25), + collection: { id: "db3ccd21-55db-4ca1-bf85-062538b772c8" }, + external_id: "test_item_external_id", +}; + +const rawLanguage: LanguageContracts.ILanguageModelContract = { + id: "2493d2af-27cd-4bb0-9f95-862ad58026ff", + name: "test language", + codename: "test_language", + is_active: true, + is_default: true, +}; + +const rawVariant: LanguageVariantContracts.IListLanguageVariantsOfItemResponseContract = + { + item: rawContentItem, + language: rawLanguage, + last_modified: new Date(1230, 12, 15).toISOString(), + workflow_step: { + id: "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", + codename: "draft", + }, + elements: [ + { + element: { + id: "50702d62-b381-45bd-816e-57bf1ccd2de6", + codename: "text", + }, + value: "greatText", + }, + ], + }; + +const rawDeliveryItem: Contracts.IContentItemContract = { + system: { + id: rawContentItem.id, + codename: rawContentItem.codename, + type: rawContentType.codename, + name: rawContentItem.name, + language: rawLanguage.codename, + collection: "default", + workflow_step: rawVariant.workflow_step.codename || "", + last_modified: rawVariant.last_modified, + sitemap_locations: [], + }, + elements: Object.fromEntries( + rawContentType.elements.flatMap((typeElement) => { + const variantElement = rawVariant.elements.find( + (el) => el.element.id === typeElement.id + ); + + return variantElement + ? [ + [ + typeElement.codename, + { + type: typeElement.type, + name: typeElement.name, + value: variantElement.value, + }, + ] as const, + ] + : []; + }) + ), +}; diff --git a/src/test/searches/findLanguage.test.ts b/src/test/searches/findLanguage.test.ts new file mode 100644 index 0000000..7f192c1 --- /dev/null +++ b/src/test/searches/findLanguage.test.ts @@ -0,0 +1,121 @@ +import { createAppTester } from 'zapier-platform-core'; +import * as nock from 'nock'; +import { addInputData, mockBundle } from '../utils/mockBundle'; +import { LanguageContracts, ManagementClient } from '@kontent-ai/management-sdk'; +import App from '../../index'; +import { KontentBundle } from '../../types/kontentBundle'; +import { findLanguage, InputData } from '../../searches/findLanguage'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("findLanguage", () => { + it("returns language returned from the CM API", async () => { + const bundle: KontentBundle< + Omit + > = addInputData(mockBundle, { searchPattern: "{0}={1}" }); + + const client = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }); + + const expectedByIdRequest = client + .viewLanguage() + .byLanguageId(rawLanguage.id); + + const expectedByExternalIdRequest = client + .viewLanguage() + .byExternalId(rawLanguage.external_id || ""); + + const expectedByCodenameRequest = client + .viewLanguage() + .byLanguageCodename(rawLanguage.codename); + + nock(expectedByIdRequest.getUrl()).get("").reply(200, rawLanguage); + nock(expectedByExternalIdRequest.getUrl()).get("").reply(200, rawLanguage); + nock(expectedByCodenameRequest.getUrl()).get("").reply(200, rawLanguage); + + const search = App.searches[findLanguage.key].operation.perform; + + const resultById = await appTester( + search, + addInputData(bundle, { searchField: "id", searchValue: rawLanguage.id }) + ); + + expect(resultById).toMatchInlineSnapshot(` + [ + { + "codename": "my_default_language", + "externalId": "great_external_id", + "fallbackLanguage": { + "id": undefined, + }, + "id": "4b21a4ba-4912-42cd-bcc1-d5c359c6e193", + "isActive": true, + "isDefault": true, + "name": "My default language", + }, + ] + `); + + const resultByExternalId = await appTester( + search, + addInputData(bundle, { + searchField: "externalId", + searchValue: rawLanguage.external_id || "", + }) + ); + + expect(resultByExternalId).toMatchInlineSnapshot(` + [ + { + "codename": "my_default_language", + "externalId": "great_external_id", + "fallbackLanguage": { + "id": undefined, + }, + "id": "4b21a4ba-4912-42cd-bcc1-d5c359c6e193", + "isActive": true, + "isDefault": true, + "name": "My default language", + }, + ] + `); + + const resultByCodename = await appTester( + search, + addInputData(bundle, { + searchField: "codename", + searchValue: rawLanguage.codename, + }) + ); + + expect(resultByCodename).toMatchInlineSnapshot(` + [ + { + "codename": "my_default_language", + "externalId": "great_external_id", + "fallbackLanguage": { + "id": undefined, + }, + "id": "4b21a4ba-4912-42cd-bcc1-d5c359c6e193", + "isActive": true, + "isDefault": true, + "name": "My default language", + }, + ] + `); + }); +}); + +const rawLanguage: LanguageContracts.ILanguageModelContract = { + id: "4b21a4ba-4912-42cd-bcc1-d5c359c6e193", + name: "My default language", + codename: "my_default_language", + is_default: true, + is_active: true, + external_id: "great_external_id", +}; diff --git a/src/test/searches/findWorkflowStep.test.ts b/src/test/searches/findWorkflowStep.test.ts new file mode 100644 index 0000000..2ae3f1c --- /dev/null +++ b/src/test/searches/findWorkflowStep.test.ts @@ -0,0 +1,103 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { addInputData, mockBundle } from "../utils/mockBundle"; +import { + ManagementClient, + WorkflowContracts, +} from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import findWorkflowStep, { InputData } from "../../searches/findWorkflowStep"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("findWorkflowStep", () => { + it("returns workflow step returned from the CM API and matched by part of the name", async () => { + const bundle: KontentBundle = addInputData(mockBundle, { + stepName: "review", + }); + + const expectedRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }).listWorkflowSteps(); + + nock(expectedRequest.getUrl()).get("").reply(200, rawWfSteps); + + const search = App.searches[findWorkflowStep.key].operation.perform; + + const result = await appTester(search, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "id": "64b4a51f-2177-407d-bb96-4e3003529b5a", + "name": "Preview 2", + "transitionsTo": [ + "1f645987-d37a-4c3b-a799-2f7e2117be00", + ], + }, + { + "id": "81d89c3e-cd70-42df-a9be-f95e561e84e8", + "name": "Preview 3", + "transitionsTo": [ + "422817dc-9813-41cf-8c0e-5c5b09876c81", + ], + }, + ] + `); + }); + + it("returns workflow step returned from the CM API and matched by the whole name", async () => { + const bundle: KontentBundle = addInputData(mockBundle, { + stepName: "Preview 3", + }); + + const expectedRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }).listWorkflowSteps(); + + nock(expectedRequest.getUrl()).get("").reply(200, rawWfSteps); + + const search = App.searches[findWorkflowStep.key].operation.perform; + + const result = await appTester(search, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "id": "81d89c3e-cd70-42df-a9be-f95e561e84e8", + "name": "Preview 3", + "transitionsTo": [ + "422817dc-9813-41cf-8c0e-5c5b09876c81", + ], + }, + ] + `); + }); +}); + +const rawWfSteps: ReadonlyArray = [ + { + id: "64b4a51f-2177-407d-bb96-4e3003529b5a", + name: "Preview 2", + codename: "preview_2", + transitions_to: ["1f645987-d37a-4c3b-a799-2f7e2117be00"], + }, + { + id: "81d89c3e-cd70-42df-a9be-f95e561e84e8", + name: "Preview 3", + codename: "preview_3", + transitions_to: ["422817dc-9813-41cf-8c0e-5c5b09876c81"], + }, + { + id: "4b0296f1-0153-4710-b57e-df0d509151cd", + name: "Publish", + codename: "publish", + transitions_to: ["1f645987-d37a-4c3b-a799-2f7e2117be00"], + }, +]; diff --git a/src/test/triggers/dropdowns/getContentItems.test.ts b/src/test/triggers/dropdowns/getContentItems.test.ts new file mode 100644 index 0000000..7b15726 --- /dev/null +++ b/src/test/triggers/dropdowns/getContentItems.test.ts @@ -0,0 +1,132 @@ +import { createAppTester } from 'zapier-platform-core'; +import App from '../../../index'; +import * as nock from 'nock'; +import { mockBundle } from '../../utils/mockBundle'; +import { Contracts, DeliveryClient } from '@kontent-ai/delivery-sdk'; +import { KontentBundle } from '../../../types/kontentBundle'; +import getContentItems from '../../../triggers/dropdowns/getContentItems'; +import { ManagementClient } from '@kontent-ai/management-sdk'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("getContentItems", () => { + it("returns all content items returned by the Delivery API", async () => { + const expectedPage = 3; + const bundle: KontentBundle<{}> = { + ...mockBundle, + meta: { ...mockBundle.meta, page: expectedPage }, + }; + + const expectedRequest = new DeliveryClient({ + projectId: bundle.authData.projectId, + previewApiKey: "previewAPIKey", + }) + .items() + .queryConfig({ usePreviewMode: true }) + .limitParameter(10) + .skipParameter(10 * expectedPage) + .depthParameter(0) + .orderByAscending("system.name"); + + const expectedRawContentItems: ReadonlyArray = + [ + { + system: { + id: "2734c1cb-3b52-46ef-954d-9c1c12a5da58", + name: "content item 1", + codename: "content_item_1", + last_modified: new Date(1212, 9, 26).toISOString(), + type: "21c631c7-41ce-45d8-9986-1002c1243e14", + collection: "default", + language: languages[0].codename, + workflow_step: "draft", + sitemap_locations: [], + }, + elements: {}, + }, + { + system: { + id: "878609b4-11dd-4ef8-a394-06a2f5b0c26d", + name: "content item 2", + codename: "content_item_2", + last_modified: new Date(1316, 5, 14).toISOString(), + type: "9d449599-5353-41d8-8167-7ed740d19543", + collection: "some_collection", + language: languages[1].codename, + workflow_step: null, + sitemap_locations: ["9e647f7c-51c1-4186-9901-2ff41470ffe8"], + }, + elements: {}, + }, + ]; + + const url = expectedRequest.getUrl(); + nock(url.slice(0, url.indexOf("?"))) + .get("") + .query(new URLSearchParams(url.slice(url.indexOf("?") + 1))) + .reply(200, { + items: expectedRawContentItems, + modular_content: {}, + pagination: {}, + }); + + const expectedLanguagesRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }).listLanguages(); + + nock(expectedLanguagesRequest.getUrl()) + .get("") + .reply(200, { languages, pagination: {} }); + + const trigger = App.triggers[getContentItems.key].operation.perform; + const result = await appTester(trigger, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "codename": "content_item_1", + "fullId": "2734c1cb-3b52-46ef-954d-9c1c12a5da58/c12c2ee8-14b2-4cba-a397-b1dd61916cb0", + "id": "2734c1cb-3b52-46ef-954d-9c1c12a5da58", + "language": "default_language", + "languageId": "c12c2ee8-14b2-4cba-a397-b1dd61916cb0", + "lastModified": "1212-10-25T23:02:16.000Z", + "name": "content item 1", + "type": "21c631c7-41ce-45d8-9986-1002c1243e14", + "workflowStep": "draft", + }, + { + "codename": "content_item_2", + "fullId": "878609b4-11dd-4ef8-a394-06a2f5b0c26d/ea41ad6e-a75c-4246-99d9-3293768c74f0", + "id": "878609b4-11dd-4ef8-a394-06a2f5b0c26d", + "language": "czech", + "languageId": "ea41ad6e-a75c-4246-99d9-3293768c74f0", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "content item 2", + "type": "9d449599-5353-41d8-8167-7ed740d19543", + "workflowStep": "", + }, + ] + `); + }); +}); + +const languages = [ + { + id: "c12c2ee8-14b2-4cba-a397-b1dd61916cb0", + name: "Default Language", + codename: "default_language", + is_default: true, + is_active: true, + }, + { + id: "ea41ad6e-a75c-4246-99d9-3293768c74f0", + name: "Czech", + codename: "czech", + is_default: false, + is_active: true, + }, +] as const; diff --git a/src/test/triggers/dropdowns/getContentTypes.test.ts b/src/test/triggers/dropdowns/getContentTypes.test.ts new file mode 100644 index 0000000..a0c0432 --- /dev/null +++ b/src/test/triggers/dropdowns/getContentTypes.test.ts @@ -0,0 +1,70 @@ +import { createAppTester } from 'zapier-platform-core'; +import App from '../../../index'; +import * as nock from 'nock'; +import { mockBundle } from '../../utils/mockBundle'; +import getContentTypes from '../../../triggers/dropdowns/getContentTypes'; +import { Contracts, DeliveryClient } from '@kontent-ai/delivery-sdk'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe('getContentTypes', () => { + it('returns all content types returned by the Delivery API', async () => { + const bundle = mockBundle; + + const expectedRequest = new DeliveryClient({ + projectId: bundle.authData.projectId, + previewApiKey: 'previewAPIKey', + }) + .types() + .queryConfig({ usePreviewMode: true }); + + const expectedRawContentTypes: ReadonlyArray = + [ + { + system: { + id: '8f05d8fb-0a19-4b4a-a72c-96ef46b8ab6f', + name: 'content type 1', + codename: 'content_type_1', + last_modified: new Date(1212, 9, 26), + }, + elements: {}, + }, + { + system: { + id: '49643885-f8a7-4ebb-b464-87724d3aa64d', + name: 'content type 2', + codename: 'content_type_2', + last_modified: new Date(1316, 5, 14), + }, + elements: {}, + }, + ]; + + nock(expectedRequest.getUrl()) + .get('') + .reply(200, { types: expectedRawContentTypes, pagination: {} }); + + const trigger = App.triggers[getContentTypes.key].operation.perform; + const result = await appTester(trigger, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "codename": "content_type_1", + "id": "8f05d8fb-0a19-4b4a-a72c-96ef46b8ab6f", + "lastModified": "1212-10-25T23:02:16.000Z", + "name": "content type 1", + }, + { + "codename": "content_type_2", + "id": "49643885-f8a7-4ebb-b464-87724d3aa64d", + "lastModified": "1316-06-13T23:02:16.000Z", + "name": "content type 2", + }, + ] + `); + }); +}); diff --git a/src/test/triggers/dropdowns/getLanguages.test.ts b/src/test/triggers/dropdowns/getLanguages.test.ts new file mode 100644 index 0000000..9c5858d --- /dev/null +++ b/src/test/triggers/dropdowns/getLanguages.test.ts @@ -0,0 +1,74 @@ +import { createAppTester } from 'zapier-platform-core'; +import App from '../../../index'; +import * as nock from 'nock'; +import { LanguageContracts, ManagementClient } from '@kontent-ai/management-sdk'; +import getLanguages from '../../../triggers/dropdowns/getLanguages'; +import { mockBundle } from '../../utils/mockBundle'; +import { createManagementApiPaginatedResponses } from '../../utils/createPaginatedReplies'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe('getLanguages', () => { + it('returns all active languages returned by the CM API', async () => { + const bundle = mockBundle; + + const expectedRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }).listLanguages(); + + const expectedRawLanguages: ReadonlyArray = [ + { + id: '6ada1bc6-564b-4a8c-a7d3-24dac81292b6', + name: 'default language', + codename: 'default_language', + external_id: 'default_language_external_id', + is_active: true, + is_default: true, + }, + { + id: '2349a75f-218b-4e3c-a4fc-ebc4124fa8e3', + name: 'czech', + codename: 'czech', + external_id: 'czech_external_language', + is_active: true, + is_default: false, + }, + { + id: '2e2faab6-17ef-4d9e-91ce-deff8d4c0415', + name: 'latin', + codename: 'latin', + is_active: false, + is_default: false, + }, + ]; + + createManagementApiPaginatedResponses({ + createInterceptor: () => nock(expectedRequest.getUrl()).persist().get(''), + responses: expectedRawLanguages, + pageSize: 1, + responsePropertyName: 'languages', + }); + + const trigger = App.triggers[getLanguages.key].operation.perform; + const result = await appTester(trigger, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "codename": "default_language", + "id": "6ada1bc6-564b-4a8c-a7d3-24dac81292b6", + "name": "default language", + }, + { + "codename": "czech", + "id": "2349a75f-218b-4e3c-a4fc-ebc4124fa8e3", + "name": "czech", + }, + ] + `); + }); +}); diff --git a/src/test/triggers/dropdowns/getWorkflowSteps.test.ts b/src/test/triggers/dropdowns/getWorkflowSteps.test.ts new file mode 100644 index 0000000..4b8e633 --- /dev/null +++ b/src/test/triggers/dropdowns/getWorkflowSteps.test.ts @@ -0,0 +1,69 @@ +import { createAppTester } from 'zapier-platform-core'; +import App from '../../../index'; +import * as nock from 'nock'; +import { mockBundle } from '../../utils/mockBundle'; +import { + ManagementClient, + WorkflowContracts, +} from '@kontent-ai/management-sdk'; +import getWorkflowSteps from '../../../triggers/dropdowns/getWorkflowSteps'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe('getWorkflowSteps', () => { + it('returns all WF steps returned by the CM API', async () => { + const bundle = mockBundle; + + const expectedRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }).listWorkflowSteps(); + + const expectedRawWFSteps: ReadonlyArray = + [ + { + id: 'a9c516b9-58e2-4ca8-bc03-b14ad2108daf', + name: 'Draft', + codename: 'draft', + transitions_to: ['2803ba8a-c578-4890-a372-51b319a91827'], + }, + { + id: '2803ba8a-c578-4890-a372-51b319a91827', + name: 'Publish', + codename: 'publish', + transitions_to: ['c19bd5e5-94bf-4a29-b502-6e51adef2ce8'], + }, + { + id: 'c19bd5e5-94bf-4a29-b502-6e51adef2ce8', + name: 'Archived', + codename: 'archived', + transitions_to: ['a9c516b9-58e2-4ca8-bc03-b14ad2108daf'], + }, + ]; + + nock(expectedRequest.getUrl()).get('').reply(200, expectedRawWFSteps); + + const trigger = App.triggers[getWorkflowSteps.key].operation.perform; + const result = await appTester(trigger, bundle); + + expect(result).toMatchInlineSnapshot(` + [ + { + "id": "a9c516b9-58e2-4ca8-bc03-b14ad2108daf", + "name": "Draft", + }, + { + "id": "2803ba8a-c578-4890-a372-51b319a91827", + "name": "Publish", + }, + { + "id": "c19bd5e5-94bf-4a29-b502-6e51adef2ce8", + "name": "Archived", + }, + ] + `); + }); +}); diff --git a/src/test/triggers/triggerItemExistenceChanged.test.ts b/src/test/triggers/triggerItemExistenceChanged.test.ts new file mode 100644 index 0000000..4b420f1 --- /dev/null +++ b/src/test/triggers/triggerItemExistenceChanged.test.ts @@ -0,0 +1,50 @@ +import { createAppTester } from 'zapier-platform-core'; +import * as nock from 'nock'; +import App from '../../index'; +import triggerItemExistenceChanged from '../../triggers/triggerItemExistenceChanged'; +import { prepareMocksForWebhookSubscribeTest } from '../utils/prepareMocksForWebhookSubscribeTest'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("triggerItemExistenceChanged", () => { + it("creates new webhook upon through CM API upon subscribe", async () => { + const expectedWatchedEvents = [ + "create" as const, + "archive" as const, + "restore" as const, + ]; + + const bundle = prepareMocksForWebhookSubscribeTest({ + triggers: { + management_api_content_changes: [ + { + type: "content_item_variant", + operations: expectedWatchedEvents, + } as const, + ], + }, + watchedEvents: expectedWatchedEvents, + }); + + const subscribe = App.triggers[triggerItemExistenceChanged.key].operation.performSubscribe; + + const result = await appTester(subscribe, bundle); + + expect(result).toMatchInlineSnapshot(` + Webhook { + "id": "404c8821-d3ba-4794-8cee-853f3952ca99", + "lastModified": 1993-01-31T23:00:00.000Z, + "name": "Simple test name for webhook (Zapier)", + "secret": "sample_secret", + "triggers": { + "deliveryApiContentChanges": [], + "workflowStepChanges": [], + }, + "url": "https://test-url.test", + } + `); + }); +}); diff --git a/src/test/triggers/triggerItemPublishChanged.test.ts b/src/test/triggers/triggerItemPublishChanged.test.ts new file mode 100644 index 0000000..025c1ae --- /dev/null +++ b/src/test/triggers/triggerItemPublishChanged.test.ts @@ -0,0 +1,54 @@ +import { createAppTester } from 'zapier-platform-core'; +import * as nock from 'nock'; +import App from '../../index'; +import triggerItemPublishChanged from '../../triggers/triggerItemPublishChanged'; +import { prepareMocksForWebhookSubscribeTest } from '../utils/prepareMocksForWebhookSubscribeTest'; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("triggerItemPublishChanged", () => { + it("creates new webhook upon through CM API upon subscribe", async () => { + const expectedWatchedEvents = ["publish" as const, "unpublish" as const]; + + const bundle = prepareMocksForWebhookSubscribeTest({ + triggers: { + delivery_api_content_changes: [ + { + type: "content_item_variant", + operations: expectedWatchedEvents, + } as const, + ], + }, + watchedEvents: expectedWatchedEvents, + }); + + const subscribe = App.triggers[triggerItemPublishChanged.key].operation.performSubscribe; + + const result = await appTester(subscribe, bundle); + + expect(result).toMatchInlineSnapshot(` + Webhook { + "id": "404c8821-d3ba-4794-8cee-853f3952ca99", + "lastModified": 1993-01-31T23:00:00.000Z, + "name": "Simple test name for webhook (Zapier)", + "secret": "sample_secret", + "triggers": { + "deliveryApiContentChanges": [ + WebhookDeliveryApiContentChanges { + "operations": [ + "publish", + "unpublish", + ], + "type": "content_item_variant", + }, + ], + "workflowStepChanges": [], + }, + "url": "https://test-url.test", + } + `); + }); +}); diff --git a/src/test/triggers/triggerTaxonomyChanged.test.ts b/src/test/triggers/triggerTaxonomyChanged.test.ts new file mode 100644 index 0000000..35cc601 --- /dev/null +++ b/src/test/triggers/triggerTaxonomyChanged.test.ts @@ -0,0 +1,60 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import App from "../../index"; +import { prepareMocksForWebhookSubscribeTest } from "../utils/prepareMocksForWebhookSubscribeTest"; +import triggerTaxonomyChanged from "../../triggers/triggerTaxonomyChanged"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("triggerTaxonomyChanged", () => { + it("creates new webhook upon through CM API upon subscribe", async () => { + const expectedWatchedEvents = [ + "archive" as const, + "restore" as const, + "upsert" as const, + ]; + + const bundle = prepareMocksForWebhookSubscribeTest({ + triggers: { + delivery_api_content_changes: [ + { + type: "taxonomy", + operations: expectedWatchedEvents, + }, + ], + }, + watchedEvents: expectedWatchedEvents, + }); + + const subscribe = + App.triggers[triggerTaxonomyChanged.key].operation.performSubscribe; + + const result = await appTester(subscribe, bundle); + + expect(result).toMatchInlineSnapshot(` + Webhook { + "id": "404c8821-d3ba-4794-8cee-853f3952ca99", + "lastModified": 1993-01-31T23:00:00.000Z, + "name": "Simple test name for webhook (Zapier)", + "secret": "sample_secret", + "triggers": { + "deliveryApiContentChanges": [ + WebhookDeliveryApiContentChanges { + "operations": [ + "archive", + "restore", + "upsert", + ], + "type": "taxonomy", + }, + ], + "workflowStepChanges": [], + }, + "url": "https://test-url.test", + } + `); + }); +}); diff --git a/src/test/triggers/triggerWorkflowStatusChanged.test.ts b/src/test/triggers/triggerWorkflowStatusChanged.test.ts new file mode 100644 index 0000000..5fc8c54 --- /dev/null +++ b/src/test/triggers/triggerWorkflowStatusChanged.test.ts @@ -0,0 +1,66 @@ +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import App from "../../index"; +import { prepareMocksForWebhookSubscribeTest } from "../utils/prepareMocksForWebhookSubscribeTest"; +import triggerWorkflowStatusChanged from "../../triggers/triggerWorkflowStatusChanged"; +import { addInputData } from "../utils/mockBundle"; + +const appTester = createAppTester(App); +nock.disableNetConnect(); + +afterEach(() => nock.cleanAll()); + +describe("triggerWorkflowStatusChanged", () => { + it("creates new webhook upon through CM API upon subscribe", async () => { + const stepIds = [ + "c2296c80-1ea1-444d-89a8-78118b41836a", + "30298e49-f273-432f-90b2-cc383cd6ecd9", + ]; + + const bundle = prepareMocksForWebhookSubscribeTest({ + triggers: { + workflow_step_changes: [ + { + type: "content_item_variant", + transitions_to: stepIds.map((id) => ({ id })), + }, + ], + }, + watchedEvents: [], + }); + + const subscribe = + App.triggers[triggerWorkflowStatusChanged.key].operation.performSubscribe; + + const result = await appTester( + subscribe, + addInputData(bundle, { workflowStepIds: stepIds }) + ); + + expect(result).toMatchInlineSnapshot(` + { + "id": "404c8821-d3ba-4794-8cee-853f3952ca99", + "lastModified": 1993-01-31T23:00:00.000Z, + "name": "Simple test name for webhook (Zapier)", + "secret": "sample_secret", + "triggers": { + "deliveryApiContentChanges": [], + "workflowStepChanges": [ + WebhookWorkflowStepChanges { + "transitionsTo": [ + WebhookTransitionsTo { + "id": "c2296c80-1ea1-444d-89a8-78118b41836a", + }, + WebhookTransitionsTo { + "id": "30298e49-f273-432f-90b2-cc383cd6ecd9", + }, + ], + "type": "content_item_variant", + }, + ], + }, + "url": "https://test-url.test", + } + `); + }); +}); diff --git a/src/test/utils/createPaginatedReplies.ts b/src/test/utils/createPaginatedReplies.ts new file mode 100644 index 0000000..0dbe168 --- /dev/null +++ b/src/test/utils/createPaginatedReplies.ts @@ -0,0 +1,27 @@ +import { Interceptor, Scope } from 'nock'; +import { range } from '../../utils/range'; +import { SharedContracts } from '@kontent-ai/management-sdk'; + +type Params = Readonly<{ + createInterceptor: () => Interceptor; + responsePropertyName: string; + responses: ReadonlyArray; + pageSize: number; +}>; + +export const createManagementApiPaginatedResponses = ({ pageSize, responses, responsePropertyName, createInterceptor, }: Params): ReadonlyArray => + splitToPages(responses, pageSize) + .map((page, i, allPages) => + createInterceptor() + .matchHeader('x-continuation', header => (header?.[0] === i.toString()) || (i === 0 && header === undefined)) // for some reason the header is an array of strings instead of (the declared) string and can also be undefined + .reply(200, { + [responsePropertyName]: page, + pagination: createManagementApiPagination(i === allPages.length - 1 ? undefined : i + 1), + })); + +const createManagementApiPagination = (nextPage: number | undefined): SharedContracts.IPaginationModelContract => nextPage === undefined + ? { continuation_token: null, next_page: null } + : { continuation_token: nextPage.toString(), next_page: 'next_page_is_not_implemented_in_this_mock' }; + +const splitToPages = (arr: ReadonlyArray, pageSize: number): ReadonlyArray> => + range(Math.ceil(arr.length / pageSize)).map(i => arr.slice(i, i + pageSize)); diff --git a/src/test/utils/mockBundle.ts b/src/test/utils/mockBundle.ts new file mode 100644 index 0000000..ba0ba99 --- /dev/null +++ b/src/test/utils/mockBundle.ts @@ -0,0 +1,33 @@ +import { KontentBundle } from '../../types/kontentBundle'; + +export const mockBundle: KontentBundle<{}> = { + authData: { + projectId: 'ae6f7ad5-766c-4b03-a118-56f65e45db7b', + cmApiKey: 'mockCMAPIKey', + previewApiKey: 'mockCMAPIKey', + }, + inputData: {}, + inputDataRaw: {}, + meta: { + isBulkRead: false, + page: 0, + isLoadingSample: false, + isFillingDynamicDropdown: false, + limit: 10, + isPopulatingDedupe: false, + isTestingAuth: false, + }, +}; + +type AnyReadonlyRecord = Readonly>; + +export const addInputData = ( + bundle: KontentBundle, + toAdd: AddedInputData, +): KontentBundle => ({ + ...bundle, + inputData: { + ...bundle.inputData, + ...toAdd, + }, +}); diff --git a/src/test/utils/prepareMocksForWebhookSubscribeTest.ts b/src/test/utils/prepareMocksForWebhookSubscribeTest.ts new file mode 100644 index 0000000..cf85047 --- /dev/null +++ b/src/test/utils/prepareMocksForWebhookSubscribeTest.ts @@ -0,0 +1,64 @@ +import { KontentBundle } from '../../types/kontentBundle'; +import { mockBundle } from './mockBundle'; +import { ManagementClient } from '@kontent-ai/management-sdk'; +import * as nock from 'nock'; +import { WebhookModels } from '@kontent-ai/management-sdk/lib/models'; + +type ExpectedInputDataBase = Readonly<{ + languageId: string; + name: string; + contentTypeId: string; + watchedEvents: ReadonlyArray; +}> + +type Params = Readonly<{ + watchedEvents: InputData['watchedEvents']; + triggers: WebhookModels.IAddWebhookData['triggers']; +}>; + +export const prepareMocksForWebhookSubscribeTest = (params: Params) => { + const bundle: KontentBundle = { + ...mockBundle, + inputData: { + ...mockBundle.inputData, + languageId: "17bb2114-476a-43be-87cb-95fea70dce6e", + name: "Simple test name for webhook", + contentTypeId: "cd54f362-c532-4df8-be8c-969fc1db97ba", + watchedEvents: params.watchedEvents, + } as InputData, + targetUrl: "https://test-url.test", + }; + + const expectedName = `${bundle.inputData.name} (Zapier)`; + + const expectedRequest = new ManagementClient({ + projectId: bundle.authData.projectId, + apiKey: bundle.authData.cmApiKey, + }) + .addWebhook() + .withData({ + name: expectedName, + url: bundle.targetUrl || "", + secret: "sample_secret", + triggers: params.triggers, + }); + nock(expectedRequest.getUrl()) + .post( + "", + (body) => body.name === expectedName && body.url === bundle.targetUrl + ) + .reply(201, { + id: "404c8821-d3ba-4794-8cee-853f3952ca99", + name: expectedRequest.data.name, + url: expectedRequest.data.url, + secret: expectedRequest.data.secret, + triggers: { + delivery_api_content_changes: [], + workflow_step_changes: [], + ...params.triggers, + }, + last_modified: new Date(1993, 1, 1).toISOString(), + }); + + return bundle; +} diff --git a/src/utils/range.ts b/src/utils/range.ts new file mode 100644 index 0000000..f8dc5cc --- /dev/null +++ b/src/utils/range.ts @@ -0,0 +1,3 @@ +export const range = (countOrStart: number, end?: number, step: number = 1) => + [...new Array((end !== undefined ? Math.floor((end - countOrStart) / step) : countOrStart))] + .map((_, i) => i * step); From 6c83301bf91086ec39a546dfb935a4d531574b25 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Mon, 5 Dec 2022 18:13:04 +0100 Subject: [PATCH 07/16] Export InputData types from public actions - Make public actions' keys string literals - Fix date formatting in actions' output --- src/actions/changeContentItemWorkflow.ts | 4 ++-- src/actions/createContentItem.ts | 4 ++-- src/actions/deleteLanguageVariant.ts | 4 ++-- src/actions/updateLanguageVariant.ts | 4 ++-- src/fields/elements/getItemElementFields.ts | 2 +- src/searches/findAsset.ts | 7 +++---- src/searches/findContentItem.ts | 4 ++-- src/searches/findLanguage.ts | 4 ++-- src/searches/findWorkflowStep.ts | 4 ++-- src/triggers/dropdowns/getContentItems.ts | 2 +- src/triggers/dropdowns/getContentTypes.ts | 2 +- src/triggers/dropdowns/getLanguages.ts | 7 +++++-- src/triggers/dropdowns/getLinkedItems.ts | 2 +- src/triggers/dropdowns/getWorkflowSteps.ts | 2 +- src/triggers/triggerItemExistenceChanged.ts | 4 ++-- src/triggers/triggerItemPublishChanged.ts | 4 ++-- src/triggers/triggerTaxonomyChanged.ts | 2 +- src/triggers/triggerWorkflowStatusChanged.ts | 2 +- src/utils/items/get/getItemResult.ts | 2 +- 19 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/actions/changeContentItemWorkflow.ts b/src/actions/changeContentItemWorkflow.ts index fb43e84..1bf5b54 100644 --- a/src/actions/changeContentItemWorkflow.ts +++ b/src/actions/changeContentItemWorkflow.ts @@ -190,9 +190,9 @@ export const changeContentItemWorkflow = { message: 'Content item workflow step has changed', }, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ fullItemId?: string; workflowStepIds: string; publishDate?: string; diff --git a/src/actions/createContentItem.ts b/src/actions/createContentItem.ts index 73be1e1..940870b 100644 --- a/src/actions/createContentItem.ts +++ b/src/actions/createContentItem.ts @@ -65,9 +65,9 @@ export const createContentItem = { sample: contentItemSample, outputFields: contentItemOutputFields, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ languageId: string; contentTypeId: string; name: string; diff --git a/src/actions/deleteLanguageVariant.ts b/src/actions/deleteLanguageVariant.ts index 22e97ac..d29fe52 100644 --- a/src/actions/deleteLanguageVariant.ts +++ b/src/actions/deleteLanguageVariant.ts @@ -50,8 +50,8 @@ export const deleteLanguageVariant = { sample: contentItemSample, outputFields: contentItemOutputFields, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ languageId: string; }> & ItemSearchFieldsOutputType; diff --git a/src/actions/updateLanguageVariant.ts b/src/actions/updateLanguageVariant.ts index 728d2e2..27efada 100644 --- a/src/actions/updateLanguageVariant.ts +++ b/src/actions/updateLanguageVariant.ts @@ -93,9 +93,9 @@ export const updateLanguageVariant = { sample: contentItemSample, outputFields: contentItemOutputFields, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ languageId: string; contentTypeId: string; elements_header?: string; diff --git a/src/fields/elements/getItemElementFields.ts b/src/fields/elements/getItemElementFields.ts index 0ed8d3d..f98dcfd 100644 --- a/src/fields/elements/getItemElementFields.ts +++ b/src/fields/elements/getItemElementFields.ts @@ -10,7 +10,7 @@ export const getItemElementFields = async (z: ZObject, bundle: KontentBundle<{}> .then(elements => elements.map(getSimpleElementField)); export type ElementFields = Readonly<{ - [key: `elements_${string}`]: string | string[] | number | undefined; + [key: `elements__${string}`]: string | string[] | number | undefined; }>; function getSimpleElementField(element: ContentTypeElements.ContentTypeElementModel) { diff --git a/src/searches/findAsset.ts b/src/searches/findAsset.ts index f90f160..3a4ef31 100644 --- a/src/searches/findAsset.ts +++ b/src/searches/findAsset.ts @@ -147,10 +147,9 @@ export const findAsset = { url: 'https://assets-us-01.kc-usercontent.com/8d20758c-d74c-4f59-ae04-ee928c0816b7/adf26cd2-1acb-403f-9d1e-6d04e46c39f1/file_name.png', }, }, -}; +} as const; -type InputData = Readonly<{ - searchInfo: string; +export type InputData = Readonly<{ searchField: string; searchPattern: string; searchValue: string; @@ -162,7 +161,7 @@ const prepareAssetForOutput = (asset: AssetModels.Asset): Output[number] => ({ title: asset.title || '', imageHeight: asset.imageHeight ?? undefined, imageWidth: asset.imageWidth ?? undefined, - lastModified: asset.lastModified.toString(), + lastModified: asset.lastModified.toISOString(), folder: { id: asset.folder?.id ?? undefined }, url: asset.url, type: asset.type, diff --git a/src/searches/findContentItem.ts b/src/searches/findContentItem.ts index 648f88b..a4804d9 100644 --- a/src/searches/findContentItem.ts +++ b/src/searches/findContentItem.ts @@ -31,9 +31,9 @@ export default { sample: contentItemSample, outputFields: contentItemOutputFields, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ languageId: string; contentTypeId: string; }> & ItemSearchFieldsOutputType; diff --git a/src/searches/findLanguage.ts b/src/searches/findLanguage.ts index ef5297e..675c9c9 100644 --- a/src/searches/findLanguage.ts +++ b/src/searches/findLanguage.ts @@ -95,9 +95,9 @@ export const findLanguage = { }, }, }, -}; +} as const; -type InputData = LanguageSearchFieldsOutput; +export type InputData = LanguageSearchFieldsOutput; const prepareLanguageForOutput = (language: LanguageModels.LanguageModel): Output[number] => ({ id: language.id, diff --git a/src/searches/findWorkflowStep.ts b/src/searches/findWorkflowStep.ts index 13d7d6e..2abc6e4 100644 --- a/src/searches/findWorkflowStep.ts +++ b/src/searches/findWorkflowStep.ts @@ -78,9 +78,9 @@ export default { }, outputFields, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ stepName: string; }>; diff --git a/src/triggers/dropdowns/getContentItems.ts b/src/triggers/dropdowns/getContentItems.ts index 064fee8..02fc588 100644 --- a/src/triggers/dropdowns/getContentItems.ts +++ b/src/triggers/dropdowns/getContentItems.ts @@ -40,4 +40,4 @@ export default { canPaginate: true, outputFields: deliveryItemOutputFields, }, -}; +} as const; diff --git a/src/triggers/dropdowns/getContentTypes.ts b/src/triggers/dropdowns/getContentTypes.ts index 8020eca..61f5500 100644 --- a/src/triggers/dropdowns/getContentTypes.ts +++ b/src/triggers/dropdowns/getContentTypes.ts @@ -61,4 +61,4 @@ export default { }, outputFields, }, -}; +} as const; diff --git a/src/triggers/dropdowns/getLanguages.ts b/src/triggers/dropdowns/getLanguages.ts index 4f886de..c95aaef 100644 --- a/src/triggers/dropdowns/getLanguages.ts +++ b/src/triggers/dropdowns/getLanguages.ts @@ -6,7 +6,10 @@ import { OutputFromOutputFields } from '../../fields/output/outputFromOutputFiel const execute = (z: ZObject, bundle: KontentBundle<{}>): Promise => getLanguages(z, bundle) - .then(res => res.map(l => ({ id: l.id, name: l.name, codename: l.codename }))); + .then(res => res + .filter(l => l.isActive) + .map(l => ({ id: l.id, name: l.name, codename: l.codename })), + ); const outputFields = [ { @@ -46,4 +49,4 @@ export default { }, outputFields, }, -}; +} as const; diff --git a/src/triggers/dropdowns/getLinkedItems.ts b/src/triggers/dropdowns/getLinkedItems.ts index 14d55c3..8c9276f 100644 --- a/src/triggers/dropdowns/getLinkedItems.ts +++ b/src/triggers/dropdowns/getLinkedItems.ts @@ -40,4 +40,4 @@ export default { canPaginate: true, outputFields: deliveryItemOutputFields, }, -}; +} as const; diff --git a/src/triggers/dropdowns/getWorkflowSteps.ts b/src/triggers/dropdowns/getWorkflowSteps.ts index 92f6081..c866630 100644 --- a/src/triggers/dropdowns/getWorkflowSteps.ts +++ b/src/triggers/dropdowns/getWorkflowSteps.ts @@ -40,4 +40,4 @@ export default { }, outputFields, }, -}; +} as const; diff --git a/src/triggers/triggerItemExistenceChanged.ts b/src/triggers/triggerItemExistenceChanged.ts index d517e95..a7c2557 100644 --- a/src/triggers/triggerItemExistenceChanged.ts +++ b/src/triggers/triggerItemExistenceChanged.ts @@ -124,9 +124,9 @@ export default { }, }, } -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ name?: string; watchedEvents?: ReadonlyArray; languageId?: string; diff --git a/src/triggers/triggerItemPublishChanged.ts b/src/triggers/triggerItemPublishChanged.ts index db869f3..e14aff7 100644 --- a/src/triggers/triggerItemPublishChanged.ts +++ b/src/triggers/triggerItemPublishChanged.ts @@ -128,9 +128,9 @@ export default { }, }, }, -}; +} as const; -type InputData = Readonly<{ +export type InputData = Readonly<{ name?: string; watchedEvents?: ReadonlyArray; languageId?: string; diff --git a/src/triggers/triggerTaxonomyChanged.ts b/src/triggers/triggerTaxonomyChanged.ts index 40e841d..526cb43 100644 --- a/src/triggers/triggerTaxonomyChanged.ts +++ b/src/triggers/triggerTaxonomyChanged.ts @@ -147,7 +147,7 @@ export default { } }, }, -}; +} as const; type InputData = Readonly<{ name?: string; diff --git a/src/triggers/triggerWorkflowStatusChanged.ts b/src/triggers/triggerWorkflowStatusChanged.ts index 2350d21..41c5764 100644 --- a/src/triggers/triggerWorkflowStatusChanged.ts +++ b/src/triggers/triggerWorkflowStatusChanged.ts @@ -125,7 +125,7 @@ export default { }, }, }, -}; +} as const; type InputData = Readonly<{ name?: string; diff --git a/src/utils/items/get/getItemResult.ts b/src/utils/items/get/getItemResult.ts index 25e0813..06775e3 100644 --- a/src/utils/items/get/getItemResult.ts +++ b/src/utils/items/get/getItemResult.ts @@ -115,7 +115,7 @@ export async function getItemResult(z: ZObject, bundle: KontentBundle<{}>, item: type: contentType.codename, language: language.codename, externalId: item.externalId || '', - lastModified: variant.lastModified.toString(), + lastModified: variant.lastModified.toISOString(), fullId: fullId, workflowStepId: variant.workflowStep.id || '', contentTypeId: item.type.id, From 8a5af12c8b2cad405d7f5eebce716469bfdb1081 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Tue, 6 Dec 2022 11:47:57 +0100 Subject: [PATCH 08/16] Adjust jest config and CI builds - use node 16.x on CI as that is the latest version supported by Zapier - fix jest test finding --- .github/workflows/deploy.yml | 7 ++++--- jest.config.ts | 1 + package.json | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d461051..d845a57 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,14 +18,15 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: npm ci + - run: npm run build - run: npm run test diff --git a/jest.config.ts b/jest.config.ts index b3cfb29..bf77813 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -3,6 +3,7 @@ import type { Config } from 'jest'; const config: Config = { preset: 'ts-jest', testEnvironment: 'node', + testMatch: ['**/src/test/**/*.test.ts'] }; export default config; diff --git a/package.json b/package.json index 94c9dc1..4c46125 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "zapier-cli", "version": "0.2.0", "scripts": { - "test": "npm run build && jest --testTimeout 10000 --rootDir ./lib/test", + "test": "jest", "build": "tsc", "watch": "tsc --watch", "buildAndPush": "npm run build && zapier push" From 06f80d585839b77cf7b9c4eaa991b48025360f0d Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Tue, 6 Dec 2022 11:56:05 +0100 Subject: [PATCH 09/16] Fix build by explicit include in tsconfig --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index 8e6ba0e..440b914 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,5 @@ { + "include": ["src/**/*"], "compilerOptions": { "target": "es2019", "module": "commonjs", From a747c62998548561f0a60d1a4259ccf496310698 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Tue, 6 Dec 2022 15:43:16 +0100 Subject: [PATCH 10/16] Create dates in tests in the UTC timezone --- .../actions/changeContentItemWorkflow.test.ts | 3 +- src/test/actions/createContentItem.test.ts | 23 ++++++----- .../actions/deleteLanguageVariant.test.ts | 13 +++--- .../actions/updateLanguageVariant.test.ts | 9 ++-- src/test/searches/findAsset.test.ts | 7 ++-- src/test/searches/findContentItem.test.ts | 15 +++---- .../dropdowns/getContentItems.test.ts | 25 +++++------ .../dropdowns/getContentTypes.test.ts | 41 ++++++++++--------- .../triggerItemExistenceChanged.test.ts | 15 +++---- .../triggerItemPublishChanged.test.ts | 15 +++---- .../triggers/triggerTaxonomyChanged.test.ts | 2 +- .../triggerWorkflowStatusChanged.test.ts | 2 +- src/test/utils/date.ts | 2 + .../prepareMocksForWebhookSubscribeTest.ts | 3 +- 14 files changed, 94 insertions(+), 81 deletions(-) create mode 100644 src/test/utils/date.ts diff --git a/src/test/actions/changeContentItemWorkflow.test.ts b/src/test/actions/changeContentItemWorkflow.test.ts index d231a35..76382b3 100644 --- a/src/test/actions/changeContentItemWorkflow.test.ts +++ b/src/test/actions/changeContentItemWorkflow.test.ts @@ -5,6 +5,7 @@ import { LanguageVariantContracts, ManagementClient, WorkflowContracts } from '@ import App from '../../index'; import { KontentBundle } from '../../types/kontentBundle'; import { changeContentItemWorkflow, InputData } from '../../actions/changeContentItemWorkflow'; +import { createUTCDate } from '../utils/date'; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -76,6 +77,6 @@ const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { item: { id: "db2dcddc-62c5-41a7-81f5-9f958f69b0bd" }, language: { id: "984efe5c-6898-4d51-8afa-a66b9de51cc0" }, elements: [], - last_modified: new Date(1316, 5, 14).toISOString(), + last_modified: createUTCDate(1316, 5, 14).toISOString(), workflow_step: { id: rawWfSteps[0]?.id }, }; diff --git a/src/test/actions/createContentItem.test.ts b/src/test/actions/createContentItem.test.ts index 71f9697..df5f51d 100644 --- a/src/test/actions/createContentItem.test.ts +++ b/src/test/actions/createContentItem.test.ts @@ -1,16 +1,17 @@ -import { createAppTester } from 'zapier-platform-core'; -import * as nock from 'nock'; -import { addInputData, mockBundle } from '../utils/mockBundle'; +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import { addInputData, mockBundle } from "../utils/mockBundle"; import { ContentItemContracts, ContentTypeContracts, LanguageContracts, LanguageVariantContracts, ManagementClient, -} from '@kontent-ai/management-sdk'; -import App from '../../index'; -import { KontentBundle } from '../../types/kontentBundle'; -import { createContentItem, InputData } from '../../actions/createContentItem'; +} from "@kontent-ai/management-sdk"; +import App from "../../index"; +import { KontentBundle } from "../../types/kontentBundle"; +import { createContentItem, InputData } from "../../actions/createContentItem"; +import { createUTCDate } from "../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -61,7 +62,7 @@ describe("createContentItem", () => { codename: "generated_codename", type: { id: rawContentType.id, codename: rawContentType.codename }, external_id: itemExternalId, - last_modified: new Date(1993, 1, 1), + last_modified: createUTCDate(1993, 1, 1), collection: { id: "00000000-0000-0000-0000-000000000000" }, } as ContentItemContracts.IAddContentItemResponseContract); @@ -76,7 +77,7 @@ describe("createContentItem", () => { item: { id: itemId }, language: { id: rawLanguage.id }, elements: [], - last_modified: new Date(1993, 1, 1).toISOString(), + last_modified: createUTCDate(1993, 1, 1).toISOString(), workflow_step: { id: "3ecd7341-ad09-44b1-b457-4257ba3fa73b" }, } as LanguageVariantContracts.IUpsertLanguageVariantResponseContract); @@ -96,7 +97,7 @@ describe("createContentItem", () => { "id": "e819c466-4b0c-4fd9-9441-b41dd85a1cdc", "language": "test_language", "languageId": "ed733acb-e1e2-4c82-bfe4-ae82f73908f9", - "lastModified": "1993-01-31T23:00:00.000Z", + "lastModified": "1993-01-01T00:00:00.000Z", "name": "Created item name", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "test_content_type", @@ -112,7 +113,7 @@ const rawContentType: ContentTypeContracts.IContentTypeContract = { name: "Test content type", codename: "test_content_type", elements: [], - last_modified: new Date(1348, 4, 7).toISOString(), + last_modified: createUTCDate(1348, 4, 7).toISOString(), }; const rawLanguage: LanguageContracts.ILanguageModelContract = { diff --git a/src/test/actions/deleteLanguageVariant.test.ts b/src/test/actions/deleteLanguageVariant.test.ts index 509c4df..97dc100 100644 --- a/src/test/actions/deleteLanguageVariant.test.ts +++ b/src/test/actions/deleteLanguageVariant.test.ts @@ -14,6 +14,7 @@ import { deleteLanguageVariant, InputData, } from "../../actions/deleteLanguageVariant"; +import { createUTCDate } from "../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -87,7 +88,7 @@ describe("deleteLanguageVariant", () => { "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", "language": "sample_language", "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "Some Item Name", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "sample_content_type", @@ -121,7 +122,7 @@ describe("deleteLanguageVariant", () => { "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", "language": "sample_language", "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "Some Item Name", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "sample_content_type", @@ -155,7 +156,7 @@ describe("deleteLanguageVariant", () => { "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", "language": "sample_language", "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "Some Item Name", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "sample_content_type", @@ -178,7 +179,7 @@ const rawContentType: ContentTypeContracts.IContentTypeContract = { id: "22d83f4d-dec4-458b-8ef8-fc4a05761524", name: "Sample content type", codename: "sample_content_type", - last_modified: new Date(1212, 9, 26).toISOString(), + last_modified: createUTCDate(1212, 9, 26).toISOString(), elements: [], }; @@ -189,13 +190,13 @@ const rawItem: ContentItemContracts.IContentItemModelContract = { collection: { id: "1da391cf-d664-4492-a8f4-74420a08a069" }, type: { id: rawContentType.id }, external_id: "item_external_id", - last_modified: new Date(1355, 4, 5), + last_modified: createUTCDate(1355, 4, 5), }; const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { item: { id: rawItem.id }, language: { id: rawLanguage.id }, elements: [], - last_modified: new Date(1316, 5, 14).toISOString(), + last_modified: createUTCDate(1316, 5, 14).toISOString(), workflow_step: { id: "6b7590d5-75e5-4860-8cc0-02c5bffce2dc" }, }; diff --git a/src/test/actions/updateLanguageVariant.test.ts b/src/test/actions/updateLanguageVariant.test.ts index 84df310..91d7bfc 100644 --- a/src/test/actions/updateLanguageVariant.test.ts +++ b/src/test/actions/updateLanguageVariant.test.ts @@ -16,6 +16,7 @@ import { InputData, updateLanguageVariant, } from "../../actions/updateLanguageVariant"; +import { createUTCDate } from "../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -113,7 +114,7 @@ describe("updateLanguageVariant", () => { "id": "9d309f21-5326-42e3-ab12-0c4a5e9db64d", "language": "sample_language", "languageId": "e3a742b4-a946-4baa-bf93-39ad1d13834b", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "Some Item Name", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "sample_content_type", @@ -145,7 +146,7 @@ const rawContentType: ContentTypeContracts.IContentTypeContract = { id: "22d83f4d-dec4-458b-8ef8-fc4a05761524", name: "Sample content type", codename: "sample_content_type", - last_modified: new Date(1212, 9, 26).toISOString(), + last_modified: createUTCDate(1212, 9, 26).toISOString(), elements: [ { id: "253ccb11-34f6-4879-932f-648eca309df1", @@ -163,7 +164,7 @@ const rawItem: ContentItemContracts.IContentItemModelContract = { collection: { id: "1da391cf-d664-4492-a8f4-74420a08a069" }, type: { id: rawContentType.id }, external_id: "item_external_id", - last_modified: new Date(1355, 4, 5), + last_modified: createUTCDate(1355, 4, 5), }; const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { @@ -175,6 +176,6 @@ const rawVariant: LanguageVariantContracts.ILanguageVariantModelContract = { value: "some initial value", }, ], - last_modified: new Date(1316, 5, 14).toISOString(), + last_modified: createUTCDate(1316, 5, 14).toISOString(), workflow_step: { id: rawWfSteps[0]?.id || "" }, }; diff --git a/src/test/searches/findAsset.test.ts b/src/test/searches/findAsset.test.ts index 6c0457b..4bc6a7d 100644 --- a/src/test/searches/findAsset.test.ts +++ b/src/test/searches/findAsset.test.ts @@ -5,6 +5,7 @@ import { AssetContracts, ManagementClient } from "@kontent-ai/management-sdk"; import App from "../../index"; import { KontentBundle } from "../../types/kontentBundle"; import { findAsset, InputData } from "../../searches/findAsset"; +import { createUTCDate } from "../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -59,7 +60,7 @@ describe("findAsset", () => { descriptions: [], image_height: 1080, image_width: 1920, - last_modified: new Date(1278, 8, 26).toISOString(), + last_modified: createUTCDate(1278, 8, 26).toISOString(), file_reference: { type: "internal", id: "bc28f312-dab4-4ee3-9f52-e53a1017d324", @@ -95,7 +96,7 @@ describe("findAsset", () => { "id": "d0442642-6e09-44a0-a5d3-1e842030cee6", "imageHeight": 1080, "imageWidth": 1920, - "lastModified": "1278-09-25T23:02:16.000Z", + "lastModified": "1278-08-26T00:00:00.000Z", "size": 300000, "title": "test asset", "type": "image/png", @@ -120,7 +121,7 @@ describe("findAsset", () => { "id": "d0442642-6e09-44a0-a5d3-1e842030cee6", "imageHeight": 1080, "imageWidth": 1920, - "lastModified": "1278-09-25T23:02:16.000Z", + "lastModified": "1278-08-26T00:00:00.000Z", "size": 300000, "title": "test asset found by external id", "type": "image/png", diff --git a/src/test/searches/findContentItem.test.ts b/src/test/searches/findContentItem.test.ts index 313b766..e9d6bdd 100644 --- a/src/test/searches/findContentItem.test.ts +++ b/src/test/searches/findContentItem.test.ts @@ -12,6 +12,7 @@ import { KontentBundle } from "../../types/kontentBundle"; import { LanguageVariantContracts } from "@kontent-ai/management-sdk/lib/contracts"; import { Contracts, DeliveryClient } from "@kontent-ai/delivery-sdk"; import findContentItem, { InputData } from "../../searches/findContentItem"; +import { createUTCDate } from "../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -141,7 +142,7 @@ describe("findContentItem", () => { "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", "language": "test_language", "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", - "lastModified": "1231-01-14T23:02:16.000Z", + "lastModified": "1230-12-15T00:00:00.000Z", "name": "test content item", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "test_content_type", @@ -174,7 +175,7 @@ describe("findContentItem", () => { "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", "language": "test_language", "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", - "lastModified": "1231-01-14T23:02:16.000Z", + "lastModified": "1230-12-15T00:00:00.000Z", "name": "test content item", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "test_content_type", @@ -207,7 +208,7 @@ describe("findContentItem", () => { "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", "language": "test_language", "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", - "lastModified": "1231-01-14T23:02:16.000Z", + "lastModified": "1230-12-15T00:00:00.000Z", "name": "test content item", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "test_content_type", @@ -240,7 +241,7 @@ describe("findContentItem", () => { "id": "0de95e3e-2568-4aec-b996-dc71b1cf2944", "language": "test_language", "languageId": "2493d2af-27cd-4bb0-9f95-862ad58026ff", - "lastModified": "1231-01-14T23:02:16.000Z", + "lastModified": "1230-12-15T00:00:00.000Z", "name": "test content item", "projectId": "ae6f7ad5-766c-4b03-a118-56f65e45db7b", "type": "test_content_type", @@ -256,7 +257,7 @@ const rawContentType: ContentTypeContracts.IContentTypeContract = { id: "aea2d2cf-f38a-4260-bb95-ac0bcd7587de", name: "test content type", codename: "test_content_type", - last_modified: new Date(1348, 4, 7).toISOString(), + last_modified: createUTCDate(1348, 4, 7).toISOString(), elements: [ { id: "50702d62-b381-45bd-816e-57bf1ccd2de6", @@ -272,7 +273,7 @@ const rawContentItem: ContentItemContracts.IContentItemModelContract = { type: { id: rawContentType.id, codename: rawContentType.codename }, name: "test content item", codename: "test_content_item", - last_modified: new Date(1356, 12, 25), + last_modified: createUTCDate(1356, 12, 25), collection: { id: "db3ccd21-55db-4ca1-bf85-062538b772c8" }, external_id: "test_item_external_id", }; @@ -289,7 +290,7 @@ const rawVariant: LanguageVariantContracts.IListLanguageVariantsOfItemResponseCo { item: rawContentItem, language: rawLanguage, - last_modified: new Date(1230, 12, 15).toISOString(), + last_modified: createUTCDate(1230, 12, 15).toISOString(), workflow_step: { id: "89205fc8-bf8e-4bc3-9eb2-725c9623ef40", codename: "draft", diff --git a/src/test/triggers/dropdowns/getContentItems.test.ts b/src/test/triggers/dropdowns/getContentItems.test.ts index 7b15726..93fe2f9 100644 --- a/src/test/triggers/dropdowns/getContentItems.test.ts +++ b/src/test/triggers/dropdowns/getContentItems.test.ts @@ -1,11 +1,12 @@ -import { createAppTester } from 'zapier-platform-core'; -import App from '../../../index'; -import * as nock from 'nock'; -import { mockBundle } from '../../utils/mockBundle'; -import { Contracts, DeliveryClient } from '@kontent-ai/delivery-sdk'; -import { KontentBundle } from '../../../types/kontentBundle'; -import getContentItems from '../../../triggers/dropdowns/getContentItems'; -import { ManagementClient } from '@kontent-ai/management-sdk'; +import { createAppTester } from "zapier-platform-core"; +import App from "../../../index"; +import * as nock from "nock"; +import { mockBundle } from "../../utils/mockBundle"; +import { Contracts, DeliveryClient } from "@kontent-ai/delivery-sdk"; +import { KontentBundle } from "../../../types/kontentBundle"; +import getContentItems from "../../../triggers/dropdowns/getContentItems"; +import { ManagementClient } from "@kontent-ai/management-sdk"; +import { createUTCDate } from "../../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -38,7 +39,7 @@ describe("getContentItems", () => { id: "2734c1cb-3b52-46ef-954d-9c1c12a5da58", name: "content item 1", codename: "content_item_1", - last_modified: new Date(1212, 9, 26).toISOString(), + last_modified: createUTCDate(1212, 9, 26).toISOString(), type: "21c631c7-41ce-45d8-9986-1002c1243e14", collection: "default", language: languages[0].codename, @@ -52,7 +53,7 @@ describe("getContentItems", () => { id: "878609b4-11dd-4ef8-a394-06a2f5b0c26d", name: "content item 2", codename: "content_item_2", - last_modified: new Date(1316, 5, 14).toISOString(), + last_modified: createUTCDate(1316, 5, 14).toISOString(), type: "9d449599-5353-41d8-8167-7ed740d19543", collection: "some_collection", language: languages[1].codename, @@ -93,7 +94,7 @@ describe("getContentItems", () => { "id": "2734c1cb-3b52-46ef-954d-9c1c12a5da58", "language": "default_language", "languageId": "c12c2ee8-14b2-4cba-a397-b1dd61916cb0", - "lastModified": "1212-10-25T23:02:16.000Z", + "lastModified": "1212-09-26T00:00:00.000Z", "name": "content item 1", "type": "21c631c7-41ce-45d8-9986-1002c1243e14", "workflowStep": "draft", @@ -104,7 +105,7 @@ describe("getContentItems", () => { "id": "878609b4-11dd-4ef8-a394-06a2f5b0c26d", "language": "czech", "languageId": "ea41ad6e-a75c-4246-99d9-3293768c74f0", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "content item 2", "type": "9d449599-5353-41d8-8167-7ed740d19543", "workflowStep": "", diff --git a/src/test/triggers/dropdowns/getContentTypes.test.ts b/src/test/triggers/dropdowns/getContentTypes.test.ts index a0c0432..b2c8522 100644 --- a/src/test/triggers/dropdowns/getContentTypes.test.ts +++ b/src/test/triggers/dropdowns/getContentTypes.test.ts @@ -1,22 +1,23 @@ -import { createAppTester } from 'zapier-platform-core'; -import App from '../../../index'; -import * as nock from 'nock'; -import { mockBundle } from '../../utils/mockBundle'; -import getContentTypes from '../../../triggers/dropdowns/getContentTypes'; -import { Contracts, DeliveryClient } from '@kontent-ai/delivery-sdk'; +import { createAppTester } from "zapier-platform-core"; +import App from "../../../index"; +import * as nock from "nock"; +import { mockBundle } from "../../utils/mockBundle"; +import getContentTypes from "../../../triggers/dropdowns/getContentTypes"; +import { Contracts, DeliveryClient } from "@kontent-ai/delivery-sdk"; +import { createUTCDate } from "../../utils/date"; const appTester = createAppTester(App); nock.disableNetConnect(); afterEach(() => nock.cleanAll()); -describe('getContentTypes', () => { - it('returns all content types returned by the Delivery API', async () => { +describe("getContentTypes", () => { + it("returns all content types returned by the Delivery API", async () => { const bundle = mockBundle; const expectedRequest = new DeliveryClient({ projectId: bundle.authData.projectId, - previewApiKey: 'previewAPIKey', + previewApiKey: "previewAPIKey", }) .types() .queryConfig({ usePreviewMode: true }); @@ -25,26 +26,26 @@ describe('getContentTypes', () => { [ { system: { - id: '8f05d8fb-0a19-4b4a-a72c-96ef46b8ab6f', - name: 'content type 1', - codename: 'content_type_1', - last_modified: new Date(1212, 9, 26), + id: "8f05d8fb-0a19-4b4a-a72c-96ef46b8ab6f", + name: "content type 1", + codename: "content_type_1", + last_modified: createUTCDate(1212, 9, 26), }, elements: {}, }, { system: { - id: '49643885-f8a7-4ebb-b464-87724d3aa64d', - name: 'content type 2', - codename: 'content_type_2', - last_modified: new Date(1316, 5, 14), + id: "49643885-f8a7-4ebb-b464-87724d3aa64d", + name: "content type 2", + codename: "content_type_2", + last_modified: createUTCDate(1316, 5, 14), }, elements: {}, }, ]; nock(expectedRequest.getUrl()) - .get('') + .get("") .reply(200, { types: expectedRawContentTypes, pagination: {} }); const trigger = App.triggers[getContentTypes.key].operation.perform; @@ -55,13 +56,13 @@ describe('getContentTypes', () => { { "codename": "content_type_1", "id": "8f05d8fb-0a19-4b4a-a72c-96ef46b8ab6f", - "lastModified": "1212-10-25T23:02:16.000Z", + "lastModified": "1212-09-26T00:00:00.000Z", "name": "content type 1", }, { "codename": "content_type_2", "id": "49643885-f8a7-4ebb-b464-87724d3aa64d", - "lastModified": "1316-06-13T23:02:16.000Z", + "lastModified": "1316-05-14T00:00:00.000Z", "name": "content type 2", }, ] diff --git a/src/test/triggers/triggerItemExistenceChanged.test.ts b/src/test/triggers/triggerItemExistenceChanged.test.ts index 4b420f1..c4b7ea9 100644 --- a/src/test/triggers/triggerItemExistenceChanged.test.ts +++ b/src/test/triggers/triggerItemExistenceChanged.test.ts @@ -1,8 +1,8 @@ -import { createAppTester } from 'zapier-platform-core'; -import * as nock from 'nock'; -import App from '../../index'; -import triggerItemExistenceChanged from '../../triggers/triggerItemExistenceChanged'; -import { prepareMocksForWebhookSubscribeTest } from '../utils/prepareMocksForWebhookSubscribeTest'; +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import App from "../../index"; +import triggerItemExistenceChanged from "../../triggers/triggerItemExistenceChanged"; +import { prepareMocksForWebhookSubscribeTest } from "../utils/prepareMocksForWebhookSubscribeTest"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -29,14 +29,15 @@ describe("triggerItemExistenceChanged", () => { watchedEvents: expectedWatchedEvents, }); - const subscribe = App.triggers[triggerItemExistenceChanged.key].operation.performSubscribe; + const subscribe = + App.triggers[triggerItemExistenceChanged.key].operation.performSubscribe; const result = await appTester(subscribe, bundle); expect(result).toMatchInlineSnapshot(` Webhook { "id": "404c8821-d3ba-4794-8cee-853f3952ca99", - "lastModified": 1993-01-31T23:00:00.000Z, + "lastModified": 1993-01-01T00:00:00.000Z, "name": "Simple test name for webhook (Zapier)", "secret": "sample_secret", "triggers": { diff --git a/src/test/triggers/triggerItemPublishChanged.test.ts b/src/test/triggers/triggerItemPublishChanged.test.ts index 025c1ae..2c6353b 100644 --- a/src/test/triggers/triggerItemPublishChanged.test.ts +++ b/src/test/triggers/triggerItemPublishChanged.test.ts @@ -1,8 +1,8 @@ -import { createAppTester } from 'zapier-platform-core'; -import * as nock from 'nock'; -import App from '../../index'; -import triggerItemPublishChanged from '../../triggers/triggerItemPublishChanged'; -import { prepareMocksForWebhookSubscribeTest } from '../utils/prepareMocksForWebhookSubscribeTest'; +import { createAppTester } from "zapier-platform-core"; +import * as nock from "nock"; +import App from "../../index"; +import triggerItemPublishChanged from "../../triggers/triggerItemPublishChanged"; +import { prepareMocksForWebhookSubscribeTest } from "../utils/prepareMocksForWebhookSubscribeTest"; const appTester = createAppTester(App); nock.disableNetConnect(); @@ -25,14 +25,15 @@ describe("triggerItemPublishChanged", () => { watchedEvents: expectedWatchedEvents, }); - const subscribe = App.triggers[triggerItemPublishChanged.key].operation.performSubscribe; + const subscribe = + App.triggers[triggerItemPublishChanged.key].operation.performSubscribe; const result = await appTester(subscribe, bundle); expect(result).toMatchInlineSnapshot(` Webhook { "id": "404c8821-d3ba-4794-8cee-853f3952ca99", - "lastModified": 1993-01-31T23:00:00.000Z, + "lastModified": 1993-01-01T00:00:00.000Z, "name": "Simple test name for webhook (Zapier)", "secret": "sample_secret", "triggers": { diff --git a/src/test/triggers/triggerTaxonomyChanged.test.ts b/src/test/triggers/triggerTaxonomyChanged.test.ts index 35cc601..de50741 100644 --- a/src/test/triggers/triggerTaxonomyChanged.test.ts +++ b/src/test/triggers/triggerTaxonomyChanged.test.ts @@ -37,7 +37,7 @@ describe("triggerTaxonomyChanged", () => { expect(result).toMatchInlineSnapshot(` Webhook { "id": "404c8821-d3ba-4794-8cee-853f3952ca99", - "lastModified": 1993-01-31T23:00:00.000Z, + "lastModified": 1993-01-01T00:00:00.000Z, "name": "Simple test name for webhook (Zapier)", "secret": "sample_secret", "triggers": { diff --git a/src/test/triggers/triggerWorkflowStatusChanged.test.ts b/src/test/triggers/triggerWorkflowStatusChanged.test.ts index 5fc8c54..687206a 100644 --- a/src/test/triggers/triggerWorkflowStatusChanged.test.ts +++ b/src/test/triggers/triggerWorkflowStatusChanged.test.ts @@ -40,7 +40,7 @@ describe("triggerWorkflowStatusChanged", () => { expect(result).toMatchInlineSnapshot(` { "id": "404c8821-d3ba-4794-8cee-853f3952ca99", - "lastModified": 1993-01-31T23:00:00.000Z, + "lastModified": 1993-01-01T00:00:00.000Z, "name": "Simple test name for webhook (Zapier)", "secret": "sample_secret", "triggers": { diff --git a/src/test/utils/date.ts b/src/test/utils/date.ts new file mode 100644 index 0000000..a01ccab --- /dev/null +++ b/src/test/utils/date.ts @@ -0,0 +1,2 @@ +export const createUTCDate = (year: number, month: number, day: number): Date => + new Date(Date.UTC(year, month - 1, day)); diff --git a/src/test/utils/prepareMocksForWebhookSubscribeTest.ts b/src/test/utils/prepareMocksForWebhookSubscribeTest.ts index cf85047..0cb062d 100644 --- a/src/test/utils/prepareMocksForWebhookSubscribeTest.ts +++ b/src/test/utils/prepareMocksForWebhookSubscribeTest.ts @@ -3,6 +3,7 @@ import { mockBundle } from './mockBundle'; import { ManagementClient } from '@kontent-ai/management-sdk'; import * as nock from 'nock'; import { WebhookModels } from '@kontent-ai/management-sdk/lib/models'; +import { createUTCDate } from './date'; type ExpectedInputDataBase = Readonly<{ languageId: string; @@ -57,7 +58,7 @@ export const prepareMocksForWebhookSubscribeTest = Date: Tue, 6 Dec 2022 15:56:28 +0100 Subject: [PATCH 11/16] Use node@14 on CI as it is the latest supported version by Zapier --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d845a57..5e7b136 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [14.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: From b7c7974155ad0e7bdb3ded2092cf0b46d2d1ccc4 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Wed, 14 Dec 2022 11:12:37 +0100 Subject: [PATCH 12/16] Load key for creating secrets for webhooks from environment variable --- .env | 1 + .gitignore | 1 - jest.config.ts | 3 ++- setupTests.ts | 3 +++ src/utils/getSecret.ts | 6 +++++- 5 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .env create mode 100644 setupTests.ts diff --git a/.env b/.env new file mode 100644 index 0000000..2caf944 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +SECRET_KEY=Q!@%@rar3bvTIv#VfW2^@hYR*0HWI4nyMb1ymYJ9nv%A9j7u5Rd^7Vrjye*Sc5AO3QjKb$y1VUYioj9yfLdY*bx3kjTl9CVF0D* diff --git a/.gitignore b/.gitignore index 92bf6d6..c894b1a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ docs node_modules *.log .environment -.env .idea .zapierapprc lib diff --git a/jest.config.ts b/jest.config.ts index bf77813..ce17f21 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -3,7 +3,8 @@ import type { Config } from 'jest'; const config: Config = { preset: 'ts-jest', testEnvironment: 'node', - testMatch: ['**/src/test/**/*.test.ts'] + testMatch: ['**/src/test/**/*.test.ts'], + setupFiles: ['./setupTests.ts'] }; export default config; diff --git a/setupTests.ts b/setupTests.ts new file mode 100644 index 0000000..c4eb8f9 --- /dev/null +++ b/setupTests.ts @@ -0,0 +1,3 @@ +import * as zapier from 'zapier-platform-core'; + +zapier.tools.env.inject(); diff --git a/src/utils/getSecret.ts b/src/utils/getSecret.ts index 9c6e822..c0d57fa 100644 --- a/src/utils/getSecret.ts +++ b/src/utils/getSecret.ts @@ -2,9 +2,13 @@ import { ZObject } from 'zapier-platform-core'; import * as crypto from 'crypto'; import { KontentBundle } from '../types/kontentBundle'; -const key = 'BP7XqTLDp_9WzvX6BOfsF9mkI25pPD4n4r4FS1d6Fx2pUgXasRDpCOL6tEcnUmVW_MXrc2BRQG1FWu60NHb0tVc'; +const key = process.env['SECRET_KEY']; export function getSecret(z: ZObject, bundle: KontentBundle<{}>) { + if (!key) { + throw new Error('Missing environment variable.'); + } + const zapID = (bundle.authData.projectId ?? '') + (bundle.authData.cmApiKey ?? '') + bundle.authData.previewApiKey; return crypto.createHmac('sha256', key).update(zapID, 'utf8').digest('base64'); } From bcfd1806f8aff46a500719f6132bbc01363609cf Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Wed, 14 Dec 2022 11:13:30 +0100 Subject: [PATCH 13/16] Commit .zapierapprc so it is permanently linked to the integration --- .gitignore | 1 - .zapierapprc | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .zapierapprc diff --git a/.gitignore b/.gitignore index c894b1a..10f9910 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ node_modules *.log .environment .idea -.zapierapprc lib diff --git a/.zapierapprc b/.zapierapprc new file mode 100644 index 0000000..8105f6a --- /dev/null +++ b/.zapierapprc @@ -0,0 +1,4 @@ +{ + "id": 89926, + "key": "KenticoKontent" +} \ No newline at end of file From d6a922e29c0c805ed9979654367437be0f552ea1 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Wed, 14 Dec 2022 11:33:16 +0100 Subject: [PATCH 14/16] Rename .env to .env.tests so it is clear it is only used to provide env variables to tests --- .env => .env.tests | 0 setupTests.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .env => .env.tests (100%) diff --git a/.env b/.env.tests similarity index 100% rename from .env rename to .env.tests diff --git a/setupTests.ts b/setupTests.ts index c4eb8f9..31c25ab 100644 --- a/setupTests.ts +++ b/setupTests.ts @@ -1,3 +1,3 @@ import * as zapier from 'zapier-platform-core'; -zapier.tools.env.inject(); +zapier.tools.env.inject('.env.tests'); From 7cfde6a94c3aa53b73d0477e4de9d9c01369e3be Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Thu, 15 Dec 2022 10:29:58 +0100 Subject: [PATCH 15/16] Remove return statement from code examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ondřej Chrastina <9218736+Simply007@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8677f4e..0293e1d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Using the Kontent.ai integration, you only need to configure the Zap in Zapier. The output of a trigger in Zapier is exactly what [Kontent.ai's webhook](https://kontent.ai/learn/reference/webhooks-reference) POSTs to Zapier. It will look something like this: ```js -return { +{ data: { items: [ { @@ -115,7 +115,7 @@ Because the webhook notification from Kontent.ai only contains basic information Another useful example would be to translate language or workflow step IDs into codenames. The webhook notification contains IDs, but if you need to compare a language codename ("en-US") later on in the Zap, or if you're writing values to a Google Sheet and want to add the user-friendly name, you could add a __Find language__ step. You can search for the language via ID, and in the output you will find all the details of the language: ```js -return { +{ id: '1c37a40c-9158-031d-9d2d-adf65a568cd6', name: 'Czech', codename: 'cz-CZ', From aedfcbad380afac617bb37b6ea1285deac57aec7 Mon Sep 17 00:00:00 2001 From: Jiri Lojda Date: Thu, 15 Dec 2022 10:33:06 +0100 Subject: [PATCH 16/16] Rename deply workflow to build as it doesn't deploy anything --- .github/workflows/{deploy.yml => build.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{deploy.yml => build.yml} (100%) diff --git a/.github/workflows/deploy.yml b/.github/workflows/build.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/build.yml