@gtkx/codegen 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,7 @@ type PlainTypeMembersOptions = {
20
20
  context: ModuleContext;
21
21
  className: string;
22
22
  callables: Callables;
23
- gtypeExpr: string | undefined;
23
+ hasGtype: boolean;
24
24
  };
25
25
  declare const renderInstanceMethodSignature: InstanceMemberRenderer;
26
26
  declare const renderClassInstanceMember: InstanceMemberRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"callables.d.ts","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callables.d.ts","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAmBrD,KAAK,SAAS,GAAG;IACb,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AAoBF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,aAAa,EACpB,YAAY,CAAC,EAAE,MAAM,KACpB,MAAM,GAAG,SAAS,CAAC;AAExB,KAAK,uBAAuB,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAWF,QAAA,MAAM,6BAA6B,EAAE,sBAGpC,CAAC;AAEF,QAAA,MAAM,yBAAyB,EAAE,sBAShC,CAAC;AAKF,QAAA,MAAM,kBAAkB,GAAI,SAAS,aAAa,EAAE,UAAU,WAAW,EAAE,OAAO,aAAa,KAAG,SACF,CAAC;AAEjG,QAAA,MAAM,aAAa,GAAI,WAAW,MAAM,EAAE,WAAW,SAAS,KAAG,aAI/D,CAAC;AAEH,QAAA,MAAM,eAAe,GAAI,WAAW,WAAW,EAAE,KAAG,WAAW,EAM1D,CAAC;AAwBN,QAAA,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,WAAW,SAAS,KAAG,IAUxE,CAAC;AAiLF,QAAA,MAAM,yBAAyB,GAC3B,SAAS,aAAa,EACtB,UAAU,WAAW,EACrB,UAAU,WAAW,EAAE,KACxB,WAAW,GAAG,SAYhB,CAAC;AAuCF,QAAA,MAAM,mBAAmB,GAAI,SAAS,aAAa,EAAE,UAAU,WAAW,KAAG,OAKhC,CAAC;AAQ9C,QAAA,MAAM,qBAAqB,GACvB,SAAS,aAAa,EACtB,UAAU,WAAW,EACrB,UAAU;IAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;CAAE,KAC5F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAqBxC,CAAC;AAkCF,QAAA,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,WAAW,SAAS,KAAG,YAAY,EAGjF,CAAC;AAqBF,QAAA,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,WAAW,SAAS,EAAE,gBAAgB,MAAM,KAAG,MAAM,EActG,CAAC;AAuBF,QAAA,MAAM,sBAAsB,GACxB,SAAS,uBAAuB,KACjC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAWhD,CAAC;AAEF,OAAO,EACH,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACrB,CAAC"}
@@ -4,7 +4,7 @@ import { renderBlock } from "../../writer/emit.js";
4
4
  import { matchAsyncFinish } from "./async.js";
5
5
  import { callableDoc, callableSpec } from "./callable-doc.js";
6
6
  import { renderFnExpression } from "./function.js";
7
- import { gtypeMemberDeclaration, gtypeStaticMember } from "./gtype-binding.js";
7
+ import { gtypeMemberDeclaration } from "./gtype-binding.js";
8
8
  import { finishCallExpression, memberName, methodExportName, renderMethodBody, renderMethodReturnType, renderMethodSignature, renderPromisifiedBody, renderPromisifiedSignature, } from "./method.js";
9
9
  import { renderRuntimeOverride, runtimeOverrideRenames } from "./runtime-override.js";
