import { Component, Input, OnInit } from '@angular/core'; import { Env, StateService } from 'src/app/services/state.service'; @Component({ selector: 'app-code-template', templateUrl: './code-template.component.html', styleUrls: ['./code-template.component.scss'] }) export class CodeTemplateComponent implements OnInit { @Input() network: string; @Input() code: any; @Input() hostname: string; @Input() method: 'get' | 'post' | 'websocket' = 'get'; env: Env; constructor( private stateService: StateService, ) { } ngOnInit(): void { this.env = this.stateService.env; } npmGithubLink(){ let npmLink = `https://github.com/mempool/mempool.js`; if (this.network === 'bisq') { npmLink = `https://github.com/mempool/mempool.js/tree/main/npm-bisq-js`; } if (this.network === 'liquid') { npmLink = `https://github.com/mempool/mempool.js/tree/main/npm-liquid-js`; } return npmLink; } npmModuleLink() { let npmLink = `https://www.npmjs.org/package/@mempool/mempool.js`; if (this.network === 'bisq') { npmLink = `https://www.npmjs.org/package/@mempool/bisq.js`; } if (this.network === 'liquid') { npmLink = `https://www.npmjs.org/package/@mempool/liquid.js`; } return npmLink; } normalizeHostsESModule(codeText: string) { if (this.env.BASE_MODULE === 'mempool') { if (['liquid', 'bisq'].includes(this.network)) { codeText = codeText.replace('%{0}', this.network); } else { codeText = codeText.replace('%{0}', 'bitcoin'); } if(['', 'main', 'liquid', 'bisq'].includes(this.network)) { codeText = codeText.replace('mempoolJS();', `mempoolJS({ hostname: '${document.location.hostname}' });`); } else { codeText = codeText.replace('mempoolJS();', `mempoolJS({ hostname: '${document.location.hostname}', network: '${this.network}' });`); } } if (this.env.BASE_MODULE === 'bisq') { codeText = codeText.replace('} = mempoolJS();', ` = bisqJS();`); codeText = codeText.replace('{ %{0}: ', ''); } if (this.env.BASE_MODULE === 'liquid') { codeText = codeText.replace('} = mempoolJS();', ` = liquidJS();`); codeText = codeText.replace('{ %{0}: ', ''); } return codeText; } normalizeHostsCommonJS(codeText: string) { if (this.env.BASE_MODULE === 'mempool') { if (['liquid', 'bisq'].includes(this.network)) { codeText = codeText.replace('%{0}', this.network); } else { codeText = codeText.replace('%{0}', 'bitcoin'); } if(['', 'main', 'liquid', 'bisq'].includes(this.network)) { codeText = codeText.replace('mempoolJS();', `mempoolJS({ hostname: '${document.location.hostname}' });`); } else { codeText = codeText.replace('mempoolJS();', `mempoolJS({ hostname: '${document.location.hostname}', network: '${this.network}' });`); } } if (this.env.BASE_MODULE === 'bisq') { codeText = codeText.replace('} = mempoolJS();', ` = bisqJS();`); codeText = codeText.replace('{ %{0}: ', ''); } if (this.env.BASE_MODULE === 'liquid') { codeText = codeText.replace('} = mempoolJS();', ` = liquidJS();`); codeText = codeText.replace('{ %{0}: ', ''); } return codeText; } wrapEsModule(code: any) { let codeText: string; if (code.codeTemplate) { codeText = this.normalizeHostsESModule(code.codeTemplate.esModule); if(this.network === '' || this.network === 'main') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleMainnet.esModule); } if (this.network === 'testnet') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleTestnet.esModule); } if (this.network === 'signet') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleSignet.esModule); } if (this.network === 'liquid') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleLiquid.esModule); } if (this.network === 'bisq') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleBisq.esModule); } let importText = `import mempoolJS from "@mempool/mempool.js";`; if (this.env.BASE_MODULE === 'bisq') { importText = `import bisqJS from "@mempool/bisq.js";`; } if (this.env.BASE_MODULE === 'liquid') { importText = `import liquidJS from "@mempool/liquid.js";`; } return `${importText} const init = async () => { ${codeText} }; init();`; } } wrapCommonJS(code: any) { let codeText: string; if (code.codeTemplate) { codeText = this.normalizeHostsCommonJS(code.codeTemplate.commonJS); if(this.network === '' || this.network === 'main') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleMainnet.esModule); } if (this.network === 'testnet') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleTestnet.esModule); } if (this.network === 'signet') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleSignet.esModule); } if (this.network === 'liquid') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleLiquid.esModule); } if (this.network === 'bisq') { codeText = this.replaceJSPlaceholder(codeText, code.codeSampleBisq.esModule); } let importText = ``; if (this.env.BASE_MODULE === 'bisq') { importText = ``; } if (this.env.BASE_MODULE === 'liquid') { importText = ``; } let resultHtml = '
'; if (this.method === 'websocket') { resultHtml = `Waiting for data
Waiting for data
Waiting for data
Waiting for data