vlayer-web-proof
Version:
It is a npm package for vlayer web proof mechanism. It uses native rust bindings for maximum efficiency.
60 lines (59 loc) • 2.3 kB
JavaScript
import { buildWebProofRequest, validateWebProofOptions, createPerformanceMetrics, isValidUrl } from './utils.mjs';
import { callNativeWebProof, callNativeSimpleWebProof } from './native-wrapper.mjs';
export async function webProof(url, options = {}) {
const startTime = performance.now();
try {
if (!isValidUrl(url)) {
throw new Error(`Invalid URL format: ${url}`);
}
validateWebProofOptions(options);
const request = buildWebProofRequest(url, options);
const response = await callNativeWebProof(request);
const metrics = 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 = createPerformanceMetrics(startTime);
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
return {
success: false,
error: `Web proof generation failed: ${errorMessage}`,
metrics
};
}
}
export async function simpleWebProof(notaryHost, notaryPort, url) {
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 (!isValidUrl(url)) {
throw new Error(`Invalid URL format: ${url}`);
}
const result = await 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}`);
}
}