10
10
  const RUNTIME_OWNED_LIFETIME_METHODS = new Set([
@@ -256,10 +256,10 @@ const renderPlainInstanceMethods = (context, methods, claimedNames) => {
256
256
  return blocks;
257
257
  };
258
258
  const renderPlainTypeMembers = (options) => {
259
- const { context, className, callables, gtypeExpr } = options;
259
+ const { context, className, callables, hasGtype } = options;
260
260
  const claimedNames = new Set();
261
261
  const members = [
262
- ...(gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)]),
262
+ ...(hasGtype ? [gtypeMemberDeclaration(context)] : []),
263
263
  ...renderStaticHead(context, callables, className),
264
264
  ...renderPlainInstanceMethods(context, callables.methods, claimedNames),
265
265
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"callables.js","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, uniqBy } from \"@gtkx/utils\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport type { JsDocSpec } from \"../../writer/doc.js\";\nimport { hasUnmarshalableParam } from \"../../analysis/param-capability.js\";\nimport { renderBlock } from \"../../writer/emit.js\";\nimport { matchAsyncFinish } from \"./async.js\";\nimport { callableDoc, callableSpec } from \"./callable-doc.js\";\nimport { renderFnExpression } from \"./function.js\";\nimport { gtypeMemberDeclaration, gtypeStaticMember } from \"./gtype-binding.js\";\nimport {\n finishCallExpression,\n memberName,\n methodExportName,\n renderMethodBody,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedBody,\n renderPromisifiedSignature,\n} from \"./method.js\";\nimport { renderRuntimeOverride, runtimeOverrideRenames } from \"./runtime-override.js\";\n\ntype Callables = {\n constructors: GirFunction[];\n functions: GirFunction[];\n methods: GirFunction[];\n};\n\ntype InstanceScope = {\n ownerName: string;\n methodByName: Map<string, GirFunction>;\n statics: GirFunction[];\n};\n\ntype CallableMemberOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n isStatic: boolean;\n returnTypeOverride?: string | undefined;\n canUseRuntimeOverride?: boolean;\n};\n\ntype StaticEntryOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n ownerName: string;\n returnTypeOverride?: string | undefined;\n};\n\ntype ResolvedInstanceMember = {\n name: string;\n finishFn: GirFunction | undefined;\n};\n\ntype StaticMember = {\n callable: GirFunction;\n name: string;\n};\n\ntype InstanceMemberRenderer = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n) => string | undefined;\n\ntype PlainTypeMembersOptions = {\n context: ModuleContext;\n className: string;\n callables: Callables;\n gtypeExpr: string | undefined;\n};\n\nconst RUNTIME_OWNED_LIFETIME_METHODS: Set<string> = new Set([\n \"force_floating\",\n \"free\",\n \"ref\",\n \"ref_sink\",\n \"take_ref\",\n \"unref\",\n]);\n\nconst renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }) =>\n `${memberDoc(context, callable, finishFn)}${memberSignatureText(context, callable, name, { finishFn })};`,\n);\n\nconst renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }, scope) =>\n finishFn === undefined\n ? renderInstanceMethod(context, callable, name)\n : renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: false,\n ownerName: scope.ownerName,\n }),\n);\n\nconst memberDoc = (context: ModuleContext, callable: GirFunction, finishFn: GirFunction | undefined): string =>\n callableDoc(context, callable, { finishFn });\n\nconst instanceMemberSpec = (context: ModuleContext, callable: GirFunction, scope: InstanceScope): JsDocSpec =>\n callableSpec(context, callable, { finishFn: matchFinishFunction(context, callable, scope) });\n\nconst instanceScope = (ownerName: string, callables: Callables): InstanceScope => ({\n ownerName,\n methodByName: indexMethodsByName(callables.methods),\n statics: [...callables.constructors, ...callables.functions],\n});\n\nconst dedupeCallables = (callables: GirFunction[]): GirFunction[] =>\n uniqBy(\n callables.filter(\n (callable): callable is GirFunction & { cIdentifier: string } => callable.cIdentifier !== undefined,\n ),\n (callable) => callable.cIdentifier,\n );\n\nconst getEmittableCIdentifier = (context: ModuleContext, callable: GirFunction): string | undefined =>\n isEmittableCallable(context, callable) ? callable.cIdentifier : undefined;\n\nconst renderBinding = (\n context: ModuleContext,\n callable: GirFunction,\n): { text: string; cIdentifier: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const expression = renderFnExpression(context, callable);\n\n if (expression === undefined) {\n return undefined;\n }\n\n return { text: `const ${toCamelIdentifier(cIdentifier)} = ${expression};`, cIdentifier };\n};\n\nconst generateBindings = (context: ModuleContext, callables: Callables): void => {\n const all = [...callables.constructors, ...callables.functions, ...callables.methods];\n\n for (const callable of all) {\n const binding = renderBinding(context, callable);\n\n if (binding !== undefined) {\n context.module.appendBinding(binding.text, binding.cIdentifier);\n }\n }\n};\n\nconst resolveCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (callable: GirFunction) => string | undefined,\n): { cIdentifier: string; name: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return { cIdentifier, name };\n};\n\nconst runtimeOverrideMember = (\n callable: GirFunction,\n name: string,\n doc: string,\n canUseRuntimeOverride: boolean | undefined,\n): string | undefined => {\n if (canUseRuntimeOverride !== true) {\n return undefined;\n }\n\n const override = renderRuntimeOverride(callable, name);\n\n return override === undefined ? undefined : `${doc}${override}`;\n};\n\nconst renderCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n options: CallableMemberOptions,\n): string | undefined => {\n const resolved = resolveCallableMember(context, callable, options.resolveName);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n const { cIdentifier, name } = resolved;\n const renames = options.canUseRuntimeOverride === true ? runtimeOverrideRenames(callable) : undefined;\n const doc = callableDoc(context, callable, { renames });\n const override = runtimeOverrideMember(callable, name, doc, options.canUseRuntimeOverride);\n\n if (override !== undefined) {\n return override;\n }\n\n const signature = renderMethodSignature(context, callable);\n const returnType = options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n const body = renderMethodBody(context, callable, {\n bindingExpression: toCamelIdentifier(cIdentifier),\n returnTypeOverride: options.returnTypeOverride,\n });\n\n const prefix = options.isStatic ? \"static \" : \"\";\n const header = `${prefix}${name}(${signature}): ${returnType}`;\n\n return `${doc}${renderBlock(header, body)}`;\n};\n\nconst renderStaticEntry = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string | undefined => {\n const finishFn = matchStaticFinishFunction(context, callable, siblings);\n\n if (finishFn !== undefined) {\n const name = options.resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: true,\n ownerName: options.ownerName,\n });\n }\n\n return renderCallableMember(context, callable, {\n resolveName: options.resolveName,\n isStatic: true,\n returnTypeOverride: options.returnTypeOverride,\n });\n};\n\nconst renderInstanceMethod = (\n context: ModuleContext,\n callable: GirFunction,\n nameOverride?: string,\n): string | undefined =>\n renderCallableMember(context, callable, {\n resolveName: (member) => nameOverride ?? methodExportName(member),\n isStatic: false,\n canUseRuntimeOverride: true,\n });\n\nconst isEmittableMemberName = (name: string): boolean => name !== \"constructor\" && name.length > 0;\n\nconst resolveInstanceMember = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n): ResolvedInstanceMember | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = nameOverride ?? methodExportName(callable);\n\n if (!isEmittableMemberName(name)) {\n return undefined;\n }\n\n const finishFn = matchFinishFunction(context, callable, scope);\n\n if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return { name, finishFn };\n};\n\nfunction instanceMemberRenderer(\n render: (\n context: ModuleContext,\n callable: GirFunction,\n member: ResolvedInstanceMember,\n scope: InstanceScope,\n ) => string | undefined,\n): InstanceMemberRenderer {\n return (context, callable, scope, nameOverride) => {\n const member = resolveInstanceMember(context, callable, scope, nameOverride);\n\n return member === undefined ? undefined : render(context, callable, member, scope);\n };\n}\n\nconst memberSignatureText = (\n context: ModuleContext,\n callable: GirFunction,\n name: string,\n options: { finishFn: GirFunction | undefined; returnTypeOverride?: string | undefined },\n): string => {\n const promisified =\n options.finishFn === undefined ? undefined : renderPromisifiedSignature(context, callable, options.finishFn);\n\n const signature = promisified?.signature ?? renderMethodSignature(context, callable);\n\n const returnType =\n promisified?.returnType ?? options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n return `${name}(${signature}): ${returnType}`;\n};\n\nconst matchFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n): GirFunction | undefined =>\n matchAsyncFinish(context.library, callable, [...scope.methodByName.values(), ...scope.statics]);\n\nconst matchStaticFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n): GirFunction | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const finishFn = matchAsyncFinish(context.library, callable, siblings);\n\n if (finishFn === undefined || !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return finishFn;\n};\n\nconst renderPromisifiedCallable = (\n context: ModuleContext,\n callable: GirFunction,\n finishFn: GirFunction,\n member: { name: string; isStatic: boolean; ownerName: string },\n): string | undefined => {\n const cIdentifier = callable.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);\n\n const body = renderPromisifiedBody(\n context,\n callable,\n finishCallExpression(callable, finishFn, member.ownerName),\n toCamelIdentifier(cIdentifier),\n );\n\n const prefix = member.isStatic ? \"static \" : \"\";\n const header = `${prefix}${member.name}(${signature}): ${returnType}`;\n\n return `${memberDoc(context, callable, finishFn)}${renderBlock(header, body)}`;\n};\n\nconst indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {\n const map: Map<string, GirFunction> = new Map();\n\n for (const callable of methods) {\n map.set(callable.name, callable);\n }\n\n return map;\n};\n\nconst isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>\n callable.introspectable &&\n callable.shadowedBy === undefined &&\n callable.cIdentifier !== undefined &&\n !RUNTIME_OWNED_LIFETIME_METHODS.has(callable.name) &&\n !hasUnmarshalableParam(context, callable);\n\nconst constructorMemberName = (girName: string): string | undefined => {\n const camel = memberName(girName);\n\n return isEmittableMemberName(camel) ? camel : undefined;\n};\n\nconst renderStaticSignature = (\n context: ModuleContext,\n callable: GirFunction,\n options?: { returnTypeOverride?: string | undefined; siblings?: GirFunction[] | undefined },\n): { name: string; signature: string } | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = constructorMemberName(callable.name);\n\n if (name === undefined) {\n return undefined;\n }\n\n const finishFn =\n options?.siblings === undefined ? undefined : matchStaticFinishFunction(context, callable, options.siblings);\n\n return {\n name,\n signature: memberSignatureText(context, callable, name, {\n finishFn,\n returnTypeOverride: options?.returnTypeOverride,\n }),\n };\n};\n\nconst staticMemberName = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (girName: string) => string | undefined,\n): string | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = resolveName(callable.name);\n\n return name !== undefined && isEmittableMemberName(name) ? name : undefined;\n};\n\nconst collectStaticMembers = (\n context: ModuleContext,\n group: GirFunction[],\n resolveName: (girName: string) => string | undefined,\n): StaticMember[] => {\n const members: StaticMember[] = [];\n\n for (const callable of group) {\n const name = staticMemberName(context, callable, resolveName);\n\n if (name !== undefined) {\n members.push({ callable, name });\n }\n }\n\n return members;\n};\n\nconst staticMembers = (context: ModuleContext, callables: Callables): StaticMember[] => [\n ...collectStaticMembers(context, callables.constructors, memberName),\n ...collectStaticMembers(context, callables.functions, memberName),\n];\n\nconst collectStaticEntries = (\n context: ModuleContext,\n group: GirFunction[],\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of group) {\n const block = renderStaticEntry(context, callable, siblings, options);\n\n if (block !== undefined) {\n blocks.push(block);\n }\n }\n\n return blocks;\n};\n\nconst renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {\n const siblings = [...callables.constructors, ...callables.functions];\n\n return [\n ...collectStaticEntries(context, callables.constructors, siblings, {\n resolveName: (member) => constructorMemberName(member.name),\n ownerName: ownerClassName,\n returnTypeOverride: ownerClassName,\n }),\n ...collectStaticEntries(context, callables.functions, siblings, {\n resolveName: (member) => memberName(member.name),\n ownerName: ownerClassName,\n }),\n ];\n};\n\nconst renderPlainInstanceMethods = (\n context: ModuleContext,\n methods: GirFunction[],\n claimedNames: Set<string>,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of methods) {\n const block = renderInstanceMethod(context, callable);\n\n if (block === undefined) {\n continue;\n }\n\n blocks.push(block);\n claimedNames.add(methodExportName(callable));\n }\n\n return blocks;\n};\n\nconst renderPlainTypeMembers = (\n options: PlainTypeMembersOptions,\n): { members: string[]; claimedNames: Set<string> } => {\n const { context, className, callables, gtypeExpr } = options;\n const claimedNames: Set<string> = new Set();\n\n const members: string[] = [\n ...(gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)]),\n ...renderStaticHead(context, callables, className),\n ...renderPlainInstanceMethods(context, callables.methods, claimedNames),\n ];\n\n return { members, claimedNames };\n};\n\nexport {\n renderInstanceMethodSignature,\n renderClassInstanceMember,\n instanceMemberSpec,\n instanceScope,\n dedupeCallables,\n generateBindings,\n matchStaticFinishFunction,\n isEmittableCallable,\n renderStaticSignature,\n renderStaticHead,\n renderPlainTypeMembers,\n staticMembers,\n type Callables,\n type InstanceMemberRenderer,\n type InstanceScope,\n};\n"]}
1
+ {"version":3,"file":"callables.js","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, uniqBy } from \"@gtkx/utils\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport type { JsDocSpec } from \"../../writer/doc.js\";\nimport { hasUnmarshalableParam } from \"../../analysis/param-capability.js\";\nimport { renderBlock } from \"../../writer/emit.js\";\nimport { matchAsyncFinish } from \"./async.js\";\nimport { callableDoc, callableSpec } from \"./callable-doc.js\";\nimport { renderFnExpression } from \"./function.js\";\nimport { gtypeMemberDeclaration } from \"./gtype-binding.js\";\nimport {\n finishCallExpression,\n memberName,\n methodExportName,\n renderMethodBody,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedBody,\n renderPromisifiedSignature,\n} from \"./method.js\";\nimport { renderRuntimeOverride, runtimeOverrideRenames } from \"./runtime-override.js\";\n\ntype Callables = {\n constructors: GirFunction[];\n functions: GirFunction[];\n methods: GirFunction[];\n};\n\ntype InstanceScope = {\n ownerName: string;\n methodByName: Map<string, GirFunction>;\n statics: GirFunction[];\n};\n\ntype CallableMemberOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n isStatic: boolean;\n returnTypeOverride?: string | undefined;\n canUseRuntimeOverride?: boolean;\n};\n\ntype StaticEntryOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n ownerName: string;\n returnTypeOverride?: string | undefined;\n};\n\ntype ResolvedInstanceMember = {\n name: string;\n finishFn: GirFunction | undefined;\n};\n\ntype StaticMember = {\n callable: GirFunction;\n name: string;\n};\n\ntype InstanceMemberRenderer = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n) => string | undefined;\n\ntype PlainTypeMembersOptions = {\n context: ModuleContext;\n className: string;\n callables: Callables;\n hasGtype: boolean;\n};\n\nconst RUNTIME_OWNED_LIFETIME_METHODS: Set<string> = new Set([\n \"force_floating\",\n \"free\",\n \"ref\",\n \"ref_sink\",\n \"take_ref\",\n \"unref\",\n]);\n\nconst renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }) =>\n `${memberDoc(context, callable, finishFn)}${memberSignatureText(context, callable, name, { finishFn })};`,\n);\n\nconst renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }, scope) =>\n finishFn === undefined\n ? renderInstanceMethod(context, callable, name)\n : renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: false,\n ownerName: scope.ownerName,\n }),\n);\n\nconst memberDoc = (context: ModuleContext, callable: GirFunction, finishFn: GirFunction | undefined): string =>\n callableDoc(context, callable, { finishFn });\n\nconst instanceMemberSpec = (context: ModuleContext, callable: GirFunction, scope: InstanceScope): JsDocSpec =>\n callableSpec(context, callable, { finishFn: matchFinishFunction(context, callable, scope) });\n\nconst instanceScope = (ownerName: string, callables: Callables): InstanceScope => ({\n ownerName,\n methodByName: indexMethodsByName(callables.methods),\n statics: [...callables.constructors, ...callables.functions],\n});\n\nconst dedupeCallables = (callables: GirFunction[]): GirFunction[] =>\n uniqBy(\n callables.filter(\n (callable): callable is GirFunction & { cIdentifier: string } => callable.cIdentifier !== undefined,\n ),\n (callable) => callable.cIdentifier,\n );\n\nconst getEmittableCIdentifier = (context: ModuleContext, callable: GirFunction): string | undefined =>\n isEmittableCallable(context, callable) ? callable.cIdentifier : undefined;\n\nconst renderBinding = (\n context: ModuleContext,\n callable: GirFunction,\n): { text: string; cIdentifier: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const expression = renderFnExpression(context, callable);\n\n if (expression === undefined) {\n return undefined;\n }\n\n return { text: `const ${toCamelIdentifier(cIdentifier)} = ${expression};`, cIdentifier };\n};\n\nconst generateBindings = (context: ModuleContext, callables: Callables): void => {\n const all = [...callables.constructors, ...callables.functions, ...callables.methods];\n\n for (const callable of all) {\n const binding = renderBinding(context, callable);\n\n if (binding !== undefined) {\n context.module.appendBinding(binding.text, binding.cIdentifier);\n }\n }\n};\n\nconst resolveCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (callable: GirFunction) => string | undefined,\n): { cIdentifier: string; name: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return { cIdentifier, name };\n};\n\nconst runtimeOverrideMember = (\n callable: GirFunction,\n name: string,\n doc: string,\n canUseRuntimeOverride: boolean | undefined,\n): string | undefined => {\n if (canUseRuntimeOverride !== true) {\n return undefined;\n }\n\n const override = renderRuntimeOverride(callable, name);\n\n return override === undefined ? undefined : `${doc}${override}`;\n};\n\nconst renderCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n options: CallableMemberOptions,\n): string | undefined => {\n const resolved = resolveCallableMember(context, callable, options.resolveName);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n const { cIdentifier, name } = resolved;\n const renames = options.canUseRuntimeOverride === true ? runtimeOverrideRenames(callable) : undefined;\n const doc = callableDoc(context, callable, { renames });\n const override = runtimeOverrideMember(callable, name, doc, options.canUseRuntimeOverride);\n\n if (override !== undefined) {\n return override;\n }\n\n const signature = renderMethodSignature(context, callable);\n const returnType = options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n const body = renderMethodBody(context, callable, {\n bindingExpression: toCamelIdentifier(cIdentifier),\n returnTypeOverride: options.returnTypeOverride,\n });\n\n const prefix = options.isStatic ? \"static \" : \"\";\n const header = `${prefix}${name}(${signature}): ${returnType}`;\n\n return `${doc}${renderBlock(header, body)}`;\n};\n\nconst renderStaticEntry = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string | undefined => {\n const finishFn = matchStaticFinishFunction(context, callable, siblings);\n\n if (finishFn !== undefined) {\n const name = options.resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: true,\n ownerName: options.ownerName,\n });\n }\n\n return renderCallableMember(context, callable, {\n resolveName: options.resolveName,\n isStatic: true,\n returnTypeOverride: options.returnTypeOverride,\n });\n};\n\nconst renderInstanceMethod = (\n context: ModuleContext,\n callable: GirFunction,\n nameOverride?: string,\n): string | undefined =>\n renderCallableMember(context, callable, {\n resolveName: (member) => nameOverride ?? methodExportName(member),\n isStatic: false,\n canUseRuntimeOverride: true,\n });\n\nconst isEmittableMemberName = (name: string): boolean => name !== \"constructor\" && name.length > 0;\n\nconst resolveInstanceMember = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n): ResolvedInstanceMember | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = nameOverride ?? methodExportName(callable);\n\n if (!isEmittableMemberName(name)) {\n return undefined;\n }\n\n const finishFn = matchFinishFunction(context, callable, scope);\n\n if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return { name, finishFn };\n};\n\nfunction instanceMemberRenderer(\n render: (\n context: ModuleContext,\n callable: GirFunction,\n member: ResolvedInstanceMember,\n scope: InstanceScope,\n ) => string | undefined,\n): InstanceMemberRenderer {\n return (context, callable, scope, nameOverride) => {\n const member = resolveInstanceMember(context, callable, scope, nameOverride);\n\n return member === undefined ? undefined : render(context, callable, member, scope);\n };\n}\n\nconst memberSignatureText = (\n context: ModuleContext,\n callable: GirFunction,\n name: string,\n options: { finishFn: GirFunction | undefined; returnTypeOverride?: string | undefined },\n): string => {\n const promisified =\n options.finishFn === undefined ? undefined : renderPromisifiedSignature(context, callable, options.finishFn);\n\n const signature = promisified?.signature ?? renderMethodSignature(context, callable);\n\n const returnType =\n promisified?.returnType ?? options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n return `${name}(${signature}): ${returnType}`;\n};\n\nconst matchFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n): GirFunction | undefined =>\n matchAsyncFinish(context.library, callable, [...scope.methodByName.values(), ...scope.statics]);\n\nconst matchStaticFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n): GirFunction | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const finishFn = matchAsyncFinish(context.library, callable, siblings);\n\n if (finishFn === undefined || !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return finishFn;\n};\n\nconst renderPromisifiedCallable = (\n context: ModuleContext,\n callable: GirFunction,\n finishFn: GirFunction,\n member: { name: string; isStatic: boolean; ownerName: string },\n): string | undefined => {\n const cIdentifier = callable.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);\n\n const body = renderPromisifiedBody(\n context,\n callable,\n finishCallExpression(callable, finishFn, member.ownerName),\n toCamelIdentifier(cIdentifier),\n );\n\n const prefix = member.isStatic ? \"static \" : \"\";\n const header = `${prefix}${member.name}(${signature}): ${returnType}`;\n\n return `${memberDoc(context, callable, finishFn)}${renderBlock(header, body)}`;\n};\n\nconst indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {\n const map: Map<string, GirFunction> = new Map();\n\n for (const callable of methods) {\n map.set(callable.name, callable);\n }\n\n return map;\n};\n\nconst isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>\n callable.introspectable &&\n callable.shadowedBy === undefined &&\n callable.cIdentifier !== undefined &&\n !RUNTIME_OWNED_LIFETIME_METHODS.has(callable.name) &&\n !hasUnmarshalableParam(context, callable);\n\nconst constructorMemberName = (girName: string): string | undefined => {\n const camel = memberName(girName);\n\n return isEmittableMemberName(camel) ? camel : undefined;\n};\n\nconst renderStaticSignature = (\n context: ModuleContext,\n callable: GirFunction,\n options?: { returnTypeOverride?: string | undefined; siblings?: GirFunction[] | undefined },\n): { name: string; signature: string } | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = constructorMemberName(callable.name);\n\n if (name === undefined) {\n return undefined;\n }\n\n const finishFn =\n options?.siblings === undefined ? undefined : matchStaticFinishFunction(context, callable, options.siblings);\n\n return {\n name,\n signature: memberSignatureText(context, callable, name, {\n finishFn,\n returnTypeOverride: options?.returnTypeOverride,\n }),\n };\n};\n\nconst staticMemberName = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (girName: string) => string | undefined,\n): string | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = resolveName(callable.name);\n\n return name !== undefined && isEmittableMemberName(name) ? name : undefined;\n};\n\nconst collectStaticMembers = (\n context: ModuleContext,\n group: GirFunction[],\n resolveName: (girName: string) => string | undefined,\n): StaticMember[] => {\n const members: StaticMember[] = [];\n\n for (const callable of group) {\n const name = staticMemberName(context, callable, resolveName);\n\n if (name !== undefined) {\n members.push({ callable, name });\n }\n }\n\n return members;\n};\n\nconst staticMembers = (context: ModuleContext, callables: Callables): StaticMember[] => [\n ...collectStaticMembers(context, callables.constructors, memberName),\n ...collectStaticMembers(context, callables.functions, memberName),\n];\n\nconst collectStaticEntries = (\n context: ModuleContext,\n group: GirFunction[],\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of group) {\n const block = renderStaticEntry(context, callable, siblings, options);\n\n if (block !== undefined) {\n blocks.push(block);\n }\n }\n\n return blocks;\n};\n\nconst renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {\n const siblings = [...callables.constructors, ...callables.functions];\n\n return [\n ...collectStaticEntries(context, callables.constructors, siblings, {\n resolveName: (member) => constructorMemberName(member.name),\n ownerName: ownerClassName,\n returnTypeOverride: ownerClassName,\n }),\n ...collectStaticEntries(context, callables.functions, siblings, {\n resolveName: (member) => memberName(member.name),\n ownerName: ownerClassName,\n }),\n ];\n};\n\nconst renderPlainInstanceMethods = (\n context: ModuleContext,\n methods: GirFunction[],\n claimedNames: Set<string>,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of methods) {\n const block = renderInstanceMethod(context, callable);\n\n if (block === undefined) {\n continue;\n }\n\n blocks.push(block);\n claimedNames.add(methodExportName(callable));\n }\n\n return blocks;\n};\n\nconst renderPlainTypeMembers = (\n options: PlainTypeMembersOptions,\n): { members: string[]; claimedNames: Set<string> } => {\n const { context, className, callables, hasGtype } = options;\n const claimedNames: Set<string> = new Set();\n\n const members: string[] = [\n ...(hasGtype ? [gtypeMemberDeclaration(context)] : []),\n ...renderStaticHead(context, callables, className),\n ...renderPlainInstanceMethods(context, callables.methods, claimedNames),\n ];\n\n return { members, claimedNames };\n};\n\nexport {\n renderInstanceMethodSignature,\n renderClassInstanceMember,\n instanceMemberSpec,\n instanceScope,\n dedupeCallables,\n generateBindings,\n matchStaticFinishFunction,\n isEmittableCallable,\n renderStaticSignature,\n renderStaticHead,\n renderPlainTypeMembers,\n staticMembers,\n type Callables,\n type InstanceMemberRenderer,\n type InstanceScope,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAqF7D,QAAA,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,IA+ChE,CAAC;AAmTF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA6E7D,QAAA,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,IAsChE,CAAC;AAiTF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -7,7 +7,7 @@ import { indentMembers } from "../../writer/emit.js";
7
7
  import { dedupeCallables, generateBindings, instanceScope, renderClassInstanceMember, renderStaticHead, staticMembers, } from "./callables.js";
8
8
  import { renderClassConstructor, renderConstructorPropsInterface } from "./constructor-props.js";
9
9
  import { getDoc } from "./doc-spec.js";
10
- import { gtypeMemberDeclaration, gtypeStaticMember, renderSourceGtype } from "./gtype-binding.js";
10
+ import { gtypeMemberDeclaration, renderSourceGtype } from "./gtype-binding.js";
11
11
  import { methodExportName } from "./method.js";
12
12
  import { renderPropertyDeclarations } from "./properties.js";
13
13
  import { renderResolvedPropertyAccessor, resolveAccessor } from "./property-accessor.js";
@@ -30,14 +30,7 @@ const generateClass = (context, klass) => {
30
30
  const implemented = resolveImplementedRefs(context, klass);
31
31
  const typeRefs = implemented.map((ref) => omittedTypeRef(ref.typeRef, ref.conflicts));
32
32
  const implementsClause = typeRefs.length === 0 ? "" : ` implements ${typeRefs.join(", ")}`;
33
- const gtypeExpr = renderSourceGtype(context, klass);
34
- const { members, accessors } = renderClassMembers({
35
- context,
36
- klass,
37
- callables,
38
- gtypeExpr,
39
- hasParent: parentExpression !== undefined,
40
- });
33
+ const { members, accessors } = renderClassMembers(context, klass, callables, parentExpression !== undefined);
41
34
  const body = indentMembers(members);
42
35
  const doc = getDoc(klass);
43
36
  const modifier = klass.isAbstract ? "abstract " : "";
@@ -52,7 +45,7 @@ const generateClass = (context, klass) => {
52
45
  });
53
46
  appendMemberDeclarations({ context, klass, className, accessors, implemented });
54
47
  appendInstallMixins(context, className, implemented);
55
- appendClassRegistrations(context, klass, className, gtypeExpr);
48
+ appendClassRegistrations(context, klass, className);
56
49
  };
