From 2ae024bfe01f8a7e9c55917cd98e3f6f8c16e165 Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 31 Aug 2021 17:22:16 +0400 Subject: [PATCH 01/61] Set up CI with Azure Pipelines [skip ci] --- node-stage.yml | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 node-stage.yml diff --git a/node-stage.yml b/node-stage.yml new file mode 100644 index 0000000000..7a34f53e4d --- /dev/null +++ b/node-stage.yml @@ -0,0 +1,57 @@ + +# Node.js +# Build a general Node.js project with npm. +# Add steps that analyze code, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript + +trigger: +- stage + +pool: + vmImage: 'ubuntu-latest' + +steps: +- task: SonarCloudPrepare@1 + inputs: + SonarCloud: 'sonar cloud' + organization: 'vishalmishra84' + scannerMode: 'CLI' + configMode: 'manual' + cliProjectKey: 'vishalmishra84_nodejs-ex' + cliProjectName: 'nodejs-ex' + cliSources: '.' +- task: NodeTool@0 + inputs: + versionSpec: '10.x' + displayName: 'Install Node.js' + +- script: npm install + displayName: 'npm install' + +- script: npm test + displayName: 'unit test' +- task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Unit Test' + +- task: SonarCloudAnalyze@1 + +- task: SonarCloudPublish@1 + inputs: + pollingTimeoutSec: '300' + +- task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc project vishal-k-mishra-stage & oc start-build nodejs-ex --follow' + +- task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc status' From 83660a77cad34a96145c3a0c905ba4c5055f6861 Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 31 Aug 2021 17:28:48 +0400 Subject: [PATCH 02/61] Update node-stage.yml for Azure Pipelines --- node-stage.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/node-stage.yml b/node-stage.yml index 7a34f53e4d..4ba87b08d1 100644 --- a/node-stage.yml +++ b/node-stage.yml @@ -48,7 +48,12 @@ steps: inputs: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' - cmd: 'oc project vishal-k-mishra-stage & oc start-build nodejs-ex --follow' + cmd: 'oc project vishal-k-mishra-stage' +- task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc start-build nodejs-ex --follow' - task: oc-cmd@2 inputs: From ebcf6680081a3f7111f44a4d465deeb39973e54a Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 31 Aug 2021 17:34:08 +0400 Subject: [PATCH 03/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index f40c15fa04..d93cf3d44b 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

#1 New Node app is deployed on openshift

+

I am on Stage branch .New Node app is deployed on openshift

