From 50ac570736020f94704fa494310adbfa2853248c Mon Sep 17 00:00:00 2001 From: Nattapon Date: Tue, 16 Jun 2020 10:33:58 +0700 Subject: [PATCH] initial commit --- .gitignore | 1 + admd.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ app.js | 369 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ apple.js | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ config_partner.json | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ d01.js | 392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ gsso.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ nafa.js | 41 +++++++++++++++++++++++++++++++++++++++++ package-lock.json | 2297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 28 ++++++++++++++++++++++++++++ req_partner_manager.js | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ scf.js | 20 ++++++++++++++++++++ ssb.js | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 3817 insertions(+), 0 deletions(-) create mode 100644 .gitignore create mode 100644 admd.js create mode 100644 app.js create mode 100644 apple.js create mode 100644 config_partner.json create mode 100644 d01.js create mode 100644 gsso.js create mode 100644 nafa.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 req_partner_manager.js create mode 100644 scf.js create mode 100644 ssb.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/admd.js b/admd.js new file mode 100644 index 0000000..40c44c7 --- /dev/null +++ b/admd.js @@ -0,0 +1,46 @@ + +module.exports.oauthToken = async (req, res) => { + console.log('===== POST oauthToken =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response; + + if(req.query.grant_type == 'refresh_token') { + response = { + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IklaRGNwQjJZY2gifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6InRva2VuX2F1dGhlbnRpY2F0aW9uX2NvZGUiLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MiwiaWF0IjoxNTkwNzQ2OTUyLCJqdGkiOiIxRnVaSTdvbW5jZDlrTTE2Vm9FQkJyIiwicGlkIjoiWHUwb082bWRJYkowcE43QWp1dEtNNUFpK3Y4ckliTTF1YVFIWjRwNzkwTT0iLCJjbGllbnQiOiJNekF4Tnprc1FWSldVbEJNUVZSR1QxSk5mRUp5YjNkelpYSjhNUzR3TGpBPSIsInNzaWQiOiI3NDdHU1M1Rk1rSnFjVTQ1S1VpTXdzIiwidWlkIjoiNjYxNTcwMDEyMDE2NjA3IiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sImlhbCI6IjEuMSJ9.ggDiGlXQHiFuHu-Vcz-F1tpkPcAoCF0iTaokvJoAUzPSlRQA1zp__bMl0cVMSN1lILhNRuDxM_U2ABPooGka6HcdajzxkZrL81YIhj96g86wc5wu5uMg73bItEqZ0HkStQ5WD6sDtH8H_c-Q3ym26n-d-TZsqlBmWRIxj-x9joI", + "token_type": "bearer", + "expires_in": 86400, + "refresh_token": "N3ZGS2o5TjhSRkFsbGZWWVdFdzUxNTkwNzQ2OTUx747GSS5FMkJqcU45KUiMws", + "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVreE8xSDFmQXkifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6ImlkVG9rZW4iLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MSwiaWF0IjoxNTkwNzQ2OTUxLCJqdGkiOiJlenBuWGF2Nm55cTVGZGZ2TFJlaW9qIiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sIm5vbmNlIjoiU1JGUC0yMDA1MjlFS081OFBnMDRWQiIsImluZm8iOnsiZmlyc3RuYW1lIjoidGVzdGJyb2tlciIsImxhc3RuYW1lIjoidGVzdGJyb2tlciIsInVzZXJuYW1lIjoidGVzdGJyb2tlckBnbWFpbC5jb20iLCJhY2NvdW50Q2F0ZWdvcnkiOiJyZXNpZGVudGlhbCJ9fQ.gFOf3_vuE_K4KEDZLYoXqma6pL6B_HdA0SWpaErvI-s1ng3rH6PXtEy8-7H5c2W9Co10kWEXcXuMXBHTFqRLu9WBNU1v2MGV90wBJ5ujAW_YdaY1H5D0HMthQVPEt6Bda2gHk_TVqol-YQRBbRNNhNQaxb5PSpZxv9dTJ7B4zzM", + "refresh_token_expires_in": 86400 + } + } else { + response = { + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IklaRGNwQjJZY2gifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6InRva2VuX2F1dGhlbnRpY2F0aW9uX2NvZGUiLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MiwiaWF0IjoxNTkwNzQ2OTUyLCJqdGkiOiIxRnVaSTdvbW5jZDlrTTE2Vm9FQkJyIiwicGlkIjoiWHUwb082bWRJYkowcE43QWp1dEtNNUFpK3Y4ckliTTF1YVFIWjRwNzkwTT0iLCJjbGllbnQiOiJNekF4Tnprc1FWSldVbEJNUVZSR1QxSk5mRUp5YjNkelpYSjhNUzR3TGpBPSIsInNzaWQiOiI3NDdHU1M1Rk1rSnFjVTQ1S1VpTXdzIiwidWlkIjoiNjYxNTcwMDEyMDE2NjA3IiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sImlhbCI6IjEuMSJ9.ggDiGlXQHiFuHu-Vcz-F1tpkPcAoCF0iTaokvJoAUzPSlRQA1zp__bMl0cVMSN1lILhNRuDxM_U2ABPooGka6HcdajzxkZrL81YIhj96g86wc5wu5uMg73bItEqZ0HkStQ5WD6sDtH8H_c-Q3ym26n-d-TZsqlBmWRIxj-x9joI", + "token_type": "bearer", + "expires_in": 86400, + "refresh_token": "N3ZGS2o5TjhSRkFsbGZWWVdFdzUxNTkwNzQ2OTUx747GSS5FMkJqcU45KUiMws", + "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVreE8xSDFmQXkifQ.eyJpc3MiOiJzcmYuYWlzLmNvLnRoL3NjZiIsInN1YiI6ImlkVG9rZW4iLCJhdWQiOiJMdGFOa1d2K0MvcnMzbk8vVis3RFhLUkRmRk9wRkJNeUVrY0ROSXA5Z0ovdWhNK0RBenVoUlE9PSIsImV4cCI6MTU5MDgzMzM1MSwiaWF0IjoxNTkwNzQ2OTUxLCJqdGkiOiJlenBuWGF2Nm55cTVGZGZ2TFJlaW9qIiwiYXV0Ijp7InR5cGUiOiJlbWFpbF9wYXNzd29yZCIsImFjdGlvbiI6ImxvZ2luIn0sIm5vbmNlIjoiU1JGUC0yMDA1MjlFS081OFBnMDRWQiIsImluZm8iOnsiZmlyc3RuYW1lIjoidGVzdGJyb2tlciIsImxhc3RuYW1lIjoidGVzdGJyb2tlciIsInVzZXJuYW1lIjoidGVzdGJyb2tlckBnbWFpbC5jb20iLCJhY2NvdW50Q2F0ZWdvcnkiOiJyZXNpZGVudGlhbCJ9fQ.gFOf3_vuE_K4KEDZLYoXqma6pL6B_HdA0SWpaErvI-s1ng3rH6PXtEy8-7H5c2W9Co10kWEXcXuMXBHTFqRLu9WBNU1v2MGV90wBJ5ujAW_YdaY1H5D0HMthQVPEt6Bda2gHk_TVqol-YQRBbRNNhNQaxb5PSpZxv9dTJ7B4zzM", + "refresh_token_expires_in": 86400 + } + } + + res.send(response) +} + +module.exports.logout = async (req, res) => { + console.log('===== POST b2cLogout =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = {"state":"logout"} + + res.send(response) +} \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..6138f11 --- /dev/null +++ b/app.js @@ -0,0 +1,369 @@ +const express = require('express') +const app = express() + +const bodyParser = require('body-parser') + +const configPartnerList = require('./config_partner.json'); +const PartnerManager = require('./req_partner_manager'); + +let moment = require('moment') +let unirest = require('unirest') +let request = require('request') + +let cors = require('cors') +let toXML = require('jstoxml'); + +// var mongoose = require('mongoose'); +// mongoose.connect('mongodb://10.1.2.146:27018/test'); + +// var MongoClient = require('mongodb').MongoClient; +// var dburl = "mongodb://10.1.2.144:27018/test"; +// MongoClient.connect(dburl, function(err, db) { +// if (err) { +// throw err; +// } +// console.log('db connected'); +// db.close(); +// }); + +const port = 3002 + +app.use(cors()) + +app.use((req, res, next) => { + console.log('incomming url: ',req.originalUrl) + next() +}) + +app.post('/parse', bodyParser.text('*/*'), async (req, res) => { + console.log('test', req.body) + console.log('test', req.headers) + + try { + JSON.parse(req.body) + } catch (e) { + + } + + res.send(result) + + +}); + +app.use(bodyParser.urlencoded()); +app.use(bodyParser.json()); + +app.post('/apiRequest', (req, res) => { + console.log(req.params.apiRequest) + console.log(req.originalUrl); + console.log(req.url) + let partnerCode = req.body.partnerCode + let configPartner = null; + + if (Array.isArray(configPartnerList.partner)) { + for (let partner of configPartnerList.partner) { + if (partnerCode == partner.partnerCode) { + configPartner = partner; + break; + } + } + } + + if (configPartner) { + let reqPartner = new PartnerManager(req.body, configPartner); + let apiRequest = reqPartner.requestApi() + if (apiRequest instanceof Error) { + //handle error + res.send(JSON.parse(apiRequest.message)) + } else { + res.send(apiRequest) + } + } else { + res.send('unknown partner') + } +}) + +app.post('/ktc/point/transferPoint', (req, res) => { + console.log('/ktc/point/transferPoint', req.body) + console.log('/ktc/point/transferPoint', req.headers) + let response = { + aaa: "test", + pushRefId1: 'WsxK21', + resultData: [ + { + pointId1: 'ser' + }, + { + pointId1: 'ser1' + } + ] + } + res.set('xx', 'test') + // res.status(200).json(response) +}) + +app.post('/mockOneSiamMoblieServiceSoap', (req, res) => { + console.log(req.body) + console.log(req.headers) + res.status(200).send('123$value$value$value') +}) + +app.get('/get', (req, res) => { + console.log('get', req.body) + console.log('get', req.headers) + let response = { + pushRefId: '', + resultData: [ + { + pointId1: 'ser' + }, + { + pointId1: 'ser1' + } + ] + } + // res.status(200).json(response) +}); + +app.get('/test', async (req, res) => { + console.log('test', req.body) + console.log('test', req.headers) + + try { + let response = await doRequestFormData('http://test.us-payment.picovr.com/AISPayNotify',{ accept: 'application/json'}, { + app_id: '24e09f8038dbf1204c09090d56c872c0', + body: 'PICO-COINS12000', + buyer_pay_fee: 'Paid by user', + device_id: '90c73518a762a2d1a339d7f', + fee_type: 'THB', + mch_id: 'company_id', + nonce_str: 'SpXrgaKf4fagyF9a', + notify_type: 'PAY', + open_id: 'ZLsdZaanhHDAUkDDgRX6QfpxAj0CSx6x7BLgUt4LlpM=', + out_trade_no: '202004081609523', + pay_time: 1587527937951, + pay_type: 'AIS', + receipt_fee: '0.00', + subject: 'Purchased 12000 coins.', + terminal_type: 'IOS', + timestamp: 1587527937951, + total_fee: '0.00', + trade_no: '50609152601900018023', + trade_type: 'Download', + signature: '83387eaf92018538d5f8fd7f3a6ecd0a' + }) + + res.send(response) + + } catch (e) { + //if doRequestFormData has error + //reject, timeout, other error + console.log('doRequestFormData', e) + res.send('error') + } + + +}); + +function doRequestFormData(url, headers, data) { + console.log(url, headers, data) + return new Promise(function (resolve, reject) { + request.post({ url: url, headers: headers, timeout: 2000, formData: data }, function (error, res, body) { + if (!error && res.statusCode == 200) { + resolve(body); + } else { + reject(error); + } + }); + }); +} + +app.post('/api/v1/mpay/billingonbehalf/reserveAndChargeVolume.json', (req, res) => { + console.log(req.body) + console.log(req.headers) + let response = { + "reserveAndChargeVolumeResponse": { + "result": "SUCCESS", + "resultDescription": "60713000154960518477", + "endUserIdentifier": "66873381009", + "networkType": "prepaid" + } + } + + res.status(200).json(response) +}); + +app.post('/api/v1/mpay/billingonbehalf/partialRefundVolume.json', (req, res) => { + console.log(req.body) + console.log(req.headers) + let response = { + "refundVolumeV2Response": { + "result": "SUCCESS", + "resultDescription": "60713000154960518477", + "endUserIdentifier": "66873381009", + "networkType": "prepaid" + } + } + + res.status(200).json(response) +}); + +app.post('/api/v1/mpay/billingonbehalf/queryChargeTransaction.json', (req, res) => { + console.log(req.body) + console.log(req.headers) + let response = { + "result": "SUCCESS", + "resultDescription": "201805231904005310944" + } + + + res.status(200).json(response) +}); + +app.post('/api/v1/mpay/billingonbehalf/queryRefundTransaction.json', (req, res) => { + console.log(req.body) + console.log(req.headers) + let response = { + "result": "SUCCESS", + "resultDescription": "201805231904005310944" + } + + + res.status(200).json(response) +}); + +// app.use(multiparty({ uploadDir: "./img"})); + +app.post('/api/shop-cdns/upload', (req, res) => { + + var azure = require('azure-storage') + var multiparty = require('multiparty') + + process.env.AZURE_STORAGE_ACCOUNT = 'shareallspw' + process.env.AZURE_STORAGE_ACCESS_KEY = 'TIWwkqyvlyTySRzSelOJij2jaZbKIZ/fLUST0q9TPZGNI1dQVVn1/bU4/FnEJnUpvW1fqtWYI2HmGJeD/Oo4eA==' + + var blobService = azure.createBlobService(); + var form = new multiparty.Form(); + + form.on('part', function (part) { + if (!part.filename) return; + var size = part.byteCount; + var path = 'point' + var name = moment().valueOf() + '.' + part.filename.split('.')[1]; + + var container = 'spw-cdn'; + + blobService.createBlockBlobFromStream(container, path + '/' + name, part, size, function (error, result, response) { + if (error) { + console.log(error) + // error handling + res.status(500).send('Error uploading file'); + } + console.log('result', result) + console.log('response', response) + // res.send('File uploaded successfully'); + + let responseMessage = { + name: part.filename, + type: part.headers['content-type'], + size: part.byteCount, + container: '/' + path, + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name, + thumbnails: 'test1', + thumbnails43: 'test2', + } + + console.log(responseMessage) + + res.send(responseMessage) + }); + }); + + form.parse(req); +}); + +var multipart = require('connect-multiparty'); +var multipartMiddleware = multipart({ uploadDir: './img' }); + +app.post('/api/shop-cdns/upload2', multipartMiddleware, async (req, res) => { + console.log(req.body, req.files); + + var size = req.files.file.size; + var name = moment().valueOf() + '.' + req.files.file.name.split('.')[1]; + var path = 'point' + var container = 'spw-cdn'; + // console.log(req.files.file.path) + + var blobService = azure.createBlobService(); + blobService.createBlockBlobFromLocalFile(container, path + '/' + name, req.files.file.path, (error, result, response) => { + console.log(result) + console.log(response) + console.log(error) + console.log({ + name: name, + type: req.files.file.type, + size: size, + container: '/' + path, + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name, + thumbnails: 'test1', + thumbnails43: 'test2', + }) + + res.send({ + name: name, + type: req.files.file.type, + size: size, + container: '/' + path, + imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name, + thumbnails: 'test1', + thumbnails43: 'test2', + }) + }) + + + +}); + +app.get('/scf/v2/partnerSpecificPrivateId/:privateId.json', require('./scf').decryptPrivateId); + +app.post('/api/v1/gsso/sendOneTimePW.json', require('./gsso').sendOneTimePassword); +app.post('/api/v1/gsso/confirmOneTimePassword.json', require('./gsso').confirmOneTimePassword); + +app.get('/ssb/profile/network/subscriber/:userId/type/:userType', require('./ssb').getProfileType); +app.post('/ssb/profile/historyPackage', require('./ssb').queryHistoryPackage); +app.post('/ssb/profile/currentPackage', require('./ssb').queryCurrentPackage); +app.post('/ssb/package/apply', require('./ssb').applyPack); +app.post('/ssb/package/subscriber', require('./ssb').deletePackage); // + +app.post('/verifyReceipt', require('./apple').verifyReceipt); // + +app.post('/api/v1/package/packagepayment', require('./nafa').packagePayment); // +app.post('/api/v1/package/cancelPackage', require('./nafa').cancelPackage); // + + +app.get('/api/v1/customer', require('./d01').getCustomer); +app.post('/api/v1/customer', require('./d01').postCustomer); +app.put('/api/v1/customer', require('./d01').putCustomer); +app.delete('/api/v1/customer', require('./d01').deleteCustomer); + +app.get('/api/v1/memberlink', require('./d01').getMemberLink); +app.post('/api/v1/memberlink', require('./d01').postMemberLink); +app.put('/api/v1/memberlink', require('./d01').putMemberLink); +app.delete('/api/v1/memberlink', require('./d01').deleteMemberLink); + +app.get('/api/v1/address', require('./d01').getAddress); +app.post('/api/v1/address', require('./d01').postAddress); +app.put('/api/v1/address', require('./d01').putAddress); +app.delete('/api/v1/address', require('./d01').deleteAddress); + +app.get('/api/v1/mastermember', require('./d01').getMasterMember); +app.post('/api/v1/mastermember', require('./d01').postMasterMember); +app.put('/api/v1/mastermember', require('./d01').putMasterMember); +app.delete('/api/v1/mastermember', require('./d01').deleteMasterMember); + +app.post('/auth/v3.1/oauth/token', require('./admd').oauthToken); +app.post('/auth/v3.1/logout', require('./admd').logout); + + + +app.listen(port, () => console.log('app listening on port ' + port + '!')) \ No newline at end of file diff --git a/apple.js b/apple.js new file mode 100644 index 0000000..37af0bb --- /dev/null +++ b/apple.js @@ -0,0 +1,137 @@ + +let retrySuccess = 2; +let bypass = true + +module.exports.verifyReceipt = async (req, res) => { + console.log('===== POST verifyReceipt =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "is-retryable": "", + "latest_receipt": "", + "latest_receipt_info": [ + { + "cancellation_date": "", + "cancellation_date_ms": "", + "cancellation_date_pst": "", + "cancellation_reason": "", + "expires_date": "2019-05-12 11:59:59 Etc/GMT", + "expires_date_ms": "", + "expires_date_pst": "", + "is_in_intro_offer_period": "", + "is_trial_period": "", + "is_upgraded": "", + "original_purchase_date": "", + "original_purchase_date_ms": "", + "original_purchase_date_pst": "", + "original_transaction_id": "original_id003", + "product_id": "A49992198", + "promotional_offer_id": "", + "purchase_date": "", + "purchase_date_ms": "", + "purchase_date_pst": "", + "quantity": "", + "subscription_group_identifier": "", + "transaction_id": "", + "web_order_line_item_id": "" + }, + { + "cancellation_date": "", + "cancellation_date_ms": "", + "cancellation_date_pst": "", + "cancellation_reason": "", + "expires_date": "2020-06-07 16:28:15", + "expires_date_ms": "", + "expires_date_pst": "", + "is_in_intro_offer_period": "", + "is_trial_period": "", + "is_upgraded": "", + "original_purchase_date": "", + "original_purchase_date_ms": "", + "original_purchase_date_pst": "", + "original_transaction_id": "original_id07", + "product_id": "A49980551", + "promotional_offer_id": "", + "purchase_date": "", + "purchase_date_ms": "", + "purchase_date_pst": "", + "quantity": "", + "subscription_group_identifier": "", + "transaction_id": "", + "web_order_line_item_id": "" + } + ], + "pending_renewal_info": [ + { + "auto_renew_product_id": "", + "auto_renew_status": "", + "expiration_intent": "", + "grace_period_expires_date": "", + "grace_period_expires_date_ms": "", + "grace_period_expires_date_pst": "", + "is_in_billing_retry_period": "", + "original_transaction_id": "", + "price_consent_status": "", + "product_id": "" + } + ], + "receipt": { + "receipt_type": "ProductionSandbox", + "adam_id": 0, + "app_item_id": 0, + "bundle_id": "com.belive.app.ios", + "application_version": "3", + "download_id": 0, + "version_external_identifier": 0, + "receipt_creation_date": "2018-11-13 16:46:31 Etc/GMT", + "receipt_creation_date_ms": "1542127591000", + "receipt_creation_date_pst": "2018-11-13 08:46:31 America/Los_Angeles", + "request_date": "2018-11-13 17:10:31 Etc/GMT", + "request_date_ms": "1542129031280", + "request_date_pst": "2018-11-13 09:10:31 America/Los_Angeles", + "original_purchase_date": "2013-08-01 07:00:00 Etc/GMT", + "original_purchase_date_ms": "1375340400000", + "original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles", + "expiration_date": "2013-08-01 00:00:00 America/Los_Angeles", + "original_application_version": "1.0", + "in_app": [ + { + "quantity": "1", + "product_id": "test2", + "transaction_id": "1000000472106082", + "original_transaction_id": "1000000472106082", + "purchase_date": "2018-11-13 16:46:31 Etc/GMT", + "purchase_date_ms": "1542127591000", + "purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles", + "original_purchase_date": "2018-11-13 16:46:31 Etc/GMT", + "original_purchase_date_ms": "1542127591000", + "original_purchase_date_pst": "2018-11-13 08:46:31 America/Los_Angeles", + "is_trial_period": "false" + } + ] + }, + "status": "0", + "environment": "Sandbox" + } + + let responseError = { + "is-retryable": "", + "latest_receipt": "", + "latest_receipt_info": [], + "pending_renewal_info": [], + "receipt": {}, + "status": "1", + "environment": "Sandbox" + } + + if (retrySuccess > 0 && !bypass) { + retrySuccess -= 1 + res.send(responseError) + } else { + res.send(response) + } +} diff --git a/config_partner.json b/config_partner.json new file mode 100644 index 0000000..ac485b5 --- /dev/null +++ b/config_partner.json @@ -0,0 +1,62 @@ +{ + "partner": [ + { + "partnerCode": "0001", + "partnerName": "KTC", + "request": { + "protocol": "https", + "host": "10.137.19.81:30033", + "url": "/ktc/point/transferPoint", + "certificate": "/src/data/portal/public.cer", + "method": "POST", + "command": "transferIn", + "ContentType": "application/json", + "header": "sessionid=$x-session-id, appId=$x-app-id, Content-Type=application/json", + "body": "@pointIdList=$@pointId, customerId=$userIdData, transfer.transferFrom=$tran.pointIdFrom, transfer.transferTo=$tran.pointIdTo, transfer.pointTransfer=?tran.pointTransfer, createdAt=?createdAt, updatedAt=now()" + }, + "response": { + "bodyValidation": "pushRefId=*", + "headerValidation": "statusCode=200" + } + }, + { + "partnerCode": "0002", + "partnerName": "AIS", + "request": { + "protocol": "http", + "host": "10.137.19.81:30033", + "url": "/v1/customers/customerCharacteristic/spwCustomerAccounts.json", + "certificate": "", + "method": "POST", + "command": "CustomeAccounts", + "ContentType": "application/json", + "header": "sessionid=$x-session-id ", + "body": "customerId=$userIdData, transfer.transferFrom=$pointIdFrom, transfer.transferTo=$pointIdTo, transfer.pointTransfer=$pointTransfer" + }, + "response": { + "bodyValidation": "resultCode=20000", + "headerValidation": "statusCode=200" + } + }, + { + "partnerCode": "0003", + "partnerName": "SCB", + "request": { + "protocol": "http", + "host": "10.137.19.81:30033", + "url": "/mockOneSiamMoblieServiceSoap", + "certificate": "", + "method": "POST", + "command": "transferIn", + "ContentType": "text/xml", + "header": "sessionid=$x-session-id", + "body": "$appName.name$userName$password?citizenID" + }, + "response": { + "bodyValidation": "0", + "headerValidation": "statusCode=200" + } + } + ] +} + diff --git a/d01.js b/d01.js new file mode 100644 index 0000000..b17e153 --- /dev/null +++ b/d01.js @@ -0,0 +1,392 @@ +module.exports.getCustomer = async (req, res) => { + console.log('===== GET Customer =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + + let data = [ + { + "enterpriseId": "$enterpriseId", + "customerId": "$customerId", + "userId": "$userId", + "firstName": "$firstName", + "lastName": "$lastName", + "mobile": "$mobile", + "emailAddress": "$emailAddress", + "gender": "$gender", + "birthdate": "$birthdate", + "barFlag": "$barFlag", + "userVerification": "$userVerification", + "updatedDate": "$updatedDate", + "createdDate": "$createdDate" + } + ] + + if (req.query.fields) { + let filteredFields = req.query.fields.split(',') + for (let d of data) { + for (key in d) { + if (!filteredFields.includes(key)) { + delete d[key] + } + } + } + } + + let response = { + "resultCode": "20000", + "resultDescription": "Success", + "resultData": data, + "rowCount": '' + data.length + } + + res.send(response) +} + +module.exports.postCustomer = async (req, res) => { + console.log('===== POST Customer =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.putCustomer = async (req, res) => { + console.log('===== PUT Customer =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.deleteCustomer = async (req, res) => { + console.log('===== DELETE Customer =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + // res.send(response) +} + +module.exports.getMemberLink = async (req, res) => { + console.log('===== GET MemberLink =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + + let data = [ + { + "enterpriseId": "$enterpriseId", + "memberLinkId": "$memberLinkId", + "customerId": "$customerId", + "memberId": "$memberId", + "memberCardId": "$memberCardId", + "activeStartDate": "$activeStartDate", + "activeEndDate": "$activeEndDate" + }, + { + "enterpriseId": "$enterpriseId", + "memberLinkId": "$memberLinkId", + "customerId": "$customerId", + "memberId": "$memberId", + "memberCardId": "$memberCardId", + "activeStartDate": "$activeStartDate", + "activeEndDate": "$activeEndDate" + } + ] + + if (req.query.fields) { + let filteredFields = req.query.fields.split(',') + for (let d of data) { + for (key in d) { + if (!filteredFields.includes(key)) { + delete d[key] + } + } + } + } + + let response = { + "resultCode": "20000", + "resultDescription": "Success", + "resultData": data, + "rowCount": '' + data.length + } + res.send(response) +} + +module.exports.postMemberLink = async (req, res) => { + console.log('===== POST MemberLink =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.putMemberLink = async (req, res) => { + console.log('===== PUT MemberLink =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.deleteMemberLink = async (req, res) => { + console.log('===== DELETE MemberLink =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.getAddress = async (req, res) => { + console.log('===== GET Address =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + + let data = [] + + for (let i = 0; i < 30; i++) { + data.push({ + "enterpriseId": "$enterpriseId", + "customerId": "$customerId", + "addressId": (i + 1), + "addressType": "$addressType", + "addressInfo": "$addressInfo", + "postcode": "$postcode", + "defaultFlag": "$defaultFlag", + "updatedDate": "$updatedDate", + "createdDate": "$createdDate" + }) + } + + if (req.query.fields) { + let filteredFields = req.query.fields.split(',') + for (let d of data) { + for (key in d) { + if (!filteredFields.includes(key)) { + delete d[key] + } + } + } + } + + let resultData = data + + if (req.query.offset) { + resultData = resultData.slice(+req.query.offset) + } + + if (req.query.limit) { + resultData = resultData.slice(0, +req.query.limit) + } + + let response = { + "resultCode": "20000", + "resultDescription": "Success", + "resultData": resultData, + "rowCount": '' + data.length + } + + res.send(response) +} + +module.exports.postAddress = async (req, res) => { + console.log('===== POST Address =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.putAddress = async (req, res) => { + console.log('===== PUT Address =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.deleteAddress = async (req, res) => { + console.log('===== DELETE Address =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.getMasterMember = async (req, res) => { + console.log('===== GET Address =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + + let data = [] + + for (let i = 0; i < 30; i++) { + data.push({ + "enterpriseId": "$enterpriseId", + "memberId": (i + 1), + "memberType": "$memberType", + "subMemberType": "$subMemberType", + "memberDescription": "$memberDescription", + "updatedBy": "$updatedBy", + "updatedDate": "$updatedDate", + "createdBy": "$createdBy", + "createdDate": "$createdDate" }) + } + + if (req.query.fields) { + let filteredFields = req.query.fields.split(',') + for (let d of data) { + for (key in d) { + if (!filteredFields.includes(key)) { + delete d[key] + } + } + } + } + + let resultData = data + + if (req.query.offset) { + resultData = resultData.slice(+req.query.offset) + } + + if (req.query.limit) { + resultData = resultData.slice(0, +req.query.limit) + } + + let response = { + "resultCode": "20000", + "resultDescription": "Success", + "resultData": resultData, + "rowCount": '' + data.length + } + + res.send(response) +} + +module.exports.postMasterMember = async (req, res) => { + console.log('===== POST MasterMember =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.putMasterMember = async (req, res) => { + console.log('===== PUT MasterMember =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} + +module.exports.deleteMasterMember = async (req, res) => { + console.log('===== DELETE MasterMember =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "resultDescription": "Success" + } + + res.send(response) +} \ No newline at end of file diff --git a/gsso.js b/gsso.js new file mode 100644 index 0000000..00fcb03 --- /dev/null +++ b/gsso.js @@ -0,0 +1,48 @@ +module.exports.sendOneTimePassword = async (req, res) => { + console.log('===== POST sendOneTimePassword =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "sendOneTimePWResponse": { + "code": "2000", + "description": "SUCCESS", + "isSuccess": "true", + "orderRef": "0720160428073728988", + "transactionID": "MdAiNf4OmyOJWLa63M", + "referenceNumber": "2954", + "operName": "AIS", + "lifeTimeoutMins": "10", + "expirePassword": "28/04/2016 07:47:28" + } + } + + res.status(200).send(response) +} + +module.exports.confirmOneTimePassword = async (req, res) => { + console.log('===== POST confirmOneTimePassword =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "confirmOneTimePWResponse": { + "code": "2000", + "description": "SUCCESS", + "isSuccess": "True", + "orderRef": "0720160428074409309", + "operName": "AIS", + "expirePassword": "28/04/2016 07:54:08", + "transactionID": "8HiefBiD14Ae65eiwp" + } +} + + + res.status(200).send(response) +} diff --git a/nafa.js b/nafa.js new file mode 100644 index 0000000..2f211b9 --- /dev/null +++ b/nafa.js @@ -0,0 +1,41 @@ +module.exports.packagePayment = async (req, res) => { + console.log('===== POST packagePayment =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": 200, + "resultMessage": "Success", + "data": { + "statusCode": "003", + "statusDescription": "Purchase package successfully" + } + } + + + res.send(response) +} + +module.exports.cancelPackage = async (req, res) => { + console.log('===== POST cancelPackage =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": 200, + "resultMessage": "Success", + "data": { + "statusCode": "003", + "statusDescription": "DSMP returned Delete Package success." + } + } + + + res.status(502).send(response) +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6bbdbb1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2297 @@ +{ + "name": "funtion_req_partner", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "8.10.59", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz", + "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "adal-node": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.28.tgz", + "integrity": "sha1-RoxLs+u9lrEnBmn0ucuk4AZepIU=", + "requires": { + "@types/node": "^8.0.47", + "async": ">=0.6.0", + "date-utils": "*", + "jws": "3.x.x", + "request": ">= 2.52.0", + "underscore": ">= 1.3.1", + "uuid": "^3.1.0", + "xmldom": ">= 0.1.x", + "xpath.js": "~1.1.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "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=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "^4.14.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "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=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "azure": { + "version": "2.3.1-preview", + "resolved": "https://registry.npmjs.org/azure/-/azure-2.3.1-preview.tgz", + "integrity": "sha512-4GmbdzqbocOLgASGbBZuNA5rwU3szCaoyTS95s2DcwkTnv28Ong4/HeKTv9GX9ib1ueNv26AbrK/EmyiGY65Zg==", + "requires": { + "azure-arm-advisor": "^1.1.0", + "azure-arm-analysisservices": "^2.2.1-preview", + "azure-arm-apimanagement": "^2.1.1-preview", + "azure-arm-appinsights": "^1.2.1-preview", + "azure-arm-authorization": "^5.0.0", + "azure-arm-automation": "^4.0.0-preview", + "azure-arm-batch": "^3.1.0", + "azure-arm-billing": "^2.1.0", + "azure-arm-cdn": "^4.0.1", + "azure-arm-cognitiveservices": "^2.1.0", + "azure-arm-commerce": "^2.0.0", + "azure-arm-compute": "^5.1.1", + "azure-arm-consumption": "^4.0.0", + "azure-arm-containerinstance": "^2.0.0", + "azure-arm-containerregistry": "^2.2.0", + "azure-arm-containerservice": "^2.0.0", + "azure-arm-cosmosdb": "^1.1.2", + "azure-arm-customerinsights": "^3.0.0", + "azure-arm-datafactory": "^2.0.1", + "azure-arm-datalake-analytics": "^3.0.0-preview", + "azure-arm-datalake-store": "^3.0.0-preview", + "azure-arm-devtestlabs": "^2.1.1", + "azure-arm-dns": "^2.1.0", + "azure-arm-domainservices": "^1.1.0", + "azure-arm-eventgrid": "^1.3.0", + "azure-arm-eventhub": "^1.3.0", + "azure-arm-hdinsight": "^0.3.0", + "azure-arm-hdinsight-jobs": "^0.1.1", + "azure-arm-iothub": "^1.1.0-preview", + "azure-arm-keyvault": "^1.1.2-preview", + "azure-arm-logic": "^1.1.0-preview", + "azure-arm-machinelearning": "^1.1.0-preview", + "azure-arm-machinelearningcompute": "^1.0.0-preview", + "azure-arm-marketplaceordering": "^1.1.0-preview", + "azure-arm-mediaservices": "^2.0.0", + "azure-arm-mobileengagement": "^1.0.0-preview", + "azure-arm-monitor": "^2.0.0-preview", + "azure-arm-mysql": "^3.0.0", + "azure-arm-network": "^5.3.0", + "azure-arm-notificationhubs": "^1.1.0", + "azure-arm-operationalinsights": "^1.1.0", + "azure-arm-operations": "^1.0.0-preview", + "azure-arm-postgresql": "^4.0.0", + "azure-arm-powerbiembedded": "^1.1.0-preview", + "azure-arm-recoveryservices": "^2.0.1-preview", + "azure-arm-recoveryservices-siterecovery": "^2.0.0-preview", + "azure-arm-recoveryservicesbackup": "^2.0.1-preview", + "azure-arm-rediscache": "^2.0.0-preview", + "azure-arm-relay": "^2.0.0-preview", + "azure-arm-resource": "^3.1.1-preview", + "azure-arm-resourcehealth": "^1.0.0-preview", + "azure-arm-sb": "^2.2.0-preview", + "azure-arm-scheduler": "^1.2.0-preview", + "azure-arm-search": "^1.1.0-preview", + "azure-arm-servermanagement": "^1.1.0", + "azure-arm-servicefabric": "^2.0.0-preview", + "azure-arm-servicemap": "^2.0.0", + "azure-arm-sql": "^3.0.0", + "azure-arm-storage": "^5.0.0", + "azure-arm-storageimportexport": "^1.1.0", + "azure-arm-storsimple8000series": "^1.0.0-preview", + "azure-arm-streamanalytics": "^1.0.0-preview", + "azure-arm-trafficmanager": "^3.0.0", + "azure-arm-visualstudio": "^1.0.0-preview", + "azure-arm-website": "^3.0.0-preview", + "azure-asm-compute": "^0.18.0", + "azure-asm-hdinsight": "^0.10.3", + "azure-asm-mgmt": "^0.10.2", + "azure-asm-network": "^0.13.1", + "azure-asm-sb": "^0.10.2", + "azure-asm-scheduler": "^0.10.2", + "azure-asm-sql": "^0.10.3", + "azure-asm-storage": "^0.12.1", + "azure-asm-store": "^0.10.2", + "azure-asm-subscription": "^0.10.2", + "azure-asm-trafficmanager": "^0.10.4", + "azure-asm-website": "^0.10.7", + "azure-batch": "^3.2.2", + "azure-common": "^0.9.20", + "azure-extra": "^0.2.14", + "azure-gallery": "^2.0.0-pre.20", + "azure-graph": "^2.2.0", + "azure-keyvault": "^3.0.4-preview", + "azure-loganalytics": "^0.1.0", + "azure-monitoring": "^0.10.6", + "azure-sb": "^0.10.6", + "azure-scheduler": "^0.10.4", + "azure-servicefabric": "^2.0.0-preview", + "azure-storage": "^2.9.0-preview", + "azure-storage-legacy": "^0.10.3", + "mime": "^1.6.0", + "moment": "^2.22.2", + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0", + "request": "^2.81.0", + "underscore": "1.8.3", + "uuid": "^3.0.1" + } + }, + "azure-arm-advisor": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-advisor/-/azure-arm-advisor-1.2.0.tgz", + "integrity": "sha512-zmdXFoKXd9t1mnOGo6KwTvb7ZQIJ+HuRGPVGck84CdZAVtpOrWR2Gh2ZwJ9l9cYl+4JkueFaV336coYsPiIVGw==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-analysisservices": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/azure-arm-analysisservices/-/azure-arm-analysisservices-2.3.0.tgz", + "integrity": "sha512-hPi56JmxwsYrj6r+h1ZQely4wu/J43KdxI5hTPGV/HKtSh0/0zyZn5bUk9ON2nEvexdpsAiiAuoPTxoQk219nw==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-apimanagement": { + "version": "2.1.1-preview", + "resolved": "https://registry.npmjs.org/azure-arm-apimanagement/-/azure-arm-apimanagement-2.1.1-preview.tgz", + "integrity": "sha512-Q5Q+yaTiHshyJXnfy/PxCFHLiEKXlZozR+QM/OrVhp7PT4NOTAFhsDnHFxEIMLOC6uHbiWb1aQ7nOnVD6rcdwQ==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-appinsights": { + "version": "1.2.1-preview", + "resolved": "https://registry.npmjs.org/azure-arm-appinsights/-/azure-arm-appinsights-1.2.1-preview.tgz", + "integrity": "sha512-3SQ4UDo1TStfM0Guu/oC3nYEihNH+qIB5sTP1e3OdVeSp4GRsRBRdQXTsPrDzaJGHcjo3M96chWhBpbuDIMGQQ==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-authorization": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-authorization/-/azure-arm-authorization-5.0.0.tgz", + "integrity": "sha512-DD+AS3Zg0TxyHbxo3Aa5/VAauoxYLUWvdCE57VCCzaUCPlxcCf4XxKN34YNayMO+4cuNk3WOOGATQdwbhvdoEA==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-automation": { + "version": "4.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-automation/-/azure-arm-automation-4.0.0-preview.tgz", + "integrity": "sha512-hnmIxxMcvJ2VSFTlQ8OEq51/hhOXjM/c5V9qbtPMjuzG3E4er5qNE777wjpPrfhW8ZQ7U0Tvu6EMpRS1gs/Mhg==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-batch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-batch/-/azure-arm-batch-3.2.0.tgz", + "integrity": "sha512-DDfgAiRruGAiL8Yot5nufG3O8GLA0r5lf1CGYhuF8pEzQ+vYfhLpgJzme7LPh3ASPb8UBSVYHm1IK4W4StvVnw==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-billing": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-billing/-/azure-arm-billing-2.2.0.tgz", + "integrity": "sha512-TPxEquzJ1c2E34m4SLL8i8M2Yn/cQF5Q2D7JF6cZNOEAYQsdCN0K+Yaw9js21GV5M1mA55JNHkSdLWb/EME4jQ==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-cdn": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-cdn/-/azure-arm-cdn-4.2.0.tgz", + "integrity": "sha512-DkpLntvqHtCLbf7p/qqLS0eJluZtsb8gU65deJYiMz4OFQco+InP9giCVnY8gElW3QbMaqKyHOJCDK7NllKMoA==", + "requires": { + "ms-rest": "^2.5.0", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-cognitiveservices": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/azure-arm-cognitiveservices/-/azure-arm-cognitiveservices-2.4.1.tgz", + "integrity": "sha512-fwxii7QjYbeHhB7hwhGQ7mxpqqZNOtyp4lTr0cM+COqNCuXCpt13fbwp16NoH5yTixh8HSh91qo31dfe4Rx4oQ==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-commerce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-commerce/-/azure-arm-commerce-2.1.0.tgz", + "integrity": "sha512-zhZ9b1Comp1Owa8/Pn7ORTL0l+uX9elz5A5yOoL/XdYXC8S6bN2QaiRLPmue9ZB55qGE1Tn7Cf+KRlpskL17hQ==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-compute": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/azure-arm-compute/-/azure-arm-compute-5.1.1.tgz", + "integrity": "sha512-aO9/4xD84q5AqfPWPtIrZE+R3O2bZBZ54APKJsQk/WrFawJwXvROhYzaK/k4nm8girNejErFnTjUTOnw62RiXg==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-consumption": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-consumption/-/azure-arm-consumption-4.0.0.tgz", + "integrity": "sha512-SEktTAcv5JAuHoiadY8bbvw4Gnqcc2JUQ1Mr14yvTkxxv6cm2tDaQd22yymuOvzBH4Pym4TliNPcWy94TE7uNw==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-containerinstance": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-containerinstance/-/azure-arm-containerinstance-2.0.0.tgz", + "integrity": "sha512-g12u5jbIoOM4wiNdC979jWeNDQxYRmHEzLD23ouIIWSp0mJ+xuWftrUa8qWVj6akZ97CNYpExZ4RBLZZmmEQvQ==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-containerregistry": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/azure-arm-containerregistry/-/azure-arm-containerregistry-2.4.1.tgz", + "integrity": "sha512-Qu4mEG0nVTmGY4081dERyrwxrc8SyNW7HxkWyuaklwnZKabRFv9vLe+Wg2tiwThx0T9b/t4WvWm6XNQaL2olMw==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-containerservice": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-containerservice/-/azure-arm-containerservice-2.0.0.tgz", + "integrity": "sha512-MvbmSM5LpXOfkHvp+1NOCyiz0n2eyj4v3MmA7vagEf6pAaChbkfShxwO2ShS7gaw69wZHoNa0eWH4x/fUWJiew==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-cosmosdb": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/azure-arm-cosmosdb/-/azure-arm-cosmosdb-1.1.2.tgz", + "integrity": "sha512-NdjUeSoNzV2Ljajomy7mQW8WrbysGg6jPpTGztlpyLgGCBFMO9llvzKCoRTNMs9Van50lrJrmcbhbJNFn3PPjw==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-customerinsights": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-customerinsights/-/azure-arm-customerinsights-3.1.0.tgz", + "integrity": "sha512-iiBC6eRhv7mUw674wct+af5BIhOOcqb4e6E7hxwBv/ko5AwAi9yrOYQfRII0QunkwlCGFORcfnazh1Uk+19bQA==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-datafactory": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-datafactory/-/azure-arm-datafactory-2.1.0.tgz", + "integrity": "sha512-w/MtwhMBSu1EhhdTwwX3QnFQbE1c8ZUrofDq4jhOuL83belqxr89wzxRfz24Gbmi+Sn0K5RsqmM41y74y7pm9g==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-datalake-analytics": { + "version": "3.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-datalake-analytics/-/azure-arm-datalake-analytics-3.0.0-preview.tgz", + "integrity": "sha512-P5zt3SFGlsfIJqDkUDfZ4a/bntZczIw2k4PfP6ONLxWEUGMpN1axc/UMCllrT7sFMDYaD0fCa80LDwD7SsGzXg==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-datalake-store": { + "version": "3.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-datalake-store/-/azure-arm-datalake-store-3.0.0-preview.tgz", + "integrity": "sha512-wP23AuH6+fWD6l6OCbc+wwkNXQgzxC41qY8AKhbrl0x9bd1UU4GmCGxdUb8rES8dgjdoAee0g+FbWzXuzyK47w==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-devtestlabs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/azure-arm-devtestlabs/-/azure-arm-devtestlabs-2.1.1.tgz", + "integrity": "sha512-S5dCYTMrqL+BJc699fIQtXwLFuv5m8jTDqPdXTFpn/CSkyBcOyJwuZH2zPExQjGNZTyjIR6GWi8oeg/IpYLBWw==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-dns": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-dns/-/azure-arm-dns-2.1.0.tgz", + "integrity": "sha512-/y0tOM9qNijPYqB381JFYiEyfF+L5B8z+F8JS1OMV1JXIb45vZKXeoe82ZNMZ5g38Vme3uAblxpvp5OtIcvW6Q==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-domainservices": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-domainservices/-/azure-arm-domainservices-1.1.0.tgz", + "integrity": "sha512-aaCLwjWljcEJzgMfwmwHask7g1F+6T2FfB5oGYCvLI4r97+XnaXYsS1NZDzJupBkBA0HUdH+el30gyrdyP25NA==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-eventgrid": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/azure-arm-eventgrid/-/azure-arm-eventgrid-1.5.0.tgz", + "integrity": "sha512-5gxyByhoE54dkAWgjy9k3mG4HmiHXkbUExEIU9CvkHa5iMkQUZFYvDOMA3B9TjYkmDPH8omv5n9ac/KMZ5V4ZQ==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-eventhub": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/azure-arm-eventhub/-/azure-arm-eventhub-1.3.0.tgz", + "integrity": "sha512-FyOXlXm6MuaIsJLCAHmyDUQwHU9Y2ztJTUnAHaXXZWAwy3YlvxNo6tbLXbrFvCjiGmyunW0kK+uNFtmQcFbX7Q==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-hdinsight": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/azure-arm-hdinsight/-/azure-arm-hdinsight-0.3.0.tgz", + "integrity": "sha512-1lJaqHN9kGW/BO/WfE+OTrlr5FJ8tsa+TdT160Y2OfntHTZxIDLkMHK2JdHMMIlEAf73v4Q3zM9AIFjq94hA1A==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-hdinsight-jobs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/azure-arm-hdinsight-jobs/-/azure-arm-hdinsight-jobs-0.1.1.tgz", + "integrity": "sha1-ea0eK12W9yOj5K/DqIj4Eu+ilBg=", + "requires": { + "azure-common": "^0.9.18", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-arm-iothub": { + "version": "1.1.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-iothub/-/azure-arm-iothub-1.1.0-preview.tgz", + "integrity": "sha1-Kdvmx+/W9+AHipBWFFpOjbSSCsw=", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-keyvault": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-keyvault/-/azure-arm-keyvault-1.2.0.tgz", + "integrity": "sha512-P1QgUHTSpKvko/mX2u7LDPf5yYinTOtIvMHJeZluQGTSRToMF9mBKqt1TKEzaHyS0eQDErDoLHyBSs7D9E1Qaw==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-logic": { + "version": "1.1.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-logic/-/azure-arm-logic-1.1.0-preview.tgz", + "integrity": "sha512-m2s0HnVka+8GgBx+x6Zk2C7KkDa65/lM54HzQi4OArOXWm9kPdlxmu81uWi7A759YER3/9pkTGu+p/AiP3MQbQ==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-machinelearning": { + "version": "1.1.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-machinelearning/-/azure-arm-machinelearning-1.1.0-preview.tgz", + "integrity": "sha512-4aWVrzh6BL9IQlu5FeuZE2oVAht6mHL2DBRfsgGqgP1pePhtHvBZpJ6IHHzyHI16sEh+/V0DExJaIria9+ASbQ==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-machinelearningcompute": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-machinelearningcompute/-/azure-arm-machinelearningcompute-1.0.0-preview.tgz", + "integrity": "sha512-WtomhMTd+relHxAQ0UtSqDPE4EUSEEbSpSuoPHcI7XikPnoyUAviAELwllNh3PAyk7+pAsLcUP6yr0PNInh68w==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-marketplaceordering": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/azure-arm-marketplaceordering/-/azure-arm-marketplaceordering-1.3.1.tgz", + "integrity": "sha512-+Q++u/LtJasTR64bf6M2iwa4lswHg2vPPW2H6oQ3/tjpZTNpo52PmkOzNsMWWK0m4BBZqbRfFl3dLdco+f5QSA==", + "requires": { + "ms-rest": "^2.5.0", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-mediaservices": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-mediaservices/-/azure-arm-mediaservices-2.0.0.tgz", + "integrity": "sha512-YO2TJyuK9LdJLLO5aMmQEDPEKgjDpOiVjWZOKKPP9FJkA+bKsCP4A30kAgMtTqg+Ckzp/xTuRIkhkR0E7zoymQ==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-mobileengagement": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-mobileengagement/-/azure-arm-mobileengagement-1.0.0-preview.tgz", + "integrity": "sha512-7OSnyT6CMd9RLeo3khdy/7VFrkadig73Z6lgri3w0V7ljtFc7RE0pUBfiMiZCPDmZMUz7NdE2ZtOrfDpOwOG9A==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-monitor": { + "version": "2.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-monitor/-/azure-arm-monitor-2.0.0-preview.tgz", + "integrity": "sha512-V516OQOm2lvt9UsD4wdbI1PMWM0dhV5grt9Al5LAje6h2qyTG9UJyGszx9MnaY1hqXI9lR8wPg6Gy7YXcM+lag==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-mysql": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-mysql/-/azure-arm-mysql-3.2.0.tgz", + "integrity": "sha512-L/KbAggszefQGNvmPm3f98lRm9ZVAqbqTZNSYb59Bxr3xiZsdkOwPbl7rK9/cD4mxhc9czS1kbZ8HbvbupMd/A==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-network": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/azure-arm-network/-/azure-arm-network-5.3.0.tgz", + "integrity": "sha512-juitxBWofPBZ+kcmLB8OjW5qPD6+/Ncdq86WjDTIUcH+cyb/GWktdDymv6adbOyz4xZ9/wbThFL7AHgq8cHBig==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-notificationhubs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-notificationhubs/-/azure-arm-notificationhubs-1.2.0.tgz", + "integrity": "sha512-E+Q87JfzYxMJhuqbdlt3Gzuwfc0/55gXyI+BYAVTtiIsZeGRUigVF1dpP09ye6uV2FcoF+OZXJ3pXj6jyOrxCQ==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-operationalinsights": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-operationalinsights/-/azure-arm-operationalinsights-1.2.0.tgz", + "integrity": "sha512-aG3ksWfqMWjCQu1GNboni7mTdPjXKUdvrI1WQ5IOiah0ZO2S6J14iOwipLZnyvHcRyyJmIHqm0VR7CMvo2kOxQ==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-operations": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-operations/-/azure-arm-operations-1.0.0-preview.tgz", + "integrity": "sha512-FD3Ernrr4btqqdsamt2jFarqadeDyYsnnltyCLEHdfAz4v5eQR6R7trdPV19DEFaYo+RFSnKTIIY8hBLlrarRg==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-postgresql": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/azure-arm-postgresql/-/azure-arm-postgresql-4.3.0.tgz", + "integrity": "sha512-x4S5GaSJ2MRUntpnDipIPJxA2XuAQ5qUTbgGRVt05shyOg29k3s8gleyveqd3oWKPWaGoW3Nf/kBj6RE2B3v/Q==", + "requires": { + "ms-rest": "^2.5.0", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-powerbiembedded": { + "version": "1.1.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-powerbiembedded/-/azure-arm-powerbiembedded-1.1.0-preview.tgz", + "integrity": "sha512-xW3pk1BP4D1/sCrArtGVQXlMHmW7OOY53fQF9v74miiYo9ydGqpzt2F+8xvtp/5Jxo7+qCB0rrUyoMvO9/EQjA==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-recoveryservices": { + "version": "2.0.1-preview", + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservices/-/azure-arm-recoveryservices-2.0.1-preview.tgz", + "integrity": "sha512-No1uY9BgohXvOPnnFSqaRkXTpeU+F2xYrxltfHLCPw942VZz6L9xGg87hR6YO0NgyDDK/+hodUa+uGmtezptyw==", + "requires": { + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0" + } + }, + "azure-arm-recoveryservices-siterecovery": { + "version": "2.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservices-siterecovery/-/azure-arm-recoveryservices-siterecovery-2.0.0-preview.tgz", + "integrity": "sha512-k9YUIXMGMhevqwgGgVoPexZwlCUZfjh1BpLJ4vkY/wOExkEVU3ErId6gCjh7iaidMO/3x45gxftfKUgERoRx1w==", + "requires": { + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0" + } + }, + "azure-arm-recoveryservicesbackup": { + "version": "2.0.1-preview", + "resolved": "https://registry.npmjs.org/azure-arm-recoveryservicesbackup/-/azure-arm-recoveryservicesbackup-2.0.1-preview.tgz", + "integrity": "sha512-9mvuFavP8h9U7JJ0jgJHlRtxMUlGWiqYMkqD+9QTpxnn/kjSZAulma32fcGq0Ej721LGSOVRnCRiimji8Y/DBg==", + "requires": { + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0" + } + }, + "azure-arm-rediscache": { + "version": "2.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-rediscache/-/azure-arm-rediscache-2.0.0-preview.tgz", + "integrity": "sha512-KiHEO52uKwwVmVMZwOhjRVj67GHzLMCq0Bt2VIadX2+natHge/OR+sh6Axb9DwJUOkvNstPWvFDzuLQDYDGWNg==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-relay": { + "version": "2.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-relay/-/azure-arm-relay-2.0.0-preview.tgz", + "integrity": "sha512-fK3NAkw0anv6VrAIt1+xtcE0le4n1t+acNMAPTD7cSL3hpLzRrb9H0PNTNa2rxKjqr8f5lp3P5XC93dTniJkmw==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-resource": { + "version": "3.1.1-preview", + "resolved": "https://registry.npmjs.org/azure-arm-resource/-/azure-arm-resource-3.1.1-preview.tgz", + "integrity": "sha512-01/t+0aDxcvEoAk+EOgMdZwi6DdCFN+iQM5CBaMhNg9DBoztrfRIpOz0OR4QUCynmcyCpl52CZN0Pho36mQiHA==", + "requires": { + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0" + } + }, + "azure-arm-resourcehealth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-resourcehealth/-/azure-arm-resourcehealth-1.1.0.tgz", + "integrity": "sha512-MuiNs49eo2X5ouV/ymAmf1eZ9xfKFfrMGR4gsvT95F4Hl746We5ULZIZYa9StFssY9pH6vX1zr/djqRXODbIZA==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-sb": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/azure-arm-sb/-/azure-arm-sb-2.6.0.tgz", + "integrity": "sha512-U8LhBF545Kz7opAzLvBqGlhJVi1eVF3zjy3N6TZNlP9cdqOlSo0GVY38sp2mj4tcu78+rBSZEzBIeg2r7qhRKw==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-scheduler": { + "version": "1.2.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-scheduler/-/azure-arm-scheduler-1.2.0-preview.tgz", + "integrity": "sha512-1dhz9VpKwuopVGbiom4sk/wo0S/undlcWnFwIrnoHkOXtz317TQ3EXnXUsfTFizTyRcMwKLW5Qb9hZ8PNphUCg==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-search": { + "version": "1.1.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-search/-/azure-arm-search-1.1.0-preview.tgz", + "integrity": "sha512-iV+HbLXwBRPWg7/zIrMjc/MBTgKHLqixYl+9WS2FLI3tY6HBZtuu+ERvBVgJw9SIAymzl+IL4PB/LEut6He35g==", + "requires": { + "ms-rest": "^2.0.0", + "ms-rest-azure": "^2.0.0" + } + }, + "azure-arm-servermanagement": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-servermanagement/-/azure-arm-servermanagement-1.1.0.tgz", + "integrity": "sha512-GlPXPD5Up2U6Qxv40ScC/+7WRcVVYQf7EHUSomD385o/MuyJAjM6CxBS8fPKwkZR5MRSd60p6kBo5AQ+bwfpeA==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-servicefabric": { + "version": "2.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-servicefabric/-/azure-arm-servicefabric-2.0.0-preview.tgz", + "integrity": "sha512-5q9J4rAkXY8ZNStY9SN5uF2paMkdl3SOWDM6fgWASPthM9p6G5lMsDRI/o8ZwUc60u2omeHMJrI6aKAanQ98RQ==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-servicemap": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/azure-arm-servicemap/-/azure-arm-servicemap-2.1.0.tgz", + "integrity": "sha512-O3IJsm9tRfv4x5fUofxz46gBQ5MUzN40OB7oS82Sbnq/o/ZroxdJROwel47uGgpAgftqh7c15i8tL6sUFnV2Lg==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-sql": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-sql/-/azure-arm-sql-3.0.0.tgz", + "integrity": "sha512-Fs9BUA3sGIfWJtulZNaiFHAbG7ipYliUz3xBN6K5RH2OGltYMNVE4Dofzdq726cY0nXMnjfzMhipdXqmJKdAjQ==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-storage": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-storage/-/azure-arm-storage-5.2.0.tgz", + "integrity": "sha512-BVFUPi48eJNJFP4ryQ3BwNRlKRNuAA7cZeSxCvr6dGEP+wrd1Ixmb2MlvoMRjgjcEOVnhP4t2YQyHcHNqQsH9A==", + "requires": { + "ms-rest": "^2.3.3", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-storageimportexport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/azure-arm-storageimportexport/-/azure-arm-storageimportexport-1.2.0.tgz", + "integrity": "sha512-azr97LXRY1zkyYx7OX54fjLOYCXvHX3moVk5Cvy/InxYL1DTruOy2069gYQz+CRbxCi/DbvL5UiLjcH72hmFsw==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-storsimple8000series": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-storsimple8000series/-/azure-arm-storsimple8000series-1.0.0-preview.tgz", + "integrity": "sha512-NdlGEhXFGCBxOxEe4LULKgPPdh91gE7YtiZ+uswkqfE82DknvBqebfZ7yzST1h0ub9PCvj/E9rV1zRub6aR7xw==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-streamanalytics": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-streamanalytics/-/azure-arm-streamanalytics-1.0.0-preview.tgz", + "integrity": "sha512-IsBynbHmPzfz2F4k3ohTw9QRsWlUvt7juxHVxsVe8nr3klkq980/vhLEkytpglsBy5n5pp2nE6P7kYyxQwnWeA==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-trafficmanager": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/azure-arm-trafficmanager/-/azure-arm-trafficmanager-3.0.0.tgz", + "integrity": "sha512-1p8jEfFwQ3v1/CVga5tOsaYGGd/YwOq6xUBrvv6khUqMOd5JaszTOaKCQE5IMqK2agXj6TjQ0NHS7Fph6cyaiw==", + "requires": { + "ms-rest": "^2.3.2", + "ms-rest-azure": "^2.5.5" + } + }, + "azure-arm-visualstudio": { + "version": "1.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-visualstudio/-/azure-arm-visualstudio-1.0.0-preview.tgz", + "integrity": "sha512-7hXExG3dC/nlEWoWhJOb/ust5YlbX4prztKrOyiNQ5E5CYX3x9vmnp01wHRv9i3H/tAIARfoFmpT+Fk48CkRGA==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-arm-website": { + "version": "3.0.0-preview", + "resolved": "https://registry.npmjs.org/azure-arm-website/-/azure-arm-website-3.0.0-preview.tgz", + "integrity": "sha512-IhCdjiL0Y+QMlwdrw9tEoYM8mKCtBYHdK5G8RVthF58lHUAPMaQMbvSuumZ/kbVxNdvORkXGXJ5tOng6v75AZQ==", + "requires": { + "ms-rest": "^2.3.0", + "ms-rest-azure": "^2.5.0" + } + }, + "azure-asm-compute": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/azure-asm-compute/-/azure-asm-compute-0.18.0.tgz", + "integrity": "sha1-EJwx4Xxpf0oAoBUz+yML865EhoU=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-asm-hdinsight": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/azure-asm-hdinsight/-/azure-asm-hdinsight-0.10.3.tgz", + "integrity": "sha1-tHzsm/8qgw8+sVAvaIbdfTFhSgo=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-asm-mgmt": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/azure-asm-mgmt/-/azure-asm-mgmt-0.10.2.tgz", + "integrity": "sha1-XAbKWiFoX5LJLIpXCLWeUsiejPo=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-asm-network": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/azure-asm-network/-/azure-asm-network-0.13.1.tgz", + "integrity": "sha1-4jAD7THe7nXybNXeIVUbFJAaXK4=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-sb": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/azure-asm-sb/-/azure-asm-sb-0.10.2.tgz", + "integrity": "sha1-2+2b6+b1MXZu19Ic1kB+76H2nxU=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-asm-scheduler": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/azure-asm-scheduler/-/azure-asm-scheduler-0.10.2.tgz", + "integrity": "sha1-2Yog1XgDRbfM2d+11w6i/6FFVuE=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-sql": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/azure-asm-sql/-/azure-asm-sql-0.10.3.tgz", + "integrity": "sha1-WRecDAWRDy83yeyGakLpZvdR90M=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-asm-storage": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/azure-asm-storage/-/azure-asm-storage-0.12.1.tgz", + "integrity": "sha1-Dq7OR7jWZbDgDXq787JLKS5N3P4=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-store": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/azure-asm-store/-/azure-asm-store-0.10.2.tgz", + "integrity": "sha1-N02NZ8i5K1usfciuBlkgFM5iQ8s=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-subscription": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/azure-asm-subscription/-/azure-asm-subscription-0.10.2.tgz", + "integrity": "sha1-3nK/CoQqFEoijbLXW0A8LHhj5sE=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-trafficmanager": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/azure-asm-trafficmanager/-/azure-asm-trafficmanager-0.10.4.tgz", + "integrity": "sha1-txvxSMeMnmVnVy911iVlo4zjyEs=", + "requires": { + "azure-common": "^0.9.13" + } + }, + "azure-asm-website": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/azure-asm-website/-/azure-asm-website-0.10.7.tgz", + "integrity": "sha512-h3OmXKKOLd4sbf4khrxqGTjspjqpKduKN9EWgEoIeNhMY+PVKrVEIMr3ZyKzmmy/8123MD+ip67wMqUKSTLtUA==", + "requires": { + "azure-common": "^0.9.17", + "moment": "^2.22.2", + "underscore": "^1.8.3" + } + }, + "azure-batch": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/azure-batch/-/azure-batch-3.2.2.tgz", + "integrity": "sha512-IM5nUITXMgTFTF4avRxsz/oLcMXLSZEzpukulRRpO1emXBI4EgSIr0++hUo+AZ94MINE2C4DXgCDiQ9P0suYXw==", + "requires": { + "moment": "^2.22.2", + "ms-rest": "^2.3.4", + "ms-rest-azure": "^2.5.6", + "underscore": "^1.8.3" + } + }, + "azure-common": { + "version": "0.9.22", + "resolved": "https://registry.npmjs.org/azure-common/-/azure-common-0.9.22.tgz", + "integrity": "sha512-0r9tK9D+1xl2/VPVtfmGmtkMqfooiBLS87fX+Ab0hOCPVVe/6CgVC4in0wSf2Ta8r65DbvxV5P4/t8fp8Q3EsQ==", + "requires": { + "dateformat": "1.0.2-1.2.3", + "duplexer": "~0.1.1", + "envconf": "~0.0.4", + "request": "^2.81.0", + "through": "~2.3.4", + "tunnel": "~0.0.2", + "underscore": "1.4.x", + "validator": "^9.4.1", + "xml2js": "^0.4.19", + "xmlbuilder": "0.4.3" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-extra": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/azure-extra/-/azure-extra-0.2.14.tgz", + "integrity": "sha512-IOW8+betIT1Ng3Pk0S9VXf2uqEIiTnlJRuA70j5MwjLCliy/iC9Ts3ghJyOdUIrnYfYaL3u7UbVC1OkfTU2waA==", + "requires": { + "azure-common": "^0.9.13", + "underscore": "^1.8.3" + } + }, + "azure-gallery": { + "version": "2.0.0-pre.20", + "resolved": "https://registry.npmjs.org/azure-gallery/-/azure-gallery-2.0.0-pre.20.tgz", + "integrity": "sha1-ei61gkGEvRUTQS2Zr59sfhwyKw8=", + "requires": { + "azure-common": "^0.9.13", + "underscore": "1.4.x" + }, + "dependencies": { + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + } + } + }, + "azure-graph": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/azure-graph/-/azure-graph-2.2.0.tgz", + "integrity": "sha512-ab0LlM5Q3pcKm+V6F6yx2ShzGOTYMcmJvLdL3PQsC9hF+hrYsBdkTCdNZdlPBgrSB8jp5vzhmK83qHGRs14hHw==", + "requires": { + "ms-rest": "^2.2.2", + "ms-rest-azure": "^2.3.3" + } + }, + "azure-keyvault": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/azure-keyvault/-/azure-keyvault-3.0.5.tgz", + "integrity": "sha512-59fzKRq9dnzv03lEuImvgXc3QjRJoSJtK0gv1WXoqCivBuPdFNK+x6hAjoEDS2WEOXG+7m3uiJWqpMh/8NW3ow==", + "requires": { + "ms-rest": "^2.5.0", + "ms-rest-azure": "^2.6.0" + } + }, + "azure-loganalytics": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/azure-loganalytics/-/azure-loganalytics-0.1.1.tgz", + "integrity": "sha512-nt3DhaywATobRrFPJzS/W9ynFAnCKO+i+A3Lzjz/ZGzUmuUxAQkX4ALkk8BJvsPK6ONoC297u+RQuDSigDsz7A==", + "requires": { + "ms-rest": "^2.3.3" + } + }, + "azure-monitoring": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/azure-monitoring/-/azure-monitoring-0.10.6.tgz", + "integrity": "sha512-6HNA8VuC5qYvQMjcQt2/zlB7oyAJ7n6KGIYGstS6KS9Orux0peqxlrGPDeQRa4jDNq6ili83KiGc7RhWcgsE4Q==", + "requires": { + "azure-common": "^0.9.17", + "moment": "^2.22.2", + "underscore": "^1.8.3" + } + }, + "azure-sb": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/azure-sb/-/azure-sb-0.10.6.tgz", + "integrity": "sha512-bgupZJZ5DcZEh/fRRcDiverWteq32AhBrm34qK2/Rn6LIgurGzk70FpiBV5KxVPAaVmX08kdMwuGMkUMxinv8g==", + "requires": { + "azure-common": "^0.9.19", + "mpns": "2.1.3", + "underscore": "^1.8.3", + "wns": "~0.5.3" + } + }, + "azure-scheduler": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/azure-scheduler/-/azure-scheduler-0.10.4.tgz", + "integrity": "sha512-1X68H1jP0m59rojy+Jil2vEevsiM3M/bJvfztOFRDwWi9s9IxU/yxBPUMdL9vPVWZpbLF7m7VapYzSfDwsiCxA==", + "requires": { + "azure-common": "^0.9.17", + "moment": "^2.22.2" + } + }, + "azure-servicefabric": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/azure-servicefabric/-/azure-servicefabric-2.2.0.tgz", + "integrity": "sha512-b+rxF8esa1Cm+bnJLs6a+hO/7U9QwvQzg0bSR1rKP9NTKjZji3GxdndcPVkHqFv28QiLo9ifyR/FaJMA0cDcTw==", + "requires": { + "ms-rest": "^2.3.3" + } + }, + "azure-storage": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.10.3.tgz", + "integrity": "sha512-IGLs5Xj6kO8Ii90KerQrrwuJKexLgSwYC4oLWmc11mzKe7Jt2E5IVg+ZQ8K53YWZACtVTMBNO3iGuA+4ipjJxQ==", + "requires": { + "browserify-mime": "~1.2.9", + "extend": "^3.0.2", + "json-edm-parser": "0.1.2", + "md5.js": "1.3.4", + "readable-stream": "~2.0.0", + "request": "^2.86.0", + "underscore": "~1.8.3", + "uuid": "^3.0.0", + "validator": "~9.4.1", + "xml2js": "0.2.8", + "xmlbuilder": "^9.0.7" + }, + "dependencies": { + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" + }, + "xml2js": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz", + "integrity": "sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I=", + "requires": { + "sax": "0.5.x" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + } + } + }, + "azure-storage-legacy": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/azure-storage-legacy/-/azure-storage-legacy-0.10.3.tgz", + "integrity": "sha512-znZD9ixqwtQM4/mXGa/5RAj+GrxKbp7wYSWpMc7AlH6Laz5qSoMZLi+4PXqnYnbc9t3p2E3HoPKhtU62H4e4CA==", + "requires": { + "azure-common": "^0.9.13", + "mime": "^1.6.0", + "underscore": "^1.8.3" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", + "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "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==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "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" + } + }, + "browserify-mime": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/browserify-mime/-/browserify-mime-1.2.9.tgz", + "integrity": "sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8=" + }, + "bson": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", + "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" + }, + "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=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "connect-multiparty": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-2.2.0.tgz", + "integrity": "sha512-zKcpA7cuXGEhuw9Pz7JmVCFmp85jzGLGm/iiagXTwyEAJp4ypLPtRS/V4IGuGb9KjjrgHBs6P/gDCpZHnFzksA==", + "requires": { + "http-errors": "~1.7.0", + "multiparty": "~4.2.1", + "on-finished": "~2.3.0", + "qs": "~6.5.2", + "type-is": "~1.6.16" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "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==" + }, + "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=" + }, + "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=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-utils": { + "version": "1.2.21", + "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz", + "integrity": "sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q=" + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=" + }, + "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" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" + }, + "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=" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "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==", + "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=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "envconf": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/envconf/-/envconf-0.0.4.tgz", + "integrity": "sha1-hWda+6I3xD+Y3i1GrcDlMqTc9Is=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.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" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "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==", + "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=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "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=" + }, + "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==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "http": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", + "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I=" + }, + "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-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-edm-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/json-edm-parser/-/json-edm-parser-0.1.2.tgz", + "integrity": "sha1-HmCw/vG8CvZ7wNFG393lSGzWFbQ=", + "requires": { + "jsonparse": "~1.2.0" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "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=" + }, + "jsonparse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", + "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jstoxml": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/jstoxml/-/jstoxml-1.6.5.tgz", + "integrity": "sha512-ozA5AwbLnsm6ft6hHh/raabjwGN7FekIwa42WAFEkF3ZKEeXJLfS6/4GlkbOZglFBfadM75nowCRfhw/ojmd9g==" + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "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==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kareem": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "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.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "mongodb": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.8.tgz", + "integrity": "sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==", + "requires": { + "bl": "^2.2.0", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.9.18", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.18.tgz", + "integrity": "sha512-agZbIuQcN1gZ12BJn6KesA+bgsvoLVjCwhfPw88hggxX8O24SWK4EJwN35GEZKDej9AHUZKNAPgmdeXCVQxviA==", + "requires": { + "bson": "^1.1.4", + "kareem": "2.3.1", + "mongodb": "3.5.8", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.7.0", + "mquery": "3.2.2", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.1.2", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, + "mpath": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==" + }, + "mpns": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mpns/-/mpns-2.1.3.tgz", + "integrity": "sha512-gPLNoVqwYoKUmNYZ2shMSdaE2XvHSRxWNzyG4DUi6Av7MSujyeOw/nj61nnQeuV/vke5E0Dni468xn0qxTHIZQ==" + }, + "mquery": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "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" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ms-rest": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/ms-rest/-/ms-rest-2.5.3.tgz", + "integrity": "sha512-p0CnzrTzEkS8UTEwgCqT2O5YVK9E8KGBBlJVm3hFtMZvf0dmncKYXWFPyUa4PAsfBL7h4jfu39tOIFTu6exntg==", + "requires": { + "duplexer": "^0.1.1", + "is-buffer": "^1.1.6", + "is-stream": "^1.1.0", + "moment": "^2.21.0", + "request": "^2.88.0", + "through": "^2.3.8", + "tunnel": "0.0.5", + "uuid": "^3.2.1" + } + }, + "ms-rest-azure": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ms-rest-azure/-/ms-rest-azure-2.6.0.tgz", + "integrity": "sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A==", + "requires": { + "adal-node": "^0.1.28", + "async": "2.6.0", + "moment": "^2.22.2", + "ms-rest": "^2.3.2", + "request": "^2.88.0", + "uuid": "^3.2.1" + } + }, + "multiparty": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.1.tgz", + "integrity": "sha512-AvESCnNoQlZiOfP9R4mxN8M9csy2L16EIbWIkt3l4FuGti9kXBS8QVzlfyg4HEnarJhrzZilgNFlZtqmoiAIIA==", + "requires": { + "fd-slicer": "1.1.0", + "http-errors": "~1.7.0", + "safe-buffer": "5.1.2", + "uid-safe": "2.1.5" + } + }, + "n_": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/n_/-/n_-2.0.2.tgz", + "integrity": "sha512-IiIfzu2BkOKmFrKkuP4BgB72hFwvmksUMc+JnUCPsao1CSr3B7vzAq8gv/HFgHrwGxPIBhk7taJ/dc0NtTdBew==", + "requires": { + "lodash": "^4.17.15", + "repl.history": "^0.1.4" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-json-config": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/node-json-config/-/node-json-config-0.0.5.tgz", + "integrity": "sha1-Iaaqgx7lV5djQ8ydqNgKnlSo0Oc=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "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" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "repl.history": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/repl.history/-/repl.history-0.1.4.tgz", + "integrity": "sha1-gDZxcfN4HW5CmccXWMJTCX9dWDI=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "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" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "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" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "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==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tunnel": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.5.tgz", + "integrity": "sha512-gj5sdqherx4VZKMcBA4vewER7zdK25Td+z1npBqpbDys4eJrLx+SlYjJvq1bDXs2irkuJM5pf8ktaEQVipkrbA==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "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=" + }, + "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" + } + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "unirest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/unirest/-/unirest-0.6.0.tgz", + "integrity": "sha512-BdYdcYJHXACqZ53k8Zz7QlNK/1W/HjCZlmg1OaaN/oTSp4FTWh0upXGSJsG88PljDBpSrNc2R649drasUA9NEg==", + "requires": { + "form-data": "^0.2.0", + "mime": "^2.4.0", + "request": "^2.88.0" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "requires": { + "mime-db": "~1.12.0" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "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==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "validator": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz", + "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wns": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/wns/-/wns-0.5.4.tgz", + "integrity": "sha512-WYiJ7khIwUGBD5KAm+YYmwJDDRzFRs4YGAjtbFSoRIdbn9Jcix3p9khJmpvBTXGommaKkvduAn+pc9l4d9yzVQ==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + }, + "xmlbuilder": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.3.tgz", + "integrity": "sha1-xGFLp04K0ZbmCcknLNnh3bKKilg=" + }, + "xmldom": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.2.1.tgz", + "integrity": "sha512-kXXiYvmblIgEemGeB75y97FyaZavx6SQhGppLw5TKWAD2Wd0KAly0g23eVLh17YcpxZpnFym1Qk/eaRjy1APPg==" + }, + "xpath.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d5ffbcb --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "funtion_req_partner", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "azure": "^2.3.1-preview", + "azure-storage": "^2.10.3", + "body-parser": "^1.19.0", + "connect-multiparty": "^2.2.0", + "cors": "^2.8.5", + "express": "^4.17.1", + "http": "0.0.0", + "jstoxml": "^1.6.5", + "lodash": "^4.17.15", + "mongodb": "^3.5.8", + "mongoose": "^5.9.18", + "multiparty": "^4.2.1", + "n_": "^2.0.2", + "node-json-config": "0.0.5", + "unirest": "^0.6.0" + } +} diff --git a/req_partner_manager.js b/req_partner_manager.js new file mode 100644 index 0000000..fa9921a --- /dev/null +++ b/req_partner_manager.js @@ -0,0 +1,216 @@ +let _ = require('lodash') +module.exports = function(reqBody, partnerConfig) { + this.reqBody = reqBody; + this.partnerConfig = JSON.parse(JSON.stringify(partnerConfig)); + this.requestApi = function() { + + try { + let body; + let headers = getReqHeader(this.partnerConfig.request.header, this.reqBody); + this.partnerConfig.request.header = headers + + if(this.partnerConfig.request.ContentType == 'application/json') { + body = getReqBodyJson(this.partnerConfig.request.body, this.reqBody) + } else if(this.partnerConfig.request.ContentType == 'text/xml'){ + body = getReqBodyXml(this.partnerConfig.request.body, this.reqBody) + } else { + throw { + status : 'unsupport', + cause : 'unsupport content-type ' + this.partnerConfig.request.ContentType + } + } + // console.log('body', body) + if(body) { + this.partnerConfig.request.body = body + } + + return this.partnerConfig.request; + } catch (err) { + console.log(err) + return new Error(JSON.stringify(err)); + } + + } +} + +function getReqHeader(headers, dataHeaders) { + let headersObject = {}; + headers = replaceSpace(headers).split(','); + + //replce headers + for(let headerIndex in headers) { + let header = headers[headerIndex]; + let key = header.split('=')[0] + if(header.indexOf('$') !== -1) { + let keyValue = header.split('$')[1]; + headers[headerIndex] = header.replace('$'+keyValue,replaceValueMadatory(keyValue,dataHeaders)); + } + headersObject[key] = headers[headerIndex].split('=')[1]; + } + + return headersObject; +} + +function getReqBodyJson(bodyJson, dataBodyJson) { + let bodyObject = {}; + bodyJson = replaceSpace(bodyJson).split(',') + + //replce body + for(let bodyIndex in bodyJson) { + let body = bodyJson[bodyIndex]; + let key = body.split('=')[0]; + let keyValue = bodyJson[bodyIndex].split('=')[1] + let insertKeyFlag = true; + if(key.indexOf('@') !== -1) { // case array + insertKeyFlag = false + // let tempObjectArray = {} + let keyArray = searchKeyArray(key); + let keyValueArray = searchKeyArray(keyValue); + if(searchValueArray(keyValue, keyValueArray, dataBodyJson)) { + let index = 0; + let breakWhile = true; + while(breakWhile) { + let findKey = keyValue.replace(keyValue,keyValueArray.substring(1) + '['+index+']'); + let keyObject = keyArray.replace(keyArray,keyArray.substring(1) + '['+index+']'); + if(_.has(dataBodyJson, findKey)) { + bodyObject[keyObject] = _.get(dataBodyJson, findKey) + } else { + breakWhile = false + } + // bodyObject[findKey] = bodyJson[bodyIndex].split('=')[1]; + index++ + } + } else { + throw { + status : 'missing', + cause : 'missing parameter ' + key + } + } + } else { // case object + if(body.indexOf('$') !== -1) { + let keyValue = body.split('$')[1]; + bodyJson[bodyIndex] = body.replace('$'+keyValue,replaceValueMadatory(keyValue,dataBodyJson)); + } else if(body.indexOf('?') !== -1) { + let keyValue = body.split('?')[1]; + if(checkValueOptional(keyValue, dataBodyJson)) { + bodyJson[bodyIndex] = body.replace('?'+keyValue,replaceValueOptional(keyValue,dataBodyJson)); + } else { + insertKeyFlag = false; + } + } + } + + if(insertKeyFlag) { + bodyObject[key] = bodyJson[bodyIndex].split('=')[1]; + } else { + insertKeyFlag = true; + } + } + + return buildDataToObject(bodyObject); + +} + +function getReqBodyXml(bodyXml, dataBodyXml) { + + let listKeyReplace = {}; + let tempXml = bodyXml; + let index = 0; + + while (true) { + index = tempXml.indexOf('>$') + if(index === -1) { + index = tempXml.indexOf('>?') + if(index === -1) { + break; + } + } + let first = tempXml.substring(tempXml.substring(0, index).lastIndexOf('<'),index+1) + let last = tempXml.substring(index+1).substring(0, tempXml.substring(index+1).indexOf('>')+1) + let valueKey = last.substring(0, last.indexOf('<')); + let fullKey = first + last; + listKeyReplace[fullKey] = valueKey; + tempXml = tempXml.substring(tempXml.indexOf(fullKey) + fullKey.length); + // console.log(tempXml); + } + + let valueXml = getValueXml(listKeyReplace, dataBodyXml) + console.log(valueXml) + + for(let valueXmlKey in valueXml) { + if(valueXml[valueXmlKey] === undefined) { + bodyXml = bodyXml.replace(valueXmlKey, '') + } else { + bodyXml = bodyXml.replace(valueXmlKey, valueXml[valueXmlKey]) + } + } + + return bodyXml +} + +function getValueXml(listKeyXml, dataBodyXml) { + + for(let key in listKeyXml) { + if(listKeyXml[key].startsWith('$')) { + listKeyXml[key] = key.replace(listKeyXml[key], replaceValueMadatory(listKeyXml[key].substring(1), dataBodyXml)) + } else if(listKeyXml[key].startsWith('?')){ + if(checkValueOptional(listKeyXml[key].substring(1), dataBodyXml)) { + listKeyXml[key] = key.replace(listKeyXml[key], replaceValueOptional(listKeyXml[key].substring(1), dataBodyXml)) + } else { + listKeyXml[key] = '' + } + } + } + + return listKeyXml; +} + +function replaceSpace(data) { + return data && typeof data == 'string' ? data.replace(/ /g, '') : data; +} + +function replaceValueMadatory(key, value) { + if(_.has(value, key)) { + return _.get(value, key); + } else { + throw { + status : 'missing', + cause : 'missing parameter ' + key + }; + } +} + +function replaceValueOptional(key, value) { + if(_.has(value, key)) { + return _.get(value, key); + } else { + return; + } +} + +function checkValueOptional(key, value) { + return _.has(value, key) ? true : false; +} + +function buildDataToObject(dataObject) { + let newObject = {} + + for(let key in dataObject) { + _.set(newObject,key,dataObject[key]); + } + + return newObject; +} + +function searchKeyArray(key) { + let indexArr = key.indexOf('@') + let lastIndexArr = key.substring(indexArr).indexOf('.') + let keyArray = key.substring(indexArr, lastIndexArr !== -1 ? lastIndexArr + indexArr : key.length) + return keyArray; +} + +function searchValueArray(key, idenKey, value) { + let findKey = key.replace(key,idenKey.substring(1) + '[0]') + console.log('findKeyArr', findKey) + return _.has(value,findKey) +} \ No newline at end of file diff --git a/scf.js b/scf.js new file mode 100644 index 0000000..e9d497f --- /dev/null +++ b/scf.js @@ -0,0 +1,20 @@ +module.exports.decryptPrivateId = async (req, res) => { + console.log('===== GET DecryptPrivateId =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + + let response = { + "developerMessage": "Success", + "resultCode": "20000", + "moreInfo": "http://smaf.pantry.ais.error/scf/20000", + "privateId": "5642356709765412340987473628192039562918@ais.co.th", + "partnerId": "30010", + "publicId": "886561802@gmail.com" + } + + res.send(response) +} \ No newline at end of file diff --git a/ssb.js b/ssb.js new file mode 100644 index 0000000..c782ff1 --- /dev/null +++ b/ssb.js @@ -0,0 +1,160 @@ +module.exports.getProfileType = async (req, res) => { + console.log('===== GET ProfileType =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + + let response = { + "resultCode": "20000", + "developerMessage": "Success", + "detail": { + "networkType":"3PE", + "spName": "ais", + "brandId": "5", + "language": "tha", + "state": "active", + "chargeMode": "prepaid", + "customerCategory": "residential", + "customerSubCategory": "thaiCitizen", + "customerSegment": "classic", + "customerId": "662571977736387", + "serviceProfileId": "6", + "contactNumber": "66614593898", + "profileType": "Prepaid RTBS", + "ivrLanguage": "tha", + "smsLanguage": "tha", + "ussdLanguage": "tha", + "emailLanguage": "tha" + } + } + + + res.send(response) +} + +module.exports.queryHistoryPackage = async (req, res) => { + console.log('===== POST QueryHistoryPackage =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "developerMessage": "Success", + "subscriberPackage":{ + "mobileNo": "0923029000", + "profileType":"Prepaid RTBS", + "packageList":[ + { + "promotionName": "M NBA Free Trial 1M 199Baht Monthly", + "promotionCode": "7400110", + "startDate": "2018-05-31 14:23:03", + "status":"A" + }, + { + "promotionName": "M HOOQ Package Free 12 Months", + "promotionCode": "7400115", + "startDate": "2018-05-31 15:15:59", + "status":"A" + }, + { + "promotionName": "NG Cartoons 5Baht Daily", + "promotionCode": "7400121", + "startDate": "2018-05-31 16:15:59", + "status":"H" + } + ] + } + } + + res.send(response) +} + +module.exports.queryCurrentPackage = async (req, res) => { + console.log('===== POST QueryCurrentPackage =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "developerMessage": "Success", + "subscriberPackage":{ + "mobileNo": "0923029000", + "profileType":"Prepaid INS", + "packageList":[ + { + "promotionName": "โทรสบาย[1.50B]", + "packageNameEN":"xxxxxxxxx", + "packageNameTH":"xxxxxxxxx", + + "startDate": "2018-05-31 14:23:03", + "endDate": "2018-05-31 14:23:03", + "promotionCode": "7400110", + "packageType":"Main", + "integrationName":"INS_3G 1000B 60Days Net 4Mbps SWifi UL", + "packageDescEN":"xxxxxxxxx", + "packageDescTH":"xxxxxxxxx", + "promotionSeq":"1002" + }, + { + "promotionName": "M NBA Free Trial 1M 199Baht Monthly", + "packageNameEN":"xxxxxxxxx", + "packageNameTH":"xxxxxxxxx", + "promotionCode": "7400110", + "startDate": "2018-05-31 14:23:03", + "endDate": "2018-05-31 14:23:03", + "integrationName":"INS_3G 1000B 60Days Net 4Mbps SWifi UL", + "packageType":"Ontop Extra", + "packageDescEN":"xxxxxxxxx", + "packageDescTH":"xxxxxxxxx", + "promotionSeq":"1003" + } + ] + } + } + + res.send(response) +} + +module.exports.applyPack = async (req, res) => { + console.log('===== POST applyPack =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "developerMessage": "Success", + "ussdMessage": "ระบบกำลังตรวจสอบข้อมูล กรุณารอรับข้อความแจ้งสิทธิ์ของท่านค่ะ" + } + + + res.send(response) +} + +module.exports.deletePackage = async (req, res) => { + console.log('===== POST deletePackage =====') + console.log('url', req.originalUrl); + console.log('headers', req.headers); + console.log('query', req.query); + console.log('params', req.params); + console.log('body', req.body); + + let response = { + "resultCode": "20000", + "developerMessage": "Success", + "ussdMessage": "Please wait for confirmation SMS shortly.", + "responseMessage": "Thank you, your package has been deleted." + } + + + res.send(response) +} -- libgit2 0.21.2