vlayer-web-proof
Version:
It is a npm package for vlayer web proof mechanism. It uses native rust bindings for maximum efficiency.
77 lines (76 loc) • 3.47 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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.webProof = webProof;
exports.simpleWebProof = simpleWebProof;
const utils_1 = require("./utils");
const native_wrapper_1 = require("./native-wrapper");
function webProof(url_1) {
return __awaiter(this, arguments, void 0, function* (url, options = {}) {
const startTime = performance.now();
try {
if (!(0, utils_1.isValidUrl)(url)) {
throw new Error(`Invalid URL format: ${url}`);
}
(0, utils_1.validateWebProofOptions)(options);
const request = (0, utils_1.buildWebProofRequest)(url, options);
const response = yield (0, native_wrapper_1.callNativeWebProof)(request);
const metrics = (0, utils_1.createPerformanceMetrics)(startTime);
if (response.success && response.data) {
return {
success: true,
proof: response.data,
metrics
};
}
else {
return {
success: false,
error: response.error || 'Unknown error occurred during proof generation',
metrics
};
}
}
catch (error) {
const metrics = (0, utils_1.createPerformanceMetrics)(startTime);
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
return {
success: false,
error: `Web proof generation failed: ${errorMessage}`,
metrics
};
}
});
}
function simpleWebProof(notaryHost, notaryPort, url) {
return __awaiter(this, void 0, void 0, function* () {
try {
if (!notaryHost || typeof notaryHost !== 'string') {
throw new Error('Notary host must be a non-empty string');
}
if (!Number.isInteger(notaryPort) || notaryPort < 1 || notaryPort > 65535) {
throw new Error('Notary port must be a valid port number (1-65535)');
}
if (!(0, utils_1.isValidUrl)(url)) {
throw new Error(`Invalid URL format: ${url}`);
}
const result = yield (0, native_wrapper_1.callNativeSimpleWebProof)(notaryHost, notaryPort, url);
if (!result || typeof result !== 'string') {
throw new Error('Invalid response from native binding');
}
return result;
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
throw new Error(`Simple web proof generation failed: ${errorMessage}`);
}
});
}