@privateid/ultra-web-sdk-alpha
Version:
CryptoNets WebAssembly SDK
84 lines • 4.09 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());
});
};
import { proxy } from 'comlink';
import { callbackTypeEnum, createCallback } from '../../../../createCallback';
import { printLogs } from '../../global/shared.utils';
import { ultraCompareEmbeddings } from '../../../../utils';
import { CANVAS_RELEASE_DIMENSION, IMAGE_EXPORT_FORMAT, DOWNLOAD_IMAGE_TYPE, FILE_EXTENSION, DOWNLOAD_DELAY_TIMEOUT, } from './document.constants';
export const releaseCanvas = (canvasElement) => {
const canvas = canvasElement;
try {
printLogs('STARTING TO RELEASE CANVAS', '');
canvas.width = CANVAS_RELEASE_DIMENSION;
canvas.height = CANVAS_RELEASE_DIMENSION;
const ctx = canvas.getContext('2d', { willReadFrequently: true });
if (ctx) {
ctx.clearRect(0, 0, CANVAS_RELEASE_DIMENSION, CANVAS_RELEASE_DIMENSION);
}
printLogs('CANVAS RELEASED', '');
}
catch (e) {
printLogs(`CLEARING CANVAS: `, e, 'ERROR');
}
};
// TODO: This Compare embeddings should be using the Wasm Service
export const compareEmbeddings = (embeddingsA, embeddingsB, callback, config = {}, encryptData = false) => __awaiter(void 0, void 0, void 0, function* () {
let configuration = Object.assign({}, config);
if (encryptData) {
configuration = Object.assign(Object.assign({}, configuration), { encrypt_compare_result: true });
}
printLogs(`ULTRA COMPARE: `, {
embeddingsA,
embeddingsB,
config: JSON.stringify(configuration),
ex: proxy(createCallback({ type: callbackTypeEnum.compareEmbeddings, callbackFunction: callback })),
});
const result = yield ultraCompareEmbeddings(embeddingsA, embeddingsB, JSON.stringify(configuration), proxy(createCallback({ type: callbackTypeEnum.compareEmbeddings, callbackFunction: callback })));
return result;
});
export const createImages = (images, title, action) => __awaiter(void 0, void 0, void 0, function* () {
const promises = images.map((content) => new Promise((resolve) => __awaiter(void 0, void 0, void 0, function* () {
const canvas = document.createElement('canvas');
canvas.width = content.width;
canvas.height = content.height;
const context = canvas.getContext('2d');
context.putImageData(content, 0, 0);
const blob = yield new Promise((resolve) => canvas.toBlob(resolve, IMAGE_EXPORT_FORMAT));
const base64 = yield blobToBase64(blob);
const url = URL.createObjectURL(blob);
resolve({ url, base64 });
})));
const data = yield Promise.all(promises);
const a = document.createElement('a');
for (let i = 0; i < data.length; i++) {
// if(!iOS()) {
// eslint-disable-next-line no-loop-func
yield new Promise((resolve) => {
a.href = data[i].url;
a.type = DOWNLOAD_IMAGE_TYPE;
a.download = `${title}_${action ? 'enroll' : 'predict'}${FILE_EXTENSION}`;
document.body.appendChild(a);
a.click();
setTimeout(() => {
resolve();
}, DOWNLOAD_DELAY_TIMEOUT);
});
// }
// postImages(data[i].base64);
}
});
export function blobToBase64(blob) {
return new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.readAsDataURL(blob);
});
}
//# sourceMappingURL=document.utils.js.map