UNPKG

skyflow-node

Version:
244 lines 11.8 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateRecordsBySkyflowID = exports.fetchRecordsBySkyflowID = exports.fetchRecordsByTokenId = void 0; const SkyflowError_1 = __importDefault(require("../libs/SkyflowError")); const common_1 = require("../utils/common"); require("core-js/modules/es.promise.all-settled"); const formatForPureJsSuccess = (response) => { const currentResponseRecords = response.records; return currentResponseRecords.map((record) => ({ token: record.token, value: record.value })); }; const formatForPureJsFailure = (cause, tokenId) => { var _a, _b; return (Object.assign({ token: tokenId }, new SkyflowError_1.default({ code: (_a = cause === null || cause === void 0 ? void 0 : cause.error) === null || _a === void 0 ? void 0 : _a.code, description: (_b = cause === null || cause === void 0 ? void 0 : cause.error) === null || _b === void 0 ? void 0 : _b.description, }, [], true))); }; const formatUpdateSuccessResponse = (response) => { return Object.assign({ id: response.skyflow_id }, ((response === null || response === void 0 ? void 0 : response.tokens) ? { fields: Object.assign({}, response.tokens) } : {})); }; const formatUpdateFailureResponse = (cause, id) => { var _a, _b; return Object.assign({ id: id }, new SkyflowError_1.default({ code: (_a = cause === null || cause === void 0 ? void 0 : cause.error) === null || _a === void 0 ? void 0 : _a.code, description: (_b = cause === null || cause === void 0 ? void 0 : cause.error) === null || _b === void 0 ? void 0 : _b.description, }, [], true)); }; const getSkyflowIdRecordsFromVault = (skyflowIdRecord, client, authToken, options) => { var _a, _b, _c; let paramList = ''; (_a = skyflowIdRecord.ids) === null || _a === void 0 ? void 0 : _a.forEach((skyflowId) => { paramList += `skyflow_ids=${skyflowId}&`; }); if (options && Object.prototype.hasOwnProperty.call(options, 'encodeURI') && (options === null || options === void 0 ? void 0 : options.encodeURI) === false) { (_b = skyflowIdRecord.columnValues) === null || _b === void 0 ? void 0 : _b.forEach((column, index) => { paramList += `${index === 0 ? `column_name=${skyflowIdRecord.columnName}&` : ''}column_values=${column}&`; }); } else { (_c = skyflowIdRecord.columnValues) === null || _c === void 0 ? void 0 : _c.forEach((column, index) => { var encode_column_value = encodeURIComponent(column); paramList += `${index === 0 ? `column_name=${skyflowIdRecord.columnName}&` : ''}column_values=${encode_column_value}&`; }); } if (options && Object.prototype.hasOwnProperty.call(options, 'tokens')) { paramList += `tokenization=${options.tokens}&`; } if (skyflowIdRecord === null || skyflowIdRecord === void 0 ? void 0 : skyflowIdRecord.redaction) { paramList += `redaction=${skyflowIdRecord.redaction}`; } const vaultEndPointurl = `${client.config.vaultURL}/v1/vaults/${client.config.vaultID}/${skyflowIdRecord.table}?${paramList}`; return client.request({ requestMethod: 'GET', url: vaultEndPointurl, headers: { Authorization: `Bearer ${authToken}`, 'Content-Type': 'application/json', }, }); }; const getTokenRecordsFromVault = (tokenRecord, client, authToken) => { const vaultEndPointurl = `${client.config.vaultURL}/v1/vaults/${client.config.vaultID}/detokenize`; return client.request({ requestMethod: 'POST', url: vaultEndPointurl, headers: { Authorization: `Bearer ${authToken}`, 'Content-Type': 'application/json', }, body: { detokenizationParameters: [ { token: tokenRecord.token, redaction: ((tokenRecord === null || tokenRecord === void 0 ? void 0 : tokenRecord.redaction) ? tokenRecord.redaction : common_1.RedactionType.PLAIN_TEXT) }, ], }, }); }; const fetchRecordsByTokenId = (tokenIdRecords, client, authToken) => new Promise((rootResolve, rootReject) => { const vaultResponseSet = tokenIdRecords.map((tokenRecord) => new Promise((resolve) => { const apiResponse = []; getTokenRecordsFromVault(tokenRecord, client, authToken) .then((response) => { const fieldsData = formatForPureJsSuccess(response.data); apiResponse.push(...fieldsData); }, (cause) => { const errorData = formatForPureJsFailure(cause, tokenRecord.token); apiResponse.push(errorData); }) .finally(() => { resolve(apiResponse); }); })); Promise.allSettled(vaultResponseSet).then((resultSet) => { const recordsResponse = []; const errorResponse = []; resultSet.forEach((result) => { if (result.status === 'fulfilled') { result.value.forEach((res) => { if (Object.prototype.hasOwnProperty.call(res, 'error')) { errorResponse.push(res); } else { recordsResponse.push(res); } }); } }); if (errorResponse.length === 0) { rootResolve({ records: recordsResponse }); } else if (recordsResponse.length === 0) rootReject({ errors: errorResponse }); else rootReject({ records: recordsResponse, errors: errorResponse }); }); }); exports.fetchRecordsByTokenId = fetchRecordsByTokenId; const fetchRecordsBySkyflowID = (skyflowIdRecords, client, authToken, options) => __awaiter(void 0, void 0, void 0, function* () { return new Promise((rootResolve, rootReject) => { let vaultResponseSet; vaultResponseSet = skyflowIdRecords.map((skyflowIdRecord) => new Promise((resolve, reject) => { getSkyflowIdRecordsFromVault(skyflowIdRecord, client, authToken, options) .then((resolvedResult) => { const response = []; const recordsData = resolvedResult.data.records; recordsData.forEach((fieldData) => { const id = fieldData.fields.skyflow_id; const currentRecord = { fields: Object.assign({ id }, fieldData.fields), table: skyflowIdRecord.table, }; delete currentRecord.fields.skyflow_id; response.push(currentRecord); }); resolve(response); }, (rejectedResult) => { var _a, _b; let errorResponse = rejectedResult; if (rejectedResult && rejectedResult.error) { errorResponse = Object.assign({ error: { code: (_a = rejectedResult === null || rejectedResult === void 0 ? void 0 : rejectedResult.error) === null || _a === void 0 ? void 0 : _a.code, description: (_b = rejectedResult === null || rejectedResult === void 0 ? void 0 : rejectedResult.error) === null || _b === void 0 ? void 0 : _b.description, }, ids: skyflowIdRecord.ids }, ((skyflowIdRecord === null || skyflowIdRecord === void 0 ? void 0 : skyflowIdRecord.columnName) ? { columnName: skyflowIdRecord === null || skyflowIdRecord === void 0 ? void 0 : skyflowIdRecord.columnName } : {})); } reject(errorResponse); }) .catch((error) => { reject(error); }); })); Promise.allSettled(vaultResponseSet).then((resultSet) => { const recordsResponse = []; const errorsResponse = []; resultSet.forEach((result) => { if (result.status === 'fulfilled') { recordsResponse.push(...result.value); } else { errorsResponse.push(result.reason); } }); if (errorsResponse.length === 0) { rootResolve({ records: recordsResponse }); } else if (recordsResponse.length === 0) rootReject({ errors: errorsResponse }); else rootReject({ records: recordsResponse, errors: errorsResponse }); }); }); }); exports.fetchRecordsBySkyflowID = fetchRecordsBySkyflowID; const updateRecordInVault = (updateRecord, options, client, authToken) => { const vaultEndPointURL = `${client.config.vaultURL}/v1/vaults/${client.config.vaultID}/${updateRecord.table}/${updateRecord.id}`; return client.request({ requestMethod: 'PUT', url: vaultEndPointURL, headers: { Authorization: `Bearer ${authToken}`, 'Content-Type': 'application/json', }, body: { record: { fields: Object.assign({}, updateRecord.fields) }, tokenization: options.tokens }, }); }; const updateRecordsBySkyflowID = (updateRecords, options, client, authToken) => { return new Promise((rootResolve, rootReject) => { const vaultResponseSet = updateRecords.map((updateRecord) => new Promise((resolve) => { const updateResponse = []; updateRecordInVault(updateRecord, options, client, authToken) .then((response) => { updateResponse.push(formatUpdateSuccessResponse(response.data)); }, (cause) => { updateResponse.push(formatUpdateFailureResponse(cause, updateRecord.id)); }) .finally(() => { resolve(updateResponse); }); })); Promise.allSettled(vaultResponseSet).then((resultSet) => { const recordsResponse = []; const errorResponse = []; resultSet.forEach((result) => { if (result.status === 'fulfilled') { result.value.forEach((res) => { if (Object.prototype.hasOwnProperty.call(res, 'error')) { errorResponse.push(res); } else { recordsResponse.push(res); } }); } }); if (errorResponse.length === 0) { rootResolve({ records: recordsResponse }); } else if (recordsResponse.length === 0) rootReject({ errors: errorResponse }); else rootReject({ records: recordsResponse, errors: errorResponse }); }); }); }; exports.updateRecordsBySkyflowID = updateRecordsBySkyflowID; //# sourceMappingURL=Reveal.js.map