@gtkx/codegen 1.1.0 → 1.2.0

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.
Files changed (149) hide show
  1. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  2. package/dist/analysis/descriptor-render.js +14 -10
  3. package/dist/analysis/descriptor-render.js.map +1 -1
  4. package/dist/analysis/descriptor.d.ts +11 -5
  5. package/dist/analysis/descriptor.d.ts.map +1 -1
  6. package/dist/analysis/descriptor.js +25 -9
  7. package/dist/analysis/descriptor.js.map +1 -1
  8. package/dist/analysis/interface-conflicts.d.ts +3 -1
  9. package/dist/analysis/interface-conflicts.d.ts.map +1 -1
  10. package/dist/analysis/interface-conflicts.js +3 -8
  11. package/dist/analysis/interface-conflicts.js.map +1 -1
  12. package/dist/analysis/ts-type.d.ts +3 -2
  13. package/dist/analysis/ts-type.d.ts.map +1 -1
  14. package/dist/analysis/ts-type.js +16 -9
  15. package/dist/analysis/ts-type.js.map +1 -1
  16. package/dist/analysis/type-shape.d.ts +3 -2
  17. package/dist/analysis/type-shape.d.ts.map +1 -1
  18. package/dist/analysis/type-shape.js +2 -1
  19. package/dist/analysis/type-shape.js.map +1 -1
  20. package/dist/compile.d.ts +4 -5
  21. package/dist/compile.d.ts.map +1 -1
  22. package/dist/compile.js +56 -4
  23. package/dist/compile.js.map +1 -1
  24. package/dist/docs/api-reference.d.ts +2 -0
  25. package/dist/docs/api-reference.d.ts.map +1 -1
  26. package/dist/docs/api-reference.js +1 -1
  27. package/dist/docs/api-reference.js.map +1 -1
  28. package/dist/docs/pipeline.d.ts +1 -0
  29. package/dist/docs/pipeline.d.ts.map +1 -1
  30. package/dist/docs/pipeline.js +10 -3
  31. package/dist/docs/pipeline.js.map +1 -1
  32. package/dist/docs/symbol-page.d.ts.map +1 -1
  33. package/dist/docs/symbol-page.js +1 -3
  34. package/dist/docs/symbol-page.js.map +1 -1
  35. package/dist/fingerprint.d.ts +11 -5
  36. package/dist/fingerprint.d.ts.map +1 -1
  37. package/dist/fingerprint.js +22 -19
  38. package/dist/fingerprint.js.map +1 -1
  39. package/dist/gi.d.ts +1 -0
  40. package/dist/gi.d.ts.map +1 -1
  41. package/dist/gi.js +7 -2
  42. package/dist/gi.js.map +1 -1
  43. package/dist/gir/gir-path.d.ts +1 -1
  44. package/dist/gir/gir-path.js +1 -1
  45. package/dist/gir/gir-path.js.map +1 -1
  46. package/dist/gir/library.d.ts +5 -1
  47. package/dist/gir/library.d.ts.map +1 -1
  48. package/dist/gir/library.js +8 -1
  49. package/dist/gir/library.js.map +1 -1
  50. package/dist/gir/parse.d.ts.map +1 -1
  51. package/dist/gir/parse.js +4 -1
  52. package/dist/gir/parse.js.map +1 -1
  53. package/dist/gir/primitives.js +1 -1
  54. package/dist/gir/primitives.js.map +1 -1
  55. package/dist/khronos/args.d.ts.map +1 -1
  56. package/dist/khronos/args.js +8 -6
  57. package/dist/khronos/args.js.map +1 -1
  58. package/dist/khronos/render.d.ts.map +1 -1
  59. package/dist/khronos/render.js +8 -4
  60. package/dist/khronos/render.js.map +1 -1
  61. package/dist/runner.d.ts +2 -0
  62. package/dist/runner.d.ts.map +1 -1
  63. package/dist/runner.js +5 -3
  64. package/dist/runner.js.map +1 -1
  65. package/dist/staging.d.ts.map +1 -1
  66. package/dist/staging.js +1 -1
  67. package/dist/staging.js.map +1 -1
  68. package/dist/store/compile-store.d.ts +0 -1
  69. package/dist/store/compile-store.d.ts.map +1 -1
  70. package/dist/store/compile-store.js +7 -34
  71. package/dist/store/compile-store.js.map +1 -1
  72. package/dist/store/gi/callables.d.ts +1 -3
  73. package/dist/store/gi/callables.d.ts.map +1 -1
  74. package/dist/store/gi/callables.js +19 -4
  75. package/dist/store/gi/callables.js.map +1 -1
  76. package/dist/store/gi/class.d.ts.map +1 -1
  77. package/dist/store/gi/class.js +48 -9
  78. package/dist/store/gi/class.js.map +1 -1
  79. package/dist/store/gi/constant.js +1 -1
  80. package/dist/store/gi/constant.js.map +1 -1
  81. package/dist/store/gi/enum.d.ts.map +1 -1
  82. package/dist/store/gi/enum.js +2 -5
  83. package/dist/store/gi/enum.js.map +1 -1
  84. package/dist/store/gi/interface.js +2 -2
  85. package/dist/store/gi/interface.js.map +1 -1
  86. package/dist/store/gi/method.d.ts.map +1 -1
  87. package/dist/store/gi/method.js +4 -7
  88. package/dist/store/gi/method.js.map +1 -1
  89. package/dist/store/gi/property-accessor.d.ts +0 -3
  90. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  91. package/dist/store/gi/property-accessor.js +15 -108
  92. package/dist/store/gi/property-accessor.js.map +1 -1
  93. package/dist/store/gi/record-constructor.js +3 -3
  94. package/dist/store/gi/record-constructor.js.map +1 -1
  95. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  96. package/dist/store/gi/record-field-accessor.js +15 -3
  97. package/dist/store/gi/record-field-accessor.js.map +1 -1
  98. package/dist/store/gi/return-wrap.js +1 -1
  99. package/dist/store/gi/return-wrap.js.map +1 -1
  100. package/dist/store/gi/signal.d.ts.map +1 -1
  101. package/dist/store/gi/signal.js +25 -4
  102. package/dist/store/gi/signal.js.map +1 -1
  103. package/dist/store/jsx-store.d.ts.map +1 -1
  104. package/dist/store/jsx-store.js +0 -1
  105. package/dist/store/jsx-store.js.map +1 -1
  106. package/dist/store/store-fs.d.ts +0 -1
  107. package/dist/store/store-fs.d.ts.map +1 -1
  108. package/dist/store/store-fs.js +2 -7
  109. package/dist/store/store-fs.js.map +1 -1
  110. package/dist/xml.d.ts +1 -0
  111. package/dist/xml.d.ts.map +1 -1
  112. package/dist/xml.js +28 -1
  113. package/dist/xml.js.map +1 -1
  114. package/overrides/gobject/object.ts.ejs +2 -0
  115. package/package.json +3 -3
  116. package/src/analysis/descriptor-render.ts +19 -10
  117. package/src/analysis/descriptor.ts +43 -9
  118. package/src/analysis/interface-conflicts.ts +6 -8
  119. package/src/analysis/ts-type.ts +30 -11
  120. package/src/analysis/type-shape.ts +5 -2
  121. package/src/compile.ts +87 -6
  122. package/src/docs/api-reference.ts +3 -1
  123. package/src/docs/pipeline.ts +13 -7
  124. package/src/docs/symbol-page.ts +0 -4
  125. package/src/fingerprint.ts +31 -38
  126. package/src/gi.ts +9 -2
  127. package/src/gir/gir-path.ts +1 -1
  128. package/src/gir/library.ts +9 -1
  129. package/src/gir/parse.ts +6 -1
  130. package/src/gir/primitives.ts +1 -1
  131. package/src/khronos/args.ts +9 -6
  132. package/src/khronos/render.ts +8 -6
  133. package/src/runner.ts +7 -3
  134. package/src/staging.ts +1 -3
  135. package/src/store/compile-store.ts +7 -40
  136. package/src/store/gi/callables.ts +26 -7
  137. package/src/store/gi/class.ts +63 -7
  138. package/src/store/gi/constant.ts +1 -1
  139. package/src/store/gi/enum.ts +2 -6
  140. package/src/store/gi/interface.ts +2 -2
  141. package/src/store/gi/method.ts +4 -9
  142. package/src/store/gi/property-accessor.ts +22 -193
  143. package/src/store/gi/record-constructor.ts +3 -3
  144. package/src/store/gi/record-field-accessor.ts +18 -3
  145. package/src/store/gi/return-wrap.ts +1 -1
  146. package/src/store/gi/signal.ts +30 -4
  147. package/src/store/jsx-store.ts +0 -1
  148. package/src/store/store-fs.ts +3 -9
  149. package/src/xml.ts +43 -1
