All files / src/configgen jsonProjectConfigLoader.ts

100% Statements 15/15
76.92% Branches 10/13
100% Functions 5/5
100% Lines 15/15

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 482x     2x       3x 3x 3x   3x 6x 6x 4x   2x   6x 3x       3x     3x               3x                          
import { parseJson } from '../codegen/contractSchemaJsonParser';
import { ContractConfig, ContractRelation, Feature, ProjectConfig, ScopeConfig } from "../types";
 
export class JSONProjectConfigLoader {
    constructor() { }
 
    load(jsonString: string): ProjectConfig {
        let projectConfig = JSON.parse(jsonString);
        let contractRelations: Record<string, ContractRelation> = {};
        let contracts: Record<string, string | ContractConfig> = {};
 
        Object.entries(projectConfig.contracts).forEach(([key, value]) => {
            const v = value as any;
            if (v.config && typeof v.config === 'string') {
                contracts[key] = v.config;
            } else {
                contracts[key] = parseJson(v.config);
            }
            if (v.fragments && Array.isArray(v.fragments)) {
                contractRelations[key] = { fragments: v.fragments };
            }
        });
 
        return {
            name: projectConfig.name,
            scopes: Object.entries(projectConfig.scopes).map(([key, value]) => {
                return this.loadScopeConfig(key, value);
            }),
            contracts: contracts,
            contractRelations: contractRelations
        };
    }
 
    loadScopeConfig(name: string, scopeConfig: any): ScopeConfig {
        return {
            name: name,
            owner: scopeConfig.owner,
            whitelist: scopeConfig.whitelist,
            userAssign: scopeConfig.userAssign,
            userPatch: scopeConfig.userPatch,
            bankers: scopeConfig.bankers,
            operators: scopeConfig.operators,
            mintConfigs: scopeConfig.mintConfigs || {},
            patchFees: scopeConfig.patchFees || {},
            assignFees: scopeConfig.assignFees || {}
        };
    }
}