@vonage/server-client
Advanced tools
Comparing version 1.12.1 to 1.13.0
@@ -1,10 +0,16 @@ | ||
import fetch from 'node-fetch'; | ||
import AbortError from 'node-fetch'; | ||
import { Auth } from '@vonage/auth'; | ||
import { ResponseTypes, HTTPMethods, ContentType, VetchError, } from '@vonage/vetch'; | ||
import { AuthenticationType } from './enums'; | ||
import { camelCaseObjectKeys, kebabCaseObjectKeys, snakeCaseObjectKeys, omit, } from './transformers'; | ||
import debug from 'debug'; | ||
const log = debug('vonage:server-client'); | ||
export class Client { | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Client = void 0; | ||
const node_fetch_1 = __importDefault(require("node-fetch")); | ||
const node_fetch_2 = __importDefault(require("node-fetch")); | ||
const auth_1 = require("@vonage/auth"); | ||
const vetch_1 = require("@vonage/vetch"); | ||
const enums_1 = require("./enums"); | ||
const transformers_1 = require("./transformers"); | ||
const debug_1 = __importDefault(require("debug")); | ||
const log = (0, debug_1.default)('vonage:server-client'); | ||
class Client { | ||
/** | ||
@@ -14,6 +20,6 @@ * Static property containing utility transformers. | ||
static transformers = { | ||
'camelCaseObjectKeys': camelCaseObjectKeys, | ||
'snakeCaseObjectKeys': snakeCaseObjectKeys, | ||
'kebabCaseObjectKeys': kebabCaseObjectKeys, | ||
'omit': omit, | ||
'camelCaseObjectKeys': transformers_1.camelCaseObjectKeys, | ||
'snakeCaseObjectKeys': transformers_1.snakeCaseObjectKeys, | ||
'kebabCaseObjectKeys': transformers_1.kebabCaseObjectKeys, | ||
'omit': transformers_1.omit, | ||
}; | ||
@@ -23,3 +29,3 @@ /** | ||
*/ | ||
authType = AuthenticationType.QUERY_KEY_SECRET; | ||
authType = enums_1.AuthenticationType.QUERY_KEY_SECRET; | ||
/** | ||
@@ -41,3 +47,3 @@ * The authentication instance responsible for generating authentication headers and query parameters. | ||
this.auth = !Object.prototype.hasOwnProperty.call(credentials, 'getQueryParams') | ||
? new Auth(credentials) | ||
? new auth_1.Auth(credentials) | ||
: credentials; | ||
@@ -50,3 +56,3 @@ this.config = { | ||
proactiveHost: options?.proactiveHost || 'https://api-eu.vonage.com', | ||
responseType: options?.responseType || ResponseTypes.json, | ||
responseType: options?.responseType || vetch_1.ResponseTypes.json, | ||
timeout: options?.timeout || null, | ||
@@ -63,7 +69,7 @@ }; | ||
log(`adding ${this.authType || 'api key/secret'} to request`); | ||
if (!Object.values(AuthenticationType).includes(this.authType)) { | ||
if (!Object.values(enums_1.AuthenticationType).includes(this.authType)) { | ||
throw new Error('No authentication type set'); | ||
} | ||
switch (this.authType) { | ||
case AuthenticationType.BASIC: | ||
case enums_1.AuthenticationType.BASIC: | ||
request.headers = Object.assign({}, request.headers, { | ||
@@ -73,3 +79,3 @@ Authorization: await this.auth.createBasicHeader(), | ||
return request; | ||
case AuthenticationType.JWT: | ||
case enums_1.AuthenticationType.JWT: | ||
request.headers = Object.assign({}, request.headers, { | ||
@@ -80,3 +86,3 @@ Authorization: await this.auth.createBearerHeader(), | ||
} | ||
if (this.authType === AuthenticationType.QUERY_KEY_SECRET) { | ||
if (this.authType === enums_1.AuthenticationType.QUERY_KEY_SECRET) { | ||
log('adding parameters to query string'); | ||
@@ -111,3 +117,3 @@ request.params = { | ||
url, | ||
method: HTTPMethods.DELETE, | ||
method: vetch_1.HTTPMethods.DELETE, | ||
}; | ||
@@ -126,4 +132,4 @@ return await this.sendRequest(request); | ||
url, | ||
method: HTTPMethods.POST, | ||
type: ContentType.FORM_URLENCODED, | ||
method: vetch_1.HTTPMethods.POST, | ||
type: vetch_1.ContentType.FORM_URLENCODED, | ||
headers: { Accept: 'application/json' }, | ||
@@ -144,3 +150,3 @@ ...(payload ? { data: payload } : {}), | ||
url, | ||
method: HTTPMethods.GET, | ||
method: vetch_1.HTTPMethods.GET, | ||
...(queryParams ? { params: queryParams } : {}), | ||
@@ -158,3 +164,3 @@ }; | ||
async sendPatchRequest(url, payload) { | ||
return this.sendRequestWithData(HTTPMethods.PATCH, url, payload); | ||
return this.sendRequestWithData(vetch_1.HTTPMethods.PATCH, url, payload); | ||
} | ||
@@ -169,3 +175,3 @@ /** | ||
async sendPostRequest(url, payload) { | ||
return this.sendRequestWithData(HTTPMethods.POST, url, payload); | ||
return this.sendRequestWithData(vetch_1.HTTPMethods.POST, url, payload); | ||
} | ||
@@ -180,3 +186,3 @@ /** | ||
sendPutRequest(url, payload) { | ||
return this.sendRequestWithData(HTTPMethods.PUT, url, payload); | ||
return this.sendRequestWithData(vetch_1.HTTPMethods.PUT, url, payload); | ||
} | ||
@@ -195,3 +201,3 @@ /** | ||
method: method, | ||
type: ContentType.JSON, | ||
type: vetch_1.ContentType.JSON, | ||
...(payload ? { data: payload } : {}), | ||
@@ -224,6 +230,6 @@ }; | ||
log('Sending request', fetcRequest); | ||
return await this.parseResponse(request, await fetch(request.url, fetcRequest)); | ||
return await this.parseResponse(request, await (0, node_fetch_1.default)(request.url, fetcRequest)); | ||
} | ||
catch (error) { | ||
if (error instanceof AbortError) { | ||
if (error instanceof node_fetch_2.default) { | ||
log(`Request timed out after ${timeout}`); | ||
@@ -253,7 +259,7 @@ } | ||
switch (request.type) { | ||
case ContentType.FORM_URLENCODED: | ||
request.headers['content-type'] = ContentType.FORM_URLENCODED; | ||
case vetch_1.ContentType.FORM_URLENCODED: | ||
request.headers['content-type'] = vetch_1.ContentType.FORM_URLENCODED; | ||
break; | ||
case ContentType.JSON: | ||
request.headers['content-type'] = ContentType.JSON; | ||
case vetch_1.ContentType.JSON: | ||
request.headers['content-type'] = vetch_1.ContentType.JSON; | ||
break; | ||
@@ -284,6 +290,6 @@ } | ||
} | ||
if (request.type === ContentType.JSON) { | ||
if (request.type === vetch_1.ContentType.JSON) { | ||
return JSON.stringify(request.data); | ||
} | ||
if (request.type === ContentType.FORM_URLENCODED) { | ||
if (request.type === vetch_1.ContentType.FORM_URLENCODED) { | ||
const requestParams = new URLSearchParams(request.data); | ||
@@ -308,3 +314,3 @@ requestParams.sort(); | ||
log('Request failed', response); | ||
throw new VetchError(`Request failed with status code ${response.status}`, request, response); | ||
throw new vetch_1.VetchError(`Request failed with status code ${response.status}`, request, response); | ||
} | ||
@@ -315,3 +321,3 @@ log('Request succeeded'); | ||
switch (contentType) { | ||
case ContentType.FORM_URLENCODED: | ||
case vetch_1.ContentType.FORM_URLENCODED: | ||
log('Decoding form data'); | ||
@@ -322,3 +328,3 @@ decoded = response.body | ||
break; | ||
case ContentType.JSON: | ||
case vetch_1.ContentType.JSON: | ||
log('Decoding JSON'); | ||
@@ -348,2 +354,3 @@ decoded = await response.json(); | ||
} | ||
exports.Client = Client; | ||
//# sourceMappingURL=client.js.map |
@@ -0,1 +1,4 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.AuthenticationType = void 0; | ||
/** | ||
@@ -5,3 +8,3 @@ * Enum representing the different types of authentication methods | ||
*/ | ||
export var AuthenticationType; | ||
var AuthenticationType; | ||
(function (AuthenticationType) { | ||
@@ -29,3 +32,3 @@ /** | ||
AuthenticationType["SIGNATURE"] = "signature"; | ||
})(AuthenticationType || (AuthenticationType = {})); | ||
})(AuthenticationType || (exports.AuthenticationType = AuthenticationType = {})); | ||
//# sourceMappingURL=AuthenticationType.js.map |
@@ -0,1 +1,4 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.GenericErrors = void 0; | ||
/** | ||
@@ -5,3 +8,3 @@ * Enum representing the different types of generic error codes | ||
*/ | ||
export var GenericErrors; | ||
var GenericErrors; | ||
(function (GenericErrors) { | ||
@@ -120,3 +123,3 @@ /** | ||
GenericErrors["APPLICATION_SUSPENDED"] = "application-suspended"; | ||
})(GenericErrors || (GenericErrors = {})); | ||
})(GenericErrors || (exports.GenericErrors = GenericErrors = {})); | ||
//# sourceMappingURL=GenericErrorCodes.js.map |
@@ -1,3 +0,19 @@ | ||
export * from './AuthenticationType'; | ||
export * from './GenericErrorCodes'; | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("./AuthenticationType"), exports); | ||
__exportStar(require("./GenericErrorCodes"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -1,9 +0,15 @@ | ||
import { Client } from './client'; | ||
import { AuthenticationType } from './enums'; | ||
import debug from 'debug'; | ||
import { VetchError, HTTPMethods } from '@vonage/vetch'; | ||
import fetch from 'node-fetch'; | ||
import { createWriteStream } from 'fs'; | ||
import { pipeline } from 'stream/promises'; | ||
const log = debug('vonage:file-client'); | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.FileClient = void 0; | ||
const client_1 = require("./client"); | ||
const enums_1 = require("./enums"); | ||
const debug_1 = __importDefault(require("debug")); | ||
const vetch_1 = require("@vonage/vetch"); | ||
const node_fetch_1 = __importDefault(require("node-fetch")); | ||
const fs_1 = require("fs"); | ||
const promises_1 = require("stream/promises"); | ||
const log = (0, debug_1.default)('vonage:file-client'); | ||
/** | ||
@@ -14,4 +20,4 @@ * A client for downloading files from Vonage. | ||
*/ | ||
export class FileClient extends Client { | ||
authType = AuthenticationType.JWT; | ||
class FileClient extends client_1.Client { | ||
authType = enums_1.AuthenticationType.JWT; | ||
saveFilePath = ''; | ||
@@ -42,6 +48,6 @@ /** | ||
url: `${this.config.apiHost}/v1/files/${fileId}`, | ||
method: HTTPMethods.GET, | ||
method: vetch_1.HTTPMethods.GET, | ||
}); | ||
log('File download request', request); | ||
const response = await fetch(request.url, { | ||
const response = await (0, node_fetch_1.default)(request.url, { | ||
method: request.method, | ||
@@ -52,9 +58,10 @@ headers: request.headers, | ||
if (!response.ok) { | ||
throw new VetchError(`Unexpected response when downloading file: ${response.statusText}`, request); | ||
throw new vetch_1.VetchError(`Unexpected response when downloading file: ${response.statusText}`, request); | ||
} | ||
log(`Saving to ${path}`); | ||
await pipeline(response.body, createWriteStream(path)); | ||
await (0, promises_1.pipeline)(response.body, (0, fs_1.createWriteStream)(path)); | ||
log('File saved'); | ||
} | ||
} | ||
exports.FileClient = FileClient; | ||
//# sourceMappingURL=fileClient.js.map |
@@ -1,6 +0,22 @@ | ||
export * from './client'; | ||
export * from './enums/'; | ||
export * from './types/'; | ||
export * from './transformers'; | ||
export * from './fileClient'; | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("./client"), exports); | ||
__exportStar(require("./enums/"), exports); | ||
__exportStar(require("./types/"), exports); | ||
__exportStar(require("./transformers"), exports); | ||
__exportStar(require("./fileClient"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -1,5 +0,11 @@ | ||
import camelCase from 'lodash.camelcase'; | ||
import snakeCase from 'lodash.snakecase'; | ||
import kebabCase from 'lodash.kebabcase'; | ||
import isObject from 'lodash.isobject'; | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.omit = exports.kebabCaseObjectKeys = exports.snakeCaseObjectKeys = exports.camelCaseObjectKeys = exports.transformObjectKeys = void 0; | ||
const lodash_camelcase_1 = __importDefault(require("lodash.camelcase")); | ||
const lodash_snakecase_1 = __importDefault(require("lodash.snakecase")); | ||
const lodash_kebabcase_1 = __importDefault(require("lodash.kebabcase")); | ||
const lodash_isobject_1 = __importDefault(require("lodash.isobject")); | ||
/** | ||
@@ -14,3 +20,3 @@ * Transforms the keys of an object based on a provided transformation function. | ||
*/ | ||
export const transformObjectKeys = (transformFn, objectToTransform, deep = false, preserve = false) => { | ||
const transformObjectKeys = (transformFn, objectToTransform, deep = false, preserve = false) => { | ||
const transformedObject = { | ||
@@ -25,3 +31,3 @@ ...(preserve ? objectToTransform : {}), | ||
const value = objectToTransform[prop]; | ||
if (!deep || !isObject(value)) { | ||
if (!deep || !(0, lodash_isobject_1.default)(value)) { | ||
transformedObject[newKey] = value; | ||
@@ -31,11 +37,12 @@ continue; | ||
if (Array.isArray(value)) { | ||
transformedObject[newKey] = value.map((t) => isObject(t) | ||
? transformObjectKeys(transformFn, t, deep, preserve) | ||
transformedObject[newKey] = value.map((t) => (0, lodash_isobject_1.default)(t) | ||
? (0, exports.transformObjectKeys)(transformFn, t, deep, preserve) | ||
: t); | ||
continue; | ||
} | ||
transformedObject[newKey] = transformObjectKeys(transformFn, value, deep, preserve); | ||
transformedObject[newKey] = (0, exports.transformObjectKeys)(transformFn, value, deep, preserve); | ||
} | ||
return transformedObject; | ||
}; | ||
exports.transformObjectKeys = transformObjectKeys; | ||
/** | ||
@@ -49,3 +56,4 @@ * Transforms the keys of an object to camelCase. | ||
*/ | ||
export const camelCaseObjectKeys = (...rest) => transformObjectKeys(camelCase, ...rest); | ||
const camelCaseObjectKeys = (...rest) => (0, exports.transformObjectKeys)(lodash_camelcase_1.default, ...rest); | ||
exports.camelCaseObjectKeys = camelCaseObjectKeys; | ||
/** | ||
@@ -59,3 +67,4 @@ * Transforms the keys of an object to snake_case. | ||
*/ | ||
export const snakeCaseObjectKeys = (...rest) => transformObjectKeys(snakeCase, ...rest); | ||
const snakeCaseObjectKeys = (...rest) => (0, exports.transformObjectKeys)(lodash_snakecase_1.default, ...rest); | ||
exports.snakeCaseObjectKeys = snakeCaseObjectKeys; | ||
/** | ||
@@ -69,3 +78,4 @@ * Transforms the keys of an object to kebab-case. | ||
*/ | ||
export const kebabCaseObjectKeys = (...rest) => transformObjectKeys(kebabCase, ...rest); | ||
const kebabCaseObjectKeys = (...rest) => (0, exports.transformObjectKeys)(lodash_kebabcase_1.default, ...rest); | ||
exports.kebabCaseObjectKeys = kebabCaseObjectKeys; | ||
/** | ||
@@ -79,4 +89,5 @@ * Omit keys from an object. | ||
*/ | ||
export const omit = (keys, obj) => Object.fromEntries(Object.entries(obj) | ||
const omit = (keys, obj) => Object.fromEntries(Object.entries(obj) | ||
.filter(([key]) => !keys.includes(key))); | ||
exports.omit = omit; | ||
//# sourceMappingURL=transformers.js.map |
@@ -1,2 +0,18 @@ | ||
export * from './types'; | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("./types"), exports); | ||
//# sourceMappingURL=types.js.map |
@@ -1,2 +0,3 @@ | ||
export {}; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=APILink.js.map |
@@ -1,2 +0,3 @@ | ||
export {}; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=APILinks.js.map |
@@ -1,2 +0,3 @@ | ||
export {}; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=ConfigParams.js.map |
@@ -1,4 +0,20 @@ | ||
export * from './APILink'; | ||
export * from './APILinks'; | ||
export * from './ConfigParams'; | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("./APILink"), exports); | ||
__exportStar(require("./APILinks"), exports); | ||
__exportStar(require("./ConfigParams"), exports); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"$schema": "https://json.schemastore.org/package.json", | ||
"name": "@vonage/server-client", | ||
"version": "1.12.1", | ||
"version": "1.13.0", | ||
"description": "The Vonage Server Client provides core functionalities for interacting with Vonage APIs, ensuring a standardized response regardless of the underlying HTTP adapter.", | ||
@@ -25,3 +25,2 @@ "homepage": "https://developer.vonage.com", | ||
], | ||
"type": "module", | ||
"main": "dist/lib/index.js", | ||
@@ -42,4 +41,4 @@ "types": "dist/lib/index.d.ts", | ||
"dependencies": { | ||
"@vonage/auth": "^1.10.1", | ||
"@vonage/vetch": "^1.7.2", | ||
"@vonage/auth": "^1.11.0", | ||
"@vonage/vetch": "^1.8.0", | ||
"debug": "^4.3.4", | ||
@@ -46,0 +45,0 @@ "lodash.camelcase": "^4.3.0", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
123855
1176
0
No
Updated@vonage/auth@^1.11.0
Updated@vonage/vetch@^1.8.0