UNPKG

quasvel

Version:

Access and interact with Aragon Organizations and their apps.

46 lines (36 loc) 1.29 kB
import { AppOrAddress, StepDescribed } from '../../types' import App from '../../entities/App' type ForwardingPathDescriptionTreeEntry = | AppOrAddress | [AppOrAddress, ForwardingPathDescriptionTreeEntry[]] type ForwardingPathDescriptionTree = ForwardingPathDescriptionTreeEntry[] export default class ForwardingPathDescription { #installedApps: App[] readonly describedSteps: StepDescribed[] constructor(describedSteps: StepDescribed[], installedApps: App[]) { this.#installedApps = installedApps this.describedSteps = describedSteps } // Return a tree that can get used to render the path. tree(): ForwardingPathDescriptionTree { const docoratedStep = this.describedSteps.map(async (step) => { const app = this.#installedApps.find((app) => app.address === step.to) if (app) { return { ...step, app, } } }) return [] } // Renders the forwarding path description as text toString(): string { return this.tree().toString() } // TBD: a utility that makes it easy to render the tree, // e.g. as a nested list in HTML or React. reduce(callback: Function): any {} } export { describePath, describeTransaction } from './describe' export { decodeForwardingPath } from './decode'