async function browserExample() {
const kya = await import('./kya_validator_bg.js');
const manifest = {
kyaVersion: "1.0",
agentId: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
verificationMethod: [
{
id: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#key-1",
type: "Ed25519VerificationKey2020",
controller: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
publicKeyMultibase: "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
}
],
proof: [
{
type: "Ed25519Signature2020",
verificationMethod: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#key-1",
proofPurpose: "assertionMethod",
proofValue: "..."
}
]
};
const manifestJson = JSON.stringify(manifest);
const defaultConfig = kya.get_default_config();
console.log("Default config:", defaultConfig);
const result1 = kya.validate_manifest_default(manifestJson);
console.log("Validation result:", result1);
console.log("Success:", result1.success);
console.log("Report:", JSON.parse(result1.report));
const config = {
mode: "SelfAudit",
allowed_kya_versions: ["1.0", "1.1"],
required_fields: ["/agentId", "/proof"],
enforce_controller_match: true,
check_external_links: false,
link_checks: [],
require_all_proofs: true,
required_field_pairs: [],
allowed_controllers: [],
required_vc_types: [],
attestation_checks: []
};
const result2 = kya.validate_manifest(manifestJson, JSON.stringify(config));
console.log("Custom config result:", result2);
console.log("Version:", kya.get_version());
console.log("Name:", kya.get_name());
console.log("Valid JSON:", kya.is_valid_json('{"test": true}'));
console.log("Formatted JSON:", kya.format_json('{"test":true}'));
}
async function nodeJsExample() {
const kya = require('./kya_validator_bg.js');
const manifest = {
kyaVersion: "1.0",
agentId: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
proof: []
};
const manifestJson = JSON.stringify(manifest);
const result = kya.validate_manifest_default(manifestJson);
if (result.success) {
console.log("✅ Manifest is valid!");
const report = JSON.parse(result.report);
console.log("Schema valid:", report.schema_valid);
console.log("Crypto valid:", report.crypto_valid);
console.log("TTL valid:", report.ttl_valid);
console.log("Policy valid:", report.policy_valid);
} else {
console.log("❌ Manifest validation failed!");
const report = JSON.parse(result.report);
console.log("Schema errors:", report.schema_errors);
console.log("Crypto errors:", report.crypto_errors);
console.log("Policy errors:", report.policy_errors);
}
}
import * as kya from './kya_validator_bg.js';
interface Manifest {
kyaVersion: string;
agentId: string;
proof: any[];
}
function ReactExample() {
const [manifest, setManifest] = useState<string>("");
const [validationResult, setValidationResult] = useState<any>(null);
const handleValidate = () => {
try {
if (!kya.is_valid_json(manifest)) {
alert("Invalid JSON format!");
return;
}
const result = kya.validate_manifest_default(manifest);
if (result.success) {
const report = JSON.parse(result.report);
setValidationResult(report);
console.log("✅ Validation successful!");
} else {
const report = JSON.parse(result.report);
setValidationResult(report);
console.log("❌ Validation failed!");
}
} catch (error) {
console.error("Validation error:", error);
}
};
return (
<div>
<textarea
value={manifest}
onChange={(e) => setManifest(e.target.value)}
placeholder="Enter KYA manifest JSON..."
/>
<button onClick={handleValidate}>Validate</button>
{validationResult && (
<div>
<h3>Validation Report</h3>
<p>Schema: {validationResult.schema_valid ? "✅" : "❌"}</p>
<p>Crypto: {validationResult.crypto_valid ? "✅" : "❌"}</p>
<p>TTL: {validationResult.ttl_valid ? "✅" : "❌"}</p>
<p>Policy: {validationResult.policy_valid ? "✅" : "❌"}</p>
</div>
)}
</div>
);
}
function advancedUsage() {
const kya = require('./kya_validator_bg.js');
const strictConfig = {
mode: "ClientAudit",
allowed_kya_versions: ["1.0"],
required_fields: [
"/kyaVersion",
"/agentId",
"/proof",
"/maxTransactionValue"
],
enforce_controller_match: true,
check_external_links: true,
link_checks: [
{
json_pointer: "/schemaUrl",
required_contains: "kya-manifest",
timeout_secs: 10,
max_retries: 3
}
],
require_all_proofs: true,
required_field_pairs: [
["/agentId", "/verificationMethod/0/controller"]
],
allowed_controllers: [],
required_vc_types: [],
attestation_checks: [
{
json_pointer: "/attestation/quote",
tee_type: "SGX",
require_root_certificate: true,
expected_tcb_info: {
version: "1.0",
svn: 2
}
}
]
};
const manifest = {
kyaVersion: "1.0",
agentId: "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
proof: [],
maxTransactionValue: 1000000,
attestation: {
quote: "base64_encoded_quote..."
}
};
const result = kya.validate_manifest(
JSON.stringify(manifest),
JSON.stringify(strictConfig)
);
console.log("Strict validation:", result);
}
function errorHandlingExample() {
const kya = require('./kya_validator_bg.js');
try {
const result1 = kya.validate_manifest_default("not json");
console.log("Result 1:", result1);
} catch (error) {
console.error("Error 1:", error.message);
}
try {
const invalidManifest = {
kyaVersion: "999.0", agentId: "invalid-did",
proof: []
};
const result2 = kya.validate_manifest_default(JSON.stringify(invalidManifest));
console.log("Result 2:", result2);
console.log("Success:", result2.success);
const report = JSON.parse(result2.report);
console.log("Errors:", report.schema_errors);
} catch (error) {
console.error("Error 2:", error.message);
}
}
function performanceTips() {
const kya = require('./kya_validator_bg.js');
const manifest = { kyaVersion: "1.0", agentId: "...", proof: [] };
const manifestJson = JSON.stringify(manifest);
const config = kya.get_default_config();
const configObj = JSON.parse(config);
const manifests = [manifest1, manifest2, manifest3];
const results = manifests.map(m =>
kya.validate_manifest(JSON.stringify(m), JSON.stringify(configObj))
);
const input = getManifestFromInput();
if (!kya.is_valid_json(input)) {
return; }
const result = kya.validate_manifest_default(input);
}
self.onmessage = async (e) => {
const { manifest, config } = e.data;
const kya = await import('./kya_validator_bg.js');
const result = kya.validate_manifest(manifest, config);
self.postMessage(result);
};
async function validateInWorker(manifest, config) {
const worker = new Worker('worker.js');
worker.postMessage({ manifest, config });
return new Promise((resolve) => {
worker.onmessage = (e) => {
resolve(e.data);
worker.terminate();
};
});
}
module.exports = {
browserExample,
nodeJsExample,
ReactExample,
advancedUsage,
errorHandlingExample,
performanceTips
};