UNPKG

@neo-one/smart-contract-codegen-esnext-esm

Version:

NEO•ONE TypeScript smart contract codegen.

62 lines (55 loc) 1.99 kB
import { getCreateSmartContractName } from '../contract'; import { getRelativeImport, lowerCaseFirst } from '../utils'; export const genAngular = ({ contractsPaths, angularPath, contractsPath, clientPath, }) => { const clientImport = getRelativeImport(angularPath, clientPath); const contractImports = contractsPaths .map(({ name, createContractPath }) => `import { ${getCreateSmartContractName(name)} } from '${getRelativeImport(angularPath, createContractPath)}';`) .join('\n'); const contractProperties = contractsPaths .map(({ name }) => `this.${lowerCaseFirst(name)} = ${getCreateSmartContractName(name)}(this.client);`) .join('\n '); const contractTypeProperties = contractsPaths .map(({ name }) => `public ${lowerCaseFirst(name)}: Contracts['${lowerCaseFirst(name)}'];`) .join('\n '); const injectable = `@Injectable({ providedIn: 'root' })`; const setHost = (host) => `this.client = createClient(${host}); this.developerClients = createDeveloperClients(${host}); ${contractProperties}`; const constructor = `constructor() { ${setHost('')} }`; return { js: ` import { Injectable } from '@angular/core'; import { createClient, createDeveloperClients } from '${clientImport}'; ${contractImports} ${injectable} export class ContractsService { ${constructor} setHost(host) { ${setHost('host')} } } `, ts: ` import { Injectable } from '@angular/core'; import { Client, DeveloperClients } from '@neo-one/client'; import { Contracts } from '${getRelativeImport(angularPath, contractsPath)}'; import { createClient, createDeveloperClients } from '${clientImport}'; ${contractImports} ${injectable} export class ContractsService { public client: Client; public developerClients: DeveloperClients; ${contractTypeProperties} ${constructor} public setHost(host?: string) { ${setHost('host')} } } `, }; }; //# sourceMappingURL=genAngular.js.map