Skip to content

Commit

Permalink
gir: Promisify class members in typescript generator
Browse files Browse the repository at this point in the history
  • Loading branch information
ewlsh committed Jul 17, 2024
1 parent 80cacc3 commit 0e4f120
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 15 deletions.
40 changes: 26 additions & 14 deletions packages/generator-typescript/src/type-definition-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ import {
isInvalid,
filterConflicts,
} from '@ts-for-gir/lib'
import { promisifyFunctions } from '@ts-for-gir/lib/lib/gir/class.js'

function printGirDocComment(tsDoc: TsDoc, config: OptionsGeneration) {
const desc: string[] = []
Expand Down Expand Up @@ -1082,15 +1083,18 @@ class ModuleGenerator extends FormatGenerator<string[]> {

def.push(
...this.generateFunctions(
filterFunctionConflict(
girClass.parent,
girClass,
[...girClass.members].filter(
(member) =>
!(member instanceof IntrospectedStaticClassFunction) &&
!(member instanceof IntrospectedVirtualClassFunction),
promisifyIfEnabled(
this.options,
filterFunctionConflict(
girClass.parent,
girClass,
[...girClass.members].filter(
(member) =>
!(member instanceof IntrospectedStaticClassFunction) &&
!(member instanceof IntrospectedVirtualClassFunction),
),
[],
),
[],
),
indentCount,
`Own methods of ${girClass.namespace.namespace}.${girClass.name}`,
Expand Down Expand Up @@ -1526,11 +1530,9 @@ class ModuleGenerator extends FormatGenerator<string[]> {
if (generatedImplementedProperties.length > 0)
def.push('\n// Inherited properties', ...generatedImplementedProperties)

const filteredImplMethods = filterFunctionConflict(
girClass.namespace,
girClass,
implementedMethods,
[],
const filteredImplMethods = promisifyIfEnabled(
this.options,
filterFunctionConflict(girClass.namespace, girClass, implementedMethods, []),
)
const generatedImplementedMethods = filteredImplMethods.flatMap((m) => m.asString(this))

Expand Down Expand Up @@ -1741,7 +1743,9 @@ class ModuleGenerator extends FormatGenerator<string[]> {
// Newline
out.push('')

promisifyNamespaceFunctions(girModule)
if (this.options.promisify) {
promisifyNamespaceFunctions(girModule)
}

if (girModule.members)
for (const m of girModule.members.values()) {
Expand Down Expand Up @@ -2037,3 +2041,11 @@ class NpmPackage<Wrapped extends Dependency | GirModule> {
}
}
}

function promisifyIfEnabled(options: OptionsGeneration, functions: IntrospectedClassFunction[]) {
if (options.promisify) {
return promisifyFunctions(functions)
}

return functions
}
2 changes: 1 addition & 1 deletion packages/lib/src/gir.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export {
IntrospectedNamespaceMember,
IntrospectedClassMember,
} from './gir/base.js'
export { filterConflicts, filterFunctionConflict, FilterBehavior } from './gir/class.js'
export { promisifyFunctions, filterConflicts, filterFunctionConflict, FilterBehavior } from './gir/class.js'
export { resolveDirectedType, resolvePrimitiveType } from './gir/util.js'
export * from './gir/nodes.js'

Expand Down

0 comments on commit 0e4f120

Please sign in to comment.