57
50
  const appendMemberDeclarations = (options) => {
58
51
  const { context, klass, className, accessors, implemented } = options;
@@ -74,11 +67,10 @@ const appendInterfaceMerge = (context, klass, className, implemented) => {
74
67
  code: `export interface ${className} extends ${mergeRefs.join(", ")} {}`,
75
68
  });
76
69
  };
77
- const renderClassMembers = (options) => {
78
- const { context, klass, callables, gtypeExpr } = options;
70
+ const renderClassMembers = (context, klass, callables, hasParent) => {
79
71
  const className = sanitizeTypeIdentifier(klass.name);
80
- const members = gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)];
81
- const constructorBlock = renderClassConstructor(context, klass, className, options.hasParent);
72
+ const members = [gtypeMemberDeclaration(context)];
73
+ const constructorBlock = renderClassConstructor(context, klass, className, hasParent);
82
74
  if (constructorBlock !== undefined) {
83
75
  members.push(constructorBlock);
84
76
  }
@@ -141,7 +133,8 @@ const appendInstallMixins = (context, className, implemented) => {
141
133
  ...localRefs,
142
134
  ]);
143
135
  };
144
- const appendClassRegistrations = (context, klass, className, gtypeExpr) => {
136
+ const appendClassRegistrations = (context, klass, className) => {
137
+ const gtypeExpr = renderSourceGtype(context, klass);
145
138
  appendWrapperClassRegistration(context, {
146
139
  className,
147
140
  gtypeExpr,
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport {\n ancestorClassMethodNames,\n collectInheritedMethods,\n collectInheritedPropertyTypes,\n collectInterfaceMergeOmissions,\n conflictRename,\n type InheritedMethods,\n} from \"../../analysis/inheritance.js\";\nimport {\n areCallablesAssignable,\n type ClaimedMembers,\n claimInterfaceMembers,\n inheritedMembers,\n interfaceConflicts,\n omittedKeys,\n omittedTypeRef,\n} from \"../../analysis/interface-conflicts.js\";\nimport { ancestorChain, getParentRef, type ResolvedAncestor } from \"../../gir/ancestry.js\";\nimport { isEmittableEntity } from \"../../gir/emittable.js\";\nimport { indentMembers } from \"../../writer/emit.js\";\nimport {\n type Callables,\n dedupeCallables,\n generateBindings,\n type InstanceScope,\n instanceScope,\n renderClassInstanceMember,\n renderStaticHead,\n staticMembers,\n} from \"./callables.js\";\nimport { renderClassConstructor, renderConstructorPropsInterface } from \"./constructor-props.js\";\nimport { getDoc } from \"./doc-spec.js\";\nimport { gtypeMemberDeclaration, gtypeStaticMember, renderSourceGtype } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport { renderPropertyDeclarations } from \"./properties.js\";\nimport { renderResolvedPropertyAccessor, resolveAccessor, type ResolvedAccessor } from \"./property-accessor.js\";\nimport { appendWrapperClassRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport { renderVfuncMembers, renderVfuncMetadata } from \"./vtable.js\";\n\ntype ImplementedRef = {\n typeRef: string;\n makerRef: string;\n interfaceKlass: GirClass;\n interfaceNamespace: string;\n conflicts: string[];\n};\n\ntype MemberDeclarationsOptions = {\n context: ModuleContext;\n klass: GirClass;\n className: string;\n accessors: ResolvedAccessor[];\n implemented: ImplementedRef[];\n};\n\ntype ClassMembers = { members: string[]; accessors: ResolvedAccessor[] };\n\ntype ClassMembersOptions = {\n context: ModuleContext;\n klass: GirClass;\n callables: Callables;\n gtypeExpr: string | undefined;\n hasParent: boolean;\n};\n\ntype ImplementedRefOptions = {\n context: ModuleContext;\n klass: GirClass;\n name: string;\n inherited: Set<string>;\n claimed: ClaimedMembers;\n};\n\ntype AppendInstanceMethodsOptions = {\n context: ModuleContext;\n methods: GirFunction[];\n scope: InstanceScope;\n inherited: InheritedMethods;\n members: string[];\n claimedNames: Set<string>;\n className: string;\n};\n\nconst generateClass = (context: ModuleContext, klass: GirClass): void => {\n if (!isEmittableEntity(klass)) {\n return;\n }\n\n const className = sanitizeTypeIdentifier(klass.name);\n\n const callables: Callables = {\n constructors: dedupeCallables(klass.constructors),\n functions: dedupeCallables(klass.functions),\n methods: dedupeCallables(klass.methods),\n };\n\n generateBindings(context, callables);\n const parentExpression = resolveParent(context, klass);\n const extendsClause = renderExtendsClause(context, parentExpression, klass, callables);\n const implemented = resolveImplementedRefs(context, klass);\n const typeRefs = implemented.map((ref) => omittedTypeRef(ref.typeRef, ref.conflicts));\n const implementsClause = typeRefs.length === 0 ? \"\" : ` implements ${typeRefs.join(\", \")}`;\n const gtypeExpr = renderSourceGtype(context, klass);\n\n const { members, accessors } = renderClassMembers({\n context,\n klass,\n callables,\n gtypeExpr,\n hasParent: parentExpression !== undefined,\n });\n\n const body = indentMembers(members);\n const doc = getDoc(klass);\n const modifier = klass.isAbstract ? \"abstract \" : \"\";\n\n context.declare({\n name: className,\n code: `${doc}export ${modifier}class ${className}${extendsClause}${implementsClause} {\\n${body}\\n}`,\n owner: klass.name,\n });\n\n context.declare({\n name: `${className}ConstructorProps`,\n code: renderConstructorPropsInterface(context, klass, className),\n });\n\n appendMemberDeclarations({ context, klass, className, accessors, implemented });\n appendInstallMixins(context, className, implemented);\n appendClassRegistrations(context, klass, className, gtypeExpr);\n};\n\nconst appendMemberDeclarations = (options: MemberDeclarationsOptions): void => {\n const { context, klass, className, accessors, implemented } = options;\n\n for (const declaration of renderPropertyDeclarations(context, klass, className, accessors)) {\n context.declare(declaration);\n }\n\n for (const declaration of renderSignalDeclarations(context, klass, className, false)) {\n context.declare(declaration);\n }\n\n appendInterfaceMerge(context, klass, className, implemented);\n};\n\nconst appendInterfaceMerge = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n implemented: ImplementedRef[],\n): void => {\n if (implemented.length === 0) {\n return;\n }\n\n const mergeRefs = implemented.map((ref) => interfaceMergeRef(context, klass, ref));\n\n context.declare({\n name: className,\n code: `export interface ${className} extends ${mergeRefs.join(\", \")} {}`,\n });\n};\n\nconst renderClassMembers = (options: ClassMembersOptions): ClassMembers => {\n const { context, klass, callables, gtypeExpr } = options;\n const className = sanitizeTypeIdentifier(klass.name);\n\n const members: string[] =\n gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)];\n\n const constructorBlock = renderClassConstructor(context, klass, className, options.hasParent);\n\n if (constructorBlock !== undefined) {\n members.push(constructorBlock);\n }\n\n const claimedNames: Set<string> = new Set();\n members.push(...renderStaticHead(context, callables, className));\n const inherited = collectInheritedMethods(context, klass);\n const scope = instanceScope(className, callables);\n\n appendInstanceMethods({\n context,\n methods: callables.methods,\n scope,\n inherited,\n members,\n claimedNames,\n className,\n });\n\n members.push(...renderVfuncMembers({ context, klass, mode: \"implementation\" }));\n const inheritedPropertyTypes = collectInheritedPropertyTypes(context, klass);\n const inheritedNames = ancestorClassMethodNames(context, klass);\n const accessors: ResolvedAccessor[] = [];\n\n for (const property of klass.properties) {\n const inheritedTypes = inheritedPropertyTypes.get(toCamelIdentifier(property.name));\n\n const accessor = resolveAccessor({\n context,\n property,\n claimedNames,\n inheritedTypes,\n inheritedNames,\n });\n\n if (accessor === undefined) {\n continue;\n }\n\n accessors.push(accessor);\n members.push(renderResolvedPropertyAccessor(context, property, accessor));\n }\n\n members.push(...renderSignalMembers(context, klass));\n\n return { members, accessors };\n};\n\nconst appendInstanceMethods = (options: AppendInstanceMethodsOptions): void => {\n const { context, methods, scope, inherited, members, claimedNames, className } = options;\n\n for (const callable of methods) {\n const rename = conflictRename(context, callable, inherited, className);\n const block = renderClassInstanceMember(context, callable, scope, rename);\n\n if (block === undefined) {\n continue;\n }\n\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n};\n\nconst appendInstallMixins = (context: ModuleContext, className: string, implemented: ImplementedRef[]): void => {\n if (implemented.length === 0) {\n return;\n }\n\n context.addRuntimeImport(\"installMixins\");\n const makerRefs = implemented.map((ref) => ref.makerRef);\n const localRefs = makerRefs.filter((ref) => !ref.includes(\".\"));\n\n context.module.appendRegistration(`installMixins(${className}, [${makerRefs.join(\", \")}]);`, [\n className,\n ...localRefs,\n ]);\n};\n\nconst appendClassRegistrations = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n gtypeExpr: string | undefined,\n): void => {\n appendWrapperClassRegistration(context, {\n className,\n gtypeExpr,\n vfuncs: renderVfuncMetadata(context, klass),\n });\n};\n\nconst addAncestorInterfaceKeys = (context: ModuleContext, ancestor: ResolvedAncestor, keys: Set<string>): void => {\n for (const name of ancestor.klass.implements) {\n const resolved = context.library.resolveType(ancestor.namespaceName, name);\n\n if (resolved?.kind === \"interface\") {\n keys.add(`${resolved.namespace.name}.${resolved.value.name}`);\n }\n }\n};\n\nconst inheritedInterfaceKeys = (context: ModuleContext, klass: GirClass): Set<string> => {\n const keys: Set<string> = new Set();\n\n if (klass.parent === undefined) {\n return keys;\n }\n\n const parent = context.library.resolveType(context.namespace.name, klass.parent);\n\n if (parent?.kind !== \"class\") {\n return keys;\n }\n\n for (const ancestor of ancestorChain(context.library, parent.value, parent.namespace.name)) {\n addAncestorInterfaceKeys(context, ancestor, keys);\n }\n\n return keys;\n};\n\nconst interfaceMergeRef = (context: ModuleContext, klass: GirClass, ref: ImplementedRef): string => {\n const omissions = collectInterfaceMergeOmissions(context, klass, {\n klass: ref.interfaceKlass,\n namespaceName: ref.interfaceNamespace,\n });\n\n return omittedTypeRef(ref.typeRef, [...omissions, ...ref.conflicts]);\n};\n\nconst implementedRefFor = (options: ImplementedRefOptions): ImplementedRef | undefined => {\n const { context, klass, name, inherited } = options;\n const resolved = context.library.resolveType(context.namespace.name, name);\n\n if (resolved?.kind !== \"interface\" || !isEmittableEntity(resolved.value)) {\n return undefined;\n }\n\n if (inherited.has(`${resolved.namespace.name}.${resolved.value.name}`)) {\n return undefined;\n }\n\n const typeName = sanitizeTypeIdentifier(resolved.value.name);\n\n const conflictOptions = {\n context,\n klass,\n iface: resolved.value,\n ifaceNamespace: resolved.namespace.name,\n };\n\n const conflicts = interfaceConflicts(conflictOptions, options.claimed);\n claimInterfaceMembers(conflictOptions, options.claimed);\n\n return {\n typeRef: context.qualify(resolved.namespace.name, typeName),\n makerRef: context.qualify(resolved.namespace.name, `make${typeName}`),\n interfaceKlass: resolved.value,\n interfaceNamespace: resolved.namespace.name,\n conflicts,\n };\n};\n\nconst resolveImplementedRefs = (context: ModuleContext, klass: GirClass): ImplementedRef[] => {\n const inherited = inheritedInterfaceKeys(context, klass);\n const claimed = inheritedMembers(context, klass);\n const refs: ImplementedRef[] = [];\n\n for (const name of klass.implements) {\n const ref = implementedRefFor({ context, klass, name, inherited, claimed });\n\n if (ref !== undefined) {\n refs.push(ref);\n }\n }\n\n return refs;\n};\n\nconst classCallables = (klass: GirClass): Callables => ({\n constructors: klass.constructors,\n functions: klass.functions,\n methods: klass.methods,\n});\n\nconst resolveParentClass = (context: ModuleContext, klass: GirClass): ResolvedAncestor | undefined => {\n const parent = getParentRef(klass);\n\n if (parent === undefined) {\n return undefined;\n }\n\n const resolved = context.library.resolveType(parent.namespaceName ?? context.namespace.name, parent.typeName);\n\n return resolved?.kind === \"class\" ? { klass: resolved.value, namespaceName: resolved.namespace.name } : undefined;\n};\n\nconst addAncestorStatics = (context: ModuleContext, klass: GirClass, table: Map<string, GirFunction>): void => {\n const members = staticMembers(context, classCallables(klass));\n\n for (const member of members) {\n if (!table.has(member.name)) {\n table.set(member.name, member.callable);\n }\n }\n};\n\nconst inheritedStatics = (context: ModuleContext, klass: GirClass): Map<string, GirFunction> => {\n const table: Map<string, GirFunction> = new Map();\n const parent = resolveParentClass(context, klass);\n\n if (parent === undefined) {\n return table;\n }\n\n for (const ancestor of ancestorChain(context.library, parent.klass, parent.namespaceName)) {\n addAncestorStatics(context, ancestor.klass, table);\n }\n\n return table;\n};\n\nconst shadowedStaticNames = (context: ModuleContext, klass: GirClass, callables: Callables): string[] => {\n const inherited = inheritedStatics(context, klass);\n\n return staticMembers(context, callables)\n .filter((member) => {\n const shadowed = inherited.get(member.name);\n\n return shadowed !== undefined && !areCallablesAssignable(context.library, member.callable, shadowed);\n })\n .map((member) => member.name);\n};\n\nconst renderExtendsClause = (\n context: ModuleContext,\n parentExpression: string | undefined,\n klass: GirClass,\n callables: Callables,\n): string => {\n if (parentExpression === undefined) {\n return \"\";\n }\n\n const staticNames = shadowedStaticNames(context, klass, callables);\n\n if (staticNames.length === 0) {\n return ` extends ${parentExpression}`;\n }\n\n context.addRuntimeTypeImport(\"StaticBase\");\n\n return ` extends (${parentExpression} as StaticBase<typeof ${parentExpression}, ${omittedKeys(staticNames)}>)`;\n};\n\nconst resolveParent = (context: ModuleContext, klass: GirClass): string | undefined => {\n const parent = getParentRef(klass);\n\n return parent === undefined\n ? undefined\n : context.qualify(parent.namespaceName ?? context.namespace.name, sanitizeTypeIdentifier(parent.typeName));\n};\n\nexport { generateClass };\n"]}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport {\n ancestorClassMethodNames,\n collectInheritedMethods,\n collectInheritedPropertyTypes,\n collectInterfaceMergeOmissions,\n conflictRename,\n type InheritedMethods,\n} from \"../../analysis/inheritance.js\";\nimport {\n areCallablesAssignable,\n type ClaimedMembers,\n claimInterfaceMembers,\n inheritedMembers,\n interfaceConflicts,\n omittedKeys,\n omittedTypeRef,\n} from \"../../analysis/interface-conflicts.js\";\nimport { ancestorChain, getParentRef, type ResolvedAncestor } from \"../../gir/ancestry.js\";\nimport { isEmittableEntity } from \"../../gir/emittable.js\";\nimport { indentMembers } from \"../../writer/emit.js\";\nimport {\n type Callables,\n dedupeCallables,\n generateBindings,\n type InstanceScope,\n instanceScope,\n renderClassInstanceMember,\n renderStaticHead,\n staticMembers,\n} from \"./callables.js\";\nimport { renderClassConstructor, renderConstructorPropsInterface } from \"./constructor-props.js\";\nimport { getDoc } from \"./doc-spec.js\";\nimport { gtypeMemberDeclaration, renderSourceGtype } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport { renderPropertyDeclarations } from \"./properties.js\";\nimport { renderResolvedPropertyAccessor, resolveAccessor, type ResolvedAccessor } from \"./property-accessor.js\";\nimport { appendWrapperClassRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport { renderVfuncMembers, renderVfuncMetadata } from \"./vtable.js\";\n\ntype ImplementedRef = {\n typeRef: string;\n makerRef: string;\n interfaceKlass: GirClass;\n interfaceNamespace: string;\n conflicts: string[];\n};\n\ntype MemberDeclarationsOptions = {\n context: ModuleContext;\n klass: GirClass;\n className: string;\n accessors: ResolvedAccessor[];\n implemented: ImplementedRef[];\n};\n\ntype ClassMembers = { members: string[]; accessors: ResolvedAccessor[] };\n\ntype ImplementedRefOptions = {\n context: ModuleContext;\n klass: GirClass;\n name: string;\n inherited: Set<string>;\n claimed: ClaimedMembers;\n};\n\ntype AppendInstanceMethodsOptions = {\n context: ModuleContext;\n methods: GirFunction[];\n scope: InstanceScope;\n inherited: InheritedMethods;\n members: string[];\n claimedNames: Set<string>;\n className: string;\n};\n\nconst generateClass = (context: ModuleContext, klass: GirClass): void => {\n if (!isEmittableEntity(klass)) {\n return;\n }\n\n const className = sanitizeTypeIdentifier(klass.name);\n\n const callables: Callables = {\n constructors: dedupeCallables(klass.constructors),\n functions: dedupeCallables(klass.functions),\n methods: dedupeCallables(klass.methods),\n };\n\n generateBindings(context, callables);\n const parentExpression = resolveParent(context, klass);\n const extendsClause = renderExtendsClause(context, parentExpression, klass, callables);\n const implemented = resolveImplementedRefs(context, klass);\n const typeRefs = implemented.map((ref) => omittedTypeRef(ref.typeRef, ref.conflicts));\n const implementsClause = typeRefs.length === 0 ? \"\" : ` implements ${typeRefs.join(\", \")}`;\n const { members, accessors } = renderClassMembers(context, klass, callables, parentExpression !== undefined);\n const body = indentMembers(members);\n const doc = getDoc(klass);\n const modifier = klass.isAbstract ? \"abstract \" : \"\";\n\n context.declare({\n name: className,\n code: `${doc}export ${modifier}class ${className}${extendsClause}${implementsClause} {\\n${body}\\n}`,\n owner: klass.name,\n });\n\n context.declare({\n name: `${className}ConstructorProps`,\n code: renderConstructorPropsInterface(context, klass, className),\n });\n\n appendMemberDeclarations({ context, klass, className, accessors, implemented });\n appendInstallMixins(context, className, implemented);\n appendClassRegistrations(context, klass, className);\n};\n\nconst appendMemberDeclarations = (options: MemberDeclarationsOptions): void => {\n const { context, klass, className, accessors, implemented } = options;\n\n for (const declaration of renderPropertyDeclarations(context, klass, className, accessors)) {\n context.declare(declaration);\n }\n\n for (const declaration of renderSignalDeclarations(context, klass, className, false)) {\n context.declare(declaration);\n }\n\n appendInterfaceMerge(context, klass, className, implemented);\n};\n\nconst appendInterfaceMerge = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n implemented: ImplementedRef[],\n): void => {\n if (implemented.length === 0) {\n return;\n }\n\n const mergeRefs = implemented.map((ref) => interfaceMergeRef(context, klass, ref));\n\n context.declare({\n name: className,\n code: `export interface ${className} extends ${mergeRefs.join(\", \")} {}`,\n });\n};\n\nconst renderClassMembers = (\n context: ModuleContext,\n klass: GirClass,\n callables: Callables,\n hasParent: boolean,\n): ClassMembers => {\n const className = sanitizeTypeIdentifier(klass.name);\n const members: string[] = [gtypeMemberDeclaration(context)];\n const constructorBlock = renderClassConstructor(context, klass, className, hasParent);\n\n if (constructorBlock !== undefined) {\n members.push(constructorBlock);\n }\n\n const claimedNames: Set<string> = new Set();\n members.push(...renderStaticHead(context, callables, className));\n const inherited = collectInheritedMethods(context, klass);\n const scope = instanceScope(className, callables);\n\n appendInstanceMethods({\n context,\n methods: callables.methods,\n scope,\n inherited,\n members,\n claimedNames,\n className,\n });\n\n members.push(...renderVfuncMembers({ context, klass, mode: \"implementation\" }));\n const inheritedPropertyTypes = collectInheritedPropertyTypes(context, klass);\n const inheritedNames = ancestorClassMethodNames(context, klass);\n const accessors: ResolvedAccessor[] = [];\n\n for (const property of klass.properties) {\n const inheritedTypes = inheritedPropertyTypes.get(toCamelIdentifier(property.name));\n\n const accessor = resolveAccessor({\n context,\n property,\n claimedNames,\n inheritedTypes,\n inheritedNames,\n });\n\n if (accessor === undefined) {\n continue;\n }\n\n accessors.push(accessor);\n members.push(renderResolvedPropertyAccessor(context, property, accessor));\n }\n\n members.push(...renderSignalMembers(context, klass));\n\n return { members, accessors };\n};\n\nconst appendInstanceMethods = (options: AppendInstanceMethodsOptions): void => {\n const { context, methods, scope, inherited, members, claimedNames, className } = options;\n\n for (const callable of methods) {\n const rename = conflictRename(context, callable, inherited, className);\n const block = renderClassInstanceMember(context, callable, scope, rename);\n\n if (block === undefined) {\n continue;\n }\n\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n};\n\nconst appendInstallMixins = (context: ModuleContext, className: string, implemented: ImplementedRef[]): void => {\n if (implemented.length === 0) {\n return;\n }\n\n context.addRuntimeImport(\"installMixins\");\n const makerRefs = implemented.map((ref) => ref.makerRef);\n const localRefs = makerRefs.filter((ref) => !ref.includes(\".\"));\n\n context.module.appendRegistration(`installMixins(${className}, [${makerRefs.join(\", \")}]);`, [\n className,\n ...localRefs,\n ]);\n};\n\nconst appendClassRegistrations = (context: ModuleContext, klass: GirClass, className: string): void => {\n const gtypeExpr = renderSourceGtype(context, klass);\n\n appendWrapperClassRegistration(context, {\n className,\n gtypeExpr,\n vfuncs: renderVfuncMetadata(context, klass),\n });\n};\n\nconst addAncestorInterfaceKeys = (context: ModuleContext, ancestor: ResolvedAncestor, keys: Set<string>): void => {\n for (const name of ancestor.klass.implements) {\n const resolved = context.library.resolveType(ancestor.namespaceName, name);\n\n if (resolved?.kind === \"interface\") {\n keys.add(`${resolved.namespace.name}.${resolved.value.name}`);\n }\n }\n};\n\nconst inheritedInterfaceKeys = (context: ModuleContext, klass: GirClass): Set<string> => {\n const keys: Set<string> = new Set();\n\n if (klass.parent === undefined) {\n return keys;\n }\n\n const parent = context.library.resolveType(context.namespace.name, klass.parent);\n\n if (parent?.kind !== \"class\") {\n return keys;\n }\n\n for (const ancestor of ancestorChain(context.library, parent.value, parent.namespace.name)) {\n addAncestorInterfaceKeys(context, ancestor, keys);\n }\n\n return keys;\n};\n\nconst interfaceMergeRef = (context: ModuleContext, klass: GirClass, ref: ImplementedRef): string => {\n const omissions = collectInterfaceMergeOmissions(context, klass, {\n klass: ref.interfaceKlass,\n namespaceName: ref.interfaceNamespace,\n });\n\n return omittedTypeRef(ref.typeRef, [...omissions, ...ref.conflicts]);\n};\n\nconst implementedRefFor = (options: ImplementedRefOptions): ImplementedRef | undefined => {\n const { context, klass, name, inherited } = options;\n const resolved = context.library.resolveType(context.namespace.name, name);\n\n if (resolved?.kind !== \"interface\" || !isEmittableEntity(resolved.value)) {\n return undefined;\n }\n\n if (inherited.has(`${resolved.namespace.name}.${resolved.value.name}`)) {\n return undefined;\n }\n\n const typeName = sanitizeTypeIdentifier(resolved.value.name);\n\n const conflictOptions = {\n context,\n klass,\n iface: resolved.value,\n ifaceNamespace: resolved.namespace.name,\n };\n\n const conflicts = interfaceConflicts(conflictOptions, options.claimed);\n claimInterfaceMembers(conflictOptions, options.claimed);\n\n return {\n typeRef: context.qualify(resolved.namespace.name, typeName),\n makerRef: context.qualify(resolved.namespace.name, `make${typeName}`),\n interfaceKlass: resolved.value,\n interfaceNamespace: resolved.namespace.name,\n conflicts,\n };\n};\n\nconst resolveImplementedRefs = (context: ModuleContext, klass: GirClass): ImplementedRef[] => {\n const inherited = inheritedInterfaceKeys(context, klass);\n const claimed = inheritedMembers(context, klass);\n const refs: ImplementedRef[] = [];\n\n for (const name of klass.implements) {\n const ref = implementedRefFor({ context, klass, name, inherited, claimed });\n\n if (ref !== undefined) {\n refs.push(ref);\n }\n }\n\n return refs;\n};\n\nconst classCallables = (klass: GirClass): Callables => ({\n constructors: klass.constructors,\n functions: klass.functions,\n methods: klass.methods,\n});\n\nconst resolveParentClass = (context: ModuleContext, klass: GirClass): ResolvedAncestor | undefined => {\n const parent = getParentRef(klass);\n\n if (parent === undefined) {\n return undefined;\n }\n\n const resolved = context.library.resolveType(parent.namespaceName ?? context.namespace.name, parent.typeName);\n\n return resolved?.kind === \"class\" ? { klass: resolved.value, namespaceName: resolved.namespace.name } : undefined;\n};\n\nconst addAncestorStatics = (context: ModuleContext, klass: GirClass, table: Map<string, GirFunction>): void => {\n const members = staticMembers(context, classCallables(klass));\n\n for (const member of members) {\n if (!table.has(member.name)) {\n table.set(member.name, member.callable);\n }\n }\n};\n\nconst inheritedStatics = (context: ModuleContext, klass: GirClass): Map<string, GirFunction> => {\n const table: Map<string, GirFunction> = new Map();\n const parent = resolveParentClass(context, klass);\n\n if (parent === undefined) {\n return table;\n }\n\n for (const ancestor of ancestorChain(context.library, parent.klass, parent.namespaceName)) {\n addAncestorStatics(context, ancestor.klass, table);\n }\n\n return table;\n};\n\nconst shadowedStaticNames = (context: ModuleContext, klass: GirClass, callables: Callables): string[] => {\n const inherited = inheritedStatics(context, klass);\n\n return staticMembers(context, callables)\n .filter((member) => {\n const shadowed = inherited.get(member.name);\n\n return shadowed !== undefined && !areCallablesAssignable(context.library, member.callable, shadowed);\n })\n .map((member) => member.name);\n};\n\nconst renderExtendsClause = (\n context: ModuleContext,\n parentExpression: string | undefined,\n klass: GirClass,\n callables: Callables,\n): string => {\n if (parentExpression === undefined) {\n return \"\";\n }\n\n const staticNames = shadowedStaticNames(context, klass, callables);\n\n if (staticNames.length === 0) {\n return ` extends ${parentExpression}`;\n }\n\n context.addRuntimeTypeImport(\"StaticBase\");\n\n return ` extends (${parentExpression} as StaticBase<typeof ${parentExpression}, ${omittedKeys(staticNames)}>)`;\n};\n\nconst resolveParent = (context: ModuleContext, klass: GirClass): string | undefined => {\n const parent = getParentRef(klass);\n\n return parent === undefined\n ? undefined\n : context.qualify(parent.namespaceName ?? context.namespace.name, sanitizeTypeIdentifier(parent.typeName));\n};\n\nexport { generateClass };\n"]}
@@ -5,7 +5,6 @@ type TypeSource = {
5
5
  };
