Commit fe80aecc authored by David Diederich's avatar David Diederich
Browse files

Merge remote-tracking branch 'origin/master' into feature/dperez50/fossa

Conflicts:
	.gitlab-ci.yml
parents 4e9112cb 8f1b056e
Pipeline #34714 failed with stages
in 9 minutes and 40 seconds
......@@ -29,5 +29,8 @@ keys
# newman junit output
newman
.DS_Store
.idea
# backup files
*.bak
\ No newline at end of file
......@@ -5,9 +5,18 @@ variables:
PORT: 80
REPLICA: 1
UTEST_RUNTIME_IMAGE: seistore-svc-runtime
#aws variables
AWS_ECR_REGION: us-east-1
#azure variables
AWS_SERVICE: seismic-store
AWS_BUILD_SUBDIR: src/cloud/providers/aws/build-aws
AWS_TEST_SUBDIR: tests
AWS_ENVIRONMENT: dev
AWS_BUILDER_DOCKERFILE_PATH: src/cloud/providers/aws/build-aws/builder.Dockerfile
AWS_RUNTIME_DOCKERFILE_PATH: src/cloud/providers/aws/build-aws/runtime.Dockerfile
# skipping tests here. Using a local file to run tests
AWS_SKIP_TESTS: "true"
#azure variables
AZURE_SERVICE: seismic-store-service
#gcp variables
GCP_APPLICATION_NAME: os-seismic-store-service
......@@ -40,9 +49,13 @@ include:
file: "containerize/seismic-store-service.yml"
ref: slb/dperez50/aws-seismic-store-service
# aws
- project: "osdu/platform/ci-cd-pipelines"
file: "cloud-providers/aws.yml"
- local: "/devops/aws/awstest.yml"
# deploy
#aws
#azure
- project: "osdu/platform/ci-cd-pipelines"
ref: "fossa-node"
......@@ -52,7 +65,8 @@ include:
- project: "osdu/platform/ci-cd-pipelines"
ref: "fossa-node"
file: "cloud-providers/ibm-seismic-store-service.yml"
#gcp
- project: "osdu/platform/ci-cd-pipelines"
ref: "fossa-node"
......
......@@ -43,12 +43,12 @@ npm run code-coverage
--run-parallel
# run the linter on sources
tslint -c tslint.json 'src/**/*.ts'
tslint -c tslint.json -p tsconfig.json 'src/**/*.ts'
```
## Environment configuration
Environment variables can be provided with a `.env` file in the root of the project to be consumed
by [dotenv](https://github.com/motdotla/dotenv). Environment variables are [preloaded](https://github.com/motdotla/dotenv#preload)
by the `npm start` command with the argument `-r dotenv/config`. A template `.env` file can be found
by the `npm start` command with the argument `-r dotenv/config`. A template `.env` file can be found
in `/docs/templates/.env-sample`.
aws-test-newman:
extends:
- .aws
- .aws_base_variables
- .aws_variables
stage: integration
image: node
needs: ['aws-update-ecs']
script:
- apt-get update
- apt-get install -y python
- apt-get install -y python-pip
- pip install -r devops/aws/requirements.txt
- svctoken=$(python devops/scripts/aws_jwt_client.py)
- npm install -g newman
- chmod +x ./tests/e2e/run_e2e_tests.sh
- ./tests/e2e/run_e2e_tests.sh --seistore-svc-url=${SEISMICSTORE_SVC_URL} --seistore-svc-api-key="NA" --user-idtoken="$svctoken" --user-idtoken="$svctoken" --tenant=opendes --subproject=awsdemosubproject --admin-email="${AWS_COGNITO_AUTH_PARAMS_USER}" --datapartition=opendes --legaltag01=opendes-sdmstestlegaltag --legaltag02=opendes-sdmstestlegaltag --subproject-long-name=subprojectlonggggggggggggggggggggggname --VCS-Provider="${ISGITLAB}"
only:
variables:
- $AWS == 'true'
artifacts:
when: always
paths:
- $INTEGRATION_TEST_DIR
expire_in: 14 days
adal==1.2.2
boto3==1.14.40
botocore==1.17.54
certifi==2019.11.28
cffi==1.14.0
chardet==3.0.4
cryptography==2.8
docutils==0.15.2
idna==2.9
jmespath==0.10.0
pycparser==2.20
PyJWT==1.7.1
python-dateutil==2.8.1
requests==2.23.0
s3transfer==0.3.3
six==1.14.0
urllib3==1.25.8
xmlrunner==1.7.7
\ No newline at end of file
import os;
import boto3;
import jwt;
def get_id_token():
client = boto3.client('cognito-idp', region_name=os.environ["AWS_REGION"])
userAuth = client.initiate_auth(
ClientId= os.environ['AWS_COGNITO_CLIENT_ID'],
AuthFlow= os.environ['AWS_COGNITO_AUTH_FLOW'],
AuthParameters= {
"USERNAME": os.environ['AWS_COGNITO_AUTH_PARAMS_USER'],
"PASSWORD": os.environ['AWS_COGNITO_AUTH_PARAMS_PASSWORD']
})
print(userAuth['AuthenticationResult']['AccessToken'])
def get_invalid_token():
#generate a dummy jwt
return jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256').decode("utf-8")
if __name__ == '__main__':
get_id_token()
......@@ -5,8 +5,8 @@ import json
url = os.getenv('KEYCLOAK_URL')
client_id = os.getenv('KEYCLOAK_CLIENT_ID')
client_secret = os.getenv('KEYCLOAK_CLIENT_SECRET')
user = os.getenv('AUTH_USER_ACCESS')
password = os.getenv('AUTH_USER_ACCESS_PASSWORD')
user = os.getenv('IBM_SEISMIC_AUTH_USER_ACCESS')
password = os.getenv('IBM_SEISMIC_AUTH_USER_ACCESS_PASSWORD')
payload = "grant_type=password&client_id="+client_id+"&client_secret="+client_secret+"&username="+user+"&password="+password+"&scope=openid"
headers = {
......
......@@ -18,6 +18,7 @@ npm install fs-jetpack
npm install inline-css
npm run test-automation
if [ $? -ne 0 ]; then exit 1; fi
node devops/scripts/cssfix.js
if [ $? -ne 0 ]; then exit 1; fi
......
......@@ -1363,56 +1363,6 @@ paths:
404:
description: "Not found"
# /api/v3/sre/maintenance:
# put:
# summary: "Service maintenance"
# description: "<ul><li>Service maintenance.</li><li>Required roles: seistore.system.admin/li></ul>"
# operationId: maintenance
# tags:
# - SRE
# parameters:
# - description: "operation id"
# in: query
# name: opid
# required: true
# type: string
# responses:
# 200:
# description: "Results of maintainence"
# 400:
# description: "Bad request"
# 401:
# description: "Unauthorized"
# 403:
# description: "Forbidden"
# 404:
# description: "Not found"
# /api/v3/sre/diagnostic:
# get:
# summary: "Perform diagnostics on the service"
# description: "<ul><li>Service diagnostic.</li><li>Required roles: seistore.system.admin/li></ul>"
# operationId: diagnostic
# tags:
# - SRE
# parameters:
# - description: "operation id"
# in: query
# name: opid
# required: true
# type: string
# responses:
# 200:
# description: "Results of the service diagnosis"
# 400:
# description: "Bad request"
# 401:
# description: "Unauthorized"
# 403:
# description: "Forbidden"
# 404:
# description: "Not found"
# ===========================================================================
# Endpoints Models Section
# ===========================================================================
......@@ -1981,4 +1931,4 @@ x-google-management:
STANDARD: 3000000
x-google-backend:
deadline: 180.0
\ No newline at end of file
deadline: 180.0
......@@ -1418,56 +1418,6 @@ paths:
404:
description: "Not found"
# /sre/maintenance:
# put:
# summary: "service maintenance"
# description: "<ul><li>Service maintenance.</li><li>Required roles: seistore.system.admin/li></ul>"
# operationId: maintenance
# tags:
# - SRE
# parameters:
# - description: "operation id"
# in: query
# name: opid
# required: true
# type: string
# responses:
# 200:
# description: "maintenance results"
# 400:
# description: "Bad request"
# 401:
# description: "Unauthorized"
# 403:
# description: "Forbidden"
# 404:
# description: "Not found"
# /sre/diagnostic:
# get:
# summary: "service diagnostic"
# description: "<ul><li>Service diagnostic.</li><li>Required roles: seistore.system.admin/li></ul>"
# operationId: diagnostic
# tags:
# - SRE
# parameters:
# - description: "operation id"
# in: query
# name: opid
# required: true
# type: string
# responses:
# 200:
# description: "diagnostic results"
# 400:
# description: "Bad request"
# 401:
# description: "Unauthorized"
# 403:
# description: "Forbidden"
# 404:
# description: "Not found"
# ===========================================================================
# Endpoints Models Section
# ===========================================================================
......
#cloud provider is set to aws
CLOUDPROVIDER= "aws"
#specify service port, default is 5000
PORT= 5000
API_BASE_PATH=/api/seismic-store/v3
SERVICE_ENV=evd
ENVIRONMENT=
IMP_SERVICE_ACCOUNT_SIGNER=
AWS_REGION=
# redis instance url (defautl port 6379)
LOCKSMAP_REDIS_INSTANCE_ADDRESS=
LOCKSMAP_REDIS_INSTANCE_PORT= 6379
LOCKSMAP_REDIS_INSTANCE_KEY=
DES_REDIS_INSTANCE_ADDRESS=
DES_REDIS_INSTANCE_PORT=
DES_REDIS_INSTANCE_KEY=
DES_SERVICE_HOST=
DES_SERVICE_APPKEY=
JWKS_URL=
JWT_EXCLUDE_PATHS=
JWT_AUDIENCE=
# Features to disable ONLY the service run locally
JWT_ENABLE_FEATURE= "false"
FEATURE_FLAG_AUTHORIZATION= "false"
FEATURE_FLAG_LEGALTAG= "false"
FEATURE_FLAG_SEISMICMETA_STORAGE= "false"
FEATURE_FLAG_IMPTOKEN= "false"
FEATURE_FLAG_STORAGE_CREDENTIALS= "false"
FEATURE_FLAG_TRACE= "false"
FEATURE_FLAG_LOGGING= "false"
FEATURE_FLAG_STACKDRIVER_EXPORTER= "false"
......@@ -865,6 +865,11 @@
"extend": "^3.0.2"
}
},
"@google-cloud/precise-date": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-2.0.3.tgz",
"integrity": "sha512-+SDJ3ZvGkF7hzo6BGa8ZqeK3F6Z4+S+KviC9oOK+XCs3tfMyJCh/4j93XIWINgMMDIh9BgEvlw4306VxlXIlYA=="
},
"@google-cloud/projectify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz",
......@@ -875,6 +880,117 @@
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz",
"integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw=="
},
"@google-cloud/pubsub": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-2.10.0.tgz",
"integrity": "sha512-XM/Fc6/W/LYzGH2pnhGLDR5E6JNZFMfzyUFP5bWgC4FK1KqIZ4g6hrnCCO38G4JfH2i1IuSQuefPF7FrZZo9tw==",
"requires": {
"@google-cloud/paginator": "^3.0.0",
"@google-cloud/precise-date": "^2.0.0",
"@google-cloud/projectify": "^2.0.0",
"@google-cloud/promisify": "^2.0.0",
"@opentelemetry/api": "^0.12.0",
"@opentelemetry/tracing": "^0.12.0",
"@types/duplexify": "^3.6.0",
"@types/long": "^4.0.0",
"arrify": "^2.0.0",
"extend": "^3.0.2",
"google-auth-library": "^7.0.0",
"google-gax": "^2.9.2",
"is-stream-ended": "^0.1.4",
"lodash.snakecase": "^4.1.1",
"p-defer": "^3.0.0"
},
"dependencies": {
"@opentelemetry/api": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.12.0.tgz",
"integrity": "sha512-Dn4vU5GlaBrIWzLpsM6xbJwKHdlpwBQ4Bd+cL9ofJP3hKT8jBXpBpribmyaqAzrajzzl2Yt8uTa9rFVLfjDAvw==",
"requires": {
"@opentelemetry/context-base": "^0.12.0"
}
},
"@opentelemetry/context-base": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.12.0.tgz",
"integrity": "sha512-UXwSsXo3F3yZ1dIBOG9ID8v2r9e+bqLWoizCtTb8rXtwF+N5TM7hzzvQz72o3nBU+zrI/D5e+OqAYK8ZgDd3DA=="
},
"gaxios": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.2.0.tgz",
"integrity": "sha512-Ms7fNifGv0XVU+6eIyL9LB7RVESeML9+cMvkwGS70xyD6w2Z80wl6RiqiJ9k1KFlJCUTQqFFc8tXmPQfSKUe8g==",
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.3.0"
}
},
"gcp-metadata": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz",
"integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==",
"requires": {
"gaxios": "^4.0.0",
"json-bigint": "^1.0.0"
}
},
"google-auth-library": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.0.3.tgz",
"integrity": "sha512-6wJNYqY1QUr5I2lWaUkkzOT2b9OCNhNQrdFOt/bsBbGb7T7NCdEvrBsXraUm+KTUGk2xGlQ7m9RgUd4Llcw8NQ==",
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
"fast-text-encoding": "^1.0.0",
"gaxios": "^4.0.0",
"gcp-metadata": "^4.2.0",
"gtoken": "^5.0.4",
"jws": "^4.0.0",
"lru-cache": "^6.0.0"
}
},
"is-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
},
"jwa": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
"integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
"requires": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"jws": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
"requires": {
"jwa": "^2.0.0",
"safe-buffer": "^5.0.1"
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"@google-cloud/storage": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.7.0.tgz",
......@@ -1509,6 +1625,108 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.6.1.tgz",
"integrity": "sha512-5bHhlTBBq82ti3qPT15TRxkYTFPPQWbnkkQkmHPtqiS1XcTB69cEKd3Jm7Cfi/vkPoyxapmePE9tyA7EzLt8SQ=="
},
"@opentelemetry/core": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-0.12.0.tgz",
"integrity": "sha512-oLZIkmTNWTJXzo1eA4dGu/S7wOVtylsgnEsCmhSJGhrJVDXm1eW/aGuNs3DVBeuxp0ZvQLAul3/PThsC3YrnzA==",
"requires": {
"@opentelemetry/api": "^0.12.0",
"@opentelemetry/context-base": "^0.12.0",
"semver": "^7.1.3"
},
"dependencies": {
"@opentelemetry/api": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.12.0.tgz",
"integrity": "sha512-Dn4vU5GlaBrIWzLpsM6xbJwKHdlpwBQ4Bd+cL9ofJP3hKT8jBXpBpribmyaqAzrajzzl2Yt8uTa9rFVLfjDAvw==",
"requires": {
"@opentelemetry/context-base": "^0.12.0"
}
},
"@opentelemetry/context-base": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.12.0.tgz",
"integrity": "sha512-UXwSsXo3F3yZ1dIBOG9ID8v2r9e+bqLWoizCtTb8rXtwF+N5TM7hzzvQz72o3nBU+zrI/D5e+OqAYK8ZgDd3DA=="
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"@opentelemetry/resources": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-0.12.0.tgz",
"integrity": "sha512-8cYvIKB68cyupc7D6SWzkLtt13mbjgxMahL4JKCM6hWPyiGSJlPFEAey4XFXI5LLpPZRYTPHLVoLqI/xwCFZZA==",
"requires": {
"@opentelemetry/api": "^0.12.0",
"@opentelemetry/core": "^0.12.0"
},
"dependencies": {
"@opentelemetry/api": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.12.0.tgz",
"integrity": "sha512-Dn4vU5GlaBrIWzLpsM6xbJwKHdlpwBQ4Bd+cL9ofJP3hKT8jBXpBpribmyaqAzrajzzl2Yt8uTa9rFVLfjDAvw==",
"requires": {
"@opentelemetry/context-base": "^0.12.0"
}
},
"@opentelemetry/context-base": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.12.0.tgz",
"integrity": "sha512-UXwSsXo3F3yZ1dIBOG9ID8v2r9e+bqLWoizCtTb8rXtwF+N5TM7hzzvQz72o3nBU+zrI/D5e+OqAYK8ZgDd3DA=="
}
}
},
"@opentelemetry/semantic-conventions": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-0.12.0.tgz",
"integrity": "sha512-BuCcDW0uLNYYTns0/LwXkJ8lp8aDm7kpS+WunEmPAPRSCe6ciOYRvzn5reqJfX93rf+6A3U2SgrBnCTH+0qoQQ=="
},
"@opentelemetry/tracing": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/tracing/-/tracing-0.12.0.tgz",
"integrity": "sha512-2TUGhTGkhgnxTciHCNAILPSeyXageJewRqfP9wOrx65sKd/jgvNYoY8nYf4EVWVMirDOxKDsmYgUkjdQrwb2dg==",
"requires": {
"@opentelemetry/api": "^0.12.0",
"@opentelemetry/context-base": "^0.12.0",
"@opentelemetry/core": "^0.12.0",
"@opentelemetry/resources": "^0.12.0",
"@opentelemetry/semantic-conventions": "^0.12.0"
},
"dependencies": {
"@opentelemetry/api": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.12.0.tgz",
"integrity": "sha512-Dn4vU5GlaBrIWzLpsM6xbJwKHdlpwBQ4Bd+cL9ofJP3hKT8jBXpBpribmyaqAzrajzzl2Yt8uTa9rFVLfjDAvw==",
"requires": {
"@opentelemetry/context-base": "^0.12.0"
}
},
"@opentelemetry/context-base": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.12.0.tgz",
"integrity": "sha512-UXwSsXo3F3yZ1dIBOG9ID8v2r9e+bqLWoizCtTb8rXtwF+N5TM7hzzvQz72o3nBU+zrI/D5e+OqAYK8ZgDd3DA=="
}
}
},
"@opentelemetry/types": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/types/-/types-0.2.0.tgz",
......@@ -1697,6 +1915,14 @@
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
"integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ=="
},
"@types/duplexify": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
"integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==",
"requires": {
"@types/node": "*"
}
},
"@types/express": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz",
......@@ -4528,6 +4754,62 @@
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true
},
"gtoken": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.2.1.tgz",
"integrity": "sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==",
"requires": {
"gaxios": "^4.0.0",
"google-p12-pem": "^3.0.3",
"jws": "^4.0.0"
},
"dependencies": {
"gaxios": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.2.0.tgz",
"integrity": "sha512-Ms7fNifGv0XVU+6eIyL9LB7RVESeML9+cMvkwGS70xyD6w2Z80wl6RiqiJ9k1KFlJCUTQqFFc8tXmPQfSKUe8g==",
"requires": {
"abort-controller": "^3.0.0",
"extend": "^3.0.2",
"https-proxy-agent": "^5.0.0",
"is-stream": "^2.0.0",
"node-fetch": "^2.3.0"
}
},
"google-p12-pem": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/google-p12-p