box-node-sdk
Version:
Official SDK for Box Platform APIs
232 lines • 10.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DateTime = exports.Date = exports.FormData = exports.Buffer = exports.DefaultPrivateKeyDecryptor = exports.utilLib = exports.setEnvVar = exports.getEnvVar = exports.calculateMD5Hash = exports.computeWebhookSignature = exports.compareSignatures = exports.jsonStringifyWithEscapedUnicode = exports.createAgent = exports.readTextFromFile = exports.createJwtAssertion = exports.iterateChunks = exports.readByteStream = exports.generateReadableStreamFromFile = exports.stringToByteStream = exports.decodeBase64ByteStream = exports.generateByteStreamFromBuffer = exports.generateByteBuffer = exports.Hash = void 0;
exports.isBrowser = isBrowser;
exports.getUuid = getUuid;
exports.decodeBase64 = decodeBase64;
exports.hexToBase64 = hexToBase64;
exports.dateFromString = dateFromString;
exports.deserializeDate = dateFromString;
exports.dateToString = dateToString;
exports.serializeDate = dateToString;
exports.dateTimeFromString = dateTimeFromString;
exports.deserializeDateTime = dateTimeFromString;
exports.dateTimeToString = dateTimeToString;
exports.serializeDateTime = dateTimeToString;
exports.epochSecondsToDateTime = epochSecondsToDateTime;
exports.dateTimeToEpochSeconds = dateTimeToEpochSeconds;
exports.hexStrToBase64 = hexStrToBase64;
exports.generateByteStream = generateByteStream;
exports.bufferEquals = bufferEquals;
exports.bufferLength = bufferLength;
exports.reduceIterator = reduceIterator;
exports.prepareParams = prepareParams;
exports.toString = toString;
exports.createTokenAndCancelAfter = createTokenAndCancelAfter;
exports.getEpochTimeInSeconds = getEpochTimeInSeconds;
exports.delayInSeconds = delayInSeconds;
exports.getValueFromObjectRawData = getValueFromObjectRawData;
exports.createNull = createNull;
exports.createCancellationController = createCancellationController;
exports.random = random;
exports.multipartStreamToBuffer = multipartStreamToBuffer;
exports.multipartBufferToStream = multipartBufferToStream;
exports.sanitizeMap = sanitizeMap;
const uuid_1 = require("uuid");
const utilsNode_1 = require("./utilsNode");
Object.defineProperty(exports, "calculateMD5Hash", { enumerable: true, get: function () { return utilsNode_1.calculateMD5Hash; } });
Object.defineProperty(exports, "compareSignatures", { enumerable: true, get: function () { return utilsNode_1.compareSignatures; } });
Object.defineProperty(exports, "computeWebhookSignature", { enumerable: true, get: function () { return utilsNode_1.computeWebhookSignature; } });
Object.defineProperty(exports, "createAgent", { enumerable: true, get: function () { return utilsNode_1.createAgent; } });
Object.defineProperty(exports, "createJwtAssertion", { enumerable: true, get: function () { return utilsNode_1.createJwtAssertion; } });
Object.defineProperty(exports, "decodeBase64ByteStream", { enumerable: true, get: function () { return utilsNode_1.decodeBase64ByteStream; } });
Object.defineProperty(exports, "generateByteBuffer", { enumerable: true, get: function () { return utilsNode_1.generateByteBuffer; } });
Object.defineProperty(exports, "generateByteStreamFromBuffer", { enumerable: true, get: function () { return utilsNode_1.generateByteStreamFromBuffer; } });
Object.defineProperty(exports, "Hash", { enumerable: true, get: function () { return utilsNode_1.Hash; } });
Object.defineProperty(exports, "iterateChunks", { enumerable: true, get: function () { return utilsNode_1.iterateChunks; } });
Object.defineProperty(exports, "jsonStringifyWithEscapedUnicode", { enumerable: true, get: function () { return utilsNode_1.jsonStringifyWithEscapedUnicode; } });
Object.defineProperty(exports, "readByteStream", { enumerable: true, get: function () { return utilsNode_1.readByteStream; } });
Object.defineProperty(exports, "readTextFromFile", { enumerable: true, get: function () { return utilsNode_1.readTextFromFile; } });
Object.defineProperty(exports, "stringToByteStream", { enumerable: true, get: function () { return utilsNode_1.stringToByteStream; } });
Object.defineProperty(exports, "Buffer", { enumerable: true, get: function () { return utilsNode_1.Buffer; } });
Object.defineProperty(exports, "FormData", { enumerable: true, get: function () { return utilsNode_1.FormData; } });
Object.defineProperty(exports, "generateReadableStreamFromFile", { enumerable: true, get: function () { return utilsNode_1.generateReadableStreamFromFile; } });
Object.defineProperty(exports, "getEnvVar", { enumerable: true, get: function () { return utilsNode_1.getEnvVar; } });
Object.defineProperty(exports, "setEnvVar", { enumerable: true, get: function () { return utilsNode_1.setEnvVar; } });
Object.defineProperty(exports, "utilLib", { enumerable: true, get: function () { return utilsNode_1.utilLib; } });
Object.defineProperty(exports, "DefaultPrivateKeyDecryptor", { enumerable: true, get: function () { return utilsNode_1.DefaultPrivateKeyDecryptor; } });
const json_1 = require("../serialization/json");
function isBrowser() {
return (typeof window === 'object' && typeof document === 'object' && window.crypto);
}
function getUuid() {
return (0, uuid_1.v4)();
}
function decodeBase64(value) {
return utilsNode_1.Buffer.from(value, 'base64').toString('utf8');
}
function hexToBase64(data) {
return utilsNode_1.Buffer.from(data, 'hex').toString('base64');
}
// using wrappers for date/datetime because of inability to export built-in Date types
class DateWrapper {
value;
constructor(value) {
this.value = value;
}
}
exports.Date = DateWrapper;
class DateTimeWrapper {
value;
constructor(value) {
this.value = value;
}
}
exports.DateTime = DateTimeWrapper;
function dateFromString(value) {
return new DateWrapper(new Date(value));
}
function dateToString(date) {
return date.value.toISOString().match(/^\d{4}-\d{2}-\d{2}/)[0];
}
function dateTimeFromString(value) {
return new DateTimeWrapper(new Date(value));
}
function dateTimeToString(dateTime) {
return (dateTime.value
.toISOString()
.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/)[0] + '+00:00');
}
function epochSecondsToDateTime(seconds) {
return new DateTimeWrapper(new Date(seconds * 1000));
}
function dateTimeToEpochSeconds(dateTime) {
return Math.floor(dateTime.value.getTime() / 1000);
}
// Function to convert a hexadecimal string to base64
function hexStrToBase64(hex) {
const hexString = hex.toString(); // Ensure the input is a string
const hexBytes = new Uint8Array(hexString.length / 2);
// Convert the hexadecimal string to bytes
for (let i = 0; i < hexString.length; i += 2) {
hexBytes[i / 2] = parseInt(hexString.substr(i, 2), 16);
}
// Encode the bytes as base64
const base64 = btoa(String.fromCharCode.apply(null, Array.from(hexBytes)));
return base64;
}
function generateByteStream(size) {
return (0, utilsNode_1.generateByteStreamFromBuffer)((0, utilsNode_1.generateByteBuffer)(size));
}
function bufferEquals(buffer1, buffer2) {
return utilsNode_1.Buffer.compare(buffer1, buffer2) === 0;
}
function bufferLength(buffer) {
return buffer.length;
}
async function reduceIterator(iterator, reducer, initialValue) {
let result = initialValue;
let iteration = await iterator.next();
while (!iteration.done) {
result = await reducer(result, iteration.value);
iteration = await iterator.next();
}
return result;
}
function prepareParams(map) {
if (!map || typeof map !== 'object') {
throw new Error('Expecting obj to be an object in prepareParams');
}
return Object.fromEntries(Object.entries(map).filter((entry) => typeof entry[1] === 'string'));
}
function toString(value) {
if (typeof value === 'string' || value == null) {
return value;
}
return String(value);
}
/**
* Creates a cancellation token that will be cancelled after a given delay in ms.
*
* @param {number} delay Delay in ms.
* @returns {CancellationToken} Cancellation token.
*/
function createTokenAndCancelAfter(delay) {
return AbortSignal.timeout(delay);
}
/**
* Get current epoch time in seconds.
*/
function getEpochTimeInSeconds() {
return Math.floor(Date.now() / 1000);
}
async function delayInSeconds(seconds) {
return await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
}
/**
* Get value from object raw data.
*
* @param obj Object with raw data from which to get the value.
* @param key Key of the value to get.
* @returns Value from object raw data.
*/
function getValueFromObjectRawData(obj, key) {
if (!obj || typeof obj !== 'object' || !obj.rawData) {
return undefined;
}
return key.split('.').reduce((value, k) => value?.[k], obj.rawData);
}
/**
* Create a null value.
*
* @returns null
*/
function createNull() {
return null;
}
/**
* Create a cancellation controller.
*/
function createCancellationController() {
return new AbortController();
}
function random(min, max) {
return Math.random() * (max - min) + min;
}
async function multipartStreamToBuffer(multipart) {
return await Promise.all(multipart.map(async (item) => {
if (!item.fileStream) {
return item;
}
return {
...item,
fileStream: undefined,
fileStreamBuffer: item.fileStream
? await (0, utilsNode_1.readByteStream)(item.fileStream)
: undefined,
};
}));
}
function multipartBufferToStream(multipart) {
return multipart.map((item) => {
if (!item.fileStreamBuffer) {
return item;
}
return {
...item,
fileStreamBuffer: undefined,
fileStream: item.fileStreamBuffer
? (0, utilsNode_1.generateByteStreamFromBuffer)(item.fileStreamBuffer)
: undefined,
};
});
}
/**
* Sanitize a map by replacing sensitive values with a placeholder.
* @param dictionary The map to sanitize
* @param keysToSanitize Keys to sanitize
*/
function sanitizeMap(dictionary, keysToSanitize) {
return Object.fromEntries(Object.entries(dictionary).map(([k, v]) => k.toLowerCase() in keysToSanitize ? [k, (0, json_1.sanitizedValue)()] : [k, v]));
}
//# sourceMappingURL=utils.js.map