@gtkx/codegen 0.21.0 → 1.0.0-rc.1
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.
- package/README.md +173 -0
- package/dist/analysis/descriptor-render.d.ts +18 -0
- package/dist/analysis/descriptor-render.d.ts.map +1 -0
- package/dist/analysis/descriptor-render.js +297 -0
- package/dist/analysis/descriptor-render.js.map +1 -0
- package/dist/analysis/descriptor.d.ts +59 -0
- package/dist/analysis/descriptor.d.ts.map +1 -0
- package/dist/analysis/descriptor.js +123 -0
- package/dist/analysis/descriptor.js.map +1 -0
- package/dist/analysis/inheritance.d.ts +38 -0
- package/dist/analysis/inheritance.d.ts.map +1 -0
- package/dist/analysis/inheritance.js +193 -0
- package/dist/analysis/inheritance.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +26 -0
- package/dist/analysis/param-structure.d.ts.map +1 -0
- package/dist/analysis/param-structure.js +107 -0
- package/dist/analysis/param-structure.js.map +1 -0
- package/dist/analysis/ts-type.d.ts +19 -0
- package/dist/analysis/ts-type.d.ts.map +1 -0
- package/dist/analysis/ts-type.js +65 -0
- package/dist/analysis/ts-type.js.map +1 -0
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +123 -0
- package/dist/compile.js.map +1 -0
- package/dist/docs/api-reference.d.ts +66 -0
- package/dist/docs/api-reference.d.ts.map +1 -0
- package/dist/docs/api-reference.js +299 -0
- package/dist/docs/api-reference.js.map +1 -0
- package/dist/docs/element-page.d.ts +15 -0
- package/dist/docs/element-page.d.ts.map +1 -0
- package/dist/docs/element-page.js +221 -0
- package/dist/docs/element-page.js.map +1 -0
- package/dist/docs/pipeline.d.ts +25 -0
- package/dist/docs/pipeline.d.ts.map +1 -0
- package/dist/docs/pipeline.js +130 -0
- package/dist/docs/pipeline.js.map +1 -0
- package/dist/docs/render.d.ts +32 -0
- package/dist/docs/render.d.ts.map +1 -0
- package/dist/docs/render.js +134 -0
- package/dist/docs/render.js.map +1 -0
- package/dist/docs/symbol-page.d.ts +41 -0
- package/dist/docs/symbol-page.d.ts.map +1 -0
- package/dist/docs/symbol-page.js +338 -0
- package/dist/docs/symbol-page.js.map +1 -0
- package/dist/fingerprint.d.ts +6 -26
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +30 -18
- package/dist/fingerprint.js.map +1 -1
- package/dist/gir/ancestry.d.ts +9 -0
- package/dist/gir/ancestry.d.ts.map +1 -0
- package/dist/gir/ancestry.js +29 -0
- package/dist/gir/ancestry.js.map +1 -0
- package/dist/gir/callback.d.ts +9 -10
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +17 -16
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +22 -43
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +11 -23
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +13 -31
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +7 -14
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +10 -23
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +12 -18
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +11 -42
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +7 -20
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +2 -0
- package/dist/gir/gir-path.d.ts.map +1 -0
- package/dist/gir/gir-path.js +41 -0
- package/dist/gir/gir-path.js.map +1 -0
- package/dist/gir/libraries.d.ts +4 -0
- package/dist/gir/libraries.d.ts.map +1 -0
- package/dist/gir/libraries.js +62 -0
- package/dist/gir/libraries.js.map +1 -0
- package/dist/gir/library.d.ts +37 -0
- package/dist/gir/library.d.ts.map +1 -0
- package/dist/gir/library.js +218 -0
- package/dist/gir/library.js.map +1 -0
- package/dist/gir/namespace.d.ts +36 -50
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +46 -36
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/parameter.d.ts +25 -69
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +36 -57
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +6 -70
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +32 -80
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +3 -34
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +19 -35
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +16 -25
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +12 -9
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +27 -0
- package/dist/gir/record.d.ts.map +1 -0
- package/dist/gir/record.js +25 -0
- package/dist/gir/record.js.map +1 -0
- package/dist/gir/size.d.ts +10 -57
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +0 -25
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +49 -0
- package/dist/gir/type-id.d.ts.map +1 -0
- package/dist/gir/type-id.js +8 -0
- package/dist/gir/type-id.js.map +1 -0
- package/dist/gir/type-ref.d.ts +3 -77
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +35 -65
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +33 -0
- package/dist/gir/type.d.ts.map +1 -0
- package/dist/gir/type.js +2 -0
- package/dist/gir/type.js.map +1 -0
- package/dist/index.d.ts +5 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -11
- package/dist/index.js.map +1 -1
- package/dist/khronos/args.d.ts +30 -0
- package/dist/khronos/args.d.ts.map +1 -0
- package/dist/khronos/args.js +150 -0
- package/dist/khronos/args.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +21 -0
- package/dist/khronos/jsdoc.d.ts.map +1 -0
- package/dist/khronos/jsdoc.js +59 -0
- package/dist/khronos/jsdoc.js.map +1 -0
- package/dist/khronos/model.d.ts +37 -0
- package/dist/khronos/model.d.ts.map +1 -0
- package/dist/khronos/model.js +132 -0
- package/dist/khronos/model.js.map +1 -0
- package/dist/khronos/modules.d.ts +11 -0
- package/dist/khronos/modules.d.ts.map +1 -0
- package/dist/khronos/modules.js +58 -0
- package/dist/khronos/modules.js.map +1 -0
- package/dist/khronos/parse.d.ts +9 -0
- package/dist/khronos/parse.d.ts.map +1 -0
- package/dist/khronos/parse.js +61 -0
- package/dist/khronos/parse.js.map +1 -0
- package/dist/khronos/pipeline.d.ts +24 -0
- package/dist/khronos/pipeline.d.ts.map +1 -0
- package/dist/khronos/pipeline.js +182 -0
- package/dist/khronos/pipeline.js.map +1 -0
- package/dist/khronos/plan.d.ts +80 -0
- package/dist/khronos/plan.d.ts.map +1 -0
- package/dist/khronos/plan.js +136 -0
- package/dist/khronos/plan.js.map +1 -0
- package/dist/khronos/render.d.ts +16 -0
- package/dist/khronos/render.d.ts.map +1 -0
- package/dist/khronos/render.js +158 -0
- package/dist/khronos/render.js.map +1 -0
- package/dist/khronos/select.d.ts +15 -0
- package/dist/khronos/select.d.ts.map +1 -0
- package/dist/khronos/select.js +45 -0
- package/dist/khronos/select.js.map +1 -0
- package/dist/runner.d.ts +29 -47
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +78 -53
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +9 -0
- package/dist/store/compile-store.d.ts.map +1 -0
- package/dist/store/compile-store.js +38 -0
- package/dist/store/compile-store.js.map +1 -0
- package/dist/store/gi/async.d.ts +4 -0
- package/dist/store/gi/async.d.ts.map +1 -0
- package/dist/store/gi/async.js +41 -0
- package/dist/store/gi/async.js.map +1 -0
- package/dist/store/gi/callables.d.ts +36 -0
- package/dist/store/gi/callables.d.ts.map +1 -0
- package/dist/store/gi/callables.js +202 -0
- package/dist/store/gi/callables.js.map +1 -0
- package/dist/store/gi/callback.d.ts +4 -0
- package/dist/store/gi/callback.d.ts.map +1 -0
- package/dist/store/gi/callback.js +14 -0
- package/dist/store/gi/callback.js.map +1 -0
- package/dist/store/gi/class-struct-record.d.ts +9 -0
- package/dist/store/gi/class-struct-record.d.ts.map +1 -0
- package/dist/store/gi/class-struct-record.js +34 -0
- package/dist/store/gi/class-struct-record.js.map +1 -0
- package/dist/store/gi/class.d.ts +4 -0
- package/dist/store/gi/class.d.ts.map +1 -0
- package/dist/store/gi/class.js +169 -0
- package/dist/store/gi/class.js.map +1 -0
- package/dist/store/gi/companion.d.ts +4 -0
- package/dist/store/gi/companion.d.ts.map +1 -0
- package/dist/store/gi/companion.js +13 -0
- package/dist/store/gi/companion.js.map +1 -0
- package/dist/store/gi/constant.d.ts +5 -0
- package/dist/store/gi/constant.d.ts.map +1 -0
- package/dist/store/gi/constant.js +18 -0
- package/dist/store/gi/constant.js.map +1 -0
- package/dist/store/gi/constructor-props.d.ts +5 -0
- package/dist/store/gi/constructor-props.d.ts.map +1 -0
- package/dist/store/gi/constructor-props.js +64 -0
- package/dist/store/gi/constructor-props.js.map +1 -0
- package/dist/store/gi/enum.d.ts +5 -0
- package/dist/store/gi/enum.d.ts.map +1 -0
- package/dist/store/gi/enum.js +38 -0
- package/dist/store/gi/enum.js.map +1 -0
- package/dist/store/gi/function.d.ts +8 -0
- package/dist/store/gi/function.d.ts.map +1 -0
- package/dist/store/gi/function.js +87 -0
- package/dist/store/gi/function.js.map +1 -0
- package/dist/store/gi/gtype-binding.d.ts +10 -0
- package/dist/store/gi/gtype-binding.d.ts.map +1 -0
- package/dist/store/gi/gtype-binding.js +20 -0
- package/dist/store/gi/gtype-binding.js.map +1 -0
- package/dist/store/gi/interface.d.ts +4 -0
- package/dist/store/gi/interface.d.ts.map +1 -0
- package/dist/store/gi/interface.js +99 -0
- package/dist/store/gi/interface.js.map +1 -0
- package/dist/store/gi/item-comparators.d.ts +6 -0
- package/dist/store/gi/item-comparators.d.ts.map +1 -0
- package/dist/store/gi/item-comparators.js +76 -0
- package/dist/store/gi/item-comparators.js.map +1 -0
- package/dist/store/gi/method.d.ts +24 -0
- package/dist/store/gi/method.d.ts.map +1 -0
- package/dist/store/gi/method.js +279 -0
- package/dist/store/gi/method.js.map +1 -0
- package/dist/store/gi/param-marshal.d.ts +9 -0
- package/dist/store/gi/param-marshal.d.ts.map +1 -0
- package/dist/store/gi/param-marshal.js +37 -0
- package/dist/store/gi/param-marshal.js.map +1 -0
- package/dist/store/gi/pipeline.d.ts +4 -0
- package/dist/store/gi/pipeline.d.ts.map +1 -0
- package/dist/store/gi/pipeline.js +80 -0
- package/dist/store/gi/pipeline.js.map +1 -0
- package/dist/store/gi/properties.d.ts +5 -0
- package/dist/store/gi/properties.d.ts.map +1 -0
- package/dist/store/gi/properties.js +30 -0
- package/dist/store/gi/properties.js.map +1 -0
- package/dist/store/gi/property-accessor.d.ts +26 -0
- package/dist/store/gi/property-accessor.d.ts.map +1 -0
- package/dist/store/gi/property-accessor.js +132 -0
- package/dist/store/gi/property-accessor.js.map +1 -0
- package/dist/store/gi/record-constructor.d.ts +5 -0
- package/dist/store/gi/record-constructor.d.ts.map +1 -0
- package/dist/store/gi/record-constructor.js +65 -0
- package/dist/store/gi/record-constructor.js.map +1 -0
- package/dist/store/gi/record-field-accessor.d.ts +25 -0
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
- package/dist/store/gi/record-field-accessor.js +288 -0
- package/dist/store/gi/record-field-accessor.js.map +1 -0
- package/dist/store/gi/record-layout.d.ts +14 -0
- package/dist/store/gi/record-layout.d.ts.map +1 -0
- package/dist/store/gi/record-layout.js +96 -0
- package/dist/store/gi/record-layout.js.map +1 -0
- package/dist/store/gi/record.d.ts +4 -0
- package/dist/store/gi/record.d.ts.map +1 -0
- package/dist/store/gi/record.js +59 -0
- package/dist/store/gi/record.js.map +1 -0
- package/dist/store/gi/registration.d.ts +16 -0
- package/dist/store/gi/registration.d.ts.map +1 -0
- package/dist/store/gi/registration.js +20 -0
- package/dist/store/gi/registration.js.map +1 -0
- package/dist/store/gi/return-wrap.d.ts +10 -0
- package/dist/store/gi/return-wrap.d.ts.map +1 -0
- package/dist/store/gi/return-wrap.js +46 -0
- package/dist/store/gi/return-wrap.js.map +1 -0
- package/dist/store/gi/runtime-override.d.ts +3 -0
- package/dist/store/gi/runtime-override.d.ts.map +1 -0
- package/dist/{writers → store/gi}/runtime-override.js +0 -15
- package/dist/store/gi/runtime-override.js.map +1 -0
- package/dist/store/gi/signal.d.ts +5 -0
- package/dist/store/gi/signal.d.ts.map +1 -0
- package/dist/store/gi/signal.js +233 -0
- package/dist/store/gi/signal.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +4 -0
- package/dist/store/gi/vtable.d.ts.map +1 -0
- package/dist/store/gi/vtable.js +78 -0
- package/dist/store/gi/vtable.js.map +1 -0
- package/dist/store/gi-store.d.ts +9 -0
- package/dist/store/gi-store.d.ts.map +1 -0
- package/dist/store/gi-store.js +57 -0
- package/dist/store/gi-store.js.map +1 -0
- package/dist/store/jsx-store.d.ts +5 -0
- package/dist/store/jsx-store.d.ts.map +1 -0
- package/dist/store/jsx-store.js +23 -0
- package/dist/store/jsx-store.js.map +1 -0
- package/dist/store/react/built-ins.d.ts +9 -0
- package/dist/store/react/built-ins.d.ts.map +1 -0
- package/dist/store/react/built-ins.js +226 -0
- package/dist/store/react/built-ins.js.map +1 -0
- package/dist/store/react/element-components.d.ts +15 -0
- package/dist/store/react/element-components.d.ts.map +1 -0
- package/dist/store/react/element-components.js +92 -0
- package/dist/store/react/element-components.js.map +1 -0
- package/dist/store/react/element-prop-types.d.ts +19 -0
- package/dist/store/react/element-prop-types.d.ts.map +1 -0
- package/dist/store/react/element-prop-types.js +244 -0
- package/dist/store/react/element-prop-types.js.map +1 -0
- package/dist/store/react/element-props.d.ts +4 -0
- package/dist/store/react/element-props.d.ts.map +1 -0
- package/dist/store/react/element-props.js +178 -0
- package/dist/store/react/element-props.js.map +1 -0
- package/dist/store/react/gir-index.d.ts +25 -0
- package/dist/store/react/gir-index.d.ts.map +1 -0
- package/dist/store/react/gir-index.js +55 -0
- package/dist/store/react/gir-index.js.map +1 -0
- package/dist/store/react/intrinsic-elements.d.ts +26 -0
- package/dist/store/react/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/react/intrinsic-elements.js +107 -0
- package/dist/store/react/intrinsic-elements.js.map +1 -0
- package/dist/store/react/jsx.d.ts +18 -0
- package/dist/store/react/jsx.d.ts.map +1 -0
- package/dist/store/react/jsx.js +203 -0
- package/dist/store/react/jsx.js.map +1 -0
- package/dist/store/react/metadata.d.ts +4 -0
- package/dist/store/react/metadata.d.ts.map +1 -0
- package/dist/store/react/metadata.js +174 -0
- package/dist/store/react/metadata.js.map +1 -0
- package/dist/store/react/pipeline.d.ts +14 -0
- package/dist/store/react/pipeline.d.ts.map +1 -0
- package/dist/store/react/pipeline.js +60 -0
- package/dist/store/react/pipeline.js.map +1 -0
- package/dist/store/react/props.d.ts +36 -0
- package/dist/store/react/props.d.ts.map +1 -0
- package/dist/store/react/props.js +133 -0
- package/dist/store/react/props.js.map +1 -0
- package/dist/store/store-fs.d.ts +41 -0
- package/dist/store/store-fs.d.ts.map +1 -0
- package/dist/store/store-fs.js +71 -0
- package/dist/store/store-fs.js.map +1 -0
- package/dist/writer/context.d.ts +16 -0
- package/dist/writer/context.d.ts.map +1 -0
- package/dist/writer/context.js +44 -0
- package/dist/writer/context.js.map +1 -0
- package/dist/writer/doc.d.ts +2 -0
- package/dist/writer/doc.d.ts.map +1 -0
- package/dist/writer/doc.js +12 -0
- package/dist/writer/doc.js.map +1 -0
- package/dist/writer/emit.d.ts +8 -0
- package/dist/writer/emit.d.ts.map +1 -0
- package/dist/writer/emit.js +21 -0
- package/dist/writer/emit.js.map +1 -0
- package/dist/writer/gtk-doc.d.ts +2 -0
- package/dist/writer/gtk-doc.d.ts.map +1 -0
- package/dist/writer/gtk-doc.js +67 -0
- package/dist/writer/gtk-doc.js.map +1 -0
- package/dist/writer/imports.d.ts +10 -0
- package/dist/writer/imports.d.ts.map +1 -0
- package/dist/writer/imports.js +50 -0
- package/dist/writer/imports.js.map +1 -0
- package/dist/writer/module.d.ts +15 -0
- package/dist/writer/module.d.ts.map +1 -0
- package/dist/writer/module.js +46 -0
- package/dist/writer/module.js.map +1 -0
- package/overrides/cairo/context.ts.ejs +1269 -0
- package/overrides/cairo/font-face.ts.ejs +151 -0
- package/overrides/cairo/font-options.ts.ejs +199 -0
- package/overrides/cairo/image-surface.ts.ejs +132 -0
- package/overrides/cairo/index.ts.ejs +22 -0
- package/overrides/cairo/matrix.ts.ejs +171 -0
- package/overrides/cairo/pattern.ts.ejs +476 -0
- package/overrides/cairo/recording-surface.ts.ejs +102 -0
- package/overrides/cairo/region.ts.ejs +237 -0
- package/overrides/cairo/scaled-font.ts.ejs +330 -0
- package/overrides/cairo/surface.ts.ejs +296 -0
- package/overrides/gdk/index.ts.ejs +2 -0
- package/overrides/gdk/rgba.ts.ejs +11 -0
- package/overrides/gobject/index.ts.ejs +29 -0
- package/overrides/gobject/object.ts.ejs +51 -0
- package/overrides/gobject/value.ts.ejs +17 -0
- package/overrides/graphene/index.ts.ejs +2 -0
- package/overrides/graphene/structs.ts.ejs +37 -0
- package/overrides/gtk/constants.ts.ejs +3 -0
- package/overrides/gtk/index.ts.ejs +2 -0
- package/package.json +15 -15
- package/src/analysis/descriptor-render.ts +407 -0
- package/src/analysis/descriptor.ts +263 -0
- package/src/analysis/inheritance.ts +242 -0
- package/src/analysis/param-structure.ts +127 -0
- package/src/analysis/ts-type.ts +88 -0
- package/src/compile.ts +152 -0
- package/src/docs/api-reference.ts +361 -0
- package/src/docs/element-page.ts +290 -0
- package/src/docs/pipeline.ts +182 -0
- package/src/docs/render.ts +191 -0
- package/src/docs/symbol-page.ts +444 -0
- package/src/fingerprint.ts +40 -29
- package/src/gir/ancestry.ts +41 -0
- package/src/gir/callback.ts +25 -22
- package/src/gir/class.ts +31 -57
- package/src/gir/enum.ts +20 -38
- package/src/gir/field.ts +21 -36
- package/src/gir/function.ts +17 -56
- package/src/gir/gir-path.ts +49 -0
- package/src/gir/libraries.ts +77 -0
- package/src/gir/library.ts +248 -0
- package/src/gir/namespace.ts +85 -80
- package/src/gir/parameter.ts +64 -93
- package/src/gir/parse.ts +43 -95
- package/src/gir/primitives.ts +23 -45
- package/src/gir/property.ts +27 -29
- package/src/gir/record.ts +53 -0
- package/src/gir/size.ts +9 -56
- package/src/gir/type-id.ts +49 -0
- package/src/gir/type-ref.ts +35 -140
- package/src/gir/type.ts +16 -0
- package/src/index.ts +20 -15
- package/src/khronos/args.ts +202 -0
- package/src/khronos/jsdoc.ts +76 -0
- package/src/khronos/model.ts +166 -0
- package/src/khronos/modules.ts +75 -0
- package/src/khronos/parse.ts +66 -0
- package/src/khronos/pipeline.ts +234 -0
- package/src/khronos/plan.ts +191 -0
- package/src/khronos/registry/LICENSE +202 -0
- package/src/khronos/registry/gl.xml +47748 -0
- package/src/khronos/render.ts +193 -0
- package/src/khronos/select.ts +67 -0
- package/src/runner.ts +112 -75
- package/src/store/compile-store.ts +49 -0
- package/src/store/gi/async.ts +42 -0
- package/src/store/gi/callables.ts +309 -0
- package/src/store/gi/callback.ts +15 -0
- package/src/store/gi/class-struct-record.ts +40 -0
- package/src/store/gi/class.ts +212 -0
- package/src/store/gi/companion.ts +13 -0
- package/src/store/gi/constant.ts +24 -0
- package/src/store/gi/constructor-props.ts +82 -0
- package/src/store/gi/enum.ts +49 -0
- package/src/store/gi/function.ts +107 -0
- package/src/store/gi/gtype-binding.ts +33 -0
- package/src/store/gi/interface.ts +157 -0
- package/src/store/gi/item-comparators.ts +90 -0
- package/src/store/gi/method.ts +417 -0
- package/src/store/gi/param-marshal.ts +48 -0
- package/src/store/gi/pipeline.ts +85 -0
- package/src/store/gi/properties.ts +39 -0
- package/src/store/gi/property-accessor.ts +194 -0
- package/src/store/gi/record-constructor.ts +87 -0
- package/src/store/gi/record-field-accessor.ts +394 -0
- package/src/store/gi/record-layout.ts +134 -0
- package/src/store/gi/record.ts +66 -0
- package/src/store/gi/registration.ts +38 -0
- package/src/store/gi/return-wrap.ts +52 -0
- package/src/store/gi/runtime-override.ts +36 -0
- package/src/store/gi/signal.ts +310 -0
- package/src/store/gi/vtable.ts +99 -0
- package/src/store/gi-store.ts +79 -0
- package/src/store/jsx-store.ts +27 -0
- package/src/store/react/built-ins.ts +260 -0
- package/src/store/react/element-components.ts +138 -0
- package/src/store/react/element-prop-types.ts +280 -0
- package/src/store/react/element-props.ts +204 -0
- package/src/store/react/gir-index.ts +85 -0
- package/src/store/react/intrinsic-elements.ts +161 -0
- package/src/store/react/jsx.ts +294 -0
- package/src/store/react/metadata.ts +197 -0
- package/src/store/react/pipeline.ts +90 -0
- package/src/store/react/props.ts +197 -0
- package/src/store/store-fs.ts +112 -0
- package/src/writer/context.ts +48 -0
- package/src/writer/doc.ts +11 -0
- package/src/writer/emit.ts +26 -0
- package/src/writer/gtk-doc.ts +74 -0
- package/src/writer/imports.ts +59 -0
- package/src/writer/module.ts +45 -0
- package/LICENSE +0 -373
- package/dist/dsl/context.d.ts +0 -104
- package/dist/dsl/context.d.ts.map +0 -1
- package/dist/dsl/context.js +0 -140
- package/dist/dsl/context.js.map +0 -1
- package/dist/dsl/emit.d.ts +0 -28
- package/dist/dsl/emit.d.ts.map +0 -1
- package/dist/dsl/emit.js +0 -41
- package/dist/dsl/emit.js.map +0 -1
- package/dist/dsl/identifier.d.ts +0 -28
- package/dist/dsl/identifier.d.ts.map +0 -1
- package/dist/dsl/identifier.js +0 -45
- package/dist/dsl/identifier.js.map +0 -1
- package/dist/dsl/imports.d.ts +0 -58
- package/dist/dsl/imports.d.ts.map +0 -1
- package/dist/dsl/imports.js +0 -107
- package/dist/dsl/imports.js.map +0 -1
- package/dist/dsl/module.d.ts +0 -53
- package/dist/dsl/module.d.ts.map +0 -1
- package/dist/dsl/module.js +0 -76
- package/dist/dsl/module.js.map +0 -1
- package/dist/ffi/pipeline.d.ts +0 -19
- package/dist/ffi/pipeline.d.ts.map +0 -1
- package/dist/ffi/pipeline.js +0 -107
- package/dist/ffi/pipeline.js.map +0 -1
- package/dist/gi-store.d.ts +0 -34
- package/dist/gi-store.d.ts.map +0 -1
- package/dist/gi-store.js +0 -154
- package/dist/gi-store.js.map +0 -1
- package/dist/gir/boxed.d.ts +0 -66
- package/dist/gir/boxed.d.ts.map +0 -1
- package/dist/gir/boxed.js +0 -49
- package/dist/gir/boxed.js.map +0 -1
- package/dist/gir/qualified-name.d.ts +0 -37
- package/dist/gir/qualified-name.d.ts.map +0 -1
- package/dist/gir/qualified-name.js +0 -39
- package/dist/gir/qualified-name.js.map +0 -1
- package/dist/gir/qualify.d.ts +0 -32
- package/dist/gir/qualify.d.ts.map +0 -1
- package/dist/gir/qualify.js +0 -60
- package/dist/gir/qualify.js.map +0 -1
- package/dist/gir/repository.d.ts +0 -82
- package/dist/gir/repository.d.ts.map +0 -1
- package/dist/gir/repository.js +0 -122
- package/dist/gir/repository.js.map +0 -1
- package/dist/gir/signal.d.ts +0 -22
- package/dist/gir/signal.d.ts.map +0 -1
- package/dist/gir/signal.js +0 -20
- package/dist/gir/signal.js.map +0 -1
- package/dist/jsx-store.d.ts +0 -22
- package/dist/jsx-store.d.ts.map +0 -1
- package/dist/jsx-store.js +0 -40
- package/dist/jsx-store.js.map +0 -1
- package/dist/react/compounds-meta.d.ts +0 -18
- package/dist/react/compounds-meta.d.ts.map +0 -1
- package/dist/react/compounds-meta.js +0 -93
- package/dist/react/compounds-meta.js.map +0 -1
- package/dist/react/compounds.d.ts +0 -27
- package/dist/react/compounds.d.ts.map +0 -1
- package/dist/react/compounds.js +0 -164
- package/dist/react/compounds.js.map +0 -1
- package/dist/react/internal.d.ts +0 -14
- package/dist/react/internal.d.ts.map +0 -1
- package/dist/react/internal.js +0 -79
- package/dist/react/internal.js.map +0 -1
- package/dist/react/jsx.d.ts +0 -22
- package/dist/react/jsx.d.ts.map +0 -1
- package/dist/react/jsx.js +0 -134
- package/dist/react/jsx.js.map +0 -1
- package/dist/react/pipeline.d.ts +0 -13
- package/dist/react/pipeline.d.ts.map +0 -1
- package/dist/react/pipeline.js +0 -25
- package/dist/react/pipeline.js.map +0 -1
- package/dist/react/props.d.ts +0 -38
- package/dist/react/props.d.ts.map +0 -1
- package/dist/react/props.js +0 -231
- package/dist/react/props.js.map +0 -1
- package/dist/react/slot-props.d.ts +0 -10
- package/dist/react/slot-props.d.ts.map +0 -1
- package/dist/react/slot-props.js +0 -56
- package/dist/react/slot-props.js.map +0 -1
- package/dist/react/widgets.d.ts +0 -83
- package/dist/react/widgets.d.ts.map +0 -1
- package/dist/react/widgets.js +0 -152
- package/dist/react/widgets.js.map +0 -1
- package/dist/store-fs.d.ts +0 -109
- package/dist/store-fs.d.ts.map +0 -1
- package/dist/store-fs.js +0 -98
- package/dist/store-fs.js.map +0 -1
- package/dist/transpile.d.ts +0 -32
- package/dist/transpile.d.ts.map +0 -1
- package/dist/transpile.js +0 -63
- package/dist/transpile.js.map +0 -1
- package/dist/typecheck-store.d.ts +0 -41
- package/dist/typecheck-store.d.ts.map +0 -1
- package/dist/typecheck-store.js +0 -102
- package/dist/typecheck-store.js.map +0 -1
- package/dist/writers/alias.d.ts +0 -13
- package/dist/writers/alias.d.ts.map +0 -1
- package/dist/writers/alias.js +0 -17
- package/dist/writers/alias.js.map +0 -1
- package/dist/writers/async.d.ts +0 -22
- package/dist/writers/async.d.ts.map +0 -1
- package/dist/writers/async.js +0 -48
- package/dist/writers/async.js.map +0 -1
- package/dist/writers/boxed-constructor.d.ts +0 -26
- package/dist/writers/boxed-constructor.d.ts.map +0 -1
- package/dist/writers/boxed-constructor.js +0 -85
- package/dist/writers/boxed-constructor.js.map +0 -1
- package/dist/writers/boxed-field-accessor.d.ts +0 -18
- package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
- package/dist/writers/boxed-field-accessor.js +0 -260
- package/dist/writers/boxed-field-accessor.js.map +0 -1
- package/dist/writers/boxed-layout.d.ts +0 -27
- package/dist/writers/boxed-layout.d.ts.map +0 -1
- package/dist/writers/boxed-layout.js +0 -128
- package/dist/writers/boxed-layout.js.map +0 -1
- package/dist/writers/boxed.d.ts +0 -20
- package/dist/writers/boxed.d.ts.map +0 -1
- package/dist/writers/boxed.js +0 -71
- package/dist/writers/boxed.js.map +0 -1
- package/dist/writers/callables.d.ts +0 -124
- package/dist/writers/callables.d.ts.map +0 -1
- package/dist/writers/callables.js +0 -283
- package/dist/writers/callables.js.map +0 -1
- package/dist/writers/callback.d.ts +0 -16
- package/dist/writers/callback.d.ts.map +0 -1
- package/dist/writers/callback.js +0 -38
- package/dist/writers/callback.js.map +0 -1
- package/dist/writers/class-struct-record.d.ts +0 -31
- package/dist/writers/class-struct-record.d.ts.map +0 -1
- package/dist/writers/class-struct-record.js +0 -67
- package/dist/writers/class-struct-record.js.map +0 -1
- package/dist/writers/class-struct.d.ts +0 -22
- package/dist/writers/class-struct.d.ts.map +0 -1
- package/dist/writers/class-struct.js +0 -85
- package/dist/writers/class-struct.js.map +0 -1
- package/dist/writers/class.d.ts +0 -16
- package/dist/writers/class.d.ts.map +0 -1
- package/dist/writers/class.js +0 -307
- package/dist/writers/class.js.map +0 -1
- package/dist/writers/constant.d.ts +0 -15
- package/dist/writers/constant.d.ts.map +0 -1
- package/dist/writers/constant.js +0 -23
- package/dist/writers/constant.js.map +0 -1
- package/dist/writers/constants.d.ts +0 -15
- package/dist/writers/constants.d.ts.map +0 -1
- package/dist/writers/constants.js +0 -23
- package/dist/writers/constants.js.map +0 -1
- package/dist/writers/constructor-props.d.ts +0 -32
- package/dist/writers/constructor-props.d.ts.map +0 -1
- package/dist/writers/constructor-props.js +0 -110
- package/dist/writers/constructor-props.js.map +0 -1
- package/dist/writers/enum.d.ts +0 -21
- package/dist/writers/enum.d.ts.map +0 -1
- package/dist/writers/enum.js +0 -48
- package/dist/writers/enum.js.map +0 -1
- package/dist/writers/function.d.ts +0 -40
- package/dist/writers/function.d.ts.map +0 -1
- package/dist/writers/function.js +0 -127
- package/dist/writers/function.js.map +0 -1
- package/dist/writers/gtype-binding.d.ts +0 -19
- package/dist/writers/gtype-binding.d.ts.map +0 -1
- package/dist/writers/gtype-binding.js +0 -40
- package/dist/writers/gtype-binding.js.map +0 -1
- package/dist/writers/inheritance.d.ts +0 -48
- package/dist/writers/inheritance.d.ts.map +0 -1
- package/dist/writers/inheritance.js +0 -90
- package/dist/writers/inheritance.js.map +0 -1
- package/dist/writers/interface.d.ts +0 -16
- package/dist/writers/interface.d.ts.map +0 -1
- package/dist/writers/interface.js +0 -155
- package/dist/writers/interface.js.map +0 -1
- package/dist/writers/method.d.ts +0 -150
- package/dist/writers/method.d.ts.map +0 -1
- package/dist/writers/method.js +0 -510
- package/dist/writers/method.js.map +0 -1
- package/dist/writers/param-classify.d.ts +0 -93
- package/dist/writers/param-classify.d.ts.map +0 -1
- package/dist/writers/param-classify.js +0 -163
- package/dist/writers/param-classify.js.map +0 -1
- package/dist/writers/property-accessor.d.ts +0 -19
- package/dist/writers/property-accessor.d.ts.map +0 -1
- package/dist/writers/property-accessor.js +0 -117
- package/dist/writers/property-accessor.js.map +0 -1
- package/dist/writers/registration.d.ts +0 -27
- package/dist/writers/registration.d.ts.map +0 -1
- package/dist/writers/registration.js +0 -30
- package/dist/writers/registration.js.map +0 -1
- package/dist/writers/return-wrap.d.ts +0 -39
- package/dist/writers/return-wrap.d.ts.map +0 -1
- package/dist/writers/return-wrap.js +0 -152
- package/dist/writers/return-wrap.js.map +0 -1
- package/dist/writers/runtime-override.d.ts +0 -18
- package/dist/writers/runtime-override.d.ts.map +0 -1
- package/dist/writers/runtime-override.js.map +0 -1
- package/dist/writers/signal.d.ts +0 -21
- package/dist/writers/signal.d.ts.map +0 -1
- package/dist/writers/signal.js +0 -260
- package/dist/writers/signal.js.map +0 -1
- package/dist/writers/ts-type.d.ts +0 -50
- package/dist/writers/ts-type.d.ts.map +0 -1
- package/dist/writers/ts-type.js +0 -75
- package/dist/writers/ts-type.js.map +0 -1
- package/dist/writers/types-ts.d.ts +0 -27
- package/dist/writers/types-ts.d.ts.map +0 -1
- package/dist/writers/types-ts.js +0 -97
- package/dist/writers/types-ts.js.map +0 -1
- package/dist/writers/value.d.ts +0 -89
- package/dist/writers/value.d.ts.map +0 -1
- package/dist/writers/value.js +0 -402
- package/dist/writers/value.js.map +0 -1
- package/src/dsl/context.ts +0 -146
- package/src/dsl/emit.ts +0 -42
- package/src/dsl/identifier.ts +0 -52
- package/src/dsl/imports.ts +0 -109
- package/src/dsl/module.ts +0 -75
- package/src/ffi/pipeline.ts +0 -113
- package/src/gi-store.ts +0 -199
- package/src/gir/boxed.ts +0 -94
- package/src/gir/qualified-name.ts +0 -55
- package/src/gir/qualify.ts +0 -64
- package/src/gir/repository.ts +0 -149
- package/src/gir/signal.ts +0 -36
- package/src/jsx-store.ts +0 -53
- package/src/react/compounds-meta.ts +0 -99
- package/src/react/compounds.ts +0 -204
- package/src/react/internal.ts +0 -91
- package/src/react/jsx.ts +0 -155
- package/src/react/pipeline.ts +0 -29
- package/src/react/props.ts +0 -307
- package/src/react/slot-props.ts +0 -57
- package/src/react/widgets.ts +0 -185
- package/src/store-fs.ts +0 -157
- package/src/transpile.ts +0 -80
- package/src/typecheck-store.ts +0 -136
- package/src/writers/alias.ts +0 -19
- package/src/writers/async.ts +0 -44
- package/src/writers/boxed-constructor.ts +0 -105
- package/src/writers/boxed-field-accessor.ts +0 -306
- package/src/writers/boxed-layout.ts +0 -166
- package/src/writers/boxed.ts +0 -77
- package/src/writers/callables.ts +0 -339
- package/src/writers/callback.ts +0 -40
- package/src/writers/class-struct-record.ts +0 -75
- package/src/writers/class-struct.ts +0 -96
- package/src/writers/class.ts +0 -384
- package/src/writers/constant.ts +0 -29
- package/src/writers/constructor-props.ts +0 -130
- package/src/writers/enum.ts +0 -53
- package/src/writers/function.ts +0 -136
- package/src/writers/gtype-binding.ts +0 -48
- package/src/writers/inheritance.ts +0 -104
- package/src/writers/interface.ts +0 -168
- package/src/writers/method.ts +0 -678
- package/src/writers/param-classify.ts +0 -178
- package/src/writers/property-accessor.ts +0 -139
- package/src/writers/registration.ts +0 -42
- package/src/writers/return-wrap.ts +0 -180
- package/src/writers/runtime-override.ts +0 -59
- package/src/writers/signal.ts +0 -318
- package/src/writers/ts-type.ts +0 -115
- package/src/writers/value.ts +0 -485
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { joinArgs } from "../writer/emit.js";
|
|
3
|
+
const T = {
|
|
4
|
+
bind: "t.bind",
|
|
5
|
+
int8: "t.int8",
|
|
6
|
+
uint8: "t.uint8",
|
|
7
|
+
int16: "t.int16",
|
|
8
|
+
uint16: "t.uint16",
|
|
9
|
+
int32: "t.int32",
|
|
10
|
+
uint32: "t.uint32",
|
|
11
|
+
int64: "t.int64",
|
|
12
|
+
uint64: "t.uint64",
|
|
13
|
+
bigint64: "t.bigint64",
|
|
14
|
+
biguint64: "t.biguint64",
|
|
15
|
+
gtype: "t.gtype",
|
|
16
|
+
float32: "t.float32",
|
|
17
|
+
float64: "t.float64",
|
|
18
|
+
boolean: "t.boolean",
|
|
19
|
+
void: "t.void",
|
|
20
|
+
unichar: "t.unichar",
|
|
21
|
+
buffer: "t.buffer",
|
|
22
|
+
string: "t.string",
|
|
23
|
+
object: "t.object",
|
|
24
|
+
boxed: "t.boxed",
|
|
25
|
+
struct: "t.struct",
|
|
26
|
+
fundamental: "t.fundamental",
|
|
27
|
+
ref: "t.ref",
|
|
28
|
+
hashTable: "t.hashTable",
|
|
29
|
+
enum: "t.enum",
|
|
30
|
+
flags: "t.flags",
|
|
31
|
+
array: "t.array",
|
|
32
|
+
list: "t.list",
|
|
33
|
+
slist: "t.slist",
|
|
34
|
+
ptrArray: "t.ptrArray",
|
|
35
|
+
gArray: "t.gArray",
|
|
36
|
+
byteArray: "t.byteArray",
|
|
37
|
+
sizedArray: "t.sizedArray",
|
|
38
|
+
fixedArray: "t.fixedArray",
|
|
39
|
+
callback: "t.callback",
|
|
40
|
+
fn: "t.fn",
|
|
41
|
+
};
|
|
42
|
+
const call = (name, args) => `${T[name]}(${joinArgs(args)})`;
|
|
43
|
+
const optionsObject = (parts) => {
|
|
44
|
+
const present = parts.filter((part) => part !== undefined);
|
|
45
|
+
return present.length === 0 ? undefined : `{ ${present.join(", ")} }`;
|
|
46
|
+
};
|
|
47
|
+
export const tVoid = T.void;
|
|
48
|
+
export const tBoolean = T.boolean;
|
|
49
|
+
export const tUint8 = T.uint8;
|
|
50
|
+
export const tUint32 = T.uint32;
|
|
51
|
+
export const tInt32 = T.int32;
|
|
52
|
+
export const tUint64 = T.uint64;
|
|
53
|
+
export const tGtype = T.gtype;
|
|
54
|
+
export const tBuffer = T.buffer;
|
|
55
|
+
export const tScalar = (name) => T[name];
|
|
56
|
+
export const tString = (ownership, length) => call("string", [sourceStringLiteral(ownership), length]);
|
|
57
|
+
export const tObject = (ownership) => call("object", [sourceStringLiteral(ownership)]);
|
|
58
|
+
export const tBoxed = (glibName, options) => call("boxed", [
|
|
59
|
+
sourceStringLiteral(glibName),
|
|
60
|
+
optionsObject([
|
|
61
|
+
`ownership: ${sourceStringLiteral(options.ownership)}`,
|
|
62
|
+
options.sharedLibrary === undefined
|
|
63
|
+
? undefined
|
|
64
|
+
: `sharedLibrary: ${sourceStringLiteral(options.sharedLibrary)}`,
|
|
65
|
+
`getTypeFnName: ${sourceStringLiteral(options.getTypeFnName)}`,
|
|
66
|
+
options.callerAllocated ? "callerAllocated: true" : undefined,
|
|
67
|
+
options.size === undefined ? undefined : `size: ${options.size}`,
|
|
68
|
+
]),
|
|
69
|
+
]);
|
|
70
|
+
export const tStruct = (ownership, options) => call("struct", [
|
|
71
|
+
sourceStringLiteral(ownership),
|
|
72
|
+
optionsObject([
|
|
73
|
+
options.size === undefined ? undefined : `size: ${options.size}`,
|
|
74
|
+
options.wrapperClass === undefined ? undefined : `wrapperClass: ${options.wrapperClass}`,
|
|
75
|
+
options.callerAllocated ? "callerAllocated: true" : undefined,
|
|
76
|
+
]),
|
|
77
|
+
]);
|
|
78
|
+
export const tInlineStruct = () => tStruct("borrowed", { size: undefined, wrapperClass: undefined, callerAllocated: false });
|
|
79
|
+
export const tFundamental = (lib, refFunc, unrefFunc, options) => call("fundamental", [
|
|
80
|
+
sourceStringLiteral(lib),
|
|
81
|
+
sourceStringLiteral(refFunc),
|
|
82
|
+
sourceStringLiteral(unrefFunc),
|
|
83
|
+
optionsObject([
|
|
84
|
+
`ownership: ${sourceStringLiteral(options.ownership)}`,
|
|
85
|
+
options.typeName === undefined ? undefined : `typeName: ${sourceStringLiteral(options.typeName)}`,
|
|
86
|
+
options.wrapperClass === undefined ? undefined : `wrapperClass: ${options.wrapperClass}`,
|
|
87
|
+
]),
|
|
88
|
+
]);
|
|
89
|
+
export const tRef = (inner, inout = false) => call("ref", [inner, inout ? "true" : undefined]);
|
|
90
|
+
export const tHashTable = (key, value, ownership) => call("hashTable", [key, value, sourceStringLiteral(ownership)]);
|
|
91
|
+
export const tEnum = (lib, getType, signed) => call("enum", [sourceStringLiteral(lib), sourceStringLiteral(getType), String(signed)]);
|
|
92
|
+
export const tFlags = (lib, getType, signed) => call("flags", [sourceStringLiteral(lib), sourceStringLiteral(getType), String(signed)]);
|
|
93
|
+
export const tByteArray = (ownership) => call("byteArray", [sourceStringLiteral(ownership)]);
|
|
94
|
+
export const tList = (name, element, ownership) => call(name, [element, sourceStringLiteral(ownership)]);
|
|
95
|
+
export const tArray = (element, ownership, elementSize) => call("array", [
|
|
96
|
+
element,
|
|
97
|
+
ownership === undefined ? undefined : sourceStringLiteral("array"),
|
|
98
|
+
ownership === undefined ? undefined : sourceStringLiteral(ownership),
|
|
99
|
+
elementSize === undefined ? undefined : `{ elementSize: ${elementSize} }`,
|
|
100
|
+
]);
|
|
101
|
+
export const tSizedArray = (element, lengthIndex, ownership, elementSize) => call("sizedArray", [
|
|
102
|
+
element,
|
|
103
|
+
String(lengthIndex),
|
|
104
|
+
ownership === undefined ? undefined : sourceStringLiteral(ownership),
|
|
105
|
+
elementSize === undefined ? undefined : String(elementSize),
|
|
106
|
+
]);
|
|
107
|
+
export const tFixedArray = (element, length, ownership, elementSize) => call("fixedArray", [
|
|
108
|
+
element,
|
|
109
|
+
String(length),
|
|
110
|
+
ownership === undefined ? undefined : sourceStringLiteral(ownership),
|
|
111
|
+
elementSize === undefined ? undefined : String(elementSize),
|
|
112
|
+
]);
|
|
113
|
+
export const tCallback = (argTypes, returnType, options) => call("callback", [`[${argTypes.join(", ")}]`, returnType, options]);
|
|
114
|
+
export const tBind = (args) => call("bind", [args.libExpr, args.symbolExpr, args.argList, args.returnType]);
|
|
115
|
+
export const tFn = (lib, cIdentifier, spec) => {
|
|
116
|
+
const throwsEntry = spec.throws ? ", throws: true" : "";
|
|
117
|
+
return call("fn", [
|
|
118
|
+
sourceStringLiteral(lib),
|
|
119
|
+
sourceStringLiteral(cIdentifier),
|
|
120
|
+
`{ args: ${spec.args}, returns: ${spec.returns}${throwsEntry} }`,
|
|
121
|
+
]);
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/analysis/descriptor.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport { joinArgs } from \"../writer/emit.js\";\n\nexport type Ownership = \"borrowed\" | \"full\";\n\ntype DescriptorName =\n | \"bind\"\n | \"int8\"\n | \"uint8\"\n | \"int16\"\n | \"uint16\"\n | \"int32\"\n | \"uint32\"\n | \"int64\"\n | \"uint64\"\n | \"bigint64\"\n | \"biguint64\"\n | \"gtype\"\n | \"float32\"\n | \"float64\"\n | \"boolean\"\n | \"void\"\n | \"unichar\"\n | \"buffer\"\n | \"string\"\n | \"object\"\n | \"boxed\"\n | \"struct\"\n | \"fundamental\"\n | \"ref\"\n | \"hashTable\"\n | \"enum\"\n | \"flags\"\n | \"array\"\n | \"list\"\n | \"slist\"\n | \"ptrArray\"\n | \"gArray\"\n | \"byteArray\"\n | \"sizedArray\"\n | \"fixedArray\"\n | \"callback\"\n | \"fn\";\n\ntype DescriptorNames = { [K in DescriptorName]: `t.${K}` };\n\nconst T: DescriptorNames = {\n bind: \"t.bind\",\n int8: \"t.int8\",\n uint8: \"t.uint8\",\n int16: \"t.int16\",\n uint16: \"t.uint16\",\n int32: \"t.int32\",\n uint32: \"t.uint32\",\n int64: \"t.int64\",\n uint64: \"t.uint64\",\n bigint64: \"t.bigint64\",\n biguint64: \"t.biguint64\",\n gtype: \"t.gtype\",\n float32: \"t.float32\",\n float64: \"t.float64\",\n boolean: \"t.boolean\",\n void: \"t.void\",\n unichar: \"t.unichar\",\n buffer: \"t.buffer\",\n string: \"t.string\",\n object: \"t.object\",\n boxed: \"t.boxed\",\n struct: \"t.struct\",\n fundamental: \"t.fundamental\",\n ref: \"t.ref\",\n hashTable: \"t.hashTable\",\n enum: \"t.enum\",\n flags: \"t.flags\",\n array: \"t.array\",\n list: \"t.list\",\n slist: \"t.slist\",\n ptrArray: \"t.ptrArray\",\n gArray: \"t.gArray\",\n byteArray: \"t.byteArray\",\n sizedArray: \"t.sizedArray\",\n fixedArray: \"t.fixedArray\",\n callback: \"t.callback\",\n fn: \"t.fn\",\n};\n\nconst call = (name: DescriptorName, args: Array<string | undefined>): string => `${T[name]}(${joinArgs(args)})`;\n\nconst optionsObject = (parts: Array<string | undefined>): string | undefined => {\n const present = parts.filter((part): part is string => part !== undefined);\n return present.length === 0 ? undefined : `{ ${present.join(\", \")} }`;\n};\n\nexport const tVoid: string = T.void;\n\nexport const tBoolean: string = T.boolean;\n\nexport const tUint8: string = T.uint8;\n\nexport const tUint32: string = T.uint32;\n\nexport const tInt32: string = T.int32;\n\nexport const tUint64: string = T.uint64;\n\nexport const tGtype: string = T.gtype;\n\nexport const tBuffer: string = T.buffer;\n\nexport type ScalarDescriptorName =\n | \"boolean\"\n | \"int8\"\n | \"uint8\"\n | \"int16\"\n | \"uint16\"\n | \"int32\"\n | \"uint32\"\n | \"int64\"\n | \"uint64\"\n | \"bigint64\"\n | \"biguint64\"\n | \"float32\"\n | \"float64\"\n | \"unichar\";\n\nexport const tScalar = (name: ScalarDescriptorName): string => T[name];\n\nexport const tString = (ownership: Ownership, length?: string): string =>\n call(\"string\", [sourceStringLiteral(ownership), length]);\n\nexport const tObject = (ownership: Ownership): string => call(\"object\", [sourceStringLiteral(ownership)]);\n\nexport type BoxedOptions = {\n ownership: Ownership;\n sharedLibrary: string | undefined;\n getTypeFnName: string;\n callerAllocated: boolean;\n size: number | undefined;\n};\n\nexport const tBoxed = (glibName: string, options: BoxedOptions): string =>\n call(\"boxed\", [\n sourceStringLiteral(glibName),\n optionsObject([\n `ownership: ${sourceStringLiteral(options.ownership)}`,\n options.sharedLibrary === undefined\n ? undefined\n : `sharedLibrary: ${sourceStringLiteral(options.sharedLibrary)}`,\n `getTypeFnName: ${sourceStringLiteral(options.getTypeFnName)}`,\n options.callerAllocated ? \"callerAllocated: true\" : undefined,\n options.size === undefined ? undefined : `size: ${options.size}`,\n ]),\n ]);\n\nexport type StructOptions = {\n size: number | string | undefined;\n wrapperClass: string | undefined;\n callerAllocated: boolean;\n};\n\nexport const tStruct = (ownership: Ownership, options: StructOptions): string =>\n call(\"struct\", [\n sourceStringLiteral(ownership),\n optionsObject([\n options.size === undefined ? undefined : `size: ${options.size}`,\n options.wrapperClass === undefined ? undefined : `wrapperClass: ${options.wrapperClass}`,\n options.callerAllocated ? \"callerAllocated: true\" : undefined,\n ]),\n ]);\n\nexport const tInlineStruct = (): string =>\n tStruct(\"borrowed\", { size: undefined, wrapperClass: undefined, callerAllocated: false });\n\nexport type FundamentalOptions = {\n ownership: Ownership;\n typeName: string | undefined;\n wrapperClass: string | undefined;\n};\n\nexport const tFundamental = (lib: string, refFunc: string, unrefFunc: string, options: FundamentalOptions): string =>\n call(\"fundamental\", [\n sourceStringLiteral(lib),\n sourceStringLiteral(refFunc),\n sourceStringLiteral(unrefFunc),\n optionsObject([\n `ownership: ${sourceStringLiteral(options.ownership)}`,\n options.typeName === undefined ? undefined : `typeName: ${sourceStringLiteral(options.typeName)}`,\n options.wrapperClass === undefined ? undefined : `wrapperClass: ${options.wrapperClass}`,\n ]),\n ]);\n\nexport const tRef = (inner: string, inout = false): string => call(\"ref\", [inner, inout ? \"true\" : undefined]);\n\nexport const tHashTable = (key: string, value: string, ownership: Ownership): string =>\n call(\"hashTable\", [key, value, sourceStringLiteral(ownership)]);\n\nexport const tEnum = (lib: string, getType: string, signed: boolean): string =>\n call(\"enum\", [sourceStringLiteral(lib), sourceStringLiteral(getType), String(signed)]);\n\nexport const tFlags = (lib: string, getType: string, signed: boolean): string =>\n call(\"flags\", [sourceStringLiteral(lib), sourceStringLiteral(getType), String(signed)]);\n\nexport const tByteArray = (ownership: Ownership): string => call(\"byteArray\", [sourceStringLiteral(ownership)]);\n\nexport type ListDescriptorName = \"list\" | \"slist\" | \"ptrArray\" | \"gArray\";\n\nexport const tList = (name: ListDescriptorName, element: string, ownership: Ownership): string =>\n call(name, [element, sourceStringLiteral(ownership)]);\n\nexport const tArray = (element: string, ownership?: Ownership, elementSize?: number): string =>\n call(\"array\", [\n element,\n ownership === undefined ? undefined : sourceStringLiteral(\"array\"),\n ownership === undefined ? undefined : sourceStringLiteral(ownership),\n elementSize === undefined ? undefined : `{ elementSize: ${elementSize} }`,\n ]);\n\nexport const tSizedArray = (\n element: string,\n lengthIndex: number,\n ownership?: Ownership,\n elementSize?: number,\n): string =>\n call(\"sizedArray\", [\n element,\n String(lengthIndex),\n ownership === undefined ? undefined : sourceStringLiteral(ownership),\n elementSize === undefined ? undefined : String(elementSize),\n ]);\n\nexport const tFixedArray = (element: string, length: number, ownership?: Ownership, elementSize?: number): string =>\n call(\"fixedArray\", [\n element,\n String(length),\n ownership === undefined ? undefined : sourceStringLiteral(ownership),\n elementSize === undefined ? undefined : String(elementSize),\n ]);\n\nexport const tCallback = (argTypes: string[], returnType: string, options?: string): string =>\n call(\"callback\", [`[${argTypes.join(\", \")}]`, returnType, options]);\n\ntype BindArgs = {\n libExpr: string;\n symbolExpr: string;\n argList: string;\n returnType: string;\n};\n\nexport const tBind = (args: BindArgs): string =>\n call(\"bind\", [args.libExpr, args.symbolExpr, args.argList, args.returnType]);\n\nexport const tFn = (\n lib: string,\n cIdentifier: string,\n spec: { args: string; returns: string; throws: boolean },\n): string => {\n const throwsEntry = spec.throws ? \", throws: true\" : \"\";\n return call(\"fn\", [\n sourceStringLiteral(lib),\n sourceStringLiteral(cIdentifier),\n `{ args: ${spec.args}, returns: ${spec.returns}${throwsEntry} }`,\n ]);\n};\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ResolvedAncestor } from "../gir/ancestry.js";
|
|
2
|
+
import type { GirClass } from "../gir/class.js";
|
|
3
|
+
import type { GirFunction } from "../gir/function.js";
|
|
4
|
+
import type { Library } from "../gir/library.js";
|
|
5
|
+
import type { GirProperty } from "../gir/property.js";
|
|
6
|
+
import type { ModuleContext } from "../writer/context.js";
|
|
7
|
+
type AncestryContext = {
|
|
8
|
+
library: Library;
|
|
9
|
+
namespace: {
|
|
10
|
+
name: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export declare const resolveImplementedInterface: (context: AncestryContext, name: string, defaultNamespace?: string) => ResolvedAncestor | undefined;
|
|
14
|
+
export declare const resolvePrerequisiteReference: (context: ModuleContext, name: string) => string | undefined;
|
|
15
|
+
export declare const forEachAncestor: (context: AncestryContext, klass: GirClass, visit: (ancestor: ResolvedAncestor, interfaces: ResolvedAncestor[]) => void, stop?: (ancestor: GirClass) => boolean) => void;
|
|
16
|
+
export type OwnedProperty = {
|
|
17
|
+
owner: GirClass;
|
|
18
|
+
property: GirProperty;
|
|
19
|
+
};
|
|
20
|
+
export declare const collectInterfaceProperties: (context: ModuleContext, klass: GirClass) => OwnedProperty[];
|
|
21
|
+
export declare const collectInterfaceMergeOmissions: (context: ModuleContext, klass: GirClass, iface: {
|
|
22
|
+
klass: GirClass;
|
|
23
|
+
namespaceName: string;
|
|
24
|
+
}) => string[];
|
|
25
|
+
export declare const collectInheritedPropertyTypes: (context: ModuleContext, klass: GirClass) => Map<string, string>;
|
|
26
|
+
type InheritedMethod = {
|
|
27
|
+
method: GirFunction;
|
|
28
|
+
namespaceName: string;
|
|
29
|
+
};
|
|
30
|
+
export type InheritedMethods = {
|
|
31
|
+
returnTypes: Map<string, string>;
|
|
32
|
+
definitions: Map<string, InheritedMethod>;
|
|
33
|
+
};
|
|
34
|
+
export declare const collectInheritedMethods: (context: ModuleContext, klass: GirClass) => InheritedMethods;
|
|
35
|
+
export declare const conflictRename: (context: ModuleContext, callable: GirFunction, inherited: InheritedMethods, className: string) => string | undefined;
|
|
36
|
+
export declare const reservedSignalMemberRename: (className: string, callable: GirFunction) => string | undefined;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=inheritance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inheritance.d.ts","sourceRoot":"","sources":["../../src/analysis/inheritance.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,KAAK,eAAe,GAAG;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,2BAA2B,YAC3B,eAAe,QAClB,MAAM,qBACM,MAAM,KACzB,gBAAgB,GAAG,SAAsE,CAAC;AAe7F,eAAO,MAAM,4BAA4B,YAAa,aAAa,QAAQ,MAAM,KAAG,MAAM,GAAG,SAK5F,CAAC;AAEF,eAAO,MAAM,eAAe,YACf,eAAe,SACjB,QAAQ,SACR,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,IAAI,SACrE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,KACtC,IAUF,CAAC;AAeF,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,0BAA0B,YAAa,aAAa,SAAS,QAAQ,KAAG,aAAa,EAcjG,CAAC;AAoBF,eAAO,MAAM,8BAA8B,YAC9B,aAAa,SACf,QAAQ,SACR;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,KAClD,MAAM,EAaR,CAAC;AAEF,eAAO,MAAM,6BAA6B,YAAa,aAAa,SAAS,QAAQ,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAUzG,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,aAAa,SAAS,QAAQ,KAAG,gBAajF,CAAC;AA4BF,eAAO,MAAM,cAAc,YACd,aAAa,YACZ,WAAW,aACV,gBAAgB,aAChB,MAAM,KAClB,MAAM,GAAG,SAcX,CAAC;AAKF,eAAO,MAAM,0BAA0B,cAAe,MAAM,YAAY,WAAW,KAAG,MAAM,GAAG,SAG5E,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { lowerFirst, toCamelCase, toCamelIdentifier, toPascalCase } from "@gtkx/utils";
|
|
2
|
+
import { ancestorChain, resolveInterface } from "../gir/ancestry.js";
|
|
3
|
+
import { methodExportName } from "../store/gi/method.js";
|
|
4
|
+
import { resolveAccessorType } from "../store/gi/property-accessor.js";
|
|
5
|
+
import { inputParameters } from "./param-structure.js";
|
|
6
|
+
import { renderTsType } from "./ts-type.js";
|
|
7
|
+
export const resolveImplementedInterface = (context, name, defaultNamespace = context.namespace.name) => resolveInterface(context.library, defaultNamespace, name);
|
|
8
|
+
const resolveDirectInterfaces = (context, klass, defaultNamespace) => {
|
|
9
|
+
const interfaces = [];
|
|
10
|
+
for (const implementName of klass.implements) {
|
|
11
|
+
const iface = resolveImplementedInterface(context, implementName, defaultNamespace);
|
|
12
|
+
if (iface !== undefined)
|
|
13
|
+
interfaces.push(iface);
|
|
14
|
+
}
|
|
15
|
+
return interfaces;
|
|
16
|
+
};
|
|
17
|
+
export const resolvePrerequisiteReference = (context, name) => {
|
|
18
|
+
const resolved = context.library.resolveType(context.namespace.name, name);
|
|
19
|
+
if (resolved === undefined)
|
|
20
|
+
return undefined;
|
|
21
|
+
if (resolved.kind !== "interface" && resolved.kind !== "class")
|
|
22
|
+
return undefined;
|
|
23
|
+
return context.qualify(resolved.namespace.name, toPascalCase(resolved.value.name));
|
|
24
|
+
};
|
|
25
|
+
export const forEachAncestor = (context, klass, visit, stop = () => false) => {
|
|
26
|
+
let first = true;
|
|
27
|
+
for (const ancestor of ancestorChain(context.library, klass, context.namespace.name)) {
|
|
28
|
+
if (first) {
|
|
29
|
+
first = false;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (stop(ancestor.klass))
|
|
33
|
+
break;
|
|
34
|
+
visit(ancestor, resolveDirectInterfaces(context, ancestor.klass, ancestor.namespaceName));
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const forEachInheritedProperty = (context, klass, visit) => {
|
|
38
|
+
forEachAncestor(context, klass, (ancestor, interfaces) => {
|
|
39
|
+
for (const property of ancestor.klass.properties)
|
|
40
|
+
visit(ancestor.klass, property);
|
|
41
|
+
for (const iface of interfaces) {
|
|
42
|
+
for (const property of iface.klass.properties)
|
|
43
|
+
visit(iface.klass, property);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
export const collectInterfaceProperties = (context, klass) => {
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (const property of klass.properties)
|
|
50
|
+
seen.add(toCamelIdentifier(property.name));
|
|
51
|
+
forEachInheritedProperty(context, klass, (_owner, property) => seen.add(toCamelIdentifier(property.name)));
|
|
52
|
+
const result = [];
|
|
53
|
+
for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {
|
|
54
|
+
for (const property of iface.klass.properties) {
|
|
55
|
+
const name = toCamelIdentifier(property.name);
|
|
56
|
+
if (seen.has(name))
|
|
57
|
+
continue;
|
|
58
|
+
seen.add(name);
|
|
59
|
+
result.push({ owner: iface.klass, property });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
};
|
|
64
|
+
const ancestorClassMethodSignatures = (context, klass) => {
|
|
65
|
+
const signatures = new Map();
|
|
66
|
+
forEachAncestor(context, klass, (ancestor) => {
|
|
67
|
+
for (const method of ancestor.klass.methods) {
|
|
68
|
+
if (!method.introspectable)
|
|
69
|
+
continue;
|
|
70
|
+
const name = toCamelCase(method.name);
|
|
71
|
+
if (signatures.has(name))
|
|
72
|
+
continue;
|
|
73
|
+
signatures.set(name, {
|
|
74
|
+
returnType: renderTsType(context, method.returnValue.type, method.returnValue.nullable),
|
|
75
|
+
arity: inputParameters(context.library, method).length,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return signatures;
|
|
80
|
+
};
|
|
81
|
+
export const collectInterfaceMergeOmissions = (context, klass, iface) => {
|
|
82
|
+
const ancestors = ancestorClassMethodSignatures(context, klass);
|
|
83
|
+
const omissions = [];
|
|
84
|
+
for (const method of iface.klass.methods) {
|
|
85
|
+
if (!method.introspectable)
|
|
86
|
+
continue;
|
|
87
|
+
const name = toCamelCase(method.name);
|
|
88
|
+
const ancestor = ancestors.get(name);
|
|
89
|
+
if (ancestor === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
const returnType = renderTsType(context, method.returnValue.type, method.returnValue.nullable);
|
|
92
|
+
const arity = inputParameters(context.library, method).length;
|
|
93
|
+
if (ancestor.returnType !== returnType || ancestor.arity !== arity)
|
|
94
|
+
omissions.push(name);
|
|
95
|
+
}
|
|
96
|
+
return omissions;
|
|
97
|
+
};
|
|
98
|
+
export const collectInheritedPropertyTypes = (context, klass) => {
|
|
99
|
+
const types = new Map();
|
|
100
|
+
const record = (owner, property) => {
|
|
101
|
+
const jsName = toCamelIdentifier(property.name);
|
|
102
|
+
if (types.has(jsName))
|
|
103
|
+
return;
|
|
104
|
+
const tsType = resolveAccessorType(context, property, owner.methods);
|
|
105
|
+
if (tsType !== undefined)
|
|
106
|
+
types.set(jsName, tsType);
|
|
107
|
+
};
|
|
108
|
+
forEachInheritedProperty(context, klass, record);
|
|
109
|
+
return types;
|
|
110
|
+
};
|
|
111
|
+
export const collectInheritedMethods = (context, klass) => {
|
|
112
|
+
const accumulator = {
|
|
113
|
+
returnTypes: new Map(),
|
|
114
|
+
definitions: new Map(),
|
|
115
|
+
};
|
|
116
|
+
for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {
|
|
117
|
+
absorbInheritedMethods(context, iface, accumulator);
|
|
118
|
+
}
|
|
119
|
+
forEachAncestor(context, klass, (ancestor, interfaces) => {
|
|
120
|
+
absorbInheritedMethods(context, ancestor, accumulator);
|
|
121
|
+
for (const iface of interfaces)
|
|
122
|
+
absorbInheritedMethods(context, iface, accumulator);
|
|
123
|
+
});
|
|
124
|
+
return accumulator;
|
|
125
|
+
};
|
|
126
|
+
const absorbInheritedMethods = (context, resolved, accumulator) => {
|
|
127
|
+
const { returnTypes, definitions } = accumulator;
|
|
128
|
+
for (const method of resolved.klass.methods) {
|
|
129
|
+
if (!method.introspectable)
|
|
130
|
+
continue;
|
|
131
|
+
const name = toCamelCase(method.name);
|
|
132
|
+
if (returnTypes.has(name))
|
|
133
|
+
continue;
|
|
134
|
+
definitions.set(name, { method, namespaceName: resolved.namespaceName });
|
|
135
|
+
returnTypes.set(name, renderTsType(context, method.returnValue.type, method.returnValue.nullable));
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const RESERVED_SIGNAL_MEMBERS = new Set([
|
|
139
|
+
"connect",
|
|
140
|
+
"disconnect",
|
|
141
|
+
"emit",
|
|
142
|
+
"on",
|
|
143
|
+
"once",
|
|
144
|
+
"off",
|
|
145
|
+
"addEventListener",
|
|
146
|
+
"removeEventListener",
|
|
147
|
+
]);
|
|
148
|
+
export const conflictRename = (context, callable, inherited, className) => {
|
|
149
|
+
if (!callable.introspectable)
|
|
150
|
+
return undefined;
|
|
151
|
+
const name = methodExportName(callable);
|
|
152
|
+
if (RESERVED_SIGNAL_MEMBERS.has(name))
|
|
153
|
+
return conflictingMethodName(className, callable.name);
|
|
154
|
+
const inheritedReturn = inherited.returnTypes.get(name);
|
|
155
|
+
const inheritedMethod = inherited.definitions.get(name);
|
|
156
|
+
if (inheritedReturn === undefined || inheritedMethod === undefined)
|
|
157
|
+
return undefined;
|
|
158
|
+
const ownReturn = renderTsType(context, callable.returnValue.type, callable.returnValue.nullable);
|
|
159
|
+
const conflicts = inheritedReturn !== ownReturn ||
|
|
160
|
+
hasParameterEnumConflict(context, callable, inheritedMethod) ||
|
|
161
|
+
inputParameters(context.library, callable).length !==
|
|
162
|
+
inputParameters(context.library, inheritedMethod.method).length;
|
|
163
|
+
return conflicts ? conflictingMethodName(className, callable.name) : undefined;
|
|
164
|
+
};
|
|
165
|
+
const conflictingMethodName = (className, methodName) => `${lowerFirst(className)}${toPascalCase(methodName)}`;
|
|
166
|
+
export const reservedSignalMemberRename = (className, callable) => RESERVED_SIGNAL_MEMBERS.has(methodExportName(callable))
|
|
167
|
+
? conflictingMethodName(className, callable.name)
|
|
168
|
+
: undefined;
|
|
169
|
+
const hasParameterEnumConflict = (context, own, inherited) => {
|
|
170
|
+
const ownParams = inputParameters(context.library, own);
|
|
171
|
+
const inheritedParams = inputParameters(context.library, inherited.method);
|
|
172
|
+
const count = Math.min(ownParams.length, inheritedParams.length);
|
|
173
|
+
for (let index = 0; index < count; index += 1) {
|
|
174
|
+
const ownParam = ownParams[index];
|
|
175
|
+
const inheritedParam = inheritedParams[index];
|
|
176
|
+
if (ownParam === undefined || inheritedParam === undefined)
|
|
177
|
+
continue;
|
|
178
|
+
const ownEnum = enumIdentity(context, ownParam.parameter.type);
|
|
179
|
+
const inheritedEnum = enumIdentity(context, inheritedParam.parameter.type);
|
|
180
|
+
if (ownEnum !== undefined && inheritedEnum !== undefined && ownEnum !== inheritedEnum)
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
};
|
|
185
|
+
const enumIdentity = (context, ref) => {
|
|
186
|
+
if (ref === undefined)
|
|
187
|
+
return undefined;
|
|
188
|
+
const resolved = context.library.typeOf(ref);
|
|
189
|
+
if (resolved?.kind !== "enum")
|
|
190
|
+
return undefined;
|
|
191
|
+
return `${resolved.namespace.name}.${resolved.value.name}`;
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=inheritance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inheritance.js","sourceRoot":"","sources":["../../src/analysis/inheritance.ts"],"names":[],"mappings":"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","sourcesContent":["import { lowerFirst, toCamelCase, toCamelIdentifier, toPascalCase } from \"@gtkx/utils\";\nimport { ancestorChain, type ResolvedAncestor, resolveInterface } from \"../gir/ancestry.js\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { GirProperty } from \"../gir/property.js\";\nimport type { TypeId } from \"../gir/type-id.js\";\nimport { methodExportName } from \"../store/gi/method.js\";\nimport { resolveAccessorType } from \"../store/gi/property-accessor.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { inputParameters } from \"./param-structure.js\";\nimport { renderTsType } from \"./ts-type.js\";\n\ntype AncestryContext = {\n library: Library;\n namespace: { name: string };\n};\n\nexport const resolveImplementedInterface = (\n context: AncestryContext,\n name: string,\n defaultNamespace: string = context.namespace.name,\n): ResolvedAncestor | undefined => resolveInterface(context.library, defaultNamespace, name);\n\nconst resolveDirectInterfaces = (\n context: AncestryContext,\n klass: GirClass,\n defaultNamespace: string,\n): ResolvedAncestor[] => {\n const interfaces: ResolvedAncestor[] = [];\n for (const implementName of klass.implements) {\n const iface = resolveImplementedInterface(context, implementName, defaultNamespace);\n if (iface !== undefined) interfaces.push(iface);\n }\n return interfaces;\n};\n\nexport const resolvePrerequisiteReference = (context: ModuleContext, name: string): string | undefined => {\n const resolved = context.library.resolveType(context.namespace.name, name);\n if (resolved === undefined) return undefined;\n if (resolved.kind !== \"interface\" && resolved.kind !== \"class\") return undefined;\n return context.qualify(resolved.namespace.name, toPascalCase(resolved.value.name));\n};\n\nexport const forEachAncestor = (\n context: AncestryContext,\n klass: GirClass,\n visit: (ancestor: ResolvedAncestor, interfaces: ResolvedAncestor[]) => void,\n stop: (ancestor: GirClass) => boolean = () => false,\n): void => {\n let first = true;\n for (const ancestor of ancestorChain(context.library, klass, context.namespace.name)) {\n if (first) {\n first = false;\n continue;\n }\n if (stop(ancestor.klass)) break;\n visit(ancestor, resolveDirectInterfaces(context, ancestor.klass, ancestor.namespaceName));\n }\n};\n\nconst forEachInheritedProperty = (\n context: ModuleContext,\n klass: GirClass,\n visit: (owner: GirClass, property: GirProperty) => void,\n): void => {\n forEachAncestor(context, klass, (ancestor, interfaces) => {\n for (const property of ancestor.klass.properties) visit(ancestor.klass, property);\n for (const iface of interfaces) {\n for (const property of iface.klass.properties) visit(iface.klass, property);\n }\n });\n};\n\nexport type OwnedProperty = { owner: GirClass; property: GirProperty };\n\nexport const collectInterfaceProperties = (context: ModuleContext, klass: GirClass): OwnedProperty[] => {\n const seen = new Set<string>();\n for (const property of klass.properties) seen.add(toCamelIdentifier(property.name));\n forEachInheritedProperty(context, klass, (_owner, property) => seen.add(toCamelIdentifier(property.name)));\n const result: OwnedProperty[] = [];\n for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {\n for (const property of iface.klass.properties) {\n const name = toCamelIdentifier(property.name);\n if (seen.has(name)) continue;\n seen.add(name);\n result.push({ owner: iface.klass, property });\n }\n }\n return result;\n};\n\ntype MethodSignature = { returnType: string; arity: number };\n\nconst ancestorClassMethodSignatures = (context: ModuleContext, klass: GirClass): Map<string, MethodSignature> => {\n const signatures = new Map<string, MethodSignature>();\n forEachAncestor(context, klass, (ancestor) => {\n for (const method of ancestor.klass.methods) {\n if (!method.introspectable) continue;\n const name = toCamelCase(method.name);\n if (signatures.has(name)) continue;\n signatures.set(name, {\n returnType: renderTsType(context, method.returnValue.type, method.returnValue.nullable),\n arity: inputParameters(context.library, method).length,\n });\n }\n });\n return signatures;\n};\n\nexport const collectInterfaceMergeOmissions = (\n context: ModuleContext,\n klass: GirClass,\n iface: { klass: GirClass; namespaceName: string },\n): string[] => {\n const ancestors = ancestorClassMethodSignatures(context, klass);\n const omissions: string[] = [];\n for (const method of iface.klass.methods) {\n if (!method.introspectable) continue;\n const name = toCamelCase(method.name);\n const ancestor = ancestors.get(name);\n if (ancestor === undefined) continue;\n const returnType = renderTsType(context, method.returnValue.type, method.returnValue.nullable);\n const arity = inputParameters(context.library, method).length;\n if (ancestor.returnType !== returnType || ancestor.arity !== arity) omissions.push(name);\n }\n return omissions;\n};\n\nexport const collectInheritedPropertyTypes = (context: ModuleContext, klass: GirClass): Map<string, string> => {\n const types = new Map<string, string>();\n const record = (owner: GirClass, property: GirProperty): void => {\n const jsName = toCamelIdentifier(property.name);\n if (types.has(jsName)) return;\n const tsType = resolveAccessorType(context, property, owner.methods);\n if (tsType !== undefined) types.set(jsName, tsType);\n };\n forEachInheritedProperty(context, klass, record);\n return types;\n};\n\ntype InheritedMethod = {\n method: GirFunction;\n namespaceName: string;\n};\n\nexport type InheritedMethods = {\n returnTypes: Map<string, string>;\n definitions: Map<string, InheritedMethod>;\n};\n\nexport const collectInheritedMethods = (context: ModuleContext, klass: GirClass): InheritedMethods => {\n const accumulator: InheritedMethods = {\n returnTypes: new Map<string, string>(),\n definitions: new Map<string, InheritedMethod>(),\n };\n for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {\n absorbInheritedMethods(context, iface, accumulator);\n }\n forEachAncestor(context, klass, (ancestor, interfaces) => {\n absorbInheritedMethods(context, ancestor, accumulator);\n for (const iface of interfaces) absorbInheritedMethods(context, iface, accumulator);\n });\n return accumulator;\n};\n\nconst absorbInheritedMethods = (\n context: ModuleContext,\n resolved: { klass: GirClass; namespaceName: string },\n accumulator: InheritedMethods,\n): void => {\n const { returnTypes, definitions } = accumulator;\n for (const method of resolved.klass.methods) {\n if (!method.introspectable) continue;\n const name = toCamelCase(method.name);\n if (returnTypes.has(name)) continue;\n definitions.set(name, { method, namespaceName: resolved.namespaceName });\n returnTypes.set(name, renderTsType(context, method.returnValue.type, method.returnValue.nullable));\n }\n};\n\nconst RESERVED_SIGNAL_MEMBERS = new Set([\n \"connect\",\n \"disconnect\",\n \"emit\",\n \"on\",\n \"once\",\n \"off\",\n \"addEventListener\",\n \"removeEventListener\",\n]);\n\nexport const conflictRename = (\n context: ModuleContext,\n callable: GirFunction,\n inherited: InheritedMethods,\n className: string,\n): string | undefined => {\n if (!callable.introspectable) return undefined;\n const name = methodExportName(callable);\n if (RESERVED_SIGNAL_MEMBERS.has(name)) return conflictingMethodName(className, callable.name);\n const inheritedReturn = inherited.returnTypes.get(name);\n const inheritedMethod = inherited.definitions.get(name);\n if (inheritedReturn === undefined || inheritedMethod === undefined) return undefined;\n const ownReturn = renderTsType(context, callable.returnValue.type, callable.returnValue.nullable);\n const conflicts =\n inheritedReturn !== ownReturn ||\n hasParameterEnumConflict(context, callable, inheritedMethod) ||\n inputParameters(context.library, callable).length !==\n inputParameters(context.library, inheritedMethod.method).length;\n return conflicts ? conflictingMethodName(className, callable.name) : undefined;\n};\n\nconst conflictingMethodName = (className: string, methodName: string): string =>\n `${lowerFirst(className)}${toPascalCase(methodName)}`;\n\nexport const reservedSignalMemberRename = (className: string, callable: GirFunction): string | undefined =>\n RESERVED_SIGNAL_MEMBERS.has(methodExportName(callable))\n ? conflictingMethodName(className, callable.name)\n : undefined;\n\nconst hasParameterEnumConflict = (context: ModuleContext, own: GirFunction, inherited: InheritedMethod): boolean => {\n const ownParams = inputParameters(context.library, own);\n const inheritedParams = inputParameters(context.library, inherited.method);\n const count = Math.min(ownParams.length, inheritedParams.length);\n for (let index = 0; index < count; index += 1) {\n const ownParam = ownParams[index];\n const inheritedParam = inheritedParams[index];\n if (ownParam === undefined || inheritedParam === undefined) continue;\n const ownEnum = enumIdentity(context, ownParam.parameter.type);\n const inheritedEnum = enumIdentity(context, inheritedParam.parameter.type);\n if (ownEnum !== undefined && inheritedEnum !== undefined && ownEnum !== inheritedEnum) return true;\n }\n return false;\n};\n\nconst enumIdentity = (context: ModuleContext, ref: TypeId | undefined): string | undefined => {\n if (ref === undefined) return undefined;\n const resolved = context.library.typeOf(ref);\n if (resolved?.kind !== \"enum\") return undefined;\n return `${resolved.namespace.name}.${resolved.value.name}`;\n};\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GirFunction } from "../gir/function.js";
|
|
2
|
+
import type { Library } from "../gir/library.js";
|
|
3
|
+
import { type GirParameter, type GirSignal } from "../gir/parameter.js";
|
|
4
|
+
import type { TypeId } from "../gir/type-id.js";
|
|
5
|
+
type InputParameter = {
|
|
6
|
+
parameter: GirParameter;
|
|
7
|
+
index: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const inputParameters: (library: Library, fn: GirFunction) => InputParameter[];
|
|
10
|
+
export declare const closureAndDestroyIndices: (fn: GirFunction) => Set<number>;
|
|
11
|
+
export declare const arrayLengthSources: (library: Library, fn: GirFunction) => Map<number, number>;
|
|
12
|
+
export declare const hasCallerAllocatedArrayLength: (library: Library, fn: GirFunction) => boolean;
|
|
13
|
+
export declare const foldedLengthIndices: (library: Library, fn: GirFunction) => Set<number>;
|
|
14
|
+
export declare const parameterIdentifier: (parameter: GirParameter, index: number) => string;
|
|
15
|
+
export declare const renderHandlerParameters: (parameters: GirParameter[], renderType: (ref: TypeId | undefined, nullable: boolean) => string, additionalExclude?: (parameter: GirParameter) => boolean) => string[];
|
|
16
|
+
export declare const foldOutParamShape: (primary: string | undefined, outTypes: string[]) => string;
|
|
17
|
+
type HandlerResultOptions = {
|
|
18
|
+
library: Library;
|
|
19
|
+
signal: GirSignal;
|
|
20
|
+
renderType: (ref: TypeId | undefined, nullable: boolean) => string;
|
|
21
|
+
includeCallerAllocated: boolean;
|
|
22
|
+
optOut: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare const renderHandlerResultType: (options: HandlerResultOptions) => string;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=param-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-structure.d.ts","sourceRoot":"","sources":["../../src/analysis/param-structure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAwC,MAAM,qBAAqB,CAAC;AAC9G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,KAAK,cAAc,GAAG;IAClB,SAAS,EAAE,YAAY,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,OAAO,MAAM,WAAW,KAAG,cAAc,EAajF,CAAC;AAEF,eAAO,MAAM,wBAAwB,OAAQ,WAAW,KAAG,GAAG,CAAC,MAAM,CAOpE,CAAC;AAOF,eAAO,MAAM,kBAAkB,YAAa,OAAO,MAAM,WAAW,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAUxF,CAAC;AAEF,eAAO,MAAM,6BAA6B,YAAa,OAAO,MAAM,WAAW,KAAG,OAMjF,CAAC;AAUF,eAAO,MAAM,mBAAmB,YAAa,OAAO,MAAM,WAAW,KAAG,GAAG,CAAC,MAAM,CAIjF,CAAC;AAEF,eAAO,MAAM,mBAAmB,cAAe,YAAY,SAAS,MAAM,KAAG,MAG5E,CAAC;AAEF,eAAO,MAAM,uBAAuB,eACpB,YAAY,EAAE,cACd,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,sBAC/C,CAAC,SAAS,EAAE,YAAY,KAAK,OAAO,KACxD,MAAM,EAMA,CAAC;AAEV,eAAO,MAAM,iBAAiB,YAAa,MAAM,GAAG,SAAS,YAAY,MAAM,EAAE,KAAG,MAKnF,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;IACnE,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,oBAAoB,KAAG,MAmBvE,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { toCamelIdentifier } from "@gtkx/utils";
|
|
2
|
+
import { isCallerAllocatedOut, isOutParameter } from "../gir/parameter.js";
|
|
3
|
+
import { isCellInout, omitsPrimaryReturn } from "./descriptor-render.js";
|
|
4
|
+
export const inputParameters = (library, fn) => {
|
|
5
|
+
const lengthIndices = arrayLengthIndices(library, fn);
|
|
6
|
+
const closureIndices = closureAndDestroyIndices(fn);
|
|
7
|
+
const result = [];
|
|
8
|
+
fn.parameters.forEach((parameter, index) => {
|
|
9
|
+
if (parameter.isVarargs)
|
|
10
|
+
return;
|
|
11
|
+
if (isOutParameter(parameter))
|
|
12
|
+
return;
|
|
13
|
+
if (isCallerAllocatedOut(parameter))
|
|
14
|
+
return;
|
|
15
|
+
if (lengthIndices.has(index))
|
|
16
|
+
return;
|
|
17
|
+
if (closureIndices.has(index))
|
|
18
|
+
return;
|
|
19
|
+
result.push({ parameter, index });
|
|
20
|
+
});
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
export const closureAndDestroyIndices = (fn) => {
|
|
24
|
+
const indices = new Set();
|
|
25
|
+
for (const parameter of fn.parameters) {
|
|
26
|
+
if (parameter.closureIndex !== undefined)
|
|
27
|
+
indices.add(parameter.closureIndex);
|
|
28
|
+
if (parameter.destroyIndex !== undefined)
|
|
29
|
+
indices.add(parameter.destroyIndex);
|
|
30
|
+
}
|
|
31
|
+
return indices;
|
|
32
|
+
};
|
|
33
|
+
const arrayLengthIndices = (library, fn) => {
|
|
34
|
+
const map = arrayLengthSources(library, fn);
|
|
35
|
+
return new Set(map.keys());
|
|
36
|
+
};
|
|
37
|
+
export const arrayLengthSources = (library, fn) => {
|
|
38
|
+
const map = new Map();
|
|
39
|
+
fn.parameters.forEach((parameter, index) => {
|
|
40
|
+
const type = parameter.type === undefined ? undefined : library.typeOf(parameter.type);
|
|
41
|
+
if (type?.kind !== "carray")
|
|
42
|
+
return;
|
|
43
|
+
const lengthIndex = type.lengthParameterIndex;
|
|
44
|
+
if (lengthIndex === undefined)
|
|
45
|
+
return;
|
|
46
|
+
map.set(lengthIndex, index);
|
|
47
|
+
});
|
|
48
|
+
return map;
|
|
49
|
+
};
|
|
50
|
+
export const hasCallerAllocatedArrayLength = (library, fn) => {
|
|
51
|
+
for (const arrayIndex of arrayLengthSources(library, fn).values()) {
|
|
52
|
+
const array = fn.parameters[arrayIndex];
|
|
53
|
+
if (array !== undefined && isCallerAllocatedOut(array))
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
};
|
|
58
|
+
const returnArrayLengthIndices = (library, fn) => {
|
|
59
|
+
const returnType = fn.returnValue.type === undefined ? undefined : library.typeOf(fn.returnValue.type);
|
|
60
|
+
if (returnType?.kind !== "carray")
|
|
61
|
+
return new Set();
|
|
62
|
+
const lengthIndex = returnType.lengthParameterIndex;
|
|
63
|
+
if (lengthIndex === undefined)
|
|
64
|
+
return new Set();
|
|
65
|
+
return new Set([lengthIndex]);
|
|
66
|
+
};
|
|
67
|
+
export const foldedLengthIndices = (library, fn) => {
|
|
68
|
+
const indices = new Set(arrayLengthSources(library, fn).keys());
|
|
69
|
+
for (const index of returnArrayLengthIndices(library, fn))
|
|
70
|
+
indices.add(index);
|
|
71
|
+
return indices;
|
|
72
|
+
};
|
|
73
|
+
export const parameterIdentifier = (parameter, index) => {
|
|
74
|
+
if (parameter.name.length === 0)
|
|
75
|
+
return `arg${index}`;
|
|
76
|
+
return toCamelIdentifier(parameter.name);
|
|
77
|
+
};
|
|
78
|
+
export const renderHandlerParameters = (parameters, renderType, additionalExclude = () => false) => parameters
|
|
79
|
+
.filter((parameter) => !parameter.isVarargs && !isOutParameter(parameter) && !additionalExclude(parameter))
|
|
80
|
+
.map((parameter, index) => `${parameterIdentifier(parameter, index)}: ${renderType(parameter.type, parameter.nullable)}`);
|
|
81
|
+
export const foldOutParamShape = (primary, outTypes) => {
|
|
82
|
+
if (primary !== undefined)
|
|
83
|
+
return `[${primary}, ${outTypes.join(", ")}]`;
|
|
84
|
+
const [single, ...rest] = outTypes;
|
|
85
|
+
if (rest.length === 0 && single !== undefined)
|
|
86
|
+
return single;
|
|
87
|
+
return `[${outTypes.join(", ")}]`;
|
|
88
|
+
};
|
|
89
|
+
export const renderHandlerResultType = (options) => {
|
|
90
|
+
const { library, signal, renderType, includeCallerAllocated, optOut } = options;
|
|
91
|
+
const primary = omitsPrimaryReturn(library, signal.returnValue)
|
|
92
|
+
? undefined
|
|
93
|
+
: renderType(signal.returnValue.type, signal.returnValue.nullable);
|
|
94
|
+
const outTypes = signal.parameters
|
|
95
|
+
.filter((parameter) => !parameter.isVarargs &&
|
|
96
|
+
(isOutParameter(parameter) ||
|
|
97
|
+
isCellInout(library, parameter) ||
|
|
98
|
+
(includeCallerAllocated && isCallerAllocatedOut(parameter))))
|
|
99
|
+
.map((parameter) => renderType(parameter.type, false));
|
|
100
|
+
if (outTypes.length === 0) {
|
|
101
|
+
if (primary === undefined)
|
|
102
|
+
return "void";
|
|
103
|
+
return optOut ? `${primary} | undefined` : primary;
|
|
104
|
+
}
|
|
105
|
+
return foldOutParamShape(primary, outTypes);
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=param-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-structure.js","sourceRoot":"","sources":["../../src/analysis/param-structure.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport { type GirParameter, type GirSignal, isCallerAllocatedOut, isOutParameter } from \"../gir/parameter.js\";\nimport type { TypeId } from \"../gir/type-id.js\";\nimport { isCellInout, omitsPrimaryReturn } from \"./descriptor-render.js\";\n\ntype InputParameter = {\n parameter: GirParameter;\n index: number;\n};\n\nexport const inputParameters = (library: Library, fn: GirFunction): InputParameter[] => {\n const lengthIndices = arrayLengthIndices(library, fn);\n const closureIndices = closureAndDestroyIndices(fn);\n const result: InputParameter[] = [];\n fn.parameters.forEach((parameter, index) => {\n if (parameter.isVarargs) return;\n if (isOutParameter(parameter)) return;\n if (isCallerAllocatedOut(parameter)) return;\n if (lengthIndices.has(index)) return;\n if (closureIndices.has(index)) return;\n result.push({ parameter, index });\n });\n return result;\n};\n\nexport const closureAndDestroyIndices = (fn: GirFunction): Set<number> => {\n const indices = new Set<number>();\n for (const parameter of fn.parameters) {\n if (parameter.closureIndex !== undefined) indices.add(parameter.closureIndex);\n if (parameter.destroyIndex !== undefined) indices.add(parameter.destroyIndex);\n }\n return indices;\n};\n\nconst arrayLengthIndices = (library: Library, fn: GirFunction): Set<number> => {\n const map = arrayLengthSources(library, fn);\n return new Set(map.keys());\n};\n\nexport const arrayLengthSources = (library: Library, fn: GirFunction): Map<number, number> => {\n const map = new Map<number, number>();\n fn.parameters.forEach((parameter, index) => {\n const type = parameter.type === undefined ? undefined : library.typeOf(parameter.type);\n if (type?.kind !== \"carray\") return;\n const lengthIndex = type.lengthParameterIndex;\n if (lengthIndex === undefined) return;\n map.set(lengthIndex, index);\n });\n return map;\n};\n\nexport const hasCallerAllocatedArrayLength = (library: Library, fn: GirFunction): boolean => {\n for (const arrayIndex of arrayLengthSources(library, fn).values()) {\n const array = fn.parameters[arrayIndex];\n if (array !== undefined && isCallerAllocatedOut(array)) return true;\n }\n return false;\n};\n\nconst returnArrayLengthIndices = (library: Library, fn: GirFunction): Set<number> => {\n const returnType = fn.returnValue.type === undefined ? undefined : library.typeOf(fn.returnValue.type);\n if (returnType?.kind !== \"carray\") return new Set();\n const lengthIndex = returnType.lengthParameterIndex;\n if (lengthIndex === undefined) return new Set();\n return new Set([lengthIndex]);\n};\n\nexport const foldedLengthIndices = (library: Library, fn: GirFunction): Set<number> => {\n const indices = new Set<number>(arrayLengthSources(library, fn).keys());\n for (const index of returnArrayLengthIndices(library, fn)) indices.add(index);\n return indices;\n};\n\nexport const parameterIdentifier = (parameter: GirParameter, index: number): string => {\n if (parameter.name.length === 0) return `arg${index}`;\n return toCamelIdentifier(parameter.name);\n};\n\nexport const renderHandlerParameters = (\n parameters: GirParameter[],\n renderType: (ref: TypeId | undefined, nullable: boolean) => string,\n additionalExclude: (parameter: GirParameter) => boolean = () => false,\n): string[] =>\n parameters\n .filter((parameter) => !parameter.isVarargs && !isOutParameter(parameter) && !additionalExclude(parameter))\n .map(\n (parameter, index) =>\n `${parameterIdentifier(parameter, index)}: ${renderType(parameter.type, parameter.nullable)}`,\n );\n\nexport const foldOutParamShape = (primary: string | undefined, outTypes: string[]): string => {\n if (primary !== undefined) return `[${primary}, ${outTypes.join(\", \")}]`;\n const [single, ...rest] = outTypes;\n if (rest.length === 0 && single !== undefined) return single;\n return `[${outTypes.join(\", \")}]`;\n};\n\ntype HandlerResultOptions = {\n library: Library;\n signal: GirSignal;\n renderType: (ref: TypeId | undefined, nullable: boolean) => string;\n includeCallerAllocated: boolean;\n optOut: boolean;\n};\n\nexport const renderHandlerResultType = (options: HandlerResultOptions): string => {\n const { library, signal, renderType, includeCallerAllocated, optOut } = options;\n const primary = omitsPrimaryReturn(library, signal.returnValue)\n ? undefined\n : renderType(signal.returnValue.type, signal.returnValue.nullable);\n const outTypes = signal.parameters\n .filter(\n (parameter) =>\n !parameter.isVarargs &&\n (isOutParameter(parameter) ||\n isCellInout(library, parameter) ||\n (includeCallerAllocated && isCallerAllocatedOut(parameter))),\n )\n .map((parameter) => renderType(parameter.type, false));\n if (outTypes.length === 0) {\n if (primary === undefined) return \"void\";\n return optOut ? `${primary} | undefined` : primary;\n }\n return foldOutParamShape(primary, outTypes);\n};\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Library } from "../gir/library.js";
|
|
2
|
+
import type { GirType } from "../gir/type.js";
|
|
3
|
+
import type { TypeId } from "../gir/type-id.js";
|
|
4
|
+
import type { ModuleContext } from "../writer/context.js";
|
|
5
|
+
type ReferenceName = {
|
|
6
|
+
namespaceName: string;
|
|
7
|
+
typeName: string;
|
|
8
|
+
};
|
|
9
|
+
export type TsTypeTarget = {
|
|
10
|
+
containerStyle: "map" | "record";
|
|
11
|
+
callbackType: string;
|
|
12
|
+
byteArrayAsNumber: boolean;
|
|
13
|
+
renderNamed: (resolved: GirType | undefined, name: ReferenceName) => string;
|
|
14
|
+
renderGtype: () => string;
|
|
15
|
+
};
|
|
16
|
+
export declare const renderBaseTypeFor: (library: Library, target: TsTypeTarget, ref: TypeId | undefined) => string;
|
|
17
|
+
export declare const renderTsType: (context: ModuleContext, ref: TypeId | undefined, isNullable?: boolean) => string;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ts-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-type.d.ts","sourceRoot":"","sources":["../../src/analysis/ts-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,KAAK,aAAa,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;IAC5E,WAAW,EAAE,MAAM,MAAM,CAAC;CAC7B,CAAC;AAkBF,eAAO,MAAM,iBAAiB,YAAa,OAAO,UAAU,YAAY,OAAO,MAAM,GAAG,SAAS,KAAG,MA4BnG,CAAC;AAmBF,eAAO,MAAM,YAAY,YAAa,aAAa,OAAO,MAAM,GAAG,SAAS,2BAAuB,MAGlG,CAAC"}
|