6
6
  declare const gtypeTsType: (context: ModuleContext) => string;
7
7
  declare const gtypeMemberDeclaration: (context: ModuleContext) => string;
8
- declare const gtypeStaticMember: (context: ModuleContext) => string;
9
8
  declare const renderSourceGtype: (context: ModuleContext, source: TypeSource) => string | undefined;
10
- export { gtypeTsType, gtypeMemberDeclaration, gtypeStaticMember, renderSourceGtype };
9
+ export { gtypeTsType, gtypeMemberDeclaration, renderSourceGtype };
11
10
  //# sourceMappingURL=gtype-binding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gtype-binding.d.ts","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAK7D,KAAK,UAAU,GAAG;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAQF,QAAA,MAAM,WAAW,GAAI,SAAS,aAAa,KAAG,MAC6B,CAAC;AAE5E,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,KAAG,MAAsD,CAAC;AAEhH,QAAA,MAAM,iBAAiB,GAAI,SAAS,aAAa,KAAG,MAKnD,CAAC;AAiCF,QAAA,MAAM,iBAAiB,GAAI,SAAS,aAAa,EAAE,QAAQ,UAAU,KAAG,MAAM,GAAG,SAGA,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"gtype-binding.d.ts","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,KAAK,UAAU,GAAG;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,SAAS,aAAa,KAAG,MAC6B,CAAC;AAE5E,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,KAAG,MAAsD,CAAC;AAiChH,QAAA,MAAM,iBAAiB,GAAI,SAAS,aAAa,EAAE,QAAQ,UAAU,KAAG,MAAM,GAAG,SAGA,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,19 +1,7 @@
