From ba72f963523269952665ea91ff19b4cdb5fb8c5f Mon Sep 17 00:00:00 2001 From: Marika Marszalkowski Date: Mon, 2 Dec 2019 12:49:51 +0100 Subject: [PATCH] Add batch request support + js tests --- .gitignore | 1 + Jenkinsfile | 36 + app.js | 14 +- business-partner/business-partner-api.js | 26 +- business-partner/business-partner-model.js | 4 +- .../batch-business-partner.spec.ts | 114 + .../modify-business-partner-address.spec.ts | 91 + .../modify-business-partner.spec.ts | 67 + .../read-business-partner-address.spec.ts | 73 + .../read-business-partner.spec.ts | 199 + integration-tests/global.d.ts | 1 + .../yy-1-bpsocialmedia-cds-service/.npmrc | 1 + .../BatchRequest.d.ts | 21 + .../BatchRequest.d.ts.map | 1 + .../BatchRequest.js | 36 + .../BatchRequest.js.map | 1 + .../BatchRequest.ts | 29 + .../Yy1_Bpsocialmedia.d.ts | 107 + .../Yy1_Bpsocialmedia.d.ts.map | 1 + .../Yy1_Bpsocialmedia.js | 127 + .../Yy1_Bpsocialmedia.js.map | 1 + .../Yy1_Bpsocialmedia.ts | 127 + .../Yy1_BpsocialmediaRequestBuilder.d.ts | 46 + .../Yy1_BpsocialmediaRequestBuilder.d.ts.map | 1 + .../Yy1_BpsocialmediaRequestBuilder.js | 66 + .../Yy1_BpsocialmediaRequestBuilder.js.map | 1 + .../Yy1_BpsocialmediaRequestBuilder.ts | 62 + .../Yy1_Socialmediaaccount_Bpso000.d.ts | 132 + .../Yy1_Socialmediaaccount_Bpso000.d.ts.map | 1 + .../Yy1_Socialmediaaccount_Bpso000.js | 139 + .../Yy1_Socialmediaaccount_Bpso000.js.map | 1 + .../Yy1_Socialmediaaccount_Bpso000.ts | 154 + ...ialmediaaccount_Bpso000RequestBuilder.d.ts | 46 + ...ediaaccount_Bpso000RequestBuilder.d.ts.map | 1 + ...ocialmediaaccount_Bpso000RequestBuilder.js | 66 + ...lmediaaccount_Bpso000RequestBuilder.js.map | 1 + ...ocialmediaaccount_Bpso000RequestBuilder.ts | 62 + .../function-imports.d.ts | 25 + .../function-imports.d.ts.map | 1 + .../function-imports.js | 24 + .../function-imports.js.map | 1 + .../function-imports.ts | 34 + .../yy-1-bpsocialmedia-cds-service/index.d.ts | 10 + .../index.d.ts.map | 1 + .../yy-1-bpsocialmedia-cds-service/index.js | 15 + .../index.js.map | 1 + .../yy-1-bpsocialmedia-cds-service/index.ts | 10 + .../package.json | 37 + .../tsconfig.json | 27 + .../typedoc.json | 7 + .../read-social-media.spec.ts | 54 + .../service-mapping.json | 7 + integration-tests/util/expect.ts | 47 + integration-tests/util/request.ts | 47 + integration-tests/util/server.ts | 23 + jest.config.js | 5 + odata-helpers.js | 248 +- package-lock.json | 6870 ++++++++++++++++- package.json | 25 +- server.js | 5 + .../social-media-accounts-api.js | 15 +- 61 files changed, 9085 insertions(+), 311 deletions(-) create mode 100644 Jenkinsfile create mode 100644 integration-tests/business-partner/batch-business-partner.spec.ts create mode 100644 integration-tests/business-partner/modify-business-partner-address.spec.ts create mode 100644 integration-tests/business-partner/modify-business-partner.spec.ts create mode 100644 integration-tests/business-partner/read-business-partner-address.spec.ts create mode 100644 integration-tests/business-partner/read-business-partner.spec.ts create mode 100644 integration-tests/global.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/.npmrc create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js.map create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.ts create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/package.json create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/tsconfig.json create mode 100644 integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/typedoc.json create mode 100644 integration-tests/social-media-accounts/read-social-media.spec.ts create mode 100644 integration-tests/social-media-accounts/service-mapping.json create mode 100644 integration-tests/util/expect.ts create mode 100644 integration-tests/util/request.ts create mode 100644 integration-tests/util/server.ts create mode 100644 jest.config.js create mode 100644 server.js diff --git a/.gitignore b/.gitignore index 096ee8ea..ebdaec54 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ s4hana_pipeline/ business-partner/API_BUSINESS_PARTNER.edmx vdm-output-tmp/ +.DS_Store diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..e1afc2e9 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,36 @@ + +def dockerImageName = 's4sdk/mock-server' +def dockerImage = null + +lock('mock-server') { + stage('Build') { + node('master') { + milestone 10 + deleteDir() + + sh "git clone https://github.com/SAP/cloud-s4-sdk-book.git mock-server -b mock-server" + + dir("mock-server"){ + + def buildArgs = [ + '--pull' + ] + + withCredentials([string(credentialsId: 'api-sap-key', variable: 'KEY')]) { + buildArgs.add("--build-arg API_KEY=${KEY}") + dockerImage = docker.build(dockerImageName, buildArgs.join(' ') + ' .') + } + } + } + } + + stage('Install') { + milestone 20 + node('master') { + def containerName = 'mock-server' + sh "docker stop ${containerName} || echo 'Stopping failed'" + sh "docker run -d --rm -p 3000:8080 --name ${containerName} ${dockerImageName}" + currentBuild.result = 'SUCCESS' + } + } +} diff --git a/app.js b/app.js index 2beb43cf..5b40012c 100644 --- a/app.js +++ b/app.js @@ -1,19 +1,27 @@ -const nodeAppStarted = Date.now(); const express = require('express'); const app = express(); const bupaApi = require('./business-partner/business-partner-api.js'); const socialMediaApi = require('./social-media-accounts/social-media-accounts-api.js'); +const timeSheetEntryApi = require('./timeSheetEntryCollection/timeSheetEntryCollection-api.js') const logRequests = function(req, res, next) { console.log(`Request: ${req.method} ${req.originalUrl}`) next(); }; +const sendFakeCsrfToken = function(req, res, next) { + res.header('x-csrf-token', 'dummyToken123') + res.header('set-cookie', ['cookie']) + next() +} + app.use(logRequests); +app.use(sendFakeCsrfToken) app.use('/sap/opu/odata/sap/API_BUSINESS_PARTNER', bupaApi); app.use('/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS', socialMediaApi); +app.use('/sap/opu/odata/sap/API_MANAGE_WORKFORCE_TIMESHEET', timeSheetEntryApi) app.get('/', function(req, res) { res.set('Content-Type', 'text/html'); @@ -24,9 +32,9 @@ app.get('/', function(req, res) {
OData mock service for Business Partner API of SAP S/4HANA Cloud is running at /sap/opu/odata/sap/API_BUSINESS_PARTNER.
OData mock service for Business Partner Social Media custom API is running at /sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS.
+
OData mock service for TimeSheetEntryCollection custom API is running at /sap/opu/odata/sap/API_MANAGE_WORKFORCE_TIMESHEET.
`); }); -const port = process.env.PORT || 3000; -app.listen(port, () => console.log(`Mock server started on port ${port} after ${Date.now() - nodeAppStarted} ms, running - stop with CTRL+C (or CMD+C)...`)) +module.exports = app; diff --git a/business-partner/business-partner-api.js b/business-partner/business-partner-api.js index 9a97034a..8c3e08e3 100644 --- a/business-partner/business-partner-api.js +++ b/business-partner/business-partner-api.js @@ -84,26 +84,30 @@ router.get('/([$])metadata', function(req, res) { }); }); +router.post('/([$])batch', bodyParser.text({ type: () => true }), odata.batch, odata.set201Created); + const handlersForBusinessPartnerUpdate = odata.middlewareForUpdate(retrieveSingleBusinessPartner, modifyBusinessPartner); const handlersForAddressUpdate = odata.middlewareForUpdate(retrieveSingleAddress, modifyAddress); router.route('/A_BusinessPartner') -.get(retrieveAllBusinessPartners, odata.middlewareForSet()) -.post(bodyParser.json(), createBusinessPartner, odata.sendAsODataResult); + .get(retrieveAllBusinessPartners, odata.middlewareForSet()) + .post(odata.middlewareForCreate(createBusinessPartner)); router.route('/A_BusinessPartner\\((BusinessPartner=)?(\':id\'|%27:id%27)\\)') -.get(retrieveSingleBusinessPartner, odata.middlewareForEntity()) -.delete(retrieveSingleBusinessPartner, odata.send404IfNotFound, deleteBusinessPartner, odata.send204NoContent) -.patch(handlersForBusinessPartnerUpdate).put(handlersForBusinessPartnerUpdate); + .get(retrieveSingleBusinessPartner, odata.middlewareForEntity()) + .delete(retrieveSingleBusinessPartner, odata.send404IfNotFound, deleteBusinessPartner, odata.send204NoContent) + .patch(handlersForBusinessPartnerUpdate) + .put(handlersForBusinessPartnerUpdate); router.route('/A_BusinessPartnerAddress') -.get(retrieveAllAddresses, odata.middlewareForSet()) -.post(bodyParser.json(), createAddress, odata.sendAsODataResult); + .get(retrieveAllAddresses, odata.middlewareForSet()) + .post(odata.middlewareForCreate(createAddress)); router.route('/A_BusinessPartnerAddress\\((BusinessPartner=)?(\':bupaId\'|%27:bupaId%27),(AddressID=)?(\':addressId\'|%27:addressId%27)\\)') -.get(retrieveSingleAddress, odata.middlewareForEntity()) -.delete(retrieveSingleAddress, odata.send404IfNotFound, deleteAddress, odata.send204NoContent) -.patch(handlersForAddressUpdate).put(handlersForAddressUpdate); + .get(retrieveSingleAddress, odata.middlewareForEntity()) + .delete(retrieveSingleAddress, odata.send404IfNotFound, deleteAddress, odata.send204NoContent) + .patch(handlersForAddressUpdate) + .put(handlersForAddressUpdate); router.get('/', function(req, res) { res.json({ @@ -116,4 +120,4 @@ router.get('/', function(req, res) { }); }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/business-partner/business-partner-model.js b/business-partner/business-partner-model.js index 10805218..80d3ab06 100644 --- a/business-partner/business-partner-model.js +++ b/business-partner/business-partner-model.js @@ -15,7 +15,7 @@ const nextAddressId = function(existingAddresses) { }; module.exports = { - data: data, + data, newBusinessPartner: function (id) { return Object.seal({ "__metadata": { @@ -241,4 +241,4 @@ module.exports = { } Object.assign(addressToUpdate, addressInput); } -}; \ No newline at end of file +}; diff --git a/integration-tests/business-partner/batch-business-partner.spec.ts b/integration-tests/business-partner/batch-business-partner.spec.ts new file mode 100644 index 00000000..115fb216 --- /dev/null +++ b/integration-tests/business-partner/batch-business-partner.spec.ts @@ -0,0 +1,114 @@ +import { ReadResponse, WriteResponses } from "@sap/cloud-sdk-core"; +import { batch, BusinessPartner, BusinessPartnerAddress, changeset } from "@sap/cloud-sdk-vdm-business-partner-service"; +import { createAddressRequest, createBusinessPartnerRequest, generateRandomName, retrieveAddressRequest, retrieveBusinessPartnerRequest } from "../util/request"; +import { getUrl, startServer, stopServer } from "../util/server"; + +describe('batch business partner', () => { + const BUPA_ID = "1003764"; + const ADDRESS_ID = "28238"; + + let server; + let destination; + beforeEach(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterEach(async () => { + return stopServer(server); + }); + + it('one retrieve', async () => { + const req = retrieveBusinessPartnerRequest(BUPA_ID); + const batchResponse = await batch(req).execute(destination); + + const batchRetrievedBusinessPartner = (batchResponse[0] as ReadResponse).as(BusinessPartner)[0]; + const retrievedBusinessPartner = await req.execute(destination); + + expect(batchResponse).toHaveLength(1); + expect(batchRetrievedBusinessPartner).toEqual(retrievedBusinessPartner); + }); + + it('multi retrieve', async () => { + const req1 = retrieveBusinessPartnerRequest(BUPA_ID); + const req2 = retrieveAddressRequest(BUPA_ID, ADDRESS_ID); + const req3 = BusinessPartner.requestBuilder().getAll(); + const batchResponse = await batch(req1, req2, req3).execute(destination); + + const batchRetrievedBusinessPartner = (batchResponse[0] as ReadResponse).as(BusinessPartner)[0]; + const batchRetrievedAddress = (batchResponse[1] as ReadResponse).as(BusinessPartnerAddress)[0]; + const batchRetrievedBusinessPartners = (batchResponse[2] as ReadResponse).as(BusinessPartner); + const retrievedBusinessPartner = await req1.execute(destination); + const retrievedAddress = await req2.execute(destination); + const retrievedBusinessPartners = await req3.execute(destination); + + expect(batchResponse).toHaveLength(3); + expect(batchRetrievedBusinessPartner).toEqual(retrievedBusinessPartner); + expect(batchRetrievedAddress).toEqual(retrievedAddress); + expect(batchRetrievedBusinessPartners).toEqual(retrievedBusinessPartners); + }); + + it('one changeset', async () => { + const req = createBusinessPartnerRequest(generateRandomName()); + const batchResponse = await batch( + changeset(req) + ).execute(destination); + + const batchCreatedBusinessPartner = (batchResponse[0] as WriteResponses).responses[0].as(BusinessPartner); + const retrievedBusinessPartner = await retrieveBusinessPartnerRequest(batchCreatedBusinessPartner.businessPartner).execute(destination); + + expect(batchResponse).toHaveLength(1); + expect((batchResponse[0] as WriteResponses).responses).toHaveLength(1); + expect(batchCreatedBusinessPartner).toEqual(retrievedBusinessPartner); + }); + + it('multi changeset', async () => { + const addressToDelete = await createAddressRequest(BUPA_ID, generateRandomName()).execute(destination); + const req1 = createBusinessPartnerRequest(generateRandomName()); + const req2 = BusinessPartnerAddress.requestBuilder().delete(addressToDelete.businessPartner, addressToDelete.addressId); + const batchResponse = await batch( + changeset(req1, req2) + ).execute(destination); + + const batchCreatedBusinessPartner = (batchResponse[0] as WriteResponses).responses[0].as(BusinessPartner); + const retrievedBusinessPartner = await retrieveBusinessPartnerRequest(batchCreatedBusinessPartner.businessPartner).execute(destination); + const retrieveAddress = retrieveAddressRequest(BUPA_ID, ADDRESS_ID).execute(destination); + + expect(batchResponse).toHaveLength(1); + expect((batchResponse[0] as WriteResponses).responses).toHaveLength(2); + expect(batchCreatedBusinessPartner).toEqual(retrievedBusinessPartner); + expect(retrieveAddress).toReject(); + }); + + it('mixed batch', async () => { + const addressToDelete = await createAddressRequest(BUPA_ID, generateRandomName()).execute(destination); + const req1 = retrieveBusinessPartnerRequest(BUPA_ID); + const req2 = createBusinessPartnerRequest(generateRandomName()); + const req3 = BusinessPartnerAddress.requestBuilder().delete(addressToDelete.businessPartner, addressToDelete.addressId); + const req4 = retrieveAddressRequest(addressToDelete.businessPartner, addressToDelete.addressId); + const req5 = createBusinessPartnerRequest(generateRandomName()); + + const batchResponse = await batch( + req1, + changeset(req2, req3), + req4, + changeset(req3, req5) + ) + .execute(destination); + + const batchRetrievedBusinessPartner = (batchResponse[0] as ReadResponse).as(BusinessPartner)[0]; + const batchCreatedBusinessPartner = (batchResponse[1] as WriteResponses).responses[0].as(BusinessPartner); + const retrievedBusinessPartner = await req1.execute(destination); + const retrievedCreatedBusinessPartner = await retrieveBusinessPartnerRequest(batchCreatedBusinessPartner.businessPartner).execute(destination) + + expect(batchResponse).toHaveLength(4); + expect(batchResponse[0].isSuccess()).toBeTruthy(); + expect(batchResponse[1].isSuccess()).toBeTruthy(); + expect(batchResponse[2].isSuccess()).toBeFalsy(); + expect(batchResponse[3].isSuccess()).toBeFalsy(); + + expect(batchRetrievedBusinessPartner).toEqual(retrievedBusinessPartner); + expect(batchCreatedBusinessPartner).toEqual(retrievedCreatedBusinessPartner); + }); +}); + diff --git a/integration-tests/business-partner/modify-business-partner-address.spec.ts b/integration-tests/business-partner/modify-business-partner-address.spec.ts new file mode 100644 index 00000000..86648f34 --- /dev/null +++ b/integration-tests/business-partner/modify-business-partner-address.spec.ts @@ -0,0 +1,91 @@ +import { BusinessPartnerAddress } from "@sap/cloud-sdk-vdm-business-partner-service"; +import { createAddressRequest, generateRandomName, retrieveAddressRequest } from "../util/request"; +import { getUrl, startServer, stopServer } from "../util/server"; + +describe('modify business partner address', () => { + const BUPA_ID = "1003764"; + + let server; + let destination; + beforeEach(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterEach(async () => { + return stopServer(server); + }); + + it('create', async () => { + const streetName = generateRandomName(); + const address = await createAddressRequest(BUPA_ID, streetName).execute(destination); + const retrievedAddress = await retrieveAddressRequest(BUPA_ID, address.addressId).execute(destination); + + expect(retrievedAddress).not.toBeNil(); + expect(retrievedAddress.streetName).toEqual(streetName); + }); + + it('create for non exisitng business partner', async () => { + const create = createAddressRequest('DOES_NOT_EXIST', generateRandomName()).execute(destination); + expect(create).toReject(); + }); + + it('update', async () => { + let originalAddress = await createAddressRequest(BUPA_ID, generateRandomName()).execute(destination); + let updateDiff = BusinessPartnerAddress.builder() + .businessPartner(originalAddress.businessPartner) + .addressId(originalAddress.addressId) + .streetName(generateRandomName()) + .build(); + await BusinessPartnerAddress.requestBuilder() + .update(updateDiff) + .execute(destination); + const retrievedAddress = await retrieveAddressRequest(originalAddress.businessPartner, originalAddress.addressId).execute(destination); + + expect(retrievedAddress).not.toBeNil(); + expect(retrievedAddress.streetName).toEqual(updateDiff.streetName); + }); + + it('update with workaround', async () => { + let originalAddress = await createAddressRequest(BUPA_ID, generateRandomName()).execute(destination); + originalAddress.streetName = generateRandomName(); + await BusinessPartnerAddress.requestBuilder() + .update(originalAddress) + .execute(destination); + const retrievedAddress = await retrieveAddressRequest(originalAddress.businessPartner, originalAddress.addressId).execute(destination); + + expect(retrievedAddress).not.toBeNil(); + expect(retrievedAddress.streetName).toEqual(originalAddress.streetName); + }); + + it('update non exisitng', async () => { + const update = BusinessPartnerAddress.requestBuilder() + .update( + BusinessPartnerAddress.builder() + .businessPartner(BUPA_ID) + .addressId('DOES_NOT_EXIST') + .streetName(generateRandomName()) + .build() + ) + .execute(destination); + + expect(update).toReject(); + }); + + it('delete', async () => { + const streetName = generateRandomName(); + const businessPartnerAddress = await createAddressRequest(BUPA_ID, streetName).execute(destination); + const addressToDelete = BusinessPartnerAddress.builder() + .businessPartner(businessPartnerAddress.businessPartner) + .addressId(businessPartnerAddress.addressId) + .build(); + + await BusinessPartnerAddress.requestBuilder() + .delete(addressToDelete) + .execute(destination); + + const retrieve = retrieveAddressRequest(BUPA_ID, businessPartnerAddress.addressId).execute(destination); + + expect(retrieve).toReject(); + }); +}); diff --git a/integration-tests/business-partner/modify-business-partner.spec.ts b/integration-tests/business-partner/modify-business-partner.spec.ts new file mode 100644 index 00000000..4f64bfda --- /dev/null +++ b/integration-tests/business-partner/modify-business-partner.spec.ts @@ -0,0 +1,67 @@ +import { BusinessPartner } from "@sap/cloud-sdk-vdm-business-partner-service"; +import { createBusinessPartnerRequest, generateRandomName, retrieveBusinessPartnerRequest } from "../util/request"; +import { getUrl, startServer, stopServer } from "../util/server"; + +describe('modify business partner', () => { + let server; + let destination; + beforeEach(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterEach(async () => { + return stopServer(server); + }); + + it('create', async () => { + const firstName = generateRandomName(); + const businessPartner = await createBusinessPartnerRequest(firstName).execute(destination); + const retrievedBusinessPartner = await retrieveBusinessPartnerRequest(businessPartner.businessPartner).execute(destination); + + expect(retrievedBusinessPartner).not.toBeNil(); + expect(retrievedBusinessPartner.firstName).toEqual(firstName); + }); + + it('update', async () => { + let originalBusinessPartner = await createBusinessPartnerRequest(generateRandomName()).execute(destination); + let updateDiff = BusinessPartner.builder() + .businessPartner(originalBusinessPartner.businessPartner) + .firstName(generateRandomName()) + .build(); + await BusinessPartner.requestBuilder() + .update(updateDiff) + .execute(destination); + const retrievedBusinessPartner = await retrieveBusinessPartnerRequest(originalBusinessPartner.businessPartner).execute(destination); + + expect(retrievedBusinessPartner).not.toBeNil(); + expect(retrievedBusinessPartner.firstName).toEqual(updateDiff.firstName); + }); + + it('update with workaround', async () => { + let originalBusinessPartner = await createBusinessPartnerRequest(generateRandomName()).execute(destination); + originalBusinessPartner.firstName = generateRandomName(); + await BusinessPartner.requestBuilder() + .update(originalBusinessPartner) + .execute(destination); + const retrievedBusinessPartner = await retrieveBusinessPartnerRequest(originalBusinessPartner.businessPartner).execute(destination); + + expect(retrievedBusinessPartner).not.toBeNil(); + expect(retrievedBusinessPartner.firstName).toEqual(originalBusinessPartner.firstName); + }); + + it('update non exisitng', async () => { + const update = BusinessPartner.requestBuilder() + .update( + BusinessPartner.builder() + .businessPartner('DOES_NOT_EXIST') + .firstName(generateRandomName()) + .build() + ) + .execute(destination); + + expect(update).toReject(); + }); +}); + + diff --git a/integration-tests/business-partner/read-business-partner-address.spec.ts b/integration-tests/business-partner/read-business-partner-address.spec.ts new file mode 100644 index 00000000..c721ad9e --- /dev/null +++ b/integration-tests/business-partner/read-business-partner-address.spec.ts @@ -0,0 +1,73 @@ +import { BusinessPartnerAddress } from "@sap/cloud-sdk-vdm-business-partner-service"; +import { expectPropertiesDefinedForAll, expectPropertiesUndefinedForAll, expectProperyEqualsForAll } from "../util/expect"; +import { getUrl, startServer, stopServer } from "../util/server"; + +describe('read business partner addresses', () => { + const BUPA_ID = "1003764"; + const ADDRESS_ID = "28238"; + + let server; + let destination; + beforeAll(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterAll(async () => { + return stopServer(server); + }); + + it('get all', async () => { + const businessPartnerAddresses = await BusinessPartnerAddress.requestBuilder() + .getAll() + .execute(destination); + + expect(businessPartnerAddresses).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartnerAddresses, 'addressId', 'businessPartner'); + }); + + it('get all select', async () => { + const businessPartnerAddresses = await BusinessPartnerAddress.requestBuilder() + .getAll() + .select(BusinessPartnerAddress.STREET_NAME, BusinessPartnerAddress.CITY_NAME) + .execute(destination); + + expect(businessPartnerAddresses).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartnerAddresses, 'streetName', 'cityName'); + expectPropertiesUndefinedForAll(businessPartnerAddresses, 'addressId'); + }); + + it('get all filter', async () => { + const businessPartnerAddresses = await BusinessPartnerAddress.requestBuilder() + .getAll() + .filter(BusinessPartnerAddress.BUSINESS_PARTNER.equals(BUPA_ID)) + .execute(destination); + + expect(businessPartnerAddresses).not.toBeEmpty(); + expectProperyEqualsForAll(businessPartnerAddresses, 'businessPartner', BUPA_ID); + }); + + it('get by key', async () => { + const businessPartnerAddress = await BusinessPartnerAddress.requestBuilder() + .getByKey(BUPA_ID, ADDRESS_ID) + .execute(destination); + + expect(businessPartnerAddress).not.toBeNil(); + expect(businessPartnerAddress.businessPartner).toEqual(BUPA_ID); + expect(businessPartnerAddress.addressId).toEqual(ADDRESS_ID); + expect(businessPartnerAddress.streetName).toBeDefined(); + }); + + it('get by key select', async () => { + const businessPartnerAddress = await BusinessPartnerAddress.requestBuilder() + .getByKey(BUPA_ID, ADDRESS_ID) + .select(BusinessPartnerAddress.STREET_NAME, BusinessPartnerAddress.CITY_NAME) + .execute(destination); + + expect(businessPartnerAddress).not.toBeNil(); + expect(businessPartnerAddress.businessPartner).toBeUndefined(); + expect(businessPartnerAddress.addressId).toBeUndefined(); + expect(businessPartnerAddress.streetName).toBeDefined(); + expect(businessPartnerAddress.cityName).toBeDefined(); + }); +}); diff --git a/integration-tests/business-partner/read-business-partner.spec.ts b/integration-tests/business-partner/read-business-partner.spec.ts new file mode 100644 index 00000000..389ce91b --- /dev/null +++ b/integration-tests/business-partner/read-business-partner.spec.ts @@ -0,0 +1,199 @@ +import { asc, desc } from '@sap/cloud-sdk-core'; +import { BusinessPartner, BusinessPartnerAddress } from '@sap/cloud-sdk-vdm-business-partner-service'; +import { expectPropertiesDefinedForAll, expectPropertiesUndefinedForAll, expectProperyEqualsForAll, getSizeOfUnfilteredResult } from '../util/expect'; +import { getUrl, startServer, stopServer } from '../util/server'; + +describe('read business partners', () => { + const BUPA_ID = "1003764"; + const FIRST_NAME = "John"; + + let server; + let destination; + beforeAll(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterAll(async () => { + return stopServer(server); + }); + + it('get all', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .execute(destination); + + expect(businessPartners).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartners, 'businessPartnerFullName', 'createdByUser'); + }); + + it('get all select', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select(BusinessPartner.BUSINESS_PARTNER_FULL_NAME, BusinessPartner.CREATED_BY_USER) + .execute(destination); + + expect(businessPartners).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartners, 'businessPartnerFullName', 'createdByUser'); + expectPropertiesUndefinedForAll(businessPartners, 'businessPartner'); + }); + + it('get all select all fields', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select(BusinessPartner.ALL_FIELDS) + .execute(destination); + + expect(businessPartners).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartners, 'businessPartner', 'businessPartnerCategory'); + }); + + it('get all filter', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .filter(BusinessPartner.FIRST_NAME.equals(FIRST_NAME)) + .execute(destination); + + expect(businessPartners.length).toBeLessThanOrEqual(await getSizeOfUnfilteredResult(BusinessPartner, destination)); + expectPropertiesDefinedForAll(businessPartners, 'businessPartner', 'businessPartnerCategory'); + expectProperyEqualsForAll(businessPartners, 'firstName', FIRST_NAME); + }); + + it('get all select filter', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select(BusinessPartner.BUSINESS_PARTNER_FULL_NAME, BusinessPartner.FIRST_NAME, BusinessPartner.CREATED_BY_USER) + .filter(BusinessPartner.FIRST_NAME.equals(FIRST_NAME)) + .execute(destination); + + expect(businessPartners.length).toBeLessThanOrEqual(await getSizeOfUnfilteredResult(BusinessPartner, destination)); + expectPropertiesDefinedForAll(businessPartners, 'businessPartnerFullName', 'firstName', 'createdByUser'); + expectPropertiesUndefinedForAll(businessPartners, 'businessPartner', 'businessPartnerCategory'); + expectProperyEqualsForAll(businessPartners, 'firstName', FIRST_NAME); + }); + + it('get all select filter not part of select', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select(BusinessPartner.BUSINESS_PARTNER_CATEGORY, BusinessPartner.CREATED_BY_USER) + .filter(BusinessPartner.FIRST_NAME.equals(FIRST_NAME)) + .execute(destination); + + expect(businessPartners.length).toBeLessThanOrEqual(await getSizeOfUnfilteredResult(BusinessPartner, destination)); + expectPropertiesDefinedForAll(businessPartners, 'businessPartnerCategory', 'createdByUser'); + expectPropertiesUndefinedForAll(businessPartners, 'firstName'); + }); + + it('get all expand', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select(BusinessPartner.BUSINESS_PARTNER, BusinessPartner.TO_BUSINESS_PARTNER_ADDRESS) + .execute(destination); + + const businessPartnersWithAddresses = businessPartners.filter(b => b.toBusinessPartnerAddress); + + expect(businessPartners).not.toBeEmpty(); + expect(businessPartnersWithAddresses).not.toBeEmpty(); + + expectPropertiesDefinedForAll(businessPartners, 'businessPartner', 'toBusinessPartnerAddress'); + + businessPartnersWithAddresses.forEach(b => { + expectPropertiesDefinedForAll(b.toBusinessPartnerAddress, 'addressId', 'country'); + }); + }); + + it('get all multiple expands and specific fields', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select( + BusinessPartner.BUSINESS_PARTNER, + BusinessPartner.TO_BUSINESS_PARTNER_ADDRESS.select( + BusinessPartnerAddress.ADDRESS_ID, + BusinessPartnerAddress.TO_EMAIL_ADDRESS + ), + BusinessPartner.TO_BUSINESS_PARTNER_ROLE + ) + .execute(destination); + + const businessPartnersWithAddresses = businessPartners.filter(b => b.toBusinessPartnerAddress.length); + + expect(businessPartners).not.toBeEmpty(); + expect(businessPartnersWithAddresses).not.toBeEmpty(); + expectPropertiesDefinedForAll(businessPartners, 'businessPartner', 'toBusinessPartnerAddress', 'toBusinessPartnerRole'); + + businessPartnersWithAddresses.forEach(b => { + expectPropertiesDefinedForAll(b.toBusinessPartnerAddress, 'addressId', 'toEmailAddress'); + + const addressesWithEmail = b.toBusinessPartnerAddress.filter(a => a.toEmailAddress.length); + addressesWithEmail.forEach(a => { + expectPropertiesDefinedForAll(a.toEmailAddress, 'emailAddress'); + }) + }); + }); + + it('get all order by asc', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select( + BusinessPartner.FIRST_NAME + ) + .orderBy(asc(BusinessPartner.FIRST_NAME)) + .execute(destination); + + const names = businessPartners.map(b => b.firstName); + const sortedNames = names.sort(); + + expect(businessPartners).not.toBeEmpty(); + expect(names).toEqual(sortedNames); + }); + + it('get all order by desc', async () => { + const businessPartners = await BusinessPartner.requestBuilder() + .getAll() + .select( + BusinessPartner.FIRST_NAME + ) + .orderBy(desc(BusinessPartner.FIRST_NAME)) + .execute(destination); + + const names = businessPartners.map(b => b.firstName); + const sortedNames = names.sort().reverse(); + + expect(businessPartners).not.toBeEmpty(); + expect(names).toEqual(sortedNames); + }); + + it('get by key', async () => { + const businessPartner = await BusinessPartner.requestBuilder() + .getByKey(BUPA_ID) + .execute(destination); + + expect(businessPartner).not.toBeNil(); + expect(businessPartner.businessPartner).toEqual(BUPA_ID); + expect(businessPartner.businessPartnerCategory).not.toBeNil(); + expect(businessPartner.businessPartnerCategory).not.toBeEmpty(); + }); + + it('get by key select', async () => { + const businessPartner = await BusinessPartner.requestBuilder() + .getByKey(BUPA_ID) + .select(BusinessPartner.BUSINESS_PARTNER_FULL_NAME, BusinessPartner.CREATED_BY_USER) + .execute(destination); + + expect(businessPartner).not.toBeNil(); + expect(businessPartner.businessPartner).toBeUndefined(); + expect(businessPartner.businessPartnerFullName).toBeDefined(); + expect(businessPartner.createdByUser).toBeDefined(); + }); + + it('get by key expand', async () => { + const businessPartner = await BusinessPartner.requestBuilder() + .getByKey(BUPA_ID) + .select(BusinessPartner.BUSINESS_PARTNER, BusinessPartner.TO_BUSINESS_PARTNER_ADDRESS) + .execute(destination); + + expect(businessPartner).not.toBeNil(); + expect(businessPartner.businessPartner).toEqual(BUPA_ID); + expect(businessPartner.toBusinessPartnerAddress).toBeDefined(); + }); +}); diff --git a/integration-tests/global.d.ts b/integration-tests/global.d.ts new file mode 100644 index 00000000..9e6c1dbd --- /dev/null +++ b/integration-tests/global.d.ts @@ -0,0 +1 @@ +import 'jest-extended'; diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/.npmrc b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/.npmrc new file mode 100644 index 00000000..6041b7e8 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/.npmrc @@ -0,0 +1 @@ +@sap:registry=https://npm.sap.com \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts new file mode 100644 index 00000000..571eab4a --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts @@ -0,0 +1,21 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder, ODataBatchRequestBuilder, ODataBatchChangeSet } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia, Yy1_Socialmediaaccount_Bpso000 } from './index'; +/** + * Batch builder for operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the batch + * @returns A request builder for batch. + */ +export declare function batch(...requests: Array): ODataBatchRequestBuilder; +/** + * Change set constructor consists of write operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the change set + * @returns A change set for batch. + */ +export declare function changeset(...requests: WriteYy1BpsocialmediaCdsServiceRequestBuilder[]): ODataBatchChangeSet; +export declare const defaultYy1BpsocialmediaCdsServicePath = "/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS"; +export declare type ReadYy1BpsocialmediaCdsServiceRequestBuilder = GetAllRequestBuilder | GetAllRequestBuilder | GetByKeyRequestBuilder | GetByKeyRequestBuilder; +export declare type WriteYy1BpsocialmediaCdsServiceRequestBuilder = CreateRequestBuilder | UpdateRequestBuilder | DeleteRequestBuilder | CreateRequestBuilder | UpdateRequestBuilder | DeleteRequestBuilder; +//# sourceMappingURL=BatchRequest.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts.map new file mode 100644 index 00000000..2d600bba --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchRequest.d.ts","sourceRoot":"","sources":["BatchRequest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpM,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,4CAA4C,GAAG,mBAAmB,CAAC,GAAG,wBAAwB,CAEtI;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,QAAQ,EAAE,6CAA6C,EAAE,GAAG,mBAAmB,CAE3G;AAED,eAAO,MAAM,qCAAqC,6CAA6C,CAAC;AAEhG,oBAAY,4CAA4C,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;AAC/P,oBAAY,6CAA6C,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,GAAG,oBAAoB,CAAC,8BAA8B,CAAC,CAAC"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js new file mode 100644 index 00000000..e8254dca --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js @@ -0,0 +1,36 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +var index_1 = require("./index"); +/** + * Batch builder for operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the batch + * @returns A request builder for batch. + */ +function batch() { + var requests = []; + for (var _i = 0; _i < arguments.length; _i++) { + requests[_i] = arguments[_i]; + } + return new cloud_sdk_core_1.ODataBatchRequestBuilder(exports.defaultYy1BpsocialmediaCdsServicePath, requests, map); +} +exports.batch = batch; +/** + * Change set constructor consists of write operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the change set + * @returns A change set for batch. + */ +function changeset() { + var requests = []; + for (var _i = 0; _i < arguments.length; _i++) { + requests[_i] = arguments[_i]; + } + return new cloud_sdk_core_1.ODataBatchChangeSet(requests); +} +exports.changeset = changeset; +exports.defaultYy1BpsocialmediaCdsServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; +var map = { 'YY1_BPSOCIALMEDIAType': index_1.Yy1_Bpsocialmedia, 'YY1_SOCIALMEDIAACCOUNT_BPSO000Type': index_1.Yy1_Socialmediaaccount_Bpso000 }; +//# sourceMappingURL=BatchRequest.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js.map new file mode 100644 index 00000000..7384712f --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchRequest.js","sourceRoot":"","sources":["BatchRequest.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,sDAAoM;AACpM,iCAA4E;AAE5E;;;;GAIG;AACH,SAAgB,KAAK;IAAC,kBAAsF;SAAtF,UAAsF,EAAtF,qBAAsF,EAAtF,IAAsF;QAAtF,6BAAsF;;IAC1G,OAAO,IAAI,yCAAwB,CAAC,6CAAqC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5F,CAAC;AAFD,sBAEC;AAED;;;;GAIG;AACH,SAAgB,SAAS;IAAC,kBAA4D;SAA5D,UAA4D,EAA5D,qBAA4D,EAA5D,IAA4D;QAA5D,6BAA4D;;IACpF,OAAO,IAAI,oCAAmB,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAFD,8BAEC;AAEY,QAAA,qCAAqC,GAAG,0CAA0C,CAAC;AAChG,IAAM,GAAG,GAAG,EAAE,uBAAuB,EAAE,yBAAiB,EAAE,oCAAoC,EAAE,sCAA8B,EAAE,CAAC"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.ts new file mode 100644 index 00000000..6a193d19 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/BatchRequest.ts @@ -0,0 +1,29 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder, ODataBatchRequestBuilder, ODataBatchChangeSet } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia, Yy1_Socialmediaaccount_Bpso000 } from './index'; + +/** + * Batch builder for operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the batch + * @returns A request builder for batch. + */ +export function batch(...requests: Array): ODataBatchRequestBuilder { + return new ODataBatchRequestBuilder(defaultYy1BpsocialmediaCdsServicePath, requests, map); +} + +/** + * Change set constructor consists of write operations supported on the [[Yy1BpsocialmediaCdsService]] service. + * @param requests The requests of the change set + * @returns A change set for batch. + */ +export function changeset(...requests: WriteYy1BpsocialmediaCdsServiceRequestBuilder[]): ODataBatchChangeSet { + return new ODataBatchChangeSet(requests); +} + +export const defaultYy1BpsocialmediaCdsServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; +const map = { 'YY1_BPSOCIALMEDIAType': Yy1_Bpsocialmedia, 'YY1_SOCIALMEDIAACCOUNT_BPSO000Type': Yy1_Socialmediaaccount_Bpso000 }; +export type ReadYy1BpsocialmediaCdsServiceRequestBuilder = GetAllRequestBuilder | GetAllRequestBuilder | GetByKeyRequestBuilder | GetByKeyRequestBuilder; +export type WriteYy1BpsocialmediaCdsServiceRequestBuilder = CreateRequestBuilder | UpdateRequestBuilder | DeleteRequestBuilder | CreateRequestBuilder | UpdateRequestBuilder | DeleteRequestBuilder; diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts new file mode 100644 index 00000000..42e9b2df --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts @@ -0,0 +1,107 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { Yy1_BpsocialmediaRequestBuilder } from './Yy1_BpsocialmediaRequestBuilder'; +import { StringField, Link, AllFields, CustomField, Entity, EntityBuilderType, Selectable } from '@sap/cloud-sdk-core'; +/** + * This class represents the entity "YY1_BPSOCIALMEDIA" of service "YY1_BPSOCIALMEDIA_CDS". + */ +export declare class Yy1_Bpsocialmedia extends Entity implements Yy1_BpsocialmediaType { + /** + * Technical entity name for Yy1_Bpsocialmedia. + */ + static _entityName: string; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Bpsocialmedia. + */ + static _serviceName: string; + /** + * Default url path for the according service. + */ + static _defaultServicePath: string; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + */ + sapUuid: string; + /** + * Business Partner. + * Maximum length: 10. + * @nullable + */ + businessPartner?: string; + /** + * One-to-many navigation property to the [[Yy1_Socialmediaaccount_Bpso000]] entity. + */ + toSocialMediaAccount: Yy1_Socialmediaaccount_Bpso000[]; + /** + * Returns an entity builder to construct instances `Yy1_Bpsocialmedia`. + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + static builder(): EntityBuilderType; + /** + * Returns a request builder to construct requests for operations on the `Yy1_Bpsocialmedia` entity type. + * @returns A `Yy1_Bpsocialmedia` request builder. + */ + static requestBuilder(): Yy1_BpsocialmediaRequestBuilder; + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Bpsocialmedia`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + static customField(fieldName: string): CustomField; + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + toJSON(): { + [key: string]: any; + }; +} +import { Yy1_Socialmediaaccount_Bpso000, Yy1_Socialmediaaccount_Bpso000Type } from './Yy1_Socialmediaaccount_Bpso000'; +export interface Yy1_BpsocialmediaType { + sapUuid: string; + businessPartner?: string; + toSocialMediaAccount: Yy1_Socialmediaaccount_Bpso000Type[]; +} +export interface Yy1_BpsocialmediaTypeForceMandatory { + sapUuid: string; + businessPartner: string; + toSocialMediaAccount: Yy1_Socialmediaaccount_Bpso000Type[]; +} +export declare namespace Yy1_Bpsocialmedia { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const SAP_UUID: StringField; + /** + * Static representation of the [[businessPartner]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const BUSINESS_PARTNER: StringField; + /** + * Static representation of the one-to-many navigation property [[toSocialMediaAccount]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const TO_SOCIAL_MEDIA_ACCOUNT: Link; + /** + * All fields of the Yy1_Bpsocialmedia entity. + */ + const _allFields: Array | Link>; + /** + * All fields selector. + */ + const ALL_FIELDS: AllFields; + /** + * All key fields of the Yy1_Bpsocialmedia entity. + */ + const _keyFields: Array>; + /** + * Mapping of all key field names to the respective static field property Yy1_Bpsocialmedia. + */ + const _keys: { + [keys: string]: Selectable; + }; +} +//# sourceMappingURL=Yy1_Bpsocialmedia.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts.map new file mode 100644 index 00000000..1bbd056b --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Bpsocialmedia.d.ts","sourceRoot":"","sources":["Yy1_Bpsocialmedia.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEvH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,MAAO,YAAW,qBAAqB;IAC5E;;OAEG;IACH,MAAM,CAAC,WAAW,SAAuB;IACzC;;;OAGG;IACH,MAAM,CAAC,YAAY,SAA2B;IAC9C;;OAEG;IACH,MAAM,CAAC,mBAAmB,SAA8C;IACxE;;OAEG;IACH,OAAO,EAAG,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,oBAAoB,EAAG,8BAA8B,EAAE,CAAC;IAExD;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;IAI3F;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,+BAA+B;IAIxD;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAIrE;;;OAGG;IACH,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAGjC;AAED,OAAO,EAAE,8BAA8B,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAEtH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,kCAAkC,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,mCAAmC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,kCAAkC,EAAE,CAAC;CAC5D;AAED,yBAAiB,iBAAiB,CAAC;IACjC;;;OAGG;IACI,MAAM,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAA8D,CAAC;IACnH;;;OAGG;IACI,MAAM,gBAAgB,EAAE,WAAW,CAAC,iBAAiB,CAAuE,CAAC;IACpI;;;OAGG;IACI,MAAM,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAwF,CAAC;IACrL;;OAEG;IACI,MAAM,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAItH,CAAC;IACF;;OAEG;IACI,MAAM,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAyC,CAAC;IAC9F;;OAEG;IACI,MAAM,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAgC,CAAC;IAC7F;;OAEG;IACI,MAAM,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;KAG7D,CAAC;CACR"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js new file mode 100644 index 00000000..2337682c --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js @@ -0,0 +1,127 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Yy1_BpsocialmediaRequestBuilder_1 = require("./Yy1_BpsocialmediaRequestBuilder"); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +/** + * This class represents the entity "YY1_BPSOCIALMEDIA" of service "YY1_BPSOCIALMEDIA_CDS". + */ +var Yy1_Bpsocialmedia = /** @class */ (function (_super) { + __extends(Yy1_Bpsocialmedia, _super); + function Yy1_Bpsocialmedia() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Returns an entity builder to construct instances `Yy1_Bpsocialmedia`. + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + Yy1_Bpsocialmedia.builder = function () { + return cloud_sdk_core_1.Entity.entityBuilder(Yy1_Bpsocialmedia); + }; + /** + * Returns a request builder to construct requests for operations on the `Yy1_Bpsocialmedia` entity type. + * @returns A `Yy1_Bpsocialmedia` request builder. + */ + Yy1_Bpsocialmedia.requestBuilder = function () { + return new Yy1_BpsocialmediaRequestBuilder_1.Yy1_BpsocialmediaRequestBuilder(); + }; + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Bpsocialmedia`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + Yy1_Bpsocialmedia.customField = function (fieldName) { + return cloud_sdk_core_1.Entity.customFieldSelector(fieldName, Yy1_Bpsocialmedia); + }; + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + Yy1_Bpsocialmedia.prototype.toJSON = function () { + return __assign(__assign({}, this), this._customFields); + }; + /** + * Technical entity name for Yy1_Bpsocialmedia. + */ + Yy1_Bpsocialmedia._entityName = 'YY1_BPSOCIALMEDIA'; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Bpsocialmedia. + */ + Yy1_Bpsocialmedia._serviceName = 'YY1_BPSOCIALMEDIA_CDS'; + /** + * Default url path for the according service. + */ + Yy1_Bpsocialmedia._defaultServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; + return Yy1_Bpsocialmedia; +}(cloud_sdk_core_1.Entity)); +exports.Yy1_Bpsocialmedia = Yy1_Bpsocialmedia; +var Yy1_Socialmediaaccount_Bpso000_1 = require("./Yy1_Socialmediaaccount_Bpso000"); +(function (Yy1_Bpsocialmedia) { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Bpsocialmedia.SAP_UUID = new cloud_sdk_core_1.StringField('SAP_UUID', Yy1_Bpsocialmedia, 'Edm.Guid'); + /** + * Static representation of the [[businessPartner]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Bpsocialmedia.BUSINESS_PARTNER = new cloud_sdk_core_1.StringField('BusinessPartner', Yy1_Bpsocialmedia, 'Edm.String'); + /** + * Static representation of the one-to-many navigation property [[toSocialMediaAccount]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Bpsocialmedia.TO_SOCIAL_MEDIA_ACCOUNT = new cloud_sdk_core_1.Link('to_SocialMediaAccount', Yy1_Bpsocialmedia, Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000); + /** + * All fields of the Yy1_Bpsocialmedia entity. + */ + Yy1_Bpsocialmedia._allFields = [ + Yy1_Bpsocialmedia.SAP_UUID, + Yy1_Bpsocialmedia.BUSINESS_PARTNER, + Yy1_Bpsocialmedia.TO_SOCIAL_MEDIA_ACCOUNT + ]; + /** + * All fields selector. + */ + Yy1_Bpsocialmedia.ALL_FIELDS = new cloud_sdk_core_1.AllFields('*', Yy1_Bpsocialmedia); + /** + * All key fields of the Yy1_Bpsocialmedia entity. + */ + Yy1_Bpsocialmedia._keyFields = [Yy1_Bpsocialmedia.SAP_UUID]; + /** + * Mapping of all key field names to the respective static field property Yy1_Bpsocialmedia. + */ + Yy1_Bpsocialmedia._keys = Yy1_Bpsocialmedia._keyFields.reduce(function (acc, field) { + acc[field.fieldName] = field; + return acc; + }, {}); +})(Yy1_Bpsocialmedia = exports.Yy1_Bpsocialmedia || (exports.Yy1_Bpsocialmedia = {})); +exports.Yy1_Bpsocialmedia = Yy1_Bpsocialmedia; +//# sourceMappingURL=Yy1_Bpsocialmedia.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js.map new file mode 100644 index 00000000..fd4d5b8b --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Bpsocialmedia.js","sourceRoot":"","sources":["Yy1_Bpsocialmedia.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qFAAoF;AACpF,sDAAuH;AAEvH;;GAEG;AACH;IAAuC,qCAAM;IAA7C;;IA6DA,CAAC;IAhCC;;;OAGG;IACI,yBAAO,GAAd;QACE,OAAO,uBAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,gCAAc,GAArB;QACE,OAAO,IAAI,iEAA+B,EAAE,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,6BAAW,GAAlB,UAAmB,SAAiB;QAClC,OAAO,uBAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,kCAAM,GAAN;QACE,6BAAY,IAAI,GAAK,IAAI,CAAC,aAAa,EAAG;IAC5C,CAAC;IA3DD;;OAEG;IACI,6BAAW,GAAG,mBAAmB,CAAC;IACzC;;;OAGG;IACI,8BAAY,GAAG,uBAAuB,CAAC;IAC9C;;OAEG;IACI,qCAAmB,GAAG,0CAA0C,CAAC;IAgD1E,wBAAC;CAAA,AA7DD,CAAuC,uBAAM,GA6D5C;AA7DY,8CAAiB;AA+D9B,mFAAsH;AActH,WAAiB,iBAAiB;IAChC;;;OAGG;IACU,0BAAQ,GAAmC,IAAI,4BAAW,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACnH;;;OAGG;IACU,kCAAgB,GAAmC,IAAI,4BAAW,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACpI;;;OAGG;IACU,yCAAuB,GAA4D,IAAI,qBAAI,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,+DAA8B,CAAC,CAAC;IACrL;;OAEG;IACU,4BAAU,GAAoG;QACzH,iBAAiB,CAAC,QAAQ;QAC1B,iBAAiB,CAAC,gBAAgB;QAClC,iBAAiB,CAAC,uBAAuB;KAC1C,CAAC;IACF;;OAEG;IACU,4BAAU,GAAiC,IAAI,0BAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC9F;;OAEG;IACU,4BAAU,GAAyC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7F;;OAEG;IACU,uBAAK,GAAsD,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,GAAsD,EAAE,KAAoC;QACvM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,EAvCgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAuCjC;AApHY,8CAAiB"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.ts new file mode 100644 index 00000000..e69ea6e7 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia.ts @@ -0,0 +1,127 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { Yy1_BpsocialmediaRequestBuilder } from './Yy1_BpsocialmediaRequestBuilder'; +import { StringField, Link, AllFields, CustomField, Entity, EntityBuilderType, Selectable } from '@sap/cloud-sdk-core'; + +/** + * This class represents the entity "YY1_BPSOCIALMEDIA" of service "YY1_BPSOCIALMEDIA_CDS". + */ +export class Yy1_Bpsocialmedia extends Entity implements Yy1_BpsocialmediaType { + /** + * Technical entity name for Yy1_Bpsocialmedia. + */ + static _entityName = 'YY1_BPSOCIALMEDIA'; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Bpsocialmedia. + */ + static _serviceName = 'YY1_BPSOCIALMEDIA_CDS'; + /** + * Default url path for the according service. + */ + static _defaultServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + */ + sapUuid!: string; + /** + * Business Partner. + * Maximum length: 10. + * @nullable + */ + businessPartner?: string; + /** + * One-to-many navigation property to the [[Yy1_Socialmediaaccount_Bpso000]] entity. + */ + toSocialMediaAccount!: Yy1_Socialmediaaccount_Bpso000[]; + + /** + * Returns an entity builder to construct instances `Yy1_Bpsocialmedia`. + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + static builder(): EntityBuilderType { + return Entity.entityBuilder(Yy1_Bpsocialmedia); + } + + /** + * Returns a request builder to construct requests for operations on the `Yy1_Bpsocialmedia` entity type. + * @returns A `Yy1_Bpsocialmedia` request builder. + */ + static requestBuilder(): Yy1_BpsocialmediaRequestBuilder { + return new Yy1_BpsocialmediaRequestBuilder(); + } + + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Bpsocialmedia`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Bpsocialmedia`. + */ + static customField(fieldName: string): CustomField { + return Entity.customFieldSelector(fieldName, Yy1_Bpsocialmedia); + } + + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + toJSON(): { [key: string]: any } { + return { ...this, ...this._customFields }; + } +} + +import { Yy1_Socialmediaaccount_Bpso000, Yy1_Socialmediaaccount_Bpso000Type } from './Yy1_Socialmediaaccount_Bpso000'; + +export interface Yy1_BpsocialmediaType { + sapUuid: string; + businessPartner?: string; + toSocialMediaAccount: Yy1_Socialmediaaccount_Bpso000Type[]; +} + +export interface Yy1_BpsocialmediaTypeForceMandatory { + sapUuid: string; + businessPartner: string; + toSocialMediaAccount: Yy1_Socialmediaaccount_Bpso000Type[]; +} + +export namespace Yy1_Bpsocialmedia { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const SAP_UUID: StringField = new StringField('SAP_UUID', Yy1_Bpsocialmedia, 'Edm.Guid'); + /** + * Static representation of the [[businessPartner]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const BUSINESS_PARTNER: StringField = new StringField('BusinessPartner', Yy1_Bpsocialmedia, 'Edm.String'); + /** + * Static representation of the one-to-many navigation property [[toSocialMediaAccount]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const TO_SOCIAL_MEDIA_ACCOUNT: Link = new Link('to_SocialMediaAccount', Yy1_Bpsocialmedia, Yy1_Socialmediaaccount_Bpso000); + /** + * All fields of the Yy1_Bpsocialmedia entity. + */ + export const _allFields: Array | Link> = [ + Yy1_Bpsocialmedia.SAP_UUID, + Yy1_Bpsocialmedia.BUSINESS_PARTNER, + Yy1_Bpsocialmedia.TO_SOCIAL_MEDIA_ACCOUNT + ]; + /** + * All fields selector. + */ + export const ALL_FIELDS: AllFields = new AllFields('*', Yy1_Bpsocialmedia); + /** + * All key fields of the Yy1_Bpsocialmedia entity. + */ + export const _keyFields: Array> = [Yy1_Bpsocialmedia.SAP_UUID]; + /** + * Mapping of all key field names to the respective static field property Yy1_Bpsocialmedia. + */ + export const _keys: { [keys: string]: Selectable } = Yy1_Bpsocialmedia._keyFields.reduce((acc: { [keys: string]: Selectable }, field: Selectable) => { + acc[field.fieldName] = field; + return acc; + }, {}); +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts new file mode 100644 index 00000000..dd42c725 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts @@ -0,0 +1,46 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { RequestBuilder, GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia } from './Yy1_Bpsocialmedia'; +/** + * Request builder class for operations supported on the [[Yy1_Bpsocialmedia]] entity. + */ +export declare class Yy1_BpsocialmediaRequestBuilder extends RequestBuilder { + /** + * Returns a request builder for retrieving one `Yy1_Bpsocialmedia` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Bpsocialmedia.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Bpsocialmedia` entity based on its keys. + */ + getByKey(sapUuid: string): GetByKeyRequestBuilder; + /** + * Returns a request builder for querying all `Yy1_Bpsocialmedia` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Bpsocialmedia` entities. + */ + getAll(): GetAllRequestBuilder; + /** + * Returns a request builder for creating a `Yy1_Bpsocialmedia` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Bpsocialmedia`. + */ + create(entity: Yy1_Bpsocialmedia): CreateRequestBuilder; + /** + * Returns a request builder for updating an entity of type `Yy1_Bpsocialmedia`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Bpsocialmedia`. + */ + update(entity: Yy1_Bpsocialmedia): UpdateRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Bpsocialmedia`. + * @param sapUuid Key property. See [[Yy1_Bpsocialmedia.sapUuid]]. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Bpsocialmedia`. + */ + delete(sapUuid: string): DeleteRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Bpsocialmedia`. + * @param entity Pass the entity to be deleted. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Bpsocialmedia` by taking the entity as a parameter. + */ + delete(entity: Yy1_Bpsocialmedia): DeleteRequestBuilder; +} +//# sourceMappingURL=Yy1_BpsocialmediaRequestBuilder.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts.map new file mode 100644 index 00000000..0edc375e --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_BpsocialmediaRequestBuilder.d.ts","sourceRoot":"","sources":["Yy1_BpsocialmediaRequestBuilder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrK,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBAAa,+BAAgC,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IACpF;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAAC,iBAAiB,CAAC;IAIpE;;;OAGG;IACH,MAAM,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;IAIjD;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;IAI1E;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;IAI1E;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;IAChE;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;CAI3E"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js new file mode 100644 index 00000000..ef2fd49e --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js @@ -0,0 +1,66 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +var Yy1_Bpsocialmedia_1 = require("./Yy1_Bpsocialmedia"); +/** + * Request builder class for operations supported on the [[Yy1_Bpsocialmedia]] entity. + */ +var Yy1_BpsocialmediaRequestBuilder = /** @class */ (function (_super) { + __extends(Yy1_BpsocialmediaRequestBuilder, _super); + function Yy1_BpsocialmediaRequestBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Returns a request builder for retrieving one `Yy1_Bpsocialmedia` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Bpsocialmedia.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Bpsocialmedia` entity based on its keys. + */ + Yy1_BpsocialmediaRequestBuilder.prototype.getByKey = function (sapUuid) { + return new cloud_sdk_core_1.GetByKeyRequestBuilder(Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia, { SAP_UUID: sapUuid }); + }; + /** + * Returns a request builder for querying all `Yy1_Bpsocialmedia` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Bpsocialmedia` entities. + */ + Yy1_BpsocialmediaRequestBuilder.prototype.getAll = function () { + return new cloud_sdk_core_1.GetAllRequestBuilder(Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia); + }; + /** + * Returns a request builder for creating a `Yy1_Bpsocialmedia` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Bpsocialmedia`. + */ + Yy1_BpsocialmediaRequestBuilder.prototype.create = function (entity) { + return new cloud_sdk_core_1.CreateRequestBuilder(Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia, entity); + }; + /** + * Returns a request builder for updating an entity of type `Yy1_Bpsocialmedia`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Bpsocialmedia`. + */ + Yy1_BpsocialmediaRequestBuilder.prototype.update = function (entity) { + return new cloud_sdk_core_1.UpdateRequestBuilder(Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia, entity); + }; + Yy1_BpsocialmediaRequestBuilder.prototype.delete = function (sapUuidOrEntity) { + return new cloud_sdk_core_1.DeleteRequestBuilder(Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia, sapUuidOrEntity instanceof Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia ? sapUuidOrEntity : { SAP_UUID: sapUuidOrEntity }); + }; + return Yy1_BpsocialmediaRequestBuilder; +}(cloud_sdk_core_1.RequestBuilder)); +exports.Yy1_BpsocialmediaRequestBuilder = Yy1_BpsocialmediaRequestBuilder; +//# sourceMappingURL=Yy1_BpsocialmediaRequestBuilder.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js.map new file mode 100644 index 00000000..ece2d708 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_BpsocialmediaRequestBuilder.js","sourceRoot":"","sources":["Yy1_BpsocialmediaRequestBuilder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;AAEH,sDAAqK;AACrK,yDAAwD;AAExD;;GAEG;AACH;IAAqD,mDAAiC;IAAtF;;IAmDA,CAAC;IAlDC;;;;OAIG;IACH,kDAAQ,GAAR,UAAS,OAAe;QACtB,OAAO,IAAI,uCAAsB,CAAC,qCAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,gDAAM,GAAN;QACE,OAAO,IAAI,qCAAoB,CAAC,qCAAiB,CAAC,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,gDAAM,GAAN,UAAO,MAAyB;QAC9B,OAAO,IAAI,qCAAoB,CAAC,qCAAiB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,gDAAM,GAAN,UAAO,MAAyB;QAC9B,OAAO,IAAI,qCAAoB,CAAC,qCAAiB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAcD,gDAAM,GAAN,UAAO,eAAoB;QACzB,OAAO,IAAI,qCAAoB,CAAC,qCAAiB,EAAE,eAAe,YAAY,qCAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAgB,EAAE,CAAC,CAAC;IACtJ,CAAC;IACH,sCAAC;AAAD,CAAC,AAnDD,CAAqD,+BAAc,GAmDlE;AAnDY,0EAA+B"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.ts new file mode 100644 index 00000000..6c90c998 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_BpsocialmediaRequestBuilder.ts @@ -0,0 +1,62 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { RequestBuilder, GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia } from './Yy1_Bpsocialmedia'; + +/** + * Request builder class for operations supported on the [[Yy1_Bpsocialmedia]] entity. + */ +export class Yy1_BpsocialmediaRequestBuilder extends RequestBuilder { + /** + * Returns a request builder for retrieving one `Yy1_Bpsocialmedia` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Bpsocialmedia.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Bpsocialmedia` entity based on its keys. + */ + getByKey(sapUuid: string): GetByKeyRequestBuilder { + return new GetByKeyRequestBuilder(Yy1_Bpsocialmedia, { SAP_UUID: sapUuid }); + } + + /** + * Returns a request builder for querying all `Yy1_Bpsocialmedia` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Bpsocialmedia` entities. + */ + getAll(): GetAllRequestBuilder { + return new GetAllRequestBuilder(Yy1_Bpsocialmedia); + } + + /** + * Returns a request builder for creating a `Yy1_Bpsocialmedia` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Bpsocialmedia`. + */ + create(entity: Yy1_Bpsocialmedia): CreateRequestBuilder { + return new CreateRequestBuilder(Yy1_Bpsocialmedia, entity); + } + + /** + * Returns a request builder for updating an entity of type `Yy1_Bpsocialmedia`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Bpsocialmedia`. + */ + update(entity: Yy1_Bpsocialmedia): UpdateRequestBuilder { + return new UpdateRequestBuilder(Yy1_Bpsocialmedia, entity); + } + + /** + * Returns a request builder for deleting an entity of type `Yy1_Bpsocialmedia`. + * @param sapUuid Key property. See [[Yy1_Bpsocialmedia.sapUuid]]. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Bpsocialmedia`. + */ + delete(sapUuid: string): DeleteRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Bpsocialmedia`. + * @param entity Pass the entity to be deleted. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Bpsocialmedia` by taking the entity as a parameter. + */ + delete(entity: Yy1_Bpsocialmedia): DeleteRequestBuilder; + delete(sapUuidOrEntity: any): DeleteRequestBuilder { + return new DeleteRequestBuilder(Yy1_Bpsocialmedia, sapUuidOrEntity instanceof Yy1_Bpsocialmedia ? sapUuidOrEntity : { SAP_UUID: sapUuidOrEntity! }); + } +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts new file mode 100644 index 00000000..83d368d9 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts @@ -0,0 +1,132 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { Yy1_Socialmediaaccount_Bpso000RequestBuilder } from './Yy1_Socialmediaaccount_Bpso000RequestBuilder'; +import { StringField, OneToOneLink, AllFields, CustomField, Entity, EntityBuilderType, Selectable } from '@sap/cloud-sdk-core'; +/** + * This class represents the entity "YY1_SOCIALMEDIAACCOUNT_BPSO000" of service "YY1_BPSOCIALMEDIA_CDS". + */ +export declare class Yy1_Socialmediaaccount_Bpso000 extends Entity implements Yy1_Socialmediaaccount_Bpso000Type { + /** + * Technical entity name for Yy1_Socialmediaaccount_Bpso000. + */ + static _entityName: string; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Socialmediaaccount_Bpso000. + */ + static _serviceName: string; + /** + * Default url path for the according service. + */ + static _defaultServicePath: string; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + */ + sapUuid: string; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + * @nullable + */ + sapParentUuid?: string; + /** + * Service. + * Maximum length: 10. + * @nullable + */ + service?: string; + /** + * Account. + * Maximum length: 60. + * @nullable + */ + account?: string; + /** + * One-to-one navigation property to the [[Yy1_Bpsocialmedia]] entity. + */ + toBpsocialmedia: Yy1_Bpsocialmedia; + /** + * Returns an entity builder to construct instances `Yy1_Socialmediaaccount_Bpso000`. + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + static builder(): EntityBuilderType; + /** + * Returns a request builder to construct requests for operations on the `Yy1_Socialmediaaccount_Bpso000` entity type. + * @returns A `Yy1_Socialmediaaccount_Bpso000` request builder. + */ + static requestBuilder(): Yy1_Socialmediaaccount_Bpso000RequestBuilder; + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Socialmediaaccount_Bpso000`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + static customField(fieldName: string): CustomField; + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + toJSON(): { + [key: string]: any; + }; +} +import { Yy1_Bpsocialmedia, Yy1_BpsocialmediaType } from './Yy1_Bpsocialmedia'; +export interface Yy1_Socialmediaaccount_Bpso000Type { + sapUuid: string; + sapParentUuid?: string; + service?: string; + account?: string; + toBpsocialmedia: Yy1_BpsocialmediaType; +} +export interface Yy1_Socialmediaaccount_Bpso000TypeForceMandatory { + sapUuid: string; + sapParentUuid: string; + service: string; + account: string; + toBpsocialmedia: Yy1_BpsocialmediaType; +} +export declare namespace Yy1_Socialmediaaccount_Bpso000 { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const SAP_UUID: StringField; + /** + * Static representation of the [[sapParentUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const SAP_PARENT_UUID: StringField; + /** + * Static representation of the [[service]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const SERVICE: StringField; + /** + * Static representation of the [[account]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const ACCOUNT: StringField; + /** + * Static representation of the one-to-one navigation property [[toBpsocialmedia]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + const TO_BPSOCIALMEDIA: OneToOneLink; + /** + * All fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + const _allFields: Array | OneToOneLink>; + /** + * All fields selector. + */ + const ALL_FIELDS: AllFields; + /** + * All key fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + const _keyFields: Array>; + /** + * Mapping of all key field names to the respective static field property Yy1_Socialmediaaccount_Bpso000. + */ + const _keys: { + [keys: string]: Selectable; + }; +} +//# sourceMappingURL=Yy1_Socialmediaaccount_Bpso000.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts.map new file mode 100644 index 00000000..828c3b91 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Socialmediaaccount_Bpso000.d.ts","sourceRoot":"","sources":["Yy1_Socialmediaaccount_Bpso000.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,4CAA4C,EAAE,MAAM,gDAAgD,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/H;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,MAAO,YAAW,kCAAkC;IACtG;;OAEG;IACH,MAAM,CAAC,WAAW,SAAoC;IACtD;;;OAGG;IACH,MAAM,CAAC,YAAY,SAA2B;IAC9C;;OAEG;IACH,MAAM,CAAC,mBAAmB,SAA8C;IACxE;;OAEG;IACH,OAAO,EAAG,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,eAAe,EAAG,iBAAiB,CAAC;IAEpC;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,8BAA8B,EAAE,gDAAgD,CAAC;IAIrH;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,4CAA4C;IAIrE;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,8BAA8B,CAAC;IAIlF;;;OAGG;IACH,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAGjC;AAED,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,WAAW,kCAAkC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,gDAAgD;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,qBAAqB,CAAC;CACxC;AAED,yBAAiB,8BAA8B,CAAC;IAC9C;;;OAGG;IACI,MAAM,QAAQ,EAAE,WAAW,CAAC,8BAA8B,CAA2E,CAAC;IAC7I;;;OAGG;IACI,MAAM,eAAe,EAAE,WAAW,CAAC,8BAA8B,CAAkF,CAAC;IAC3J;;;OAGG;IACI,MAAM,OAAO,EAAE,WAAW,CAAC,8BAA8B,CAA4E,CAAC;IAC7I;;;OAGG;IACI,MAAM,OAAO,EAAE,WAAW,CAAC,8BAA8B,CAA4E,CAAC;IAC7I;;;OAGG;IACI,MAAM,gBAAgB,EAAE,YAAY,CAAC,8BAA8B,EAAE,iBAAiB,CAA2F,CAAC;IACzL;;OAEG;IACI,MAAM,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,8BAA8B,CAAC,GAAG,YAAY,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,CAM3I,CAAC;IACF;;OAEG;IACI,MAAM,UAAU,EAAE,SAAS,CAAC,8BAA8B,CAAsD,CAAC;IACxH;;OAEG;IACI,MAAM,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAA6C,CAAC;IACvH;;OAEG;IACI,MAAM,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,8BAA8B,CAAC,CAAA;KAG1E,CAAC;CACR"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js new file mode 100644 index 00000000..9ceac98c --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js @@ -0,0 +1,139 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Yy1_Socialmediaaccount_Bpso000RequestBuilder_1 = require("./Yy1_Socialmediaaccount_Bpso000RequestBuilder"); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +/** + * This class represents the entity "YY1_SOCIALMEDIAACCOUNT_BPSO000" of service "YY1_BPSOCIALMEDIA_CDS". + */ +var Yy1_Socialmediaaccount_Bpso000 = /** @class */ (function (_super) { + __extends(Yy1_Socialmediaaccount_Bpso000, _super); + function Yy1_Socialmediaaccount_Bpso000() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Returns an entity builder to construct instances `Yy1_Socialmediaaccount_Bpso000`. + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + Yy1_Socialmediaaccount_Bpso000.builder = function () { + return cloud_sdk_core_1.Entity.entityBuilder(Yy1_Socialmediaaccount_Bpso000); + }; + /** + * Returns a request builder to construct requests for operations on the `Yy1_Socialmediaaccount_Bpso000` entity type. + * @returns A `Yy1_Socialmediaaccount_Bpso000` request builder. + */ + Yy1_Socialmediaaccount_Bpso000.requestBuilder = function () { + return new Yy1_Socialmediaaccount_Bpso000RequestBuilder_1.Yy1_Socialmediaaccount_Bpso000RequestBuilder(); + }; + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Socialmediaaccount_Bpso000`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + Yy1_Socialmediaaccount_Bpso000.customField = function (fieldName) { + return cloud_sdk_core_1.Entity.customFieldSelector(fieldName, Yy1_Socialmediaaccount_Bpso000); + }; + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + Yy1_Socialmediaaccount_Bpso000.prototype.toJSON = function () { + return __assign(__assign({}, this), this._customFields); + }; + /** + * Technical entity name for Yy1_Socialmediaaccount_Bpso000. + */ + Yy1_Socialmediaaccount_Bpso000._entityName = 'YY1_SOCIALMEDIAACCOUNT_BPSO000'; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Socialmediaaccount_Bpso000. + */ + Yy1_Socialmediaaccount_Bpso000._serviceName = 'YY1_BPSOCIALMEDIA_CDS'; + /** + * Default url path for the according service. + */ + Yy1_Socialmediaaccount_Bpso000._defaultServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; + return Yy1_Socialmediaaccount_Bpso000; +}(cloud_sdk_core_1.Entity)); +exports.Yy1_Socialmediaaccount_Bpso000 = Yy1_Socialmediaaccount_Bpso000; +var Yy1_Bpsocialmedia_1 = require("./Yy1_Bpsocialmedia"); +(function (Yy1_Socialmediaaccount_Bpso000) { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Socialmediaaccount_Bpso000.SAP_UUID = new cloud_sdk_core_1.StringField('SAP_UUID', Yy1_Socialmediaaccount_Bpso000, 'Edm.Guid'); + /** + * Static representation of the [[sapParentUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Socialmediaaccount_Bpso000.SAP_PARENT_UUID = new cloud_sdk_core_1.StringField('SAP_PARENT_UUID', Yy1_Socialmediaaccount_Bpso000, 'Edm.Guid'); + /** + * Static representation of the [[service]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Socialmediaaccount_Bpso000.SERVICE = new cloud_sdk_core_1.StringField('Service', Yy1_Socialmediaaccount_Bpso000, 'Edm.String'); + /** + * Static representation of the [[account]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Socialmediaaccount_Bpso000.ACCOUNT = new cloud_sdk_core_1.StringField('Account', Yy1_Socialmediaaccount_Bpso000, 'Edm.String'); + /** + * Static representation of the one-to-one navigation property [[toBpsocialmedia]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + Yy1_Socialmediaaccount_Bpso000.TO_BPSOCIALMEDIA = new cloud_sdk_core_1.OneToOneLink('to_BPSOCIALMEDIA', Yy1_Socialmediaaccount_Bpso000, Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia); + /** + * All fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + Yy1_Socialmediaaccount_Bpso000._allFields = [ + Yy1_Socialmediaaccount_Bpso000.SAP_UUID, + Yy1_Socialmediaaccount_Bpso000.SAP_PARENT_UUID, + Yy1_Socialmediaaccount_Bpso000.SERVICE, + Yy1_Socialmediaaccount_Bpso000.ACCOUNT, + Yy1_Socialmediaaccount_Bpso000.TO_BPSOCIALMEDIA + ]; + /** + * All fields selector. + */ + Yy1_Socialmediaaccount_Bpso000.ALL_FIELDS = new cloud_sdk_core_1.AllFields('*', Yy1_Socialmediaaccount_Bpso000); + /** + * All key fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + Yy1_Socialmediaaccount_Bpso000._keyFields = [Yy1_Socialmediaaccount_Bpso000.SAP_UUID]; + /** + * Mapping of all key field names to the respective static field property Yy1_Socialmediaaccount_Bpso000. + */ + Yy1_Socialmediaaccount_Bpso000._keys = Yy1_Socialmediaaccount_Bpso000._keyFields.reduce(function (acc, field) { + acc[field.fieldName] = field; + return acc; + }, {}); +})(Yy1_Socialmediaaccount_Bpso000 = exports.Yy1_Socialmediaaccount_Bpso000 || (exports.Yy1_Socialmediaaccount_Bpso000 = {})); +exports.Yy1_Socialmediaaccount_Bpso000 = Yy1_Socialmediaaccount_Bpso000; +//# sourceMappingURL=Yy1_Socialmediaaccount_Bpso000.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js.map new file mode 100644 index 00000000..c5342ed6 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Socialmediaaccount_Bpso000.js","sourceRoot":"","sources":["Yy1_Socialmediaaccount_Bpso000.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+GAA8G;AAC9G,sDAA+H;AAE/H;;GAEG;AACH;IAAoD,kDAAM;IAA1D;;IAwEA,CAAC;IAhCC;;;OAGG;IACI,sCAAO,GAAd;QACE,OAAO,uBAAM,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACI,6CAAc,GAArB;QACE,OAAO,IAAI,2FAA4C,EAAE,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACI,0CAAW,GAAlB,UAAmB,SAAiB;QAClC,OAAO,uBAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,+CAAM,GAAN;QACE,6BAAY,IAAI,GAAK,IAAI,CAAC,aAAa,EAAG;IAC5C,CAAC;IAtED;;OAEG;IACI,0CAAW,GAAG,gCAAgC,CAAC;IACtD;;;OAGG;IACI,2CAAY,GAAG,uBAAuB,CAAC;IAC9C;;OAEG;IACI,kDAAmB,GAAG,0CAA0C,CAAC;IA2D1E,qCAAC;CAAA,AAxED,CAAoD,uBAAM,GAwEzD;AAxEY,wEAA8B;AA0E3C,yDAA+E;AAkB/E,WAAiB,8BAA8B;IAC7C;;;OAGG;IACU,uCAAQ,GAAgD,IAAI,4BAAW,CAAC,UAAU,EAAE,8BAA8B,EAAE,UAAU,CAAC,CAAC;IAC7I;;;OAGG;IACU,8CAAe,GAAgD,IAAI,4BAAW,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,UAAU,CAAC,CAAC;IAC3J;;;OAGG;IACU,sCAAO,GAAgD,IAAI,4BAAW,CAAC,SAAS,EAAE,8BAA8B,EAAE,YAAY,CAAC,CAAC;IAC7I;;;OAGG;IACU,sCAAO,GAAgD,IAAI,4BAAW,CAAC,SAAS,EAAE,8BAA8B,EAAE,YAAY,CAAC,CAAC;IAC7I;;;OAGG;IACU,+CAAgB,GAAoE,IAAI,6BAAY,CAAC,kBAAkB,EAAE,8BAA8B,EAAE,qCAAiB,CAAC,CAAC;IACzL;;OAEG;IACU,yCAAU,GAAyH;QAC9I,8BAA8B,CAAC,QAAQ;QACvC,8BAA8B,CAAC,eAAe;QAC9C,8BAA8B,CAAC,OAAO;QACtC,8BAA8B,CAAC,OAAO;QACtC,8BAA8B,CAAC,gBAAgB;KAChD,CAAC;IACF;;OAEG;IACU,yCAAU,GAA8C,IAAI,0BAAS,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;IACxH;;OAEG;IACU,yCAAU,GAAsD,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACvH;;OAEG;IACU,oCAAK,GAAmE,8BAA8B,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,GAAmE,EAAE,KAAiD;QAC3P,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,EAnDgB,8BAA8B,GAA9B,sCAA8B,KAA9B,sCAA8B,QAmD9C;AA/IY,wEAA8B"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.ts new file mode 100644 index 00000000..669fa35d --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000.ts @@ -0,0 +1,154 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { Yy1_Socialmediaaccount_Bpso000RequestBuilder } from './Yy1_Socialmediaaccount_Bpso000RequestBuilder'; +import { StringField, OneToOneLink, AllFields, CustomField, Entity, EntityBuilderType, Selectable } from '@sap/cloud-sdk-core'; + +/** + * This class represents the entity "YY1_SOCIALMEDIAACCOUNT_BPSO000" of service "YY1_BPSOCIALMEDIA_CDS". + */ +export class Yy1_Socialmediaaccount_Bpso000 extends Entity implements Yy1_Socialmediaaccount_Bpso000Type { + /** + * Technical entity name for Yy1_Socialmediaaccount_Bpso000. + */ + static _entityName = 'YY1_SOCIALMEDIAACCOUNT_BPSO000'; + /** + * @deprecated Since v1.0.1 Use [[_defaultServicePath]] instead. + * Technical service name for Yy1_Socialmediaaccount_Bpso000. + */ + static _serviceName = 'YY1_BPSOCIALMEDIA_CDS'; + /** + * Default url path for the according service. + */ + static _defaultServicePath = '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS'; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + */ + sapUuid!: string; + /** + * 16 Byte UUID in 16 Bytes (Raw Format). + * @nullable + */ + sapParentUuid?: string; + /** + * Service. + * Maximum length: 10. + * @nullable + */ + service?: string; + /** + * Account. + * Maximum length: 60. + * @nullable + */ + account?: string; + /** + * One-to-one navigation property to the [[Yy1_Bpsocialmedia]] entity. + */ + toBpsocialmedia!: Yy1_Bpsocialmedia; + + /** + * Returns an entity builder to construct instances `Yy1_Socialmediaaccount_Bpso000`. + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + static builder(): EntityBuilderType { + return Entity.entityBuilder(Yy1_Socialmediaaccount_Bpso000); + } + + /** + * Returns a request builder to construct requests for operations on the `Yy1_Socialmediaaccount_Bpso000` entity type. + * @returns A `Yy1_Socialmediaaccount_Bpso000` request builder. + */ + static requestBuilder(): Yy1_Socialmediaaccount_Bpso000RequestBuilder { + return new Yy1_Socialmediaaccount_Bpso000RequestBuilder(); + } + + /** + * Returns a selectable object that allows the selection of custom field in a get request for the entity `Yy1_Socialmediaaccount_Bpso000`. + * @param fieldName Name of the custom field to select + * @returns A builder that constructs instances of entity type `Yy1_Socialmediaaccount_Bpso000`. + */ + static customField(fieldName: string): CustomField { + return Entity.customFieldSelector(fieldName, Yy1_Socialmediaaccount_Bpso000); + } + + /** + * Overwrites the default toJSON method so that all instance variables as well as all custom fields of the entity are returned. + * @returns An object containing all instance variables + custom fields. + */ + toJSON(): { [key: string]: any } { + return { ...this, ...this._customFields }; + } +} + +import { Yy1_Bpsocialmedia, Yy1_BpsocialmediaType } from './Yy1_Bpsocialmedia'; + +export interface Yy1_Socialmediaaccount_Bpso000Type { + sapUuid: string; + sapParentUuid?: string; + service?: string; + account?: string; + toBpsocialmedia: Yy1_BpsocialmediaType; +} + +export interface Yy1_Socialmediaaccount_Bpso000TypeForceMandatory { + sapUuid: string; + sapParentUuid: string; + service: string; + account: string; + toBpsocialmedia: Yy1_BpsocialmediaType; +} + +export namespace Yy1_Socialmediaaccount_Bpso000 { + /** + * Static representation of the [[sapUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const SAP_UUID: StringField = new StringField('SAP_UUID', Yy1_Socialmediaaccount_Bpso000, 'Edm.Guid'); + /** + * Static representation of the [[sapParentUuid]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const SAP_PARENT_UUID: StringField = new StringField('SAP_PARENT_UUID', Yy1_Socialmediaaccount_Bpso000, 'Edm.Guid'); + /** + * Static representation of the [[service]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const SERVICE: StringField = new StringField('Service', Yy1_Socialmediaaccount_Bpso000, 'Edm.String'); + /** + * Static representation of the [[account]] property for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const ACCOUNT: StringField = new StringField('Account', Yy1_Socialmediaaccount_Bpso000, 'Edm.String'); + /** + * Static representation of the one-to-one navigation property [[toBpsocialmedia]] for query construction. + * Use to reference this property in query operations such as 'select' in the fluent request API. + */ + export const TO_BPSOCIALMEDIA: OneToOneLink = new OneToOneLink('to_BPSOCIALMEDIA', Yy1_Socialmediaaccount_Bpso000, Yy1_Bpsocialmedia); + /** + * All fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + export const _allFields: Array | OneToOneLink> = [ + Yy1_Socialmediaaccount_Bpso000.SAP_UUID, + Yy1_Socialmediaaccount_Bpso000.SAP_PARENT_UUID, + Yy1_Socialmediaaccount_Bpso000.SERVICE, + Yy1_Socialmediaaccount_Bpso000.ACCOUNT, + Yy1_Socialmediaaccount_Bpso000.TO_BPSOCIALMEDIA + ]; + /** + * All fields selector. + */ + export const ALL_FIELDS: AllFields = new AllFields('*', Yy1_Socialmediaaccount_Bpso000); + /** + * All key fields of the Yy1_Socialmediaaccount_Bpso000 entity. + */ + export const _keyFields: Array> = [Yy1_Socialmediaaccount_Bpso000.SAP_UUID]; + /** + * Mapping of all key field names to the respective static field property Yy1_Socialmediaaccount_Bpso000. + */ + export const _keys: { [keys: string]: Selectable } = Yy1_Socialmediaaccount_Bpso000._keyFields.reduce((acc: { [keys: string]: Selectable }, field: Selectable) => { + acc[field.fieldName] = field; + return acc; + }, {}); +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts new file mode 100644 index 00000000..fe4c7638 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts @@ -0,0 +1,46 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { RequestBuilder, GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder } from '@sap/cloud-sdk-core'; +import { Yy1_Socialmediaaccount_Bpso000 } from './Yy1_Socialmediaaccount_Bpso000'; +/** + * Request builder class for operations supported on the [[Yy1_Socialmediaaccount_Bpso000]] entity. + */ +export declare class Yy1_Socialmediaaccount_Bpso000RequestBuilder extends RequestBuilder { + /** + * Returns a request builder for retrieving one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Socialmediaaccount_Bpso000.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + */ + getByKey(sapUuid: string): GetByKeyRequestBuilder; + /** + * Returns a request builder for querying all `Yy1_Socialmediaaccount_Bpso000` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Socialmediaaccount_Bpso000` entities. + */ + getAll(): GetAllRequestBuilder; + /** + * Returns a request builder for creating a `Yy1_Socialmediaaccount_Bpso000` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + create(entity: Yy1_Socialmediaaccount_Bpso000): CreateRequestBuilder; + /** + * Returns a request builder for updating an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + update(entity: Yy1_Socialmediaaccount_Bpso000): UpdateRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param sapUuid Key property. See [[Yy1_Socialmediaaccount_Bpso000.sapUuid]]. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + delete(sapUuid: string): DeleteRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param entity Pass the entity to be deleted. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Socialmediaaccount_Bpso000` by taking the entity as a parameter. + */ + delete(entity: Yy1_Socialmediaaccount_Bpso000): DeleteRequestBuilder; +} +//# sourceMappingURL=Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts.map new file mode 100644 index 00000000..1867f8fe --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Socialmediaaccount_Bpso000RequestBuilder.d.ts","sourceRoot":"","sources":["Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrK,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF;;GAEG;AACH,qBAAa,4CAA6C,SAAQ,cAAc,CAAC,8BAA8B,CAAC;IAC9G;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAAC,8BAA8B,CAAC;IAIjF;;;OAGG;IACH,MAAM,IAAI,oBAAoB,CAAC,8BAA8B,CAAC;IAI9D;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,8BAA8B,GAAG,oBAAoB,CAAC,8BAA8B,CAAC;IAIpG;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,8BAA8B,GAAG,oBAAoB,CAAC,8BAA8B,CAAC;IAIpG;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC,8BAA8B,CAAC;IAC7E;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,8BAA8B,GAAG,oBAAoB,CAAC,8BAA8B,CAAC;CAIrG"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js new file mode 100644 index 00000000..247f02a8 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js @@ -0,0 +1,66 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +var Yy1_Socialmediaaccount_Bpso000_1 = require("./Yy1_Socialmediaaccount_Bpso000"); +/** + * Request builder class for operations supported on the [[Yy1_Socialmediaaccount_Bpso000]] entity. + */ +var Yy1_Socialmediaaccount_Bpso000RequestBuilder = /** @class */ (function (_super) { + __extends(Yy1_Socialmediaaccount_Bpso000RequestBuilder, _super); + function Yy1_Socialmediaaccount_Bpso000RequestBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * Returns a request builder for retrieving one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Socialmediaaccount_Bpso000.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + */ + Yy1_Socialmediaaccount_Bpso000RequestBuilder.prototype.getByKey = function (sapUuid) { + return new cloud_sdk_core_1.GetByKeyRequestBuilder(Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000, { SAP_UUID: sapUuid }); + }; + /** + * Returns a request builder for querying all `Yy1_Socialmediaaccount_Bpso000` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Socialmediaaccount_Bpso000` entities. + */ + Yy1_Socialmediaaccount_Bpso000RequestBuilder.prototype.getAll = function () { + return new cloud_sdk_core_1.GetAllRequestBuilder(Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000); + }; + /** + * Returns a request builder for creating a `Yy1_Socialmediaaccount_Bpso000` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + Yy1_Socialmediaaccount_Bpso000RequestBuilder.prototype.create = function (entity) { + return new cloud_sdk_core_1.CreateRequestBuilder(Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000, entity); + }; + /** + * Returns a request builder for updating an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + Yy1_Socialmediaaccount_Bpso000RequestBuilder.prototype.update = function (entity) { + return new cloud_sdk_core_1.UpdateRequestBuilder(Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000, entity); + }; + Yy1_Socialmediaaccount_Bpso000RequestBuilder.prototype.delete = function (sapUuidOrEntity) { + return new cloud_sdk_core_1.DeleteRequestBuilder(Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000, sapUuidOrEntity instanceof Yy1_Socialmediaaccount_Bpso000_1.Yy1_Socialmediaaccount_Bpso000 ? sapUuidOrEntity : { SAP_UUID: sapUuidOrEntity }); + }; + return Yy1_Socialmediaaccount_Bpso000RequestBuilder; +}(cloud_sdk_core_1.RequestBuilder)); +exports.Yy1_Socialmediaaccount_Bpso000RequestBuilder = Yy1_Socialmediaaccount_Bpso000RequestBuilder; +//# sourceMappingURL=Yy1_Socialmediaaccount_Bpso000RequestBuilder.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js.map new file mode 100644 index 00000000..0448fa9b --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Yy1_Socialmediaaccount_Bpso000RequestBuilder.js","sourceRoot":"","sources":["Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;AAEH,sDAAqK;AACrK,mFAAkF;AAElF;;GAEG;AACH;IAAkE,gEAA8C;IAAhH;;IAmDA,CAAC;IAlDC;;;;OAIG;IACH,+DAAQ,GAAR,UAAS,OAAe;QACtB,OAAO,IAAI,uCAAsB,CAAC,+DAA8B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED;;;OAGG;IACH,6DAAM,GAAN;QACE,OAAO,IAAI,qCAAoB,CAAC,+DAA8B,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,6DAAM,GAAN,UAAO,MAAsC;QAC3C,OAAO,IAAI,qCAAoB,CAAC,+DAA8B,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,6DAAM,GAAN,UAAO,MAAsC;QAC3C,OAAO,IAAI,qCAAoB,CAAC,+DAA8B,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAcD,6DAAM,GAAN,UAAO,eAAoB;QACzB,OAAO,IAAI,qCAAoB,CAAC,+DAA8B,EAAE,eAAe,YAAY,+DAA8B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAgB,EAAE,CAAC,CAAC;IAChL,CAAC;IACH,mDAAC;AAAD,CAAC,AAnDD,CAAkE,+BAAc,GAmD/E;AAnDY,oGAA4C"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts new file mode 100644 index 00000000..9ac0334c --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000RequestBuilder.ts @@ -0,0 +1,62 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { RequestBuilder, GetAllRequestBuilder, GetByKeyRequestBuilder, CreateRequestBuilder, UpdateRequestBuilder, DeleteRequestBuilder } from '@sap/cloud-sdk-core'; +import { Yy1_Socialmediaaccount_Bpso000 } from './Yy1_Socialmediaaccount_Bpso000'; + +/** + * Request builder class for operations supported on the [[Yy1_Socialmediaaccount_Bpso000]] entity. + */ +export class Yy1_Socialmediaaccount_Bpso000RequestBuilder extends RequestBuilder { + /** + * Returns a request builder for retrieving one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + * @param sapUuid Key property. See [[Yy1_Socialmediaaccount_Bpso000.sapUuid]]. + * @returns A request builder for creating requests to retrieve one `Yy1_Socialmediaaccount_Bpso000` entity based on its keys. + */ + getByKey(sapUuid: string): GetByKeyRequestBuilder { + return new GetByKeyRequestBuilder(Yy1_Socialmediaaccount_Bpso000, { SAP_UUID: sapUuid }); + } + + /** + * Returns a request builder for querying all `Yy1_Socialmediaaccount_Bpso000` entities. + * @returns A request builder for creating requests to retrieve all `Yy1_Socialmediaaccount_Bpso000` entities. + */ + getAll(): GetAllRequestBuilder { + return new GetAllRequestBuilder(Yy1_Socialmediaaccount_Bpso000); + } + + /** + * Returns a request builder for creating a `Yy1_Socialmediaaccount_Bpso000` entity. + * @param entity The entity to be created + * @returns A request builder for creating requests that create an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + create(entity: Yy1_Socialmediaaccount_Bpso000): CreateRequestBuilder { + return new CreateRequestBuilder(Yy1_Socialmediaaccount_Bpso000, entity); + } + + /** + * Returns a request builder for updating an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param entity The entity to be updated + * @returns A request builder for creating requests that update an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + update(entity: Yy1_Socialmediaaccount_Bpso000): UpdateRequestBuilder { + return new UpdateRequestBuilder(Yy1_Socialmediaaccount_Bpso000, entity); + } + + /** + * Returns a request builder for deleting an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param sapUuid Key property. See [[Yy1_Socialmediaaccount_Bpso000.sapUuid]]. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Socialmediaaccount_Bpso000`. + */ + delete(sapUuid: string): DeleteRequestBuilder; + /** + * Returns a request builder for deleting an entity of type `Yy1_Socialmediaaccount_Bpso000`. + * @param entity Pass the entity to be deleted. + * @returns A request builder for creating requests that delete an entity of type `Yy1_Socialmediaaccount_Bpso000` by taking the entity as a parameter. + */ + delete(entity: Yy1_Socialmediaaccount_Bpso000): DeleteRequestBuilder; + delete(sapUuidOrEntity: any): DeleteRequestBuilder { + return new DeleteRequestBuilder(Yy1_Socialmediaaccount_Bpso000, sapUuidOrEntity instanceof Yy1_Socialmediaaccount_Bpso000 ? sapUuidOrEntity : { SAP_UUID: sapUuidOrEntity! }); + } +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts new file mode 100644 index 00000000..6d5be807 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts @@ -0,0 +1,25 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +import { FunctionImportRequestBuilder } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia } from './Yy1_Bpsocialmedia'; +/** + * Type of the parameters to be passed to [[yy1BpsocialmediaSapUpsert]]. + */ +export interface Yy1BpsocialmediaSapUpsertParameters { + /** + * Business Partner. + */ + businessPartner: string; +} +/** + * Yy 1 Bpsocialmedia Sap Upsert. + * + * @param parameters Object containing all parameters for the function import. + * @returns A request builder that allows to overwrite some of the values and execute the resultng request. + */ +export declare function yy1BpsocialmediaSapUpsert(parameters: Yy1BpsocialmediaSapUpsertParameters): FunctionImportRequestBuilder; +export declare const functionImports: { + yy1BpsocialmediaSapUpsert: typeof yy1BpsocialmediaSapUpsert; +}; +//# sourceMappingURL=function-imports.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts.map new file mode 100644 index 00000000..efbd348c --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"function-imports.d.ts","sourceRoot":"","sources":["function-imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiC,4BAA4B,EAA2B,MAAM,qBAAqB,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mCAAmC,GAAG,4BAA4B,CAAC,mCAAmC,EAAE,iBAAiB,CAAC,CAM/K;AAED,eAAO,MAAM,eAAe;;CAE3B,CAAC"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js new file mode 100644 index 00000000..377585f3 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js @@ -0,0 +1,24 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +var cloud_sdk_core_1 = require("@sap/cloud-sdk-core"); +var Yy1_Bpsocialmedia_1 = require("./Yy1_Bpsocialmedia"); +/** + * Yy 1 Bpsocialmedia Sap Upsert. + * + * @param parameters Object containing all parameters for the function import. + * @returns A request builder that allows to overwrite some of the values and execute the resultng request. + */ +function yy1BpsocialmediaSapUpsert(parameters) { + var params = { + businessPartner: new cloud_sdk_core_1.FunctionImportParameter('BusinessPartner', 'Edm.String', parameters.businessPartner) + }; + return new cloud_sdk_core_1.FunctionImportRequestBuilder('post', '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS', 'YY1_BPSOCIALMEDIASap_upsert', function (data) { return cloud_sdk_core_1.transformReturnValueForEntity(data, Yy1_Bpsocialmedia_1.Yy1_Bpsocialmedia); }, params); +} +exports.yy1BpsocialmediaSapUpsert = yy1BpsocialmediaSapUpsert; +exports.functionImports = { + yy1BpsocialmediaSapUpsert: yy1BpsocialmediaSapUpsert +}; +//# sourceMappingURL=function-imports.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js.map new file mode 100644 index 00000000..97cbf48e --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"function-imports.js","sourceRoot":"","sources":["function-imports.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,sDAA2H;AAC3H,yDAAwD;AAYxD;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,UAA+C;IACvF,IAAM,MAAM,GAAG;QACb,eAAe,EAAE,IAAI,wCAAuB,CAAC,iBAAiB,EAAE,YAAY,EAAE,UAAU,CAAC,eAAe,CAAC;KAC1G,CAAA;IAED,OAAO,IAAI,6CAA4B,CAAC,MAAM,EAAE,0CAA0C,EAAE,6BAA6B,EAAE,UAAC,IAAI,IAAK,OAAA,8CAA6B,CAAC,IAAI,EAAE,qCAAiB,CAAC,EAAtD,CAAsD,EAAE,MAAM,CAAC,CAAC;AACvM,CAAC;AAND,8DAMC;AAEY,QAAA,eAAe,GAAG;IAC7B,yBAAyB,2BAAA;CAC1B,CAAC"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.ts new file mode 100644 index 00000000..af846e95 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/function-imports.ts @@ -0,0 +1,34 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +import { transformReturnValueForEntity, FunctionImportRequestBuilder, FunctionImportParameter } from '@sap/cloud-sdk-core'; +import { Yy1_Bpsocialmedia } from './Yy1_Bpsocialmedia'; + +/** + * Type of the parameters to be passed to [[yy1BpsocialmediaSapUpsert]]. + */ +export interface Yy1BpsocialmediaSapUpsertParameters { + /** + * Business Partner. + */ + businessPartner: string; +} + +/** + * Yy 1 Bpsocialmedia Sap Upsert. + * + * @param parameters Object containing all parameters for the function import. + * @returns A request builder that allows to overwrite some of the values and execute the resultng request. + */ +export function yy1BpsocialmediaSapUpsert(parameters: Yy1BpsocialmediaSapUpsertParameters): FunctionImportRequestBuilder { + const params = { + businessPartner: new FunctionImportParameter('BusinessPartner', 'Edm.String', parameters.businessPartner) + } + + return new FunctionImportRequestBuilder('post', '/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS', 'YY1_BPSOCIALMEDIASap_upsert', (data) => transformReturnValueForEntity(data, Yy1_Bpsocialmedia), params); +} + +export const functionImports = { + yy1BpsocialmediaSapUpsert +}; diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts new file mode 100644 index 00000000..d9ef3de8 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts @@ -0,0 +1,10 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +export * from './Yy1_Bpsocialmedia'; +export * from './Yy1_Socialmediaaccount_Bpso000'; +export * from './Yy1_BpsocialmediaRequestBuilder'; +export * from './Yy1_Socialmediaaccount_Bpso000RequestBuilder'; +export * from './function-imports'; +export * from './BatchRequest'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts.map new file mode 100644 index 00000000..28daff29 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js new file mode 100644 index 00000000..533c1712 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js @@ -0,0 +1,15 @@ +"use strict"; +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", { value: true }); +__export(require("./Yy1_Bpsocialmedia")); +__export(require("./Yy1_Socialmediaaccount_Bpso000")); +__export(require("./Yy1_BpsocialmediaRequestBuilder")); +__export(require("./Yy1_Socialmediaaccount_Bpso000RequestBuilder")); +__export(require("./function-imports")); +__export(require("./BatchRequest")); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js.map b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js.map new file mode 100644 index 00000000..f2944fae --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAEH,yCAAoC;AACpC,sDAAiD;AACjD,uDAAkD;AAClD,oEAA+D;AAC/D,wCAAmC;AACnC,oCAA+B"} \ No newline at end of file diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.ts b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.ts new file mode 100644 index 00000000..73167e33 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/index.ts @@ -0,0 +1,10 @@ +/*! + * Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. + */ + +export * from './Yy1_Bpsocialmedia'; +export * from './Yy1_Socialmediaaccount_Bpso000'; +export * from './Yy1_BpsocialmediaRequestBuilder'; +export * from './Yy1_Socialmediaaccount_Bpso000RequestBuilder'; +export * from './function-imports'; +export * from './BatchRequest'; diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/package.json b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/package.json new file mode 100644 index 00000000..f825da40 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/package.json @@ -0,0 +1,37 @@ +{ + "name": "yy-1-bpsocialmedia-cds-service", + "version": "1.13.1", + "description": "SAP Cloud SDK for JavaScript: Virtual Data Model (VDM) for service yy-1-bpsocialmedia-cds-service", + "homepage": "https://www.sap.com/cloud-sdk", + "main": "./index.js", + "types": "./index.d.ts", + "publishConfig": { + "access": "public" + }, + "files": [ + "**/*.js", + "**/*.js.map", + "**/*.d.ts", + "**/d.ts.map", + "**/*-csn.json" + ], + "repository": { + "type": "git", + "url": "" + }, + "scripts": { + "compile": "npx tsc", + "doc": "npx typedoc" + }, + "dependencies": { + "@sap/cloud-sdk-core": "^1.13.1" + }, + "peerDependencies": { + "@sap/cloud-sdk-core": "^1.13.1" + }, + "devDependencies": { + "@types/node": "^11.13.5", + "typedoc": "^0.15.0", + "typescript": "3.5.3" + } +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/tsconfig.json b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/tsconfig.json new file mode 100644 index 00000000..a92daf28 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "target": "es5", + "module": "commonjs", + "lib": [ + "esnext" + ], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "diagnostics": true, + "moduleResolution": "node", + "esModuleInterop": true, + "inlineSources": false, + "strict": true + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "dist/**/*", + "test/**/*", + "**/*.spec.ts", + "node_modules/**/*" + ] +} diff --git a/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/typedoc.json b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/typedoc.json new file mode 100644 index 00000000..6d7e30d4 --- /dev/null +++ b/integration-tests/social-media-accounts/odata-client/yy-1-bpsocialmedia-cds-service/typedoc.json @@ -0,0 +1,7 @@ +{ + "out": "documentation", + "exclude": [ + "node_modules/", + "dist/" + ] +} diff --git a/integration-tests/social-media-accounts/read-social-media.spec.ts b/integration-tests/social-media-accounts/read-social-media.spec.ts new file mode 100644 index 00000000..393198cf --- /dev/null +++ b/integration-tests/social-media-accounts/read-social-media.spec.ts @@ -0,0 +1,54 @@ +import { expectPropertiesDefinedForAll } from "../util/expect"; +import { getUrl, startServer, stopServer } from "../util/server"; +import { Yy1_Bpsocialmedia } from "./odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Bpsocialmedia"; +import { Yy1_Socialmediaaccount_Bpso000 } from "./odata-client/yy-1-bpsocialmedia-cds-service/Yy1_Socialmediaaccount_Bpso000"; + +describe('social media', () => { + const SOCIAL_MEDIA_UUID = '00163e30-2f0c-1ee8-a5af-cf6c35b4a827'; + + let server; + let destination; + beforeAll(async () => { + server = await startServer(); + destination = { url: getUrl(server) }; + }); + + afterAll(async () => { + return stopServer(server); + }); + + it('get all with select', async () => { + const socialMediaList = await Yy1_Bpsocialmedia.requestBuilder() + .getAll() + .select( + Yy1_Bpsocialmedia.BUSINESS_PARTNER, + Yy1_Bpsocialmedia.TO_SOCIAL_MEDIA_ACCOUNT.select( + Yy1_Socialmediaaccount_Bpso000.SERVICE, + Yy1_Socialmediaaccount_Bpso000.ACCOUNT + )) + .execute(destination); + + expect(socialMediaList).not.toBeEmpty(); + + const socialMediaAccounts = socialMediaList[0].toSocialMediaAccount; + + expectPropertiesDefinedForAll(socialMediaList, 'businessPartner', 'toSocialMediaAccount'); + expectPropertiesDefinedForAll(socialMediaAccounts, 'service', 'account'); + }); + + it('get by key with select', async () => { + const socialMediaInstance = await Yy1_Bpsocialmedia.requestBuilder() + .getByKey(SOCIAL_MEDIA_UUID) + .select( + Yy1_Bpsocialmedia.BUSINESS_PARTNER, + Yy1_Bpsocialmedia.TO_SOCIAL_MEDIA_ACCOUNT.select( + Yy1_Socialmediaaccount_Bpso000.SERVICE, + Yy1_Socialmediaaccount_Bpso000.ACCOUNT + )) + .execute(destination); + + expect(socialMediaInstance).not.toBeNil(); + expect(socialMediaInstance.businessPartner).toBeDefined(); + expect(socialMediaInstance.toSocialMediaAccount).toBeDefined(); + }); +}); diff --git a/integration-tests/social-media-accounts/service-mapping.json b/integration-tests/social-media-accounts/service-mapping.json new file mode 100644 index 00000000..aeb10375 --- /dev/null +++ b/integration-tests/social-media-accounts/service-mapping.json @@ -0,0 +1,7 @@ +{ + "YY1_BPSOCIALMEDIA_CDS": { + "directoryName": "yy-1-bpsocialmedia-cds-service", + "servicePath": "/sap/opu/odata/sap/YY1_BPSOCIALMEDIA_CDS", + "npmPackageName": "yy-1-bpsocialmedia-cds-service" + } +} diff --git a/integration-tests/util/expect.ts b/integration-tests/util/expect.ts new file mode 100644 index 00000000..6450b5dd --- /dev/null +++ b/integration-tests/util/expect.ts @@ -0,0 +1,47 @@ +import { Constructable, Entity } from "@sap/cloud-sdk-core"; + +export async function getSizeOfUnfilteredResult(entityConstructor: Constructable, destination): Promise { + const businesspartners = await (entityConstructor.requestBuilder() as any) + .getAll() + .execute(destination); + + return businesspartners.length; +} + +export function expectPropertiesNotNilForAll(entities: EntityT[], ...properties: Array) { + entities.forEach(e => { + properties.forEach(p => { + expect(e[p]).not.toBeNil(); + }); + }); +} + +export function expectPropertiesNilForAll(entities: EntityT[], ...properties: Array) { + entities.forEach(e => { + properties.forEach(p => { + expect(e[p]).toBeNil(); + }); + }); +} + +export function expectPropertiesDefinedForAll(entities: EntityT[], ...properties: Array) { + entities.forEach(e => { + properties.forEach(p => { + expect(e[p]).toBeDefined(); + }); + }); +} + +export function expectPropertiesUndefinedForAll(entities: EntityT[], ...properties: Array) { + entities.forEach(e => { + properties.forEach(p => { + expect(e[p]).toBeUndefined(); + }); + }); +} + +export function expectProperyEqualsForAll(entities: EntityT[], property: keyof EntityT, value) { + entities.forEach(e => { + expect(e[property]).toEqual(value); + }); +} diff --git a/integration-tests/util/request.ts b/integration-tests/util/request.ts new file mode 100644 index 00000000..9b587df4 --- /dev/null +++ b/integration-tests/util/request.ts @@ -0,0 +1,47 @@ +import { BusinessPartner, BusinessPartnerAddress } from "@sap/cloud-sdk-vdm-business-partner-service"; + + +export function createBusinessPartnerRequest(firstName: string) { + const lastName = generateRandomName(); + return BusinessPartner.requestBuilder() + .create( + BusinessPartner.builder() + .firstName(firstName) + .lastName(lastName) + .businessPartnerFullName(`${firstName} ${lastName}`) + .businessPartnerCategory('1') + .isFemale(true) + .build() + ); +} + +export function retrieveBusinessPartnerRequest(businessPartnerId: string) { + return BusinessPartner.requestBuilder() + .getByKey(businessPartnerId); +} + +export function createAddressRequest(businessPartnerId: string, streetName: string) { + return BusinessPartnerAddress.requestBuilder() + .create( + BusinessPartnerAddress.builder() + .businessPartner(businessPartnerId) + .streetName(streetName) + .cityName(generateRandomName()) + .build() + ); +} + +export function retrieveAddressRequest(businessPartnerId: string, addressId: string) { + return BusinessPartnerAddress.requestBuilder() + .getByKey(businessPartnerId, addressId); +} + +export function generateRandomName() { + return getRandomInt(10000, 1000000000).toString(36); +} + +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; +} diff --git a/integration-tests/util/server.ts b/integration-tests/util/server.ts new file mode 100644 index 00000000..d1f4d2c0 --- /dev/null +++ b/integration-tests/util/server.ts @@ -0,0 +1,23 @@ +import app = require('../../app'); +import { AddressInfo, Server } from 'net'; + +export function getUrl(server: Server): string { + const address = server.address() as AddressInfo; + return `http://127.0.0.1:${address.port}`; +} + +export async function startServer(): Promise { + return new Promise((resolve) => { + const server = app.listen(() => { + resolve(server); + }); + }); +} + +export async function stopServer(server: Server): Promise { + return new Promise((resolve) => { + server.close(() => { + resolve(); + }); + }); +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..3eae8efa --- /dev/null +++ b/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + setupFilesAfterEnv: ['jest-extended'] +}; diff --git a/odata-helpers.js b/odata-helpers.js index 6d4e75fb..ec54fc2e 100644 --- a/odata-helpers.js +++ b/odata-helpers.js @@ -1,7 +1,8 @@ const bodyParser = require('body-parser'); +const axios = require('axios'); /** Returns true if the property name refers to a navigation property (i.e., begins with "to_") */ -const isNavigationProperty = function(propertyName) { +function isNavigationProperty(propertyName) { return propertyName.startsWith('to_'); }; @@ -9,19 +10,70 @@ const isNavigationProperty = function(propertyName) { * Removes the first segment of the navigation property path * @param {string} propertyName Navigation property path */ -const removeFirstNavigationPath = function(propertyName) { +function removeFirstNavigationPath(propertyName) { return propertyName.substr(propertyName.split('/', 1)[0].length + 1); }; +/** + * Reduce the given results based on the given filter. + * @param {any[]} result result items to filter + * @param {string} singleFilter filter definition + */ +function applyFilter(result, singleFilter) { + if (singleFilter.includes(' eq \'')) { + const filterRegex = /^\(?(\w+) eq '(.*)'\)?$/; + const [, filterProperty, filterValue] = filterRegex.exec(singleFilter); + return applyEqFilter(result, filterProperty, filterValue); + } else if (singleFilter.includes(' ne \'')) { + const filterRegex = /^\(?(\w+) ne '(.*)'\)?$/; + const [, filterProperty, filterValue] = filterRegex.exec(singleFilter); + return applyNeFilter(result, filterProperty, filterValue); + } else if (singleFilter.includes(' ge datetime\'')) { + const filterRegex = /^\(?(\w+) ge datetime'(.*)'\)?$/; + const [, filterProperty, filterValue] = filterRegex.exec(singleFilter); + return applyGeFilter(result, filterProperty, transformDateTime(filterValue)); + } else if (singleFilter.includes(' le datetime\'')) { + const filterRegex = /^\(?(\w+) le datetime'(.*)'\)?$/; + const [, filterProperty, filterValue] = filterRegex.exec(singleFilter); + return applyLeFilter(result, filterProperty, transformDateTime(filterValue)); + } +} + +/** + * Transform datetime defintion to OData v2 date + * @param {string} dateTime + */ +function transformDateTime(dateTime) { + const [dateParts] = dateTime.split('T'); + const [year, month, day] = dateParts.split('-').map(p => parseInt(p)); + return `/Date(${Date.UTC(year, month-1, day)})/`; +} + +function applyEqFilter(result, filterProperty, filterValue) { + return result.filter(item => item[filterProperty] === filterValue); +} + +function applyNeFilter(result, filterProperty, filterValue) { + return result.filter(item => item[filterProperty] !== filterValue); +} + +function applyGeFilter(result, filterProperty, filterValue) { + return result.filter(item => item[filterProperty] >= filterValue); +} + +function applyLeFilter(result, filterProperty, filterValue) { + return result.filter(item => item[filterProperty] <= filterValue); +} + /** * Deals with navigation properties of the supplied entity per the expand specification. * Navigation properties that are part of the expanded properties are included in the result object. * The value of navigation properties that shall not be expanded is set to an object { "__deferred": ... }. * Non-navigation properties are left untouched. - * + * * The transformation is applied recursively. * @param {*} entity Entity to process - * @param {string[]} expandedProperties Navigation properties to include as expanded properties. + * @param {string[]} expandedProperties Navigation properties to include as expanded properties. */ const handleEntityNavPropertiesForExpand = function(entity, expandedProperties = []) { return Object.entries(entity).reduce(function(result, [key, value]) { @@ -36,7 +88,7 @@ const handleEntityNavPropertiesForExpand = function(entity, expandedProperties = .filter( (property) => property.startsWith(key + '/') ) .map(removeFirstNavigationPath); // Construct a new object, do not modify value - result[key] = { + result[key] = { results: handleEntitySetNavPropertiesForExpand(value.results, expandedPropertiesForNavProperty) }; } else { @@ -74,6 +126,7 @@ const reduceEntityToSelect = function(entity, selectedProperties = []) { if(0 === selectedProperties.length) { return entity; } + return Object.entries(entity).reduce(function(result, [key, value]) { const isNavProperty = isNavigationProperty(key); if('__metadata' === key || selectedProperties.includes(key) || @@ -101,7 +154,7 @@ const reduceEntityToSelect = function(entity, selectedProperties = []) { * @param {string[]} selectedProperties Properties to keep, or all, if empty */ const reduceEntitySetToSelect = function(entityArray, selectedProperties) { - return entityArray.map( (item) => reduceEntityToSelect(item, selectedProperties) ); + return entityArray.map(item => reduceEntityToSelect(item, selectedProperties)); }; const insertHostIntoBody = function(body, req) { @@ -109,6 +162,125 @@ const insertHostIntoBody = function(body, req) { return body.replace(/https:\/\/{host}:{port}/g, urlPrefix); }; +/** + * Returns the method and url as an array + * @param {string} subRequest Part of a batch request + */ +function findRequestMetadata(subRequest) { + const [, request, payload] = subRequest.split('\n\n'); + const data = payload.trim() + + const [requestMetaData, ...requestHeaders] = request.split('\n'); + const [method, url] = requestMetaData.split(' '); + + const headers = requestHeaders + .map(h => h.split(':')) + .reduce((obj, [key, value]) => { + return { ...obj, [key.trim()]: value.trim() }; + }, {}); + + return { + method, + url, + headers, + ...(data ? { data: data } : {}) + }; +} + +/** + * Split changeset into sub requests + * @param {string} changeset + */ +function splitChangeset(changeset) { + const changesetId = changeset.split('\n')[0].split('=')[1]; + return changeset.split(`--${changesetId}\n`).slice(1); +} + +/** + * Execute a rub request of batch + * @param {string} baseUrl The baseurl of the current request + * @param {string} batchPart The request definition in the batch request + */ +async function executeBatchSubrequest(baseUrl, batchPart) { + const config = findRequestMetadata(batchPart); + config.url = `${baseUrl}${config.url}`; + + return axios.request(config) + .then(response => wrapSingleRequestResponse(response)); + +} + +/** + * Execute all subrequests for a changeset + * @param {string} baseUrl Base url for the current request, to be used with the sub request + * @param {string} changeset Definition of the changeset, containing definitions for all sub requests + */ +async function executeChangeset(baseUrl, changeset) { + return Promise.all( + splitChangeset(changeset).map(changesetPart => executeBatchSubrequest(baseUrl, changesetPart)) + ) + .then(result => wrapChangesetResponse(result)) + .catch(error => { + return wrapSingleRequestResponse(error.response) + }); +} + +/** + * Create a batch response from the response for a single sub request + * @param {AxiosResponse} response single response of a sub request + */ +function wrapSingleRequestResponse(response) { + const body = [ + `HTTP/1.1 ${response.status} ${response.statusText}`, + `Content-Type: ${response.headers['content-type']}`, + `Content-Length: ${response.headers['content-length']}`, + 'dataserviceversion: 2.0', + 'cache-control: no-store, no-cache', + '', + JSON.stringify(response.data) + ].join('\n'); + + const header = [ + 'Content-Type: application/http', + `Content-Length: ${body.length}`, + 'content-transfer-encoding: binary' + ].join('\n'); + + return `${header}\n\n${body}`; +} + +/** + * Create a changeset response for the single responses of all requests within a batch changeset + * @param {string[]} responses wrapped responses for the single sub requests + */ +function wrapChangesetResponse(responses) { + const responsesBody = responses.join(`\n--changeset\n`); + const header = [ + `Content-Type: multipart/mixed; boundary=changeset`, + `Content-Length: ${responsesBody.length}` + ]; + + return [ + ...header, + '', + `--changeset`, + responsesBody, + `--changeset--` + ].join('\n'); +} + +/** + * Wrap all first level responses for a batch request in a batch response + * @param {string[]} responses All responses for sub requests + */ +function wrapBatchResponse(responses) { + return [ + `--batch`, + responses.join(`\n--batch\n`), + `--batch--` + ].join('\n'); +} + module.exports = { /** Send the result as an OData response */ sendAsODataResult: function(req, res, next) { @@ -136,6 +308,12 @@ module.exports = { res.sendStatus(204); }, + /** Set 201 response for created */ + set201Created: function(req, res, next) { + res.status(201); + next(); + }, + /** Expand each result entity (and replace not queried content with __deferred) */ expand: function(req, res, next) { const expandQuery = req.query.$expand; @@ -150,15 +328,15 @@ module.exports = { /** Filter the result set per the $filter query option */ filter: function(req, res, next) { - const filterQuery = req.query.$filter; + var filterQuery = req.query.$filter; if(filterQuery) { - // RegExp that matches filters such as "FirstName eq 'John'" and groups property and value - const filterRegex = /^\(?(\w+) eq '(.*)'\)?$/; - const [, filterProperty, filterValue] = filterRegex.exec(filterQuery); + // dirty hack to only accept the first level of and expressions + filterQuery = filterQuery.startsWith('(') && filterQuery.endsWith(')') ? filterQuery.slice(1,-1) : filterQuery; + const singleFilters = filterQuery.split('and').map(f => f.trim()); - res.result = res.result.filter((item) => { - return item[filterProperty] == filterValue; + singleFilters.forEach(singleFilter => { + res.result = applyFilter(res.result, singleFilter); }); } @@ -205,16 +383,60 @@ module.exports = { next(); }, + /** + * Executes batch requests. + * Errors for changesets will not roll back any changes. + */ + batch: function(req, res, next) { + const allLines = req.body.trim().split('\n'); + const batchId = allLines[0]; + const batchParts = req.body.trim().split(`${batchId}\n`).filter(line => line); + const baseUrl = `${req.protocol}://${req.get('host')}`; + + const requests = batchParts.map(batchPart => { + if (batchPart.startsWith('Content-Type: multipart/mixed;')) { + return executeChangeset(baseUrl, batchPart); + } + return executeBatchSubrequest(baseUrl, batchPart) + .catch(error => { + return wrapSingleRequestResponse(error.response) + }); + }); + + const chainedRequests = requests.reduce(async (promiseChain, req) => { + return promiseChain.then(responses => req.then(response => [...responses, response])); + }, Promise.resolve([])) + + chainedRequests + .then(responses => { + res.send(wrapBatchResponse(responses)); + }) + .catch(e => { + console.error(e); + res.send(e); + }); + }, + /** All generic middlewares for entity sets */ middlewareForSet: function() { return [this.expand, this.filter, this.sort, this.select, this.limit, this.sendAsODataResult]; }, + /** All generic middlewares for single entities */ middlewareForEntity: function() { return [this.send404IfNotFound, this.expand, this.select, this.sendAsODataResult]; }, + /** Create middleware chain for update based on retrieve and modify function */ middlewareForUpdate: function(retrieveFunction, modifyFunction) { return [retrieveFunction, this.send404IfNotFound, bodyParser.json(), modifyFunction, this.send204NoContent]; + }, + + middlewareForCreate: function(createFunction) { + return [bodyParser.json(), createFunction, this.set201Created, this.sendAsODataResult] + }, + + middlewareForBatch: function() { + return [bodyParser.text({ type: () => true }), this.set201Created, this.batch]; } -}; \ No newline at end of file +}; diff --git a/package-lock.json b/package-lock.json index 6c18c2c3..d587d91e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,359 +4,6691 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.4.tgz", + "integrity": "sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helpers": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", + "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "dev": true, + "requires": { + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz", + "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==", + "dev": true + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@dsherret/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@sap/cloud-sdk-analytics": { + "version": "1.13.1", + "resolved": "https://npm.sap.com/@sap/cloud-sdk-analytics/-/cloud-sdk-analytics-1.13.1.tgz", + "integrity": "sha512-hdV9B9Mp1k1GxK++UwzIOktDxHNhEcKBVsNxJyw5eJeOTRTvFHNLFGBScnAWszbvF7IZELJlLa1xIwRH6hkm6A==", + "dev": true, + "requires": { + "@sap/cloud-sdk-util": "^1.13.1", + "axios": "0.19.0" + } + }, + "@sap/cloud-sdk-core": { + "version": "1.13.1", + "resolved": "https://npm.sap.com/@sap/cloud-sdk-core/-/cloud-sdk-core-1.13.1.tgz", + "integrity": "sha512-wsHYDsC5AAIqZIqofDj+RyVUUMFlD49ZbYh67yDRo/OlqwT19RHHzYsQg4qOmit/qmQlaPCVdsNvHuL5IK23BQ==", + "dev": true, + "requires": { + "@sap/cloud-sdk-analytics": "^1.13.1", + "@sap/cloud-sdk-util": "^1.13.1", + "@types/http-proxy-agent": "2.0.1", + "axios": "0.19.0", + "bignumber.js": "8.1.1", + "http-proxy-agent": "2.1.0", + "jsonwebtoken": "8.5.1", + "moment": "2.24.0", + "opossum": "4.0.0", + "rambda": "2.14.5", + "uuid": "3.3.2", + "voca": "1.4.0" + }, + "dependencies": { + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + } + } + }, + "@sap/cloud-sdk-generator": { + "version": "1.13.1", + "resolved": "https://npm.sap.com/@sap/cloud-sdk-generator/-/cloud-sdk-generator-1.13.1.tgz", + "integrity": "sha512-g3TjsjmK0y+b9EAp43DVOZVjIdRFAS3nmW+Yc+EX5GhSPvRF00Vxf6e0pKUSKJUnzgoh2iCySTyV8f9NPIOKOQ==", + "dev": true, + "requires": { + "@sap/cloud-sdk-core": "^1.13.1", + "@sap/cloud-sdk-util": "^1.13.1", + "@sap/edm-converters": "^1.0.19", + "fast-xml-parser": "3.12.14", + "fs-extra": "8.0.1", + "rambda": "2.14.5", + "ts-morph": "4.0.1", + "typescript": "3.5.3", + "voca": "1.4.0", + "yargs": "14.0.0" + }, + "dependencies": { + "typescript": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "dev": true + }, + "yargs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz", + "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + } + } + }, + "@sap/cloud-sdk-util": { + "version": "1.13.1", + "resolved": "https://npm.sap.com/@sap/cloud-sdk-util/-/cloud-sdk-util-1.13.1.tgz", + "integrity": "sha512-9YvbnwLMl7mHRV00hMJJUk96/4p0B8btmLslZ+luSDtzgS7O6hAwoGLnpoLirL2+u1i7t63fIKdtzb3ursmaaA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "rambda": "2.14.5", + "winston": "^3.2.1" + } + }, + "@sap/cloud-sdk-vdm-business-partner-service": { + "version": "1.13.1", + "resolved": "https://npm.sap.com/@sap/cloud-sdk-vdm-business-partner-service/-/cloud-sdk-vdm-business-partner-service-1.13.1.tgz", + "integrity": "sha512-eQ87T6FAOeOHuYLAg9rx6Sm8Cf8M09cXTaLzcYITYfIEkdOtjakgHYllgw0w79bq/DVFvTWf21QXBc5OvwVNFw==", + "dev": true, + "requires": { + "@sap/cloud-sdk-core": "^1.13.1" + } + }, + "@sap/edm-converters": { + "version": "1.0.19", + "resolved": "https://npm.sap.com/@sap/edm-converters/-/edm-converters-1.0.19.tgz", + "integrity": "sha512-MUOfxvOnuC8H2mezxxL8gcJu4K+u1CY364ImiX6b4jALR+3HpSC5p4tjCgZXfDOA+BTWCsX/Q4GgJclDUnavmg==", + "dev": true, + "requires": { + "commander": "=2.19.0", + "request": "=2.88.0", + "xml-js": "=1.6.8" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "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=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "xml-js": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.8.tgz", + "integrity": "sha512-kUv/geyN80d+s1T68uBfjoz+PjNUjwwf5AWWRwKRqqQaGozpMVsFsKYnenPsxlbN/VL7f0ia8NfLLPCDwX+95Q==", + "dev": true, + "requires": { + "sax": "^1.2.4" + } + } + } + }, + "@types/babel__core": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", + "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", + "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz", + "integrity": "sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz", + "integrity": "sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.0.tgz", + "integrity": "sha512-Xnub7w57uvcBqFdIGoRg1KhNOeEj0vB6ykUM7uFWyxvbdE89GFyqgmUcanAriMr4YOxNFZBAWkfcWIb4WBPt3g==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy-agent": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-proxy-agent/-/http-proxy-agent-2.0.1.tgz", + "integrity": "sha512-dgsgbsgI3t+ZkdzF9H19uBaLsurIZJJjJsVpj4mCLp8B6YghQ7jVwyqhaL0PcVtuC3nOi0ZBhAi2Dd9jCUwdFA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.23", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.23.tgz", + "integrity": "sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg==", + "dev": true, + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", + "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz", + "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/superagent": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.4.tgz", + "integrity": "sha512-SRH2q6/5/nhOkAuLXm3azRGjBYpoKCZWh138Rt1AxSIyE6/1b9uClIH2V+JfyDtjIvgr5yQqYgNUmdpbneJoZQ==", + "dev": true, + "requires": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "@types/supertest": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.8.tgz", + "integrity": "sha512-wcax7/ip4XSSJRLbNzEIUVy2xjcBIZZAuSd2vtltQfRK7kxhx5WMHbLHkYdxN3wuQCrwpYrg86/9byDjPXoGMA==", + "dev": true, + "requires": { + "@types/superagent": "*" + } + }, + "@types/yargs": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", + "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "dev": true + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "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" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "dev": true + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bignumber.js": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.1.1.tgz", + "integrity": "sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "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" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-block-writer": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", + "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "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=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "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=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, + "requires": { + "env-variable": "0.0.x" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-variable": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.2.tgz", + "integrity": "sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "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" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "fast-xml-parser": { + "version": "3.12.14", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.12.14.tgz", + "integrity": "sha512-ULVaqwU1LJhB4qwppBEKQLoNz72Y7q/u3gXJz1MLgcPJHVT07QeqfzGS5Ssrpsql1P/RXgHc9BIoVx1CN8B/qw==", + "dev": true, + "requires": { + "nimnjs": "^1.3.2" + } + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "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-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.0.1.tgz", + "integrity": "sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "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" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "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" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-extended": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-0.11.2.tgz", + "integrity": "sha512-gwNMXrAPN0IY5L7VXWfSlC2aGo0KHIsGGcW+lTHYpedt5SJksEvBgMxs29iNikiNOz+cqAZY1s/+kYK0jlj4Jw==", + "dev": true, + "requires": { + "expect": "^24.1.0", + "jest-get-type": "^22.4.3", + "jest-matcher-utils": "^22.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + } + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "requires": { + "colornames": "^1.1.1" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nimn-date-parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nimn-date-parser/-/nimn-date-parser-1.0.0.tgz", + "integrity": "sha512-1Nf+x3EeMvHUiHsVuEhiZnwA8RMeOBVTQWfB1S2n9+i6PYCofHd2HRMD+WOHIHYshy4T4Gk8wQoCol7Hq3av8Q==", + "dev": true + }, + "nimn_schema_builder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nimn_schema_builder/-/nimn_schema_builder-1.1.0.tgz", + "integrity": "sha512-DK5/B8CM4qwzG2URy130avcwPev4uO0ev836FbQyKo1ms6I9z/i6EJyiZ+d9xtgloxUri0W+5gfR8YbPq7SheA==", + "dev": true + }, + "nimnjs": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nimnjs/-/nimnjs-1.3.2.tgz", + "integrity": "sha512-TIOtI4iqkQrUM1tiM76AtTQem0c7e56SkDZ7sj1d1MfUsqRcq2ZWQvej/O+HBTZV7u/VKnwlKTDugK/75IRPPw==", + "dev": true, + "requires": { + "nimn-date-parser": "^1.0.0", + "nimn_schema_builder": "^1.0.0" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true + }, + "opossum": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/opossum/-/opossum-4.0.0.tgz", + "integrity": "sha512-T9w/cxhT5Q3WcaU6m3BE9csDzyojC1+NniMqJipTeqiUKU4h3DdZqZubKgekpMD507dXUAzNASwD33VVRtJP4A==", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "prompts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz", + "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.3" + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "rambda": { + "version": "2.14.5", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-2.14.5.tgz", + "integrity": "sha512-vYoUQ9bmWfKh6UvxIojk5/x91NcarecpiK+bJndyHg6KPzgtuMLmQ05jWMiRDLDblps1znByuhc6DbGtEuOqZw==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "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" + } + }, + "react-is": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", + "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "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": { + "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=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", + "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "array-flatten": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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" + } } } }, - "bytes": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, - "content-type": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "tmpl": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "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=", + "dev": true }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, "requires": { - "ms": "2.0.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "ts-jest": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.2.0.tgz", + "integrity": "sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } }, - "express": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.5.tgz", - "integrity": "sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=", + "ts-morph": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-4.0.1.tgz", + "integrity": "sha512-Vp6qYw8AHqQOPxLmRUoUbRDSUul+KV9Jh5y6egG0hZuzxfohWbzxbKoF9PfaFdZ8M//8Tc1IbPU84KA+psRFnA==", + "dev": true, "requires": { - "accepts": "1.3.4", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "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.0.6", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.5", - "qs": "6.5.0", - "range-parser": "1.2.0", - "send": "0.15.6", - "serve-static": "1.12.6", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.2" + "@dsherret/to-absolute-glob": "^2.0.2", + "code-block-writer": "^10.0.0", + "fs-extra": "^8.1.0", + "glob-parent": "^5.0.0", + "globby": "^10.0.1", + "is-negated-glob": "^1.0.0", + "multimatch": "^4.0.0", + "typescript": "^3.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "safe-buffer": "^5.0.1" } }, - "forwarded": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "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" + } + }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, + "uglify-js": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.0.tgz", + "integrity": "sha512-PC/ee458NEMITe1OufAjal65i6lB58R1HWMRcxwvdz1UopW0DYqlRL3xdu3IcTvTXsB02CRHykidkTRL+A3hQA==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + } + }, + "unc-path-regex": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true } } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true }, - "ipaddr.js": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", - "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=" + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "merge-descriptors": { + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { - "mime-db": "1.30.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "voca": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/voca/-/voca-1.4.0.tgz", + "integrity": "sha512-8Xz4H3vhYRGbFupLtl6dHwMx0ojUcjt0HYkqZ9oBCfipd/5mD7Md58m2/dq7uPuZU/0T3Gb1m66KS9jn+I+14Q==", + "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, "requires": { - "ee-first": "1.1.1" + "browser-process-hrtime": "^0.1.2" } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } }, - "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=" + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, - "proxy-addr": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", - "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.4.0" + "iconv-lite": "0.4.24" } }, - "qs": { + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", - "integrity": "sha1-jQSVTTZN7z78VbWgeT4eLIsebkk=" + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, - "send": { - "version": "0.15.6", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.6.tgz", - "integrity": "sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=", + "winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "dev": true, "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" } }, - "serve-static": { - "version": "1.12.6", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.6.tgz", - "integrity": "sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=", + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.15.6" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" + "async-limiter": "~1.0.0" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/package.json b/package.json index 324a7270..2ac6730f 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,32 @@ "description": "OData mock service for Business Partner API of SAP S/4HANA Cloud", "main": "app.js", "scripts": { - "start": "node app.js", - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node server.js", + "debug": "node --inspect-brk server.js", + "test": "npx jest", + "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", + "generate-test-resources": "npx generate-odata-client -i social-media-accounts -o integration-tests/social-media-accounts/odata-client -s ./integration-tests/social-media-accounts/service-mapping.json --forceOverwrite" }, "author": "SAP", "license": "Apache-2.0", "dependencies": { - "body-parser": "^1.18.2", - "express": "^4.15.5", - "uuid": "^3.2.1" + "axios": "^0.19.0", + "body-parser": "^1.19.0", + "express": "^4.17.1", + "uuid": "^3.3.3" }, "engines": { "node": "^8.9.4" + }, + "devDependencies": { + "@sap/cloud-sdk-generator": "^1.13.1", + "@sap/cloud-sdk-vdm-business-partner-service": "^1.13.1", + "@types/express": "^4.17.2", + "@types/jest": "^24.0.23", + "@types/supertest": "^2.0.8", + "jest": "^24.9.0", + "jest-extended": "^0.11.2", + "ts-jest": "^24.2.0", + "typescript": "^3.7.2" } } diff --git a/server.js b/server.js new file mode 100644 index 00000000..622bec5f --- /dev/null +++ b/server.js @@ -0,0 +1,5 @@ +const app = require('./app'); + +const nodeAppStarted = Date.now(); +const port = process.env.PORT || 3000; +app.listen(port, () => console.log(`Mock server started on port ${port} after ${Date.now() - nodeAppStarted} ms, running - stop with CTRL+C (or CMD+C)...`)) diff --git a/social-media-accounts/social-media-accounts-api.js b/social-media-accounts/social-media-accounts-api.js index e47d4994..72090e29 100644 --- a/social-media-accounts/social-media-accounts-api.js +++ b/social-media-accounts/social-media-accounts-api.js @@ -1,5 +1,4 @@ const express = require('express'); -const bodyParser = require('body-parser'); const router = express.Router(); const odata = require('../odata-helpers.js'); @@ -48,16 +47,16 @@ router.get('/([$])metadata', function(req, res) { }); router.route('/YY1_BPSOCIALMEDIA') -.get(retrieveAllBusinessPartnerSocialMedia, odata.middlewareForSet()); + .get(retrieveAllBusinessPartnerSocialMedia, odata.middlewareForSet()); -router.route('/YY1_BPSOCIALMEDIA\\((SAP_UUID=)?(guid\':uuid\'|%27:uuid%27)\\)') -.get(retrieveSingleBusinessPartnerSocialMedia, odata.middlewareForEntity()); +router.route('/YY1_BPSOCIALMEDIA\\((SAP_UUID=)?(guid%27:uuid%27|%27:uuid%27|guid\':uuid\'|\':uuid\')\\)') + .get(retrieveSingleBusinessPartnerSocialMedia, odata.middlewareForEntity()); router.route('/YY1_SOCIALMEDIAACCOUNT_BPSO000') -.get(retrieveAllSocialMediaAccounts, odata.middlewareForSet()); + .get(retrieveAllSocialMediaAccounts, odata.middlewareForSet()); -router.route('/YY1_SOCIALMEDIAACCOUNT_BPSO000\\((SAP_UUID=)?(guid\':uuid\'|%27:uuid%27)\\)') -.get(retrieveSingleSocialMediaAccount, odata.middlewareForEntity()); +router.route('/YY1_SOCIALMEDIAACCOUNT_BPSO000\\((SAP_UUID=)?(guid%27:uuid%27|%27:uuid%27|guid\':uuid\'|\':uuid\')\\)') + .get(retrieveSingleSocialMediaAccount, odata.middlewareForEntity()); router.get('/', function(req, res) { res.json({ @@ -70,4 +69,4 @@ router.get('/', function(req, res) { }); }); -module.exports = router; \ No newline at end of file +module.exports = router;