From 18f43c8c14d9bc92e5868d6c4798fe04157d5759 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 1 Sep 2021 13:05:06 +0400 Subject: [PATCH 04/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index d93cf3d44b..d52f5a78dd 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

I am on Stage branch .New Node app is deployed on openshift

+

Dara look this is new staging build .New Node app is deployed on openshift

From 9e6ed29c293e59b78cf822f095d9b2054dabae0f Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 1 Sep 2021 13:10:42 +0400 Subject: [PATCH 05/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index d52f5a78dd..c326964c9d 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

Dara look this is new staging build .New Node app is deployed on openshift

+

Dara look this is new staging build #2.New Node app is deployed on openshift

From 083fb0b0552569891129a6eddc0d033f862747e9 Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 2 Sep 2021 16:28:37 +0400 Subject: [PATCH 06/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index c326964c9d..1527e6b63b 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

Dara look this is new staging build #2.New Node app is deployed on openshift

+

Staging demo for Full Stack

From b608cabb5923fe81b6f46179ffa64ed5fe9699cd Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 2 Sep 2021 16:38:46 +0400 Subject: [PATCH 07/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 1527e6b63b..29f013e75d 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

Staging demo for Full Stack

+

Staging demo for Full Stack #

From 77875b93564e3fad0817de28e88984fbd8600d68 Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 2 Sep 2021 16:44:07 +0400 Subject: [PATCH 08/61] Update node-stage.yml for Azure Pipelines --- node-stage.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/node-stage.yml b/node-stage.yml index 4ba87b08d1..1da0bd4380 100644 --- a/node-stage.yml +++ b/node-stage.yml @@ -49,14 +49,18 @@ steps: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc project vishal-k-mishra-stage' + displayName: 'Switch to Stage' - task: oc-cmd@2 inputs: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc start-build nodejs-ex --follow' + displayName: 'Build and Deploy' - task: oc-cmd@2 inputs: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc status' + displayName: 'Deployed' + From 05e87d10a3e89740fc2a7c9275ffea438812f720 Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 7 Sep 2021 07:10:30 +0400 Subject: [PATCH 09/61] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4924454e0a..79bf72f35f 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ There are four methods to get started with OpenShift v3: - Running a virtual machine managed by minishift - Starting a Docker container - Downloading the binary - - Running an Ansible playbook + - Running an Ansible playbook #### Running a virtual machine with Vagrant From ba5400a9396ac366725601b782c8972a9dd3e030 Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 7 Sep 2021 07:14:12 +0400 Subject: [PATCH 10/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 29f013e75d..1f7cd03f60 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

Staging demo for Full Stack #

+

### Demo: Dev Branch QA ###

From dcc2e35439764c9413406543706fbcc8342dac4e Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 7 Sep 2021 09:05:55 +0400 Subject: [PATCH 11/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 1f7cd03f60..12feb676e7 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo: Dev Branch QA ###

+

### Demo #1: Dev Branch For Riaan###

From b4a204074a5068724c99947f8e26e36320d7b040 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 8 Sep 2021 11:29:25 +0400 Subject: [PATCH 12/61] Update azure-pipelines.yml --- azure-pipelines.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3babad60fb..c7daec6bbf 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -54,3 +54,13 @@ steps: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc status' + +- script: npm test + displayName: 'Functional test' +- task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Unit Test' From 133cbc2ad52e362e11fd2ee81a905bd86437ad2a Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 8 Sep 2021 11:30:14 +0400 Subject: [PATCH 13/61] Update azure-pipelines.yml --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c7daec6bbf..98da63b015 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -63,4 +63,4 @@ steps: testResultsFiles: 'junit.xml' mergeTestResults: true failTaskOnFailedTests: true - testRunTitle: 'Unit Test' + testRunTitle: 'Functional Test' From 5b8983bbab7d98471bf155a3995316c73b4e297d Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 8 Sep 2021 14:13:07 +0400 Subject: [PATCH 14/61] Updated the headline for Demo --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 12feb676e7..a0424f1c48 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #1: Dev Branch For Riaan###

+

### Demo #1: Dev Branch For Integration shift Left DevOps Testing Demo###

From 7eb2cf898cbc0862058e5d803a387657790b8013 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 12 Sep 2021 10:44:03 +0400 Subject: [PATCH 15/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index a0424f1c48..1fe4f4917c 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #1: Dev Branch For Integration shift Left DevOps Testing Demo###

+

### Demo #4: Dev Branch For BAB Best DevOps Team###

From f25f8b8c615b971f89859293c7540fdbdcd453cf Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 12 Sep 2021 14:24:46 +0400 Subject: [PATCH 16/61] Create node-dev-deploy1.yml --- node-dev-deploy1.yml | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 node-dev-deploy1.yml diff --git a/node-dev-deploy1.yml b/node-dev-deploy1.yml new file mode 100644 index 0000000000..3d62a794ed --- /dev/null +++ b/node-dev-deploy1.yml @@ -0,0 +1,83 @@ +trigger: +- dev + +pool: + vmImage: ubuntu-latest + +stages: +- stage: Tests + jobs: + - job: + displayName: 'Sonar Connection' + steps: + - task: SonarCloudPrepare@1 + inputs: + SonarCloud: 'sonar cloud' + organization: 'vishalmishra84' + scannerMode: 'CLI' + configMode: 'manual' + cliProjectKey: 'vishalmishra84_nodejs-ex' + cliProjectName: 'nodejs-ex' + cliSources: '.' + - task: NodeTool@0 + inputs: + versionSpec: '10.x' + displayName: 'Install Node.js' + - script: npm install + displayName: 'npm install' + - script: npm test + displayName: 'Run unit tests' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Unit Test' + - task: SonarCloudAnalyze@1 + + - task: SonarCloudPublish@1 + inputs: + pollingTimeoutSec: '300' + +- stage: Dev + dependsOn: + - Tests + jobs: + - deployment: + displayName: Dev deploy + environment: Dev + strategy: + runOnce: + deploy: + steps: + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc start-build nodejs-ex --follow' + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc status' + +- stage: FunctionalTest + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Functional Tests' + steps: + - script: npm install + displayName: 'Functional test' + - script: npm test + displayName: 'Functional test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Functional Test' From b4aa1b2bfe4200ab703a059245df47fc70af2ad2 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 12 Sep 2021 16:06:15 +0400 Subject: [PATCH 17/61] Update node-dev-deploy1.yml for Azure Pipelines --- node-dev-deploy1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-dev-deploy1.yml b/node-dev-deploy1.yml index 3d62a794ed..c7b10c75db 100644 --- a/node-dev-deploy1.yml +++ b/node-dev-deploy1.yml @@ -8,7 +8,7 @@ stages: - stage: Tests jobs: - job: - displayName: 'Sonar Connection' + displayName: 'Tests and Sonar Quality Gate' steps: - task: SonarCloudPrepare@1 inputs: From 8cde566c3a7fe49b4d24e9d8729300608084cff3 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 12 Sep 2021 16:11:58 +0400 Subject: [PATCH 18/61] Update node-dev-deploy1.yml for Azure Pipelines --- node-dev-deploy1.yml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/node-dev-deploy1.yml b/node-dev-deploy1.yml index c7b10c75db..58a3c18671 100644 --- a/node-dev-deploy1.yml +++ b/node-dev-deploy1.yml @@ -81,3 +81,41 @@ stages: mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' +- stage: LoadTests + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Load Tests' + steps: + - script: npm install + displayName: 'Load test' + - script: npm test + displayName: 'Load test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Load Test' +- stage: SecurityTests + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Security Tests' + steps: + - script: npm install + displayName: 'Security test' + - script: npm test + displayName: 'Security test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Security Test' From 3b9510029cbc41a94ebae3a57df76550d57b0838 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 12 Sep 2021 16:58:33 +0400 Subject: [PATCH 19/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 173 +++++++++++++++++++++++++++++--------------- 1 file changed, 114 insertions(+), 59 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 98da63b015..58a3c18671 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,66 +1,121 @@ - -# Node.js -# Build a general Node.js project with npm. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: +trigger: - dev pool: - vmImage: 'ubuntu-latest' - -steps: -- task: SonarCloudPrepare@1 - inputs: - SonarCloud: 'sonar cloud' - organization: 'vishalmishra84' - scannerMode: 'CLI' - configMode: 'manual' - cliProjectKey: 'vishalmishra84_nodejs-ex' - cliProjectName: 'nodejs-ex' - cliSources: '.' -- task: NodeTool@0 - inputs: - versionSpec: '10.x' - displayName: 'Install Node.js' - -- script: npm install - displayName: 'npm install' - -- script: npm test - displayName: 'unit test' -- task: PublishTestResults@2 - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: 'junit.xml' - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: 'Unit Test' + vmImage: ubuntu-latest -- task: SonarCloudAnalyze@1 +stages: +- stage: Tests + jobs: + - job: + displayName: 'Tests and Sonar Quality Gate' + steps: + - task: SonarCloudPrepare@1 + inputs: + SonarCloud: 'sonar cloud' + organization: 'vishalmishra84' + scannerMode: 'CLI' + configMode: 'manual' + cliProjectKey: 'vishalmishra84_nodejs-ex' + cliProjectName: 'nodejs-ex' + cliSources: '.' + - task: NodeTool@0 + inputs: + versionSpec: '10.x' + displayName: 'Install Node.js' + - script: npm install + displayName: 'npm install' + - script: npm test + displayName: 'Run unit tests' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Unit Test' + - task: SonarCloudAnalyze@1 -- task: SonarCloudPublish@1 - inputs: - pollingTimeoutSec: '300' -- task: oc-cmd@2 - inputs: - connectionType: 'OpenShift Connection Service' - openshiftService: 'Openshift' - cmd: 'oc start-build nodejs-ex --follow' + - task: SonarCloudPublish@1 + inputs: + pollingTimeoutSec: '300' -- task: oc-cmd@2 - inputs: - connectionType: 'OpenShift Connection Service' - openshiftService: 'Openshift' - cmd: 'oc status' +- stage: Dev + dependsOn: + - Tests + jobs: + - deployment: + displayName: Dev deploy + environment: Dev + strategy: + runOnce: + deploy: + steps: + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc start-build nodejs-ex --follow' + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc status' -- script: npm test - displayName: 'Functional test' -- task: PublishTestResults@2 - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: 'junit.xml' - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: 'Functional Test' +- stage: FunctionalTest + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Functional Tests' + steps: + - script: npm install + displayName: 'Functional test' + - script: npm test + displayName: 'Functional test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Functional Test' +- stage: LoadTests + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Load Tests' + steps: + - script: npm install + displayName: 'Load test' + - script: npm test + displayName: 'Load test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Load Test' +- stage: SecurityTests + dependsOn: + - Tests + - Dev + jobs: + - job: + displayName: 'Security Tests' + steps: + - script: npm install + displayName: 'Security test' + - script: npm test + displayName: 'Security test' + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: 'junit.xml' + mergeTestResults: true + failTaskOnFailedTests: true + testRunTitle: 'Security Test' From a555b88f79f3aaba1d1fa0eef4a895c3fa1dba8a Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 14:32:33 +0400 Subject: [PATCH 20/61] Update README.md --- README.md | 253 +----------------------------------------------------- 1 file changed, 3 insertions(+), 250 deletions(-) diff --git a/README.md b/README.md index 79bf72f35f..2b17bdd116 100644 --- a/README.md +++ b/README.md @@ -1,253 +1,6 @@ +[![Build Status](https://dev.azure.com/vishalmishra84/devops_project_node/_apis/build/status/node-dev?branchName=dev)](https://dev.azure.com/vishalmishra84/devops_project_node/_build/latest?definitionId=9&branchName=dev) +Demo App for CI CD Demo - +![image](https://user-images.githubusercontent.com/1488416/133068919-a8fe3ffd-4c9c-4b4c-ad8b-2a597f0ee47b.png) -- [Node.js sample app on OpenShift!](#nodejs-sample-app-on-openshift) - * [OpenShift Origin v3 setup](#openshift-origin-v3-setup) - + [Running a virtual machine with Vagrant](#running-a-virtual-machine-with-vagrant) - + [Running a virtual machine managed by minishift](#running-a-virtual-machine-managed-by-minishift) - + [Starting a Docker container](#starting-a-docker-container) - + [Downloading the Binary](#downloading-the-binary) - + [Running an Ansible playbook](#running-an-ansible-playbook) - * [Creating a project](#creating-a-project) - * [Creating new apps](#creating-new-apps) - + [Create a new app from source code (method 1)](#create-a-new-app-from-source-code-method-1) - + [Create a new app from a template (method 2)](#create-a-new-app-from-a-template-method-2) - + [Build the app](#build-the-app) - + [Deploy the app](#deploy-the-app) - + [Configure routing](#configure-routing) - + [Create a new app from an image (method 3)](#create-a-new-app-from-an-image-method-3) - + [Setting environment variables](#setting-environment-variables) - + [Success](#success) - + [Pushing updates](#pushing-updates) - * [Debugging](#debugging) - * [Web UI](#web-ui) - * [Looking for help](#looking-for-help) - * [Compatibility](#compatibility) - * [License](#license) - - - -## Node.js sample app on OpenShift! ------------------ - -This example will serve a welcome page and the current hit count as stored in a database. - -### OpenShift Origin v3 setup - -There are four methods to get started with OpenShift v3: - - - Running a virtual machine with Vagrant - - Running a virtual machine managed by minishift - - Starting a Docker container - - Downloading the binary - - Running an Ansible playbook - -#### Running a virtual machine with Vagrant - -One option is to use the Vagrant all-in-one launch as described in the [OpenShift Origin All-In-One Virtual Machine](https://www.okd.io/vm/). This option works on Mac, Windows and Linux, but requires that you install [Vagrant](https://www.vagrantup.com/downloads.html) running [VirtualBox](https://www.virtualbox.org/wiki/Downloads). - -#### Running a virtual machine managed by minishift - -Another option to run virtual machine but not having to using Vagrant is to download and use the `minishift` binary as described in its [getting started](https://github.com/minishift/minishift/#getting-started) section. `minishift` can be used to spin up a VM on any of Windows, Linux or Mac with the help of supported underlying virtualization technologies like KVM, xhyve, Hyper-V, VirtualBox. - -#### Starting a Docker container - -Another option is running the OpenShift Origin Docker container image from [Docker Hub](https://hub.docker.com/r/openshift/origin/) launch as described in the [Getting Started for Administrators](https://docs.okd.io/latest/getting_started/administrators.html#running-in-a-docker-container). This method is supported on Fedora, CentOS, and Red Hat Enterprise Linux (RHEL) hosts only. - -#### Downloading the Binary - -Red Hat periodically publishes OpenShift Origin Server binaries for Linux, which you can download on the OpenShift Origin GitHub [Release](https://github.com/openshift/origin/releases) page. Instructions on how to install and launch the Openshift Origin Server from binary are described in [Getting Started for Administrators](https://docs.okd.io/latest/getting_started/administrators.html#downloading-the-binary). - -#### Running an Ansible playbook - -Outlined as the [Advanced Installation](https://docs.okd.io/latest/install_config/install/advanced_install.html) method for poduction environments, OpenShift Origin is also installable via Ansible playbook made avaialble on the GitHub [openshift-ansible](https://github.com/openshift/openshift-ansible) repo. - - -### Creating a project - -After logging in with `oc login` (default username/password: openshift), if you don't have a project setup all ready, go ahead and take care of that: - - $ oc new-project nodejs-echo \ - --display-name="nodejs" --description="Sample Node.js app" - -That's it, project has been created. Though it would probably be good to set your current project to this (thought new-project does it automatically as well), such as: - - $ oc project nodejs-echo - -### Creating new apps - -You can create a new OpenShift application using the web console or by running the `oc new-app` command from the CLI. With the OpenShift CLI there are three ways to create a new application, by specifying either: - -- [source code](https://docs.openshift.com/enterprise/3.0/dev_guide/new_app.html#specifying-source-code) -- [OpenShift templates](https://docs.openshift.com/enterprise/3.0/dev_guide/new_app.html#specifying-a-template) -- [DockerHub images](https://docs.openshift.com/enterprise/3.0/dev_guide/new_app.html#specifying-an-image) - -#### Create a new app from source code (method 1) - -Pointing `oc new-app` at source code kicks off a chain of events, for our example run: - - $ oc new-app https://github.com/sclorg/nodejs-ex -l name=myapp - -The tool will inspect the source code, locate an appropriate image on DockerHub, create an ImageStream for that image, and then create the right build configuration, deployment configuration and service definition. - -(The -l flag will apply a label of "name=myapp" to all the resources created by new-app, for easy management later.) - -#### Create a new app from a template (method 2) - -We can also [create new apps using OpenShift template files](https://docs.openshift.com/enterprise/3.0/dev_guide/new_app.html#specifying-a-template). Clone the demo app source code from [GitHub repo](https://github.com/sclorg/nodejs-ex) (fork if you like). - - $ git clone https://github.com/sclorg/nodejs-ex - -Looking at the repo, you'll notice three files in the openshift/template directory: - - nodejs-ex - ├── openshift - │   └── templates - │   ├── nodejs.json - │   ├── nodejs-mongodb.json - │   └── nodejs-mongodb-persistent.json - ├── package.json - ├── README.md - ├── server.js - ├── tests - │   └── app_test.js - └── views - └── index.html - -We can create the the new app from the `nodejs.json` template by using the `-f` flag and pointing the tool at a path to the template file: - - $ oc new-app -f /path/to/nodejs.json - -#### Build the app - -`oc new-app` will kick off a build once all required dependencies are confirmed. - -Check the status of your new nodejs app with the command: - - $ oc status - -Which should return something like: - - In project nodejs (nodejs-echo) on server https://10.2.2.2:8443 - - svc/nodejs-ex - 172.30.108.183:8080 - dc/nodejs-ex deploys istag/nodejs-ex:latest <- - bc/nodejs-ex builds https://github.com/sclorg/nodejs-ex with openshift/nodejs:0.10 - build #1 running for 7 seconds - deployment #1 waiting on image or update - -Note the server address for the web console, as yours will likely differ if you're not using the Vagrant set-up. You can follow along with the web console to see what new resources have been created and watch the progress of builds and deployments. - -If the build is not yet started (you can check by running `oc get builds`), start one and stream the logs with: - - $ oc start-build nodejs-ex --follow - -You can alternatively leave off `--follow` and use `oc logs build/nodejs-ex-n` where *n* is the number of the build to track the output of the build. - -#### Deploy the app - -Deployment happens automatically once the new application image is available. To monitor its status either watch the web console or execute `oc get pods` to see when the pod is up. Another helpful command is - - $ oc get svc - -This will help indicate what IP address the service is running, the default port for it to deploy at is 8080. Output should look like: - - NAME CLUSTER-IP EXTERNAL-IP PORT(S) SELECTOR AGE - nodejs-ex 172.30.249.251 8080/TCP deploymentconfig=nodejs-ex,name=myapp 17m - -#### Configure routing - -An OpenShift route exposes a service at a host name, like www.example.com, so that external clients can reach it by name. - -DNS resolution for a host name is handled separately from routing; you may wish to configure a cloud domain that will always correctly resolve to the OpenShift router, or if using an unrelated host name you may need to modify its DNS records independently to resolve to the router. - -That aside, let's explore our new web console, which for our example is running at [https://10.2.2.2:8443](https://10.2.2.2:8443). - -After logging into the web console with your same CLI `oc login` credentials, click on the project we just created, then click `Create route`. - -If you're running OpenShift on a local machine, you can preview the new app by setting the Hostname to a localhost like: *10.2.2.2*. - -This could also be accomplished by running: - - $ oc expose svc/nodejs-ex --hostname=www.example.com - -Now navigate to the newly created Node.js web app at the hostname we just configured, for our example it was simply [https://10.2.2.2](https://10.2.2.2). - -#### Create a new app from an image (method 3) - -You may have noticed the index page "Page view count" reads "No database configured". Let's fix that by adding a MongoDB service. We could use the second OpenShift template example (`nodejs-mongodb.json`) but for the sake of demonstration let's point `oc new-app` at a DockerHub image: - - $ oc new-app centos/mongodb-26-centos7 \ - -e MONGODB_USER=admin,MONGODB_DATABASE=mongo_db,MONGODB_PASSWORD=secret,MONGODB_ADMIN_PASSWORD=super-secret - -The `-e` flag sets the environment variables we want used in the configuration of our new app. - -Running `oc status` or checking the web console will reveal the address of the newly created MongoDB: - - In project nodejs-echo on server https://10.2.2.2:8443 - - svc/mongodb-26-centos7 - 172.30.0.112:27017 - dc/mongodb-26-centos7 deploys istag/mongodb-26-centos7:latest - deployment #1 running for 43 seconds - 1 pod - - http://10.2.2.2 to pod port 8080-tcp (svc/nodejs-ex) - dc/nodejs-ex deploys istag/nodejs-ex:latest <- - bc/nodejs-ex builds https://github.com/sclorg/nodejs-ex with openshift/nodejs:0.10 - deployment #1 deployed 14 minutes ago - 1 pod - -Note that the url for our new Mongo instance, for our example, is `172.30.0.112:27017`, yours will likely differ. - -#### Setting environment variables - -To take a look at environment variables set for each pod, run `oc env pods --all --list`. - -We need to add the environment variable `MONGO_URL` to our Node.js web app so that it will utilize our MongoDB, and enable the "Page view count" feature. Run: - - $ oc set env dc/nodejs-ex MONGO_URL='mongodb://admin:secret@172.30.0.112:27017/mongo_db' - -Then check `oc status` to see that an updated deployment has been kicked off: - - In project nodejs-echo on server https://10.2.2.2:8443 - - svc/mongodb-26-centos7 - 172.30.0.112:27017 - dc/mongodb-26-centos7 deploys istag/mongodb-26-centos7:latest - deployment #1 deployed 2 hours ago - 1 pod - - http://10.2.2.2 to pod port 8080-tcp (svc/nodejs-ex) - dc/nodejs-ex deploys istag/nodejs-ex:latest <- - bc/nodejs-ex builds https://github.com/sclorg/nodejs-ex with openshift/nodejs:0.10 - deployment #2 deployed about a minute ago - 1 pod - deployment #1 deployed 2 hours ago - -#### Success - -You should now have a Node.js welcome page showing the current hit count, as stored in a MongoDB database. - -#### Pushing updates - -Assuming you used the URL of your own forked repository, we can easily push changes and simply repeat the steps above which will trigger the newly built image to be deployed. - -### Debugging - -Review some of the common tips and suggestions [here](https://github.com/openshift/origin/blob/master/docs/debugging-openshift.md). - -### Web UI - -To run this example from the Web UI, you can same steps following done on the CLI as defined above. Here's a video showing it in motion: - - - - -### Looking for help - -If you get stuck at some point, or think that this document needs further details or clarification, you can give feedback and look for help using the channels mentioned in [the OpenShift Origin repo](https://github.com/openshift/origin), or by filing an issue. - -### Compatibility - -This repository is compatible with Node.js 4 and higher, excluding any alpha or beta versions. - -### License - -This code is dedicated to the public domain to the maximum extent permitted by applicable law, pursuant to [CC0](http://creativecommons.org/publicdomain/zero/1.0/). From b98bff559c2fcb9ea5163523f7de62823cb8595c Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 15:22:19 +0400 Subject: [PATCH 21/61] Updated the message --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 1fe4f4917c..e0fa079f11 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #4: Dev Branch For BAB Best DevOps Team###

+

### Demo #4: Dev Branch For Github Dev###

From 0188bf4a8162c5231da7b93705dc0fc3fb382992 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 15:39:19 +0400 Subject: [PATCH 22/61] Updated the View --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index e0fa079f11..142f8dda10 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #4: Dev Branch For Github Dev###

+

### Demo #6: Dev Branch For DevOps Team ###

From 8aa5d5816066449d26be9fab747efc3e7be77d5e Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 16:52:15 +0400 Subject: [PATCH 23/61] Create Dockerfile --- Dockerfile | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..1e1aeba5a9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM node:14 + +# Create app directory +WORKDIR /usr/src/app + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY package*.json ./ + +RUN npm install +# If you are building your code for production +# RUN npm ci --only=production + +# Bundle app source +COPY . . + +EXPOSE 8080 +CMD [ "node", "server.js" ] From 2139be1d832be6406cc3197f8a0533e19dd51d5a Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 17:09:51 +0400 Subject: [PATCH 24/61] Create .dockerignore --- .dockerignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..48b49d6139 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log +junit.xml From 20b121f4c91b25b71385714e542b3c1e32a3d541 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 13 Sep 2021 17:42:49 +0400 Subject: [PATCH 25/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 142f8dda10..168d0a0f30 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #6: Dev Branch For DevOps Team ###

+

### Demo #8: Dev Branch For Quality Gates ###

From 2632b10f0f583800c2ed807d61dfee3e29e33e85 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 09:36:13 +0400 Subject: [PATCH 26/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 58a3c18671..26ca11616c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -89,17 +89,11 @@ stages: - job: displayName: 'Load Tests' steps: - - script: npm install - displayName: 'Load test' - - script: npm test + - script: | + git checkout https://github.com/vishalm/locust_101.git + pip install locust + locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com displayName: 'Load test' - - task: PublishTestResults@2 - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: 'junit.xml' - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: 'Load Test' - stage: SecurityTests dependsOn: - Tests From 330259af9c321f739a6c0ed19232985f2986bb71 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 09:43:13 +0400 Subject: [PATCH 27/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 26ca11616c..7d9f12448c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -90,7 +90,7 @@ stages: displayName: 'Load Tests' steps: - script: | - git checkout https://github.com/vishalm/locust_101.git + git clone https://github.com/vishalm/locust_101.git pip install locust locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com displayName: 'Load test' From 4a376256ba0ff6b75a8a506587cbaa9db2a59eba Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 09:48:14 +0400 Subject: [PATCH 28/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7d9f12448c..b9c1ae577f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -91,6 +91,7 @@ stages: steps: - script: | git clone https://github.com/vishalm/locust_101.git + cd locust_101 pip install locust locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com displayName: 'Load test' From 1665a92ccc0549b9485284b12ff605cf3ac14397 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 09:58:30 +0400 Subject: [PATCH 29/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b9c1ae577f..a0ddb78f54 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -93,7 +93,7 @@ stages: git clone https://github.com/vishalm/locust_101.git cd locust_101 pip install locust - locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com + exit 0 || locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com displayName: 'Load test' - stage: SecurityTests dependsOn: From 5cc222d7e8f627b42f077d9a92fe53011b7b75ea Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 10:04:42 +0400 Subject: [PATCH 30/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a0ddb78f54..935cdf7bc8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -93,7 +93,7 @@ stages: git clone https://github.com/vishalm/locust_101.git cd locust_101 pip install locust - exit 0 || locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com + locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests dependsOn: From 2fb3e7f834ab2f3d8586e3a6c1e030f7430e7f59 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 10:27:53 +0400 Subject: [PATCH 31/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 935cdf7bc8..30c62ce3e0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -93,7 +93,7 @@ stages: git clone https://github.com/vishalm/locust_101.git cd locust_101 pip install locust - locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 + locust -f locustfile.py --headless -u 500 -r 10 --run-time 10m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests dependsOn: From 7fa6b4f34b69823bd012dc0869721e308371b1d1 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 15 Sep 2021 10:53:13 +0400 Subject: [PATCH 32/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 30c62ce3e0..e8e213c319 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -93,6 +93,7 @@ stages: git clone https://github.com/vishalm/locust_101.git cd locust_101 pip install locust + sleep 2m locust -f locustfile.py --headless -u 500 -r 10 --run-time 10m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests From 1d9b9c895668819369c48b0b6dfc5b8758406586 Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 16 Sep 2021 12:17:31 +0400 Subject: [PATCH 33/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e8e213c319..efc9c580a5 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -94,7 +94,7 @@ stages: cd locust_101 pip install locust sleep 2m - locust -f locustfile.py --headless -u 500 -r 10 --run-time 10m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 + locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests dependsOn: From 381320514b7b2134f9cbf00c5d9035e57d7d3993 Mon Sep 17 00:00:00 2001 From: Vishal Date: Thu, 16 Sep 2021 12:38:01 +0400 Subject: [PATCH 34/61] Update index.html Updated the message and added new feature --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 168d0a0f30..473c2445f1 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #8: Dev Branch For Quality Gates ###

+

### Demo #9: Dev Branch For E2E DevOps and Test Automation Pipeline PoC ###

From 4fa821a13a11d5bc7cdc0519a5fa2972136ed150 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 12:46:08 +0400 Subject: [PATCH 35/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 65 +++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index efc9c580a5..2c8efed83c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -40,32 +40,32 @@ stages: inputs: pollingTimeoutSec: '300' -- stage: Dev - dependsOn: - - Tests - jobs: - - deployment: - displayName: Dev deploy - environment: Dev - strategy: - runOnce: - deploy: - steps: - - task: oc-cmd@2 - inputs: - connectionType: 'OpenShift Connection Service' - openshiftService: 'Openshift' - cmd: 'oc start-build nodejs-ex --follow' - - task: oc-cmd@2 - inputs: - connectionType: 'OpenShift Connection Service' - openshiftService: 'Openshift' - cmd: 'oc status' +# - stage: Dev +# dependsOn: +# - Tests +# jobs: +# - deployment: +# displayName: Dev deploy +# environment: Dev +# strategy: +# runOnce: +# deploy: +# steps: +# - task: oc-cmd@2 +# inputs: +# connectionType: 'OpenShift Connection Service' +# openshiftService: 'Openshift' +# cmd: 'oc start-build nodejs-ex --follow' +# - task: oc-cmd@2 +# inputs: +# connectionType: 'OpenShift Connection Service' +# openshiftService: 'Openshift' +# cmd: 'oc status' - stage: FunctionalTest dependsOn: - Tests - - Dev + # - Dev jobs: - job: displayName: 'Functional Tests' @@ -84,7 +84,7 @@ stages: - stage: LoadTests dependsOn: - Tests - - Dev + # - Dev jobs: - job: displayName: 'Load Tests' @@ -99,19 +99,16 @@ stages: - stage: SecurityTests dependsOn: - Tests - - Dev + # - Dev jobs: - job: displayName: 'Security Tests' steps: - - script: npm install - displayName: 'Security test' - - script: npm test - displayName: 'Security test' - - task: PublishTestResults@2 + - task: SnykSecurityScan@1 inputs: - testResultsFormat: 'JUnit' - testResultsFiles: 'junit.xml' - mergeTestResults: true - failTaskOnFailedTests: true - testRunTitle: 'Security Test' + serviceConnectionEndpoint: 'snykconn' + testType: 'app' + targetFile: 'junit.xml' + monitorWhen: 'always' + failOnIssues: false + organization: '6bec4270-e52e-49b3-b8a7-a8da7c997960' \ No newline at end of file From dcdbc39f0d93c6b090e14fac985bbbb02d1c4f03 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 13:00:16 +0400 Subject: [PATCH 36/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2c8efed83c..d17c9a74df 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -90,11 +90,11 @@ stages: displayName: 'Load Tests' steps: - script: | - git clone https://github.com/vishalm/locust_101.git - cd locust_101 - pip install locust - sleep 2m - locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 + # git clone https://github.com/vishalm/locust_101.git + # cd locust_101 + # pip install locust + # sleep 2m + # locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests dependsOn: @@ -104,6 +104,9 @@ stages: - job: displayName: 'Security Tests' steps: + - script: | + npm install + npm test - task: SnykSecurityScan@1 inputs: serviceConnectionEndpoint: 'snykconn' From e105d6c3ec9f295790b049a7cd2a2e4631b1df47 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 13:04:26 +0400 Subject: [PATCH 37/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d17c9a74df..dc6b79beba 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -111,7 +111,6 @@ stages: inputs: serviceConnectionEndpoint: 'snykconn' testType: 'app' - targetFile: 'junit.xml' monitorWhen: 'always' failOnIssues: false organization: '6bec4270-e52e-49b3-b8a7-a8da7c997960' \ No newline at end of file From b8a510cc7427d824d5c6af42118531f518827d7b Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 13:10:24 +0400 Subject: [PATCH 38/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index dc6b79beba..7f5e2441fd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -113,4 +113,4 @@ stages: testType: 'app' monitorWhen: 'always' failOnIssues: false - organization: '6bec4270-e52e-49b3-b8a7-a8da7c997960' \ No newline at end of file + organization: 'vishalm' \ No newline at end of file From f858ea6ac9fda7eb45e1f6c9f154c604db36299a Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 13:15:52 +0400 Subject: [PATCH 39/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 58 ++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7f5e2441fd..2351c07803 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -40,32 +40,32 @@ stages: inputs: pollingTimeoutSec: '300' -# - stage: Dev -# dependsOn: -# - Tests -# jobs: -# - deployment: -# displayName: Dev deploy -# environment: Dev -# strategy: -# runOnce: -# deploy: -# steps: -# - task: oc-cmd@2 -# inputs: -# connectionType: 'OpenShift Connection Service' -# openshiftService: 'Openshift' -# cmd: 'oc start-build nodejs-ex --follow' -# - task: oc-cmd@2 -# inputs: -# connectionType: 'OpenShift Connection Service' -# openshiftService: 'Openshift' -# cmd: 'oc status' +- stage: Dev + dependsOn: + - Tests + jobs: + - deployment: + displayName: Dev deploy + environment: Dev + strategy: + runOnce: + deploy: + steps: + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc start-build nodejs-ex --follow' + - task: oc-cmd@2 + inputs: + connectionType: 'OpenShift Connection Service' + openshiftService: 'Openshift' + cmd: 'oc status' - stage: FunctionalTest dependsOn: - Tests - # - Dev + - Dev jobs: - job: displayName: 'Functional Tests' @@ -84,22 +84,22 @@ stages: - stage: LoadTests dependsOn: - Tests - # - Dev + - Dev jobs: - job: displayName: 'Load Tests' steps: - script: | - # git clone https://github.com/vishalm/locust_101.git - # cd locust_101 - # pip install locust - # sleep 2m - # locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 + git clone https://github.com/vishalm/locust_101.git + cd locust_101 + pip install locust + sleep 2m + locust -f locustfile.py --headless -u 500 -r 10 --run-time 5m --host=http://nodejs-ex-vishal-k-mishra-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com || exit 0 displayName: 'Load test' - stage: SecurityTests dependsOn: - Tests - # - Dev + - Dev jobs: - job: displayName: 'Security Tests' From 8ddfaeed8bc2d024f878916c434cbb77afa260d1 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 18:21:47 +0400 Subject: [PATCH 40/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2351c07803..9f4e6eba61 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -70,14 +70,18 @@ stages: - job: displayName: 'Functional Tests' steps: - - script: npm install + - script: | + docker run -d -p 4444:4444 selenium/standalone-chrome -d + git clone https://github.com/vishalm/mocha-wdio-demo.git + npm install + npm run test.azd displayName: 'Functional test' - script: npm test displayName: 'Functional test' - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' - testResultsFiles: 'junit.xml' + testResultsFiles: '*-results.xml' mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' From bf81cec831737d64b3d12758f3fb15f3b5a1c417 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 18:32:57 +0400 Subject: [PATCH 41/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9f4e6eba61..e4e8908bb1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -71,7 +71,7 @@ stages: displayName: 'Functional Tests' steps: - script: | - docker run -d -p 4444:4444 selenium/standalone-chrome -d + docker run -d -p 4444:4444 selenium/standalone-chrome git clone https://github.com/vishalm/mocha-wdio-demo.git npm install npm run test.azd From f2698a8a2c7e4c4012a86f12cf51a4b85ea02799 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 18:33:21 +0400 Subject: [PATCH 42/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e4e8908bb1..c7d9f3fecd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -73,6 +73,7 @@ stages: - script: | docker run -d -p 4444:4444 selenium/standalone-chrome git clone https://github.com/vishalm/mocha-wdio-demo.git + cd mocha-wdio-demo npm install npm run test.azd displayName: 'Functional test' From 9696cc69f22ab8e90c70ae13ba654f9d9700b254 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 20:06:15 +0400 Subject: [PATCH 43/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c7d9f3fecd..e4a0261b5a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -76,13 +76,12 @@ stages: cd mocha-wdio-demo npm install npm run test.azd - displayName: 'Functional test' - - script: npm test - displayName: 'Functional test' + displayName: 'UI Functional test' + - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' - testResultsFiles: '*-results.xml' + testResultsFiles: '*.xml' mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' From ec6cf4d24c4c65496d17546c9e3498ee459db6fe Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 20:12:06 +0400 Subject: [PATCH 44/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e4a0261b5a..caad13aa91 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -81,7 +81,7 @@ stages: - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' - testResultsFiles: '*.xml' + testResultsFiles: 'mocha-wdio-demo/*.xml' mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' From 972c949e2bad64392f8f8476b691d765619ed7c1 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 20:19:41 +0400 Subject: [PATCH 45/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index caad13aa91..18c6c04453 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -81,7 +81,7 @@ stages: - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' - testResultsFiles: 'mocha-wdio-demo/*.xml' + testResultsFiles: 'mocha-wdio-demo/report/junit/*.xml' mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' From dd8dff7f027b5c1716a785c35f3ca951b4b5edc9 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 20:35:35 +0400 Subject: [PATCH 46/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 18c6c04453..5ac84b0253 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -85,6 +85,10 @@ stages: mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional Test' + - task: AllureGenerate@1 + inputs: + resultsDir: 'allure-results' + targetDir: 'mocha-wdio-demo/report/allure-results/$(Build.BuildNumber)' - stage: LoadTests dependsOn: - Tests From 9fc17d7fbb80f3d3e6d1488971cfc04904e70878 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 20:36:49 +0400 Subject: [PATCH 47/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5ac84b0253..beb96cdcb6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -62,13 +62,13 @@ stages: openshiftService: 'Openshift' cmd: 'oc status' -- stage: FunctionalTest +- stage: FunctionalUITest dependsOn: - Tests - Dev jobs: - job: - displayName: 'Functional Tests' + displayName: 'Functional UI Tests' steps: - script: | docker run -d -p 4444:4444 selenium/standalone-chrome @@ -76,7 +76,7 @@ stages: cd mocha-wdio-demo npm install npm run test.azd - displayName: 'UI Functional test' + displayName: 'Functional UI test' - task: PublishTestResults@2 inputs: @@ -84,11 +84,12 @@ stages: testResultsFiles: 'mocha-wdio-demo/report/junit/*.xml' mergeTestResults: true failTaskOnFailedTests: true - testRunTitle: 'Functional Test' + testRunTitle: 'Functional UI Test' - task: AllureGenerate@1 inputs: resultsDir: 'allure-results' targetDir: 'mocha-wdio-demo/report/allure-results/$(Build.BuildNumber)' + displayName: 'Allure Report UI Test' - stage: LoadTests dependsOn: - Tests From 17922d376576d6cca29d544feb36588a6b4ac267 Mon Sep 17 00:00:00 2001 From: Vishal Date: Mon, 20 Sep 2021 21:06:16 +0400 Subject: [PATCH 48/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index beb96cdcb6..70763e8d17 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -85,11 +85,6 @@ stages: mergeTestResults: true failTaskOnFailedTests: true testRunTitle: 'Functional UI Test' - - task: AllureGenerate@1 - inputs: - resultsDir: 'allure-results' - targetDir: 'mocha-wdio-demo/report/allure-results/$(Build.BuildNumber)' - displayName: 'Allure Report UI Test' - stage: LoadTests dependsOn: - Tests From 49785bf91663e8ce8e567945d92c698b3f4b5532 Mon Sep 17 00:00:00 2001 From: Vishal Date: Tue, 21 Sep 2021 15:13:34 +0400 Subject: [PATCH 49/61] Update index.html --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index 473c2445f1..ade6276078 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #9: Dev Branch For E2E DevOps and Test Automation Pipeline PoC ###

+

### Demo #10: Dev Branch For Openshift Azuredevops Demo ###

From f906f0f8b68e554b766dbf0a1c958b0e04a3e639 Mon Sep 17 00:00:00 2001 From: Vishal Mishra Date: Sat, 25 Sep 2021 14:11:29 +0400 Subject: [PATCH 50/61] Added new service --- .dockerignore | 5 +- .gitignore | 5 +- Dockerfile | 19 - package-lock.json | 2187 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + server.js | 21 + tests/app_test.js | 8 + 7 files changed, 2225 insertions(+), 21 deletions(-) delete mode 100644 Dockerfile create mode 100644 package-lock.json diff --git a/.dockerignore b/.dockerignore index 48b49d6139..dcb5d5ebea 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,6 @@ -node_modules npm-debug.log +node_modules/ junit.xml +.nyc_output/ +.vscode/ +coverage/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index decad46c16..dcb5d5ebea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ npm-debug.log node_modules/ -junit.xml \ No newline at end of file +junit.xml +.nyc_output/ +.vscode/ +coverage/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1e1aeba5a9..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM node:14 - -# Create app directory -WORKDIR /usr/src/app - -# Install app dependencies -# A wildcard is used to ensure both package.json AND package-lock.json are copied -# where available (npm@5+) -COPY package*.json ./ - -RUN npm install -# If you are building your code for production -# RUN npm ci --only=production - -# Bundle app source -COPY . . - -EXPOSE 8080 -CMD [ "node", "server.js" ] diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..6335a21c6e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2187 @@ +{ + "name": "nodejs-ex", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", + "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", + "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "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==" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", + "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", + "requires": { + "caniuse-lite": "^1.0.30001259", + "electron-to-chromium": "^1.3.846", + "escalade": "^3.1.1", + "nanocolors": "^0.1.5", + "node-releases": "^1.1.76" + } + }, + "bson": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", + "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-lite": { + "version": "1.0.30001260", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz", + "integrity": "sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==", + "requires": { + "nanocolors": "^0.1.0" + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "requires": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + } + }, + "chai-http": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-2.0.1.tgz", + "integrity": "sha1-W2e/nmezEOlkAb9Go/FlEwCXbXQ=", + "requires": { + "cookiejar": "2.0.x", + "is-ip": "1.0.0", + "methods": "0.0.x", + "qs": "2.0.x", + "superagent": "1.2.x" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "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==", + "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=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.6.tgz", + "integrity": "sha1-Cr81atANHFohnYjURRgEbdAmrP4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + } + } + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "requires": { + "strip-bom": "^4.0.0" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "electron-to-chromium": { + "version": "1.3.850", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.850.tgz", + "integrity": "sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA==" + }, + "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==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "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": { + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", + "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" + } + }, + "formidable": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz", + "integrity": "sha1-Kz9MQRy7X91pXESEPiojUUpDIxo=" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "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==", + "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=" + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" + }, + "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==" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-ip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-1.0.0.tgz", + "integrity": "sha1-K7aVn3l8zW+f3IEnWLy8h8TFkHQ=", + "requires": { + "ip-regex": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "istanbul-lib-coverage": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz", + "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==" + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz", + "integrity": "sha1-J3yQ+L7zlwlkWoNxxRw7bGSOBow=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "requires": { + "mime-db": "~1.12.0" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "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" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "mocha-junit-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.0.tgz", + "integrity": "sha512-20HoWh2HEfhqmigfXOKUhZQyX23JImskc37ZOhIjBKoBEsb+4cAFRJpAVhFpnvsztLklW/gFVzsrobjLwmX4lA==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "md5": "^2.1.0", + "mkdirp": "~0.5.1", + "strip-ansi": "^4.0.0", + "xml": "^1.0.0" + } + }, + "mongodb": { + "version": "2.2.36", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.36.tgz", + "integrity": "sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA==", + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.20", + "readable-stream": "2.2.7" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "mongodb-core": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz", + "integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==", + "requires": { + "bson": "~1.0.4", + "require_optional": "~1.0.0" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nanocolors": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "1.1.76", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", + "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" + }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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=" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "requires": { + "fromentries": "^1.2.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.0.0.tgz", + "integrity": "sha1-QjNE0qEySo63IeJ1hteVGP8Hh88=" + }, + "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==" + }, + "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==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "1.0.27-1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz", + "integrity": "sha1-a2eYPCA1fO/QfwFlABoW1xDZEHg=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "reduce-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz", + "integrity": "sha1-4Mk1QsV0UhvqE98PlIjtgqt3xdo=" + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "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==" + } + } + }, + "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==", + "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", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz", + "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + }, + "superagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-1.2.0.tgz", + "integrity": "sha1-qsJiUzwexVOBRKETcc028kSldP0=", + "requires": { + "component-emitter": "1.1.2", + "cookiejar": "2.0.1", + "debug": "2", + "extend": "1.2.1", + "form-data": "0.2.0", + "formidable": "1.0.14", + "methods": "1.0.1", + "mime": "1.3.4", + "qs": "2.3.3", + "readable-stream": "1.0.27-1", + "reduce-component": "1.0.1" + }, + "dependencies": { + "cookiejar": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz", + "integrity": "sha1-PRJ1L2rfaKiS8zJDNJK9WBK7Zo8=" + }, + "methods": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz", + "integrity": "sha1-dbyRlD3/19oDfPPusO1zoAN80Us=" + }, + "qs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=" + } + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + } + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json index d28c6bfb2f..2a43da40dd 100644 --- a/package.json +++ b/package.json @@ -35,3 +35,4 @@ "mocha-junit-reporter": "^2.0.0" } } + diff --git a/server.js b/server.js index 7db6097234..0a6eb19da8 100644 --- a/server.js +++ b/server.js @@ -8,6 +8,23 @@ Object.assign=require('object-assign') app.engine('html', require('ejs').renderFile); app.use(morgan('combined')) +const products = [ + { + name: 'iPhone 13', + color: 'White', + company: 'Apple' + }, + { + name: 'OnePlus 9', + color: 'Blue', + company: 'Oneplus' + }, + { + name: 'iPhone 12', + color: 'Purple', + company: 'Apple' + } +] var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080, ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0', mongoURL = process.env.OPENSHIFT_MONGODB_DB_URL || process.env.MONGO_URL, @@ -94,6 +111,10 @@ app.get('/', function (req, res) { } }); +app.get('/products', (req, res) =>{ + res.status(200).send(products) +}) + app.get('/pagecount', function (req, res) { // try to initialize the db on every request if it's not already // initialized. diff --git a/tests/app_test.js b/tests/app_test.js index 28da5a082f..f7ca28e3e6 100644 --- a/tests/app_test.js +++ b/tests/app_test.js @@ -26,6 +26,14 @@ describe('Basic routes tests', function() { res.should.have.status(200); done(); }) + }) + it('GET to /products should return 200', function(done){ + chai.request(reqServer) + .get('/products') + .end(function(err, res) { + res.should.have.status(200); + done(); + }) }) }) From a47e42da3af51ef7955d4c13e55d635dd655586a Mon Sep 17 00:00:00 2001 From: Vishal Mishra Date: Sat, 25 Sep 2021 14:19:23 +0400 Subject: [PATCH 51/61] Added demo endpoint --- server.js | 7 +++++++ tests/app_test.js | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/server.js b/server.js index 0a6eb19da8..66963a13e3 100644 --- a/server.js +++ b/server.js @@ -115,6 +115,13 @@ app.get('/products', (req, res) =>{ res.status(200).send(products) }) +network_info ={ip: ip, + port: port} + +app.get('/demo', (req, res) =>{ + res.status(200).send(network_info) +}) + app.get('/pagecount', function (req, res) { // try to initialize the db on every request if it's not already // initialized. diff --git a/tests/app_test.js b/tests/app_test.js index f7ca28e3e6..098716ca60 100644 --- a/tests/app_test.js +++ b/tests/app_test.js @@ -36,4 +36,13 @@ describe('Basic routes tests', function() { done(); }) }) + + it('GET to /demo should return 200', function(done){ + chai.request(reqServer) + .get('/demo') + .end(function(err, res) { + res.should.have.status(200); + done(); + }) + }) }) From adb9144896036a3d1529cdce72a2970b21aa3591 Mon Sep 17 00:00:00 2001 From: Vishal Mishra Date: Sat, 25 Sep 2021 14:24:56 +0400 Subject: [PATCH 52/61] Added demo endpoint --- node-dev-deploy1.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/node-dev-deploy1.yml b/node-dev-deploy1.yml index 58a3c18671..c8607d2f83 100644 --- a/node-dev-deploy1.yml +++ b/node-dev-deploy1.yml @@ -61,6 +61,10 @@ stages: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc status' + - script: | + sleep 2m + oc rollout status deployments/nodejs-ex + displayName: 'Deployment Status' - stage: FunctionalTest dependsOn: From 2b2beb273918d4ac367ab9e17ddef87d51f68e20 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sat, 25 Sep 2021 14:28:32 +0400 Subject: [PATCH 53/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 70763e8d17..d8dee50080 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -77,6 +77,10 @@ stages: npm install npm run test.azd displayName: 'Functional UI test' + - task: AllureGenerate@1 + inputs: + resultsDir: 'mocha-wdio-demo/report/allure-results' + targetDir: 'allure-report/$(Build.BuildNumber)' - task: PublishTestResults@2 inputs: From dcf92d9b80b8b7907060dee60e0416a6f7a3288c Mon Sep 17 00:00:00 2001 From: Vishal Mishra Date: Sat, 25 Sep 2021 14:33:17 +0400 Subject: [PATCH 54/61] Added demo endpoint --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d8dee50080..37fd7622be 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -61,6 +61,10 @@ stages: connectionType: 'OpenShift Connection Service' openshiftService: 'Openshift' cmd: 'oc status' + - script: | + sleep 2m + oc rollout status deployments/nodejs-ex + displayName: 'Deployment Status' - stage: FunctionalUITest dependsOn: From 4f0658f38283010630aa606e23a6af206f08160b Mon Sep 17 00:00:00 2001 From: Vishal Date: Sat, 25 Sep 2021 14:36:48 +0400 Subject: [PATCH 55/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 37fd7622be..58a38ae91c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -80,6 +80,10 @@ stages: cd mocha-wdio-demo npm install npm run test.azd + ls -ll + cd report + ls -ll + cd allure-results displayName: 'Functional UI test' - task: AllureGenerate@1 inputs: From 19b39186263d5c8af167127878ee7e5ab00fa59b Mon Sep 17 00:00:00 2001 From: Vishal Date: Sat, 25 Sep 2021 15:10:22 +0400 Subject: [PATCH 56/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 58a38ae91c..e3273b9bf9 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -84,6 +84,7 @@ stages: cd report ls -ll cd allure-results + pwd displayName: 'Functional UI test' - task: AllureGenerate@1 inputs: From 2eca535a917c9abb8d9ceffdfccfbaf9428a63ba Mon Sep 17 00:00:00 2001 From: Vishal Date: Sat, 25 Sep 2021 15:28:23 +0400 Subject: [PATCH 57/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e3273b9bf9..aa43861e63 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -75,16 +75,14 @@ stages: displayName: 'Functional UI Tests' steps: - script: | + ls -lad **/*(/) docker run -d -p 4444:4444 selenium/standalone-chrome git clone https://github.com/vishalm/mocha-wdio-demo.git cd mocha-wdio-demo npm install npm run test.azd - ls -ll - cd report - ls -ll - cd allure-results - pwd + npm run report.ci + ls -lad **/*(/) displayName: 'Functional UI test' - task: AllureGenerate@1 inputs: From 632fedc4f587fe548a57641b6a6f8b8b1abf5191 Mon Sep 17 00:00:00 2001 From: Vishal Mishra Date: Sat, 25 Sep 2021 15:44:32 +0400 Subject: [PATCH 58/61] Updated service to print openshift info --- azure-pipelines.yml | 7 ------- server.js | 13 +++++++++++++ tests/app_test.js | 9 +++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index aa43861e63..bb8ec8b36e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -75,20 +75,13 @@ stages: displayName: 'Functional UI Tests' steps: - script: | - ls -lad **/*(/) docker run -d -p 4444:4444 selenium/standalone-chrome git clone https://github.com/vishalm/mocha-wdio-demo.git cd mocha-wdio-demo npm install npm run test.azd npm run report.ci - ls -lad **/*(/) displayName: 'Functional UI test' - - task: AllureGenerate@1 - inputs: - resultsDir: 'mocha-wdio-demo/report/allure-results' - targetDir: 'allure-report/$(Build.BuildNumber)' - - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' diff --git a/server.js b/server.js index 66963a13e3..f989370a0b 100644 --- a/server.js +++ b/server.js @@ -122,6 +122,19 @@ app.get('/demo', (req, res) =>{ res.status(200).send(network_info) }) + +devops_node = { + devops_node: process.env.DEVOPSPROJECTNODE_PORT_8080_TCP, + git_info: process.env.OPENSHIFT_BUILD_SOURCE, + service_desc: process.env.DESCRIPTION, + summary: process.env.SUMMARY, + build_namespace: process.env.OPENSHIFT_BUILD_NAMESPACE +} + +app.get('/devops_node', (req, res) =>{ + res.status(200).send(devops_node) +}) + app.get('/pagecount', function (req, res) { // try to initialize the db on every request if it's not already // initialized. diff --git a/tests/app_test.js b/tests/app_test.js index 098716ca60..2fe8ba37ef 100644 --- a/tests/app_test.js +++ b/tests/app_test.js @@ -45,4 +45,13 @@ describe('Basic routes tests', function() { done(); }) }) + + it('GET to /devops_node should return 200', function(done){ + chai.request(reqServer) + .get('/devops_node') + .end(function(err, res) { + res.should.have.status(200); + done(); + }) + }) }) From 7247a558a46c2d4fa2fe52478978213d963e4ef1 Mon Sep 17 00:00:00 2001 From: Vishal Date: Sat, 25 Sep 2021 15:54:53 +0400 Subject: [PATCH 59/61] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bb8ec8b36e..f3086c118c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -80,7 +80,6 @@ stages: cd mocha-wdio-demo npm install npm run test.azd - npm run report.ci displayName: 'Functional UI test' - task: PublishTestResults@2 inputs: From 39c75f20305e3241e05f7f5b5ab355c41f5a8bfe Mon Sep 17 00:00:00 2001 From: Vishal Date: Sun, 26 Sep 2021 10:50:57 +0400 Subject: [PATCH 60/61] Update server.js --- server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index f989370a0b..93575a0cd9 100644 --- a/server.js +++ b/server.js @@ -128,7 +128,8 @@ devops_node = { git_info: process.env.OPENSHIFT_BUILD_SOURCE, service_desc: process.env.DESCRIPTION, summary: process.env.SUMMARY, - build_namespace: process.env.OPENSHIFT_BUILD_NAMESPACE + build_namespace: process.env.OPENSHIFT_BUILD_NAMESPACE, + openshift_build_reference: process.env.OPENSHIFT_BUILD_REFERENCE } app.get('/devops_node', (req, res) =>{ From 1a06aabeadee1db17a40378f382f9770b4f4fe92 Mon Sep 17 00:00:00 2001 From: Vishal Date: Wed, 29 Sep 2021 15:13:10 +0400 Subject: [PATCH 61/61] New commit --- views/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/index.html b/views/index.html index ade6276078..834d75663f 100644 --- a/views/index.html +++ b/views/index.html @@ -216,7 +216,7 @@
-

### Demo #10: Dev Branch For Openshift Azuredevops Demo ###

+

### Demo #11: Dev Branch For Openshift Azuredevops Image Registry Demo ###