UNPKG

@signalwire/compatibility-api

Version:
1,437 lines (1,421 loc) 4.54 MB
import { fileURLToPath } from 'url'; import path from 'path'; import { createRequire as topLevelCreateRequire } from 'module'; const require = topLevelCreateRequire(import.meta.url); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw new Error('Dynamic require of "' + x + '" is not supported'); }); var __commonJS = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // package.json var require_package = __commonJS({ "package.json"(exports, module) { module.exports = { name: "@signalwire/compatibility-api", description: "SignalWire Compatibility API", author: "SignalWire Team <open.source@signalwire.com>", license: "MIT", version: "3.1.4", keywords: [ "signalwire", "voice", "laml", "sms", "rest", "api" ], repository: { type: "git", url: "https://github.com/signalwire/compatibility-api-js" }, bugs: { url: "https://github.com/signalwire/compatibility-api-js/issues" }, homepage: "https://developer.signalwire.com/compatibility-api", dependencies: { axios: "^0.26.1", dayjs: "^1.8.29", "https-proxy-agent": "^5.0.0", jsonwebtoken: "9.0.0", lodash: "^4.17.21", q: "2.0.x", qs: "^6.9.4", rootpath: "^0.1.2", scmp: "^2.1.0", "url-parse": "^1.5.9", xmlbuilder: "^13.0.2" }, devDependencies: { "@types/node": "9.6.57", esbuild: "^0.17.19", "esbuild-node-externals": "^1.7.0", eslint: "^7.28.0", express: "^4.17.1", jasmine: "~3.5.0", jsdoc: "^4.0.2", jshint: "^2.11.0", "mock-fs": "^4.12.0", nock: "^10.0.6", "node-mocks-http": "^1.8.1", nyc: "^15.1.0", proxyquire: "^2.1.3", typescript: "^2.9.2" }, scripts: { test: "npm run test:javascript && npm run test:typescript", "test:javascript": "jasmine spec/**/**.spec.js", "test:typescript": "tsc examples/typescript/example.ts --noEmit --strict", jshint: "jshint lib/rest/** lib/base/** lib/http/**", jscs: "eslint lib/base/**/**.js lib/http/**/**.js --fix", check: "npm run jshint && npm run jscs", ci: "npm run nyc && npm run nsp", coverage: "nyc npm test", jsdoc: "jsdoc -r lib -d docs", nsp: 'if [ `npm --version | cut -d\'.\' -f1` -ge "6" ]; then npm audit --production; else echo "npm audit is not available for npm < 6.0"; fi', nyc: "if [ `node --version | cut -d'.' -f1 | cut -c2-` -ge \"8\" ]; then npm run coverage; else npm test; fi", tsc: "tsc -p tsconfig.cjs.json", "tsc:esm": "tsc -p tsconfig.esm.json", build: "node build.js" }, files: [ "dist", "lib", "src", "index.js", "index.d.ts", "compatibility-api.d.ts" ], main: "dist/index.node.js", exports: { require: "./dist/index.node.js", default: "./dist/index.node.mjs" }, types: "./compatibility-api.d.ts", engines: { node: ">=12" } }; } }); // lib/base/RestException.js var require_RestException = __commonJS({ "lib/base/RestException.js"(exports, module) { "use strict"; var RestException = class extends Error { constructor(response) { super("[HTTP " + response.statusCode + "] Failed to execute request"); const body = typeof response.body === "string" ? JSON.parse(response.body) : response.body; this.status = response.statusCode; this.message = body.message; this.code = body.code; this.moreInfo = body.more_info; this.details = body.details; } }; module.exports = RestException; } }); // lib/http/response.js var require_response = __commonJS({ "lib/http/response.js"(exports, module) { "use strict"; var Response = function(statusCode, body, headers) { this.statusCode = statusCode; this.body = body; this.headers = headers; }; Response.prototype.toString = function() { return "HTTP " + this.statusCode + " " + this.body; }; module.exports = Response; } }); // lib/http/request.js var require_request = __commonJS({ "lib/http/request.js"(exports, module) { "use strict"; var _ = __require("lodash"); var Request = function(opts) { opts = opts || {}; this.method = opts.method || this.ANY; this.url = opts.url || this.ANY; this.auth = opts.auth || this.ANY; this.params = opts.params || this.ANY; this.data = opts.data || this.ANY; this.headers = opts.headers || this.ANY; this.ca = opts.ca; }; Request.prototype.ANY = "*"; Request.prototype.attributeEqual = function(lhs, rhs) { if (lhs === this.ANY || rhs === this.ANY) { return true; } lhs = lhs || void 0; rhs = rhs || void 0; return _.isEqual(lhs, rhs); }; Request.prototype.isEqual = function(other) { return this.attributeEqual(this.method, other.method) && this.attributeEqual(this.url, other.url) && this.attributeEqual(this.auth, other.auth) && this.attributeEqual(this.params, other.params) && this.attributeEqual(this.data, other.data) && this.attributeEqual(this.headers, other.headers); }; Request.prototype.toString = function() { var auth = ""; if (this.auth && this.auth !== this.ANY) { auth = this.auth + " "; } var params = ""; if (this.params && this.params !== this.ANY) { params = "?" + _.join(_.chain(_.keys(this.params)).map(function(key) { return key + "=" + this.params[key]; }.bind(this)).value(), "&"); } var data = ""; if (this.data && this.data !== this.ANY) { if (this.method === "GET") { data = "\n -G"; } data = data + "\n" + _.join( _.map(this.data, function(value, key) { return " -d " + key + "=" + value; }), "\n" ); } var headers = ""; if (this.headers && this.headers !== this.ANY) { headers = "\n" + _.join( _.map(this.headers, function(value, key) { return " -H " + key + "=" + value; }), "\n" ); } return auth + this.method + " " + this.url + params + data + headers; }; module.exports = Request; } }); // lib/base/RequestClient.js var require_RequestClient = __commonJS({ "lib/base/RequestClient.js"(exports, module) { "use strict"; var _ = __require("lodash"); var axios = __require("axios"); var fs = __require("fs"); var HttpsProxyAgent = __require("https-proxy-agent"); var Q = __require("q"); var qs = __require("qs"); var Response = require_response(); var Request = require_request(); axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; var RequestClient = function() { }; RequestClient.prototype.request = function(opts) { opts = opts || {}; if (!opts.method) { throw new Error("http method is required"); } if (!opts.uri) { throw new Error("uri is required"); } var deferred = Q.defer(); var headers = opts.headers || {}; if (!headers.Connection && !headers.connection && opts.forever) { headers.Connection = "keep-alive"; } else if (!headers.Connection && !headers.connection) { headers.Connection = "close"; } if (opts.username && opts.password) { var b64Auth = Buffer.from(opts.username + ":" + opts.password).toString("base64"); headers.Authorization = "Basic " + b64Auth; } var options = { timeout: opts.timeout || 3e4, maxRedirects: opts.allowRedirects ? 10 : 0, // Same number of allowed redirects as request module default url: opts.uri, method: opts.method, headers: opts.headers, httpsAgent: process.env.HTTP_PROXY ? new HttpsProxyAgent(process.env.HTTP_PROXY) : void 0, proxy: false, validateStatus: (status) => status >= 100 && status < 600 }; if (process.env.TWILIO_CA_BUNDLE !== void 0) { if (this.ca === void 0) { this.ca = fs.readFileSync(process.env.TWILIO_CA_BUNDLE); } options.ca = this.ca; } if (!_.isNull(opts.data)) { options.data = qs.stringify(opts.data, { arrayFormat: "repeat" }); } if (!_.isNull(opts.params)) { options.params = opts.params; options.paramsSerializer = (params) => { return qs.stringify(params, { arrayFormat: "repeat" }); }; } var optionsRequest = { method: options.method, url: options.url, auth: b64Auth || null, params: options.params, data: opts.data, headers: options.headers, ca: options.ca }; if (opts.logLevel === "debug") { this.logRequest(options); } var _this = this; this.lastResponse = void 0; this.lastRequest = new Request(optionsRequest); axios(options).then((response) => { if (opts.logLevel === "debug") { console.log(`response.statusCode: ${response.status}`); console.log(`response.headers: ${JSON.stringify(response.headers)}`); } _this.lastResponse = new Response(response.status, response.data, response.headers); deferred.resolve({ statusCode: response.status, body: response.data, headers: response.headers }); }).catch((error) => { _this.lastResponse = void 0; deferred.reject(error); }); return deferred.promise; }; RequestClient.prototype.filterLoggingHeaders = function(headers) { return Object.keys(headers).filter((header) => { return !"authorization".includes(header.toLowerCase()); }); }; RequestClient.prototype.logRequest = function(options) { console.log("-- BEGIN Twilio API Request --"); console.log(`${options.method} ${options.url}`); if (options.params) { console.log("Querystring:"); console.log(options.params); } if (options.headers) { console.log("Headers:"); const filteredHeaderKeys = this.filterLoggingHeaders(options.headers); filteredHeaderKeys.forEach((header) => console.log(`${header}: ${options.headers[header]}`)); } console.log("-- END Twilio API Request --"); }; module.exports = RequestClient; } }); // lib/base/Domain.js var require_Domain = __commonJS({ "lib/base/Domain.js"(exports, module) { "use strict"; var _ = __require("lodash"); function Domain(twilio3, baseUrl) { this.twilio = twilio3; this.baseUrl = baseUrl; } Domain.prototype.absoluteUrl = function(uri) { return _.trim(this.baseUrl, "/") + "/" + _.trim(uri, "/"); }; Domain.prototype.request = function(opts) { return this.twilio.request(_.assign({}, opts, { uri: this.absoluteUrl(opts.uri) })); }; module.exports = Domain; } }); // lib/base/Page.js var require_Page = __commonJS({ "lib/base/Page.js"(exports, module) { "use strict"; var _ = __require("lodash"); var RestException = require_RestException(); function Page(version, response, solution) { var payload = this.processResponse(response); this._version = version; this._payload = payload; this._solution = solution; this.nextPageUrl = this.getNextPageUrl(); this.previousPageUrl = this.getPreviousPageUrl(); this.instances = this.loadInstances(this.loadPage(payload)); } Page.prototype.META_KEYS = [ "end", "first_page_uri", "last_page_uri", "next_page_uri", "num_pages", "page", "page_size", "previous_page_uri", "start", "total", "uri" ]; Page.prototype.getPreviousPageUrl = function() { if ("meta" in this._payload && "previous_page_url" in this._payload.meta && this._payload.meta.previous_page_url) { return this._payload.meta.previous_page_url; } if ("previous_page_uri" in this._payload && this._payload.previous_page_uri) { return this._version._domain.absoluteUrl(this._payload.previous_page_uri); } return void 0; }; Page.prototype.getNextPageUrl = function() { if ("meta" in this._payload && "next_page_url" in this._payload.meta && this._payload.meta.next_page_url) { return this._payload.meta.next_page_url; } if ("next_page_uri" in this._payload && this._payload.next_page_uri) { return this._version._domain.absoluteUrl(this._payload.next_page_uri); } return void 0; }; Page.prototype.getInstance = function(payload) { throw new Error("Page.get_instance() must be implemented in the derived class"); }; Page.prototype.loadInstances = function(resources) { return _.map(resources, function(resource) { return this.getInstance(resource); }.bind(this)); }; Page.prototype.nextPage = function() { if (!this.nextPageUrl) { return void 0; } var promise = this._version._domain.twilio.request({ method: "GET", uri: this.nextPageUrl }); promise = promise.then(function(response) { return new this.constructor(this._version, response, this._solution); }.bind(this)); return promise; }; Page.prototype.previousPage = function() { if (!this.previousPageUrl) { return void 0; } var promise = this._version._domain.twilio.request({ method: "GET", uri: this.previousPageUrl }); promise = promise.then(function(response) { return new this.constructor(this._version, response, this._solution); }.bind(this)); return promise; }; Page.prototype.processResponse = function(response) { if (response.statusCode !== 200) { throw new RestException(response); } if (typeof response.body === "string") { return JSON.parse(response.body); } return response.body; }; Page.prototype.loadPage = function(payload) { if ("meta" in payload && "key" in payload.meta) { return payload[payload.meta.key]; } var keys = _.chain(payload).keys().difference(this.META_KEYS).value(); if (keys.length === 1) { return payload[keys[0]]; } throw new Error("Page Records cannot be deserialized"); }; module.exports = Page; } }); // lib/base/deserialize.js var require_deserialize = __commonJS({ "lib/base/deserialize.js"(exports, module) { "use strict"; var _ = __require("lodash"); var dayjs = __require("dayjs"); var utc = __require("dayjs/plugin/utc"); dayjs.extend(utc); function parseDate(s, format) { var m = dayjs.utc(s, format); if (m.isValid()) { return m.toDate(); } return s; } function parseNumber(n, parser) { var parsed = parser(n); if (isNaN(parsed)) { return n; } return parsed; } function iso8601Date(s) { return parseDate(s, "YYYY-MM-DD"); } function iso8601DateTime(s) { return parseDate(s, "YYYY-MM-DD[T]HH:mm:ss[Z]"); } function rfc2822DateTime(s) { return parseDate(s, "ddd, DD MMM YYYY HH:mm:ss [+0000]"); } function decimal(d) { return parseNumber(d, parseFloat); } function integer(i) { return parseNumber(i, _.parseInt); } module.exports = { iso8601Date, iso8601DateTime, rfc2822DateTime, decimal, integer }; } }); // lib/base/values.js var require_values = __commonJS({ "lib/base/values.js"(exports, module) { "use strict"; var _ = __require("lodash"); function of(obj) { return _.omitBy(obj, _.isUndefined); } module.exports = { of }; } }); // lib/rest/accounts/v1/authTokenPromotion.js var require_authTokenPromotion = __commonJS({ "lib/rest/accounts/v1/authTokenPromotion.js"(exports, module) { "use strict"; var Q = __require("q"); var _ = __require("lodash"); var util = __require("util"); var Page = require_Page(); var deserialize = require_deserialize(); var values = require_values(); var AuthTokenPromotionList; var AuthTokenPromotionPage; var AuthTokenPromotionInstance; var AuthTokenPromotionContext; AuthTokenPromotionList = function AuthTokenPromotionList2(version) { function AuthTokenPromotionListInstance(sid) { return AuthTokenPromotionListInstance.get(sid); } AuthTokenPromotionListInstance._version = version; AuthTokenPromotionListInstance._solution = {}; AuthTokenPromotionListInstance.get = function get() { return new AuthTokenPromotionContext(this._version); }; AuthTokenPromotionListInstance.toJSON = function toJSON() { return this._solution; }; AuthTokenPromotionListInstance[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; return AuthTokenPromotionListInstance; }; AuthTokenPromotionPage = function AuthTokenPromotionPage2(version, response, solution) { this._solution = solution; Page.prototype.constructor.call(this, version, response, this._solution); }; _.extend(AuthTokenPromotionPage.prototype, Page.prototype); AuthTokenPromotionPage.prototype.constructor = AuthTokenPromotionPage; AuthTokenPromotionPage.prototype.getInstance = function getInstance(payload) { return new AuthTokenPromotionInstance(this._version, payload); }; AuthTokenPromotionPage.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; AuthTokenPromotionPage.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; AuthTokenPromotionInstance = function AuthTokenPromotionInstance2(version, payload) { this._version = version; this.accountSid = payload.account_sid; this.authToken = payload.auth_token; this.dateCreated = deserialize.iso8601DateTime(payload.date_created); this.dateUpdated = deserialize.iso8601DateTime(payload.date_updated); this.url = payload.url; this._context = void 0; this._solution = {}; }; Object.defineProperty( AuthTokenPromotionInstance.prototype, "_proxy", { get: function() { if (!this._context) { this._context = new AuthTokenPromotionContext(this._version); } return this._context; } } ); AuthTokenPromotionInstance.prototype.update = function update(callback) { return this._proxy.update(callback); }; AuthTokenPromotionInstance.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; AuthTokenPromotionInstance.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; AuthTokenPromotionContext = function AuthTokenPromotionContext2(version) { this._version = version; this._solution = {}; this._uri = `/AuthTokens/Promote`; }; AuthTokenPromotionContext.prototype.update = function update(callback) { var deferred = Q.defer(); var promise = this._version.update({ uri: this._uri, method: "POST" }); promise = promise.then(function(payload) { deferred.resolve(new AuthTokenPromotionInstance(this._version, payload)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AuthTokenPromotionContext.prototype.toJSON = function toJSON() { return this._solution; }; AuthTokenPromotionContext.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; module.exports = { AuthTokenPromotionList, AuthTokenPromotionPage, AuthTokenPromotionInstance, AuthTokenPromotionContext }; } }); // lib/rest/accounts/v1/credential/aws.js var require_aws = __commonJS({ "lib/rest/accounts/v1/credential/aws.js"(exports, module) { "use strict"; var Q = __require("q"); var _ = __require("lodash"); var util = __require("util"); var Page = require_Page(); var deserialize = require_deserialize(); var values = require_values(); var AwsList; var AwsPage; var AwsInstance; var AwsContext; AwsList = function AwsList2(version) { function AwsListInstance(sid) { return AwsListInstance.get(sid); } AwsListInstance._version = version; AwsListInstance._solution = {}; AwsListInstance._uri = `/Credentials/AWS`; AwsListInstance.each = function each(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; if (opts.callback) { callback = opts.callback; } if (_.isUndefined(callback)) { throw new Error("Callback function must be provided"); } var done = false; var currentPage = 1; var currentResource = 0; var limits = this._version.readLimits({ limit: opts.limit, pageSize: opts.pageSize }); function onComplete(error) { done = true; if (_.isFunction(opts.done)) { opts.done(error); } } function fetchNextPage(fn) { var promise = fn(); if (_.isUndefined(promise)) { onComplete(); return; } promise.then(function(page) { _.each(page.instances, function(instance) { if (done || !_.isUndefined(opts.limit) && currentResource >= opts.limit) { done = true; return false; } currentResource++; callback(instance, onComplete); }); if (!done) { currentPage++; fetchNextPage(_.bind(page.nextPage, page)); } else { onComplete(); } }); promise.catch(onComplete); } fetchNextPage(_.bind(this.page, this, _.merge(opts, limits))); }; AwsListInstance.list = function list(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var allResources = []; opts.callback = function(resource, done) { allResources.push(resource); if (!_.isUndefined(opts.limit) && allResources.length === opts.limit) { done(); } }; opts.done = function(error) { if (_.isUndefined(error)) { deferred.resolve(allResources); } else { deferred.reject(error); } }; if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } this.each(opts); return deferred.promise; }; AwsListInstance.page = function page(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var data = values.of({ "PageToken": opts.pageToken, "Page": opts.pageNumber, "PageSize": opts.pageSize }); var promise = this._version.page({ uri: this._uri, method: "GET", params: data }); promise = promise.then(function(payload) { deferred.resolve(new AwsPage(this._version, payload, this._solution)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsListInstance.getPage = function getPage(targetUrl, callback) { var deferred = Q.defer(); var promise = this._version._domain.twilio.request({ method: "GET", uri: targetUrl }); promise = promise.then(function(payload) { deferred.resolve(new AwsPage(this._version, payload, this._solution)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsListInstance.create = function create(opts, callback) { if (_.isUndefined(opts)) { throw new Error('Required parameter "opts" missing.'); } if (_.isUndefined(opts["credentials"])) { throw new Error(`Required parameter "opts['credentials']" missing.`); } var deferred = Q.defer(); var data = values.of({ "Credentials": _.get(opts, "credentials"), "FriendlyName": _.get(opts, "friendlyName"), "AccountSid": _.get(opts, "accountSid") }); var promise = this._version.create({ uri: this._uri, method: "POST", data }); promise = promise.then(function(payload) { deferred.resolve(new AwsInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsListInstance.get = function get(sid) { return new AwsContext(this._version, sid); }; AwsListInstance.toJSON = function toJSON() { return this._solution; }; AwsListInstance[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; return AwsListInstance; }; AwsPage = function AwsPage2(version, response, solution) { this._solution = solution; Page.prototype.constructor.call(this, version, response, this._solution); }; _.extend(AwsPage.prototype, Page.prototype); AwsPage.prototype.constructor = AwsPage; AwsPage.prototype.getInstance = function getInstance(payload) { return new AwsInstance(this._version, payload); }; AwsPage.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; AwsPage.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; AwsInstance = function AwsInstance2(version, payload, sid) { this._version = version; this.sid = payload.sid; this.accountSid = payload.account_sid; this.friendlyName = payload.friendly_name; this.dateCreated = deserialize.iso8601DateTime(payload.date_created); this.dateUpdated = deserialize.iso8601DateTime(payload.date_updated); this.url = payload.url; this._context = void 0; this._solution = { sid: sid || this.sid }; }; Object.defineProperty( AwsInstance.prototype, "_proxy", { get: function() { if (!this._context) { this._context = new AwsContext(this._version, this._solution.sid); } return this._context; } } ); AwsInstance.prototype.fetch = function fetch(callback) { return this._proxy.fetch(callback); }; AwsInstance.prototype.update = function update(opts, callback) { return this._proxy.update(opts, callback); }; AwsInstance.prototype.remove = function remove(callback) { return this._proxy.remove(callback); }; AwsInstance.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; AwsInstance.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; AwsContext = function AwsContext2(version, sid) { this._version = version; this._solution = { sid }; this._uri = `/Credentials/AWS/${sid}`; }; AwsContext.prototype.fetch = function fetch(callback) { var deferred = Q.defer(); var promise = this._version.fetch({ uri: this._uri, method: "GET" }); promise = promise.then(function(payload) { deferred.resolve(new AwsInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsContext.prototype.update = function update(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var data = values.of({ "FriendlyName": _.get(opts, "friendlyName") }); var promise = this._version.update({ uri: this._uri, method: "POST", data }); promise = promise.then(function(payload) { deferred.resolve(new AwsInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsContext.prototype.remove = function remove(callback) { var deferred = Q.defer(); var promise = this._version.remove({ uri: this._uri, method: "DELETE" }); promise = promise.then(function(payload) { deferred.resolve(payload); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; AwsContext.prototype.toJSON = function toJSON() { return this._solution; }; AwsContext.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; module.exports = { AwsList, AwsPage, AwsInstance, AwsContext }; } }); // lib/rest/accounts/v1/credential/publicKey.js var require_publicKey = __commonJS({ "lib/rest/accounts/v1/credential/publicKey.js"(exports, module) { "use strict"; var Q = __require("q"); var _ = __require("lodash"); var util = __require("util"); var Page = require_Page(); var deserialize = require_deserialize(); var values = require_values(); var PublicKeyList; var PublicKeyPage; var PublicKeyInstance; var PublicKeyContext; PublicKeyList = function PublicKeyList2(version) { function PublicKeyListInstance(sid) { return PublicKeyListInstance.get(sid); } PublicKeyListInstance._version = version; PublicKeyListInstance._solution = {}; PublicKeyListInstance._uri = `/Credentials/PublicKeys`; PublicKeyListInstance.each = function each(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; if (opts.callback) { callback = opts.callback; } if (_.isUndefined(callback)) { throw new Error("Callback function must be provided"); } var done = false; var currentPage = 1; var currentResource = 0; var limits = this._version.readLimits({ limit: opts.limit, pageSize: opts.pageSize }); function onComplete(error) { done = true; if (_.isFunction(opts.done)) { opts.done(error); } } function fetchNextPage(fn) { var promise = fn(); if (_.isUndefined(promise)) { onComplete(); return; } promise.then(function(page) { _.each(page.instances, function(instance) { if (done || !_.isUndefined(opts.limit) && currentResource >= opts.limit) { done = true; return false; } currentResource++; callback(instance, onComplete); }); if (!done) { currentPage++; fetchNextPage(_.bind(page.nextPage, page)); } else { onComplete(); } }); promise.catch(onComplete); } fetchNextPage(_.bind(this.page, this, _.merge(opts, limits))); }; PublicKeyListInstance.list = function list(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var allResources = []; opts.callback = function(resource, done) { allResources.push(resource); if (!_.isUndefined(opts.limit) && allResources.length === opts.limit) { done(); } }; opts.done = function(error) { if (_.isUndefined(error)) { deferred.resolve(allResources); } else { deferred.reject(error); } }; if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } this.each(opts); return deferred.promise; }; PublicKeyListInstance.page = function page(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var data = values.of({ "PageToken": opts.pageToken, "Page": opts.pageNumber, "PageSize": opts.pageSize }); var promise = this._version.page({ uri: this._uri, method: "GET", params: data }); promise = promise.then(function(payload) { deferred.resolve(new PublicKeyPage(this._version, payload, this._solution)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyListInstance.getPage = function getPage(targetUrl, callback) { var deferred = Q.defer(); var promise = this._version._domain.twilio.request({ method: "GET", uri: targetUrl }); promise = promise.then(function(payload) { deferred.resolve(new PublicKeyPage(this._version, payload, this._solution)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyListInstance.create = function create(opts, callback) { if (_.isUndefined(opts)) { throw new Error('Required parameter "opts" missing.'); } if (_.isUndefined(opts["publicKey"])) { throw new Error(`Required parameter "opts['publicKey']" missing.`); } var deferred = Q.defer(); var data = values.of({ "PublicKey": _.get(opts, "publicKey"), "FriendlyName": _.get(opts, "friendlyName"), "AccountSid": _.get(opts, "accountSid") }); var promise = this._version.create({ uri: this._uri, method: "POST", data }); promise = promise.then(function(payload) { deferred.resolve(new PublicKeyInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyListInstance.get = function get(sid) { return new PublicKeyContext(this._version, sid); }; PublicKeyListInstance.toJSON = function toJSON() { return this._solution; }; PublicKeyListInstance[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; return PublicKeyListInstance; }; PublicKeyPage = function PublicKeyPage2(version, response, solution) { this._solution = solution; Page.prototype.constructor.call(this, version, response, this._solution); }; _.extend(PublicKeyPage.prototype, Page.prototype); PublicKeyPage.prototype.constructor = PublicKeyPage; PublicKeyPage.prototype.getInstance = function getInstance(payload) { return new PublicKeyInstance(this._version, payload); }; PublicKeyPage.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; PublicKeyPage.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; PublicKeyInstance = function PublicKeyInstance2(version, payload, sid) { this._version = version; this.sid = payload.sid; this.accountSid = payload.account_sid; this.friendlyName = payload.friendly_name; this.dateCreated = deserialize.iso8601DateTime(payload.date_created); this.dateUpdated = deserialize.iso8601DateTime(payload.date_updated); this.url = payload.url; this._context = void 0; this._solution = { sid: sid || this.sid }; }; Object.defineProperty( PublicKeyInstance.prototype, "_proxy", { get: function() { if (!this._context) { this._context = new PublicKeyContext(this._version, this._solution.sid); } return this._context; } } ); PublicKeyInstance.prototype.fetch = function fetch(callback) { return this._proxy.fetch(callback); }; PublicKeyInstance.prototype.update = function update(opts, callback) { return this._proxy.update(opts, callback); }; PublicKeyInstance.prototype.remove = function remove(callback) { return this._proxy.remove(callback); }; PublicKeyInstance.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; PublicKeyInstance.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; PublicKeyContext = function PublicKeyContext2(version, sid) { this._version = version; this._solution = { sid }; this._uri = `/Credentials/PublicKeys/${sid}`; }; PublicKeyContext.prototype.fetch = function fetch(callback) { var deferred = Q.defer(); var promise = this._version.fetch({ uri: this._uri, method: "GET" }); promise = promise.then(function(payload) { deferred.resolve(new PublicKeyInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyContext.prototype.update = function update(opts, callback) { if (_.isFunction(opts)) { callback = opts; opts = {}; } opts = opts || {}; var deferred = Q.defer(); var data = values.of({ "FriendlyName": _.get(opts, "friendlyName") }); var promise = this._version.update({ uri: this._uri, method: "POST", data }); promise = promise.then(function(payload) { deferred.resolve(new PublicKeyInstance(this._version, payload, this._solution.sid)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyContext.prototype.remove = function remove(callback) { var deferred = Q.defer(); var promise = this._version.remove({ uri: this._uri, method: "DELETE" }); promise = promise.then(function(payload) { deferred.resolve(payload); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; PublicKeyContext.prototype.toJSON = function toJSON() { return this._solution; }; PublicKeyContext.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; module.exports = { PublicKeyList, PublicKeyPage, PublicKeyInstance, PublicKeyContext }; } }); // lib/rest/accounts/v1/credential.js var require_credential = __commonJS({ "lib/rest/accounts/v1/credential.js"(exports, module) { "use strict"; var _ = __require("lodash"); var util = __require("util"); var AwsList = require_aws().AwsList; var PublicKeyList = require_publicKey().PublicKeyList; var CredentialList; CredentialList = function CredentialList2(version) { function CredentialListInstance(sid) { return CredentialListInstance.get(sid); } CredentialListInstance._version = version; CredentialListInstance._solution = {}; CredentialListInstance._publicKey = void 0; CredentialListInstance._aws = void 0; Object.defineProperty( CredentialListInstance, "publicKey", { get: function publicKey() { if (!this._publicKey) { this._publicKey = new PublicKeyList(this._version); } return this._publicKey; } } ); Object.defineProperty( CredentialListInstance, "aws", { get: function aws() { if (!this._aws) { this._aws = new AwsList(this._version); } return this._aws; } } ); CredentialListInstance.toJSON = function toJSON() { return this._solution; }; CredentialListInstance[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; return CredentialListInstance; }; module.exports = { CredentialList }; } }); // lib/rest/accounts/v1/secondaryAuthToken.js var require_secondaryAuthToken = __commonJS({ "lib/rest/accounts/v1/secondaryAuthToken.js"(exports, module) { "use strict"; var Q = __require("q"); var _ = __require("lodash"); var util = __require("util"); var Page = require_Page(); var deserialize = require_deserialize(); var values = require_values(); var SecondaryAuthTokenList; var SecondaryAuthTokenPage; var SecondaryAuthTokenInstance; var SecondaryAuthTokenContext; SecondaryAuthTokenList = function SecondaryAuthTokenList2(version) { function SecondaryAuthTokenListInstance(sid) { return SecondaryAuthTokenListInstance.get(sid); } SecondaryAuthTokenListInstance._version = version; SecondaryAuthTokenListInstance._solution = {}; SecondaryAuthTokenListInstance.get = function get() { return new SecondaryAuthTokenContext(this._version); }; SecondaryAuthTokenListInstance.toJSON = function toJSON() { return this._solution; }; SecondaryAuthTokenListInstance[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; return SecondaryAuthTokenListInstance; }; SecondaryAuthTokenPage = function SecondaryAuthTokenPage2(version, response, solution) { this._solution = solution; Page.prototype.constructor.call(this, version, response, this._solution); }; _.extend(SecondaryAuthTokenPage.prototype, Page.prototype); SecondaryAuthTokenPage.prototype.constructor = SecondaryAuthTokenPage; SecondaryAuthTokenPage.prototype.getInstance = function getInstance(payload) { return new SecondaryAuthTokenInstance(this._version, payload); }; SecondaryAuthTokenPage.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; SecondaryAuthTokenPage.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; SecondaryAuthTokenInstance = function SecondaryAuthTokenInstance2(version, payload) { this._version = version; this.accountSid = payload.account_sid; this.dateCreated = deserialize.iso8601DateTime(payload.date_created); this.dateUpdated = deserialize.iso8601DateTime(payload.date_updated); this.secondaryAuthToken = payload.secondary_auth_token; this.url = payload.url; this._context = void 0; this._solution = {}; }; Object.defineProperty( SecondaryAuthTokenInstance.prototype, "_proxy", { get: function() { if (!this._context) { this._context = new SecondaryAuthTokenContext(this._version); } return this._context; } } ); SecondaryAuthTokenInstance.prototype.create = function create(callback) { return this._proxy.create(callback); }; SecondaryAuthTokenInstance.prototype.remove = function remove(callback) { return this._proxy.remove(callback); }; SecondaryAuthTokenInstance.prototype.toJSON = function toJSON() { let clone = {}; _.forOwn(this, function(value, key) { if (!_.startsWith(key, "_") && !_.isFunction(value)) { clone[key] = value; } }); return clone; }; SecondaryAuthTokenInstance.prototype[util.inspect.custom] = function inspect(depth, options) { return util.inspect(this.toJSON(), options); }; SecondaryAuthTokenContext = function SecondaryAuthTokenContext2(version) { this._version = version; this._solution = {}; this._uri = `/AuthTokens/Secondary`; }; SecondaryAuthTokenContext.prototype.create = function create(callback) { var deferred = Q.defer(); var promise = this._version.create({ uri: this._uri, method: "POST" }); promise = promise.then(function(payload) { deferred.resolve(new SecondaryAuthTokenInstance(this._version, payload)); }.bind(this)); promise.catch(function(error) { deferred.reject(error); }); if (_.isFunction(callback)) { deferred.promise.nodeify(callback); } return deferred.promise; }; SecondaryAuthTokenContext.prototype.remove = function remove(callback) { var deferred = Q.defer(); var promise = this._version.remove({ uri: this._uri, method: "DELETE" }); promise = promise.then(function(payload)