Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 1x 1x 1x 1x 2x 2x 4x 4x 2x 2x 2x 4x 4x 2x 2x 2x 2x 2x 2x 4x 4x 2x 2x 4x 2x 2x 2x 2x 2x 2x | import { ContractSchemaImpl } from '../codegen/contractSchema';
import { parseJson } from '../codegen/contractSchemaJsonParser';
import { ContractConfig, ContractRelation, MintConfig, ProjectConfig, ScopeConfig } from "../types";
import { JSONContractConfigGen } from './jsonContractConfigGen';
export class JSONProjectConfigGen {
constructor() { }
gen(projectConfig: ProjectConfig): string {
let contractConfigString = '';
Object.entries(projectConfig.contracts).forEach(([key, value]) => {
if (contractConfigString.length > 0) { contractConfigString += ',\n' };
contractConfigString += this.genContractConfig(key, value, projectConfig.contractRelations[key]);
});
return `` +
`{\n` +
` "$schema": "https://patchwork.dev/schema/patchwork-project-config.schema.json",\n` +
` "name": "${projectConfig.name}",\n` +
` "scopes": {\n` +
projectConfig.scopes.map(scope => {
return this.genScopeConfig(scope);
}).join(',\n') +
`\n },\n` +
` "contracts": {\n` +
contractConfigString + `\n` +
` }\n` +
`}`;
}
genScopeConfig(scopeConfig: ScopeConfig): string {
return ` "${scopeConfig.name}": {\n` +
` "name": "${scopeConfig.name}",\n` +
` "owner": "${scopeConfig.owner}",\n` +
` "whitelist": ${scopeConfig.whitelist},\n` +
` "userAssign": ${scopeConfig.userAssign},\n` +
` "userPatch": ${scopeConfig.userPatch},\n` +
` "bankers": [` +
scopeConfig.bankers?.map(banker => {
return `"${banker}"`;
}).join(',') +
`],\n` +
` "operators": [` +
scopeConfig.operators?.map(operator => {
return `"${operator}"`;
}).join(',') +
`],\n` +
` "mintConfigs": ${this.genMintConfigs(scopeConfig.mintConfigs)},\n` +
` "patchFees": ${this.genPatchFees(scopeConfig.patchFees)},\n` +
` "assignFees": ${this.genAssignFees(scopeConfig.assignFees)}\n` +
` }`;
}
genMintConfigs(mintConfigs: Record<string, MintConfig> | undefined): string {
Iif (!mintConfigs) return '{}';
return JSON.stringify(mintConfigs);
}
genPatchFees(patchFees: Record<string, number> | undefined): string {
Iif (!patchFees) return '{}';
return JSON.stringify(patchFees);
}
genAssignFees(assignFees: Record<string, number> | undefined): string {
Iif (!assignFees) return '{}';
return JSON.stringify(assignFees);
}
genContractConfig(name: string, value: string | ContractConfig, relations: ContractRelation | undefined): string {
let fragments = '';
if (relations) {
fragments = `,\n "fragments": [\n` + relations.fragments.map(fragment => {
return ` "${fragment}"`;
}).join(',\n') +
`\n ]`;
}
if (typeof value === 'string') {
return ` "${name}": {\n` +
` "config": "${value}"` +
`${fragments}\n` +
` }`;
} else {
const generator = new JSONContractConfigGen();
const contractConfig = parseJson(value);
const contractConfigString = generator.gen(new ContractSchemaImpl(contractConfig)).split('\n');
contractConfigString.pop();
return ` "${name}": {\n` +
` "config": ${contractConfigString.join('\n ')}` +
`${fragments}\n` +
` }`;
}
}
} |