UNPKG

@ts-for-gir/lib

Version:

Typescript .d.ts generator from GIR for gjs

57 lines (56 loc) 2.01 kB
import { Logger } from "../logger.js"; import { promisifyNamespaceFunctions } from "../gir/namespace.js"; import { override as overrideGLib } from "./dts/glib.js"; import { override as overrideGObject } from "./dts/gobject.js"; import { DtsGenerator } from "./dts.js"; export class DtsInlineGenerator extends DtsGenerator { log; constructor(namespace, options) { super(namespace, options); this.log = new Logger(options.verbose, DtsInlineGenerator.name); } generateNamespace(node) { const { namespace, options } = this; this.log.debug(`Resolving the types of ${namespace.namespace}...`); let suffix = ""; if (!options.noAdvancedVariants && node.namespace === "GLib") { suffix = `\n${overrideGLib(node)}\n`; } else if (node.namespace === "GObject") { suffix = `\n${overrideGObject(node)}\n`; } try { const { namespace: name, version } = node.dependency; const header = ` /** * ${name} ${version} * * Generated from ${node.package_version.join(".")} */ `; const base = ` `; if (options.promisify) { promisifyNamespaceFunctions(node); } const content = Array.from(node.members.values()) .map(m => { return `${(Array.isArray(m) ? m : [m]) .map(m => (m.emit ? m.asString(this) : "")) .join("\n")}`; }) .join("\n"); const output = [header, base, content, suffix].join("\n\n"); this.log.debug(`Printing ${namespace.namespace}...`); return Promise.resolve(output); } catch (err) { this.log.error(`Failed to generate namespace: ${node.namespace}`, err); return Promise.resolve(null); } } async stringifyNamespace(node) { return this.generateNamespace(node); } } //# sourceMappingURL=dts-inline.js.map