@patchworkdev/common
Version:
Patchwork Development Kit
63 lines (61 loc) • 2.52 kB
text/typescript
import { ContractSchema } from "../codegen/contractSchema";
import { Generator } from "../codegen/generator";
export class JSONContractConfigGen implements Generator {
constructor() { }
gen(schema: ContractSchema): string {
let out = "{\n";
out += ` "$schema": "https://patchwork.dev/schema/patchwork-contract-config.schema.json",\n`;
if (schema.scopeName) {
out += ` "scopeName": "${schema.scopeName}",\n`;
}
out += ` "name": "${schema.name}",\n`;
out += ` "symbol": "${schema.symbol}",\n`;
if (schema.baseURI) {
out += ` "baseURI": "${schema.baseURI}",\n`;
}
if (schema.schemaURI) {
out += ` "schemaURI": "${schema.schemaURI}",\n`;
}
if (schema.imageURI) {
out += ` "imageURI": "${schema.imageURI}",\n`;
}
if (schema.features && schema.features.length > 0) {
out += ` "features": ${JSON.stringify(schema.features.map(f => f.toLowerCase()))},\n`;
}
if (schema.fragments && schema.fragments.length > 0) {
out += ` "fragments": [\n` + schema.fragments.map(fragment => {
return ` "${fragment}"`;
}).join(',\n') +
`\n ],\n`;
}
if (schema.fields && schema.fields.length > 0) {
out += ` "fields": [\n`;
const fields = schema.fields.map(field => {
let fieldObj: any = {
id: field.id
};
if (field.permissionId !== undefined && field.permissionId !== 0) {
fieldObj.permissionId = field.permissionId;
}
fieldObj.key = field.key;
fieldObj.type = field.type;
if (field.type === 'literef' || (field.arrayLength !== undefined && field.arrayLength !== 1)) {
fieldObj.arrayLength = field.arrayLength;
}
if (field.description) {
fieldObj.description = field.description;
}
if (field.functionConfig) {
fieldObj.functionConfig = field.functionConfig.toLowerCase();
}
return JSON.stringify(fieldObj, null, 2).replace(/^/gm, " ");
});
out += fields.join(",\n");
out += "\n ]\n";
} else {
out += ` "fields": []\n`;
}
out += "}\n";
return out;
}
}