@@ -1 +1 @@
1
- {"version":3,"file":"interface-conflicts.js","sourceRoot":"","sources":["../../src/analysis/interface-conflicts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { resolveClassOrInterface, type ResolvedAncestor, resolveInterfaces } from \"../gir/ancestry.js\";\nimport { isOutParameter } from \"../gir/parameter.js\";\nimport { memberName } from \"../store/gi/method.js\";\nimport { protectedChainSlotKeys, vfuncCallables, vfuncMemberNames } from \"../store/gi/vtable.js\";\nimport { forEachAncestor } from \"./inheritance.js\";\nimport { inputParameters } from \"./param-structure.js\";\nimport { typeKey } from \"./type-key.js\";\n\ntype MemberTable = Map<string, GirFunction>;\n\ntype ClaimedMembers = {\n inherited: MemberTable;\n interfaces: MemberTable;\n};\n\ntype InterfaceConflictOptions = {\n context: ModuleContext;\n klass: GirClass;\n iface: GirClass;\n ifaceNamespace: string;\n};\n\ntype CallableKeys = {\n inputs: string[];\n outputs: string[];\n};\n\ntype CallableKeyPair = {\n own: CallableKeys;\n other: CallableKeys;\n};\n\nconst CHAINABLE_SIGNAL_MEMBERS = [\"addEventListener\", \"off\", \"on\", \"once\", \"removeEventListener\"];\n\nconst callableKeys = (library: Library, fn: GirFunction): CallableKeys => ({\n inputs: inputParameters(library, fn).map((entry) => typeKey(library, entry.parameter.type)),\n outputs: [\n typeKey(library, fn.returnValue.type),\n ...fn.parameters\n .filter((parameter) => isOutParameter(parameter))\n .map((parameter) => typeKey(library, parameter.type)),\n ],\n});\n\nconst areKeysEqual = (left: string[], right: string[]): boolean =>\n left.length === right.length && left.every((key, index) => key === right[index]);\n\nconst callableKeyPair = (library: Library, own: GirFunction, other: GirFunction): CallableKeyPair => ({\n own: callableKeys(library, own),\n other: callableKeys(library, other),\n});\n\nconst areCallablesIdentical = (library: Library, own: GirFunction, other: GirFunction): boolean => {\n const keys = callableKeyPair(library, own, other);\n\n return areKeysEqual(keys.own.inputs, keys.other.inputs) && areKeysEqual(keys.own.outputs, keys.other.outputs);\n};\n\nconst areCallablesAssignable = (library: Library, own: GirFunction, other: GirFunction): boolean => {\n const keys = callableKeyPair(library, own, other);\n\n if (keys.own.inputs.length > keys.other.inputs.length) {\n return false;\n }\n\n if (keys.own.inputs.some((key, index) => key !== keys.other.inputs[index])) {\n return false;\n }\n\n return areKeysEqual(keys.other.outputs, [\"void\"]) || areKeysEqual(keys.own.outputs, keys.other.outputs);\n};\n\nconst collectMethods = (klass: GirClass, members: MemberTable): void => {\n for (const method of klass.methods) {\n const name = memberName(method.name);\n\n if (method.introspectable && !members.has(name)) {\n members.set(name, method);\n }\n }\n};\n\nconst inheritedMembers = (context: ModuleContext, klass: GirClass): ClaimedMembers => {\n const inherited: MemberTable = new Map();\n\n forEachAncestor(context, klass, (ancestor) => {\n collectMethods(ancestor.klass, inherited);\n });\n\n return { inherited, interfaces: new Map() };\n};\n\nconst interfaceMembers = (options: InterfaceConflictOptions): MemberTable => {\n const members: MemberTable = new Map();\n collectMethods(options.iface, members);\n\n for (const [key, callable] of vfuncCallables(options.context, options.ifaceNamespace, options.iface)) {\n members.set(key, callable);\n }\n\n return members;\n};\n\nconst claimInterfaceMembers = (options: InterfaceConflictOptions, claimed: ClaimedMembers): void => {\n for (const [key, callable] of interfaceMembers(options)) {\n if (!claimed.interfaces.has(key)) {\n claimed.interfaces.set(key, callable);\n }\n }\n};\n\nconst isConflictingMember = (library: Library, claimed: ClaimedMembers, entry: [string, GirFunction]): boolean => {\n const [name, method] = entry;\n const owned = claimed.inherited.get(name);\n\n if (owned !== undefined) {\n return !areCallablesAssignable(library, owned, method);\n }\n\n const sibling = claimed.interfaces.get(name);\n\n return sibling !== undefined && !areCallablesIdentical(library, sibling, method);\n};\n\nconst conflictingMemberNames = (options: InterfaceConflictOptions, claimed: ClaimedMembers): string[] =>\n [...interfaceMembers(options)]\n .filter((entry) => isConflictingMember(options.context.library, claimed, entry))\n .map(([name]) => name);\n\nconst protectedVfuncNames = (options: InterfaceConflictOptions): string[] => {\n const { context, klass, iface, ifaceNamespace } = options;\n const protectedKeys = protectedChainSlotKeys(context, klass);\n\n return vfuncMemberNames(context, ifaceNamespace, iface).filter((key) => protectedKeys.has(key));\n};\n\nconst interfaceConflicts = (options: InterfaceConflictOptions, claimed: ClaimedMembers): string[] => {\n const names = [...conflictingMemberNames(options, claimed), ...protectedVfuncNames(options)];\n\n return names.length === 0 ? names : [...new Set([...names, ...CHAINABLE_SIGNAL_MEMBERS])];\n};\n\nconst rootPrerequisite = (library: Library): ResolvedAncestor[] => {\n const root = resolveClassOrInterface(library, \"GObject\", \"Object\");\n\n return root === undefined ? [] : [root];\n};\n\nconst interfaceSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] => {\n const prerequisites = entry.klass.prerequisites\n .map((name) => resolveClassOrInterface(library, entry.namespaceName, name))\n .filter((prerequisite) => prerequisite !== undefined);\n\n return prerequisites.length === 0 ? rootPrerequisite(library) : prerequisites;\n};\n\nconst classSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] => {\n const interfaces = resolveInterfaces(library, entry.namespaceName, entry.klass.implements);\n\n if (entry.klass.parent === undefined) {\n return interfaces;\n }\n\n const parent = resolveClassOrInterface(library, entry.namespaceName, entry.klass.parent);\n\n return parent === undefined ? interfaces : [parent, ...interfaces];\n};\n\nconst directSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] =>\n entry.klass.isInterface ? interfaceSupertypes(library, entry) : classSupertypes(library, entry);\n\nconst collectSupertypeMembers = (\n library: Library,\n entry: ResolvedAncestor,\n visited: Set<string>,\n members: MemberTable,\n): void => {\n const key = `${entry.namespaceName}.${entry.klass.name}`;\n\n if (visited.has(key)) {\n return;\n }\n\n visited.add(key);\n collectMethods(entry.klass, members);\n\n for (const supertype of directSupertypes(library, entry)) {\n collectSupertypeMembers(library, supertype, visited, members);\n }\n};\n\nconst supertypeMembers = (library: Library, base: ResolvedAncestor): MemberTable => {\n const members: MemberTable = new Map();\n collectSupertypeMembers(library, base, new Set(), members);\n\n return members;\n};\n\nconst prerequisiteConflicts = (library: Library, iface: GirClass, base: ResolvedAncestor): string[] => {\n const members: MemberTable = new Map();\n collectMethods(iface, members);\n const inherited = supertypeMembers(library, base);\n const names: string[] = [];\n\n for (const [name, method] of members) {\n const owned = inherited.get(name);\n\n if (owned !== undefined && !areCallablesAssignable(library, method, owned)) {\n names.push(name);\n }\n }\n\n return names;\n};\n\nconst omittedTypeRef = (typeRef: string, omissions: string[]): string => {\n if (omissions.length === 0) {\n return typeRef;\n }\n\n const keys = [...new Set(omissions)].map((name) => JSON.stringify(name)).join(\" | \");\n\n return `Omit<${typeRef}, ${keys}>`;\n};\n\nexport {\n type ClaimedMembers,\n claimInterfaceMembers,\n inheritedMembers,\n interfaceConflicts,\n omittedTypeRef,\n prerequisiteConflicts,\n};\n"]}
1
+ {"version":3,"file":"interface-conflicts.js","sourceRoot":"","sources":["../../src/analysis/interface-conflicts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAyB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA0BxC,MAAM,wBAAwB,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAElG,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAe,EAAgB,EAAE,CAAC,CAAC;IACvE,MAAM,EAAE,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3F,OAAO,EAAE;QACL,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QACrC,GAAG,EAAE,CAAC,UAAU;aACX,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAChD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;KAC5D;CACJ,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,KAAe,EAAW,EAAE,CAC9D,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAErF,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,GAAgB,EAAE,KAAkB,EAAmB,EAAE,CAAC,CAAC;IAClG,GAAG,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAE,GAAgB,EAAE,KAAkB,EAAW,EAAE;IAC9F,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAElD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,OAAgB,EAAE,GAAgB,EAAE,KAAkB,EAAW,EAAE;IAC/F,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAElD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5G,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,OAAoB,EAAQ,EAAE;IACnE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAsB,EAAE,KAAe,EAAkB,EAAE;IACjF,MAAM,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEzC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;QACzC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAiC,EAAe,EAAE;IACxE,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAiC,EAAE,OAAuB,EAAQ,EAAE;IAC/F,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,OAAuB,EAAE,KAA4B,EAAW,EAAE;IAC7G,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrF,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,OAAiC,EAAE,OAAuB,EAAY,EAAE,CACpG,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC/E,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAE/B,MAAM,mBAAmB,GAAG,CAAC,OAAiC,EAAY,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE7D,OAAO,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAiC,EAAE,OAAuB,EAAY,EAAE;IAChG,MAAM,KAAK,GAAG,CAAC,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7F,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAsB,EAAE;IAC9D,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEnE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,KAAuB,EAAsB,EAAE;IAC1F,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;SAC1E,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;IAE1D,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,KAAuB,EAAsB,EAAE;IACtF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE3F,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,KAAuB,EAAsB,EAAE,CACvF,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEpG,MAAM,uBAAuB,GAAG,CAC5B,OAAgB,EAChB,KAAuB,EACvB,OAAoB,EACpB,OAAoB,EAChB,EAAE;IACN,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAEzD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAErC,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACvD,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,IAAsB,EAAe,EAAE;IAC/E,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAE3D,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAE,IAAsB,EAAY,EAAE;IAClG,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,SAAmB,EAAU,EAAE,CAChD,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,SAAmB,EAAU,EAAE,CACpE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,KAAK,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;AAErF,OAAO,EACH,sBAAsB,EAEtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,qBAAqB,GACxB,CAAC","sourcesContent":["import type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { resolveClassOrInterface, type ResolvedAncestor, resolveInterfaces } from \"../gir/ancestry.js\";\nimport { isOutParameter } from \"../gir/parameter.js\";\nimport { memberName } from \"../store/gi/method.js\";\nimport { protectedChainSlotKeys, vfuncCallables, vfuncMemberNames } from \"../store/gi/vtable.js\";\nimport { forEachAncestor } from \"./inheritance.js\";\nimport { inputParameters } from \"./param-structure.js\";\nimport { typeKey } from \"./type-key.js\";\n\ntype MemberTable = Map<string, GirFunction>;\n\ntype ClaimedMembers = {\n inherited: MemberTable;\n interfaces: MemberTable;\n};\n\ntype InterfaceConflictOptions = {\n context: ModuleContext;\n klass: GirClass;\n iface: GirClass;\n ifaceNamespace: string;\n};\n\ntype CallableKeys = {\n inputs: string[];\n outputs: string[];\n};\n\ntype CallableKeyPair = {\n own: CallableKeys;\n other: CallableKeys;\n};\n\nconst CHAINABLE_SIGNAL_MEMBERS = [\"addEventListener\", \"off\", \"on\", \"once\", \"removeEventListener\"];\n\nconst callableKeys = (library: Library, fn: GirFunction): CallableKeys => ({\n inputs: inputParameters(library, fn).map((entry) => typeKey(library, entry.parameter.type)),\n outputs: [\n typeKey(library, fn.returnValue.type),\n ...fn.parameters\n .filter((parameter) => isOutParameter(parameter))\n .map((parameter) => typeKey(library, parameter.type)),\n ],\n});\n\nconst areKeysEqual = (left: string[], right: string[]): boolean =>\n left.length === right.length && left.every((key, index) => key === right[index]);\n\nconst callableKeyPair = (library: Library, own: GirFunction, other: GirFunction): CallableKeyPair => ({\n own: callableKeys(library, own),\n other: callableKeys(library, other),\n});\n\nconst areCallablesIdentical = (library: Library, own: GirFunction, other: GirFunction): boolean => {\n const keys = callableKeyPair(library, own, other);\n\n return areKeysEqual(keys.own.inputs, keys.other.inputs) && areKeysEqual(keys.own.outputs, keys.other.outputs);\n};\n\nconst areCallablesAssignable = (library: Library, own: GirFunction, other: GirFunction): boolean => {\n const keys = callableKeyPair(library, own, other);\n\n if (keys.own.inputs.length > keys.other.inputs.length) {\n return false;\n }\n\n if (keys.own.inputs.some((key, index) => key !== keys.other.inputs[index])) {\n return false;\n }\n\n return areKeysEqual(keys.other.outputs, [\"void\"]) || areKeysEqual(keys.own.outputs, keys.other.outputs);\n};\n\nconst collectMethods = (klass: GirClass, members: MemberTable): void => {\n for (const method of klass.methods) {\n const name = memberName(method.name);\n\n if (method.introspectable && !members.has(name)) {\n members.set(name, method);\n }\n }\n};\n\nconst inheritedMembers = (context: ModuleContext, klass: GirClass): ClaimedMembers => {\n const inherited: MemberTable = new Map();\n\n forEachAncestor(context, klass, (ancestor) => {\n collectMethods(ancestor.klass, inherited);\n });\n\n return { inherited, interfaces: new Map() };\n};\n\nconst interfaceMembers = (options: InterfaceConflictOptions): MemberTable => {\n const members: MemberTable = new Map();\n collectMethods(options.iface, members);\n\n for (const [key, callable] of vfuncCallables(options.context, options.ifaceNamespace, options.iface)) {\n members.set(key, callable);\n }\n\n return members;\n};\n\nconst claimInterfaceMembers = (options: InterfaceConflictOptions, claimed: ClaimedMembers): void => {\n for (const [key, callable] of interfaceMembers(options)) {\n if (!claimed.interfaces.has(key)) {\n claimed.interfaces.set(key, callable);\n }\n }\n};\n\nconst isConflictingMember = (library: Library, claimed: ClaimedMembers, entry: [string, GirFunction]): boolean => {\n const [name, method] = entry;\n const owned = claimed.inherited.get(name);\n\n if (owned !== undefined) {\n return !areCallablesAssignable(library, owned, method);\n }\n\n const sibling = claimed.interfaces.get(name);\n\n return sibling !== undefined && !areCallablesIdentical(library, sibling, method);\n};\n\nconst conflictingMemberNames = (options: InterfaceConflictOptions, claimed: ClaimedMembers): string[] =>\n [...interfaceMembers(options)]\n .filter((entry) => isConflictingMember(options.context.library, claimed, entry))\n .map(([name]) => name);\n\nconst protectedVfuncNames = (options: InterfaceConflictOptions): string[] => {\n const { context, klass, iface, ifaceNamespace } = options;\n const protectedKeys = protectedChainSlotKeys(context, klass);\n\n return vfuncMemberNames(context, ifaceNamespace, iface).filter((key) => protectedKeys.has(key));\n};\n\nconst interfaceConflicts = (options: InterfaceConflictOptions, claimed: ClaimedMembers): string[] => {\n const names = [...conflictingMemberNames(options, claimed), ...protectedVfuncNames(options)];\n\n return names.length === 0 ? names : [...new Set([...names, ...CHAINABLE_SIGNAL_MEMBERS])];\n};\n\nconst rootPrerequisite = (library: Library): ResolvedAncestor[] => {\n const root = resolveClassOrInterface(library, \"GObject\", \"Object\");\n\n return root === undefined ? [] : [root];\n};\n\nconst interfaceSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] => {\n const prerequisites = entry.klass.prerequisites\n .map((name) => resolveClassOrInterface(library, entry.namespaceName, name))\n .filter((prerequisite) => prerequisite !== undefined);\n\n return prerequisites.length === 0 ? rootPrerequisite(library) : prerequisites;\n};\n\nconst classSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] => {\n const interfaces = resolveInterfaces(library, entry.namespaceName, entry.klass.implements);\n\n if (entry.klass.parent === undefined) {\n return interfaces;\n }\n\n const parent = resolveClassOrInterface(library, entry.namespaceName, entry.klass.parent);\n\n return parent === undefined ? interfaces : [parent, ...interfaces];\n};\n\nconst directSupertypes = (library: Library, entry: ResolvedAncestor): ResolvedAncestor[] =>\n entry.klass.isInterface ? interfaceSupertypes(library, entry) : classSupertypes(library, entry);\n\nconst collectSupertypeMembers = (\n library: Library,\n entry: ResolvedAncestor,\n visited: Set<string>,\n members: MemberTable,\n): void => {\n const key = `${entry.namespaceName}.${entry.klass.name}`;\n\n if (visited.has(key)) {\n return;\n }\n\n visited.add(key);\n collectMethods(entry.klass, members);\n\n for (const supertype of directSupertypes(library, entry)) {\n collectSupertypeMembers(library, supertype, visited, members);\n }\n};\n\nconst supertypeMembers = (library: Library, base: ResolvedAncestor): MemberTable => {\n const members: MemberTable = new Map();\n collectSupertypeMembers(library, base, new Set(), members);\n\n return members;\n};\n\nconst prerequisiteConflicts = (library: Library, iface: GirClass, base: ResolvedAncestor): string[] => {\n const members: MemberTable = new Map();\n collectMethods(iface, members);\n const inherited = supertypeMembers(library, base);\n const names: string[] = [];\n\n for (const [name, method] of members) {\n const owned = inherited.get(name);\n\n if (owned !== undefined && !areCallablesAssignable(library, method, owned)) {\n names.push(name);\n }\n }\n\n return names;\n};\n\nconst omittedKeys = (omissions: string[]): string =>\n [...new Set(omissions)].map((name) => JSON.stringify(name)).join(\" | \");\n\nconst omittedTypeRef = (typeRef: string, omissions: string[]): string =>\n omissions.length === 0 ? typeRef : `Omit<${typeRef}, ${omittedKeys(omissions)}>`;\n\nexport {\n areCallablesAssignable,\n type ClaimedMembers,\n claimInterfaceMembers,\n inheritedMembers,\n interfaceConflicts,\n omittedKeys,\n omittedTypeRef,\n prerequisiteConflicts,\n};\n"]}
@@ -9,12 +9,13 @@ type ReferenceName = {
9
9
  type TsTypeTarget = {
10
10
  containerStyle: "map" | "record";
11
11
  callbackType: string;
12
- shouldRenderByteArrayAsNumber: boolean;
12
+ byteArrayType: string;
13
13
  renderNamed: (resolved: GirType | undefined, name: ReferenceName) => string;
14
14
  renderGtype: () => string;
15
15
  };
16
16
  declare const renderBaseType: (library: Library, target: TsTypeTarget, ref: TypeId | undefined) => string;
17
17
  declare const renderTsType: (context: ModuleContext, ref: TypeId | undefined, isNullable?: boolean) => string;
18
+ declare const renderParameterTsType: (context: ModuleContext, ref: TypeId | undefined, isNullable?: boolean) => string;
18
19
  declare const recordTypeTarget: (library: Library, renderNamedRef: (name: ReferenceName) => string, renderGtype: () => string) => TsTypeTarget;
19
- export { renderBaseType, renderTsType, recordTypeTarget, type TsTypeTarget };
20
+ export { renderBaseType, renderParameterTsType, renderTsType, recordTypeTarget, type TsTypeTarget };
20
21
  //# sourceMappingURL=ts-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts-type.d.ts","sourceRoot":"","sources":["../../src/analysis/ts-type.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAKH,KAAK,MAAM,EACd,MAAM,mBAAmB,CAAC;AAG3B,KAAK,aAAa,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B,EAAE,OAAO,CAAC;IACvC,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;IAC5E,WAAW,EAAE,MAAM,MAAM,CAAC;CAC7B,CAAC;AAqBF,QAAA,MAAM,cAAc,GAAI,SAAS,OAAO,EAAE,QAAQ,YAAY,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,MAkCzF,CAAC;AAiDF,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,EAAE,KAAK,MAAM,GAAG,SAAS,EAAE,oBAAkB,KAAG,MAI3F,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAClB,SAAS,OAAO,EAChB,gBAAgB,CAAC,IAAI,EAAE,aAAa,KAAK,MAAM,EAC/C,aAAa,MAAM,MAAM,KAC1B,YAkBF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"ts-type.d.ts","sourceRoot":"","sources":["../../src/analysis/ts-type.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAKH,KAAK,MAAM,EACd,MAAM,mBAAmB,CAAC;AAI3B,KAAK,aAAa,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;IAC5E,WAAW,EAAE,MAAM,MAAM,CAAC;CAC7B,CAAC;AAyBF,QAAA,MAAM,cAAc,GAAI,SAAS,OAAO,EAAE,QAAQ,YAAY,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,MAkCzF,CAAC;AA+DF,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,EAAE,KAAK,MAAM,GAAG,SAAS,EAAE,oBAAkB,KAAG,MACX,CAAC;AAElF,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,KAAK,MAAM,GAAG,SAAS,EAAE,oBAAkB,KAAG,MAChC,CAAC;AAEtE,QAAA,MAAM,gBAAgB,GAClB,SAAS,OAAO,EAChB,gBAAgB,CAAC,IAAI,EAAE,aAAa,KAAK,MAAM,EAC/C,aAAa,MAAM,MAAM,KAC1B,YAkBF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -3,6 +3,10 @@ import { isEmittableEntity } from "../gir/emittable.js";
3
3
  import { PRIMITIVE_TS_TYPE } from "../gir/primitives.js";
4
4
  import { hasUnknownArrayLength, } from "../gir/type-id.js";
5
5
  import { gtypeTsType } from "../store/gi/gtype-binding.js";
6
+ import { isByteSequence } from "./type-shape.js";
7
+ const BYTE_ARRAY_TYPE = "Uint8Array";
8
+ const BYTE_ARRAY_INPUT_TYPE = "Uint8Array | number[]";
9
+ const NUMBER_ARRAY_TYPE = "number[]";
6
10
  const willEmitEntity = (type) => isEmittableEntity(type.value);
7
11
  const referenceName = (library, ref) => {
8
12
  const name = library.nameFor(ref);
@@ -52,12 +56,12 @@ const renderContainerType = (library, target, type) => {
52
56
  return renderSequenceType(library, target, type);
53
57
  };
54
58
  const renderSequenceType = (library, target, type) => {
55
- if (type.kind === "list" && type.flavor === "gbytearray" && target.shouldRenderByteArrayAsNumber) {
56
- return "number[]";
57
- }
58
59
  if (type.kind === "carray" && hasUnknownArrayLength(type)) {
59
60
  return "number";
60
61
  }
62
+ if (isByteSequence(library, type)) {
63
+ return target.byteArrayType;
64
+ }
61
65
  return `${renderBaseType(library, target, type.element)}[]`;
62
66
  };
63
67
  const renderNamedType = (target, resolved, name) => {
@@ -66,22 +70,25 @@ const renderNamedType = (target, resolved, name) => {
66
70
  }
67
71
  return target.renderNamed(resolved, name);
68
72
  };
69
- const moduleTarget = (context) => ({
73
+ const getByteArrayType = (library) => library.isByteArrayTyped ? BYTE_ARRAY_TYPE : NUMBER_ARRAY_TYPE;
74
+ const moduleTarget = (context, byteArrayType) => ({
70
75
  containerStyle: "map",
71
76
  callbackType: "((...args: any[]) => any)",
72
- shouldRenderByteArrayAsNumber: true,
77
+ byteArrayType,
73
78
  renderNamed: (_resolved, name) => context.qualify(name.namespaceName, name.typeName),
74
79
  renderGtype: () => gtypeTsType(context),
75
80
  });
76
- const renderTsType = (context, ref, isNullable = false) => {
77
- const base = renderBaseType(context.library, moduleTarget(context), ref);
81
+ const renderModuleType = (context, ref, isNullable, byteArrayType) => {
82
+ const base = renderBaseType(context.library, moduleTarget(context, byteArrayType), ref);
78
83
  return isNullable ? `${base} | null` : base;
79
84
  };
85
+ const renderTsType = (context, ref, isNullable = false) => renderModuleType(context, ref, isNullable, getByteArrayType(context.library));
86
+ const renderParameterTsType = (context, ref, isNullable = false) => renderModuleType(context, ref, isNullable, BYTE_ARRAY_INPUT_TYPE);
80
87
  const recordTypeTarget = (library, renderNamedRef, renderGtype) => {
81
88
  const target = {
82
89
  containerStyle: "record",
83
90
  callbackType: "((...args: unknown[]) => unknown)",
84
- shouldRenderByteArrayAsNumber: false,
91
+ byteArrayType: getByteArrayType(library),
85
92
  renderNamed: (resolved, name) => {
86
93
  if (resolved?.kind === "alias") {
87
94
  return resolved.value.target === undefined
@@ -94,5 +101,5 @@ const recordTypeTarget = (library, renderNamedRef, renderGtype) => {
94
101
  };
95
102
  return target;
96
103
  };
97
- export { renderBaseType, renderTsType, recordTypeTarget };
104
+ export { renderBaseType, renderParameterTsType, renderTsType, recordTypeTarget };
98
105
  //# sourceMappingURL=ts-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts-type.js","sourceRoot":"","sources":["../../src/analysis/ts-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier } from \"@gtkx/utils\";\nimport type { Library } from \"../gir/library.js\";\nimport type { EntityType, GirType } from \"../gir/type.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { isEmittableEntity } from \"../gir/emittable.js\";\nimport { PRIMITIVE_TS_TYPE } from \"../gir/primitives.js\";\nimport {\n type CArrayType,\n type HashTableType,\n hasUnknownArrayLength,\n type ListType,\n type TypeId,\n} from \"../gir/type-id.js\";\nimport { gtypeTsType } from \"../store/gi/gtype-binding.js\";\n\ntype ReferenceName = {\n namespaceName: string;\n typeName: string;\n};\n\ntype TsTypeTarget = {\n containerStyle: \"map\" | \"record\";\n callbackType: string;\n shouldRenderByteArrayAsNumber: boolean;\n renderNamed: (resolved: GirType | undefined, name: ReferenceName) => string;\n renderGtype: () => string;\n};\n\nconst willEmitEntity = (type: EntityType): boolean => isEmittableEntity(type.value);\n\nconst referenceName = (library: Library, ref: TypeId): ReferenceName | undefined => {\n const name = library.nameFor(ref);\n\n return name === undefined\n ? undefined\n : { namespaceName: name.namespaceName, typeName: sanitizeTypeIdentifier(name.typeName) };\n};\n\nconst renderPrimitiveType = (target: TsTypeTarget, type: Extract<GirType, { kind: \"primitive\" }>): string =>\n type.category === \"gtype\" ? target.renderGtype() : PRIMITIVE_TS_TYPE[type.category];\n\nconst renderEntityType = (\n target: TsTypeTarget,\n type: EntityType,\n name: ReferenceName | undefined,\n): string => renderNamedType(target, type, willEmitEntity(type) ? name : undefined);\n\nconst renderBaseType = (library: Library, target: TsTypeTarget, ref: TypeId | undefined): string => {\n if (ref === undefined) {\n return \"void\";\n }\n\n const type = library.typeFor(ref);\n\n if (type === undefined) {\n return renderNamedType(target, undefined, undefined);\n }\n\n const name = referenceName(library, ref);\n\n switch (type.kind) {\n case \"primitive\": {\n return renderPrimitiveType(target, type);\n }\n case \"varargs\": {\n return \"unknown[]\";\n }\n case \"callback\":\n case \"class\":\n case \"interface\":\n case \"record\":\n case \"enum\":\n case \"alias\": {\n return renderEntityType(target, type, name);\n }\n case \"carray\":\n case \"list\":\n case \"hashtable\": {\n return renderContainerType(library, target, type);\n }\n }\n};\n\nconst renderContainerType = (\n library: Library,\n target: TsTypeTarget,\n type: CArrayType | ListType | HashTableType,\n): string => {\n if (type.kind === \"hashtable\") {\n const key = renderBaseType(library, target, type.key);\n const value = renderBaseType(library, target, type.value);\n\n return target.containerStyle === \"record\" ? `Record<${key}, ${value}>` : `Map<${key}, ${value}>`;\n }\n\n return renderSequenceType(library, target, type);\n};\n\nconst renderSequenceType = (library: Library, target: TsTypeTarget, type: CArrayType | ListType): string => {\n if (type.kind === \"list\" && type.flavor === \"gbytearray\" && target.shouldRenderByteArrayAsNumber) {\n return \"number[]\";\n }\n\n if (type.kind === \"carray\" && hasUnknownArrayLength(type)) {\n return \"number\";\n }\n\n return `${renderBaseType(library, target, type.element)}[]`;\n};\n\nconst renderNamedType = (\n target: TsTypeTarget,\n resolved: GirType | undefined,\n name: ReferenceName | undefined,\n): string => {\n if (name === undefined || name.typeName.length === 0) {\n return resolved?.kind === \"callback\" ? target.callbackType : \"unknown\";\n }\n\n return target.renderNamed(resolved, name);\n};\n\nconst moduleTarget = (context: ModuleContext): TsTypeTarget => ({\n containerStyle: \"map\",\n callbackType: \"((...args: any[]) => any)\",\n shouldRenderByteArrayAsNumber: true,\n renderNamed: (_resolved, name) => context.qualify(name.namespaceName, name.typeName),\n renderGtype: () => gtypeTsType(context),\n});\n\nconst renderTsType = (context: ModuleContext, ref: TypeId | undefined, isNullable = false): string => {\n const base = renderBaseType(context.library, moduleTarget(context), ref);\n\n return isNullable ? `${base} | null` : base;\n};\n\nconst recordTypeTarget = (\n library: Library,\n renderNamedRef: (name: ReferenceName) => string,\n renderGtype: () => string,\n): TsTypeTarget => {\n const target: TsTypeTarget = {\n containerStyle: \"record\",\n callbackType: \"((...args: unknown[]) => unknown)\",\n shouldRenderByteArrayAsNumber: false,\n renderNamed: (resolved, name) => {\n if (resolved?.kind === \"alias\") {\n return resolved.value.target === undefined\n ? \"number\"\n : renderBaseType(library, target, resolved.value.target);\n }\n\n return renderNamedRef(name);\n },\n renderGtype,\n };\n\n return target;\n};\n\nexport { renderBaseType, renderTsType, recordTypeTarget, type TsTypeTarget };\n"]}
1
+ {"version":3,"file":"ts-type.js","sourceRoot":"","sources":["../../src/analysis/ts-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier } from \"@gtkx/utils\";\nimport type { Library } from \"../gir/library.js\";\nimport type { EntityType, GirType } from \"../gir/type.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { isEmittableEntity } from \"../gir/emittable.js\";\nimport { PRIMITIVE_TS_TYPE } from \"../gir/primitives.js\";\nimport {\n type CArrayType,\n type HashTableType,\n hasUnknownArrayLength,\n type ListType,\n type TypeId,\n} from \"../gir/type-id.js\";\nimport { gtypeTsType } from \"../store/gi/gtype-binding.js\";\nimport { isByteSequence } from \"./type-shape.js\";\n\ntype ReferenceName = {\n namespaceName: string;\n typeName: string;\n};\n\ntype TsTypeTarget = {\n containerStyle: \"map\" | \"record\";\n callbackType: string;\n byteArrayType: string;\n renderNamed: (resolved: GirType | undefined, name: ReferenceName) => string;\n renderGtype: () => string;\n};\n\nconst BYTE_ARRAY_TYPE = \"Uint8Array\";\nconst BYTE_ARRAY_INPUT_TYPE = \"Uint8Array | number[]\";\nconst NUMBER_ARRAY_TYPE = \"number[]\";\n\nconst willEmitEntity = (type: EntityType): boolean => isEmittableEntity(type.value);\n\nconst referenceName = (library: Library, ref: TypeId): ReferenceName | undefined => {\n const name = library.nameFor(ref);\n\n return name === undefined\n ? undefined\n : { namespaceName: name.namespaceName, typeName: sanitizeTypeIdentifier(name.typeName) };\n};\n\nconst renderPrimitiveType = (target: TsTypeTarget, type: Extract<GirType, { kind: \"primitive\" }>): string =>\n type.category === \"gtype\" ? target.renderGtype() : PRIMITIVE_TS_TYPE[type.category];\n\nconst renderEntityType = (\n target: TsTypeTarget,\n type: EntityType,\n name: ReferenceName | undefined,\n): string => renderNamedType(target, type, willEmitEntity(type) ? name : undefined);\n\nconst renderBaseType = (library: Library, target: TsTypeTarget, ref: TypeId | undefined): string => {\n if (ref === undefined) {\n return \"void\";\n }\n\n const type = library.typeFor(ref);\n\n if (type === undefined) {\n return renderNamedType(target, undefined, undefined);\n }\n\n const name = referenceName(library, ref);\n\n switch (type.kind) {\n case \"primitive\": {\n return renderPrimitiveType(target, type);\n }\n case \"varargs\": {\n return \"unknown[]\";\n }\n case \"callback\":\n case \"class\":\n case \"interface\":\n case \"record\":\n case \"enum\":\n case \"alias\": {\n return renderEntityType(target, type, name);\n }\n case \"carray\":\n case \"list\":\n case \"hashtable\": {\n return renderContainerType(library, target, type);\n }\n }\n};\n\nconst renderContainerType = (\n library: Library,\n target: TsTypeTarget,\n type: CArrayType | ListType | HashTableType,\n): string => {\n if (type.kind === \"hashtable\") {\n const key = renderBaseType(library, target, type.key);\n const value = renderBaseType(library, target, type.value);\n\n return target.containerStyle === \"record\" ? `Record<${key}, ${value}>` : `Map<${key}, ${value}>`;\n }\n\n return renderSequenceType(library, target, type);\n};\n\nconst renderSequenceType = (library: Library, target: TsTypeTarget, type: CArrayType | ListType): string => {\n if (type.kind === \"carray\" && hasUnknownArrayLength(type)) {\n return \"number\";\n }\n\n if (isByteSequence(library, type)) {\n return target.byteArrayType;\n }\n\n return `${renderBaseType(library, target, type.element)}[]`;\n};\n\nconst renderNamedType = (\n target: TsTypeTarget,\n resolved: GirType | undefined,\n name: ReferenceName | undefined,\n): string => {\n if (name === undefined || name.typeName.length === 0) {\n return resolved?.kind === \"callback\" ? target.callbackType : \"unknown\";\n }\n\n return target.renderNamed(resolved, name);\n};\n\nconst getByteArrayType = (library: Library): string =>\n library.isByteArrayTyped ? BYTE_ARRAY_TYPE : NUMBER_ARRAY_TYPE;\n\nconst moduleTarget = (context: ModuleContext, byteArrayType: string): TsTypeTarget => ({\n containerStyle: \"map\",\n callbackType: \"((...args: any[]) => any)\",\n byteArrayType,\n renderNamed: (_resolved, name) => context.qualify(name.namespaceName, name.typeName),\n renderGtype: () => gtypeTsType(context),\n});\n\nconst renderModuleType = (\n context: ModuleContext,\n ref: TypeId | undefined,\n isNullable: boolean,\n byteArrayType: string,\n): string => {\n const base = renderBaseType(context.library, moduleTarget(context, byteArrayType), ref);\n\n return isNullable ? `${base} | null` : base;\n};\n\nconst renderTsType = (context: ModuleContext, ref: TypeId | undefined, isNullable = false): string =>\n renderModuleType(context, ref, isNullable, getByteArrayType(context.library));\n\nconst renderParameterTsType = (context: ModuleContext, ref: TypeId | undefined, isNullable = false): string =>\n renderModuleType(context, ref, isNullable, BYTE_ARRAY_INPUT_TYPE);\n\nconst recordTypeTarget = (\n library: Library,\n renderNamedRef: (name: ReferenceName) => string,\n renderGtype: () => string,\n): TsTypeTarget => {\n const target: TsTypeTarget = {\n containerStyle: \"record\",\n callbackType: \"((...args: unknown[]) => unknown)\",\n byteArrayType: getByteArrayType(library),\n renderNamed: (resolved, name) => {\n if (resolved?.kind === \"alias\") {\n return resolved.value.target === undefined\n ? \"number\"\n : renderBaseType(library, target, resolved.value.target);\n }\n\n return renderNamedRef(name);\n },\n renderGtype,\n };\n\n return target;\n};\n\nexport { renderBaseType, renderParameterTsType, renderTsType, recordTypeTarget, type TsTypeTarget };\n"]}
@@ -1,8 +1,9 @@
1
1
  import type { Library } from "../gir/library.js";
2
2
  import type { PrimitiveCategory } from "../gir/primitives.js";
3
- import type { CArrayType, TypeId } from "../gir/type-id.js";
3
+ import type { CArrayType, ListType, TypeId } from "../gir/type-id.js";
4
4
  declare const carrayFor: (library: Library, ref: TypeId | undefined) => CArrayType | undefined;
5
5
  declare const primitiveCategoryFor: (library: Library, ref: TypeId | undefined) => PrimitiveCategory | undefined;
6
6
  declare const isUnboundedArray: (type: CArrayType) => boolean;
7
- export { carrayFor, isUnboundedArray, primitiveCategoryFor };
7
+ declare const isByteSequence: (library: Library, type: CArrayType | ListType) => boolean;
8
+ export { carrayFor, isByteSequence, isUnboundedArray, primitiveCategoryFor };
8
9
  //# sourceMappingURL=type-shape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-shape.d.ts","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM5D,QAAA,MAAM,SAAS,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,UAAU,GAAG,SAI3E,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,iBAAiB,GAAG,SAI7F,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,UAAU,KAAG,OACuD,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"type-shape.d.ts","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMtE,QAAA,MAAM,SAAS,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,UAAU,GAAG,SAI3E,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,iBAAiB,GAAG,SAI7F,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,UAAU,KAAG,OACuD,CAAC;AAErG,QAAA,MAAM,cAAc,GAAI,SAAS,OAAO,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAG,OACyC,CAAC;AAElH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -8,5 +8,6 @@ const primitiveCategoryFor = (library, ref) => {
8
8
  return type?.kind === "primitive" ? type.category : undefined;
9
9
  };
10
10
  const isUnboundedArray = (type) => type.isZeroTerminated && type.lengthParameterIndex === undefined && type.fixedSize === undefined;
11
- export { carrayFor, isUnboundedArray, primitiveCategoryFor };
11
+ const isByteSequence = (library, type) => type.kind === "list" ? type.flavor === "gbytearray" : primitiveCategoryFor(library, type.element) === "uint8";
12
+ export { carrayFor, isByteSequence, isUnboundedArray, primitiveCategoryFor };
12
13
  //# sourceMappingURL=type-shape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-shape.js","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAuB,EAAE,CACvF,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAA0B,EAAE;IACpF,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAiC,EAAE;IACtG,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAgB,EAAW,EAAE,CACnD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import type { Library } from \"../gir/library.js\";\nimport type { PrimitiveCategory } from \"../gir/primitives.js\";\nimport type { CArrayType, TypeId } from \"../gir/type-id.js\";\nimport type { GirType } from \"../gir/type.js\";\n\nconst resolvedTypeFor = (library: Library, ref: TypeId | undefined): GirType | undefined =>\n ref === undefined ? undefined : library.typeFor(ref);\n\nconst carrayFor = (library: Library, ref: TypeId | undefined): CArrayType | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"carray\" ? type : undefined;\n};\n\nconst primitiveCategoryFor = (library: Library, ref: TypeId | undefined): PrimitiveCategory | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"primitive\" ? type.category : undefined;\n};\n\nconst isUnboundedArray = (type: CArrayType): boolean =>\n type.isZeroTerminated && type.lengthParameterIndex === undefined && type.fixedSize === undefined;\n\nexport { carrayFor, isUnboundedArray, primitiveCategoryFor };\n"]}
1
+ {"version":3,"file":"type-shape.js","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAuB,EAAE,CACvF,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAA0B,EAAE;IACpF,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAiC,EAAE;IACtG,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAgB,EAAW,EAAE,CACnD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAErG,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,IAA2B,EAAW,EAAE,CAC9E,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAElH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import type { Library } from \"../gir/library.js\";\nimport type { PrimitiveCategory } from \"../gir/primitives.js\";\nimport type { CArrayType, ListType, TypeId } from \"../gir/type-id.js\";\nimport type { GirType } from \"../gir/type.js\";\n\nconst resolvedTypeFor = (library: Library, ref: TypeId | undefined): GirType | undefined =>\n ref === undefined ? undefined : library.typeFor(ref);\n\nconst carrayFor = (library: Library, ref: TypeId | undefined): CArrayType | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"carray\" ? type : undefined;\n};\n\nconst primitiveCategoryFor = (library: Library, ref: TypeId | undefined): PrimitiveCategory | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"primitive\" ? type.category : undefined;\n};\n\nconst isUnboundedArray = (type: CArrayType): boolean =>\n type.isZeroTerminated && type.lengthParameterIndex === undefined && type.fixedSize === undefined;\n\nconst isByteSequence = (library: Library, type: CArrayType | ListType): boolean =>\n type.kind === \"list\" ? type.flavor === \"gbytearray\" : primitiveCategoryFor(library, type.element) === \"uint8\";\n\nexport { carrayFor, isByteSequence, isUnboundedArray, primitiveCategoryFor };\n"]}
package/dist/compile.d.ts CHANGED
@@ -5,10 +5,9 @@ type ProjectFile = {
5
5
  type SourceModule = ProjectFile & {
6
6
  source: string;
7
7
  };
8
- type CompileProjectParams = {
8
+ type EmitModulesParams = {
9
9
  projectDir: string;
10
- files: ProjectFile[];
11
- compilerOptions: Record<string, unknown>;
10
+ files: SourceModule[];
12
11
  label: string;
13
12
  };
14
13
  type FailedProjectInput = {
@@ -17,11 +16,11 @@ type FailedProjectInput = {
17
16
  error: unknown;
18
17
  };
19
18
  declare const keepFailedProject: (input: FailedProjectInput) => Error;
20
- declare const compileProject: (params: CompileProjectParams) => void;
19
+ declare const emitModules: (params: EmitModulesParams) => void;
21
20
  declare const checkModules: (params: {
22
21
  modules: SourceModule[];
23
22
  resolveFrom: string;
24
23
  label: string;
25
24
  }) => void;
26
- export { compileProject, checkModules, keepFailedProject, type ProjectFile, type SourceModule };
25
+ export { checkModules, emitModules, keepFailedProject, type SourceModule };
27
26
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAOA,KAAK,WAAW,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,GAAG,WAAW,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AA+IF,QAAA,MAAM,iBAAiB,GAAI,OAAO,kBAAkB,KAAG,KActD,CAAC;AA2BF,QAAA,MAAM,cAAc,GAAI,QAAQ,oBAAoB,KAAG,IAYtD,CAAC;AASF,QAAA,MAAM,YAAY,GAAI,QAAQ;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,IAwB/F,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAOA,KAAK,WAAW,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,GAAG,WAAW,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAYF,KAAK,iBAAiB,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAiLF,QAAA,MAAM,iBAAiB,GAAI,OAAO,kBAAkB,KAAG,KActD,CAAC;AAoDF,QAAA,MAAM,WAAW,GAAI,QAAQ,iBAAiB,KAAG,IAUhD,CAAC;AAwBF,QAAA,MAAM,YAAY,GAAI,QAAQ;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,IAwB/F,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,CAAC"}
package/dist/compile.js CHANGED
@@ -1,4 +1,4 @@
1
- import { errorMessage, normalizeError } from "@gtkx/utils";
1
+ import { errorCode, errorMessage, normalizeError } from "@gtkx/utils";
2
2
  import { existsSync, mkdirSync, renameSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
3
3
  import { dirname, isAbsolute, join, relative } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
@@ -30,9 +30,23 @@ const CHECK_OPTIONS = {
30
30
  isolatedDeclarations: true,
31
31
  noEmit: true,
32
32
  };
33
+ const DECLARATION_EMIT = {
34
+ declaration: true,
35
+ isolatedDeclarations: true,
36
+ removeComments: false,
37
+ };
38
+ const MODULE_EMIT = {
39
+ removeComments: false,
40
+ };
41
+ const DECLARATION_OPTIONS = ts.convertCompilerOptionsFromJson({ ...BASE_COMPILER_OPTIONS, ...DECLARATION_EMIT }, ".").options;
42
+ const MODULE_OPTIONS = ts.convertCompilerOptionsFromJson({ ...BASE_COMPILER_OPTIONS, ...MODULE_EMIT }, ".").options;
43
+ const TS_EXTENSION_PATTERN = /\.tsx?$/;
44
+ const DECLARATION_EXTENSION = ".d.ts";
45
+ const JAVASCRIPT_EXTENSION = ".js";
33
46
  const CHECK_DIR = ".gtkx-check";
34
47
  const FAILED_CHECK_DIR = `${CHECK_DIR}.failed`;
35
48
  const LEGACY_CHECK_PREFIX = `${CHECK_DIR}-`;
49
+ const ESM_SCOPE_MANIFEST = `${JSON.stringify({ type: "module" }, null, 4)}\n`;
36
50
  const FORMAT_HOST = {
37
51
  getCanonicalFileName: (fileName) => fileName,
38
52
  getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
@@ -52,6 +66,16 @@ const linkToolingModules = (projectDir) => {
52
66
  rmSync(link, { force: true });
53
67
  };
54
68
  };
69
+ const ensureModuleScope = (projectDir) => {
70
+ try {
71
+ writeFileSync(join(projectDir, "package.json"), ESM_SCOPE_MANIFEST, { flag: "wx" });
72
+ }
73
+ catch (error) {
74
+ if (errorCode(error) !== "EEXIST") {
75
+ throw error;
76
+ }
77
+ }
78
+ };
55
79
  const isProjectFile = (rel) => !rel.startsWith("..") && !isAbsolute(rel) && !rel.split(/[/\\]/).includes("node_modules");
56
80
  const projectDiagnosticFile = (diagnostic, projectDir) => {
57
81
  const { file, start } = diagnostic;
@@ -103,10 +127,10 @@ const diagnosticError = (params, diagnostics) => {
103
127
  const diagnosed = projectDiagnosticFiles(diagnostics, params.projectDir);
104
128
  const { label } = params;
105
129
  if (diagnosed.length === 0) {
106
- return new Error(`Type checking ${label} failed:\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);
130
+ return new Error(`Compiling ${label} failed:\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);
107
131
  }
108
132
  const lines = [...diagnosed.map((entry) => entry.text), ...originLines(diagnosed, params.files)];
109
- return new Error(`Type checking ${label} found ${String(diagnosed.length)} error(s):\n${lines.join("\n")}`);
133
+ return new Error(`Compiling ${label} found ${String(diagnosed.length)} error(s):\n${lines.join("\n")}`);
110
134
  };
111
135
  const keepFailedProject = (input) => {
112
136
  const { projectDir, keepAt, error } = input;
@@ -136,7 +160,35 @@ const runProgram = (params) => {
136
160
  }
137
161
  return [...program.emit().diagnostics];
138
162
  };
163
+ const replaceExtension = (fileName, extension) => `${fileName.replace(TS_EXTENSION_PATTERN, "")}${extension}`;
164
+ const transpileOptions = (compilerOptions, fileName) => ({
165
+ compilerOptions,
166
+ fileName,
167
+ reportDiagnostics: true,
168
+ });
169
+ const emitModule = (module, projectDir) => {
170
+ const fileName = join(projectDir, module.fileName);
171
+ const declaration = ts.transpileDeclaration(module.source, transpileOptions(DECLARATION_OPTIONS, fileName));
172
+ const javascript = ts.transpileModule(module.source, transpileOptions(MODULE_OPTIONS, fileName));
173
+ const diagnostics = [...declaration.diagnostics ?? [], ...javascript.diagnostics ?? []];
174
+ if (diagnostics.length > 0) {
175
+ return diagnostics;
176
+ }
177
+ writeFileSync(replaceExtension(fileName, DECLARATION_EXTENSION), declaration.outputText);
178
+ writeFileSync(replaceExtension(fileName, JAVASCRIPT_EXTENSION), javascript.outputText);
179
+ return [];
180
+ };
181
+ const emitModules = (params) => {
182
+ const diagnostics = [];
183
+ for (const module of params.files) {
184
+ diagnostics.push(...emitModule(module, params.projectDir));
185
+ }
186
+ if (diagnostics.length > 0) {
187
+ throw diagnosticError(params, diagnostics);
188
+ }
189
+ };
139
190
  const compileProject = (params) => {
191
+ ensureModuleScope(params.projectDir);
140
192
  const unlinkToolingModules = linkToolingModules(params.projectDir);
141
193
  try {
142
194
  const diagnostics = runProgram(params);
@@ -176,5 +228,5 @@ const checkModules = (params) => {
176
228
  rmSync(projectDir, { recursive: true, force: true });
177
229
  rmSync(keepAt, { recursive: true, force: true });
178
230
  };
179
- export { compileProject, checkModules, keepFailedProject };
231
+ export { checkModules, emitModules, keepFailedProject };
180
232
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorMessage, normalizeError } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, renameSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\nimport { createStagingDir, sweepStrandedDirs } from \"./staging.js\";\n\ntype ProjectFile = {\n fileName: string;\n origin?: string | undefined;\n};\n\ntype SourceModule = ProjectFile & {\n source: string;\n};\n\ntype CompileProjectParams = {\n projectDir: string;\n files: ProjectFile[];\n compilerOptions: Record<string, unknown>;\n label: string;\n};\n\ntype DiagnosedFile = {\n fileName: string;\n text: string;\n};\n\ntype FailedProjectInput = {\n projectDir: string;\n keepAt: string;\n error: unknown;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst CHECK_DIR = \".gtkx-check\";\nconst FAILED_CHECK_DIR = `${CHECK_DIR}.failed`;\nconst LEGACY_CHECK_PREFIX = `${CHECK_DIR}-`;\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticFile = (diagnostic: ts.Diagnostic, projectDir: string): DiagnosedFile | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const fileName = relative(projectDir, file.fileName);\n\n if (!isProjectFile(fileName)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return {\n fileName,\n text: `${fileName}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`,\n };\n};\n\nconst projectDiagnosticFiles = (diagnostics: ts.Diagnostic[], projectDir: string): DiagnosedFile[] => {\n const diagnosed: DiagnosedFile[] = [];\n\n for (const diagnostic of diagnostics) {\n const entry = projectDiagnosticFile(diagnostic, projectDir);\n\n if (entry !== undefined) {\n diagnosed.push(entry);\n }\n }\n\n return diagnosed;\n};\n\nconst collectOrigins = (files: ProjectFile[]): Map<string, string> => {\n const origins: Map<string, string> = new Map();\n\n for (const { fileName, origin } of files) {\n if (origin !== undefined) {\n origins.set(fileName, origin);\n }\n }\n\n return origins;\n};\n\nconst groupByOrigin = (diagnosed: DiagnosedFile[], origins: Map<string, string>): Map<string, Set<string>> => {\n const grouped: Map<string, Set<string>> = new Map();\n\n for (const { fileName } of diagnosed) {\n const origin = origins.get(fileName);\n\n if (origin !== undefined) {\n grouped.set(origin, (grouped.get(origin) ?? new Set<string>()).add(fileName));\n }\n }\n\n return grouped;\n};\n\nconst originLines = (diagnosed: DiagnosedFile[], files: ProjectFile[]): string[] =>\n [...groupByOrigin(diagnosed, collectOrigins(files))].map(\n ([origin, generated]) => `Generated from ${origin}: ${[...generated].join(\", \")}`,\n );\n\nconst diagnosticError = (params: CompileProjectParams, diagnostics: ts.Diagnostic[]): Error => {\n const diagnosed = projectDiagnosticFiles(diagnostics, params.projectDir);\n const { label } = params;\n\n if (diagnosed.length === 0) {\n return new Error(`Type checking ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n }\n\n const lines = [...diagnosed.map((entry) => entry.text), ...originLines(diagnosed, params.files)];\n\n return new Error(`Type checking ${label} found ${String(diagnosed.length)} error(s):\\n${lines.join(\"\\n\")}`);\n};\n\nconst keepFailedProject = (input: FailedProjectInput): Error => {\n const { projectDir, keepAt, error } = input;\n\n if (!existsSync(projectDir)) {\n return normalizeError(error);\n }\n\n rmSync(keepAt, { recursive: true, force: true });\n renameSync(projectDir, keepAt);\n const rebased = errorMessage(error).split(projectDir).join(keepAt);\n\n return new Error(`${rebased}\\nThe generated sources are kept at ${keepAt}, where every path above resolves.`, {\n cause: error,\n });\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.files.map((file) => `./${file.fileName}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst stageCheckProject = (checkRoot: string): string => {\n const projectDir = createStagingDir(join(checkRoot, CHECK_DIR));\n sweepStrandedDirs(checkRoot, LEGACY_CHECK_PREFIX);\n\n return projectDir;\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n const projectDir = stageCheckProject(checkRoot);\n const keepAt = join(checkRoot, FAILED_CHECK_DIR);\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n files: params.modules,\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } catch (error) {\n throw keepFailedProject({ projectDir, keepAt, error });\n }\n\n rmSync(projectDir, { recursive: true, force: true });\n rmSync(keepAt, { recursive: true, force: true });\n};\n\nexport { compileProject, checkModules, keepFailedProject, type ProjectFile, type SourceModule };\n"]}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorCode, errorMessage, normalizeError } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, renameSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\nimport { createStagingDir, sweepStrandedDirs } from \"./staging.js\";\n\ntype ProjectFile = {\n fileName: string;\n origin?: string | undefined;\n};\n\ntype SourceModule = ProjectFile & {\n source: string;\n};\n\ntype ProjectContext = {\n projectDir: string;\n files: ProjectFile[];\n label: string;\n};\n\ntype CompileProjectParams = ProjectContext & {\n compilerOptions: Record<string, unknown>;\n};\n\ntype EmitModulesParams = {\n projectDir: string;\n files: SourceModule[];\n label: string;\n};\n\ntype DiagnosedFile = {\n fileName: string;\n text: string;\n};\n\ntype FailedProjectInput = {\n projectDir: string;\n keepAt: string;\n error: unknown;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst DECLARATION_EMIT = {\n declaration: true,\n isolatedDeclarations: true,\n removeComments: false,\n};\n\nconst MODULE_EMIT = {\n removeComments: false,\n};\n\nconst DECLARATION_OPTIONS = ts.convertCompilerOptionsFromJson(\n { ...BASE_COMPILER_OPTIONS, ...DECLARATION_EMIT },\n \".\",\n).options;\n\nconst MODULE_OPTIONS = ts.convertCompilerOptionsFromJson(\n { ...BASE_COMPILER_OPTIONS, ...MODULE_EMIT },\n \".\",\n).options;\n\nconst TS_EXTENSION_PATTERN = /\\.tsx?$/;\nconst DECLARATION_EXTENSION = \".d.ts\";\nconst JAVASCRIPT_EXTENSION = \".js\";\nconst CHECK_DIR = \".gtkx-check\";\nconst FAILED_CHECK_DIR = `${CHECK_DIR}.failed`;\nconst LEGACY_CHECK_PREFIX = `${CHECK_DIR}-`;\nconst ESM_SCOPE_MANIFEST = `${JSON.stringify({ type: \"module\" }, null, 4)}\\n`;\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst ensureModuleScope = (projectDir: string): void => {\n try {\n writeFileSync(join(projectDir, \"package.json\"), ESM_SCOPE_MANIFEST, { flag: \"wx\" });\n } catch (error) {\n if (errorCode(error) !== \"EEXIST\") {\n throw error;\n }\n }\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticFile = (diagnostic: ts.Diagnostic, projectDir: string): DiagnosedFile | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const fileName = relative(projectDir, file.fileName);\n\n if (!isProjectFile(fileName)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return {\n fileName,\n text: `${fileName}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`,\n };\n};\n\nconst projectDiagnosticFiles = (diagnostics: ts.Diagnostic[], projectDir: string): DiagnosedFile[] => {\n const diagnosed: DiagnosedFile[] = [];\n\n for (const diagnostic of diagnostics) {\n const entry = projectDiagnosticFile(diagnostic, projectDir);\n\n if (entry !== undefined) {\n diagnosed.push(entry);\n }\n }\n\n return diagnosed;\n};\n\nconst collectOrigins = (files: ProjectFile[]): Map<string, string> => {\n const origins: Map<string, string> = new Map();\n\n for (const { fileName, origin } of files) {\n if (origin !== undefined) {\n origins.set(fileName, origin);\n }\n }\n\n return origins;\n};\n\nconst groupByOrigin = (diagnosed: DiagnosedFile[], origins: Map<string, string>): Map<string, Set<string>> => {\n const grouped: Map<string, Set<string>> = new Map();\n\n for (const { fileName } of diagnosed) {\n const origin = origins.get(fileName);\n\n if (origin !== undefined) {\n grouped.set(origin, (grouped.get(origin) ?? new Set<string>()).add(fileName));\n }\n }\n\n return grouped;\n};\n\nconst originLines = (diagnosed: DiagnosedFile[], files: ProjectFile[]): string[] =>\n [...groupByOrigin(diagnosed, collectOrigins(files))].map(\n ([origin, generated]) => `Generated from ${origin}: ${[...generated].join(\", \")}`,\n );\n\nconst diagnosticError = (params: ProjectContext, diagnostics: ts.Diagnostic[]): Error => {\n const diagnosed = projectDiagnosticFiles(diagnostics, params.projectDir);\n const { label } = params;\n\n if (diagnosed.length === 0) {\n return new Error(`Compiling ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n }\n\n const lines = [...diagnosed.map((entry) => entry.text), ...originLines(diagnosed, params.files)];\n\n return new Error(`Compiling ${label} found ${String(diagnosed.length)} error(s):\\n${lines.join(\"\\n\")}`);\n};\n\nconst keepFailedProject = (input: FailedProjectInput): Error => {\n const { projectDir, keepAt, error } = input;\n\n if (!existsSync(projectDir)) {\n return normalizeError(error);\n }\n\n rmSync(keepAt, { recursive: true, force: true });\n renameSync(projectDir, keepAt);\n const rebased = errorMessage(error).split(projectDir).join(keepAt);\n\n return new Error(`${rebased}\\nThe generated sources are kept at ${keepAt}, where every path above resolves.`, {\n cause: error,\n });\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.files.map((file) => `./${file.fileName}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst replaceExtension = (fileName: string, extension: string): string =>\n `${fileName.replace(TS_EXTENSION_PATTERN, \"\")}${extension}`;\n\nconst transpileOptions = (compilerOptions: ts.CompilerOptions, fileName: string): ts.TranspileOptions => ({\n compilerOptions,\n fileName,\n reportDiagnostics: true,\n});\n\nconst emitModule = (module: SourceModule, projectDir: string): ts.Diagnostic[] => {\n const fileName = join(projectDir, module.fileName);\n const declaration = ts.transpileDeclaration(module.source, transpileOptions(DECLARATION_OPTIONS, fileName));\n const javascript = ts.transpileModule(module.source, transpileOptions(MODULE_OPTIONS, fileName));\n const diagnostics = [...declaration.diagnostics ?? [], ...javascript.diagnostics ?? []];\n\n if (diagnostics.length > 0) {\n return diagnostics;\n }\n\n writeFileSync(replaceExtension(fileName, DECLARATION_EXTENSION), declaration.outputText);\n writeFileSync(replaceExtension(fileName, JAVASCRIPT_EXTENSION), javascript.outputText);\n\n return [];\n};\n\nconst emitModules = (params: EmitModulesParams): void => {\n const diagnostics: ts.Diagnostic[] = [];\n\n for (const module of params.files) {\n diagnostics.push(...emitModule(module, params.projectDir));\n }\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params, diagnostics);\n }\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n ensureModuleScope(params.projectDir);\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst stageCheckProject = (checkRoot: string): string => {\n const projectDir = createStagingDir(join(checkRoot, CHECK_DIR));\n sweepStrandedDirs(checkRoot, LEGACY_CHECK_PREFIX);\n\n return projectDir;\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n const projectDir = stageCheckProject(checkRoot);\n const keepAt = join(checkRoot, FAILED_CHECK_DIR);\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n files: params.modules,\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } catch (error) {\n throw keepFailedProject({ projectDir, keepAt, error });\n }\n\n rmSync(projectDir, { recursive: true, force: true });\n rmSync(keepAt, { recursive: true, force: true });\n};\n\nexport { checkModules, emitModules, keepFailedProject, type SourceModule };\n"]}
@@ -10,6 +10,8 @@ type ApiReferenceOptions = {
10
10
  props?: ElementProps;
11
11
  /** GObject properties the project omits from generated props; without it pages show props that do not exist. */
12
12
  omittedProps?: OmittedProps;
13
+ /** Describes GIR byte sequences as `Uint8Array` rather than `number[]`; defaults to false. */
14
+ isByteArrayTyped?: boolean;
13
15
  };
14
16
  /** Narrows an `ApiReference.symbols` enumeration. */
15
17
  type ApiSymbolQuery = {
@@ -1 +1 @@
1
- {"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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"}
@@ -191,7 +191,7 @@ class ApiReference {
191
191
  this.libraries = options.libraries;
192
192
  this.props = options.props ?? {};
193
193
  this.omittedProps = options.omittedProps ?? {};
194
- this.library = Library.load(options.libraries, options.girPath);
194
+ this.library = Library.load(options.libraries, options.girPath, options.isByteArrayTyped === true);
195
195
  this.elementContext = { library: this.library, linkFor: () => undefined };
196
196
  this.buildIndex();
197
197
  }