From 917dcb3dfc9d0fb088b427d2d068fd024daf4c81 Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 10:42:11 +0100 Subject: [PATCH 1/8] feat: Adds a Production Stacks cluster on master --- .../azure-pipeline-infrastructure-aks.yml | 484 ++++++++++++------ 1 file changed, 327 insertions(+), 157 deletions(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml index def3a7897..f1d3ff224 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml @@ -67,169 +67,339 @@ variables: pool_vm_image: ubuntu-18.04 deployed_base_url: https://stacks-webapp.com/foo # Ensure you find this definition in the K8s and Azure steps to prefix with desired subdomain assignment - base_domain: nonprod.amidostacks.com - base_domain_internal: nonprod.amidostacks.internal + base_domain_nonprod: nonprod.amidostacks.com + base_domain_internal_nonprod: nonprod.amidostacks.internal + base_domain_prod: prod.amidostacks.com + base_domain_internal_prod: prod.amidostacks.internal stages: -- stage: nonprod - variables: - # You can find notes in the READMEs around which values to use for each ENV variable group - - group: amido-stacks-infra-credentials-nonprod - jobs: - - job: InfraNonProd + - stage: nonprod variables: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) - pool: - vmImage: ubuntu-18.04 - container: terraform_custom - steps: - - checkout: self - - checkout: templates - persistCredentials: true - - bash: | - echo '##vso[build.updatebuildnumber]$(version_build_number)' - displayName: 'Update: Build Number' - # Create TF infra - - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates - parameters: - # Terraform Basic Config - terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' - # changing this would require changing the downstream consumers of these outputs - terraform_output_artefact: 'tfoutputs' - # Terraform State Config - terraform_backend_client_id: $(ARM_CLIENT_ID) - terraform_backend_client_secret: $(ARM_CLIENT_SECRET) - terraform_backend_tenant_id: $(ARM_TENANT_ID) - terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) - terraform_state_rg: $(tf_state_rg) - terraform_state_storage: $(tf_state_storage) - terraform_state_container: $(tf_state_container) - terraform_state_key: $(tf_state_key) - terraform_state_workspace: nonprod - # Global Config - company: 'amido' - project: 'stacks' - environment: '' - azure_cli_providers: [ - { name: MSIPreview, namespace: Microsoft.ContainerService } - ] - # Azure config - tags: '' - # Terraform Resource Specific Config - terraform_extra_properties: { - TF_VAR_client_secret: $(azure_client_secret), - TF_VAR_tenant_id: $(azure_tenant_id), - TF_VAR_resource_group_location: northeurope, - TF_VAR_name_company: $(company), - TF_VAR_name_project: $(project), - TF_VAR_name_component: $(domain), - TF_VAR_name_environment: nonprod, - TF_VAR_create_acr: true, - TF_VAR_is_cluster_private: true, - TF_VAR_cluster_version: $(aks_cluster_version), - TF_VAR_stage: nonprod, - TF_VAR_key_vault_name: "core-nonprod-vault", - TF_VAR_dns_zone: $(base_domain), - TF_VAR_internal_dns_zone: $(base_domain_internal) - } - terraform_output_commands: | - raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') - readarray -t outputs <<<"$raw_tf" - for i in "${outputs[@]}"; do echo "$i"; done + # You can find notes in the READMEs around which values to use for each ENV variable group + - group: amido-stacks-infra-credentials-nonprod + jobs: + - job: InfraNonProd + variables: + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + pool: + vmImage: ubuntu-18.04 + container: terraform_custom + steps: + - checkout: self + - checkout: templates + persistCredentials: true + - bash: | + echo '##vso[build.updatebuildnumber]$(version_build_number)' + displayName: 'Update: Build Number' + # Create TF infra + - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates + parameters: + # Terraform Basic Config + terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' + # changing this would require changing the downstream consumers of these outputs + terraform_output_artefact: 'tfoutputs' + # Terraform State Config + terraform_backend_client_id: $(ARM_CLIENT_ID) + terraform_backend_client_secret: $(ARM_CLIENT_SECRET) + terraform_backend_tenant_id: $(ARM_TENANT_ID) + terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) + terraform_state_rg: $(tf_state_rg) + terraform_state_storage: $(tf_state_storage) + terraform_state_container: $(tf_state_container) + terraform_state_key: $(tf_state_key) + terraform_state_workspace: nonprod + # Global Config + company: 'amido' + project: 'stacks' + environment: '' + azure_cli_providers: [ + { name: MSIPreview, namespace: Microsoft.ContainerService } + ] + # Azure config + tags: '' + # Terraform Resource Specific Config + terraform_extra_properties: { + TF_VAR_client_secret: $(azure_client_secret), + TF_VAR_tenant_id: $(azure_tenant_id), + TF_VAR_resource_group_location: northeurope, + TF_VAR_name_company: $(company), + TF_VAR_name_project: $(project), + TF_VAR_name_component: $(domain), + TF_VAR_name_environment: nonprod, + TF_VAR_create_acr: true, + TF_VAR_is_cluster_private: true, + TF_VAR_cluster_version: $(aks_cluster_version), + TF_VAR_stage: nonprod, + TF_VAR_key_vault_name: "core-nonprod-vault", + TF_VAR_dns_zone: $(base_domain_nonprod), + TF_VAR_internal_dns_zone: $(base_domain_internal_nonprod) + } + terraform_output_commands: | + raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') + readarray -t outputs <<<"$raw_tf" + for i in "${outputs[@]}"; do echo "$i"; done - - job: K8sNonProd - dependsOn: InfraNonProd - variables: - AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] - AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] - AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] - AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] - AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] - RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] - AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] - AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] - ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] - # if you have extended the infra definition and assigned output variables you can specify them here - pool: - vmImage: ubuntu-18.04 - container: k8s_deploy - steps: - - checkout: self - - checkout: templates - persistCredentials: true - env: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) - ##### - # Sample left for base K8s cluster bootstrap - ##### - - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates - parameters: - scripts_dir: $(scripts_dir) - enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline - template_input: [ - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, - displayName: ExternalDns, - env_vars: { - domain_filter: $(base_domain), - aks_resource_group: $(AKS_RESOURCE_GROUP) + - job: K8sNonProd + dependsOn: InfraNonProd + variables: + AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] + AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] + AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] + AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] + AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] + RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] + AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] + AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] + ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] + # if you have extended the infra definition and assigned output variables you can specify them here + pool: + vmImage: ubuntu-18.04 + container: k8s_deploy + steps: + - checkout: self + - checkout: templates + persistCredentials: true + env: + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + ##### + # Sample left for base K8s cluster bootstrap + ##### + - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates + parameters: + scripts_dir: $(scripts_dir) + enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline + template_input: [ + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, + displayName: ExternalDns, + env_vars: { + domain_filter: $(base_domain_nonprod), + aks_resource_group: $(AKS_RESOURCE_GROUP) + }, + args: "-no-empty" }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, - displayName: AADPodId, - env_vars: { - user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), - identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, + displayName: AADPodId, + env_vars: { + user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), + identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, - displayName: AADPodIdBinding, - env_vars: { - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, + displayName: AADPodIdBinding, + env_vars: { + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, - displayName: NginxIngress, - env_vars: { - aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), - LB_IS_INTERNAL: "true" - }, - args: "-no-empty" + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, + displayName: NginxIngress, + env_vars: { + aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), + LB_IS_INTERNAL: "true" + }, + args: "-no-empty" + } + ] + + - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates + parameters: + scripts_dir: $(scripts_dir) + aks_cluster_name: $(AKS_CLUSTER_NAME) + aks_resource_group_name: $(AKS_RESOURCE_GROUP) + aks_dns_resource_group_name: $(AKS_RESOURCE_GROUP) + aks_set_acr_perms: false + aks_deploy_gatekeeper: false + aks_aad_pod_identity: true + aks_aad_pod_identity_yaml: { + aad_id_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentity.yml, + aad_id_binding_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentitybinding.yml } - ] + acr_name: $(docker_container_registry_name) + acr_resource_group_name: $(AKS_RESOURCE_GROUP) + ingress_definition: + # TODO: make this a complex object so that additional args can be passed in + - $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml + external_dns_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml + domain_filter: $(base_domain_nonprod) + + - stage: prod + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + variables: + # You can find notes in the READMEs around which values to use for each ENV variable group + - group: amido-stacks-infra-credentials-prod + jobs: + - job: InfraProd + variables: + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + pool: + vmImage: ubuntu-18.04 + container: terraform_custom + steps: + - checkout: self + + - checkout: templates + persistCredentials: true + + - bash: | + echo '##vso[build.updatebuildnumber]$(version_build_number)' + displayName: 'Update: Build Number' - - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates - parameters: - scripts_dir: $(scripts_dir) - aks_cluster_name: $(AKS_CLUSTER_NAME) - aks_resource_group_name: $(AKS_RESOURCE_GROUP) - aks_dns_resource_group_name: $(AKS_RESOURCE_GROUP) - aks_set_acr_perms: false - aks_deploy_gatekeeper: false - aks_aad_pod_identity: true - aks_aad_pod_identity_yaml: { - aad_id_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentity.yml, - aad_id_binding_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentitybinding.yml - } - acr_name: $(docker_container_registry_name) - acr_resource_group_name: $(AKS_RESOURCE_GROUP) - ingress_definition: - # TODO: make this a complex object so that additional args can be passed in - - $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml - external_dns_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml - domain_filter: $(base_domain) + # Create TF infra + - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates + parameters: + # Terraform Basic Config + terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' + # changing this would require changing the downstream consumers of these outputs + terraform_output_artefact: ' tfoutputs' + # Terraform State Config + terraform_backend_client_id: $(ARM_CLIENT_ID) + terraform_backend_client_secret: $(ARM_CLIENT_SECRET) + terraform_backend_tenant_id: $(ARM_TENANT_ID) + terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) + terraform_state_rg: $(tf_state_rg) + terraform_state_storage: $(tf_state_storage) + terraform_state_container: $(tf_state_container) + terraform_state_key: $(tf_state_key) + terraform_state_workspace: prod + # Global Config + company: 'amido' + project: 'stacks' + environment: '' + azure_cli_providers: [ + { name: MSIPreview, namespace: Microsoft.ContainerService } + ] + # Azure config + tags: '' + # Terraform Resource Specific Config + terraform_extra_properties: { + TF_VAR_client_secret: $(azure_client_secret), + TF_VAR_tenant_id: $(azure_tenant_id), + TF_VAR_resource_group_location: northeurope, + TF_VAR_name_company: $(company), + TF_VAR_name_project: $(project), + TF_VAR_name_component: $(domain), + TF_VAR_name_environment: prod, + TF_VAR_create_acr: true, + TF_VAR_is_cluster_private: true, + TF_VAR_cluster_version: $(aks_cluster_version), + TF_VAR_stage: prod, + TF_VAR_key_vault_name: "core-prod-vault", + TF_VAR_dns_zone: $(base_domain_prod), + TF_VAR_internal_dns_zone: $(base_domain_internal_prod) + } + terraform_output_commands: | + raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') + readarray -t outputs <<<"$raw_tf" + for i in "${outputs[@]}"; do echo "$i"; done + + - job: K8sProd + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + dependsOn: InfraProd + variables: + AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] + AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] + AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] + AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] + AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] + RESOURCE_GROUP: $[ dependencies.InfraProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] + AKS_RESOURCE_GROUP: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] + AKS_CLUSTER_NAME: $[ dependencies.InfraProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] + ACR_REGISTRY_NAME: $[ dependencies.InfraProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] + # if you have extended the infra definition and assigned output variables you can specify them here + pool: + vmImage: ubuntu-18.04 + container: k8s_deploy + steps: + - checkout: self + - checkout: templates + persistCredentials: true + env: + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + ##### + # Sample left for base K8s cluster bootstrap + ##### + - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates + parameters: + scripts_dir: $(scripts_dir) + enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline + template_input: [ + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, + displayName: ExternalDns, + env_vars: { + domain_filter: $(base_domain_prod), + aks_resource_group: $(AKS_RESOURCE_GROUP) + }, + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, + displayName: AADPodId, + env_vars: { + user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), + identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, + displayName: AADPodIdBinding, + env_vars: { + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, + displayName: NginxIngress, + env_vars: { + aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), + LB_IS_INTERNAL: "true" + }, + args: "-no-empty" + } + ] + + - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates + parameters: + scripts_dir: $(scripts_dir) + aks_cluster_name: $(AKS_CLUSTER_NAME) + aks_resource_group_name: $(AKS_RESOURCE_GROUP) + aks_dns_resource_group_name: $(AKS_RESOURCE_GROUP) + aks_set_acr_perms: false + aks_deploy_gatekeeper: false + aks_aad_pod_identity: true + aks_aad_pod_identity_yaml: { + aad_id_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentity.yml, + aad_id_binding_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/aadpodidentitybinding.yml + } + acr_name: $(docker_container_registry_name) + acr_resource_group_name: $(AKS_RESOURCE_GROUP) + ingress_definition: + # TODO: make this a complex object so that additional args can be passed in + - $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml + external_dns_yml: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml + domain_filter: $(base_domain_prod) From 3633fccd627d131dd369822a30af86488f769c6d Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 10:47:19 +0100 Subject: [PATCH 2/8] fix: more lint changes --- .../azure/azure-pipeline-infrastructure-aks.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml index f1d3ff224..4af84e2be 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml @@ -89,11 +89,14 @@ stages: container: terraform_custom steps: - checkout: self + - checkout: templates persistCredentials: true + - bash: | echo '##vso[build.updatebuildnumber]$(version_build_number)' displayName: 'Update: Build Number' + # Create TF infra - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates parameters: @@ -160,13 +163,10 @@ stages: container: k8s_deploy steps: - checkout: self + - checkout: templates persistCredentials: true - env: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) + ##### # Sample left for base K8s cluster bootstrap ##### @@ -328,13 +328,10 @@ stages: container: k8s_deploy steps: - checkout: self + - checkout: templates persistCredentials: true - env: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) + ##### # Sample left for base K8s cluster bootstrap ##### From 564527d555ec549576009c43d046d89ab0e9889c Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 14:20:47 +0100 Subject: [PATCH 3/8] debug: pull back one temp for merge --- .../azure-pipeline-infrastructure-aks.yml | 264 +++++++++--------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml index 4af84e2be..beeea9baa 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml @@ -73,149 +73,149 @@ variables: base_domain_internal_prod: prod.amidostacks.internal stages: - - stage: nonprod +- stage: nonprod + variables: + # You can find notes in the READMEs around which values to use for each ENV variable group + - group: amido-stacks-infra-credentials-nonprod + jobs: + - job: InfraNonProd variables: - # You can find notes in the READMEs around which values to use for each ENV variable group - - group: amido-stacks-infra-credentials-nonprod - jobs: - - job: InfraNonProd - variables: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) - pool: - vmImage: ubuntu-18.04 - container: terraform_custom - steps: - - checkout: self + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + pool: + vmImage: ubuntu-18.04 + container: terraform_custom + steps: + - checkout: self - - checkout: templates - persistCredentials: true + - checkout: templates + persistCredentials: true - - bash: | - echo '##vso[build.updatebuildnumber]$(version_build_number)' - displayName: 'Update: Build Number' + - bash: | + echo '##vso[build.updatebuildnumber]$(version_build_number)' + displayName: 'Update: Build Number' - # Create TF infra - - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates - parameters: - # Terraform Basic Config - terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' - # changing this would require changing the downstream consumers of these outputs - terraform_output_artefact: 'tfoutputs' - # Terraform State Config - terraform_backend_client_id: $(ARM_CLIENT_ID) - terraform_backend_client_secret: $(ARM_CLIENT_SECRET) - terraform_backend_tenant_id: $(ARM_TENANT_ID) - terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) - terraform_state_rg: $(tf_state_rg) - terraform_state_storage: $(tf_state_storage) - terraform_state_container: $(tf_state_container) - terraform_state_key: $(tf_state_key) - terraform_state_workspace: nonprod - # Global Config - company: 'amido' - project: 'stacks' - environment: '' - azure_cli_providers: [ - { name: MSIPreview, namespace: Microsoft.ContainerService } - ] - # Azure config - tags: '' - # Terraform Resource Specific Config - terraform_extra_properties: { - TF_VAR_client_secret: $(azure_client_secret), - TF_VAR_tenant_id: $(azure_tenant_id), - TF_VAR_resource_group_location: northeurope, - TF_VAR_name_company: $(company), - TF_VAR_name_project: $(project), - TF_VAR_name_component: $(domain), - TF_VAR_name_environment: nonprod, - TF_VAR_create_acr: true, - TF_VAR_is_cluster_private: true, - TF_VAR_cluster_version: $(aks_cluster_version), - TF_VAR_stage: nonprod, - TF_VAR_key_vault_name: "core-nonprod-vault", - TF_VAR_dns_zone: $(base_domain_nonprod), - TF_VAR_internal_dns_zone: $(base_domain_internal_nonprod) - } - terraform_output_commands: | - raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') - readarray -t outputs <<<"$raw_tf" - for i in "${outputs[@]}"; do echo "$i"; done + # Create TF infra + - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates + parameters: + # Terraform Basic Config + terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' + # changing this would require changing the downstream consumers of these outputs + terraform_output_artefact: 'tfoutputs' + # Terraform State Config + terraform_backend_client_id: $(ARM_CLIENT_ID) + terraform_backend_client_secret: $(ARM_CLIENT_SECRET) + terraform_backend_tenant_id: $(ARM_TENANT_ID) + terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) + terraform_state_rg: $(tf_state_rg) + terraform_state_storage: $(tf_state_storage) + terraform_state_container: $(tf_state_container) + terraform_state_key: $(tf_state_key) + terraform_state_workspace: nonprod + # Global Config + company: 'amido' + project: 'stacks' + environment: '' + azure_cli_providers: [ + { name: MSIPreview, namespace: Microsoft.ContainerService } + ] + # Azure config + tags: '' + # Terraform Resource Specific Config + terraform_extra_properties: { + TF_VAR_client_secret: $(azure_client_secret), + TF_VAR_tenant_id: $(azure_tenant_id), + TF_VAR_resource_group_location: northeurope, + TF_VAR_name_company: $(company), + TF_VAR_name_project: $(project), + TF_VAR_name_component: $(domain), + TF_VAR_name_environment: nonprod, + TF_VAR_create_acr: true, + TF_VAR_is_cluster_private: true, + TF_VAR_cluster_version: $(aks_cluster_version), + TF_VAR_stage: nonprod, + TF_VAR_key_vault_name: "core-nonprod-vault", + TF_VAR_dns_zone: $(base_domain_nonprod), + TF_VAR_internal_dns_zone: $(base_domain_internal_nonprod) + } + terraform_output_commands: | + raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') + readarray -t outputs <<<"$raw_tf" + for i in "${outputs[@]}"; do echo "$i"; done - - job: K8sNonProd - dependsOn: InfraNonProd - variables: - AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] - AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] - AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] - AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] - AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] - RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] - AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] - AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] - ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] - # if you have extended the infra definition and assigned output variables you can specify them here - pool: - vmImage: ubuntu-18.04 - container: k8s_deploy - steps: - - checkout: self + - job: K8sNonProd + dependsOn: InfraNonProd + variables: + AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] + AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] + AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] + AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] + AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] + RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] + AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] + AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] + ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] + # if you have extended the infra definition and assigned output variables you can specify them here + pool: + vmImage: ubuntu-18.04 + container: k8s_deploy + steps: + - checkout: self - - checkout: templates - persistCredentials: true + - checkout: templates + persistCredentials: true - ##### - # Sample left for base K8s cluster bootstrap - ##### - - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates - parameters: - scripts_dir: $(scripts_dir) - enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline - template_input: [ - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, - displayName: ExternalDns, - env_vars: { - domain_filter: $(base_domain_nonprod), - aks_resource_group: $(AKS_RESOURCE_GROUP) - }, - args: "-no-empty" + ##### + # Sample left for base K8s cluster bootstrap + ##### + - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates + parameters: + scripts_dir: $(scripts_dir) + enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline + template_input: [ + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, + displayName: ExternalDns, + env_vars: { + domain_filter: $(base_domain_nonprod), + aks_resource_group: $(AKS_RESOURCE_GROUP) }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, - displayName: AADPodId, - env_vars: { - user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), - identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) - }, - args: "-no-empty" + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, + displayName: AADPodId, + env_vars: { + user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), + identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, - displayName: AADPodIdBinding, - env_vars: { - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) - }, - args: "-no-empty" + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, + displayName: AADPodIdBinding, + env_vars: { + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, - displayName: NginxIngress, - env_vars: { - aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), - LB_IS_INTERNAL: "true" - }, - args: "-no-empty" - } - ] + args: "-no-empty" + }, + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, + displayName: NginxIngress, + env_vars: { + aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), + LB_IS_INTERNAL: "true" + }, + args: "-no-empty" + } + ] - - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates + - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates parameters: scripts_dir: $(scripts_dir) aks_cluster_name: $(AKS_CLUSTER_NAME) From 56444d0e4f060738822c0d4059ba7e90ce021000 Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 14:21:42 +0100 Subject: [PATCH 4/8] fix: merge master into branch --- .../azure-pipeline-infrastructure-aks.yml | 266 +++++++++--------- 1 file changed, 133 insertions(+), 133 deletions(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml index ab893c10a..8cfb307bd 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml @@ -73,150 +73,150 @@ variables: base_domain_internal_prod: prod.amidostacks.internal stages: -- stage: nonprod - variables: - # You can find notes in the READMEs around which values to use for each ENV variable group - - group: amido-stacks-infra-credentials-nonprod - jobs: - - job: InfraNonProd + - stage: nonprod variables: - ARM_SUBSCRIPTION_ID: $(azure_subscription_id) - ARM_CLIENT_ID: $(azure_client_id) - ARM_CLIENT_SECRET: $(azure_client_secret) - ARM_TENANT_ID: $(azure_tenant_id) - pool: - vmImage: ubuntu-18.04 - container: terraform_custom - steps: - - checkout: self + # You can find notes in the READMEs around which values to use for each ENV variable group + - group: amido-stacks-infra-credentials-nonprod + jobs: + - job: InfraNonProd + variables: + ARM_SUBSCRIPTION_ID: $(azure_subscription_id) + ARM_CLIENT_ID: $(azure_client_id) + ARM_CLIENT_SECRET: $(azure_client_secret) + ARM_TENANT_ID: $(azure_tenant_id) + pool: + vmImage: ubuntu-18.04 + container: terraform_custom + steps: + - checkout: self - - checkout: templates - persistCredentials: true + - checkout: templates + persistCredentials: true - - bash: | - echo '##vso[build.updatebuildnumber]$(version_build_number)' - displayName: 'Update: Build Number' + - bash: | + echo '##vso[build.updatebuildnumber]$(version_build_number)' + displayName: 'Update: Build Number' - # Create TF infra - - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates - parameters: - # Terraform Basic Config - terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' - # changing this would require changing the downstream consumers of these outputs - terraform_output_artefact: 'tfoutputs' - # Terraform State Config - terraform_backend_client_id: $(ARM_CLIENT_ID) - terraform_backend_client_secret: $(ARM_CLIENT_SECRET) - terraform_backend_tenant_id: $(ARM_TENANT_ID) - terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) - terraform_state_rg: $(tf_state_rg) - terraform_state_storage: $(tf_state_storage) - terraform_state_container: $(tf_state_container) - terraform_state_key: $(tf_state_key) - terraform_state_workspace: nonprod - # Global Config - company: 'amido' - project: 'stacks' - environment: '' - azure_cli_providers: [ - { name: MSIPreview, namespace: Microsoft.ContainerService } - ] - # Azure config - tags: '' - # Terraform Resource Specific Config - terraform_extra_properties: { - TF_VAR_client_secret: $(azure_client_secret), - TF_VAR_tenant_id: $(azure_tenant_id), - TF_VAR_resource_group_location: northeurope, - TF_VAR_name_company: $(company), - TF_VAR_name_project: $(project), - TF_VAR_name_component: $(domain), - TF_VAR_name_environment: nonprod, - TF_VAR_create_acr: true, - TF_VAR_acme_email: "stacks@amido.com", - TF_VAR_is_cluster_private: true, - TF_VAR_cluster_version: $(aks_cluster_version), - TF_VAR_stage: nonprod, - TF_VAR_key_vault_name: "core-nonprod-vault", - TF_VAR_dns_zone: $(base_domain_nonprod), - TF_VAR_internal_dns_zone: $(base_domain_internal_nonprod) - } - terraform_output_commands: | - raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') - readarray -t outputs <<<"$raw_tf" - for i in "${outputs[@]}"; do echo "$i"; done + # Create TF infra + - template: azDevOps/azure/templates/v2/steps/deploy-terraform-resource.yml@templates + parameters: + # Terraform Basic Config + terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' + # changing this would require changing the downstream consumers of these outputs + terraform_output_artefact: 'tfoutputs' + # Terraform State Config + terraform_backend_client_id: $(ARM_CLIENT_ID) + terraform_backend_client_secret: $(ARM_CLIENT_SECRET) + terraform_backend_tenant_id: $(ARM_TENANT_ID) + terraform_backend_subscription_id: $(ARM_SUBSCRIPTION_ID) + terraform_state_rg: $(tf_state_rg) + terraform_state_storage: $(tf_state_storage) + terraform_state_container: $(tf_state_container) + terraform_state_key: $(tf_state_key) + terraform_state_workspace: nonprod + # Global Config + company: 'amido' + project: 'stacks' + environment: '' + azure_cli_providers: [ + { name: MSIPreview, namespace: Microsoft.ContainerService } + ] + # Azure config + tags: '' + # Terraform Resource Specific Config + terraform_extra_properties: { + TF_VAR_client_secret: $(azure_client_secret), + TF_VAR_tenant_id: $(azure_tenant_id), + TF_VAR_resource_group_location: northeurope, + TF_VAR_name_company: $(company), + TF_VAR_name_project: $(project), + TF_VAR_name_component: $(domain), + TF_VAR_name_environment: nonprod, + TF_VAR_create_acr: true, + TF_VAR_acme_email: "stacks@amido.com", + TF_VAR_is_cluster_private: true, + TF_VAR_cluster_version: $(aks_cluster_version), + TF_VAR_stage: nonprod, + TF_VAR_key_vault_name: "core-nonprod-vault", + TF_VAR_dns_zone: $(base_domain_nonprod), + TF_VAR_internal_dns_zone: $(base_domain_internal_nonprod) + } + terraform_output_commands: | + raw_tf=$(terraform output -json | jq -r 'keys[] as $k | "##vso[task.setvariable variable=\($k | ascii_upcase);isOutput=true]\(.[$k] | .value)"') + readarray -t outputs <<<"$raw_tf" + for i in "${outputs[@]}"; do echo "$i"; done - - job: K8sNonProd - dependsOn: InfraNonProd - variables: - AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] - AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] - AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] - AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] - AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] - RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] - AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] - AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] - ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] - # if you have extended the infra definition and assigned output variables you can specify them here - pool: - vmImage: ubuntu-18.04 - container: k8s_deploy - steps: - - checkout: self + - job: K8sNonProd + dependsOn: InfraNonProd + variables: + AKS_DEFAULT_USER_IDENTITY_CLIENT_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_CLIENT_ID'] ] + AKS_DEFAULT_USER_IDENTITY_ID: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_ID'] ] + AKS_DEFAULT_USER_IDENTITY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_DEFAULT_USER_IDENTITY_NAME'] ] + AKS_INGRESS_PUBLIC_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PUBLIC_IP'] ] + AKS_INGRESS_PRIVATE_IP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_INGRESS_PRIVATE_IP'] ] + RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.RESOURCE_GROUP_NAME'] ] + AKS_RESOURCE_GROUP: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_RESOURCE_GROUP_NAME'] ] + AKS_CLUSTER_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.AKS_CLUSTER_NAME'] ] + ACR_REGISTRY_NAME: $[ dependencies.InfraNonProd.outputs['tfoutputs.ACR_REGISTRY_NAME'] ] + # if you have extended the infra definition and assigned output variables you can specify them here + pool: + vmImage: ubuntu-18.04 + container: k8s_deploy + steps: + - checkout: self - - checkout: templates - persistCredentials: true + - checkout: templates + persistCredentials: true - ##### - # Sample left for base K8s cluster bootstrap - ##### - - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates - parameters: - scripts_dir: $(scripts_dir) - enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline - template_input: [ - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, - displayName: ExternalDns, - env_vars: { - domain_filter: $(base_domain_nonprod), - aks_resource_group: $(AKS_RESOURCE_GROUP) - }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, - displayName: AADPodId, - env_vars: { - user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), - identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + ##### + # Sample left for base K8s cluster bootstrap + ##### + - template: azDevOps/azure/templates/v2/steps/yaml-k8s-templater.yml@templates + parameters: + scripts_dir: $(scripts_dir) + enable_debug: "yes" # comment for debug and if you want to see the templated out file in the STDOUT of pipeline + template_input: [ + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_external-dns.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/external-dns.yml, + displayName: ExternalDns, + env_vars: { + domain_filter: $(base_domain_nonprod), + aks_resource_group: $(AKS_RESOURCE_GROUP) + }, + args: "-no-empty" }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, - displayName: AADPodIdBinding, - env_vars: { - identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentity.yml, + displayName: AADPodId, + env_vars: { + user_identity_id: $(AKS_DEFAULT_USER_IDENTITY_ID), + identity_client_id: $(AKS_DEFAULT_USER_IDENTITY_CLIENT_ID), + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" }, - args: "-no-empty" - }, - { - base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, - out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, - displayName: NginxIngress, - env_vars: { - aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), - LB_IS_INTERNAL: "true" + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_aadpodidentitybinding.yml, + displayName: AADPodIdBinding, + env_vars: { + identity_user_name: $(AKS_DEFAULT_USER_IDENTITY_NAME) + }, + args: "-no-empty" }, - args: "-no-empty" - } - ] + { + base: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/base_nginx-ingress.yml, + out: $(Agent.BuildDirectory)/s/$(self_repo)/build/k8s_manifests/aks/nginx-ingress.yml, + displayName: NginxIngress, + env_vars: { + aks_ingress_ip: $(AKS_INGRESS_PRIVATE_IP), + LB_IS_INTERNAL: "true" + }, + args: "-no-empty" + } + ] - - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates + - template: azDevOps/azure/templates/v2/steps/deploy-k8s-cluster.yml@templates parameters: scripts_dir: $(scripts_dir) aks_cluster_name: $(AKS_CLUSTER_NAME) From 2963c4329b861965f8c92e77f5f82bd4648742b4 Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 14:23:28 +0100 Subject: [PATCH 5/8] fix: spacing issue on tfoutputs --- .../build/azDevops/azure/azure-pipeline-infrastructure-aks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml index 8cfb307bd..1fe2048b6 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-infrastructure-aks.yml @@ -268,7 +268,7 @@ stages: # Terraform Basic Config terraform_working_dir: '$(Agent.BuildDirectory)/s/$(self_repo)/$(self_repo_tf_src)' # changing this would require changing the downstream consumers of these outputs - terraform_output_artefact: ' tfoutputs' + terraform_output_artefact: 'tfoutputs' # Terraform State Config terraform_backend_client_id: $(ARM_CLIENT_ID) terraform_backend_client_secret: $(ARM_CLIENT_SECRET) From 68a8656d6fc91e7efb5a20013d20d1d40c07cbde Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 15:18:44 +0100 Subject: [PATCH 6/8] fix: bumps appgateway version --- .../templates/deploy/azure/infra/stacks-aks/main.tf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/scaffolding-cli/templates/deploy/azure/infra/stacks-aks/main.tf b/packages/scaffolding-cli/templates/deploy/azure/infra/stacks-aks/main.tf index c367b84a2..4be8233cb 100644 --- a/packages/scaffolding-cli/templates/deploy/azure/infra/stacks-aks/main.tf +++ b/packages/scaffolding-cli/templates/deploy/azure/infra/stacks-aks/main.tf @@ -1,6 +1,6 @@ data "azurerm_client_config" "current" {} -# Naming convention +# Naming convention module "default_label" { source = "git::https://github.com/cloudposse/terraform-null-label.git?ref=0.16.0" namespace = format("%s-%s", var.name_company, var.name_project) @@ -11,10 +11,10 @@ module "default_label" { tags = var.tags } -# if you do not set the +# if you do not set the # `service_cidr` # `dns_service_ip` -# `docker_bridge_cidr` +# `docker_bridge_cidr` # AKS will default to ==> 10.0.0.0/16 variable "vnet_cidr" { default = ["10.1.0.0/16"] @@ -53,7 +53,7 @@ module "aks_bootstrap" { } module "ssl_app_gateway" { - source = "git::https://github.com/amido/stacks-terraform//azurerm/modules/azurerm-app-gateway?ref=v1.3.1" + source = "git::https://github.com/amido/stacks-terraform//azurerm/modules/azurerm-app-gateway?ref=v1.3.2" resource_namer = "${module.default_label.id}" resource_group_name = module.aks_bootstrap.resource_group_name resource_group_location = var.resource_group_location From d9fb33f4c0512d2d72d05c96154949c20e5f6fd7 Mon Sep 17 00:00:00 2001 From: Jack Blower Date: Tue, 21 Jul 2020 17:06:32 +0100 Subject: [PATCH 7/8] feat: bump version --- packages/eslint-config/CHANGELOG.md | 21 + packages/eslint-config/package-lock.json | 2 +- packages/eslint-config/package.json | 2 +- packages/pact-config/CHANGELOG.md | 16 + packages/pact-config/package-lock.json | 1796 +------------------- packages/pact-config/package.json | 2 +- packages/scaffolding-cli/CHANGELOG.md | 58 + packages/scaffolding-cli/package-lock.json | 2 +- packages/scaffolding-cli/package.json | 4 +- 9 files changed, 131 insertions(+), 1772 deletions(-) diff --git a/packages/eslint-config/CHANGELOG.md b/packages/eslint-config/CHANGELOG.md index 69041efa0..fb88520dc 100644 --- a/packages/eslint-config/CHANGELOG.md +++ b/packages/eslint-config/CHANGELOG.md @@ -3,6 +3,27 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.39.0](https://github.com/amido/stacks-webapp-template/compare/@amidostacks/eslint-config@0.19.0...@amidostacks/eslint-config@0.39.0) (2020-07-21) + + +### Bug Fixes + +* eslint peer deps list ([#108](https://github.com/amido/stacks-webapp-template/issues/108)) ([165f57f](https://github.com/amido/stacks-webapp-template/commit/165f57f97b77657c3099a4ddd53211eac34e7060)) +* lerna publishing ([#104](https://github.com/amido/stacks-webapp-template/issues/104)) ([62ab904](https://github.com/amido/stacks-webapp-template/commit/62ab90463fab445c01d6579f6ee9893bba33aa12)) +* publishing with lerna ([#109](https://github.com/amido/stacks-webapp-template/issues/109)) ([b266275](https://github.com/amido/stacks-webapp-template/commit/b2662750098ee6084e3308584c5ad654ba65c6d0)) +* reduce package size ([259e745](https://github.com/amido/stacks-webapp-template/commit/259e74554e3e72ffb8e61f72accebd5e8e69c687)) +* version ([1f3f1ee](https://github.com/amido/stacks-webapp-template/commit/1f3f1ee661f29bdd2d16a11b7e5c1127f6cdf9b7)) + + +### Features + +* pact-config package ([#148](https://github.com/amido/stacks-webapp-template/issues/148)) ([4343f21](https://github.com/amido/stacks-webapp-template/commit/4343f21850a55ddb6966f4a6d093c80562b950eb)) +* Search ([#119](https://github.com/amido/stacks-webapp-template/issues/119)) ([d4dbf04](https://github.com/amido/stacks-webapp-template/commit/d4dbf04cd4cbdd761de962f0c8388f02b6489497)) + + + + + # [0.38.0](https://github.com/amido/stacks-webapp-template/compare/@amidostacks/eslint-config@0.19.0...@amidostacks/eslint-config@0.38.0) (2020-07-13) diff --git a/packages/eslint-config/package-lock.json b/packages/eslint-config/package-lock.json index 772abdd9b..0d4676f8f 100644 --- a/packages/eslint-config/package-lock.json +++ b/packages/eslint-config/package-lock.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/eslint-config", - "version": "0.38.0", + "version": "0.39.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index ad3af4309..0d2fba4f4 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/eslint-config", - "version": "0.38.0", + "version": "0.39.0", "description": "Shared linting config from amido stacks", "main": "eslintrc.js", "author": "https://amido.com", diff --git a/packages/pact-config/CHANGELOG.md b/packages/pact-config/CHANGELOG.md index 400e1f6d8..4fe4881ef 100644 --- a/packages/pact-config/CHANGELOG.md +++ b/packages/pact-config/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# 0.15.0 (2020-07-21) + + +### Bug Fixes + +* bootstrapping with lerna ([#279](https://github.com/amido/stacks-webapp-template/issues/279)) ([3ce3af4](https://github.com/amido/stacks-webapp-template/commit/3ce3af4ab809131347619a25e49cf4e7493f9fac)) + + +### Features + +* pact-config package ([#148](https://github.com/amido/stacks-webapp-template/issues/148)) ([4343f21](https://github.com/amido/stacks-webapp-template/commit/4343f21850a55ddb6966f4a6d093c80562b950eb)) + + + + + # 0.14.0 (2020-07-13) diff --git a/packages/pact-config/package-lock.json b/packages/pact-config/package-lock.json index 8b8d01c7d..130d64206 100644 --- a/packages/pact-config/package-lock.json +++ b/packages/pact-config/package-lock.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/pact-config", - "version": "0.14.0", + "version": "0.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -811,116 +811,6 @@ "chalk": "^3.0.0" } }, - "@pact-foundation/pact": { - "version": "9.11.0", - "resolved": "https://registry.npmjs.org/@pact-foundation/pact/-/pact-9.11.0.tgz", - "integrity": "sha512-CajlvVooPuX/sYy/88Lq17Pk7PbDRxHKmd4TvAPDAfZyP+Okl/EBVOoh2LXyr+fyg3SjYgAMTkWKxKueBbWAeQ==", - "dev": true, - "requires": { - "@pact-foundation/pact-node": "^10.9.0", - "@types/bluebird": "^3.5.20", - "@types/bunyan": "^1.8.3", - "@types/express": "^4.11.1", - "bluebird": "~3.5.1", - "body-parser": "^1.18.2", - "bunyan": "^1.8.12", - "bunyan-prettystream": "^0.1.3", - "cli-color": "^1.1.0", - "es6-object-assign": "^1.1.0", - "es6-promise": "^4.1.1", - "express": "^4.16.3", - "graphql": "^14.0.0", - "graphql-tag": "^2.9.1", - "http-proxy": "^1.18.1", - "http-proxy-middleware": "^0.19.0", - "lodash": "^4.17.14", - "lodash.isfunction": "3.0.8", - "lodash.isnil": "4.0.0", - "lodash.isundefined": "3.0.1", - "lodash.omit": "^4.5.0", - "lodash.omitby": "4.6.0", - "pkginfo": "^0.4.1", - "popsicle": "^9.2.0" - } - }, - "@pact-foundation/pact-node": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/@pact-foundation/pact-node/-/pact-node-10.9.4.tgz", - "integrity": "sha512-yJWEdjdUO3L4J4gB8Blu89OBitpJMofWRb/9r/lykSEUmWt76GBfnRrKV32PEcByLm2fVKLSXEHXVT7QD+9meg==", - "dev": true, - "requires": { - "@types/q": "1.0.7", - "@types/request": "2.48.2", - "bunyan": "1.8.12", - "bunyan-prettystream": "0.1.3", - "chalk": "2.3.1", - "check-types": "7.3.0", - "cross-spawn": "^7.0.1", - "libnpmconfig": "^1.2.1", - "mkdirp": "1.0.0", - "q": "1.5.1", - "request": "2.87.0", - "rimraf": "2.6.2", - "sumchecker": "^2.0.2", - "tar": "4.4.2", - "underscore": "1.8.3", - "unixify": "1.0.0", - "unzipper": "^0.10.10", - "url-join": "^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.3.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", - "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.2.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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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" - } - } - } - }, "@sinonjs/commons": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", @@ -971,75 +861,12 @@ "@babel/types": "^7.3.0" } }, - "@types/bluebird": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.32.tgz", - "integrity": "sha512-dIOxFfI0C+jz89g6lQ+TqhGgPQ0MxSnh/E4xuC0blhFtyW269+mPG5QeLgbdwst/LvdP8o1y0o/Gz5EHXLec/g==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bunyan": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.6.tgz", - "integrity": "sha512-YiozPOOsS6bIuz31ilYqR5SlLif4TBWsousN2aCWLi5233nZSX19tFbcQUPdR7xJ8ypPyxkCGNxg0CIV5n9qxQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", - "dev": true - }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/connect": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz", - "integrity": "sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz", - "integrity": "sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, "@types/graceful-fs": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", @@ -1074,22 +901,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/jest": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", - "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", - "dev": true, - "requires": { - "jest-diff": "^25.2.1", - "pretty-format": "^25.2.1" - } - }, - "@types/mime": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.2.tgz", - "integrity": "sha512-4kPlzbljFcsttWEq6aBW0OZe6BDajAmyvr2xknBG92tejQnvdGtT9+kXSZ580DqpxY9qG2xeQVF9Dq0ymUTo5Q==", - "dev": true - }, "@types/node": { "version": "13.13.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", @@ -1108,58 +919,12 @@ "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", "dev": true }, - "@types/q": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.7.tgz", - "integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ==", - "dev": true - }, - "@types/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", - "dev": true - }, - "@types/request": { - "version": "2.48.2", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.2.tgz", - "integrity": "sha512-gP+PSFXAXMrd5PcD7SqHeUjdGshAI8vKQ3+AvpQr3ht9iQea+59LOKvKITcQI+Lg+1EIkDP6AFSBUJPWG8GDyA==", - "dev": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "@types/serve-static": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.4.tgz", - "integrity": "sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, - "@types/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", - "dev": true - }, "@types/yargs": { "version": "15.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", @@ -1181,16 +946,6 @@ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, "acorn": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", @@ -1221,18 +976,6 @@ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, "ansi-escapes": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", @@ -1284,12 +1027,6 @@ } } }, - "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", @@ -1323,12 +1060,6 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1386,35 +1117,6 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "dev": true, - "requires": { - "follow-redirects": "1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - } - } - } - }, "babel-jest": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", @@ -1553,54 +1255,6 @@ "tweetnacl": "^0.14.3" } }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1687,42 +1341,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true - }, - "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", - "dev": true, - "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "bunyan-prettystream": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/bunyan-prettystream/-/bunyan-prettystream-0.1.3.tgz", - "integrity": "sha1-bDtxMmb2rTIAfHtqsemYokU0nZg=", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1767,15 +1385,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -1786,18 +1395,6 @@ "supports-color": "^7.1.0" } }, - "check-types": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", - "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", - "dev": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -1827,28 +1424,6 @@ } } }, - "cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dev": true, - "requires": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -1918,41 +1493,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "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, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "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==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -1970,18 +1510,6 @@ } } }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -2028,16 +1556,6 @@ } } }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2138,30 +1656,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, "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 }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, "diff-sequences": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", @@ -2177,25 +1677,6 @@ "webidl-conversions": "^4.0.2" } }, - "dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -2206,24 +1687,12 @@ "safer-buffer": "^2.1.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "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 }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2242,68 +1711,6 @@ "is-arrayish": "^0.2.1" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", - "dev": true - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2350,28 +1757,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", - "dev": true - }, "exec-sh": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", @@ -2499,75 +1884,6 @@ "jest-regex-util": "^25.2.6" } }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "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 - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2666,12 +1982,6 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, "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", @@ -2693,12 +2003,6 @@ "bser": "2.1.1" } }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2722,56 +2026,6 @@ } } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "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" - } - }, - "follow-redirects": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", - "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - } - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2784,23 +2038,6 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2810,57 +2047,19 @@ "map-cache": "^0.2.2" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -2897,20 +2096,6 @@ "assert-plus": "^1.0.0" } }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "optional": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -2923,21 +2108,6 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "graphql": { - "version": "14.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.6.0.tgz", - "integrity": "sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg==", - "dev": true, - "requires": { - "iterall": "^1.2.2" - } - }, - "graphql-tag": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.3.tgz", - "integrity": "sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA==", - "dev": true - }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -2951,16 +2121,6 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3020,50 +2180,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", - "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", - "dev": true, - "requires": { - "http-proxy": "^1.18.1", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3122,24 +2238,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3233,12 +2337,6 @@ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, "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", @@ -3251,15 +2349,6 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, - "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" - } - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -3289,12 +2378,6 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -3423,12 +2506,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "dev": true - }, "jest": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", @@ -3770,147 +2847,6 @@ "throat": "^5.0.0" } }, - "jest-junit": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-10.0.0.tgz", - "integrity": "sha512-dbOVRyxHprdSpwSAR9/YshLwmnwf+RSl5hf0kCGlhAcEeZY9aRqo4oNmaT0tLC16Zy9D0zekDjWkjHGjXlglaQ==", - "dev": true, - "requires": { - "jest-validate": "^24.9.0", - "mkdirp": "^0.5.1", - "strip-ansi": "^5.2.0", - "uuid": "^3.3.3", - "xml": "^1.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "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 - }, - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", - "dev": true - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "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" - } - }, - "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" - } - } - } - }, "jest-leak-detector": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", @@ -4387,12 +3323,6 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -4448,81 +3378,24 @@ "type-check": "~0.3.2" } }, - "libnpmconfig": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", - "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - } - }, "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=", "dev": true }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "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==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "lodash.isfunction": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", - "integrity": "sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=", - "dev": true - }, - "lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw=", - "dev": true - }, - "lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "dev": true - }, - "lodash.omitby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.omitby/-/lodash.omitby-4.6.0.tgz", - "integrity": "sha1-XBX/R1StVVAWtTwEExHo8HkgR5E=", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -4538,15 +3411,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "requires": { - "es5-ext": "~0.10.2" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -4562,15 +3426,6 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", - "dev": true, - "requires": { - "make-error": "^1.2.0" - } - }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -4595,46 +3450,12 @@ "object-visit": "^1.0.0" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, "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 }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4656,12 +3477,6 @@ "to-regex": "^3.0.2" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", @@ -4698,105 +3513,32 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "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, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "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, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.0.tgz", - "integrity": "sha512-4Pb+8NJ5DdvaWD797hKOM28wMXsObb4HppQdIwKUHFiB69ICZ4wktOE+qsGGBy7GtwgYNizp0R9KEy4zKYBLMg==", - "dev": true - }, - "moment": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", - "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==", - "dev": true, - "optional": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "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, - "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "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, - "optional": true, "requires": { - "glob": "^6.0.1" + "is-plain-object": "^2.0.4" } } } }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -4823,25 +3565,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true, - "optional": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -4938,12 +3661,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -4993,15 +3710,6 @@ "isobject": "^3.0.1" } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5055,15 +3763,6 @@ "p-try": "^2.0.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" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5088,24 +3787,12 @@ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "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=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5124,12 +3811,6 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -5196,30 +3877,12 @@ } } }, - "pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", - "dev": true - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, - "popsicle": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/popsicle/-/popsicle-9.2.0.tgz", - "integrity": "sha512-petRj39w05GvH1WKuGFmzxR9+k+R9E7zX5XWTFee7P/qf88hMuLT7aAO/RsmldpQMtJsWQISkTQlfMRECKlxhw==", - "dev": true, - "requires": { - "concat-stream": "^1.4.7", - "form-data": "^2.0.0", - "make-error-cause": "^1.2.1", - "tough-cookie": "^2.0.0" - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5244,12 +3907,6 @@ "react-is": "^16.12.0" } }, - "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 - }, "prompts": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", @@ -5260,16 +3917,6 @@ "sisteransi": "^1.0.4" } }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -5292,36 +3939,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -5395,29 +4018,6 @@ } } }, - "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" - }, - "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==", - "dev": true - } - } - }, "realpath-native": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", @@ -5452,47 +4052,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.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.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - }, - "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" - } - } - } - }, "request-promise-core": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", @@ -5525,12 +4084,6 @@ "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": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -5567,31 +4120,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - }, - "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" - } - } - } - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -5604,13 +4132,6 @@ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, - "safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "dev": true, - "optional": true - }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -5670,47 +4191,6 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -5740,18 +4220,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6033,12 +4501,6 @@ } } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -6083,23 +4545,6 @@ "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" - }, - "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==", - "dev": true - } - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -6127,15 +4572,6 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, - "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", - "dev": true, - "requires": { - "debug": "^2.2.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -6161,32 +4597,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "tar": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", - "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", - "dev": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -6230,16 +4640,6 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -6294,12 +4694,6 @@ "repeat-string": "^1.6.1" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", @@ -6326,12 +4720,6 @@ } } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "ts-jest": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.0.tgz", @@ -6404,19 +4792,6 @@ } } }, - "ts-node": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.9.1.tgz", - "integrity": "sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -6432,12 +4807,6 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -6459,22 +4828,6 @@ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -6490,12 +4843,6 @@ "integrity": "sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==", "dev": true }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -6508,21 +4855,6 @@ "set-value": "^2.0.1" } }, - "unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", - "dev": true, - "requires": { - "normalize-path": "^2.1.1" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -6563,32 +4895,6 @@ } } }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - } - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -6612,30 +4918,12 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, "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 }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -6671,12 +4959,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -6805,12 +5087,6 @@ "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==", "dev": true }, - "xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", - "dev": true - }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -6829,12 +5105,6 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "yargs": { "version": "15.3.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", @@ -6899,12 +5169,6 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true } } } diff --git a/packages/pact-config/package.json b/packages/pact-config/package.json index e842d548d..bed466fec 100644 --- a/packages/pact-config/package.json +++ b/packages/pact-config/package.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/pact-config", - "version": "0.14.0", + "version": "0.15.0", "author": "Amido Stacks ", "description": "Pact Jest wrapper and executables for consumers", "main": "./dist/index.js", diff --git a/packages/scaffolding-cli/CHANGELOG.md b/packages/scaffolding-cli/CHANGELOG.md index 6bb9f1c34..26b2c1061 100644 --- a/packages/scaffolding-cli/CHANGELOG.md +++ b/packages/scaffolding-cli/CHANGELOG.md @@ -3,6 +3,64 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.41.0](https://github.com/amido/stacks-webapp-template/compare/@amidostacks/scaffolding-cli@1.12.1...@amidostacks/scaffolding-cli@1.41.0) (2020-07-21) + + +### Bug Fixes + +* bootstrapping with lerna ([#279](https://github.com/amido/stacks-webapp-template/issues/279)) ([3ce3af4](https://github.com/amido/stacks-webapp-template/commit/3ce3af4ab809131347619a25e49cf4e7493f9fac)) +* bumps appgateway version ([68a8656](https://github.com/amido/stacks-webapp-template/commit/68a8656d6fc91e7efb5a20013d20d1d40c07cbde)) +* cms blog ui ([#283](https://github.com/amido/stacks-webapp-template/issues/283)) ([fee1d83](https://github.com/amido/stacks-webapp-template/commit/fee1d8327881fcd75dacd0e766b739f634f1b560)) +* corrected GCP app mapping ([#386](https://github.com/amido/stacks-webapp-template/issues/386)) ([2f303e8](https://github.com/amido/stacks-webapp-template/commit/2f303e82aa956a6d1a56342412ae3467a6d23db1)) +* csr favicon & searchbar ([#142](https://github.com/amido/stacks-webapp-template/issues/142)) ([7bf1b6a](https://github.com/amido/stacks-webapp-template/commit/7bf1b6a59b5d5de302b8347916266f2a793cf359)) +* csr properly ported in cli flow ([#317](https://github.com/amido/stacks-webapp-template/issues/317)) ([326b7ee](https://github.com/amido/stacks-webapp-template/commit/326b7ee40e055eae680b7ca13f955d07b3c70013)) +* deploy artifact ([30ab8ee](https://github.com/amido/stacks-webapp-template/commit/30ab8eee88a22df2554279149180a1b8332b13c3)) +* merge master into branch ([56444d0](https://github.com/amido/stacks-webapp-template/commit/56444d0e4f060738822c0d4059ba7e90ce021000)) +* more lint changes ([3633fcc](https://github.com/amido/stacks-webapp-template/commit/3633fccd627d131dd369822a30af86488f769c6d)) +* patch env vars for csr ([ee7a70f](https://github.com/amido/stacks-webapp-template/commit/ee7a70f5be24c4d501c357d103d85d46d9dc7067)) +* reduce package size ([259e745](https://github.com/amido/stacks-webapp-template/commit/259e74554e3e72ffb8e61f72accebd5e8e69c687)) +* redundant calls to the search api ([#161](https://github.com/amido/stacks-webapp-template/issues/161)) ([6694a37](https://github.com/amido/stacks-webapp-template/commit/6694a37dd7b516c675c90b11ec49c753590c6e90)) +* security headers default helmet ([#367](https://github.com/amido/stacks-webapp-template/issues/367)) ([e63adac](https://github.com/amido/stacks-webapp-template/commit/e63adacef97037ceb4c653690fba840ff92a238b)) +* spacing issue on tfoutputs ([2963c43](https://github.com/amido/stacks-webapp-template/commit/2963c4329b861965f8c92e77f5f82bd4648742b4)) +* tf libs versioning updated ([6696289](https://github.com/amido/stacks-webapp-template/commit/669628972103228b9b0fa7f1bc1875993bd6cba1)) +* type error ([#347](https://github.com/amido/stacks-webapp-template/issues/347)) ([fbad081](https://github.com/amido/stacks-webapp-template/commit/fbad0819b57833aca745b0296f0e5bc6f4e898a7)) + + +### Features + +* added appInsights to CSR ([#164](https://github.com/amido/stacks-webapp-template/issues/164)) ([eb29288](https://github.com/amido/stacks-webapp-template/commit/eb2928872f0a87f0966470f300f6570aab87bc5c)) +* added Auth0 and /profile page ([#351](https://github.com/amido/stacks-webapp-template/issues/351)) ([a053626](https://github.com/amido/stacks-webapp-template/commit/a053626c058b64e6dd63d3d2e057d1be4a8868c9)) +* added Redux sagas and api integration ([#156](https://github.com/amido/stacks-webapp-template/issues/156)) ([c090fef](https://github.com/amido/stacks-webapp-template/commit/c090fef619d6b19c5e393bed91dbfe89606cbb9d)) +* Adds a Production Stacks cluster on master ([917dcb3](https://github.com/amido/stacks-webapp-template/commit/917dcb3dfc9d0fb088b427d2d068fd024daf4c81)) +* CMS i18n integration ([#345](https://github.com/amido/stacks-webapp-template/issues/345)) ([1833736](https://github.com/amido/stacks-webapp-template/commit/18337369d7174cb6ea827545a1e084c791e62c13)) +* CRA (ejected) ([#131](https://github.com/amido/stacks-webapp-template/issues/131)) ([22be82c](https://github.com/amido/stacks-webapp-template/commit/22be82c8ae37be764cb2bf483a1eedb1e4b5fee3)) +* cypress with csr ([#159](https://github.com/amido/stacks-webapp-template/issues/159)) ([90e7281](https://github.com/amido/stacks-webapp-template/commit/90e7281f7e59152455811ffb00fb4d9789452a31)) +* delete menu after creation ([79a8936](https://github.com/amido/stacks-webapp-template/commit/79a8936edd49be2d914733e3f82052918ba800b8)) +* integrated with Contentful CMS ([#240](https://github.com/amido/stacks-webapp-template/issues/240)) ([a8cc522](https://github.com/amido/stacks-webapp-template/commit/a8cc5227dd108ecbb65931ee6a4bad33e6088e5c)) +* Lighthouse docker image and example ([#278](https://github.com/amido/stacks-webapp-template/issues/278)) ([2b69735](https://github.com/amido/stacks-webapp-template/commit/2b69735275cd8d8ed5ccae2bda0513324d8a53ee)) +* pact-config package ([#148](https://github.com/amido/stacks-webapp-template/issues/148)) ([4343f21](https://github.com/amido/stacks-webapp-template/commit/4343f21850a55ddb6966f4a6d093c80562b950eb)) +* Update Build Pipeline for AZD ([#384](https://github.com/amido/stacks-webapp-template/issues/384)) ([b2dd53b](https://github.com/amido/stacks-webapp-template/commit/b2dd53b3d4aea3eeadcab5b2c15dcde7f0e67320)) + + + +## 0.0.2 (2020-04-28) + + +### Bug Fixes + +* removed app Insights key from public ([#125](https://github.com/amido/stacks-webapp-template/issues/125)) ([bb16b1a](https://github.com/amido/stacks-webapp-template/commit/bb16b1a63d47618d82f94bb395e306e8bd792236)) + + +### Features + +* Search ([#119](https://github.com/amido/stacks-webapp-template/issues/119)) ([d4dbf04](https://github.com/amido/stacks-webapp-template/commit/d4dbf04cd4cbdd761de962f0c8388f02b6489497)) +* search helper text ([#124](https://github.com/amido/stacks-webapp-template/issues/124)) ([fa89290](https://github.com/amido/stacks-webapp-template/commit/fa89290a74062e7de46be859c3b2fda1b2eb475e)) +* search input throttled. ([#123](https://github.com/amido/stacks-webapp-template/issues/123)) ([86842b7](https://github.com/amido/stacks-webapp-template/commit/86842b7c5b885d3c140c47eea0ed3126e680cfa4)) + + + + + # [1.40.0](https://github.com/amido/stacks-webapp-template/compare/@amidostacks/scaffolding-cli@1.12.1...@amidostacks/scaffolding-cli@1.40.0) (2020-07-13) diff --git a/packages/scaffolding-cli/package-lock.json b/packages/scaffolding-cli/package-lock.json index bc4aa6669..bd3b2b933 100644 --- a/packages/scaffolding-cli/package-lock.json +++ b/packages/scaffolding-cli/package-lock.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/scaffolding-cli", - "version": "1.40.0", + "version": "1.41.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/scaffolding-cli/package.json b/packages/scaffolding-cli/package.json index 7f141c45b..c88161b95 100644 --- a/packages/scaffolding-cli/package.json +++ b/packages/scaffolding-cli/package.json @@ -1,6 +1,6 @@ { "name": "@amidostacks/scaffolding-cli", - "version": "1.40.0", + "version": "1.41.0", "description": "scaffolding-cli creates a scaffolded folder with deploy, build and src folders ready to be committed to a Git repo of your choosing", "bin": { "scaffolding-cli": "./dist/index.js", @@ -33,7 +33,7 @@ "yargs": "^15.3.1" }, "devDependencies": { - "@amidostacks/eslint-config": "^0.38.0", + "@amidostacks/eslint-config": "^0.39.0", "@types/concat-stream": "^1.6.0", "@types/fs-extra": "^9.0.1", "@types/jest": "^25.2.3", From c8e3e6a2df51df055dbae2034812b905076120e9 Mon Sep 17 00:00:00 2001 From: estherthetesteramido Date: Tue, 21 Jul 2020 18:18:40 +0100 Subject: [PATCH 8/8] fix: testcafe running with correct api with setup --- .../azure-pipeline-post-deploy-testcafe.yml | 2 +- .../templates/test/testcafe/README.md | 4 +-- .../templates/test/testcafe/api/menu.ts | 24 +++++++++++++++++ .../testcafe/fixtures/get-menu.test.cf.ts | 27 ++++++++++++++----- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-post-deploy-testcafe.yml b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-post-deploy-testcafe.yml index 3b0e7576c..f25eefd4d 100644 --- a/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-post-deploy-testcafe.yml +++ b/packages/scaffolding-cli/templates/build/azDevops/azure/azure-pipeline-post-deploy-testcafe.yml @@ -65,7 +65,7 @@ steps: parameters: env_vars: APP_BASE_URL: $(base_url) - MENU_API_URL: 'http://dev.amidostacks.com/api/menu' + MENU_API_URL: 'https://dev-netcore-api.nonprod.amidostacks.com/api/menu' APP_BASE_PATH: $(base_path) NODE_ENV: production working_directory: $(working_directory) diff --git a/packages/scaffolding-cli/templates/test/testcafe/README.md b/packages/scaffolding-cli/templates/test/testcafe/README.md index b59d0d1d5..15e138444 100644 --- a/packages/scaffolding-cli/templates/test/testcafe/README.md +++ b/packages/scaffolding-cli/templates/test/testcafe/README.md @@ -67,7 +67,7 @@ For Linux/Mac (replacing `export` with `set` for Windows): export NODE_ENV=development \ export PORT=3000 \ export APP_BASE_URL=http://localhost \ -export MENU_API_URL=https://dev.amidostacks.com/api/menu \ +export MENU_API_URL=https://dev-netcore-api.nonprod.amidostacks.com/api/menu \ export APP_BASE_PATH="" ``` @@ -77,7 +77,7 @@ Alternately, an example of your environment variable configuration for running a export NODE_ENV=production \ export APP_BASE_URL=https://dev-app.nonprod.amidostacks.com \ export APP_BASE_PATH=/web/stacks \ -export MENU_API_URL=https://dev.amidostacks.com/api/menu +export MENU_API_URL=https://dev-netcore-api.nonprod.amidostacks.com/api/menu ``` ## Running tests in Docker diff --git a/packages/scaffolding-cli/templates/test/testcafe/api/menu.ts b/packages/scaffolding-cli/templates/test/testcafe/api/menu.ts index d765a0827..071831404 100644 --- a/packages/scaffolding-cli/templates/test/testcafe/api/menu.ts +++ b/packages/scaffolding-cli/templates/test/testcafe/api/menu.ts @@ -30,3 +30,27 @@ export const deleteMenu = (menuId: string) => { .catch(() => reject(new Error())) }) } + +export const addMenu = (menuName: string) => { + const MENU_API_ENDPOINT = `${environmentVariables.MENU_API_URL}/${API_VERSION}/menu` + return new Promise((resolve, reject) => { + axios + .post(`${MENU_API_ENDPOINT}`, { + name: menuName, + description: "Testcafe beforeHook", + enabled: true, + tenantId: "d290f1ee-6c54-4b01-90e6-d701748f0851", + }) + .then(response => { + const {data, status} = response + if (status >= 200) { + console.log(`Successfully added menuName=${menuName} with status=${response.status}`) + resolve(data.id) + } else { + console.log(`Could not add menuName=${menuName}`) + reject(data) + } + }) + .catch(() => reject(new Error())) + }) +} diff --git a/packages/scaffolding-cli/templates/test/testcafe/fixtures/get-menu.test.cf.ts b/packages/scaffolding-cli/templates/test/testcafe/fixtures/get-menu.test.cf.ts index 2ad25de3a..4a0ef198c 100644 --- a/packages/scaffolding-cli/templates/test/testcafe/fixtures/get-menu.test.cf.ts +++ b/packages/scaffolding-cli/templates/test/testcafe/fixtures/get-menu.test.cf.ts @@ -12,7 +12,7 @@ test( testName, fn(t) ): */ import {Selector} from "testcafe" -import {deleteMenu} from "../api/menu" +import {deleteMenu, addMenu} from "../api/menu" import {getAppUrl} from "../environment-variables" const url = getAppUrl().APP_URL @@ -21,9 +21,23 @@ console.log(`Current url: ${url}`) fixture`home`.page`${url}` const menuList = Selector("[data-testid=results]") -test("Returns the Latest menus component", async t => { - await t.expect(menuList.innerText).contains("Breakfast Menu") -}) + +const testMenuName = "Automated Yumido Menu" + +test + .before(async (t: any) => { + t.ctx.menuId = await addMenu(testMenuName) + console.log(`Created menuId: ${t.ctx.menuId}`) + }) + ("Returns the Latest menus component", async t => { + await t + .expect(menuList.exists) + .ok() + }) + .after(async (t: any) => { + const response = await deleteMenu(t.ctx.menuId) + console.log(`deleteMenu response: ${response}`) + }) test("Create a new Yumido menu", async t => { const createMenu = Selector("[data-testid='create_button']") @@ -33,13 +47,12 @@ test("Create a new Yumido menu", async t => { const saveMenu = Selector(":nth-child(2) > .MuiButtonBase-root") const snackBarMessage = Selector("#snackbar-message-id").innerText - const testMenuName = "Automated Yumido Menu" - await t .expect(menuList.innerText) .notContains(testMenuName) .click(createMenu) - .expect(menuName.exists).ok() + .expect(menuName.exists) + .ok() .typeText(menuName, testMenuName) .typeText(menuDesc, "A delicous array of funky FE flavours") .click(menuActive)