mirror of
https://github.com/logos-messaging/js-rln.git
synced 2026-01-02 13:43:06 +00:00
* add deps * complete keystore, move code * remove esling * rename command * rename export * fix bug * rollback example * rollback example[2] * improve compatibility with nwaku * add packages * update example * add keystore.spec.ts * up node, add whitelist words * add types * try break test * add test * add more tests * add helper functions, update example, add tests * fix types * fix test * add logs * fix build of the object * use different approach to catch errors * run one test * anotehr one * fix validation error * apply last fixes * update example * up * ignroe generated files * up * up * fix test * test * fix * up * add prettier ignore * up * fix lint * up * last
78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
import { writeFileSync } from "fs";
|
|
import { join } from "path";
|
|
import { fileURLToPath } from "url";
|
|
import { dirname } from "path";
|
|
|
|
import Ajv from "ajv";
|
|
import addFormats from "ajv-formats";
|
|
import standaloneCode from "ajv/dist/standalone/index.js";
|
|
|
|
import keystoreSchema from "./nwaku_keystore.json" assert { type: "json" };
|
|
import credentialSchema from "./nwaku_keystore_credential.json" assert { type: "json" };
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
// Generate a function that validates the Keystore schema.
|
|
// Write the function to a file in the source.
|
|
|
|
const OUTPUT_DIR = join(__dirname, "../src/keystore");
|
|
const OUTPUT_KEYSTORE_FILE = join(
|
|
OUTPUT_DIR,
|
|
"keystore_validation_generated.ts"
|
|
);
|
|
const OUTPUT_CREDENTIALS_FILE = join(
|
|
OUTPUT_DIR,
|
|
"credential_validation_generated.ts"
|
|
);
|
|
|
|
// Initialize ajv instance
|
|
let ajv = new Ajv({
|
|
schemas: [keystoreSchema],
|
|
code: {
|
|
source: true,
|
|
esm: true,
|
|
},
|
|
});
|
|
addFormats(ajv);
|
|
|
|
// The output code is minified vanilla javascript and uses the cute pattern of attaching errors to the exported function as a property.
|
|
// The easiest way to treat this is to just ts-ignore the whole output and wrap the function with a handcrafted type.
|
|
const keystoreModuleCode =
|
|
`
|
|
/* eslint eslint-comments/no-unlimited-disable: "off" */
|
|
// This file was generated by /scripts/schema-validation-codegen.ts
|
|
// Do not modify this file by hand.
|
|
|
|
/* eslint-disable */
|
|
// @ts-ignore
|
|
` +
|
|
standaloneCode(ajv, {
|
|
Keystore: "#/definitions/Keystore",
|
|
});
|
|
|
|
ajv = new Ajv({
|
|
schemas: [credentialSchema],
|
|
code: {
|
|
source: true,
|
|
esm: true,
|
|
},
|
|
});
|
|
addFormats(ajv);
|
|
|
|
const credentialModuleCode =
|
|
`
|
|
/* eslint eslint-comments/no-unlimited-disable: "off" */
|
|
// This file was generated by /scripts/schema-validation-codegen.ts
|
|
// Do not modify this file by hand.
|
|
|
|
/* eslint-disable */
|
|
// @ts-ignore
|
|
` +
|
|
standaloneCode(ajv, {
|
|
Credential: "#/definitions/Credential",
|
|
});
|
|
|
|
writeFileSync(OUTPUT_KEYSTORE_FILE, keystoreModuleCode);
|
|
writeFileSync(OUTPUT_CREDENTIALS_FILE, credentialModuleCode);
|