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