@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
package/README.md
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/gtkx-org/gtkx/main/logo.svg" alt="GTKX" width="100" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">GTKX</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
The React framework for Linux.<br />
|
|
9
|
+
Build GTK4 and Adwaita apps in TypeScript, with React components and hooks driving GNOME's own widgets. What you ship is a GNOME app.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/v/create-gtkx?color=cb3837&logo=npm&label=create-gtkx" alt="npm version" /></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/dm/create-gtkx?color=cb3837&logo=npm&label=downloads" alt="npm downloads" /></a>
|
|
15
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A524-339933?logo=node.js&logoColor=white" alt="Node >= 24" />
|
|
16
|
+
<a href="https://github.com/gtkx-org/gtkx/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MPL--2.0-blue.svg" alt="License: MPL-2.0" /></a>
|
|
17
|
+
<a href="https://github.com/gtkx-org/gtkx/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/gtkx-org/gtkx/ci.yml?branch=main&logo=github&label=CI" alt="CI status" /></a>
|
|
18
|
+
<img src="https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript&logoColor=white" alt="TypeScript" />
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<a href="https://gtkx.dev">Homepage</a> ·
|
|
23
|
+
<a href="https://gtkx.dev/guide/why-gtkx">Documentation</a> ·
|
|
24
|
+
<a href="https://github.com/gtkx-org/gtkx/tree/main/examples">Examples</a> ·
|
|
25
|
+
<a href="https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md">Contributing</a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
GTKX generates fully typed bindings for the entire GTK4 and Adwaita surface directly from GObject-Introspection. On top of those bindings you get the React programming model: components and hooks driving GObject instances, with Fast Refresh while you develop.
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<img src="https://raw.githubusercontent.com/gtkx-org/gtkx/main/examples/tutorial/assets/screenshot.png" alt="The Tasks app: an Adwaita window with a sidebar of smart views and colored lists on the left, and a boxed task list on the right." />
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<em>The Tasks app you build in the <a href="https://gtkx.dev/tutorial/">tutorial</a>.</em>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
## Demo
|
|
41
|
+
|
|
42
|
+
The intrinsic elements in this snippet render GTK4 widgets, and ordinary React hooks and events drive them:
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import * as Gtk from "@gtkx/gi/gtk";
|
|
46
|
+
import { GtkApplication, GtkApplicationWindow, GtkBox, GtkButton, GtkLabel } from "@gtkx/jsx/gtk";
|
|
47
|
+
import { createRoot, quit } from "@gtkx/react";
|
|
48
|
+
import { useState } from "react";
|
|
49
|
+
|
|
50
|
+
const Counter = () => {
|
|
51
|
+
const [count, setCount] = useState(0);
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<GtkApplicationWindow
|
|
55
|
+
title="Hello GTKX"
|
|
56
|
+
defaultWidth={400}
|
|
57
|
+
defaultHeight={300}
|
|
58
|
+
onCloseRequest={quit}
|
|
59
|
+
>
|
|
60
|
+
<GtkBox
|
|
61
|
+
orientation={Gtk.Orientation.VERTICAL}
|
|
62
|
+
spacing={20}
|
|
63
|
+
marginTop={40}
|
|
64
|
+
marginBottom={40}
|
|
65
|
+
marginStart={40}
|
|
66
|
+
marginEnd={40}
|
|
67
|
+
valign={Gtk.Align.CENTER}
|
|
68
|
+
halign={Gtk.Align.CENTER}
|
|
69
|
+
>
|
|
70
|
+
<GtkLabel cssClasses={["title-1"]}>Welcome to GTKX!</GtkLabel>
|
|
71
|
+
<GtkLabel cssClasses={["title-2"]}>{`Count: ${count}`}</GtkLabel>
|
|
72
|
+
<GtkButton
|
|
73
|
+
label="Increment"
|
|
74
|
+
onClicked={() => setCount((c) => c + 1)}
|
|
75
|
+
cssClasses={["suggested-action", "pill"]}
|
|
76
|
+
/>
|
|
77
|
+
</GtkBox>
|
|
78
|
+
</GtkApplicationWindow>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const App = () => (
|
|
83
|
+
<GtkApplication>
|
|
84
|
+
<Counter />
|
|
85
|
+
</GtkApplication>
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
createRoot().render(<App />);
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
This is the [`hello-world`](https://github.com/gtkx-org/gtkx/tree/main/examples/hello-world) example, with `app.tsx` and `index.tsx` combined into a single snippet. `@gtkx/gi` and `@gtkx/jsx` are per-project bindings generated by the CLI, not packages you install from npm.
|
|
92
|
+
|
|
93
|
+
## Why GTKX
|
|
94
|
+
|
|
95
|
+
### A declarative layer for the GNOME stack
|
|
96
|
+
|
|
97
|
+
GTK4 is mature, and GtkBuilder XML can lay out a static interface, but nothing re-renders that interface when your application state changes, and nothing hot-reloads it as you work. GTKX adds that missing layer, and the tooling around it, on top of the stack you already know:
|
|
98
|
+
|
|
99
|
+
- a React reconciler that exposes every GObject as a JSX element,
|
|
100
|
+
- a CLI for scaffolding, development, and production builds,
|
|
101
|
+
- a dev server with Fast Refresh that patches your running UI in place,
|
|
102
|
+
- CSS-in-JS styling and high-level list, grid, and dialog components,
|
|
103
|
+
- a Testing Library-style API for querying and driving your widgets in tests,
|
|
104
|
+
- and a Model Context Protocol (MCP) server that exposes your live app to AI agents.
|
|
105
|
+
|
|
106
|
+
### The full GNOME API surface
|
|
107
|
+
|
|
108
|
+
React Native and similar frameworks hide the native toolkit so one API can run everywhere. GTKX exposes it: GTK4, Adwaita, and any other GObject-Introspection library on your system. Linux-only by design.
|
|
109
|
+
|
|
110
|
+
### Why Node.js, and why generated bindings
|
|
111
|
+
|
|
112
|
+
GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [why-gtkx guide](https://gtkx.dev/guide/why-gtkx) covers the comparison in full.
|
|
113
|
+
|
|
114
|
+
GTKX generates the TypeScript types and the native FFI calls from the same GObject-Introspection data, so the types cannot drift from the calls they back. Codegen covers the whole GTK4 and Adwaita surface.
|
|
115
|
+
|
|
116
|
+
At runtime, the native Rust core calls straight into the system GTK4, Adwaita, and GLib libraries through libffi, without loading libgirepository at all.
|
|
117
|
+
|
|
118
|
+
## Quick start
|
|
119
|
+
|
|
120
|
+
GTKX is Linux-only and needs Node.js 24 or later. See [Requirements](#requirements).
|
|
121
|
+
|
|
122
|
+
Scaffold a new app with the `create-gtkx` initializer:
|
|
123
|
+
|
|
124
|
+
```sh
|
|
125
|
+
npm create gtkx@rc
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
The same command works with other package managers: `pnpm create gtkx@rc` or `yarn create gtkx@rc`.
|
|
129
|
+
|
|
130
|
+
Then run your new app:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
cd my-app
|
|
134
|
+
npm run dev
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
To go further, follow the [tutorial](https://gtkx.dev/tutorial/).
|
|
138
|
+
|
|
139
|
+
## Documentation
|
|
140
|
+
|
|
141
|
+
The documentation at **[gtkx.dev](https://gtkx.dev)** includes a step-by-step tutorial that builds a complete GNOME app, from scaffolding to packaging and shipping, plus guides and a full API reference.
|
|
142
|
+
|
|
143
|
+
**[Read the docs →](https://gtkx.dev/guide/why-gtkx)**
|
|
144
|
+
|
|
145
|
+
## Requirements
|
|
146
|
+
|
|
147
|
+
GTKX is Linux-only. You need:
|
|
148
|
+
|
|
149
|
+
- Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later), and GLib development libraries
|
|
150
|
+
- Node.js 24 or later
|
|
151
|
+
|
|
152
|
+
The `@gtkx/native` addon ships prebuilt for x64 and arm64 glibc Linux; other targets need to build it from the GTKX repository, which requires a Rust toolchain.
|
|
153
|
+
|
|
154
|
+
## Examples
|
|
155
|
+
|
|
156
|
+
Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
|
|
157
|
+
|
|
158
|
+
- [`hello-world`](https://github.com/gtkx-org/gtkx/tree/main/examples/hello-world): the counter above.
|
|
159
|
+
- [`gtk-demo`](https://github.com/gtkx-org/gtkx/tree/main/examples/gtk-demo): a React port of the official GTK4 widget showcase, covering lists, dialogs, gestures, CSS, and OpenGL.
|
|
160
|
+
- [`browser`](https://github.com/gtkx-org/gtkx/tree/main/examples/browser): a WebKitWebView-based web browser.
|
|
161
|
+
- [`tutorial`](https://github.com/gtkx-org/gtkx/tree/main/examples/tutorial): the Tasks app the documentation builds.
|
|
162
|
+
|
|
163
|
+
## Status
|
|
164
|
+
|
|
165
|
+
GTKX 1.0 is at the release candidate stage.
|
|
166
|
+
|
|
167
|
+
## Contributing
|
|
168
|
+
|
|
169
|
+
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md), the [Code of Conduct](https://github.com/gtkx-org/gtkx/blob/main/CODE_OF_CONDUCT.md), and the [security policy](https://github.com/gtkx-org/gtkx/blob/main/SECURITY.md). Building the repo needs Node.js 24 or later, pnpm, and a Rust toolchain.
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
GTKX is licensed under [MPL-2.0](https://github.com/gtkx-org/gtkx/blob/main/LICENSE).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Library } from "../gir/library.js";
|
|
2
|
+
import { type GirParameter, type GirReturnValue, type ParameterTransfer } from "../gir/parameter.js";
|
|
3
|
+
import type { TypeId } from "../gir/type-id.js";
|
|
4
|
+
import type { ModuleContext } from "../writer/context.js";
|
|
5
|
+
type RenderDescriptorOptions = {
|
|
6
|
+
argIndexOffset?: number;
|
|
7
|
+
callerAllocated?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const isInlineCallbackRef: (library: Library, ref: TypeId | undefined) => boolean;
|
|
10
|
+
export declare const omitsPrimaryReturn: (library: Library, returnValue: GirReturnValue) => boolean;
|
|
11
|
+
export declare const renderDescriptor: (context: ModuleContext, ref: TypeId | undefined, transfer?: ParameterTransfer, options?: RenderDescriptorOptions) => string;
|
|
12
|
+
export declare const isScalarRef: (library: Library, ref: TypeId | undefined) => boolean;
|
|
13
|
+
export declare const isCellInout: (library: Library, parameter: GirParameter) => boolean;
|
|
14
|
+
export declare const renderParamDescriptor: (context: ModuleContext, parameter: GirParameter, ref: TypeId | undefined) => string;
|
|
15
|
+
export declare const renderCallbackType: (context: ModuleContext, ref: TypeId | undefined, owningParameter: GirParameter, argOverrides?: Map<number, string>) => string | undefined;
|
|
16
|
+
export declare const renderSelfDescriptor: (context: ModuleContext, instance: GirParameter) => string;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=descriptor-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-render.d.ts","sourceRoot":"","sources":["../../src/analysis/descriptor-render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,cAAc,EAInB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAA0B,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqC1D,KAAK,uBAAuB,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAQF,eAAO,MAAM,mBAAmB,YAAa,OAAO,OAAO,MAAM,GAAG,SAAS,KAAG,OACsB,CAAC;AAEvG,eAAO,MAAM,kBAAkB,YAAa,OAAO,eAAe,cAAc,KAAG,OACvB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,YAChB,aAAa,OACjB,MAAM,GAAG,SAAS,aACb,iBAAiB,YAClB,uBAAuB,KACjC,MAkCF,CAAC;AASF,eAAO,MAAM,WAAW,YAAa,OAAO,OAAO,MAAM,GAAG,SAAS,KAAG,OAQvE,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,OAAO,aAAa,YAAY,KAAG,OACD,CAAC;AAExE,eAAO,MAAM,qBAAqB,YACrB,aAAa,aACX,YAAY,OAClB,MAAM,GAAG,SAAS,KACxB,MAUF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAClB,aAAa,OACjB,MAAM,GAAG,SAAS,mBACN,YAAY,iBACd,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACnC,MAAM,GAAG,SAoBX,CAAC;AAuFF,eAAO,MAAM,oBAAoB,YAAa,aAAa,YAAY,YAAY,KAAG,MAarF,CAAC"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { isCallerAllocatedOut, isInoutParameter, isOutParameter, } from "../gir/parameter.js";
|
|
3
|
+
import { isRecordInout } from "../store/gi/param-marshal.js";
|
|
4
|
+
import { computeRecordFieldSlots } from "../store/gi/record-layout.js";
|
|
5
|
+
import { tArray, tBoxed, tByteArray, tCallback, tEnum, tFixedArray, tFlags, tFundamental, tGtype, tHashTable, tInt32, tList, tObject, tRef, tScalar, tSizedArray, tString, tStruct, tUint32, tUint64, tVoid, } from "./descriptor.js";
|
|
6
|
+
const transferOwnership = (transfer) => {
|
|
7
|
+
if (transfer === "full")
|
|
8
|
+
return "full";
|
|
9
|
+
if (transfer === "container")
|
|
10
|
+
return "full";
|
|
11
|
+
return "borrowed";
|
|
12
|
+
};
|
|
13
|
+
const deriveElementTransfer = (transfer) => transfer === "container" ? "none" : transfer;
|
|
14
|
+
const isVoidRef = (library, ref) => {
|
|
15
|
+
if (ref === undefined)
|
|
16
|
+
return true;
|
|
17
|
+
const type = library.typeOf(ref);
|
|
18
|
+
return type?.kind === "primitive" && type.category === "void";
|
|
19
|
+
};
|
|
20
|
+
export const isInlineCallbackRef = (library, ref) => ref !== undefined && library.typeOf(ref)?.kind === "callback" && library.nameOf(ref) === undefined;
|
|
21
|
+
export const omitsPrimaryReturn = (library, returnValue) => isVoidRef(library, returnValue.type) || returnValue.skip;
|
|
22
|
+
export const renderDescriptor = (context, ref, transfer = "none", options = {}) => {
|
|
23
|
+
if (ref === undefined)
|
|
24
|
+
return tVoid;
|
|
25
|
+
const { argIndexOffset = 0 } = options;
|
|
26
|
+
const ownership = transferOwnership(transfer);
|
|
27
|
+
const type = context.library.typeOf(ref);
|
|
28
|
+
if (type === undefined)
|
|
29
|
+
return tObject(ownership);
|
|
30
|
+
switch (type.kind) {
|
|
31
|
+
case "primitive":
|
|
32
|
+
return primitiveExpression(type.category, ownership);
|
|
33
|
+
case "varargs":
|
|
34
|
+
case "callback":
|
|
35
|
+
return tVoid;
|
|
36
|
+
case "class":
|
|
37
|
+
case "interface":
|
|
38
|
+
case "record":
|
|
39
|
+
case "enum":
|
|
40
|
+
case "alias":
|
|
41
|
+
return expressionForResolved(context, type, transfer, options);
|
|
42
|
+
case "carray":
|
|
43
|
+
return arrayExpression(context, type, transfer, argIndexOffset);
|
|
44
|
+
case "list": {
|
|
45
|
+
if (type.flavor === "gbytearray")
|
|
46
|
+
return tByteArray(ownership);
|
|
47
|
+
const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), {
|
|
48
|
+
argIndexOffset,
|
|
49
|
+
});
|
|
50
|
+
return tList(LIST_HELPERS[type.flavor], element, ownership);
|
|
51
|
+
}
|
|
52
|
+
case "hashtable": {
|
|
53
|
+
const elementTransfer = deriveElementTransfer(transfer);
|
|
54
|
+
const key = renderDescriptor(context, type.key, elementTransfer, { argIndexOffset });
|
|
55
|
+
const value = renderDescriptor(context, type.value, elementTransfer, { argIndexOffset });
|
|
56
|
+
return tHashTable(key, value, ownership);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const resolveCallbackType = (context, ref) => {
|
|
61
|
+
if (ref === undefined)
|
|
62
|
+
return undefined;
|
|
63
|
+
const type = context.library.typeOf(ref);
|
|
64
|
+
if (type?.kind !== "callback")
|
|
65
|
+
return undefined;
|
|
66
|
+
return type.value;
|
|
67
|
+
};
|
|
68
|
+
export const isScalarRef = (library, ref) => {
|
|
69
|
+
if (ref === undefined)
|
|
70
|
+
return false;
|
|
71
|
+
const type = library.typeOf(ref);
|
|
72
|
+
if (type === undefined)
|
|
73
|
+
return false;
|
|
74
|
+
if (type.kind === "primitive")
|
|
75
|
+
return type.category !== "string" && type.category !== "void";
|
|
76
|
+
if (type.kind === "enum")
|
|
77
|
+
return true;
|
|
78
|
+
if (type.kind === "alias")
|
|
79
|
+
return type.value.target !== undefined && isScalarRef(library, type.value.target);
|
|
80
|
+
return false;
|
|
81
|
+
};
|
|
82
|
+
export const isCellInout = (library, parameter) => isInoutParameter(parameter) && isScalarRef(library, parameter.type);
|
|
83
|
+
export const renderParamDescriptor = (context, parameter, ref) => {
|
|
84
|
+
if (isCellInout(context.library, parameter)) {
|
|
85
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership), true);
|
|
86
|
+
}
|
|
87
|
+
if (isOutParameter(parameter)) {
|
|
88
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership));
|
|
89
|
+
}
|
|
90
|
+
return renderDescriptor(context, ref, parameter.transferOwnership, {
|
|
91
|
+
callerAllocated: isCallerAllocatedOut(parameter) || isRecordInout(context, parameter),
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
export const renderCallbackType = (context, ref, owningParameter, argOverrides) => {
|
|
95
|
+
const callback = resolveCallbackType(context, ref);
|
|
96
|
+
if (callback === undefined)
|
|
97
|
+
return undefined;
|
|
98
|
+
const argTypes = callback.parameters.map((parameter, index) => argOverrides?.get(index) ?? renderParamDescriptor(context, parameter, parameter.type));
|
|
99
|
+
let userDataIndex;
|
|
100
|
+
callback.parameters.forEach((parameter, index) => {
|
|
101
|
+
if (parameter.name === "user_data" || parameter.name === "data")
|
|
102
|
+
userDataIndex = index;
|
|
103
|
+
});
|
|
104
|
+
const returnRef = callback.returnValue.type;
|
|
105
|
+
const returnType = isVoidRef(context.library, returnRef)
|
|
106
|
+
? tVoid
|
|
107
|
+
: renderDescriptor(context, returnRef, callback.returnValue.transferOwnership);
|
|
108
|
+
const options = [];
|
|
109
|
+
if (owningParameter.destroyIndex !== undefined)
|
|
110
|
+
options.push("hasDestroy: true");
|
|
111
|
+
if (userDataIndex !== undefined)
|
|
112
|
+
options.push(`userDataIndex: ${userDataIndex}`);
|
|
113
|
+
if (owningParameter.scope !== undefined)
|
|
114
|
+
options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);
|
|
115
|
+
const optionsArg = options.length > 0 ? `{ ${options.join(", ")} }` : undefined;
|
|
116
|
+
return tCallback(argTypes, returnType, optionsArg);
|
|
117
|
+
};
|
|
118
|
+
const LIST_HELPERS = {
|
|
119
|
+
glist: "list",
|
|
120
|
+
gslist: "slist",
|
|
121
|
+
gptrarray: "ptrArray",
|
|
122
|
+
garray: "gArray",
|
|
123
|
+
};
|
|
124
|
+
const primitiveExpression = (category, ownership) => {
|
|
125
|
+
if (category === "void")
|
|
126
|
+
return tVoid;
|
|
127
|
+
if (category === "string")
|
|
128
|
+
return tString(ownership);
|
|
129
|
+
if (category === "pointer")
|
|
130
|
+
return tUint64;
|
|
131
|
+
if (category === "gtype")
|
|
132
|
+
return tGtype;
|
|
133
|
+
return tScalar(category);
|
|
134
|
+
};
|
|
135
|
+
const referenceAddingFunc = (refFunc) => refFunc.endsWith("_ref_sink") ? refFunc.slice(0, -"_sink".length) : refFunc;
|
|
136
|
+
const renderFundamental = (descriptor) => {
|
|
137
|
+
const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass } = descriptor;
|
|
138
|
+
return tFundamental(lib, referenceAddingFunc(refFunc), unrefFunc, {
|
|
139
|
+
ownership,
|
|
140
|
+
typeName,
|
|
141
|
+
wrapperClass,
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
const classOrInterfaceExpression = (resolved, ownership) => {
|
|
145
|
+
const cls = resolved.value;
|
|
146
|
+
if (cls.glibRefFunc === undefined || cls.glibUnrefFunc === undefined) {
|
|
147
|
+
return tObject(ownership);
|
|
148
|
+
}
|
|
149
|
+
return renderFundamental({
|
|
150
|
+
lib: resolved.namespace.sharedLibrary ?? "",
|
|
151
|
+
refFunc: cls.glibRefFunc,
|
|
152
|
+
unrefFunc: cls.glibUnrefFunc,
|
|
153
|
+
typeName: cls.glibTypeName,
|
|
154
|
+
ownership,
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
const fundamentalAncestor = (context, start) => {
|
|
158
|
+
const seen = new Set();
|
|
159
|
+
let current = start;
|
|
160
|
+
while (current !== undefined && (current.kind === "class" || current.kind === "interface")) {
|
|
161
|
+
const key = `${current.namespace.name}.${current.value.name}`;
|
|
162
|
+
if (seen.has(key))
|
|
163
|
+
return undefined;
|
|
164
|
+
seen.add(key);
|
|
165
|
+
const cls = current.value;
|
|
166
|
+
if (cls.fundamental && cls.glibRefFunc !== undefined && cls.glibUnrefFunc !== undefined) {
|
|
167
|
+
return {
|
|
168
|
+
lib: current.namespace.sharedLibrary ?? "",
|
|
169
|
+
refFunc: cls.glibRefFunc,
|
|
170
|
+
unrefFunc: cls.glibUnrefFunc,
|
|
171
|
+
typeName: cls.glibTypeName,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
if (cls.parent === undefined)
|
|
175
|
+
return undefined;
|
|
176
|
+
current = context.library.resolveType(current.namespace.name, cls.parent);
|
|
177
|
+
}
|
|
178
|
+
return undefined;
|
|
179
|
+
};
|
|
180
|
+
export const renderSelfDescriptor = (context, instance) => {
|
|
181
|
+
const ref = instance.type;
|
|
182
|
+
if (ref === undefined)
|
|
183
|
+
return tObject("borrowed");
|
|
184
|
+
const type = context.library.typeOf(ref);
|
|
185
|
+
if (type === undefined)
|
|
186
|
+
return tObject("borrowed");
|
|
187
|
+
if (type.kind === "class" || type.kind === "interface") {
|
|
188
|
+
const ancestor = fundamentalAncestor(context, type);
|
|
189
|
+
return ancestor === undefined ? tObject("borrowed") : renderFundamental({ ...ancestor, ownership: "borrowed" });
|
|
190
|
+
}
|
|
191
|
+
if (type.kind === "record") {
|
|
192
|
+
return recordExpression(context, type, transferOwnership(instance.transferOwnership));
|
|
193
|
+
}
|
|
194
|
+
return tObject("borrowed");
|
|
195
|
+
};
|
|
196
|
+
const recordRefPair = (record) => ({
|
|
197
|
+
refFunc: record.glibRefFunc ?? record.copyFunc,
|
|
198
|
+
unrefFunc: record.glibUnrefFunc ?? record.freeFunc,
|
|
199
|
+
});
|
|
200
|
+
const recordNeedsFallbackClass = (record) => {
|
|
201
|
+
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
202
|
+
if (refFunc !== undefined && unrefFunc !== undefined)
|
|
203
|
+
return record.glibTypeName === undefined;
|
|
204
|
+
return record.glibGetType === undefined;
|
|
205
|
+
};
|
|
206
|
+
const structExpression = (context, resolved, ownership, callerAllocated) => {
|
|
207
|
+
const { size } = computeRecordFieldSlots(context, resolved.value.fields, resolved.value.isUnion);
|
|
208
|
+
const wrapperClass = context.qualify(resolved.namespace.name, resolved.value.name);
|
|
209
|
+
return tStruct(ownership, {
|
|
210
|
+
size: size > 0 ? size : undefined,
|
|
211
|
+
wrapperClass,
|
|
212
|
+
callerAllocated,
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
const recordExpression = (context, resolved, ownership, callerAllocated = false) => {
|
|
216
|
+
const record = resolved.value;
|
|
217
|
+
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
218
|
+
const wrapperClass = recordNeedsFallbackClass(record)
|
|
219
|
+
? context.qualify(resolved.namespace.name, record.name)
|
|
220
|
+
: undefined;
|
|
221
|
+
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
222
|
+
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
223
|
+
return renderFundamental({
|
|
224
|
+
lib,
|
|
225
|
+
refFunc,
|
|
226
|
+
unrefFunc,
|
|
227
|
+
typeName: record.glibTypeName,
|
|
228
|
+
ownership,
|
|
229
|
+
wrapperClass,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (record.glibGetType === undefined) {
|
|
233
|
+
return structExpression(context, resolved, ownership, callerAllocated);
|
|
234
|
+
}
|
|
235
|
+
const glibName = record.glibTypeName ?? record.cType ?? record.name;
|
|
236
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
237
|
+
return tBoxed(glibName, {
|
|
238
|
+
ownership,
|
|
239
|
+
sharedLibrary: resolved.namespace.sharedLibrary,
|
|
240
|
+
getTypeFnName: record.glibGetType,
|
|
241
|
+
callerAllocated,
|
|
242
|
+
size: size > 0 ? size : undefined,
|
|
243
|
+
});
|
|
244
|
+
};
|
|
245
|
+
const expressionForResolved = (context, resolved, transfer, options) => {
|
|
246
|
+
const ownership = transferOwnership(transfer);
|
|
247
|
+
switch (resolved.kind) {
|
|
248
|
+
case "class":
|
|
249
|
+
case "interface":
|
|
250
|
+
return classOrInterfaceExpression(resolved, ownership);
|
|
251
|
+
case "record":
|
|
252
|
+
return recordExpression(context, resolved, ownership, options.callerAllocated ?? false);
|
|
253
|
+
case "enum": {
|
|
254
|
+
const getter = resolved.value.glibGetType;
|
|
255
|
+
const signed = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
256
|
+
if (getter === undefined || getter === "")
|
|
257
|
+
return signed ? tInt32 : tUint32;
|
|
258
|
+
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
259
|
+
return resolved.value.kind === "bitfield" ? tFlags(lib, getter, signed) : tEnum(lib, getter, signed);
|
|
260
|
+
}
|
|
261
|
+
case "alias":
|
|
262
|
+
return aliasExpression(context, resolved.value.target, transfer, options);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
const arrayExpression = (context, ref, transfer, argIndexOffset) => {
|
|
266
|
+
const ownership = transferOwnership(transfer);
|
|
267
|
+
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer), { argIndexOffset });
|
|
268
|
+
const size = inlineElementSize(context, ref.element, ref.elementCType);
|
|
269
|
+
if (ref.lengthParameterIndex !== undefined) {
|
|
270
|
+
return tSizedArray(element, ref.lengthParameterIndex + argIndexOffset, ownership, size);
|
|
271
|
+
}
|
|
272
|
+
if (ref.fixedSize !== undefined) {
|
|
273
|
+
return tFixedArray(element, ref.fixedSize, ownership, size);
|
|
274
|
+
}
|
|
275
|
+
return tArray(element, ownership, size);
|
|
276
|
+
};
|
|
277
|
+
const inlineElementSize = (context, element, elementCType) => {
|
|
278
|
+
if (element === undefined)
|
|
279
|
+
return undefined;
|
|
280
|
+
if (elementCType?.includes("*"))
|
|
281
|
+
return undefined;
|
|
282
|
+
const type = context.library.typeOf(element);
|
|
283
|
+
if (type?.kind !== "record")
|
|
284
|
+
return undefined;
|
|
285
|
+
const record = type.value;
|
|
286
|
+
if (record.opaque || record.disguised || record.fields.length === 0)
|
|
287
|
+
return undefined;
|
|
288
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
289
|
+
return size > 0 ? size : undefined;
|
|
290
|
+
};
|
|
291
|
+
const aliasExpression = (context, target, transfer, options) => {
|
|
292
|
+
if (target === undefined) {
|
|
293
|
+
return tObject(transferOwnership(transfer));
|
|
294
|
+
}
|
|
295
|
+
return renderDescriptor(context, target, transfer, options);
|
|
296
|
+
};
|
|
297
|
+
//# sourceMappingURL=descriptor-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-render.js","sourceRoot":"","sources":["../../src/analysis/descriptor-render.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { GirCallback } from \"../gir/callback.js\";\nimport type { Library } from \"../gir/library.js\";\nimport {\n type GirParameter,\n type GirReturnValue,\n isCallerAllocatedOut,\n isInoutParameter,\n isOutParameter,\n type ParameterTransfer,\n} from \"../gir/parameter.js\";\nimport type { PrimitiveCategory } from \"../gir/primitives.js\";\nimport type { EntityType, GirType } from \"../gir/type.js\";\nimport type { CArrayType, ListFlavor, TypeId } from \"../gir/type-id.js\";\nimport { isRecordInout } from \"../store/gi/param-marshal.js\";\nimport { computeRecordFieldSlots } from \"../store/gi/record-layout.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport {\n type ListDescriptorName,\n type Ownership,\n type ScalarDescriptorName,\n tArray,\n tBoxed,\n tByteArray,\n tCallback,\n tEnum,\n tFixedArray,\n tFlags,\n tFundamental,\n tGtype,\n tHashTable,\n tInt32,\n tList,\n tObject,\n tRef,\n tScalar,\n tSizedArray,\n tString,\n tStruct,\n tUint32,\n tUint64,\n tVoid,\n} from \"./descriptor.js\";\n\nconst transferOwnership = (transfer: ParameterTransfer): Ownership => {\n if (transfer === \"full\") return \"full\";\n if (transfer === \"container\") return \"full\";\n return \"borrowed\";\n};\n\nconst deriveElementTransfer = (transfer: ParameterTransfer): ParameterTransfer =>\n transfer === \"container\" ? \"none\" : transfer;\n\ntype RenderDescriptorOptions = {\n argIndexOffset?: number;\n callerAllocated?: boolean;\n};\n\nconst isVoidRef = (library: Library, ref: TypeId | undefined): boolean => {\n if (ref === undefined) return true;\n const type = library.typeOf(ref);\n return type?.kind === \"primitive\" && type.category === \"void\";\n};\n\nexport const isInlineCallbackRef = (library: Library, ref: TypeId | undefined): boolean =>\n ref !== undefined && library.typeOf(ref)?.kind === \"callback\" && library.nameOf(ref) === undefined;\n\nexport const omitsPrimaryReturn = (library: Library, returnValue: GirReturnValue): boolean =>\n isVoidRef(library, returnValue.type) || returnValue.skip;\n\nexport const renderDescriptor = (\n context: ModuleContext,\n ref: TypeId | undefined,\n transfer: ParameterTransfer = \"none\",\n options: RenderDescriptorOptions = {},\n): string => {\n if (ref === undefined) return tVoid;\n const { argIndexOffset = 0 } = options;\n const ownership = transferOwnership(transfer);\n const type = context.library.typeOf(ref);\n if (type === undefined) return tObject(ownership);\n switch (type.kind) {\n case \"primitive\":\n return primitiveExpression(type.category, ownership);\n case \"varargs\":\n case \"callback\":\n return tVoid;\n case \"class\":\n case \"interface\":\n case \"record\":\n case \"enum\":\n case \"alias\":\n return expressionForResolved(context, type, transfer, options);\n case \"carray\":\n return arrayExpression(context, type, transfer, argIndexOffset);\n case \"list\": {\n if (type.flavor === \"gbytearray\") return tByteArray(ownership);\n const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), {\n argIndexOffset,\n });\n return tList(LIST_HELPERS[type.flavor], element, ownership);\n }\n case \"hashtable\": {\n const elementTransfer = deriveElementTransfer(transfer);\n const key = renderDescriptor(context, type.key, elementTransfer, { argIndexOffset });\n const value = renderDescriptor(context, type.value, elementTransfer, { argIndexOffset });\n return tHashTable(key, value, ownership);\n }\n }\n};\n\nconst resolveCallbackType = (context: ModuleContext, ref: TypeId | undefined): GirCallback | undefined => {\n if (ref === undefined) return undefined;\n const type = context.library.typeOf(ref);\n if (type?.kind !== \"callback\") return undefined;\n return type.value;\n};\n\nexport const isScalarRef = (library: Library, ref: TypeId | undefined): boolean => {\n if (ref === undefined) return false;\n const type = library.typeOf(ref);\n if (type === undefined) return false;\n if (type.kind === \"primitive\") return type.category !== \"string\" && type.category !== \"void\";\n if (type.kind === \"enum\") return true;\n if (type.kind === \"alias\") return type.value.target !== undefined && isScalarRef(library, type.value.target);\n return false;\n};\n\nexport const isCellInout = (library: Library, parameter: GirParameter): boolean =>\n isInoutParameter(parameter) && isScalarRef(library, parameter.type);\n\nexport const renderParamDescriptor = (\n context: ModuleContext,\n parameter: GirParameter,\n ref: TypeId | undefined,\n): string => {\n if (isCellInout(context.library, parameter)) {\n return tRef(renderDescriptor(context, ref, parameter.transferOwnership), true);\n }\n if (isOutParameter(parameter)) {\n return tRef(renderDescriptor(context, ref, parameter.transferOwnership));\n }\n return renderDescriptor(context, ref, parameter.transferOwnership, {\n callerAllocated: isCallerAllocatedOut(parameter) || isRecordInout(context, parameter),\n });\n};\n\nexport const renderCallbackType = (\n context: ModuleContext,\n ref: TypeId | undefined,\n owningParameter: GirParameter,\n argOverrides?: Map<number, string>,\n): string | undefined => {\n const callback = resolveCallbackType(context, ref);\n if (callback === undefined) return undefined;\n const argTypes = callback.parameters.map(\n (parameter, index) => argOverrides?.get(index) ?? renderParamDescriptor(context, parameter, parameter.type),\n );\n let userDataIndex: number | undefined;\n callback.parameters.forEach((parameter, index) => {\n if (parameter.name === \"user_data\" || parameter.name === \"data\") userDataIndex = index;\n });\n const returnRef = callback.returnValue.type;\n const returnType = isVoidRef(context.library, returnRef)\n ? tVoid\n : renderDescriptor(context, returnRef, callback.returnValue.transferOwnership);\n const options: string[] = [];\n if (owningParameter.destroyIndex !== undefined) options.push(\"hasDestroy: true\");\n if (userDataIndex !== undefined) options.push(`userDataIndex: ${userDataIndex}`);\n if (owningParameter.scope !== undefined) options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);\n const optionsArg = options.length > 0 ? `{ ${options.join(\", \")} }` : undefined;\n return tCallback(argTypes, returnType, optionsArg);\n};\n\nconst LIST_HELPERS: Record<Exclude<ListFlavor, \"gbytearray\">, ListDescriptorName> = {\n glist: \"list\",\n gslist: \"slist\",\n gptrarray: \"ptrArray\",\n garray: \"gArray\",\n};\n\nconst primitiveExpression = (category: PrimitiveCategory, ownership: Ownership): string => {\n if (category === \"void\") return tVoid;\n if (category === \"string\") return tString(ownership);\n if (category === \"pointer\") return tUint64;\n if (category === \"gtype\") return tGtype;\n return tScalar(category satisfies ScalarDescriptorName);\n};\n\ntype FundamentalDescriptor = {\n lib: string;\n refFunc: string;\n unrefFunc: string;\n typeName: string | undefined;\n ownership: Ownership;\n wrapperClass?: string | undefined;\n};\n\nconst referenceAddingFunc = (refFunc: string): string =>\n refFunc.endsWith(\"_ref_sink\") ? refFunc.slice(0, -\"_sink\".length) : refFunc;\n\nconst renderFundamental = (descriptor: FundamentalDescriptor): string => {\n const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass } = descriptor;\n return tFundamental(lib, referenceAddingFunc(refFunc), unrefFunc, {\n ownership,\n typeName,\n wrapperClass,\n });\n};\n\nconst classOrInterfaceExpression = (\n resolved: Extract<EntityType, { kind: \"class\" | \"interface\" }>,\n ownership: Ownership,\n): string => {\n const cls = resolved.value;\n if (cls.glibRefFunc === undefined || cls.glibUnrefFunc === undefined) {\n return tObject(ownership);\n }\n return renderFundamental({\n lib: resolved.namespace.sharedLibrary ?? \"\",\n refFunc: cls.glibRefFunc,\n unrefFunc: cls.glibUnrefFunc,\n typeName: cls.glibTypeName,\n ownership,\n });\n};\n\ntype AncestorFundamental = {\n lib: string;\n refFunc: string;\n unrefFunc: string;\n typeName: string | undefined;\n};\n\nconst fundamentalAncestor = (\n context: ModuleContext,\n start: Extract<EntityType, { kind: \"class\" | \"interface\" }>,\n): AncestorFundamental | undefined => {\n const seen = new Set<string>();\n let current: GirType | undefined = start;\n while (current !== undefined && (current.kind === \"class\" || current.kind === \"interface\")) {\n const key = `${current.namespace.name}.${current.value.name}`;\n if (seen.has(key)) return undefined;\n seen.add(key);\n const cls = current.value;\n if (cls.fundamental && cls.glibRefFunc !== undefined && cls.glibUnrefFunc !== undefined) {\n return {\n lib: current.namespace.sharedLibrary ?? \"\",\n refFunc: cls.glibRefFunc,\n unrefFunc: cls.glibUnrefFunc,\n typeName: cls.glibTypeName,\n };\n }\n if (cls.parent === undefined) return undefined;\n current = context.library.resolveType(current.namespace.name, cls.parent);\n }\n return undefined;\n};\n\nexport const renderSelfDescriptor = (context: ModuleContext, instance: GirParameter): string => {\n const ref = instance.type;\n if (ref === undefined) return tObject(\"borrowed\");\n const type = context.library.typeOf(ref);\n if (type === undefined) return tObject(\"borrowed\");\n if (type.kind === \"class\" || type.kind === \"interface\") {\n const ancestor = fundamentalAncestor(context, type);\n return ancestor === undefined ? tObject(\"borrowed\") : renderFundamental({ ...ancestor, ownership: \"borrowed\" });\n }\n if (type.kind === \"record\") {\n return recordExpression(context, type, transferOwnership(instance.transferOwnership));\n }\n return tObject(\"borrowed\");\n};\n\ntype ResolvedRecord = Extract<EntityType, { kind: \"record\" }>[\"value\"];\n\nconst recordRefPair = (record: ResolvedRecord): { refFunc: string | undefined; unrefFunc: string | undefined } => ({\n refFunc: record.glibRefFunc ?? record.copyFunc,\n unrefFunc: record.glibUnrefFunc ?? record.freeFunc,\n});\n\nconst recordNeedsFallbackClass = (record: ResolvedRecord): boolean => {\n const { refFunc, unrefFunc } = recordRefPair(record);\n if (refFunc !== undefined && unrefFunc !== undefined) return record.glibTypeName === undefined;\n return record.glibGetType === undefined;\n};\n\nconst structExpression = (\n context: ModuleContext,\n resolved: Extract<EntityType, { kind: \"record\" }>,\n ownership: Ownership,\n callerAllocated: boolean,\n): string => {\n const { size } = computeRecordFieldSlots(context, resolved.value.fields, resolved.value.isUnion);\n const wrapperClass = context.qualify(resolved.namespace.name, resolved.value.name);\n return tStruct(ownership, {\n size: size > 0 ? size : undefined,\n wrapperClass,\n callerAllocated,\n });\n};\n\nconst recordExpression = (\n context: ModuleContext,\n resolved: Extract<EntityType, { kind: \"record\" }>,\n ownership: Ownership,\n callerAllocated = false,\n): string => {\n const record = resolved.value;\n const { refFunc, unrefFunc } = recordRefPair(record);\n const wrapperClass = recordNeedsFallbackClass(record)\n ? context.qualify(resolved.namespace.name, record.name)\n : undefined;\n if (refFunc !== undefined && unrefFunc !== undefined) {\n const lib = resolved.namespace.sharedLibrary ?? \"\";\n return renderFundamental({\n lib,\n refFunc,\n unrefFunc,\n typeName: record.glibTypeName,\n ownership,\n wrapperClass,\n });\n }\n if (record.glibGetType === undefined) {\n return structExpression(context, resolved, ownership, callerAllocated);\n }\n const glibName = record.glibTypeName ?? record.cType ?? record.name;\n const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);\n return tBoxed(glibName, {\n ownership,\n sharedLibrary: resolved.namespace.sharedLibrary,\n getTypeFnName: record.glibGetType,\n callerAllocated,\n size: size > 0 ? size : undefined,\n });\n};\n\nconst expressionForResolved = (\n context: ModuleContext,\n resolved: Extract<EntityType, { kind: \"class\" | \"interface\" | \"record\" | \"enum\" | \"alias\" }>,\n transfer: ParameterTransfer,\n options: RenderDescriptorOptions,\n): string => {\n const ownership = transferOwnership(transfer);\n switch (resolved.kind) {\n case \"class\":\n case \"interface\":\n return classOrInterfaceExpression(resolved, ownership);\n case \"record\":\n return recordExpression(context, resolved, ownership, options.callerAllocated ?? false);\n case \"enum\": {\n const getter = resolved.value.glibGetType;\n const signed = resolved.value.members.some((member) => member.value.startsWith(\"-\"));\n if (getter === undefined || getter === \"\") return signed ? tInt32 : tUint32;\n const lib = resolved.namespace.sharedLibrary ?? \"\";\n return resolved.value.kind === \"bitfield\" ? tFlags(lib, getter, signed) : tEnum(lib, getter, signed);\n }\n case \"alias\":\n return aliasExpression(context, resolved.value.target, transfer, options);\n }\n};\n\nconst arrayExpression = (\n context: ModuleContext,\n ref: CArrayType,\n transfer: ParameterTransfer,\n argIndexOffset: number,\n): string => {\n const ownership = transferOwnership(transfer);\n const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer), { argIndexOffset });\n const size = inlineElementSize(context, ref.element, ref.elementCType);\n if (ref.lengthParameterIndex !== undefined) {\n return tSizedArray(element, ref.lengthParameterIndex + argIndexOffset, ownership, size);\n }\n if (ref.fixedSize !== undefined) {\n return tFixedArray(element, ref.fixedSize, ownership, size);\n }\n return tArray(element, ownership, size);\n};\n\nconst inlineElementSize = (\n context: ModuleContext,\n element: TypeId | undefined,\n elementCType: string | undefined,\n): number | undefined => {\n if (element === undefined) return undefined;\n if (elementCType?.includes(\"*\")) return undefined;\n const type = context.library.typeOf(element);\n if (type?.kind !== \"record\") return undefined;\n const record = type.value;\n if (record.opaque || record.disguised || record.fields.length === 0) return undefined;\n const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);\n return size > 0 ? size : undefined;\n};\n\nconst aliasExpression = (\n context: ModuleContext,\n target: TypeId | undefined,\n transfer: ParameterTransfer,\n options: RenderDescriptorOptions,\n): string => {\n if (target === undefined) {\n return tObject(transferOwnership(transfer));\n }\n return renderDescriptor(context, target, transfer, options);\n};\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type Ownership = "borrowed" | "full";
|
|
2
|
+
export declare const tVoid: string;
|
|
3
|
+
export declare const tBoolean: string;
|
|
4
|
+
export declare const tUint8: string;
|
|
5
|
+
export declare const tUint32: string;
|
|
6
|
+
export declare const tInt32: string;
|
|
7
|
+
export declare const tUint64: string;
|
|
8
|
+
export declare const tGtype: string;
|
|
9
|
+
export declare const tBuffer: string;
|
|
10
|
+
export type ScalarDescriptorName = "boolean" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "bigint64" | "biguint64" | "float32" | "float64" | "unichar";
|
|
11
|
+
export declare const tScalar: (name: ScalarDescriptorName) => string;
|
|
12
|
+
export declare const tString: (ownership: Ownership, length?: string) => string;
|
|
13
|
+
export declare const tObject: (ownership: Ownership) => string;
|
|
14
|
+
export type BoxedOptions = {
|
|
15
|
+
ownership: Ownership;
|
|
16
|
+
sharedLibrary: string | undefined;
|
|
17
|
+
getTypeFnName: string;
|
|
18
|
+
callerAllocated: boolean;
|
|
19
|
+
size: number | undefined;
|
|
20
|
+
};
|
|
21
|
+
export declare const tBoxed: (glibName: string, options: BoxedOptions) => string;
|
|
22
|
+
export type StructOptions = {
|
|
23
|
+
size: number | string | undefined;
|
|
24
|
+
wrapperClass: string | undefined;
|
|
25
|
+
callerAllocated: boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare const tStruct: (ownership: Ownership, options: StructOptions) => string;
|
|
28
|
+
export declare const tInlineStruct: () => string;
|
|
29
|
+
export type FundamentalOptions = {
|
|
30
|
+
ownership: Ownership;
|
|
31
|
+
typeName: string | undefined;
|
|
32
|
+
wrapperClass: string | undefined;
|
|
33
|
+
};
|
|
34
|
+
export declare const tFundamental: (lib: string, refFunc: string, unrefFunc: string, options: FundamentalOptions) => string;
|
|
35
|
+
export declare const tRef: (inner: string, inout?: boolean) => string;
|
|
36
|
+
export declare const tHashTable: (key: string, value: string, ownership: Ownership) => string;
|
|
37
|
+
export declare const tEnum: (lib: string, getType: string, signed: boolean) => string;
|
|
38
|
+
export declare const tFlags: (lib: string, getType: string, signed: boolean) => string;
|
|
39
|
+
export declare const tByteArray: (ownership: Ownership) => string;
|
|
40
|
+
export type ListDescriptorName = "list" | "slist" | "ptrArray" | "gArray";
|
|
41
|
+
export declare const tList: (name: ListDescriptorName, element: string, ownership: Ownership) => string;
|
|
42
|
+
export declare const tArray: (element: string, ownership?: Ownership, elementSize?: number) => string;
|
|
43
|
+
export declare const tSizedArray: (element: string, lengthIndex: number, ownership?: Ownership, elementSize?: number) => string;
|
|
44
|
+
export declare const tFixedArray: (element: string, length: number, ownership?: Ownership, elementSize?: number) => string;
|
|
45
|
+
export declare const tCallback: (argTypes: string[], returnType: string, options?: string) => string;
|
|
46
|
+
type BindArgs = {
|
|
47
|
+
libExpr: string;
|
|
48
|
+
symbolExpr: string;
|
|
49
|
+
argList: string;
|
|
50
|
+
returnType: string;
|
|
51
|
+
};
|
|
52
|
+
export declare const tBind: (args: BindArgs) => string;
|
|
53
|
+
export declare const tFn: (lib: string, cIdentifier: string, spec: {
|
|
54
|
+
args: string;
|
|
55
|
+
returns: string;
|
|
56
|
+
throws: boolean;
|
|
57
|
+
}) => string;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/analysis/descriptor.ts"],"names":[],"mappings":"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"}
|