@patchworkdev/common
Version:
Patchwork Development Kit
49 lines (48 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JSONProjectConfigLoader = void 0;
const contractSchemaJsonParser_1 = require("../codegen/contractSchemaJsonParser");
class JSONProjectConfigLoader {
constructor() { }
load(jsonString) {
const projectConfig = JSON.parse(jsonString);
const contracts = {};
Object.entries(projectConfig.contracts).forEach(([key, value]) => {
const v = value;
if (v.config && typeof v.config === 'string') {
contracts[key] = v.config;
}
else {
contracts[key] = (0, contractSchemaJsonParser_1.parseJson)(v.config);
}
});
// Add default plugins if none are provided
const plugins = projectConfig.plugins || [
{ name: 'ponder' },
{ name: 'react' }
];
// If networks exists, include it as-is
const networks = projectConfig.networks;
return {
name: projectConfig.name,
scopes: Object.entries(projectConfig.scopes).map(([key, value]) => {
return this.loadScopeConfig(key, value);
}),
contracts: contracts,
...(networks ? { networks } : {}),
plugins: plugins,
};
}
loadScopeConfig(name, scopeConfig) {
return {
name: scopeConfig.name,
owner: scopeConfig.owner,
whitelist: scopeConfig.whitelist !== undefined ? scopeConfig.whitelist : true,
userAssign: scopeConfig.userAssign !== undefined ? scopeConfig.userAssign : false,
userPatch: scopeConfig.userPatch !== undefined ? scopeConfig.userPatch : false,
bankers: scopeConfig.bankers,
operators: scopeConfig.operators,
};
}
}
exports.JSONProjectConfigLoader = JSONProjectConfigLoader;