@zkp2p/reclaim-witness-sdk
Version:
<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>
82 lines • 7.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateTsFromYamlSchema = generateTsFromYamlSchema;
const promises_1 = require("fs/promises");
const json_schema_to_typescript_1 = require("json-schema-to-typescript");
const yaml_1 = require("yaml");
const PROVIDER_SCHEMAS_PATH = './provider-schemas';
const GEN_TS_FILENAME = './src/types/providers.gen.ts';
const BinaryDataType = 'BinaryData';
async function main() {
const folders = await findAllProviderFolders();
console.log(`Generating for ${folders.length} provider folders`);
let ts = '/* eslint-disable */\n/* Generated file. Do not edit */';
// json-schema nor ajv support uint8array formats,
// so we define a custom type for binary data
// and use it in the generated types
ts += `\n\ntype ${BinaryDataType} = Uint8Array | string\n`;
// type map of each provider to its parameters and secret parameters
let providerTypeMap = '\nexport interface ProvidersConfig {\n';
// schema map of each provider to its parameters and secret parameters
// storing the JSON schema in the map
// lets us validate the parameters and secret parameters
let providerSchemaMap = '\nexport const PROVIDER_SCHEMAS = {\n';
for (const folder of folders) {
const { schemaTitle: paramsSchemaTitle, ts: paramsSchemaTs, jsonTitle: paramsJsonTitle } = await generateTsFromYamlSchema(folder, 'parameters');
const { schemaTitle: secretParamsSchemaTitle, ts: secretParamsSchemaTs, jsonTitle: secretParamsJsonTitle } = await generateTsFromYamlSchema(folder, 'secret-parameters');
ts += `\n${paramsSchemaTs}\n${secretParamsSchemaTs}`;
providerTypeMap += ` ${folder}: {\n`;
providerTypeMap += ` parameters: ${paramsSchemaTitle}\n`;
providerTypeMap += ` secretParameters: ${secretParamsSchemaTitle}\n`;
providerTypeMap += ' }\n';
providerSchemaMap += ` ${folder}: {\n`;
providerSchemaMap += ` parameters: ${paramsJsonTitle},\n`;
providerSchemaMap += ` secretParameters: ${secretParamsJsonTitle}\n`;
providerSchemaMap += ' },\n';
}
providerTypeMap += '}\n';
providerSchemaMap += '}\n';
ts += providerTypeMap;
ts += providerSchemaMap;
await (0, promises_1.writeFile)(GEN_TS_FILENAME, ts);
console.log(`Wrote to ${GEN_TS_FILENAME}`);
}
async function getJsonSchemaForProvider(name, type) {
const paramsYaml = await (0, promises_1.readFile)(`${PROVIDER_SCHEMAS_PATH}/${name}/${type}.yaml`, { encoding: 'utf-8' });
const paramsJson = (0, yaml_1.parse)(paramsYaml);
return paramsJson;
}
async function generateTsFromYamlSchema(name, type) {
const paramsJson = await getJsonSchemaForProvider(name, type);
let paramsSchemaTs = await (0, json_schema_to_typescript_1.compile)(paramsJson, '', {
additionalProperties: false,
bannerComment: '',
ignoreMinAndMaxItems: true,
declareExternallyReferenced: false,
customName({ type, format }) {
if (type === 'string' && format === 'binary') {
return BinaryDataType;
}
return undefined;
},
});
const jsonTitle = `${paramsJson.title}Json`;
paramsSchemaTs += `\nexport const ${jsonTitle} = ${JSON.stringify(paramsJson)}`;
return {
ts: paramsSchemaTs,
schemaTitle: paramsJson.title,
jsonTitle
};
}
/**
* Find all provider folders in the provider-schemas directory
* @returns {Promise<string[]>} List of provider folder names
*/
async function findAllProviderFolders() {
const providerFolders = await (0, promises_1.readdir)(PROVIDER_SCHEMAS_PATH, { withFileTypes: true });
return providerFolders
.filter(p => p.isDirectory())
.map(p => p.name);
}
void main();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcHJvdmlkZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9nZW5lcmF0ZS1wcm92aWRlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlFQSw0REErQkM7QUF4R0QsMENBQTBEO0FBQzFELHlFQUFtRDtBQUNuRCwrQkFBNEI7QUFFNUIsTUFBTSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQTtBQUNsRCxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQTtBQUN0RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUE7QUFFbkMsS0FBSyxVQUFVLElBQUk7SUFDbEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxzQkFBc0IsRUFBRSxDQUFBO0lBRTlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLE9BQU8sQ0FBQyxNQUFNLG1CQUFtQixDQUFDLENBQUE7SUFFaEUsSUFBSSxFQUFFLEdBQUcseURBQXlELENBQUE7SUFDbEUsa0RBQWtEO0lBQ2xELDZDQUE2QztJQUM3QyxvQ0FBb0M7SUFDcEMsRUFBRSxJQUFJLFlBQVksY0FBYywwQkFBMEIsQ0FBQTtJQUMxRCxvRUFBb0U7SUFDcEUsSUFBSSxlQUFlLEdBQUcsd0NBQXdDLENBQUE7SUFDOUQsc0VBQXNFO0lBQ3RFLHFDQUFxQztJQUNyQyx3REFBd0Q7SUFDeEQsSUFBSSxpQkFBaUIsR0FBRyx1Q0FBdUMsQ0FBQTtJQUUvRCxLQUFJLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0sRUFDTCxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLEVBQUUsRUFBRSxjQUFjLEVBQ2xCLFNBQVMsRUFBRSxlQUFlLEVBQzFCLEdBQUcsTUFBTSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDeEQsTUFBTSxFQUNMLFdBQVcsRUFBRSx1QkFBdUIsRUFDcEMsRUFBRSxFQUFFLG9CQUFvQixFQUN4QixTQUFTLEVBQUUs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
;