1
1
  import { sourceStringLiteral } from "@gtkx/utils";
2
2
  import { PRIMITIVE_TS_TYPE } from "../../gir/primitives.js";
3
- import { renderJsDoc } from "../../writer/doc.js";
4
- import { renderBlock } from "../../writer/emit.js";
5
- const GTYPE_NOTE = [
6
- "The GType this class is registered under, read off the class it is accessed on rather than",
7
- "inherited, so a subclass `registerClass` created reports its own type and one that never went",
8
- "through `registerClass` reports the invalid type.",
9
- ].join("\n");
10
3
  const gtypeTsType = (context) => context.namespace.name === "GObject" ? "Type" : PRIMITIVE_TS_TYPE.gtype;
11
4
  const gtypeMemberDeclaration = (context) => `declare __type__: ${gtypeTsType(context)};`;
12
- const gtypeStaticMember = (context) => {
13
- context.addRuntimeImport("getClassType");
14
- const block = renderBlock(`static get __gtype__(): ${gtypeTsType(context)}`, "return getClassType(this);");
15
- return `${renderJsDoc(undefined, GTYPE_NOTE)}${block}`;
16
- };
17
5
  const renderInternGtype = (context, typeName) => {
18
6
  if (typeName === undefined) {
19
7
  return undefined;
@@ -35,5 +23,5 @@ const renderGtypeExpression = (context, typeFnName, typeName) => typeFnName ===
35
23
  const renderSourceGtype = (context, source) => source.glibGetType === undefined
36
24
  ? undefined
37
25
  : renderGtypeExpression(context, source.glibGetType, source.glibTypeName);
38
- export { gtypeTsType, gtypeMemberDeclaration, gtypeStaticMember, renderSourceGtype };
26
+ export { gtypeTsType, gtypeMemberDeclaration, renderSourceGtype };
39
27
  //# sourceMappingURL=gtype-binding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gtype-binding.js","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOnD,MAAM,UAAU,GAAG;IACf,4FAA4F;IAC5F,+FAA+F;IAC/F,mDAAmD;CACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAU,EAAE,CACnD,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAE5E,MAAM,sBAAsB,GAAG,CAAC,OAAsB,EAAU,EAAE,CAAC,qBAAqB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AAEhH,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAU,EAAE;IACzD,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAE3G,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,QAA4B,EAAsB,EAAE;IACnG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,gBAAgB,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAsB,EAAE,UAAkB,EAAsB,EAAE;IAC1F,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAE5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAExC,OAAO,eAAe,mBAAmB,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1F,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,OAAsB,EACtB,UAAkB,EAClB,QAA4B,EACV,EAAE,CACpB,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAE7G,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,MAAkB,EAAsB,EAAE,CACzF,MAAM,CAAC,WAAW,KAAK,SAAS;IAC5B,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { PRIMITIVE_TS_TYPE } from \"../../gir/primitives.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { renderBlock } from \"../../writer/emit.js\";\n\ntype TypeSource = {\n glibGetType: string | undefined;\n glibTypeName: string | undefined;\n};\n\nconst GTYPE_NOTE = [\n \"The GType this class is registered under, read off the class it is accessed on rather than\",\n \"inherited, so a subclass `registerClass` created reports its own type and one that never went\",\n \"through `registerClass` reports the invalid type.\",\n].join(\"\\n\");\n\nconst gtypeTsType = (context: ModuleContext): string =>\n context.namespace.name === \"GObject\" ? \"Type\" : PRIMITIVE_TS_TYPE.gtype;\n\nconst gtypeMemberDeclaration = (context: ModuleContext): string => `declare __type__: ${gtypeTsType(context)};`;\n\nconst gtypeStaticMember = (context: ModuleContext): string => {\n context.addRuntimeImport(\"getClassType\");\n const block = renderBlock(`static get __gtype__(): ${gtypeTsType(context)}`, \"return getClassType(this);\");\n\n return `${renderJsDoc(undefined, GTYPE_NOTE)}${block}`;\n};\n\nconst renderInternGtype = (context: ModuleContext, typeName: string | undefined): string | undefined => {\n if (typeName === undefined) {\n return undefined;\n }\n\n if (context.namespace.name !== \"GObject\") {\n context.addRuntimeImport(\"typeFromName\");\n }\n\n return `typeFromName(${sourceStringLiteral(typeName)})`;\n};\n\nconst renderResolveGtype = (context: ModuleContext, typeFnName: string): string | undefined => {\n const lib = context.namespace.sharedLibrary;\n\n if (lib === undefined) {\n return undefined;\n }\n\n context.addRuntimeImport(\"resolveType\");\n\n return `resolveType(${sourceStringLiteral(lib)}, ${sourceStringLiteral(typeFnName)})`;\n};\n\nconst renderGtypeExpression = (\n context: ModuleContext,\n typeFnName: string,\n typeName: string | undefined,\n): string | undefined =>\n typeFnName === \"intern\" ? renderInternGtype(context, typeName) : renderResolveGtype(context, typeFnName);\n\nconst renderSourceGtype = (context: ModuleContext, source: TypeSource): string | undefined =>\n source.glibGetType === undefined\n ? undefined\n : renderGtypeExpression(context, source.glibGetType, source.glibTypeName);\n\nexport { gtypeTsType, gtypeMemberDeclaration, gtypeStaticMember, renderSourceGtype };\n"]}
1
+ {"version":3,"file":"gtype-binding.js","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAO5D,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAU,EAAE,CACnD,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAE5E,MAAM,sBAAsB,GAAG,CAAC,OAAsB,EAAU,EAAE,CAAC,qBAAqB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AAEhH,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,QAA4B,EAAsB,EAAE;IACnG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,gBAAgB,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAsB,EAAE,UAAkB,EAAsB,EAAE;IAC1F,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;IAE5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAExC,OAAO,eAAe,mBAAmB,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1F,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,OAAsB,EACtB,UAAkB,EAClB,QAA4B,EACV,EAAE,CACpB,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAE7G,MAAM,iBAAiB,GAAG,CAAC,OAAsB,EAAE,MAAkB,EAAsB,EAAE,CACzF,MAAM,CAAC,WAAW,KAAK,SAAS;IAC5B,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { PRIMITIVE_TS_TYPE } from \"../../gir/primitives.js\";\n\ntype TypeSource = {\n glibGetType: string | undefined;\n glibTypeName: string | undefined;\n};\n\nconst gtypeTsType = (context: ModuleContext): string =>\n context.namespace.name === \"GObject\" ? \"Type\" : PRIMITIVE_TS_TYPE.gtype;\n\nconst gtypeMemberDeclaration = (context: ModuleContext): string => `declare __type__: ${gtypeTsType(context)};`;\n\nconst renderInternGtype = (context: ModuleContext, typeName: string | undefined): string | undefined => {\n if (typeName === undefined) {\n return undefined;\n }\n\n if (context.namespace.name !== \"GObject\") {\n context.addRuntimeImport(\"typeFromName\");\n }\n\n return `typeFromName(${sourceStringLiteral(typeName)})`;\n};\n\nconst renderResolveGtype = (context: ModuleContext, typeFnName: string): string | undefined => {\n const lib = context.namespace.sharedLibrary;\n\n if (lib === undefined) {\n return undefined;\n }\n\n context.addRuntimeImport(\"resolveType\");\n\n return `resolveType(${sourceStringLiteral(lib)}, ${sourceStringLiteral(typeFnName)})`;\n};\n\nconst renderGtypeExpression = (\n context: ModuleContext,\n typeFnName: string,\n typeName: string | undefined,\n): string | undefined =>\n typeFnName === \"intern\" ? renderInternGtype(context, typeName) : renderResolveGtype(context, typeFnName);\n\nconst renderSourceGtype = (context: ModuleContext, source: TypeSource): string | undefined =>\n source.glibGetType === undefined\n ? undefined\n : renderGtypeExpression(context, source.glibGetType, source.glibTypeName);\n\nexport { gtypeTsType, gtypeMemberDeclaration, renderSourceGtype };\n"]}
@@ -7,7 +7,7 @@ import { renderJsDoc } from "../../writer/doc.js";
7
7
  import { renderBlock, renderBraced, renderBracedOrEmpty } from "../../writer/emit.js";
8
8
  import { dedupeCallables, generateBindings, instanceScope, isEmittableCallable, renderClassInstanceMember, renderInstanceMethodSignature, renderStaticHead, } from "./callables.js";
9
9
  import { annotationSpec, getDoc } from "./doc-spec.js";
10
- import { gtypeStaticMember, renderSourceGtype } from "./gtype-binding.js";
10
+ import { gtypeMemberDeclaration, renderSourceGtype } from "./gtype-binding.js";
11
11
  import { methodExportName } from "./method.js";
12
12
  import { renderPropertyAccessor, renderPropertyAccessorSignature, } from "./property-accessor.js";
13
13
  import { appendInterfaceRegistration } from "./registration.js";
@@ -215,7 +215,7 @@ const renderInterfaceClass = (context, options) => {
215
215
  const { iface, className, callables, gtypeExpr, implRef } = options;
216
216
  const members = [];
217
217
  if (gtypeExpr !== undefined) {
218
- members.push(renderInterfaceHasInstance(context, className, gtypeExpr), gtypeStaticMember(context));
218
+ members.push(gtypeMemberDeclaration(context), renderInterfaceHasInstance(context, className, gtypeExpr));
219
219
  }
220
220
  members.push(...renderStaticHead(context, callables, className), renderInterfaceBrand(context, implRef));
221
221
  return `${getDoc(iface)}${renderBracedOrEmpty(`export abstract class ${className}`, members.join("\n\n"))}`;