skyflow-node
Version:
Skyflow SDK for Node.js
244 lines • 11.8 kB
JavaScript
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
;