Commit dbcd2dae8a4598dbef9cc6e975d3df15bdb87a88

Authored by Adhidarma Hadiwinoto
1 parent 0631d96b2c
Exists in master

Ready to test

Showing 34 changed files with 4692 additions and 0 deletions Inline Diff

File was created 1 module.exports = {
2 env: {
3 commonjs: true,
4 es2021: true,
5 node: true,
6 },
7 extends: [
8 'airbnb-base',
9 ],
10 parserOptions: {
11 ecmaVersion: 12,
12 },
13 rules: {
14 indent: ['error', 4],
15 },
16 };
17
File was created 1 /node_modules/
2 /lib/custom-controlpanel/public/tmp/
3 /config-backup/
4 /config.json
5 /var/backup/
6 /var/data/
7 /var/run/
8 /tmp/
9 /logs/
10 /dump
11 /dump_trx
12 config_*.json
13 pid.txt
14 *.json.backup
15 database.json
File was created 1 (c) Copyright 2021 PT TEKNOLOGI TRANSAKSI DIGITAL
2 http://tektrans.id/
3
docs/XML-RPC_TopUpGateway.pdf
No preview for this file type
docs/plink/API Pulsa v-1.2 (Alternatif).pdf
No preview for this file type
File was created 1 process.chdir(__dirname);
2
3 const fs = require('fs');
4
5 fs.writeFileSync('pid.txt', process.pid.toString());
6
7 const config = require('komodo-sdk/config');
8
9 global.KOMODO_LOG_LABEL = `KOMODO-GW@${config.handler_name || 'ST24'}`;
10
11 require('komodo-sdk/api-server');
12
13 // const adviceServer = require('komodo-sdk/gateway/advice-push-server');
14
15 const pullgw = require('komodo-sdk/gateway/pull');
16
17 require('./lib/callback');
18
19 const partnerPrepaid = require('./lib/partner');
20
21 pullgw.setPartner(partnerPrepaid);
22
23 // adviceServer.setPartner(partnerPrepaid);
24
lib/axios-safe-failed.js
File was created 1 const safeErrorCodes = [
2 'EHOSTUNREACH',
3 'ENOTFOUND',
4 'ECONNREFUSED',
5 'ETIMEDOUT', // timeout on connecting
6
7 // Berikut adalah error code yang tidak aman untuk dianggap gagal
8
9 // terjadi karena timeout setelah konek (akibat pengaturan timeout pada request axios)
10 // 'ECONNABORTED',
11 ];
12
13 module.exports = (e) => (safeErrorCodes.indexOf(e.code) >= 0)
14 || (e.response && e.response.status && e.response.status >= 400 && e.response.status < 500);
15
lib/callback/common-middleware.js
File was created 1 const MODULE_NAME = 'CALLBACK.COMMON-MIDDLEWARE';
2
3 const logger = require('komodo-sdk/logger');
4 const dumper = require('../dumper/callback');
5
6 module.exports = (req, res, next) => {
7 const { xid } = res.locals;
8 logger.info(`${MODULE_NAME} C1BB8552: Got a hit on callback listener`, {
9 xid,
10 remoteAddress: req.ip,
11 httpMethod: req.method,
12 url: req.url,
13 userAgent: req.get('user-agent'),
14 contentType: req.get('content-type'),
15 });
16
17 dumper(xid, req);
18
19 next();
20 };
21
lib/callback/index.js
File was created 1 /**
2 * XML-RPC callback listener
3 *
4 * @author Adhidarma Hadiwinoto <me@adhisimon.org>
5 * @since 2021-06-02
6 * @version 20210602
7 */
8
9 const MODULE_NAME = 'CALLBACK';
10
11 const express = require('express');
12 const uniqid = require('uniqid');
13
14 const config = require('komodo-sdk/config');
15 const logger = require('komodo-sdk/logger');
16
17 const commonMiddleware = require('./common-middleware');
18 const mainHandler = require('./main-handler');
19
20 const listenPort = config.partner.callback_port
21 || config.reverse_report_port;
22
23 if (!listenPort) {
24 logger.warn(`${MODULE_NAME} B2D51894: Please specified callback listen port on config.partner.callback_port`);
25 process.exit(1);
26 }
27
28 const app = express();
29
30 app.use((req, res, next) => {
31 res.locals.xid = uniqid();
32 next();
33 });
34
35 app.use(express.text({ type: 'text/*' }));
36 app.use(commonMiddleware);
37 app.use(mainHandler);
38
39 app
40 .listen(listenPort, () => {
41 logger.verbose(`${MODULE_NAME} 12322885: Start listening`, {
42 port: listenPort,
43 });
44 })
45 .on('error', (e) => {
46 logger.warn(`${MODULE_NAME} 03709C04: Exception on starting`, {
47 eCode: e.code,
48 eMessage: e.message,
49 });
50
51 process.exit(1);
52 });
53
lib/callback/main-handler.js
File was created 1 const MODULE_NAME = 'CALLBACK.MAIN-HANDLER';
2
3 const logger = require('komodo-sdk/logger');
4
5 const parseResult = require('../parse-result');
6
7 module.exports = (req, res) => {
8 res.end('ACK\n');
9
10 const { xid } = res.locals;
11
12 if (!req.body) {
13 logger.verbose(`${MODULE_NAME} 18FCF551: Ignoring request without body`, { xid });
14
15 return;
16 }
17
18 if (typeof req.body !== 'string') {
19 logger.verbose(`${MODULE_NAME} 55F8AB88: Ignoring request with non string type`, {
20 xid,
21 typeofBody: typeof req.body,
22 });
23
24 return;
25 }
26
27 logger.verbose(`${MODULE_NAME} 48B1E679: Parsing callback`, { xid });
28 parseResult(xid, null, req.body, true);
29 };
30
lib/dumper/callback.js
File was created 1 const MODULE_NAME = 'DUMPER.CALLBACK';
2
3 const fs = require('fs');
4
5 const fsPromise = fs.promises;
6 const moment = require('moment');
7 const config = require('komodo-sdk/config');
8 const logger = require('komodo-sdk/logger');
9 const path = require('path');
10 const mkdirIfNotExists = require('../mkdir-if-not-exists');
11
12 require('./init');
13 const vars = require('./vars');
14
15 const { baseDumpDir } = vars;
16 const baseCallbackDumpDir = path.join(baseDumpDir, 'callback');
17
18 if (!fs.existsSync(baseCallbackDumpDir)) {
19 fs.mkdirSync(baseCallbackDumpDir, { recursive: true });
20 }
21
22 const doNotDump = !config.partner.dump_callback;
23
24 module.exports = async (xid, req) => {
25 if (!req) return;
26 if (doNotDump) return;
27
28 logger.verbose(`${MODULE_NAME} E244F70E: Dumping`, {
29 xid,
30 });
31
32 const dumpDir = path.join(
33 baseCallbackDumpDir,
34 moment().format('YYYY-MM-DD'),
35 );
36
37 await mkdirIfNotExists(xid, dumpDir);
38
39 const dumpFileName = path.join(
40 dumpDir,
41 `callback_${xid}.txt`,
42 );
43
44 const data = `-------- BEGIN OF CALLBACK DUMP --------
45
46 ${moment().format('YYYY-MM-DD HH:mm:ss')}
47
48 XID: ${xid}
49
50 REMOTE ADDR: ${req.ip}
51 USER AGENT: ${req.get('user-agent')}
52 CONTENT-TYPE: ${req.get('content-type')}
53
54 HTTP METHOD: ${req.method}
55 URL: ${req.url}
56
57 QUERY STRING: ${req.query && JSON.stringify(req.query, null, 2)}
58
59 BODY:
60 ${typeof req.body === 'string' ? req.body : JSON.stringify(req.body, null, 2)}
61
62 -------- END OF CALLBACK DUMP --------
63 `;
64
65 try {
66 logger.verbose(`${MODULE_NAME} ED80B898: Writing file`, {
67 xid,
68 dumpFileName,
69 });
70
71 await fsPromise.writeFile(dumpFileName, data);
72
73 logger.verbose(`${MODULE_NAME} 362AEFC6: Writing last dump file`, { xid });
74 await fsPromise.writeFile(
75 path.join(baseDumpDir, 'last-callback.txt'),
76 data,
77 );
78 } catch (e) {
79 logger.warn(`${MODULE_NAME} 925869BC: Exception on writing dump file`, {
80 xid,
81 eCode: e.code,
82 eMessage: e.message,
83 });
84 }
85 };
86
File was created 1 const MODULE_NAME = 'DUMPER.INIT';
2
3 const fs = require('fs');
4 const logger = require('../logger');
5 const vars = require('./vars');
6
7 if (!fs.existsSync(vars.baseDumpDir)) {
8 logger.verbose(`${MODULE_NAME} 38756EC8: Creating base dump directory`, {
9 baseDumpDir: vars.baseDumpDir,
10 });
11
12 fs.mkdirSync(vars.baseDumpDir);
13 }
14
lib/dumper/request.js
File was created 1 const MODULE_NAME = 'DUMPER.REQUEST';
2
3 const fs = require('fs');
4
5 const fsPromise = fs.promises;
6 const moment = require('moment');
7 const config = require('komodo-sdk/config');
8 const logger = require('komodo-sdk/logger');
9 const path = require('path');
10 const mkdirIfNotExists = require('../mkdir-if-not-exists');
11
12 require('./init');
13 const vars = require('./vars');
14
15 const { baseDumpDir } = vars;
16 const baseRequestDumpDir = path.join(baseDumpDir, 'request');
17
18 if (!fs.existsSync(baseRequestDumpDir)) {
19 fs.mkdirSync(baseRequestDumpDir, { recursive: true });
20 }
21
22 const doNotDump = !config.partner.dump_request;
23
24 module.exports = async (
25 xid, task, endpointUrl, payload, axiosConfig, axiosResponse, exceptionOnHit,
26 ) => {
27 if (doNotDump) return;
28
29 const {
30 trx_id: trxId,
31 } = task;
32
33 logger.verbose(`${MODULE_NAME} 826334AF: Dumping`, {
34 xid,
35 trxId,
36 });
37
38 const dumpDir = path.join(
39 baseRequestDumpDir,
40 moment().format('YYYY-MM-DD'),
41 );
42
43 await mkdirIfNotExists(xid, dumpDir);
44
45 const dumpFileName = path.join(
46 dumpDir,
47 `trx_${trxId}_${xid}.txt`,
48 );
49
50 const data = `-------- BEGIN OF REQUEST DUMP --------
51
52 ${moment().format('YYYY-MM-DD HH:mm:ss')}
53
54 XID: ${xid}
55 TRX ID: ${trxId}
56 TRX DATE: ${task.created}
57 DESTINATION: ${task.destination}
58 LOCAL PRODUCT: ${task.product}
59 REMOTE PRODUCT: ${task.remote_product}
60
61 HTTP METHOD: POST
62 ENDPOINT URL: ${endpointUrl}
63
64 HIT CONFIG: ${(axiosConfig && JSON.stringify(axiosConfig, null, 2)) || '-'}
65
66 PAYLOAD:
67 ${payload}
68
69 RESPONSE HEADERS:
70 ${axiosResponse && axiosResponse.headers && JSON.stringify(axiosResponse.headers)}
71
72 HTTP STATUS: ${axiosResponse && axiosResponse.status} ${(axiosResponse && axiosResponse.statusText) || ''}
73 HIT EXCEPTION: ${
74 exceptionOnHit
75 ? JSON.stringify({ code: exceptionOnHit.code, message: exceptionOnHit.message }, null, 2)
76 : '-'
77 }
78
79 RESPONSE BODY:
80 ${
81 (
82 axiosResponse && axiosResponse.data
83 && (
84 (typeof axiosResponse.data === 'string' && axiosResponse.data)
85 || JSON.stringify(axiosResponse.data, null, 2)
86 )
87 ) || ''
88 }
89
90 -------- END OF REQUEST DUMP --------
91 `;
92
93 try {
94 logger.verbose(`${MODULE_NAME} E915E0D8: Writing file`, {
95 xid,
96 dumpFileName,
97 });
98
99 await fsPromise.writeFile(dumpFileName, data);
100
101 logger.verbose(`${MODULE_NAME} 7275A26C: Writing last dump file`, { xid });
102 await fsPromise.writeFile(
103 path.join(baseDumpDir, 'last-request.txt'),
104 data,
105 );
106 } catch (e) {
107 logger.warn(`${MODULE_NAME} 29212E93: Exception on writing dump file`, {
108 xid,
109 eCode: e.code,
110 eMessage: e.message,
111 });
112 }
113 };
114
File was created 1 exports.baseDumpDir = 'dump';
2
lib/generic-xmlrpc/compose-payload.js
File was created 1 const paramsIsArray = (methodName, params) => `<?xml version="1.0"?>
2 <methodCall>
3 <methodName>${methodName}</methodName>
4 <params>
5 <param>
6 <value>
7 <struct>
8 ${(params || []).map((param) => `
9 <member>
10 <name>${param.name}</name>
11 <value>
12 <${param.type || 'string'}>${param.value}</${param.type || 'string'}>
13 </value>
14 </member>
15
16 `).join('')}
17 </struct>
18 </value>
19 </param>
20 </params>
21 </methodCall>`;
22
23 const paramsIsNotArray = (methodName, params) => {
24 const paramsInArray = [];
25
26 // eslint-disable-next-line no-restricted-syntax
27 for (const [keyword, value] of Object.entries(params)) {
28 paramsInArray.push({
29 name: keyword,
30 value: (typeof value === 'object' && value.value) || value,
31 type: value.type || 'string',
32 });
33 }
34
35 return paramsIsArray(methodName, paramsInArray);
36 };
37
38 module.exports = (methodName, params) => (
39 Array.isArray(params)
40 ? paramsIsArray(methodName, params)
41 : paramsIsNotArray(methodName, params)
42 );
43
lib/generic-xmlrpc/get-params-members-obj.js
File was created 1 /* eslint-disable no-console */
2 const MODULE_NAME = 'GENERIC-XMLRPC.GET-PARAMS-MEMBERS-OBJ';
3
4 const getParamsMembers = require('./get-params-members');
5
6 module.exports = (data, isDebug) => {
7 const arr = getParamsMembers(data);
8 if (!arr) {
9 if (isDebug) console.log(`${MODULE_NAME} A2E8ED8E: Undefined getParamsMember result`);
10 return null;
11 }
12
13 const result = {};
14 arr.forEach((item) => {
15 result[item.name] = item.value;
16 });
17
18 if (isDebug) {
19 console.log(`${MODULE_NAME} A393BDE0: Returning result:`);
20 console.log(JSON.stringify(result, null, 2));
21 }
22
23 return result;
24 };
25
lib/generic-xmlrpc/get-params-members.js
File was created 1 const popEnvelope = require('./pop-envelope');
2
3 const getMembersNative = (data) => {
4 const body = popEnvelope(data);
5 if (!body) return null;
6
7 return body
8 && body.params
9 && body.params.param
10 && body.params.param.value
11 && body.params.param.value.struct
12 && body.params.param.value.struct.member;
13 };
14
15 module.exports = (data) => {
16 const members = getMembersNative(data);
17 if (!members) return null;
18
19 return members.map((item) => ({
20 name: item.name,
21 value: item.value && item.value.string,
22 }));
23 };
24
lib/generic-xmlrpc/pop-envelope.js
File was created 1 module.exports = (data) => data
2 && (typeof data === 'object')
3 && (data.methodCall || data.methodResponse);
4
File was created 1 const MODULE_NAME = 'HIT';
2
3 const axios = require('axios').default;
4
5 const config = require('komodo-sdk/config');
6 const logger = require('komodo-sdk/logger');
7
8 const composePayload = require('./generic-xmlrpc/compose-payload');
9 const report = require('./report');
10 const dumper = require('./dumper/request');
11 const axiosSafeFailed = require('./axios-safe-failed');
12 const parseResult = require('./parse-result');
13
14 const defaultAxiosConfig = {
15 headers: {
16 'User-Agent': 'Komodo-GW-ST24B',
17 'Content-Type': 'text/xml',
18 },
19 timeout: config.partner.hit_timeout = 2 * 60 * 120,
20 };
21
22 module.exports = async (xid, task) => {
23 const methodName = config.partner.topuprequest_method_name || 'topUpRequest';
24
25 logger.verbose(`${MODULE_NAME} E4F52474: Processing task`, {
26 xid, methodName, task,
27 });
28
29 const params = {
30 MSISDN: config.partner.msisdn,
31 REQUESTID: task.trx_id,
32 PIN: config.partner.pin,
33 NOHP: task.destination,
34 NOM: task.remote_product,
35 };
36
37 const payload = composePayload(methodName, params);
38 const axiosConfig = JSON.parse(JSON.stringify(defaultAxiosConfig));
39 axiosConfig.headers['Content-length'] = payload.length;
40
41 let response;
42 let eToDump;
43
44 const endpointUrl = config.partner.url;
45
46 try {
47 logger.verbose(`${MODULE_NAME} 47FDCA85: Going to HIT partner`, {
48 xid,
49 endpointUrl,
50 methodName,
51 params,
52 });
53
54 response = await axios.post(endpointUrl, params, axiosConfig);
55 if (!response) {
56 const e = new Error(`${MODULE_NAME} BAACC918: Empty response`);
57 e.rc = '90';
58 logger.warn(e.message, { xid });
59 throw e;
60 }
61
62 if (!response.data) {
63 const e = new Error(`${MODULE_NAME} C816D842: Empty response data`);
64 e.rc = '90';
65 logger.warn(e.message, { xid });
66 throw e;
67 }
68
69 if (typeof response.data !== 'string') {
70 const e = new Error(`${MODULE_NAME} 32A75E8E: Response data is not a string`);
71 e.rc = '90';
72 logger.warn(e.message, { xid });
73 throw e;
74 }
75
76 logger.verbose(`${MODULE_NAME} D0CBD82A: Parsing response`, { xid });
77 parseResult(xid, null, response.data, false);
78 } catch (e) {
79 eToDump = e;
80
81 logger.warn(`${MODULE_NAME} 2653B932: Got an exception`, {
82 xid,
83 eCode: e.code,
84 eMessage: e.message,
85 eRc: e.rc,
86 responseStatus: e.response && e.response.status,
87 responseStatusText: e.response && e.response.statusText,
88 responseContentType: e.response && e.response.headers && e.response.headers['content-type'],
89 responseBody: e.response && e.response.data,
90 });
91
92 if (e.response) response = e.response;
93
94 const rc = e.rc || axiosSafeFailed(e) || '68';
95
96 report(xid, {
97 trx_id: task.trx_id,
98 rc,
99 message: {
100 xid,
101 'GW-ERROR': {
102 code: e.code,
103 message: e.message,
104 endpointUrl,
105 httpStatus: (e.response && e.response.status) || null,
106 httpStatusText: (e.response && e.response.statusText) || null,
107 responseBody: e.response && e.response.data,
108 },
109 },
110 });
111 } finally {
112 dumper(
113 xid,
114 task,
115 endpointUrl,
116 payload,
117 axiosConfig,
118 response.config || axiosConfig,
119 eToDump,
120 );
121 }
122 };
123
File was created 1 const isInTest = typeof global.it === 'function';
2
3 // eslint-disable-next-line no-console
4 module.exports = isInTest ? { verbose: console.log, info: console.log, warn: console.log } : require('komodo-sdk/logger');
5
lib/mkdir-if-not-exists.js
File was created 1 const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS';
2
3 const fs = require('fs').promises;
4
5 const logger = require('komodo-sdk/logger');
6
7 const mkdir = async (xid, dirname) => {
8 try {
9 logger.verbose(`${MODULE_NAME} EAE923FB: Making directory`, { xid, dirname });
10 await fs.mkdir(dirname, { recursive: true });
11 } catch (e) {
12 logger.warn(`${MODULE_NAME} 1E8EBB84: Exception on making directory`, {
13 xid, dirname, eCode: e.code, eMessage: e.message,
14 });
15 }
16 };
17
18 module.exports = async (xid, dirname) => {
19 try {
20 fs.stat(dirname);
21 } catch (e) {
22 await mkdir(xid, dirname);
23 }
24 };
25
File was created 1 const MODULE_NAME = 'PARSE-RESULT';
2
3 const config = require('komodo-sdk/config');
4 const logger = require('komodo-sdk/logger');
5
6 const getParamsMemberObj = require('./generic-xmlrpc/get-params-members-obj');
7 const parseXml = require('./parse-xml');
8
9 const report = require('./report');
10 const translateRc = require('./translate-rc');
11
12 module.exports = (xid, trxIdFromCaller, xml, isCallback) => {
13 logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid });
14
15 if (!trxIdFromCaller && !isCallback) {
16 if (logger) logger.warn(`${MODULE_NAME} 8CAAD7C9: No trx id on non callback`, { xid });
17 return;
18 }
19
20 const obj = parseXml(xid, xml);
21 if (!obj) {
22 logger.warn(`${MODULE_NAME} B46CAAD1: Invalid XML`, { xid });
23
24 if (trxIdFromCaller) {
25 report(xid, {
26 trx_id: trxIdFromCaller,
27 rc: '68',
28 message: {
29 xid,
30 isDirectResponse: !isCallback,
31 isCallback: !!isCallback,
32 body: xml,
33 },
34 });
35 }
36
37 return;
38 }
39
40 const params = getParamsMemberObj(obj, false);
41 logger.verbose(`${MODULE_NAME} 3D5400C1: Params extracted from response`, { xid, params });
42
43 const requestIdField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.requestId) || 'REQUESTID';
44 const requestIdFromResponse = params[requestIdField];
45
46 const responseCodeField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.responseCode) || 'RESPONSECODE';
47 const responseCodeFromResponse = params[responseCodeField];
48
49 // eslint-disable-next-line max-len
50 // const messageField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.message) || 'MESSAGE';
51 // const messageFromResponse = params[messageField];
52
53 const snField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.sn) || 'SN';
54 const snFromResponse = params[snField];
55
56 const trxId = trxIdFromCaller || requestIdFromResponse;
57 if (!trxId) {
58 logger.warn(`${MODULE_NAME} 534E684A: Unknown trxId`, { xid });
59 return;
60 }
61
62 const rc = translateRc(xid, responseCodeFromResponse) || '68';
63
64 const sn = (rc === '00' && snFromResponse) || null;
65
66 report(xid, {
67 trx_id: trxId,
68 rc,
69 sn,
70 message: {
71 xid,
72 responseType: isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE',
73 body: xml,
74 },
75 });
76 };
77
File was created 1 const MODULE_NAME = 'PARSE-XML';
2
3 const isInTest = typeof global.it === 'function';
4 const xmlParser = require('fast-xml-parser');
5
6 // eslint-disable-next-line no-console
7 const warn = isInTest ? console.log : require('komodo-sdk/logger').warn;
8
9 const parseOptions = {
10 parseNodeValue: false,
11 trimValue: true,
12 };
13
14 module.exports = (xid, str) => {
15 let result;
16 try {
17 result = xmlParser.parse(str, parseOptions);
18 if (!result) {
19 const e = new Error(`${MODULE_NAME} 64EE88A6: XML parser return invalid value`);
20 warn(e.message, { xid });
21
22 throw e;
23 }
24 } catch (e) {
25 warn(`${MODULE_NAME} F9B6010C: Exception on parsing xml`, {
26 xid,
27 eCode: e.code,
28 eMessage: e.message,
29 });
30
31 result = null;
32 }
33
34 return result;
35 };
36
File was created 1 const uniqid = require('uniqid');
2 const hit = require('./hit');
3
4 exports.buy = (task) => {
5 const xid = uniqid();
6 hit(xid, task);
7 };
8
File was created 1 const MODULE_NAME = 'REPORT';
2
3 const stringify = require('json-stringify-pretty-compact');
4
5 const pull = require('komodo-sdk/gateway/pull');
6 const logger = require('komodo-sdk/logger');
7
8 module.exports = (xid, data) => {
9 if (!data) return;
10
11 logger.verbose(`${MODULE_NAME} BAACC918: Reporting to CORE`, {
12 xid,
13 data,
14 });
15
16 const reportMsg = JSON.parse(JSON.stringify(data));
17 if (typeof reportMsg.message !== 'string') {
18 reportMsg.message = stringify(reportMsg.message);
19 }
20
21 pull.report(reportMsg);
22 };
23
lib/translate-rc/index.js
File was created 1 const MODULE_NAME = 'TRANSLATE-RC';
2
3 const fs = require('fs');
4 const path = require('path');
5
6 const logger = require('../logger');
7
8 const dictDefault = require('./rcs');
9
10 const dictCustomFilename = path.join(process.cwd(), 'rc-local.json');
11 const dictCustomFileExists = fs.existsSync(dictCustomFilename);
12
13 // eslint-disable-next-line import/no-dynamic-require
14 const dictCustom = dictCustomFileExists ? require(dictCustomFilename) : {};
15
16 if (dictCustomFileExists) {
17 logger.verbose(`${MODULE_NAME} 14F61E23: Custom RC dictionary found`, {
18 fileName: dictCustomFilename,
19 content: dictCustom,
20 });
21 }
22
23 module.exports = (xid, rcFromPartner) => {
24 if (!rcFromPartner) {
25 logger.verbose(`${MODULE_NAME} 030CFC8F: Unknown rcFromPartner`, { xid });
26 return null;
27 }
28
29 logger.verbose(`${MODULE_NAME} 9EDC60A9: Translating RC from partner`, { xid, rcFromPartner });
30
31 if (dictCustom[rcFromPartner]) {
32 logger.verbose(`${MODULE_NAME} 0F4ED40E: Found on custom dict`, { xid });
33 return dictCustom[rcFromPartner];
34 }
35
36 if (dictDefault[rcFromPartner]) {
37 logger.verbose(`${MODULE_NAME} D1B588D9: Found on default dict`, { xid });
38 return dictDefault[rcFromPartner];
39 }
40
41 logger.verbose(`${MODULE_NAME} 61A6ADCE: Using default rc (40)`, { xid });
42 return '40';
43 };
44
lib/translate-rc/rcs.js
File was created 1 module.exports = {
2 '00': '00',
3 68: '68',
4 14: '14',
5 15: '88',
6 16: '90',
7 17: '14',
8 19: '90',
9 20: '90',
10 74: '77',
11 82: '94',
12 89: '90',
13 I8: '14',
14 I9: '14',
15 A0: '68',
16 Q1: '90',
17 };
18
File was created 1 {
2 "name": "komodo-gw-st24b",
3 "version": "0.1.0",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "@babel/code-frame": {
8 "version": "7.12.11",
9 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
10 "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
11 "dev": true,
12 "requires": {
13 "@babel/highlight": "^7.10.4"
14 }
15 },
16 "@babel/helper-validator-identifier": {
17 "version": "7.14.5",
18 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
19 "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
20 "dev": true
21 },
22 "@babel/highlight": {
23 "version": "7.14.5",
24 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
25 "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
26 "dev": true,
27 "requires": {
28 "@babel/helper-validator-identifier": "^7.14.5",
29 "chalk": "^2.0.0",
30 "js-tokens": "^4.0.0"
31 },
32 "dependencies": {
33 "chalk": {
34 "version": "2.4.2",
35 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
36 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
37 "dev": true,
38 "requires": {
39 "ansi-styles": "^3.2.1",
40 "escape-string-regexp": "^1.0.5",
41 "supports-color": "^5.3.0"
42 }
43 },
44 "escape-string-regexp": {
45 "version": "1.0.5",
46 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
47 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
48 "dev": true
49 }
50 }
51 },
52 "@cloudcmd/copy-file": {
53 "version": "1.1.1",
54 "resolved": "https://registry.npmjs.org/@cloudcmd/copy-file/-/copy-file-1.1.1.tgz",
55 "integrity": "sha512-t6pTJdsV0qhh9YX22/Npsv95GqVABc5GRInSK7JSSNIpPLq9TM+K7odYzcOuQRPZAD9OHxZfbYsB4WJOalzqng==",
56 "requires": {
57 "es6-promisify": "^6.0.0",
58 "pipe-io": "^3.0.0",
59 "wraptile": "^2.0.0",
60 "zames": "^2.0.0"
61 }
62 },
63 "@dabh/diagnostics": {
64 "version": "2.0.2",
65 "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
66 "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
67 "requires": {
68 "colorspace": "1.1.x",
69 "enabled": "2.0.x",
70 "kuler": "^2.0.0"
71 }
72 },
73 "@eslint/eslintrc": {
74 "version": "0.4.2",
75 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz",
76 "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==",
77 "dev": true,
78 "requires": {
79 "ajv": "^6.12.4",
80 "debug": "^4.1.1",
81 "espree": "^7.3.0",
82 "globals": "^13.9.0",
83 "ignore": "^4.0.6",
84 "import-fresh": "^3.2.1",
85 "js-yaml": "^3.13.1",
86 "minimatch": "^3.0.4",
87 "strip-json-comments": "^3.1.1"
88 }
89 },
90 "@types/json5": {
91 "version": "0.0.29",
92 "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
93 "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
94 "dev": true
95 },
96 "@ungap/promise-all-settled": {
97 "version": "1.1.2",
98 "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
99 "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
100 "dev": true
101 },
102 "a-sync-waterfall": {
103 "version": "1.0.1",
104 "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
105 "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA=="
106 },
107 "accepts": {
108 "version": "1.3.7",
109 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
110 "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
111 "requires": {
112 "mime-types": "~2.1.24",
113 "negotiator": "0.6.2"
114 }
115 },
116 "acorn": {
117 "version": "7.4.1",
118 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
119 "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
120 "dev": true
121 },
122 "acorn-jsx": {
123 "version": "5.3.1",
124 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
125 "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
126 "dev": true
127 },
128 "ajv": {
129 "version": "6.12.6",
130 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
131 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
132 "requires": {
133 "fast-deep-equal": "^3.1.1",
134 "fast-json-stable-stringify": "^2.0.0",
135 "json-schema-traverse": "^0.4.1",
136 "uri-js": "^4.2.2"
137 }
138 },
139 "ansi-colors": {
140 "version": "4.1.1",
141 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
142 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
143 "dev": true
144 },
145 "ansi-regex": {
146 "version": "5.0.0",
147 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
148 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
149 "dev": true
150 },
151 "ansi-styles": {
152 "version": "3.2.1",
153 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
154 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
155 "dev": true,
156 "requires": {
157 "color-convert": "^1.9.0"
158 }
159 },
160 "anymatch": {
161 "version": "3.1.2",
162 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
163 "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
164 "dev": true,
165 "requires": {
166 "normalize-path": "^3.0.0",
167 "picomatch": "^2.0.4"
168 }
169 },
170 "argparse": {
171 "version": "1.0.10",
172 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
173 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
174 "dev": true,
175 "requires": {
176 "sprintf-js": "~1.0.2"
177 }
178 },
179 "array-flatten": {
180 "version": "1.1.1",
181 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
182 "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
183 },
184 "array-includes": {
185 "version": "3.1.3",
186 "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
187 "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
188 "dev": true,
189 "requires": {
190 "call-bind": "^1.0.2",
191 "define-properties": "^1.1.3",
192 "es-abstract": "^1.18.0-next.2",
193 "get-intrinsic": "^1.1.1",
194 "is-string": "^1.0.5"
195 }
196 },
197 "array-unique": {
198 "version": "0.3.2",
199 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
200 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
201 },
202 "array.prototype.flat": {
203 "version": "1.2.4",
204 "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
205 "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
206 "dev": true,
207 "requires": {
208 "call-bind": "^1.0.0",
209 "define-properties": "^1.1.3",
210 "es-abstract": "^1.18.0-next.1"
211 }
212 },
213 "asap": {
214 "version": "2.0.6",
215 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
216 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
217 },
218 "asn1": {
219 "version": "0.2.4",
220 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
221 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
222 "requires": {
223 "safer-buffer": "~2.1.0"
224 }
225 },
226 "assert-plus": {
227 "version": "1.0.0",
228 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
229 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
230 },
231 "astral-regex": {
232 "version": "2.0.0",
233 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
234 "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
235 "dev": true
236 },
237 "async": {
238 "version": "3.2.0",
239 "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
240 "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
241 },
242 "asynckit": {
243 "version": "0.4.0",
244 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
245 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
246 },
247 "aws-sign2": {
248 "version": "0.7.0",
249 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
250 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
251 },
252 "aws4": {
253 "version": "1.11.0",
254 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
255 "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
256 },
257 "axios": {
258 "version": "0.21.1",
259 "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
260 "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
261 "requires": {
262 "follow-redirects": "^1.10.0"
263 }
264 },
265 "balanced-match": {
266 "version": "1.0.2",
267 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
268 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
269 },
270 "basic-auth": {
271 "version": "2.0.1",
272 "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
273 "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
274 "requires": {
275 "safe-buffer": "5.1.2"
276 },
277 "dependencies": {
278 "safe-buffer": {
279 "version": "5.1.2",
280 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
281 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
282 }
283 }
284 },
285 "bcrypt-pbkdf": {
286 "version": "1.0.2",
287 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
288 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
289 "requires": {
290 "tweetnacl": "^0.14.3"
291 }
292 },
293 "binary-extensions": {
294 "version": "2.2.0",
295 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
296 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
297 "dev": true
298 },
299 "body-parser": {
300 "version": "1.19.0",
301 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
302 "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
303 "requires": {
304 "bytes": "3.1.0",
305 "content-type": "~1.0.4",
306 "debug": "2.6.9",
307 "depd": "~1.1.2",
308 "http-errors": "1.7.2",
309 "iconv-lite": "0.4.24",
310 "on-finished": "~2.3.0",
311 "qs": "6.7.0",
312 "raw-body": "2.4.0",
313 "type-is": "~1.6.17"
314 },
315 "dependencies": {
316 "debug": {
317 "version": "2.6.9",
318 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
319 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
320 "requires": {
321 "ms": "2.0.0"
322 }
323 },
324 "ms": {
325 "version": "2.0.0",
326 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
327 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
328 }
329 }
330 },
331 "brace-expansion": {
332 "version": "1.1.11",
333 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
334 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
335 "requires": {
336 "balanced-match": "^1.0.0",
337 "concat-map": "0.0.1"
338 }
339 },
340 "braces": {
341 "version": "3.0.2",
342 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
343 "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
344 "dev": true,
345 "requires": {
346 "fill-range": "^7.0.1"
347 }
348 },
349 "browser-stdout": {
350 "version": "1.3.1",
351 "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
352 "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
353 "dev": true
354 },
355 "bytes": {
356 "version": "3.1.0",
357 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
358 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
359 },
360 "call-bind": {
361 "version": "1.0.2",
362 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
363 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
364 "dev": true,
365 "requires": {
366 "function-bind": "^1.1.1",
367 "get-intrinsic": "^1.0.2"
368 }
369 },
370 "callsites": {
371 "version": "3.1.0",
372 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
373 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
374 "dev": true
375 },
376 "camelcase": {
377 "version": "6.2.0",
378 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
379 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
380 "dev": true
381 },
382 "caseless": {
383 "version": "0.12.0",
384 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
385 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
386 },
387 "chalk": {
388 "version": "4.1.1",
389 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
390 "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
391 "dev": true,
392 "requires": {
393 "ansi-styles": "^4.1.0",
394 "supports-color": "^7.1.0"
395 },
396 "dependencies": {
397 "ansi-styles": {
398 "version": "4.3.0",
399 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
400 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
401 "dev": true,
402 "requires": {
403 "color-convert": "^2.0.1"
404 }
405 },
406 "color-convert": {
407 "version": "2.0.1",
408 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
409 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
410 "dev": true,
411 "requires": {
412 "color-name": "~1.1.4"
413 }
414 },
415 "color-name": {
416 "version": "1.1.4",
417 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
418 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
419 "dev": true
420 },
421 "has-flag": {
422 "version": "4.0.0",
423 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
424 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
425 "dev": true
426 },
427 "supports-color": {
428 "version": "7.2.0",
429 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
430 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
431 "dev": true,
432 "requires": {
433 "has-flag": "^4.0.0"
434 }
435 }
436 }
437 },
438 "charenc": {
439 "version": "0.0.2",
440 "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
441 "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
442 },
443 "chokidar": {
444 "version": "3.5.1",
445 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
446 "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
447 "dev": true,
448 "requires": {
449 "anymatch": "~3.1.1",
450 "braces": "~3.0.2",
451 "fsevents": "~2.3.1",
452 "glob-parent": "~5.1.0",
453 "is-binary-path": "~2.1.0",
454 "is-glob": "~4.0.1",
455 "normalize-path": "~3.0.0",
456 "readdirp": "~3.5.0"
457 }
458 },
459 "circular-buffer": {
460 "version": "0.0.6",
461 "resolved": "https://registry.npmjs.org/circular-buffer/-/circular-buffer-0.0.6.tgz",
462 "integrity": "sha1-6c+iujGdNw3idDtgCMpTnN3r9TY="
463 },
464 "cliui": {
465 "version": "7.0.4",
466 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
467 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
468 "dev": true,
469 "requires": {
470 "string-width": "^4.2.0",
471 "strip-ansi": "^6.0.0",
472 "wrap-ansi": "^7.0.0"
473 }
474 },
475 "color": {
476 "version": "3.0.0",
477 "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
478 "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
479 "requires": {
480 "color-convert": "^1.9.1",
481 "color-string": "^1.5.2"
482 }
483 },
484 "color-convert": {
485 "version": "1.9.3",
486 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
487 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
488 "requires": {
489 "color-name": "1.1.3"
490 }
491 },
492 "color-name": {
493 "version": "1.1.3",
494 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
495 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
496 },
497 "color-string": {
498 "version": "1.5.5",
499 "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz",
500 "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==",
501 "requires": {
502 "color-name": "^1.0.0",
503 "simple-swizzle": "^0.2.2"
504 }
505 },
506 "colors": {
507 "version": "1.4.0",
508 "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
509 "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
510 },
511 "colorspace": {
512 "version": "1.1.2",
513 "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
514 "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
515 "requires": {
516 "color": "3.0.x",
517 "text-hex": "1.0.x"
518 }
519 },
520 "combined-stream": {
521 "version": "1.0.8",
522 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
523 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
524 "requires": {
525 "delayed-stream": "~1.0.0"
526 }
527 },
528 "commander": {
529 "version": "2.20.3",
530 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
531 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
532 },
533 "concat-map": {
534 "version": "0.0.1",
535 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
536 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
537 },
538 "confusing-browser-globals": {
539 "version": "1.0.10",
540 "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz",
541 "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==",
542 "dev": true
543 },
544 "content-disposition": {
545 "version": "0.5.3",
546 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
547 "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
548 "requires": {
549 "safe-buffer": "5.1.2"
550 },
551 "dependencies": {
552 "safe-buffer": {
553 "version": "5.1.2",
554 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
555 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
556 }
557 }
558 },
559 "content-type": {
560 "version": "1.0.4",
561 "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
562 "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
563 },
564 "cookie": {
565 "version": "0.4.0",
566 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
567 "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
568 },
569 "cookie-signature": {
570 "version": "1.0.6",
571 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
572 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
573 },
574 "core-util-is": {
575 "version": "1.0.2",
576 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
577 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
578 },
579 "cross-spawn": {
580 "version": "7.0.3",
581 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
582 "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
583 "dev": true,
584 "requires": {
585 "path-key": "^3.1.0",
586 "shebang-command": "^2.0.0",
587 "which": "^2.0.1"
588 }
589 },
590 "crypt": {
591 "version": "0.0.2",
592 "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
593 "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
594 },
595 "currify": {
596 "version": "3.0.0",
597 "resolved": "https://registry.npmjs.org/currify/-/currify-3.0.0.tgz",
598 "integrity": "sha512-ecz0Dq3T2UwiLwhiYvEFhdM4yUvlCLRgVbvpt6oI8RteJzEztum1UbLbN6snQ5nfHqtMcnrxkd7N0LeAIErorw=="
599 },
600 "cycle": {
601 "version": "1.0.3",
602 "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
603 "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
604 },
605 "dashdash": {
606 "version": "1.14.1",
607 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
608 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
609 "requires": {
610 "assert-plus": "^1.0.0"
611 }
612 },
613 "debug": {
614 "version": "4.3.1",
615 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
616 "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
617 "requires": {
618 "ms": "2.1.2"
619 }
620 },
621 "decamelize": {
622 "version": "4.0.0",
623 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
624 "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
625 "dev": true
626 },
627 "deep-is": {
628 "version": "0.1.3",
629 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
630 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
631 "dev": true
632 },
633 "define-properties": {
634 "version": "1.1.3",
635 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
636 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
637 "dev": true,
638 "requires": {
639 "object-keys": "^1.0.12"
640 }
641 },
642 "delayed-stream": {
643 "version": "1.0.0",
644 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
645 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
646 },
647 "depd": {
648 "version": "1.1.2",
649 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
650 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
651 },
652 "destroy": {
653 "version": "1.0.4",
654 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
655 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
656 },
657 "diff": {
658 "version": "5.0.0",
659 "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
660 "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
661 "dev": true
662 },
663 "doctrine": {
664 "version": "3.0.0",
665 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
666 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
667 "dev": true,
668 "requires": {
669 "esutils": "^2.0.2"
670 }
671 },
672 "dot-object": {
673 "version": "1.9.0",
674 "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-1.9.0.tgz",
675 "integrity": "sha512-7MPN6y7XhAO4vM4eguj5+5HNKLjJYfkVG1ZR1Aput4Q4TR6SYeSjhpVQ77IzJHoSHffKbDxBC+48aCiiRurDPw==",
676 "requires": {
677 "commander": "^2.20.0",
678 "glob": "^7.1.4"
679 }
680 },
681 "double-ended-queue": {
682 "version": "2.1.0-0",
683 "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
684 "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
685 },
686 "ecc-jsbn": {
687 "version": "0.1.2",
688 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
689 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
690 "requires": {
691 "jsbn": "~0.1.0",
692 "safer-buffer": "^2.1.0"
693 }
694 },
695 "ee-first": {
696 "version": "1.1.1",
697 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
698 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
699 },
700 "emoji-regex": {
701 "version": "8.0.0",
702 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
703 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
704 "dev": true
705 },
706 "enabled": {
707 "version": "2.0.0",
708 "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
709 "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
710 },
711 "encodeurl": {
712 "version": "1.0.2",
713 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
714 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
715 },
716 "enquirer": {
717 "version": "2.3.6",
718 "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
719 "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
720 "dev": true,
721 "requires": {
722 "ansi-colors": "^4.1.1"
723 }
724 },
725 "error-ex": {
726 "version": "1.3.2",
727 "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
728 "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
729 "dev": true,
730 "requires": {
731 "is-arrayish": "^0.2.1"
732 }
733 },
734 "es-abstract": {
735 "version": "1.18.3",
736 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz",
737 "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==",
738 "dev": true,
739 "requires": {
740 "call-bind": "^1.0.2",
741 "es-to-primitive": "^1.2.1",
742 "function-bind": "^1.1.1",
743 "get-intrinsic": "^1.1.1",
744 "has": "^1.0.3",
745 "has-symbols": "^1.0.2",
746 "is-callable": "^1.2.3",
747 "is-negative-zero": "^2.0.1",
748 "is-regex": "^1.1.3",
749 "is-string": "^1.0.6",
750 "object-inspect": "^1.10.3",
751 "object-keys": "^1.1.1",
752 "object.assign": "^4.1.2",
753 "string.prototype.trimend": "^1.0.4",
754 "string.prototype.trimstart": "^1.0.4",
755 "unbox-primitive": "^1.0.1"
756 }
757 },
758 "es-to-primitive": {
759 "version": "1.2.1",
760 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
761 "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
762 "dev": true,
763 "requires": {
764 "is-callable": "^1.1.4",
765 "is-date-object": "^1.0.1",
766 "is-symbol": "^1.0.2"
767 }
768 },
769 "es6-promisify": {
770 "version": "6.1.1",
771 "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
772 "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg=="
773 },
774 "escalade": {
775 "version": "3.1.1",
776 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
777 "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
778 "dev": true
779 },
780 "escape-html": {
781 "version": "1.0.3",
782 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
783 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
784 },
785 "escape-string-regexp": {
786 "version": "4.0.0",
787 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
788 "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
789 "dev": true
790 },
791 "eslint": {
792 "version": "7.29.0",
793 "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz",
794 "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==",
795 "dev": true,
796 "requires": {
797 "@babel/code-frame": "7.12.11",
798 "@eslint/eslintrc": "^0.4.2",
799 "ajv": "^6.10.0",
800 "chalk": "^4.0.0",
801 "cross-spawn": "^7.0.2",
802 "debug": "^4.0.1",
803 "doctrine": "^3.0.0",
804 "enquirer": "^2.3.5",
805 "escape-string-regexp": "^4.0.0",
806 "eslint-scope": "^5.1.1",
807 "eslint-utils": "^2.1.0",
808 "eslint-visitor-keys": "^2.0.0",
809 "espree": "^7.3.1",
810 "esquery": "^1.4.0",
811 "esutils": "^2.0.2",
812 "fast-deep-equal": "^3.1.3",
813 "file-entry-cache": "^6.0.1",
814 "functional-red-black-tree": "^1.0.1",
815 "glob-parent": "^5.1.2",
816 "globals": "^13.6.0",
817 "ignore": "^4.0.6",
818 "import-fresh": "^3.0.0",
819 "imurmurhash": "^0.1.4",
820 "is-glob": "^4.0.0",
821 "js-yaml": "^3.13.1",
822 "json-stable-stringify-without-jsonify": "^1.0.1",
823 "levn": "^0.4.1",
824 "lodash.merge": "^4.6.2",
825 "minimatch": "^3.0.4",
826 "natural-compare": "^1.4.0",
827 "optionator": "^0.9.1",
828 "progress": "^2.0.0",
829 "regexpp": "^3.1.0",
830 "semver": "^7.2.1",
831 "strip-ansi": "^6.0.0",
832 "strip-json-comments": "^3.1.0",
833 "table": "^6.0.9",
834 "text-table": "^0.2.0",
835 "v8-compile-cache": "^2.0.3"
836 }
837 },
838 "eslint-config-airbnb-base": {
839 "version": "14.2.1",
840 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz",
841 "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==",
842 "dev": true,
843 "requires": {
844 "confusing-browser-globals": "^1.0.10",
845 "object.assign": "^4.1.2",
846 "object.entries": "^1.1.2"
847 }
848 },
849 "eslint-import-resolver-node": {
850 "version": "0.3.4",
851 "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
852 "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
853 "dev": true,
854 "requires": {
855 "debug": "^2.6.9",
856 "resolve": "^1.13.1"
857 },
858 "dependencies": {
859 "debug": {
860 "version": "2.6.9",
861 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
862 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
863 "dev": true,
864 "requires": {
865 "ms": "2.0.0"
866 }
867 },
868 "ms": {
869 "version": "2.0.0",
870 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
871 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
872 "dev": true
873 }
874 }
875 },
876 "eslint-module-utils": {
877 "version": "2.6.1",
878 "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz",
879 "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==",
880 "dev": true,
881 "requires": {
882 "debug": "^3.2.7",
883 "pkg-dir": "^2.0.0"
884 },
885 "dependencies": {
886 "debug": {
887 "version": "3.2.7",
888 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
889 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
890 "dev": true,
891 "requires": {
892 "ms": "^2.1.1"
893 }
894 }
895 }
896 },
897 "eslint-plugin-import": {
898 "version": "2.23.4",
899 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz",
900 "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==",
901 "dev": true,
902 "requires": {
903 "array-includes": "^3.1.3",
904 "array.prototype.flat": "^1.2.4",
905 "debug": "^2.6.9",
906 "doctrine": "^2.1.0",
907 "eslint-import-resolver-node": "^0.3.4",
908 "eslint-module-utils": "^2.6.1",
909 "find-up": "^2.0.0",
910 "has": "^1.0.3",
911 "is-core-module": "^2.4.0",
912 "minimatch": "^3.0.4",
913 "object.values": "^1.1.3",
914 "pkg-up": "^2.0.0",
915 "read-pkg-up": "^3.0.0",
916 "resolve": "^1.20.0",
917 "tsconfig-paths": "^3.9.0"
918 },
919 "dependencies": {
920 "debug": {
921 "version": "2.6.9",
922 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
923 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
924 "dev": true,
925 "requires": {
926 "ms": "2.0.0"
927 }
928 },
929 "doctrine": {
930 "version": "2.1.0",
931 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
932 "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
933 "dev": true,
934 "requires": {
935 "esutils": "^2.0.2"
936 }
937 },
938 "find-up": {
939 "version": "2.1.0",
940 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
941 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
942 "dev": true,
943 "requires": {
944 "locate-path": "^2.0.0"
945 }
946 },
947 "locate-path": {
948 "version": "2.0.0",
949 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
950 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
951 "dev": true,
952 "requires": {
953 "p-locate": "^2.0.0",
954 "path-exists": "^3.0.0"
955 }
956 },
957 "ms": {
958 "version": "2.0.0",
959 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
960 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
961 "dev": true
962 },
963 "p-limit": {
964 "version": "1.3.0",
965 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
966 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
967 "dev": true,
968 "requires": {
969 "p-try": "^1.0.0"
970 }
971 },
972 "p-locate": {
973 "version": "2.0.0",
974 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
975 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
976 "dev": true,
977 "requires": {
978 "p-limit": "^1.1.0"
979 }
980 },
981 "path-exists": {
982 "version": "3.0.0",
983 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
984 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
985 "dev": true
986 }
987 }
988 },
989 "eslint-scope": {
990 "version": "5.1.1",
991 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
992 "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
993 "dev": true,
994 "requires": {
995 "esrecurse": "^4.3.0",
996 "estraverse": "^4.1.1"
997 }
998 },
999 "eslint-utils": {
1000 "version": "2.1.0",
1001 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
1002 "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
1003 "dev": true,
1004 "requires": {
1005 "eslint-visitor-keys": "^1.1.0"
1006 },
1007 "dependencies": {
1008 "eslint-visitor-keys": {
1009 "version": "1.3.0",
1010 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
1011 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
1012 "dev": true
1013 }
1014 }
1015 },
1016 "eslint-visitor-keys": {
1017 "version": "2.1.0",
1018 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
1019 "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
1020 "dev": true
1021 },
1022 "espree": {
1023 "version": "7.3.1",
1024 "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
1025 "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
1026 "dev": true,
1027 "requires": {
1028 "acorn": "^7.4.0",
1029 "acorn-jsx": "^5.3.1",
1030 "eslint-visitor-keys": "^1.3.0"
1031 },
1032 "dependencies": {
1033 "eslint-visitor-keys": {
1034 "version": "1.3.0",
1035 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
1036 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
1037 "dev": true
1038 }
1039 }
1040 },
1041 "esprima": {
1042 "version": "4.0.1",
1043 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1044 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1045 "dev": true
1046 },
1047 "esquery": {
1048 "version": "1.4.0",
1049 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
1050 "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
1051 "dev": true,
1052 "requires": {
1053 "estraverse": "^5.1.0"
1054 },
1055 "dependencies": {
1056 "estraverse": {
1057 "version": "5.2.0",
1058 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
1059 "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
1060 "dev": true
1061 }
1062 }
1063 },
1064 "esrecurse": {
1065 "version": "4.3.0",
1066 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1067 "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1068 "dev": true,
1069 "requires": {
1070 "estraverse": "^5.2.0"
1071 },
1072 "dependencies": {
1073 "estraverse": {
1074 "version": "5.2.0",
1075 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
1076 "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
1077 "dev": true
1078 }
1079 }
1080 },
1081 "estraverse": {
1082 "version": "4.3.0",
1083 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
1084 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1085 "dev": true
1086 },
1087 "esutils": {
1088 "version": "2.0.3",
1089 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1090 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1091 "dev": true
1092 },
1093 "etag": {
1094 "version": "1.8.1",
1095 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1096 "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
1097 },
1098 "express": {
1099 "version": "4.17.1",
1100 "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
1101 "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
1102 "requires": {
1103 "accepts": "~1.3.7",
1104 "array-flatten": "1.1.1",
1105 "body-parser": "1.19.0",
1106 "content-disposition": "0.5.3",
1107 "content-type": "~1.0.4",
1108 "cookie": "0.4.0",
1109 "cookie-signature": "1.0.6",
1110 "debug": "2.6.9",
1111 "depd": "~1.1.2",
1112 "encodeurl": "~1.0.2",
1113 "escape-html": "~1.0.3",
1114 "etag": "~1.8.1",
1115 "finalhandler": "~1.1.2",
1116 "fresh": "0.5.2",
1117 "merge-descriptors": "1.0.1",
1118 "methods": "~1.1.2",
1119 "on-finished": "~2.3.0",
1120 "parseurl": "~1.3.3",
1121 "path-to-regexp": "0.1.7",
1122 "proxy-addr": "~2.0.5",
1123 "qs": "6.7.0",
1124 "range-parser": "~1.2.1",
1125 "safe-buffer": "5.1.2",
1126 "send": "0.17.1",
1127 "serve-static": "1.14.1",
1128 "setprototypeof": "1.1.1",
1129 "statuses": "~1.5.0",
1130 "type-is": "~1.6.18",
1131 "utils-merge": "1.0.1",
1132 "vary": "~1.1.2"
1133 },
1134 "dependencies": {
1135 "debug": {
1136 "version": "2.6.9",
1137 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1138 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1139 "requires": {
1140 "ms": "2.0.0"
1141 }
1142 },
1143 "ms": {
1144 "version": "2.0.0",
1145 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1146 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1147 },
1148 "safe-buffer": {
1149 "version": "5.1.2",
1150 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1151 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1152 }
1153 }
1154 },
1155 "express-session": {
1156 "version": "1.17.2",
1157 "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
1158 "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
1159 "requires": {
1160 "cookie": "0.4.1",
1161 "cookie-signature": "1.0.6",
1162 "debug": "2.6.9",
1163 "depd": "~2.0.0",
1164 "on-headers": "~1.0.2",
1165 "parseurl": "~1.3.3",
1166 "safe-buffer": "5.2.1",
1167 "uid-safe": "~2.1.5"
1168 },
1169 "dependencies": {
1170 "cookie": {
1171 "version": "0.4.1",
1172 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
1173 "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
1174 },
1175 "debug": {
1176 "version": "2.6.9",
1177 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1178 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1179 "requires": {
1180 "ms": "2.0.0"
1181 }
1182 },
1183 "depd": {
1184 "version": "2.0.0",
1185 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1186 "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
1187 },
1188 "ms": {
1189 "version": "2.0.0",
1190 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1191 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1192 }
1193 }
1194 },
1195 "extend": {
1196 "version": "3.0.2",
1197 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1198 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
1199 },
1200 "extsprintf": {
1201 "version": "1.3.0",
1202 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
1203 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
1204 },
1205 "fast-deep-equal": {
1206 "version": "3.1.3",
1207 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1208 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
1209 },
1210 "fast-json-stable-stringify": {
1211 "version": "2.1.0",
1212 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1213 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
1214 },
1215 "fast-levenshtein": {
1216 "version": "2.0.6",
1217 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1218 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1219 "dev": true
1220 },
1221 "fast-safe-stringify": {
1222 "version": "2.0.7",
1223 "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
1224 "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
1225 },
1226 "fast-xml-parser": {
1227 "version": "3.19.0",
1228 "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz",
1229 "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg=="
1230 },
1231 "fecha": {
1232 "version": "4.2.1",
1233 "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
1234 "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q=="
1235 },
1236 "file-entry-cache": {
1237 "version": "6.0.1",
1238 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1239 "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1240 "dev": true,
1241 "requires": {
1242 "flat-cache": "^3.0.4"
1243 }
1244 },
1245 "file-stream-rotator": {
1246 "version": "0.4.1",
1247 "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz",
1248 "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==",
1249 "requires": {
1250 "moment": "^2.11.2"
1251 }
1252 },
1253 "fill-range": {
1254 "version": "7.0.1",
1255 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1256 "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1257 "dev": true,
1258 "requires": {
1259 "to-regex-range": "^5.0.1"
1260 }
1261 },
1262 "finalhandler": {
1263 "version": "1.1.2",
1264 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
1265 "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
1266 "requires": {
1267 "debug": "2.6.9",
1268 "encodeurl": "~1.0.2",
1269 "escape-html": "~1.0.3",
1270 "on-finished": "~2.3.0",
1271 "parseurl": "~1.3.3",
1272 "statuses": "~1.5.0",
1273 "unpipe": "~1.0.0"
1274 },
1275 "dependencies": {
1276 "debug": {
1277 "version": "2.6.9",
1278 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1279 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1280 "requires": {
1281 "ms": "2.0.0"
1282 }
1283 },
1284 "ms": {
1285 "version": "2.0.0",
1286 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1287 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1288 }
1289 }
1290 },
1291 "find-up": {
1292 "version": "5.0.0",
1293 "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1294 "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1295 "dev": true,
1296 "requires": {
1297 "locate-path": "^6.0.0",
1298 "path-exists": "^4.0.0"
1299 }
1300 },
1301 "flat": {
1302 "version": "5.0.2",
1303 "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
1304 "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
1305 "dev": true
1306 },
1307 "flat-cache": {
1308 "version": "3.0.4",
1309 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1310 "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1311 "dev": true,
1312 "requires": {
1313 "flatted": "^3.1.0",
1314 "rimraf": "^3.0.2"
1315 }
1316 },
1317 "flatted": {
1318 "version": "3.1.1",
1319 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
1320 "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
1321 "dev": true
1322 },
1323 "fn.name": {
1324 "version": "1.1.0",
1325 "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
1326 "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
1327 },
1328 "follow-redirects": {
1329 "version": "1.14.1",
1330 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
1331 "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
1332 },
1333 "forever-agent": {
1334 "version": "0.6.1",
1335 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1336 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
1337 },
1338 "form-data": {
1339 "version": "2.3.3",
1340 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
1341 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
1342 "requires": {
1343 "asynckit": "^0.4.0",
1344 "combined-stream": "^1.0.6",
1345 "mime-types": "^2.1.12"
1346 }
1347 },
1348 "forwarded": {
1349 "version": "0.2.0",
1350 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1351 "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
1352 },
1353 "fresh": {
1354 "version": "0.5.2",
1355 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1356 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
1357 },
1358 "fs-copy-file": {
1359 "version": "2.1.2",
1360 "resolved": "https://registry.npmjs.org/fs-copy-file/-/fs-copy-file-2.1.2.tgz",
1361 "integrity": "sha512-h5h3i58/mr86CSJvDLGV0ZEIUj4QfdfKt0NFX6AH4sRTRjs2/d5U1EQt5C9fUV6ZSi7MeSfZRW3LX9HttLXHeg==",
1362 "requires": {
1363 "@cloudcmd/copy-file": "^1.1.0"
1364 }
1365 },
1366 "fs.realpath": {
1367 "version": "1.0.0",
1368 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1369 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
1370 },
1371 "fsevents": {
1372 "version": "2.3.2",
1373 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1374 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1375 "dev": true,
1376 "optional": true
1377 },
1378 "function-bind": {
1379 "version": "1.1.1",
1380 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1381 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1382 "dev": true
1383 },
1384 "functional-red-black-tree": {
1385 "version": "1.0.1",
1386 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1387 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1388 "dev": true
1389 },
1390 "get-caller-file": {
1391 "version": "2.0.5",
1392 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1393 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1394 "dev": true
1395 },
1396 "get-intrinsic": {
1397 "version": "1.1.1",
1398 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
1399 "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
1400 "dev": true,
1401 "requires": {
1402 "function-bind": "^1.1.1",
1403 "has": "^1.0.3",
1404 "has-symbols": "^1.0.1"
1405 }
1406 },
1407 "getpass": {
1408 "version": "0.1.7",
1409 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1410 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1411 "requires": {
1412 "assert-plus": "^1.0.0"
1413 }
1414 },
1415 "glob": {
1416 "version": "7.1.7",
1417 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
1418 "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
1419 "requires": {
1420 "fs.realpath": "^1.0.0",
1421 "inflight": "^1.0.4",
1422 "inherits": "2",
1423 "minimatch": "^3.0.4",
1424 "once": "^1.3.0",
1425 "path-is-absolute": "^1.0.0"
1426 }
1427 },
1428 "glob-parent": {
1429 "version": "5.1.2",
1430 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1431 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1432 "dev": true,
1433 "requires": {
1434 "is-glob": "^4.0.1"
1435 }
1436 },
1437 "globals": {
1438 "version": "13.9.0",
1439 "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz",
1440 "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==",
1441 "dev": true,
1442 "requires": {
1443 "type-fest": "^0.20.2"
1444 }
1445 },
1446 "graceful-fs": {
1447 "version": "4.2.6",
1448 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
1449 "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
1450 "dev": true
1451 },
1452 "growl": {
1453 "version": "1.10.5",
1454 "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
1455 "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
1456 "dev": true
1457 },
1458 "har-schema": {
1459 "version": "2.0.0",
1460 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1461 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
1462 },
1463 "har-validator": {
1464 "version": "5.1.5",
1465 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
1466 "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
1467 "requires": {
1468 "ajv": "^6.12.3",
1469 "har-schema": "^2.0.0"
1470 }
1471 },
1472 "has": {
1473 "version": "1.0.3",
1474 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1475 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1476 "dev": true,
1477 "requires": {
1478 "function-bind": "^1.1.1"
1479 }
1480 },
1481 "has-bigints": {
1482 "version": "1.0.1",
1483 "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
1484 "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
1485 "dev": true
1486 },
1487 "has-flag": {
1488 "version": "3.0.0",
1489 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1490 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1491 "dev": true
1492 },
1493 "has-symbols": {
1494 "version": "1.0.2",
1495 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
1496 "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
1497 "dev": true
1498 },
1499 "he": {
1500 "version": "1.2.0",
1501 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1502 "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1503 "dev": true
1504 },
1505 "hosted-git-info": {
1506 "version": "2.8.9",
1507 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
1508 "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
1509 "dev": true
1510 },
1511 "http-errors": {
1512 "version": "1.7.2",
1513 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
1514 "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
1515 "requires": {
1516 "depd": "~1.1.2",
1517 "inherits": "2.0.3",
1518 "setprototypeof": "1.1.1",
1519 "statuses": ">= 1.5.0 < 2",
1520 "toidentifier": "1.0.0"
1521 },
1522 "dependencies": {
1523 "inherits": {
1524 "version": "2.0.3",
1525 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1526 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
1527 }
1528 }
1529 },
1530 "http-signature": {
1531 "version": "1.2.0",
1532 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1533 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1534 "requires": {
1535 "assert-plus": "^1.0.0",
1536 "jsprim": "^1.2.2",
1537 "sshpk": "^1.7.0"
1538 }
1539 },
1540 "iconv-lite": {
1541 "version": "0.4.24",
1542 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1543 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1544 "requires": {
1545 "safer-buffer": ">= 2.1.2 < 3"
1546 }
1547 },
1548 "ignore": {
1549 "version": "4.0.6",
1550 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1551 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1552 "dev": true
1553 },
1554 "import-fresh": {
1555 "version": "3.3.0",
1556 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1557 "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1558 "dev": true,
1559 "requires": {
1560 "parent-module": "^1.0.0",
1561 "resolve-from": "^4.0.0"
1562 }
1563 },
1564 "imurmurhash": {
1565 "version": "0.1.4",
1566 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1567 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1568 "dev": true
1569 },
1570 "inflight": {
1571 "version": "1.0.6",
1572 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1573 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1574 "requires": {
1575 "once": "^1.3.0",
1576 "wrappy": "1"
1577 }
1578 },
1579 "inherits": {
1580 "version": "2.0.4",
1581 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1582 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1583 },
1584 "ipaddr.js": {
1585 "version": "1.9.1",
1586 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1587 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1588 },
1589 "is-arrayish": {
1590 "version": "0.2.1",
1591 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1592 "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1593 "dev": true
1594 },
1595 "is-bigint": {
1596 "version": "1.0.2",
1597 "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
1598 "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==",
1599 "dev": true
1600 },
1601 "is-binary-path": {
1602 "version": "2.1.0",
1603 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1604 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1605 "dev": true,
1606 "requires": {
1607 "binary-extensions": "^2.0.0"
1608 }
1609 },
1610 "is-boolean-object": {
1611 "version": "1.1.1",
1612 "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
1613 "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
1614 "dev": true,
1615 "requires": {
1616 "call-bind": "^1.0.2"
1617 }
1618 },
1619 "is-callable": {
1620 "version": "1.2.3",
1621 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
1622 "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
1623 "dev": true
1624 },
1625 "is-core-module": {
1626 "version": "2.4.0",
1627 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
1628 "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
1629 "dev": true,
1630 "requires": {
1631 "has": "^1.0.3"
1632 }
1633 },
1634 "is-date-object": {
1635 "version": "1.0.4",
1636 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz",
1637 "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==",
1638 "dev": true
1639 },
1640 "is-extglob": {
1641 "version": "2.1.1",
1642 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1643 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1644 "dev": true
1645 },
1646 "is-fullwidth-code-point": {
1647 "version": "3.0.0",
1648 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1649 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1650 "dev": true
1651 },
1652 "is-glob": {
1653 "version": "4.0.1",
1654 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1655 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1656 "dev": true,
1657 "requires": {
1658 "is-extglob": "^2.1.1"
1659 }
1660 },
1661 "is-negative-zero": {
1662 "version": "2.0.1",
1663 "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
1664 "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
1665 "dev": true
1666 },
1667 "is-number": {
1668 "version": "7.0.0",
1669 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1670 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1671 "dev": true
1672 },
1673 "is-number-object": {
1674 "version": "1.0.5",
1675 "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
1676 "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==",
1677 "dev": true
1678 },
1679 "is-plain-obj": {
1680 "version": "2.1.0",
1681 "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
1682 "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
1683 "dev": true
1684 },
1685 "is-regex": {
1686 "version": "1.1.3",
1687 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz",
1688 "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==",
1689 "dev": true,
1690 "requires": {
1691 "call-bind": "^1.0.2",
1692 "has-symbols": "^1.0.2"
1693 }
1694 },
1695 "is-stream": {
1696 "version": "2.0.0",
1697 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
1698 "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
1699 },
1700 "is-string": {
1701 "version": "1.0.6",
1702 "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz",
1703 "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==",
1704 "dev": true
1705 },
1706 "is-symbol": {
1707 "version": "1.0.4",
1708 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
1709 "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
1710 "dev": true,
1711 "requires": {
1712 "has-symbols": "^1.0.2"
1713 }
1714 },
1715 "is-typedarray": {
1716 "version": "1.0.0",
1717 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1718 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
1719 },
1720 "is-unicode-supported": {
1721 "version": "0.1.0",
1722 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
1723 "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
1724 "dev": true
1725 },
1726 "isarray": {
1727 "version": "1.0.0",
1728 "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1729 "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1730 },
1731 "isexe": {
1732 "version": "2.0.0",
1733 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1734 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1735 "dev": true
1736 },
1737 "isstream": {
1738 "version": "0.1.2",
1739 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1740 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
1741 },
1742 "js-tokens": {
1743 "version": "4.0.0",
1744 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1745 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1746 "dev": true
1747 },
1748 "js-yaml": {
1749 "version": "3.14.1",
1750 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1751 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1752 "dev": true,
1753 "requires": {
1754 "argparse": "^1.0.7",
1755 "esprima": "^4.0.0"
1756 }
1757 },
1758 "jsbn": {
1759 "version": "0.1.1",
1760 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1761 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
1762 },
1763 "json-parse-better-errors": {
1764 "version": "1.0.2",
1765 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1766 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1767 "dev": true
1768 },
1769 "json-query": {
1770 "version": "2.2.2",
1771 "resolved": "https://registry.npmjs.org/json-query/-/json-query-2.2.2.tgz",
1772 "integrity": "sha1-tlWLijeUzNIXkmqjgCQyS3e0irE="
1773 },
1774 "json-schema": {
1775 "version": "0.2.3",
1776 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1777 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
1778 },
1779 "json-schema-traverse": {
1780 "version": "0.4.1",
1781 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1782 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
1783 },
1784 "json-stable-stringify-without-jsonify": {
1785 "version": "1.0.1",
1786 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1787 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1788 "dev": true
1789 },
1790 "json-stringify-pretty-compact": {
1791 "version": "3.0.0",
1792 "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz",
1793 "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA=="
1794 },
1795 "json-stringify-safe": {
1796 "version": "5.0.1",
1797 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1798 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
1799 },
1800 "json5": {
1801 "version": "1.0.1",
1802 "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
1803 "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
1804 "dev": true,
1805 "requires": {
1806 "minimist": "^1.2.0"
1807 }
1808 },
1809 "jsprim": {
1810 "version": "1.4.1",
1811 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1812 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1813 "requires": {
1814 "assert-plus": "1.0.0",
1815 "extsprintf": "1.3.0",
1816 "json-schema": "0.2.3",
1817 "verror": "1.10.0"
1818 }
1819 },
1820 "komodo-sdk": {
1821 "version": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git#9e598d4f323f0d8dc5e60294c5257dc674cf0ad4",
1822 "from": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git",
1823 "requires": {
1824 "array-unique": "^0.3.2",
1825 "basic-auth": "^2.0.0",
1826 "body-parser": "^1.18.2",
1827 "dot-object": "^1.7.0",
1828 "express": "^4.17.1",
1829 "express-session": "^1.15.6",
1830 "fs-copy-file": "^2.1.2",
1831 "json-query": "^2.2.2",
1832 "lru-cache": "^4.1.1",
1833 "macaddress": "^0.2.9",
1834 "moment": "^2.24.0",
1835 "node-machine-id": "^1.1.10",
1836 "node-natural-sort": "^0.8.6",
1837 "numeral": "^2.0.6",
1838 "nunjucks": "^3.2.1",
1839 "pkginfo": "^0.4.1",
1840 "redis": "^2.8.0",
1841 "request": "^2.88.0",
1842 "sha1": "^1.1.1",
1843 "simple-git": "^1.80.1",
1844 "strftime": "^0.10.0",
1845 "string-natural-compare": "^2.0.2",
1846 "uniqid": "^4.1.1",
1847 "uuid": "^3.1.0",
1848 "winston": "^3.3.3",
1849 "winston-circular-buffer": "^1.0.0",
1850 "winston-daily-rotate-file": "^3.10.0"
1851 },
1852 "dependencies": {
1853 "lru-cache": {
1854 "version": "4.1.5",
1855 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
1856 "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
1857 "requires": {
1858 "pseudomap": "^1.0.2",
1859 "yallist": "^2.1.2"
1860 }
1861 },
1862 "uniqid": {
1863 "version": "4.1.1",
1864 "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
1865 "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
1866 "requires": {
1867 "macaddress": "^0.2.8"
1868 }
1869 },
1870 "yallist": {
1871 "version": "2.1.2",
1872 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1873 "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
1874 }
1875 }
1876 },
1877 "kuler": {
1878 "version": "2.0.0",
1879 "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
1880 "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
1881 },
1882 "levn": {
1883 "version": "0.4.1",
1884 "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1885 "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1886 "dev": true,
1887 "requires": {
1888 "prelude-ls": "^1.2.1",
1889 "type-check": "~0.4.0"
1890 }
1891 },
1892 "load-json-file": {
1893 "version": "4.0.0",
1894 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
1895 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
1896 "dev": true,
1897 "requires": {
1898 "graceful-fs": "^4.1.2",
1899 "parse-json": "^4.0.0",
1900 "pify": "^3.0.0",
1901 "strip-bom": "^3.0.0"
1902 }
1903 },
1904 "locate-path": {
1905 "version": "6.0.0",
1906 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
1907 "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1908 "dev": true,
1909 "requires": {
1910 "p-locate": "^5.0.0"
1911 }
1912 },
1913 "lodash.clonedeep": {
1914 "version": "4.5.0",
1915 "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
1916 "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
1917 "dev": true
1918 },
1919 "lodash.merge": {
1920 "version": "4.6.2",
1921 "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1922 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1923 "dev": true
1924 },
1925 "lodash.truncate": {
1926 "version": "4.4.2",
1927 "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
1928 "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
1929 "dev": true
1930 },
1931 "log-symbols": {
1932 "version": "4.1.0",
1933 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
1934 "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
1935 "dev": true,
1936 "requires": {
1937 "chalk": "^4.1.0",
1938 "is-unicode-supported": "^0.1.0"
1939 }
1940 },
1941 "logform": {
1942 "version": "2.2.0",
1943 "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
1944 "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
1945 "requires": {
1946 "colors": "^1.2.1",
1947 "fast-safe-stringify": "^2.0.4",
1948 "fecha": "^4.2.0",
1949 "ms": "^2.1.1",
1950 "triple-beam": "^1.3.0"
1951 }
1952 },
1953 "lru-cache": {
1954 "version": "6.0.0",
1955 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1956 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1957 "dev": true,
1958 "requires": {
1959 "yallist": "^4.0.0"
1960 }
1961 },
1962 "macaddress": {
1963 "version": "0.2.9",
1964 "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.9.tgz",
1965 "integrity": "sha512-k4F1JUof6cQXxNFzx3thLby4oJzXTXQueAOOts944Vqizn+Rjc2QNFenT9FJSLU1CH3PmrHRSyZs2E+Cqw+P2w=="
1966 },
1967 "media-typer": {
1968 "version": "0.3.0",
1969 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1970 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
1971 },
1972 "merge-descriptors": {
1973 "version": "1.0.1",
1974 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1975 "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
1976 },
1977 "methods": {
1978 "version": "1.1.2",
1979 "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1980 "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
1981 },
1982 "mime": {
1983 "version": "1.6.0",
1984 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1985 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1986 },
1987 "mime-db": {
1988 "version": "1.48.0",
1989 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
1990 "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
1991 },
1992 "mime-types": {
1993 "version": "2.1.31",
1994 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
1995 "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
1996 "requires": {
1997 "mime-db": "1.48.0"
1998 }
1999 },
2000 "minimatch": {
2001 "version": "3.0.4",
2002 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2003 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2004 "requires": {
2005 "brace-expansion": "^1.1.7"
2006 }
2007 },
2008 "minimist": {
2009 "version": "1.2.5",
2010 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
2011 "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
2012 "dev": true
2013 },
2014 "mocha": {
2015 "version": "9.0.1",
2016 "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.1.tgz",
2017 "integrity": "sha512-9zwsavlRO+5csZu6iRtl3GHImAbhERoDsZwdRkdJ/bE+eVplmoxNKE901ZJ9LdSchYBjSCPbjKc5XvcAri2ylw==",
2018 "dev": true,
2019 "requires": {
2020 "@ungap/promise-all-settled": "1.1.2",
2021 "ansi-colors": "4.1.1",
2022 "browser-stdout": "1.3.1",
2023 "chokidar": "3.5.1",
2024 "debug": "4.3.1",
2025 "diff": "5.0.0",
2026 "escape-string-regexp": "4.0.0",
2027 "find-up": "5.0.0",
2028 "glob": "7.1.7",
2029 "growl": "1.10.5",
2030 "he": "1.2.0",
2031 "js-yaml": "4.1.0",
2032 "log-symbols": "4.1.0",
2033 "minimatch": "3.0.4",
2034 "ms": "2.1.3",
2035 "nanoid": "3.1.23",
2036 "serialize-javascript": "5.0.1",
2037 "strip-json-comments": "3.1.1",
2038 "supports-color": "8.1.1",
2039 "which": "2.0.2",
2040 "wide-align": "1.1.3",
2041 "workerpool": "6.1.4",
2042 "yargs": "16.2.0",
2043 "yargs-parser": "20.2.4",
2044 "yargs-unparser": "2.0.0"
2045 },
2046 "dependencies": {
2047 "argparse": {
2048 "version": "2.0.1",
2049 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
2050 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
2051 "dev": true
2052 },
2053 "has-flag": {
2054 "version": "4.0.0",
2055 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2056 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2057 "dev": true
2058 },
2059 "js-yaml": {
2060 "version": "4.1.0",
2061 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2062 "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2063 "dev": true,
2064 "requires": {
2065 "argparse": "^2.0.1"
2066 }
2067 },
2068 "ms": {
2069 "version": "2.1.3",
2070 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2071 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2072 "dev": true
2073 },
2074 "supports-color": {
2075 "version": "8.1.1",
2076 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
2077 "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
2078 "dev": true,
2079 "requires": {
2080 "has-flag": "^4.0.0"
2081 }
2082 }
2083 }
2084 },
2085 "moment": {
2086 "version": "2.29.1",
2087 "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
2088 "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
2089 },
2090 "ms": {
2091 "version": "2.1.2",
2092 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2093 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
2094 },
2095 "nanoid": {
2096 "version": "3.1.23",
2097 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
2098 "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==",
2099 "dev": true
2100 },
2101 "natural-compare": {
2102 "version": "1.4.0",
2103 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2104 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
2105 "dev": true
2106 },
2107 "negotiator": {
2108 "version": "0.6.2",
2109 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
2110 "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
2111 },
2112 "node-machine-id": {
2113 "version": "1.1.12",
2114 "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz",
2115 "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ=="
2116 },
2117 "node-natural-sort": {
2118 "version": "0.8.7",
2119 "resolved": "https://registry.npmjs.org/node-natural-sort/-/node-natural-sort-0.8.7.tgz",
2120 "integrity": "sha512-rMaLlHV5BlnRhIl6jUfgqdLY5U0NJkIxUdOsmpz3Txwh7js4+GwTiomhO8W4rp3SvX1zZ56mx13zfEWESr+qqA=="
2121 },
2122 "normalize-package-data": {
2123 "version": "2.5.0",
2124 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
2125 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
2126 "dev": true,
2127 "requires": {
2128 "hosted-git-info": "^2.1.4",
2129 "resolve": "^1.10.0",
2130 "semver": "2 || 3 || 4 || 5",
2131 "validate-npm-package-license": "^3.0.1"
2132 },
2133 "dependencies": {
2134 "semver": {
2135 "version": "5.7.1",
2136 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2137 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2138 "dev": true
2139 }
2140 }
2141 },
2142 "normalize-path": {
2143 "version": "3.0.0",
2144 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2145 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2146 "dev": true
2147 },
2148 "numeral": {
2149 "version": "2.0.6",
2150 "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz",
2151 "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY="
2152 },
2153 "nunjucks": {
2154 "version": "3.2.3",
2155 "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz",
2156 "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==",
2157 "requires": {
2158 "a-sync-waterfall": "^1.0.0",
2159 "asap": "^2.0.3",
2160 "commander": "^5.1.0"
2161 },
2162 "dependencies": {
2163 "commander": {
2164 "version": "5.1.0",
2165 "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
2166 "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="
2167 }
2168 }
2169 },
2170 "oauth-sign": {
2171 "version": "0.9.0",
2172 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
2173 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
2174 },
2175 "object-hash": {
2176 "version": "1.3.1",
2177 "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
2178 "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
2179 },
2180 "object-inspect": {
2181 "version": "1.10.3",
2182 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz",
2183 "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==",
2184 "dev": true
2185 },
2186 "object-keys": {
2187 "version": "1.1.1",
2188 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2189 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2190 "dev": true
2191 },
2192 "object.assign": {
2193 "version": "4.1.2",
2194 "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
2195 "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
2196 "dev": true,
2197 "requires": {
2198 "call-bind": "^1.0.0",
2199 "define-properties": "^1.1.3",
2200 "has-symbols": "^1.0.1",
2201 "object-keys": "^1.1.1"
2202 }
2203 },
2204 "object.entries": {
2205 "version": "1.1.4",
2206 "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz",
2207 "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==",
2208 "dev": true,
2209 "requires": {
2210 "call-bind": "^1.0.2",
2211 "define-properties": "^1.1.3",
2212 "es-abstract": "^1.18.2"
2213 }
2214 },
2215 "object.values": {
2216 "version": "1.1.4",
2217 "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz",
2218 "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==",
2219 "dev": true,
2220 "requires": {
2221 "call-bind": "^1.0.2",
2222 "define-properties": "^1.1.3",
2223 "es-abstract": "^1.18.2"
2224 }
2225 },
2226 "on-finished": {
2227 "version": "2.3.0",
2228 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
2229 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
2230 "requires": {
2231 "ee-first": "1.1.1"
2232 }
2233 },
2234 "on-headers": {
2235 "version": "1.0.2",
2236 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
2237 "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
2238 },
2239 "once": {
2240 "version": "1.4.0",
2241 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2242 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2243 "requires": {
2244 "wrappy": "1"
2245 }
2246 },
2247 "one-time": {
2248 "version": "1.0.0",
2249 "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
2250 "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
2251 "requires": {
2252 "fn.name": "1.x.x"
2253 }
2254 },
2255 "optionator": {
2256 "version": "0.9.1",
2257 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
2258 "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
2259 "dev": true,
2260 "requires": {
2261 "deep-is": "^0.1.3",
2262 "fast-levenshtein": "^2.0.6",
2263 "levn": "^0.4.1",
2264 "prelude-ls": "^1.2.1",
2265 "type-check": "^0.4.0",
2266 "word-wrap": "^1.2.3"
2267 }
2268 },
2269 "p-limit": {
2270 "version": "3.1.0",
2271 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2272 "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2273 "dev": true,
2274 "requires": {
2275 "yocto-queue": "^0.1.0"
2276 }
2277 },
2278 "p-locate": {
2279 "version": "5.0.0",
2280 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2281 "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2282 "dev": true,
2283 "requires": {
2284 "p-limit": "^3.0.2"
2285 }
2286 },
2287 "p-try": {
2288 "version": "1.0.0",
2289 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2290 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2291 "dev": true
2292 },
2293 "parent-module": {
2294 "version": "1.0.1",
2295 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2296 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2297 "dev": true,
2298 "requires": {
2299 "callsites": "^3.0.0"
2300 }
2301 },
2302 "parse-json": {
2303 "version": "4.0.0",
2304 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
2305 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
2306 "dev": true,
2307 "requires": {
2308 "error-ex": "^1.3.1",
2309 "json-parse-better-errors": "^1.0.1"
2310 }
2311 },
2312 "parseurl": {
2313 "version": "1.3.3",
2314 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
2315 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
2316 },
2317 "path-exists": {
2318 "version": "4.0.0",
2319 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2320 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2321 "dev": true
2322 },
2323 "path-is-absolute": {
2324 "version": "1.0.1",
2325 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2326 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
2327 },
2328 "path-key": {
2329 "version": "3.1.1",
2330 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2331 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2332 "dev": true
2333 },
2334 "path-parse": {
2335 "version": "1.0.7",
2336 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2337 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2338 "dev": true
2339 },
2340 "path-to-regexp": {
2341 "version": "0.1.7",
2342 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
2343 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
2344 },
2345 "path-type": {
2346 "version": "3.0.0",
2347 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
2348 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
2349 "dev": true,
2350 "requires": {
2351 "pify": "^3.0.0"
2352 }
2353 },
2354 "performance-now": {
2355 "version": "2.1.0",
2356 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
2357 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
2358 },
2359 "picomatch": {
2360 "version": "2.3.0",
2361 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
2362 "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
2363 "dev": true
2364 },
2365 "pify": {
2366 "version": "3.0.0",
2367 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
2368 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
2369 "dev": true
2370 },
2371 "pipe-io": {
2372 "version": "3.0.12",
2373 "resolved": "https://registry.npmjs.org/pipe-io/-/pipe-io-3.0.12.tgz",
2374 "integrity": "sha512-reR49NtpkVgedzCQ9DPV727VAZKw8Ax3N/3iQwD1vHxTmswsuhurFh0Z5woVNM1OhHDigKzDN7u4kNipAA9yyA=="
2375 },
2376 "pkg-dir": {
2377 "version": "2.0.0",
2378 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
2379 "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
2380 "dev": true,
2381 "requires": {
2382 "find-up": "^2.1.0"
2383 },
2384 "dependencies": {
2385 "find-up": {
2386 "version": "2.1.0",
2387 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2388 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2389 "dev": true,
2390 "requires": {
2391 "locate-path": "^2.0.0"
2392 }
2393 },
2394 "locate-path": {
2395 "version": "2.0.0",
2396 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2397 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2398 "dev": true,
2399 "requires": {
2400 "p-locate": "^2.0.0",
2401 "path-exists": "^3.0.0"
2402 }
2403 },
2404 "p-limit": {
2405 "version": "1.3.0",
2406 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2407 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2408 "dev": true,
2409 "requires": {
2410 "p-try": "^1.0.0"
2411 }
2412 },
2413 "p-locate": {
2414 "version": "2.0.0",
2415 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2416 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2417 "dev": true,
2418 "requires": {
2419 "p-limit": "^1.1.0"
2420 }
2421 },
2422 "path-exists": {
2423 "version": "3.0.0",
2424 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2425 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2426 "dev": true
2427 }
2428 }
2429 },
2430 "pkg-up": {
2431 "version": "2.0.0",
2432 "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
2433 "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
2434 "dev": true,
2435 "requires": {
2436 "find-up": "^2.1.0"
2437 },
2438 "dependencies": {
2439 "find-up": {
2440 "version": "2.1.0",
2441 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2442 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2443 "dev": true,
2444 "requires": {
2445 "locate-path": "^2.0.0"
2446 }
2447 },
2448 "locate-path": {
2449 "version": "2.0.0",
2450 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2451 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2452 "dev": true,
2453 "requires": {
2454 "p-locate": "^2.0.0",
2455 "path-exists": "^3.0.0"
2456 }
2457 },
2458 "p-limit": {
2459 "version": "1.3.0",
2460 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2461 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2462 "dev": true,
2463 "requires": {
2464 "p-try": "^1.0.0"
2465 }
2466 },
2467 "p-locate": {
2468 "version": "2.0.0",
2469 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2470 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2471 "dev": true,
2472 "requires": {
2473 "p-limit": "^1.1.0"
2474 }
2475 },
2476 "path-exists": {
2477 "version": "3.0.0",
2478 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2479 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2480 "dev": true
2481 }
2482 }
2483 },
2484 "pkginfo": {
2485 "version": "0.4.1",
2486 "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
2487 "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
2488 },
2489 "prelude-ls": {
2490 "version": "1.2.1",
2491 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2492 "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2493 "dev": true
2494 },
2495 "process-nextick-args": {
2496 "version": "2.0.1",
2497 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2498 "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
2499 },
2500 "progress": {
2501 "version": "2.0.3",
2502 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2503 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2504 "dev": true
2505 },
2506 "proxy-addr": {
2507 "version": "2.0.7",
2508 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
2509 "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
2510 "requires": {
2511 "forwarded": "0.2.0",
2512 "ipaddr.js": "1.9.1"
2513 }
2514 },
2515 "pseudomap": {
2516 "version": "1.0.2",
2517 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
2518 "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
2519 },
2520 "psl": {
2521 "version": "1.8.0",
2522 "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
2523 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
2524 },
2525 "punycode": {
2526 "version": "2.1.1",
2527 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2528 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
2529 },
2530 "qs": {
2531 "version": "6.7.0",
2532 "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
2533 "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
2534 },
2535 "random-bytes": {
2536 "version": "1.0.0",
2537 "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
2538 "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
2539 },
2540 "randombytes": {
2541 "version": "2.1.0",
2542 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
2543 "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2544 "dev": true,
2545 "requires": {
2546 "safe-buffer": "^5.1.0"
2547 }
2548 },
2549 "range-parser": {
2550 "version": "1.2.1",
2551 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
2552 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
2553 },
2554 "raw-body": {
2555 "version": "2.4.0",
2556 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
2557 "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
2558 "requires": {
2559 "bytes": "3.1.0",
2560 "http-errors": "1.7.2",
2561 "iconv-lite": "0.4.24",
2562 "unpipe": "1.0.0"
2563 }
2564 },
2565 "read-pkg": {
2566 "version": "3.0.0",
2567 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
2568 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
2569 "dev": true,
2570 "requires": {
2571 "load-json-file": "^4.0.0",
2572 "normalize-package-data": "^2.3.2",
2573 "path-type": "^3.0.0"
2574 }
2575 },
2576 "read-pkg-up": {
2577 "version": "3.0.0",
2578 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
2579 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
2580 "dev": true,
2581 "requires": {
2582 "find-up": "^2.0.0",
2583 "read-pkg": "^3.0.0"
2584 },
2585 "dependencies": {
2586 "find-up": {
2587 "version": "2.1.0",
2588 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2589 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2590 "dev": true,
2591 "requires": {
2592 "locate-path": "^2.0.0"
2593 }
2594 },
2595 "locate-path": {
2596 "version": "2.0.0",
2597 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2598 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2599 "dev": true,
2600 "requires": {
2601 "p-locate": "^2.0.0",
2602 "path-exists": "^3.0.0"
2603 }
2604 },
2605 "p-limit": {
2606 "version": "1.3.0",
2607 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2608 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2609 "dev": true,
2610 "requires": {
2611 "p-try": "^1.0.0"
2612 }
2613 },
2614 "p-locate": {
2615 "version": "2.0.0",
2616 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2617 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2618 "dev": true,
2619 "requires": {
2620 "p-limit": "^1.1.0"
2621 }
2622 },
2623 "path-exists": {
2624 "version": "3.0.0",
2625 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2626 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2627 "dev": true
2628 }
2629 }
2630 },
2631 "readable-stream": {
2632 "version": "3.6.0",
2633 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
2634 "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
2635 "requires": {
2636 "inherits": "^2.0.3",
2637 "string_decoder": "^1.1.1",
2638 "util-deprecate": "^1.0.1"
2639 }
2640 },
2641 "readdirp": {
2642 "version": "3.5.0",
2643 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
2644 "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
2645 "dev": true,
2646 "requires": {
2647 "picomatch": "^2.2.1"
2648 }
2649 },
2650 "redis": {
2651 "version": "2.8.0",
2652 "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
2653 "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
2654 "requires": {
2655 "double-ended-queue": "^2.1.0-0",
2656 "redis-commands": "^1.2.0",
2657 "redis-parser": "^2.6.0"
2658 }
2659 },
2660 "redis-commands": {
2661 "version": "1.7.0",
2662 "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
2663 "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
2664 },
2665 "redis-parser": {
2666 "version": "2.6.0",
2667 "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
2668 "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs="
2669 },
2670 "regexpp": {
2671 "version": "3.2.0",
2672 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
2673 "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
2674 "dev": true
2675 },
2676 "request": {
2677 "version": "2.88.2",
2678 "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
2679 "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
2680 "requires": {
2681 "aws-sign2": "~0.7.0",
2682 "aws4": "^1.8.0",
2683 "caseless": "~0.12.0",
2684 "combined-stream": "~1.0.6",
2685 "extend": "~3.0.2",
2686 "forever-agent": "~0.6.1",
2687 "form-data": "~2.3.2",
2688 "har-validator": "~5.1.3",
2689 "http-signature": "~1.2.0",
2690 "is-typedarray": "~1.0.0",
2691 "isstream": "~0.1.2",
2692 "json-stringify-safe": "~5.0.1",
2693 "mime-types": "~2.1.19",
2694 "oauth-sign": "~0.9.0",
2695 "performance-now": "^2.1.0",
2696 "qs": "~6.5.2",
2697 "safe-buffer": "^5.1.2",
2698 "tough-cookie": "~2.5.0",
2699 "tunnel-agent": "^0.6.0",
2700 "uuid": "^3.3.2"
2701 },
2702 "dependencies": {
2703 "qs": {
2704 "version": "6.5.2",
2705 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
2706 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
2707 }
2708 }
2709 },
2710 "require-directory": {
2711 "version": "2.1.1",
2712 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2713 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
2714 "dev": true
2715 },
2716 "require-from-string": {
2717 "version": "2.0.2",
2718 "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
2719 "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
2720 "dev": true
2721 },
2722 "resolve": {
2723 "version": "1.20.0",
2724 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
2725 "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
2726 "dev": true,
2727 "requires": {
2728 "is-core-module": "^2.2.0",
2729 "path-parse": "^1.0.6"
2730 }
2731 },
2732 "resolve-from": {
2733 "version": "4.0.0",
2734 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2735 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2736 "dev": true
2737 },
2738 "rimraf": {
2739 "version": "3.0.2",
2740 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2741 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2742 "dev": true,
2743 "requires": {
2744 "glob": "^7.1.3"
2745 }
2746 },
2747 "safe-buffer": {
2748 "version": "5.2.1",
2749 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2750 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
2751 },
2752 "safer-buffer": {
2753 "version": "2.1.2",
2754 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2755 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
2756 },
2757 "semver": {
2758 "version": "7.3.5",
2759 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
2760 "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
2761 "dev": true,
2762 "requires": {
2763 "lru-cache": "^6.0.0"
2764 }
2765 },
2766 "send": {
2767 "version": "0.17.1",
2768 "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
2769 "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
2770 "requires": {
2771 "debug": "2.6.9",
2772 "depd": "~1.1.2",
2773 "destroy": "~1.0.4",
2774 "encodeurl": "~1.0.2",
2775 "escape-html": "~1.0.3",
2776 "etag": "~1.8.1",
2777 "fresh": "0.5.2",
2778 "http-errors": "~1.7.2",
2779 "mime": "1.6.0",
2780 "ms": "2.1.1",
2781 "on-finished": "~2.3.0",
2782 "range-parser": "~1.2.1",
2783 "statuses": "~1.5.0"
2784 },
2785 "dependencies": {
2786 "debug": {
2787 "version": "2.6.9",
2788 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2789 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2790 "requires": {
2791 "ms": "2.0.0"
2792 },
2793 "dependencies": {
2794 "ms": {
2795 "version": "2.0.0",
2796 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2797 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
2798 }
2799 }
2800 },
2801 "ms": {
2802 "version": "2.1.1",
2803 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
2804 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
2805 }
2806 }
2807 },
2808 "serialize-javascript": {
2809 "version": "5.0.1",
2810 "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
2811 "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
2812 "dev": true,
2813 "requires": {
2814 "randombytes": "^2.1.0"
2815 }
2816 },
2817 "serve-static": {
2818 "version": "1.14.1",
2819 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
2820 "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
2821 "requires": {
2822 "encodeurl": "~1.0.2",
2823 "escape-html": "~1.0.3",
2824 "parseurl": "~1.3.3",
2825 "send": "0.17.1"
2826 }
2827 },
2828 "setprototypeof": {
2829 "version": "1.1.1",
2830 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
2831 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
2832 },
2833 "sha1": {
2834 "version": "1.1.1",
2835 "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
2836 "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=",
2837 "requires": {
2838 "charenc": ">= 0.0.1",
2839 "crypt": ">= 0.0.1"
2840 }
2841 },
2842 "shebang-command": {
2843 "version": "2.0.0",
2844 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2845 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2846 "dev": true,
2847 "requires": {
2848 "shebang-regex": "^3.0.0"
2849 }
2850 },
2851 "shebang-regex": {
2852 "version": "3.0.0",
2853 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2854 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2855 "dev": true
2856 },
2857 "should": {
2858 "version": "13.2.3",
2859 "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz",
2860 "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==",
2861 "dev": true,
2862 "requires": {
2863 "should-equal": "^2.0.0",
2864 "should-format": "^3.0.3",
2865 "should-type": "^1.4.0",
2866 "should-type-adaptors": "^1.0.1",
2867 "should-util": "^1.0.0"
2868 }
2869 },
2870 "should-equal": {
2871 "version": "2.0.0",
2872 "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz",
2873 "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==",
2874 "dev": true,
2875 "requires": {
2876 "should-type": "^1.4.0"
2877 }
2878 },
2879 "should-format": {
2880 "version": "3.0.3",
2881 "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz",
2882 "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=",
2883 "dev": true,
2884 "requires": {
2885 "should-type": "^1.3.0",
2886 "should-type-adaptors": "^1.0.1"
2887 }
2888 },
2889 "should-type": {
2890 "version": "1.4.0",
2891 "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz",
2892 "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=",
2893 "dev": true
2894 },
2895 "should-type-adaptors": {
2896 "version": "1.1.0",
2897 "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz",
2898 "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==",
2899 "dev": true,
2900 "requires": {
2901 "should-type": "^1.3.0",
2902 "should-util": "^1.0.0"
2903 }
2904 },
2905 "should-util": {
2906 "version": "1.0.1",
2907 "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz",
2908 "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==",
2909 "dev": true
2910 },
2911 "simple-git": {
2912 "version": "1.132.0",
2913 "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.132.0.tgz",
2914 "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==",
2915 "requires": {
2916 "debug": "^4.0.1"
2917 }
2918 },
2919 "simple-swizzle": {
2920 "version": "0.2.2",
2921 "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
2922 "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
2923 "requires": {
2924 "is-arrayish": "^0.3.1"
2925 },
2926 "dependencies": {
2927 "is-arrayish": {
2928 "version": "0.3.2",
2929 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
2930 "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
2931 }
2932 }
2933 },
2934 "slice-ansi": {
2935 "version": "4.0.0",
2936 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
2937 "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
2938 "dev": true,
2939 "requires": {
2940 "ansi-styles": "^4.0.0",
2941 "astral-regex": "^2.0.0",
2942 "is-fullwidth-code-point": "^3.0.0"
2943 },
2944 "dependencies": {
2945 "ansi-styles": {
2946 "version": "4.3.0",
2947 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2948 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2949 "dev": true,
2950 "requires": {
2951 "color-convert": "^2.0.1"
2952 }
2953 },
2954 "color-convert": {
2955 "version": "2.0.1",
2956 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2957 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2958 "dev": true,
2959 "requires": {
2960 "color-name": "~1.1.4"
2961 }
2962 },
2963 "color-name": {
2964 "version": "1.1.4",
2965 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2966 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2967 "dev": true
2968 }
2969 }
2970 },
2971 "spdx-correct": {
2972 "version": "3.1.1",
2973 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
2974 "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
2975 "dev": true,
2976 "requires": {
2977 "spdx-expression-parse": "^3.0.0",
2978 "spdx-license-ids": "^3.0.0"
2979 }
2980 },
2981 "spdx-exceptions": {
2982 "version": "2.3.0",
2983 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
2984 "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
2985 "dev": true
2986 },
2987 "spdx-expression-parse": {
2988 "version": "3.0.1",
2989 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
2990 "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
2991 "dev": true,
2992 "requires": {
2993 "spdx-exceptions": "^2.1.0",
2994 "spdx-license-ids": "^3.0.0"
2995 }
2996 },
2997 "spdx-license-ids": {
2998 "version": "3.0.9",
2999 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz",
3000 "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==",
3001 "dev": true
3002 },
3003 "sprintf-js": {
3004 "version": "1.0.3",
3005 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
3006 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
3007 "dev": true
3008 },
3009 "sshpk": {
3010 "version": "1.16.1",
3011 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
3012 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
3013 "requires": {
3014 "asn1": "~0.2.3",
3015 "assert-plus": "^1.0.0",
3016 "bcrypt-pbkdf": "^1.0.0",
3017 "dashdash": "^1.12.0",
3018 "ecc-jsbn": "~0.1.1",
3019 "getpass": "^0.1.1",
3020 "jsbn": "~0.1.0",
3021 "safer-buffer": "^2.0.2",
3022 "tweetnacl": "~0.14.0"
3023 }
3024 },
3025 "stack-trace": {
3026 "version": "0.0.10",
3027 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
3028 "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
3029 },
3030 "statuses": {
3031 "version": "1.5.0",
3032 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
3033 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
3034 },
3035 "strftime": {
3036 "version": "0.10.0",
3037 "resolved": "https://registry.npmjs.org/strftime/-/strftime-0.10.0.tgz",
3038 "integrity": "sha1-s/D6QZKVICpaKJ9ta+n0kJphcZM="
3039 },
3040 "string-natural-compare": {
3041 "version": "2.0.3",
3042 "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-2.0.3.tgz",
3043 "integrity": "sha512-4Kcl12rNjc+6EKhY8QyDVuQTAlMWwRiNbsxnVwBUKFr7dYPQuXVrtNU4sEkjF9LHY0AY6uVbB3ktbkIH4LC+BQ=="
3044 },
3045 "string-width": {
3046 "version": "4.2.2",
3047 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
3048 "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
3049 "dev": true,
3050 "requires": {
3051 "emoji-regex": "^8.0.0",
3052 "is-fullwidth-code-point": "^3.0.0",
3053 "strip-ansi": "^6.0.0"
3054 }
3055 },
3056 "string.prototype.trimend": {
3057 "version": "1.0.4",
3058 "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
3059 "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
3060 "dev": true,
3061 "requires": {
3062 "call-bind": "^1.0.2",
3063 "define-properties": "^1.1.3"
3064 }
3065 },
3066 "string.prototype.trimstart": {
3067 "version": "1.0.4",
3068 "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
3069 "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
3070 "dev": true,
3071 "requires": {
3072 "call-bind": "^1.0.2",
3073 "define-properties": "^1.1.3"
3074 }
3075 },
3076 "string_decoder": {
3077 "version": "1.3.0",
3078 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
3079 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
3080 "requires": {
3081 "safe-buffer": "~5.2.0"
3082 }
3083 },
3084 "strip-ansi": {
3085 "version": "6.0.0",
3086 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
3087 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
3088 "dev": true,
3089 "requires": {
3090 "ansi-regex": "^5.0.0"
3091 }
3092 },
3093 "strip-bom": {
3094 "version": "3.0.0",
3095 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3096 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3097 "dev": true
3098 },
3099 "strip-json-comments": {
3100 "version": "3.1.1",
3101 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
3102 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
3103 "dev": true
3104 },
3105 "supports-color": {
3106 "version": "5.5.0",
3107 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3108 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3109 "dev": true,
3110 "requires": {
3111 "has-flag": "^3.0.0"
3112 }
3113 },
3114 "table": {
3115 "version": "6.7.1",
3116 "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
3117 "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
3118 "dev": true,
3119 "requires": {
3120 "ajv": "^8.0.1",
3121 "lodash.clonedeep": "^4.5.0",
3122 "lodash.truncate": "^4.4.2",
3123 "slice-ansi": "^4.0.0",
3124 "string-width": "^4.2.0",
3125 "strip-ansi": "^6.0.0"
3126 },
3127 "dependencies": {
3128 "ajv": {
3129 "version": "8.6.0",
3130 "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz",
3131 "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==",
3132 "dev": true,
3133 "requires": {
3134 "fast-deep-equal": "^3.1.1",
3135 "json-schema-traverse": "^1.0.0",
3136 "require-from-string": "^2.0.2",
3137 "uri-js": "^4.2.2"
3138 }
3139 },
3140 "json-schema-traverse": {
3141 "version": "1.0.0",
3142 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
3143 "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
3144 "dev": true
3145 }
3146 }
3147 },
3148 "text-hex": {
3149 "version": "1.0.0",
3150 "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
3151 "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
3152 },
3153 "text-table": {
3154 "version": "0.2.0",
3155 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
3156 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
3157 "dev": true
3158 },
3159 "to-regex-range": {
3160 "version": "5.0.1",
3161 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3162 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3163 "dev": true,
3164 "requires": {
3165 "is-number": "^7.0.0"
3166 }
3167 },
3168 "toidentifier": {
3169 "version": "1.0.0",
3170 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
3171 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
3172 },
3173 "tough-cookie": {
3174 "version": "2.5.0",
3175 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
3176 "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
3177 "requires": {
3178 "psl": "^1.1.28",
3179 "punycode": "^2.1.1"
3180 }
3181 },
3182 "triple-beam": {
3183 "version": "1.3.0",
3184 "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
3185 "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
3186 },
3187 "tsconfig-paths": {
3188 "version": "3.9.0",
3189 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
3190 "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
3191 "dev": true,
3192 "requires": {
3193 "@types/json5": "^0.0.29",
3194 "json5": "^1.0.1",
3195 "minimist": "^1.2.0",
3196 "strip-bom": "^3.0.0"
3197 }
3198 },
3199 "tunnel-agent": {
3200 "version": "0.6.0",
3201 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3202 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
3203 "requires": {
3204 "safe-buffer": "^5.0.1"
3205 }
3206 },
3207 "tweetnacl": {
3208 "version": "0.14.5",
3209 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3210 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
3211 },
3212 "type-check": {
3213 "version": "0.4.0",
3214 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
3215 "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
3216 "dev": true,
3217 "requires": {
3218 "prelude-ls": "^1.2.1"
3219 }
3220 },
3221 "type-fest": {
3222 "version": "0.20.2",
3223 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
3224 "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
3225 "dev": true
3226 },
3227 "type-is": {
3228 "version": "1.6.18",
3229 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
3230 "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
3231 "requires": {
3232 "media-typer": "0.3.0",
3233 "mime-types": "~2.1.24"
3234 }
3235 },
3236 "uid-safe": {
3237 "version": "2.1.5",
3238 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
3239 "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
3240 "requires": {
3241 "random-bytes": "~1.0.0"
3242 }
3243 },
3244 "unbox-primitive": {
3245 "version": "1.0.1",
3246 "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
3247 "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
3248 "dev": true,
3249 "requires": {
3250 "function-bind": "^1.1.1",
3251 "has-bigints": "^1.0.1",
3252 "has-symbols": "^1.0.2",
3253 "which-boxed-primitive": "^1.0.2"
3254 }
3255 },
3256 "uniqid": {
3257 "version": "5.3.0",
3258 "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.3.0.tgz",
3259 "integrity": "sha512-Jq8EzvAT8/CcLu8tzoSiylnzPkNhJJKpnMT964Dj1jI4pG4sKYP9aFVByNTp8KzMvYlW1Um63PCDqtOoujNzrA=="
3260 },
3261 "unpipe": {
3262 "version": "1.0.0",
3263 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
3264 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
3265 },
3266 "uri-js": {
3267 "version": "4.4.1",
3268 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
3269 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3270 "requires": {
3271 "punycode": "^2.1.0"
3272 }
3273 },
3274 "util-deprecate": {
3275 "version": "1.0.2",
3276 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3277 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
3278 },
3279 "utils-merge": {
3280 "version": "1.0.1",
3281 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
3282 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
3283 },
3284 "uuid": {
3285 "version": "3.4.0",
3286 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
3287 "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
3288 },
3289 "v8-compile-cache": {
3290 "version": "2.3.0",
3291 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
3292 "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
3293 "dev": true
3294 },
3295 "validate-npm-package-license": {
3296 "version": "3.0.4",
3297 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
3298 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
3299 "dev": true,
3300 "requires": {
3301 "spdx-correct": "^3.0.0",
3302 "spdx-expression-parse": "^3.0.0"
3303 }
3304 },
3305 "vary": {
3306 "version": "1.1.2",
3307 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3308 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
3309 },
3310 "verror": {
3311 "version": "1.10.0",
3312 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
3313 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
3314 "requires": {
3315 "assert-plus": "^1.0.0",
3316 "core-util-is": "1.0.2",
3317 "extsprintf": "^1.2.0"
3318 }
3319 },
3320 "which": {
3321 "version": "2.0.2",
3322 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3323 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3324 "dev": true,
3325 "requires": {
3326 "isexe": "^2.0.0"
3327 }
3328 },
3329 "which-boxed-primitive": {
3330 "version": "1.0.2",
3331 "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
3332 "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
3333 "dev": true,
3334 "requires": {
3335 "is-bigint": "^1.0.1",
3336 "is-boolean-object": "^1.1.0",
3337 "is-number-object": "^1.0.4",
3338 "is-string": "^1.0.5",
3339 "is-symbol": "^1.0.3"
3340 }
3341 },
3342 "wide-align": {
3343 "version": "1.1.3",
3344 "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
3345 "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
3346 "dev": true,
3347 "requires": {
3348 "string-width": "^1.0.2 || 2"
3349 },
3350 "dependencies": {
3351 "ansi-regex": {
3352 "version": "3.0.0",
3353 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
3354 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
3355 "dev": true
3356 },
3357 "is-fullwidth-code-point": {
3358 "version": "2.0.0",
3359 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3360 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3361 "dev": true
3362 },
3363 "string-width": {
3364 "version": "2.1.1",
3365 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
3366 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
3367 "dev": true,
3368 "requires": {
3369 "is-fullwidth-code-point": "^2.0.0",
3370 "strip-ansi": "^4.0.0"
3371 }
3372 },
3373 "strip-ansi": {
3374 "version": "4.0.0",
3375 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
3376 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
3377 "dev": true,
3378 "requires": {
3379 "ansi-regex": "^3.0.0"
3380 }
3381 }
3382 }
3383 },
3384 "winston": {
3385 "version": "3.3.3",
3386 "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
3387 "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
3388 "requires": {
3389 "@dabh/diagnostics": "^2.0.2",
3390 "async": "^3.1.0",
3391 "is-stream": "^2.0.0",
3392 "logform": "^2.2.0",
3393 "one-time": "^1.0.0",
3394 "readable-stream": "^3.4.0",
3395 "stack-trace": "0.0.x",
3396 "triple-beam": "^1.3.0",
3397 "winston-transport": "^4.4.0"
3398 }
3399 },
3400 "winston-circular-buffer": {
3401 "version": "1.0.0",
3402 "resolved": "https://registry.npmjs.org/winston-circular-buffer/-/winston-circular-buffer-1.0.0.tgz",
3403 "integrity": "sha1-6ZH3W5n/IFVR4O5HK3XSAdvT4ns=",
3404 "requires": {
3405 "circular-buffer": "0.0.6"
3406 }
3407 },
3408 "winston-compat": {
3409 "version": "0.1.5",
3410 "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz",
3411 "integrity": "sha512-EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==",
3412 "requires": {
3413 "cycle": "~1.0.3",
3414 "logform": "^1.6.0",
3415 "triple-beam": "^1.2.0"
3416 },
3417 "dependencies": {
3418 "fecha": {
3419 "version": "2.3.3",
3420 "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
3421 "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
3422 },
3423 "logform": {
3424 "version": "1.10.0",
3425 "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz",
3426 "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==",
3427 "requires": {
3428 "colors": "^1.2.1",
3429 "fast-safe-stringify": "^2.0.4",
3430 "fecha": "^2.3.3",
3431 "ms": "^2.1.1",
3432 "triple-beam": "^1.2.0"
3433 }
3434 }
3435 }
3436 },
3437 "winston-daily-rotate-file": {
3438 "version": "3.10.0",
3439 "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz",
3440 "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==",
3441 "requires": {
3442 "file-stream-rotator": "^0.4.1",
3443 "object-hash": "^1.3.0",
3444 "semver": "^6.2.0",
3445 "triple-beam": "^1.3.0",
3446 "winston-compat": "^0.1.4",
3447 "winston-transport": "^4.2.0"
3448 },
3449 "dependencies": {
3450 "semver": {
3451 "version": "6.3.0",
3452 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
3453 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
3454 }
3455 }
3456 },
3457 "winston-transport": {
3458 "version": "4.4.0",
3459 "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
3460 "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
3461 "requires": {
3462 "readable-stream": "^2.3.7",
3463 "triple-beam": "^1.2.0"
3464 },
3465 "dependencies": {
3466 "readable-stream": {
3467 "version": "2.3.7",
3468 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
3469 "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
3470 "requires": {
3471 "core-util-is": "~1.0.0",
3472 "inherits": "~2.0.3",
3473 "isarray": "~1.0.0",
3474 "process-nextick-args": "~2.0.0",
3475 "safe-buffer": "~5.1.1",
3476 "string_decoder": "~1.1.1",
3477 "util-deprecate": "~1.0.1"
3478 }
3479 },
3480 "safe-buffer": {
3481 "version": "5.1.2",
3482 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3483 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
3484 },
3485 "string_decoder": {
3486 "version": "1.1.1",
3487 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3488 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3489 "requires": {
3490 "safe-buffer": "~5.1.0"
3491 }
3492 }
3493 }
3494 },
3495 "word-wrap": {
3496 "version": "1.2.3",
3497 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
3498 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
3499 "dev": true
3500 },
3501 "workerpool": {
3502 "version": "6.1.4",
3503 "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.4.tgz",
3504 "integrity": "sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g==",
3505 "dev": true
3506 },
3507 "wrap-ansi": {
3508 "version": "7.0.0",
3509 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3510 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3511 "dev": true,
3512 "requires": {
3513 "ansi-styles": "^4.0.0",
3514 "string-width": "^4.1.0",
3515 "strip-ansi": "^6.0.0"
3516 },
3517 "dependencies": {
3518 "ansi-styles": {
3519 "version": "4.3.0",
3520 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3521 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3522 "dev": true,
3523 "requires": {
3524 "color-convert": "^2.0.1"
3525 }
3526 },
3527 "color-convert": {
3528 "version": "2.0.1",
3529 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
3530 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
3531 "dev": true,
3532 "requires": {
3533 "color-name": "~1.1.4"
3534 }
3535 },
3536 "color-name": {
3537 "version": "1.1.4",
3538 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3539 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3540 "dev": true
3541 }
3542 }
3543 },
3544 "wrappy": {
3545 "version": "1.0.2",
3546 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3547 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
3548 },
3549 "wraptile": {
3550 "version": "2.0.0",
3551 "resolved": "https://registry.npmjs.org/wraptile/-/wraptile-2.0.0.tgz",
3552 "integrity": "sha512-Jzt4wTT0DJGucp4VewhbT6YutpOfBh6Ab4r5hKWTvFYsNTCxPi0U8wOsesDk1CQ+VcHyaP36BzCiKRJTROJiTQ=="
3553 },
3554 "y18n": {
3555 "version": "5.0.8",
3556 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
3557 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
3558 "dev": true
3559 },
3560 "yallist": {
3561 "version": "4.0.0",
3562 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3563 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
3564 "dev": true
3565 },
3566 "yargs": {
3567 "version": "16.2.0",
3568 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
3569 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
3570 "dev": true,
3571 "requires": {
3572 "cliui": "^7.0.2",
3573 "escalade": "^3.1.1",
3574 "get-caller-file": "^2.0.5",
3575 "require-directory": "^2.1.1",
3576 "string-width": "^4.2.0",
3577 "y18n": "^5.0.5",
3578 "yargs-parser": "^20.2.2"
3579 }
3580 },
3581 "yargs-parser": {
3582 "version": "20.2.4",
3583 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
3584 "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
3585 "dev": true
3586 },
3587 "yargs-unparser": {
3588 "version": "2.0.0",
3589 "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
3590 "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
3591 "dev": true,
3592 "requires": {
3593 "camelcase": "^6.0.0",
3594 "decamelize": "^4.0.0",
3595 "flat": "^5.0.2",
3596 "is-plain-obj": "^2.1.0"
3597 }
3598 },
3599 "yocto-queue": {
3600 "version": "0.1.0",
3601 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3602 "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
3603 "dev": true
3604 },
3605 "zames": {
3606 "version": "2.0.1",
3607 "resolved": "https://registry.npmjs.org/zames/-/zames-2.0.1.tgz",
3608 "integrity": "sha512-gJJxR12zrhOBl96d/9PorsFAEU+xUOtxOwO2lUofj8a40ahx+nxjQftzD35/GdxLzlJ5vTWh4oG81TpmKh/+hw==",
3609 "requires": {
3610 "currify": "^3.0.0",
3611 "es6-promisify": "^6.0.0"
3612 }
3613 }
3614 }
3615 }
3616
File was created 1 {
2 "name": "komodo-gw-st24b",
3 "version": "0.1.0",
4 "description": "Komodo gateway to ST24 (XMLRPC)",
5 "main": "index.js",
6 "scripts": {
7 "test": "mocha --recursive test",
8 "postversion": "git push && git push --tags"
9 },
10 "repository": {
11 "type": "git",
12 "url": "git@gitlab.kodesumber.com:komodo/komodo-gw-st24b.git"
13 },
14 "keywords": [
15 "komodo",
16 "tektrans",
17 "ppob",
18 "st24",
19 "xmlrpc"
20 ],
21 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>",
22 "license": "SEE LICENSE IN LICENSE.txt",
23 "devDependencies": {
24 "eslint": "^7.29.0",
25 "eslint-config-airbnb-base": "^14.2.1",
26 "eslint-plugin-import": "^2.23.4",
27 "mocha": "^9.0.1",
28 "should": "^13.2.3"
29 },
30 "dependencies": {
31 "axios": "^0.21.1",
32 "express": "^4.17.1",
33 "fast-xml-parser": "^3.19.0",
34 "json-stringify-pretty-compact": "^3.0.0",
35 "komodo-sdk": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git",
36 "moment": "^2.29.1",
37 "uniqid": "^5.3.0"
38 }
39 }
40
test-data/method-response-1.xml
File was created 1 <?xml version="1.0"?>
2 <!-- example from ST24 doc -->
3 <methodResponse>
4 <params>
5 <param>
6 <value>
7 <struct>
8 <member>
9 <name>RESPONSECODE</name>
10 <value><string>00</string></value>
11 </member>
12 <member>
13 <name>REQUESTID</name>
14 <value><string>123456</string></value>
15 </member>
16 <member>
17 <name>MESSAGE</name>
18 <value><string>TOP UP BERHASIL</string></value>
19 </member>
20 <member>
21 <name>TRANSACTIONID</name>
22 <value><string>666333</string></value>
23 </member>
24 </struct>
25 </value>
26 </param>
27 </params>
28 </methodResponse>
test-data/top-up-request-1.xml
File was created 1 <?xml version="1.0"?>
2 <!-- example from ST24 doc -->
3 <methodCall>
4 <methodName>topUpRequest</methodName>
5 <params>
6 <param>
7 <value>
8 <struct>
9 <member>
10 <name>MSISDN</name>
11 <value><string>0818111222</string></value>
12 </member>
13 <member>
14 <name>REQUESTID</name>
15 <value><string>123456</string></value>
16 </member>
17 <member>
18 <name>PIN</name>
19 <value><string>6633</string></value>
20 </member>
21 <member>
22 <name>NOHP</name>
23 <value><string>0818111333</string></value>
24 </member>
25 <member>
26 <name>NOM</name>
27 <value><string>XR10</string></value>
28 </member>
29 </struct>
30 </value>
31 </param>
32 </params>
33 </methodCall>
test/generic-xmlrpc/compose-payload.js
File was created 1 /* eslint-disable no-console */
2 /* global describe it */
3
4 const should = require('should');
5 const xmlParser = require('fast-xml-parser');
6
7 const composePayload = require('../../lib/generic-xmlrpc/compose-payload');
8
9 describe('#generic-xmlrpc', () => {
10 describe('#compose-payload', () => {
11 it('should compose payload correctly (params is an array)', () => {
12 const resultStr = composePayload('topUpRequest', [
13 {
14 name: 'MSISDN',
15 value: '62818181818',
16 },
17 {
18 name: 'REQUESTID',
19 value: '1234',
20 },
21 ]);
22
23 // console.log(result);
24 should.exists(resultStr, '5033DD9C');
25
26 const resultObj = xmlParser.parse(resultStr);
27
28 // console.log(JSON.stringify(resultObj, null, 2));
29
30 resultObj.methodCall.params.param.value.struct.member.find((item) => item.name === 'MSISDN').value.string.should.equal(62818181818, '06C60D8C');
31 });
32
33 it('should compose payload correctly (params is an object)', () => {
34 const resultStr = composePayload('topUpRequest', {
35 MSISDN: { value: '62818181818' },
36 REQUESTID: { value: '1234' },
37 });
38
39 // console.log(result);
40 should.exists(resultStr, '13E0279E');
41
42 const resultObj = xmlParser.parse(resultStr);
43
44 // console.log(JSON.stringify(resultObj, null, 2));
45
46 resultObj.methodCall.params.param.value.struct.member.find((item) => item.name === 'MSISDN').value.string.should.equal(62818181818, '3399A280');
47 });
48
49 it('should compose payload correctly (params is an object, and value is not an object)', () => {
50 const resultStr = composePayload('topUpRequest', {
51 MSISDN: '62818181818',
52 REQUESTID: '1234',
53 });
54
55 // console.log(resultStr);
56 should.exists(resultStr, '99413C25');
57
58 const resultObj = xmlParser.parse(resultStr);
59
60 // console.log(JSON.stringify(resultObj, null, 2));
61
62 resultObj.methodCall.params.param.value.struct.member.find((item) => item.name === 'MSISDN').value.string.should.equal(62818181818, 'C49C657D');
63 });
64 });
65 });
66
test/generic-xmlrpc/get-params-members-obj.js
File was created 1 /* global describe it */
2
3 const fs = require('fs');
4 const should = require('should');
5 const parseXml = require('../../lib/parse-xml');
6 const getParamsMembersObj = require('../../lib/generic-xmlrpc/get-params-members-obj');
7
8 const topUpRequestPayload = fs.readFileSync('./test-data/top-up-request-1.xml').toString();
9 const topUpRequestObj = parseXml('4C5B00DA', topUpRequestPayload);
10
11 const methodResponsePayload = fs.readFileSync('./test-data/method-response-1.xml').toString();
12 const methodResponseObj = parseXml('082DEE2D', methodResponsePayload);
13
14 describe('#generic-xmlrpc', () => {
15 describe('#precheck', () => {
16 it('should pass precheck', () => {
17 should.exists(topUpRequestPayload, '8134961F');
18 should.exists(topUpRequestObj, 'E2A43100');
19 });
20 });
21
22 describe('#get-params-members', () => {
23 it('should return correct result (from topUpRequest)', () => {
24 const result = getParamsMembersObj(topUpRequestObj, false);
25
26 should.exists(result, '494175C8');
27 result.MSISDN.should.equal('0818111222', 'A40F6034');
28 result.REQUESTID.should.equal('123456', '763B7B38');
29 result.PIN.should.equal('6633', 'EBF2FACB');
30 result.NOHP.should.equal('0818111333', 'CF204FB7');
31 result.NOM.should.equal('XR10', '0B8AB5AC');
32 });
33
34 it('should return correct result (from methodResponse)', () => {
35 const result = getParamsMembersObj(methodResponseObj, false);
36
37 should.exists(result, '6D1FC98B');
38 result.RESPONSECODE.should.equal('00', '476B0894');
39 result.REQUESTID.should.equal('123456', 'DF50D10B');
40 result.MESSAGE.should.equal('TOP UP BERHASIL', 'EBCC5B2A');
41 result.TRANSACTIONID.should.equal('666333', '7825968D');
42 });
43 });
44 });
45
test/generic-xmlrpc/get-params-members.js
File was created 1 /* global describe it */
2
3 const fs = require('fs');
4 const should = require('should');
5 const xmlParser = require('fast-xml-parser');
6 const getParamsMembers = require('../../lib/generic-xmlrpc/get-params-members');
7
8 const xmlParserOptions = {
9 parseNodeValue: false,
10 trimValues: true,
11 };
12
13 const topUpRequestPayload = fs.readFileSync('./test-data/top-up-request-1.xml').toString();
14
15 const topUpRequestObj = xmlParser.parse(topUpRequestPayload, xmlParserOptions);
16
17 const methodResponsePayload = fs.readFileSync('./test-data/method-response-1.xml').toString();
18 const methodResponseObj = xmlParser.parse(methodResponsePayload, xmlParserOptions);
19
20 describe('#generic-xmlrpc', () => {
21 describe('#get-params-members', () => {
22 it('should return correct result (from topUpRequest)', () => {
23 const result = getParamsMembers(topUpRequestObj);
24
25 should.exists(result, '68DC1F18');
26 result.find((item) => item.name === 'MSISDN').value.should.equal('0818111222', 'FF483A06');
27 result.find((item) => item.name === 'REQUESTID').value.should.equal('123456', '65208338');
28 result.find((item) => item.name === 'PIN').value.should.equal('6633', 'B420C34C');
29 result.find((item) => item.name === 'NOHP').value.should.equal('0818111333', '706A0594');
30 result.find((item) => item.name === 'NOM').value.should.equal('XR10', 'F594F6B3');
31 });
32
33 it('should return correct result (from methodResponse)', () => {
34 const result = getParamsMembers(methodResponseObj);
35
36 should.exists(result, '426E3B71');
37 result.find((item) => item.name === 'RESPONSECODE').value.should.equal('00', '8AFE55D2');
38 result.find((item) => item.name === 'REQUESTID').value.should.equal('123456', 'BDD4A32F');
39 result.find((item) => item.name === 'MESSAGE').value.should.equal('TOP UP BERHASIL', 'D817F0F5');
40 result.find((item) => item.name === 'TRANSACTIONID').value.should.equal('666333', '9E2ED185');
41 });
42 });
43 });
44