UNPKG

@patchworkdev/common

Version:

Patchwork Development Kit

97 lines (96 loc) 3.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JSONProjectConfigGen = void 0; const contractSchema_1 = require("../codegen/contractSchema"); const contractSchemaJsonParser_1 = require("../codegen/contractSchemaJsonParser"); const generator_1 = require("../codegen/generator"); const jsonContractConfigGen_1 = require("./jsonContractConfigGen"); class JSONProjectConfigGen { constructor() { } gen(projectConfig) { let contractConfigString = ''; Object.entries(projectConfig.contracts).forEach(([key, value]) => { if (contractConfigString.length > 0) { contractConfigString += ',\n'; } ; contractConfigString += this.genContractConfig(key, value); }); // Create default plugins if none specified const plugins = projectConfig.plugins || [ { name: 'ponder' }, { name: 'react' } ]; return `` + `{\n` + ` "$schema": "https://patchwork.dev/schema/patchwork-project-config.schema.json",\n` + ` "name": "${projectConfig.name}",\n` + ` "plugins": ${JSON.stringify(plugins, null, 4).replace(/^/gm, ' ')},\n` + // Add plugins with proper indentation ` "scopes": {\n` + projectConfig.scopes.map(scope => { return this.genScopeConfig(scope); }).join(',\n') + `\n },\n` + ` "contracts": {\n` + contractConfigString + `\n` + ` }\n` + `}`; } genScopeConfig(scopeConfig) { const scopeProps = []; scopeProps.push(`"name": "${scopeConfig.name}"`); if (scopeConfig.owner) { scopeProps.push(`"owner": "${scopeConfig.owner}"`); } if (scopeConfig.whitelist !== undefined) { scopeProps.push(`"whitelist": ${scopeConfig.whitelist}`); } if (scopeConfig.userAssign !== undefined) { scopeProps.push(`"userAssign": ${scopeConfig.userAssign}`); } if (scopeConfig.userPatch !== undefined) { scopeProps.push(`"userPatch": ${scopeConfig.userPatch}`); } if (scopeConfig.bankers) { scopeProps.push(`"bankers": [${scopeConfig.bankers.map(banker => `"${banker}"`).join(',')}]`); } if (scopeConfig.operators) { scopeProps.push(`"operators": [${scopeConfig.operators.map(operator => `"${operator}"`).join(',')}]`); } return ` "${scopeConfig.name}": {\n` + (0, generator_1.ind)(12, scopeProps.join(',\n')) + ` }`; } genMintConfigs(mintConfigs) { if (!mintConfigs) return '{}'; return JSON.stringify(mintConfigs); } genPatchFees(patchFees) { if (!patchFees) return '{}'; return JSON.stringify(patchFees); } genAssignFees(assignFees) { if (!assignFees) return '{}'; return JSON.stringify(assignFees); } genContractConfig(name, value) { if (typeof value === 'string') { return ` "${name}": {\n` + ` "config": "${value}"` + ` }`; } else { const generator = new jsonContractConfigGen_1.JSONContractConfigGen(); const contractConfig = (0, contractSchemaJsonParser_1.parseJson)(value); const contractConfigString = generator.gen(new contractSchema_1.ContractSchemaImpl(contractConfig)).split('\n'); contractConfigString.pop(); return ` "${name}": {\n` + ` "config": ${contractConfigString.join('\n ')}` + ` }`; } } } exports.JSONProjectConfigGen = JSONProjectConfigGen;