@gtkx/codegen 1.0.0-rc.1 → 1.0.0-rc.3
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/dist/analysis/descriptor-render.d.ts +20 -11
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +296 -152
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +37 -34
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +34 -30
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +16 -16
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +139 -84
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/param-structure.d.ts +14 -13
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +104 -53
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +6 -5
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +71 -29
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/compile.d.ts +5 -5
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +70 -63
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +12 -11
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +192 -123
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts +6 -9
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +69 -133
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/pipeline.d.ts +10 -7
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +81 -53
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +21 -19
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +80 -71
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +6 -6
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +126 -84
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +29 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +69 -13
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +18 -0
- package/dist/gi.d.ts.map +1 -0
- package/dist/gi.js +23 -0
- package/dist/gi.js.map +1 -0
- package/dist/gir/ancestry.d.ts +4 -3
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +12 -15
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/callback.d.ts +6 -11
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +6 -7
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +7 -5
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +14 -12
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +3 -3
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +7 -6
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +8 -3
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +30 -7
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +6 -3
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +23 -7
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +2 -1
- package/dist/gir/gir-path.d.ts.map +1 -1
- package/dist/gir/gir-path.js +26 -10
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/libraries.d.ts +5 -3
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +41 -28
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +17 -11
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +116 -92
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +10 -10
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +21 -20
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/nullable-overrides.d.ts +3 -0
- package/dist/gir/nullable-overrides.d.ts.map +1 -0
- package/dist/gir/nullable-overrides.js +5 -0
- package/dist/gir/nullable-overrides.js.map +1 -0
- package/dist/gir/parameter.d.ts +14 -12
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +27 -18
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +12 -13
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +50 -40
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +5 -4
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +4 -3
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +5 -4
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +10 -9
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +5 -4
- package/dist/gir/record.d.ts.map +1 -1
- package/dist/gir/record.js +13 -12
- package/dist/gir/record.js.map +1 -1
- package/dist/gir/size.d.ts +6 -5
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +49 -47
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +17 -15
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +5 -1
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.d.ts +3 -2
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +36 -25
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +3 -2
- package/dist/gir/type.d.ts.map +1 -1
- package/dist/gir/type.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +28 -0
- package/dist/jsx.d.ts.map +1 -0
- package/dist/jsx.js +44 -0
- package/dist/jsx.js.map +1 -0
- package/dist/khronos/args.d.ts +7 -7
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +88 -67
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/jsdoc.d.ts +4 -4
- package/dist/khronos/jsdoc.d.ts.map +1 -1
- package/dist/khronos/jsdoc.js +29 -16
- package/dist/khronos/jsdoc.js.map +1 -1
- package/dist/khronos/model.d.ts +8 -7
- package/dist/khronos/model.d.ts.map +1 -1
- package/dist/khronos/model.js +94 -59
- package/dist/khronos/model.js.map +1 -1
- package/dist/khronos/modules.d.ts +4 -3
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +40 -25
- package/dist/khronos/modules.js.map +1 -1
- package/dist/khronos/param-pair.d.ts +11 -0
- package/dist/khronos/param-pair.d.ts.map +1 -0
- package/dist/khronos/param-pair.js +6 -0
- package/dist/khronos/param-pair.js.map +1 -0
- package/dist/khronos/parse.d.ts +7 -8
- package/dist/khronos/parse.d.ts.map +1 -1
- package/dist/khronos/parse.js +17 -16
- package/dist/khronos/parse.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +4 -4
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js +97 -56
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +11 -10
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +109 -45
- package/dist/khronos/plan.js.map +1 -1
- package/dist/khronos/render.d.ts +5 -4
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +106 -59
- package/dist/khronos/render.js.map +1 -1
- package/dist/khronos/select.d.ts +4 -4
- package/dist/khronos/select.d.ts.map +1 -1
- package/dist/khronos/select.js +30 -19
- package/dist/khronos/select.js.map +1 -1
- package/dist/react/element-config.d.ts +20 -0
- package/dist/react/element-config.d.ts.map +1 -0
- package/dist/react/element-config.js +64 -0
- package/dist/react/element-config.js.map +1 -0
- package/dist/runner.d.ts +19 -10
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +48 -43
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +5 -3
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +24 -22
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/async.d.ts +2 -1
- package/dist/store/gi/async.d.ts.map +1 -1
- package/dist/store/gi/async.js +28 -24
- package/dist/store/gi/async.js.map +1 -1
- package/dist/store/gi/callables.d.ts +26 -20
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +157 -100
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts +3 -2
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +6 -3
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts +2 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +86 -47
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/companion.d.ts +2 -1
- package/dist/store/gi/companion.d.ts.map +1 -1
- package/dist/store/gi/companion.js +8 -5
- package/dist/store/gi/companion.js.map +1 -1
- package/dist/store/gi/constant.d.ts +3 -2
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +25 -8
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts +3 -2
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +17 -10
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/enum.d.ts +3 -2
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +14 -11
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts +5 -4
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +48 -23
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts +4 -4
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +15 -11
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.d.ts +2 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +36 -18
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/item-comparators.d.ts +3 -2
- package/dist/store/gi/item-comparators.d.ts.map +1 -1
- package/dist/store/gi/item-comparators.js +33 -21
- package/dist/store/gi/item-comparators.js.map +1 -1
- package/dist/store/gi/method.d.ts +13 -13
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +188 -130
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +7 -6
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +26 -13
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts +2 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +38 -23
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/properties.d.ts +2 -1
- package/dist/store/gi/properties.d.ts.map +1 -1
- package/dist/store/gi/properties.js +6 -4
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +11 -10
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +86 -60
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts +3 -2
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +40 -28
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +9 -8
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +187 -99
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts +6 -5
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +75 -39
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts +2 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +15 -16
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.d.ts +3 -3
- package/dist/store/gi/registration.d.ts.map +1 -1
- package/dist/store/gi/registration.js +3 -2
- package/dist/store/gi/registration.js.map +1 -1
- package/dist/store/gi/return-wrap.d.ts +2 -2
- package/dist/store/gi/return-wrap.d.ts.map +1 -1
- package/dist/store/gi/return-wrap.js +43 -22
- package/dist/store/gi/return-wrap.js.map +1 -1
- package/dist/store/gi/runtime-override.d.ts +2 -1
- package/dist/store/gi/runtime-override.d.ts.map +1 -1
- package/dist/store/gi/runtime-override.js +6 -3
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.d.ts +3 -2
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +113 -66
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +15 -0
- package/dist/store/gi/value-marshalable.d.ts.map +1 -0
- package/dist/store/gi/value-marshalable.js +66 -0
- package/dist/store/gi/value-marshalable.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +2 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +60 -30
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +5 -4
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +4 -2
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts +23 -0
- package/dist/store/jsx/element-components.d.ts.map +1 -0
- package/dist/store/jsx/element-components.js +86 -0
- package/dist/store/jsx/element-components.js.map +1 -0
- package/dist/store/jsx/element-prop-imports.d.ts +17 -0
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-imports.js +15 -0
- package/dist/store/jsx/element-prop-imports.js.map +1 -0
- package/dist/store/jsx/element-prop-types.d.ts +10 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-types.js +41 -0
- package/dist/store/jsx/element-prop-types.js.map +1 -0
- package/dist/store/jsx/gir-index.d.ts +16 -0
- package/dist/store/jsx/gir-index.d.ts.map +1 -0
- package/dist/store/jsx/gir-index.js +33 -0
- package/dist/store/jsx/gir-index.js.map +1 -0
- package/dist/store/jsx/intrinsic-elements.d.ts +26 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/jsx/intrinsic-elements.js +127 -0
- package/dist/store/jsx/intrinsic-elements.js.map +1 -0
- package/dist/store/{react → jsx}/jsx.d.ts +2 -4
- package/dist/store/jsx/jsx.d.ts.map +1 -0
- package/dist/store/{react → jsx}/jsx.js +110 -71
- package/dist/store/jsx/jsx.js.map +1 -0
- package/dist/store/jsx/metadata.d.ts +4 -0
- package/dist/store/jsx/metadata.d.ts.map +1 -0
- package/dist/store/{react → jsx}/metadata.js +148 -69
- package/dist/store/jsx/metadata.js.map +1 -0
- package/dist/store/jsx/omitted-props.d.ts +10 -0
- package/dist/store/jsx/omitted-props.d.ts.map +1 -0
- package/dist/store/jsx/omitted-props.js +22 -0
- package/dist/store/jsx/omitted-props.js.map +1 -0
- package/dist/store/jsx/pipeline.d.ts +23 -0
- package/dist/store/jsx/pipeline.d.ts.map +1 -0
- package/dist/store/{react → jsx}/pipeline.js +38 -15
- package/dist/store/jsx/pipeline.js.map +1 -0
- package/dist/store/{react → jsx}/props.d.ts +9 -12
- package/dist/store/jsx/props.d.ts.map +1 -0
- package/dist/store/jsx/props.js +153 -0
- package/dist/store/jsx/props.js.map +1 -0
- package/dist/store/jsx-store.d.ts +5 -3
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +4 -1
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +14 -12
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +9 -7
- package/dist/store/store-fs.js.map +1 -1
- package/dist/writer/context.d.ts +2 -1
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +12 -6
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/doc.d.ts +2 -1
- package/dist/writer/doc.d.ts.map +1 -1
- package/dist/writer/doc.js +13 -7
- package/dist/writer/doc.js.map +1 -1
- package/dist/writer/emit.d.ts +8 -7
- package/dist/writer/emit.d.ts.map +1 -1
- package/dist/writer/emit.js +13 -10
- package/dist/writer/emit.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts +2 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +29 -18
- package/dist/writer/gtk-doc.js.map +1 -1
- package/dist/writer/imports.d.ts +4 -2
- package/dist/writer/imports.d.ts.map +1 -1
- package/dist/writer/imports.js +35 -24
- package/dist/writer/imports.js.map +1 -1
- package/dist/writer/module.d.ts +3 -2
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +16 -9
- package/dist/writer/module.js.map +1 -1
- package/dist/xml.d.ts +4 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +10 -0
- package/dist/xml.js.map +1 -0
- package/overrides/cairo/context.ts.ejs +7 -7
- package/overrides/cairo/matrix.ts.ejs +2 -2
- package/overrides/cairo/recording-surface.ts.ejs +2 -2
- package/overrides/cairo/region.ts.ejs +1 -1
- package/overrides/cairo/scaled-font.ts.ejs +3 -3
- package/package.json +14 -9
- package/src/analysis/descriptor-render.ts +516 -168
- package/src/analysis/descriptor.ts +162 -125
- package/src/analysis/inheritance.ts +286 -98
- package/src/analysis/param-structure.ts +188 -57
- package/src/analysis/ts-type.ts +113 -34
- package/src/compile.ts +103 -76
- package/src/docs/api-reference.ts +337 -146
- package/src/docs/element-page.ts +137 -150
- package/src/docs/pipeline.ts +135 -73
- package/src/docs/render.ts +151 -87
- package/src/docs/symbol-page.ts +268 -123
- package/src/fingerprint.ts +138 -26
- package/src/gi.ts +35 -0
- package/src/gir/ancestry.ts +26 -14
- package/src/gir/callback.ts +10 -15
- package/src/gir/class.ts +20 -16
- package/src/gir/enum.ts +9 -7
- package/src/gir/field.ts +37 -8
- package/src/gir/function.ts +33 -9
- package/src/gir/gir-path.ts +36 -12
- package/src/gir/libraries.ts +59 -33
- package/src/gir/library.ts +200 -97
- package/src/gir/namespace.ts +42 -26
- package/src/gir/nullable-overrides.ts +5 -0
- package/src/gir/parameter.ts +80 -42
- package/src/gir/parse.ts +102 -47
- package/src/gir/primitives.ts +25 -23
- package/src/gir/property.ts +13 -11
- package/src/gir/record.ts +16 -14
- package/src/gir/size.ts +91 -58
- package/src/gir/type-id.ts +33 -18
- package/src/gir/type-ref.ts +62 -26
- package/src/gir/type.ts +10 -8
- package/src/index.ts +8 -0
- package/src/jsx.ts +75 -0
- package/src/khronos/args.ts +158 -89
- package/src/khronos/jsdoc.ts +67 -29
- package/src/khronos/model.ts +154 -53
- package/src/khronos/modules.ts +67 -27
- package/src/khronos/param-pair.ts +14 -0
- package/src/khronos/parse.ts +37 -17
- package/src/khronos/pipeline.ts +193 -90
- package/src/khronos/plan.ts +235 -86
- package/src/khronos/render.ts +208 -71
- package/src/khronos/select.ts +48 -18
- package/src/react/element-config.ts +97 -0
- package/src/runner.ts +100 -57
- package/src/store/compile-store.ts +32 -26
- package/src/store/gi/async.ts +48 -21
- package/src/store/gi/callables.ts +339 -136
- package/src/store/gi/callback.ts +13 -4
- package/src/store/gi/class.ts +186 -64
- package/src/store/gi/companion.ts +15 -6
- package/src/store/gi/constant.ts +42 -8
- package/src/store/gi/constructor-props.ts +42 -16
- package/src/store/gi/enum.ts +28 -13
- package/src/store/gi/function.ts +88 -24
- package/src/store/gi/gtype-binding.ts +31 -18
- package/src/store/gi/interface.ts +101 -36
- package/src/store/gi/item-comparators.ts +74 -26
- package/src/store/gi/method.ts +377 -159
- package/src/store/gi/param-marshal.ts +38 -15
- package/src/store/gi/pipeline.ts +72 -22
- package/src/store/gi/properties.ts +16 -5
- package/src/store/gi/property-accessor.ts +192 -84
- package/src/store/gi/record-constructor.ts +70 -33
- package/src/store/gi/record-field-accessor.ts +415 -167
- package/src/store/gi/record-layout.ts +130 -43
- package/src/store/gi/record.ts +29 -15
- package/src/store/gi/registration.ts +15 -9
- package/src/store/gi/return-wrap.ts +71 -23
- package/src/store/gi/runtime-override.ts +13 -3
- package/src/store/gi/signal.ts +244 -104
- package/src/store/gi/value-marshalable.ts +96 -0
- package/src/store/gi/vtable.ts +117 -41
- package/src/store/gi-store.ts +26 -13
- package/src/store/jsx/element-components.ts +152 -0
- package/src/store/jsx/element-prop-imports.ts +24 -0
- package/src/store/jsx/element-prop-types.ts +59 -0
- package/src/store/jsx/gir-index.ts +62 -0
- package/src/store/jsx/intrinsic-elements.ts +253 -0
- package/src/store/{react → jsx}/jsx.ts +213 -99
- package/src/store/jsx/metadata.ts +385 -0
- package/src/store/jsx/omitted-props.ts +32 -0
- package/src/store/jsx/pipeline.ts +148 -0
- package/src/store/jsx/props.ts +262 -0
- package/src/store/jsx-store.ts +15 -3
- package/src/store/store-fs.ts +36 -20
- package/src/writer/context.ts +25 -6
- package/src/writer/doc.ts +19 -5
- package/src/writer/emit.ts +20 -11
- package/src/writer/gtk-doc.ts +48 -21
- package/src/writer/imports.ts +63 -28
- package/src/writer/module.ts +35 -11
- package/src/xml.ts +12 -0
- package/dist/store/gi/class-struct-record.d.ts +0 -9
- package/dist/store/gi/class-struct-record.d.ts.map +0 -1
- package/dist/store/gi/class-struct-record.js +0 -34
- package/dist/store/gi/class-struct-record.js.map +0 -1
- package/dist/store/react/built-ins.d.ts +0 -9
- package/dist/store/react/built-ins.d.ts.map +0 -1
- package/dist/store/react/built-ins.js +0 -226
- package/dist/store/react/built-ins.js.map +0 -1
- package/dist/store/react/element-components.d.ts +0 -15
- package/dist/store/react/element-components.d.ts.map +0 -1
- package/dist/store/react/element-components.js +0 -92
- package/dist/store/react/element-components.js.map +0 -1
- package/dist/store/react/element-prop-types.d.ts +0 -19
- package/dist/store/react/element-prop-types.d.ts.map +0 -1
- package/dist/store/react/element-prop-types.js +0 -244
- package/dist/store/react/element-prop-types.js.map +0 -1
- package/dist/store/react/element-props.d.ts +0 -4
- package/dist/store/react/element-props.d.ts.map +0 -1
- package/dist/store/react/element-props.js +0 -178
- package/dist/store/react/element-props.js.map +0 -1
- package/dist/store/react/gir-index.d.ts +0 -25
- package/dist/store/react/gir-index.d.ts.map +0 -1
- package/dist/store/react/gir-index.js +0 -55
- package/dist/store/react/gir-index.js.map +0 -1
- package/dist/store/react/intrinsic-elements.d.ts +0 -26
- package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
- package/dist/store/react/intrinsic-elements.js +0 -107
- package/dist/store/react/intrinsic-elements.js.map +0 -1
- package/dist/store/react/jsx.d.ts.map +0 -1
- package/dist/store/react/jsx.js.map +0 -1
- package/dist/store/react/metadata.d.ts +0 -4
- package/dist/store/react/metadata.d.ts.map +0 -1
- package/dist/store/react/metadata.js.map +0 -1
- package/dist/store/react/pipeline.d.ts +0 -14
- package/dist/store/react/pipeline.d.ts.map +0 -1
- package/dist/store/react/pipeline.js.map +0 -1
- package/dist/store/react/props.d.ts.map +0 -1
- package/dist/store/react/props.js +0 -133
- package/dist/store/react/props.js.map +0 -1
- package/overrides/gtk/constants.ts.ejs +0 -3
- package/overrides/gtk/index.ts.ejs +0 -2
- package/src/store/gi/class-struct-record.ts +0 -40
- package/src/store/react/built-ins.ts +0 -260
- package/src/store/react/element-components.ts +0 -138
- package/src/store/react/element-prop-types.ts +0 -280
- package/src/store/react/element-props.ts +0 -204
- package/src/store/react/gir-index.ts +0 -85
- package/src/store/react/intrinsic-elements.ts +0 -161
- package/src/store/react/metadata.ts +0 -197
- package/src/store/react/pipeline.ts +0 -90
- package/src/store/react/props.ts +0 -197
package/dist/store/gi/signal.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { camelCase, sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { isCellInout, renderDescriptor, renderParamDescriptor, shouldOmitPrimaryReturn, } from "../../analysis/descriptor-render.js";
|
|
2
3
|
import { tCallback, tObject, tVoid } from "../../analysis/descriptor.js";
|
|
3
|
-
import { isCellInout, omitsPrimaryReturn, renderDescriptor, renderParamDescriptor, } from "../../analysis/descriptor-render.js";
|
|
4
4
|
import { collectInterfaceProperties, forEachAncestor, resolveImplementedInterface, resolvePrerequisiteReference, } from "../../analysis/inheritance.js";
|
|
5
5
|
import { renderHandlerParameters, renderHandlerResultType } from "../../analysis/param-structure.js";
|
|
6
6
|
import { renderTsType } from "../../analysis/ts-type.js";
|
|
@@ -10,12 +10,16 @@ import { indent, renderBlock, renderBracedOrEmpty } from "../../writer/emit.js";
|
|
|
10
10
|
import { parentCompanionRef } from "./companion.js";
|
|
11
11
|
import { isRecordCallerOut, isRecordInout } from "./param-marshal.js";
|
|
12
12
|
const SIGNAL_HANDLER_TYPE = "(...args: any[]) => any";
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const SIGNALS_SUFFIX = "Signals";
|
|
14
|
+
const SIGNAL_EMIT_SUFFIX = "SignalEmit";
|
|
15
|
+
const renderSignalMembers = (context, klass) => {
|
|
16
|
+
if (klass.glibGetType === undefined) {
|
|
15
17
|
return [];
|
|
18
|
+
}
|
|
16
19
|
const signals = collectClassSignals(context, klass);
|
|
17
|
-
if (signals.length === 0)
|
|
20
|
+
if (signals.length === 0) {
|
|
18
21
|
return [];
|
|
22
|
+
}
|
|
19
23
|
const isRootObject = context.namespace.name === "GObject" && klass.name === "Object";
|
|
20
24
|
context.addRuntimeImport("connectSignal");
|
|
21
25
|
context.addRuntimeImport("getSignalBaseName");
|
|
@@ -23,22 +27,22 @@ export const renderSignalMembers = (context, klass) => {
|
|
|
23
27
|
const connectCases = signals.map((signal) => renderConnectCase(context, signal));
|
|
24
28
|
const emitCases = signals.map((signal) => renderEmitCase(context, signal));
|
|
25
29
|
const connectDefault = isRootObject
|
|
26
|
-
?
|
|
30
|
+
? "default:\n throw new globalThis.Error(\"Unknown signal '\" + signal + \"'\");"
|
|
27
31
|
: "default:\n return super.connect(signal, handler, after);";
|
|
28
32
|
const emitDefault = isRootObject
|
|
29
|
-
?
|
|
33
|
+
? "default:\n throw new globalThis.Error(\"Unknown signal '\" + sigName + \"'\");"
|
|
30
34
|
: "default:\n return super.emit(sigName, ...args);";
|
|
31
|
-
const
|
|
32
|
-
const
|
|
35
|
+
const connectBody = indent([...connectCases, connectDefault].join("\n"), 1);
|
|
36
|
+
const connectSwitch = `switch (getSignalBaseName(signal)) {\n${connectBody}\n}`;
|
|
37
|
+
const emitBody = indent([...emitCases, emitDefault].join("\n"), 1);
|
|
38
|
+
const emitSwitch = `switch (getSignalBaseName(sigName)) {\n${emitBody}\n}`;
|
|
33
39
|
return [
|
|
34
40
|
renderBlock(`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number`, connectSwitch),
|
|
35
|
-
renderBlock(
|
|
41
|
+
renderBlock("emit(sigName: string, ...args: unknown[]): unknown", emitSwitch),
|
|
36
42
|
];
|
|
37
43
|
};
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
export const renderSignalDeclarations = (context, klass, className, parentlessExtendsObject) => {
|
|
41
|
-
const base = { context, klass, className, parentlessExtendsObject };
|
|
44
|
+
const renderSignalDeclarations = (context, klass, className, isParentlessObjectSubclass) => {
|
|
45
|
+
const base = { context, klass, className, parentlessExtendsObject: isParentlessObjectSubclass };
|
|
42
46
|
const declarations = [
|
|
43
47
|
renderSignalMap({ ...base, suffix: SIGNALS_SUFFIX, renderEntry: renderSignalHandlerType }),
|
|
44
48
|
renderSignalMap({ ...base, suffix: SIGNAL_EMIT_SUFFIX, renderEntry: renderSignalEmitEntry }),
|
|
@@ -65,25 +69,32 @@ const renderSignalMap = (spec) => {
|
|
|
65
69
|
};
|
|
66
70
|
const renderNotifyDetailEntries = (context, klass, suffix) => {
|
|
67
71
|
const notifyValue = `${gobjectObjectMapRef(context, suffix)}["notify"]`;
|
|
68
|
-
return collectNotifyDetails(context, klass).map((name) =>
|
|
72
|
+
return collectNotifyDetails(context, klass).map((name) => {
|
|
73
|
+
const detailedSignal = `notify::${name}`;
|
|
74
|
+
return `${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
|
|
75
|
+
});
|
|
69
76
|
};
|
|
70
|
-
const signalMapParentRefs = (context, klass,
|
|
77
|
+
const signalMapParentRefs = (context, klass, isParentlessObjectSubclass, suffix) => {
|
|
71
78
|
const parentRef = parentCompanionRef(context, klass, suffix);
|
|
72
|
-
if (parentRef !== undefined)
|
|
79
|
+
if (parentRef !== undefined) {
|
|
73
80
|
return [parentRef];
|
|
74
|
-
|
|
81
|
+
}
|
|
82
|
+
if (!isParentlessObjectSubclass) {
|
|
75
83
|
return [];
|
|
84
|
+
}
|
|
76
85
|
const prerequisiteRefs = klass.prerequisites
|
|
77
86
|
.map((name) => resolvePrerequisiteReference(context, name))
|
|
78
87
|
.filter((entry) => entry !== undefined)
|
|
79
88
|
.map((entry) => `${entry}${suffix}`);
|
|
80
|
-
if (prerequisiteRefs.length > 0)
|
|
89
|
+
if (prerequisiteRefs.length > 0) {
|
|
81
90
|
return prerequisiteRefs;
|
|
91
|
+
}
|
|
82
92
|
return [gobjectObjectMapRef(context, suffix)];
|
|
83
93
|
};
|
|
84
94
|
const gobjectObjectMapRef = (context, suffix) => {
|
|
85
|
-
if (context.namespace.name === "GObject")
|
|
95
|
+
if (context.namespace.name === "GObject") {
|
|
86
96
|
return `Object${suffix}`;
|
|
97
|
+
}
|
|
87
98
|
return `${context.addCrossNamespaceImport("GObject")}.Object${suffix}`;
|
|
88
99
|
};
|
|
89
100
|
const renderSignalConnectInterface = (className, isRootObject) => {
|
|
@@ -97,12 +108,13 @@ const renderSignalConnectInterface = (className, isRootObject) => {
|
|
|
97
108
|
"emit(sigName: string, ...args: unknown[]): unknown;",
|
|
98
109
|
];
|
|
99
110
|
if (!isRootObject) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
111
|
+
const chainable = (methods, trailing) => {
|
|
112
|
+
for (const method of methods) {
|
|
113
|
+
lines.push(`${method}<K extends keyof ${map}>(signal: K, handler: ${map}[K]${trailing}): this;`, `${method}(signal: string, handler: ${SIGNAL_HANDLER_TYPE}${trailing}): this;`);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
chainable(["on", "once", "addEventListener"], ", after?: boolean");
|
|
117
|
+
chainable(["off", "removeEventListener"], "");
|
|
106
118
|
}
|
|
107
119
|
return renderBracedOrEmpty(`export interface ${className}`, lines.join("\n"));
|
|
108
120
|
};
|
|
@@ -110,25 +122,53 @@ const renderSignalHandlerType = (context, signal) => {
|
|
|
110
122
|
const params = renderHandlerParameters(signal.parameters, (ref, nullable) => renderTsType(context, ref, nullable));
|
|
111
123
|
return `(${params.join(", ")}) => ${renderResultType(context, signal, false, true)}`;
|
|
112
124
|
};
|
|
113
|
-
const renderResultType = (context, signal,
|
|
125
|
+
const renderResultType = (context, signal, shouldIncludeCallerAllocated, isOptOut) => renderHandlerResultType({
|
|
114
126
|
library: context.library,
|
|
115
127
|
signal,
|
|
116
128
|
renderType: (ref, nullable) => renderTsType(context, ref, nullable),
|
|
117
|
-
includeCallerAllocated,
|
|
118
|
-
optOut,
|
|
129
|
+
includeCallerAllocated: shouldIncludeCallerAllocated,
|
|
130
|
+
optOut: isOptOut,
|
|
119
131
|
});
|
|
120
132
|
const renderSignalEmitEntry = (context, signal) => {
|
|
121
133
|
const args = renderHandlerParameters(signal.parameters, (ref, nullable) => renderTsType(context, ref, nullable), isCallerAllocatedOut);
|
|
122
134
|
const result = renderResultType(context, signal, true, false);
|
|
123
135
|
return `{ args: [${args.join(", ")}]; result: ${result} }`;
|
|
124
136
|
};
|
|
137
|
+
const nonVarargParameters = (signal) => signal.parameters.filter((parameter) => !parameter.isVarargs);
|
|
125
138
|
const renderConnectCase = (context, signal) => {
|
|
126
139
|
const callback = renderCallback(context, signal);
|
|
127
140
|
const body = `return connectSignal(this, signal, { callback: ${callback}, handler, after: after ?? false });`;
|
|
128
141
|
return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);
|
|
129
142
|
};
|
|
143
|
+
const renderEmitArgLiteral = (options) => {
|
|
144
|
+
const { context, parameter, descriptor, argIndex } = options;
|
|
145
|
+
if (isOutParameter(parameter)) {
|
|
146
|
+
return { literal: `{ type: ${descriptor}, direction: "out" }`, nextArgIndex: argIndex };
|
|
147
|
+
}
|
|
148
|
+
if (isCellInout(context.library, parameter)) {
|
|
149
|
+
return {
|
|
150
|
+
literal: `{ type: ${descriptor}, direction: "inout", value: args[${String(argIndex)}] }`,
|
|
151
|
+
nextArgIndex: argIndex + 1,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (isCallerAllocatedOut(parameter)) {
|
|
155
|
+
const value = renderCallerOutAllocation(context, parameter);
|
|
156
|
+
return {
|
|
157
|
+
literal: `{ type: ${descriptor}, direction: "out", callerAllocated: true, value: ${value} }`,
|
|
158
|
+
nextArgIndex: argIndex,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
if (isRecordInout(context, parameter)) {
|
|
162
|
+
return {
|
|
163
|
+
literal: `{ type: ${descriptor}, direction: "inout", callerAllocated: true, ` +
|
|
164
|
+
`value: args[${String(argIndex)}] }`,
|
|
165
|
+
nextArgIndex: argIndex + 1,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return { literal: `{ type: ${descriptor}, value: args[${String(argIndex)}] }`, nextArgIndex: argIndex + 1 };
|
|
169
|
+
};
|
|
130
170
|
const renderEmitCase = (context, signal) => {
|
|
131
|
-
const params = signal
|
|
171
|
+
const params = nonVarargParameters(signal);
|
|
132
172
|
if (params.some((parameter) => isCallerAllocatedOut(parameter) && !isRecordCallerOut(context, parameter))) {
|
|
133
173
|
return renderUnsupportedEmitCase(signal);
|
|
134
174
|
}
|
|
@@ -136,21 +176,11 @@ const renderEmitCase = (context, signal) => {
|
|
|
136
176
|
let argIndex = 0;
|
|
137
177
|
const argLiterals = params.map((parameter) => {
|
|
138
178
|
const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (isCellInout(context.library, parameter)) {
|
|
143
|
-
return `{ type: ${descriptor}, direction: "inout", value: args[${argIndex++}] }`;
|
|
144
|
-
}
|
|
145
|
-
if (isCallerAllocatedOut(parameter)) {
|
|
146
|
-
return `{ type: ${descriptor}, direction: "out", callerAllocated: true, value: ${renderCallerOutAllocation(context, parameter)} }`;
|
|
147
|
-
}
|
|
148
|
-
if (isRecordInout(context, parameter)) {
|
|
149
|
-
return `{ type: ${descriptor}, direction: "inout", callerAllocated: true, value: args[${argIndex++}] }`;
|
|
150
|
-
}
|
|
151
|
-
return `{ type: ${descriptor}, value: args[${argIndex++}] }`;
|
|
179
|
+
const rendered = renderEmitArgLiteral({ context, parameter, descriptor, argIndex });
|
|
180
|
+
argIndex = rendered.nextArgIndex;
|
|
181
|
+
return rendered.literal;
|
|
152
182
|
});
|
|
153
|
-
const isVoid =
|
|
183
|
+
const isVoid = shouldOmitPrimaryReturn(context.library, signal.returnValue);
|
|
154
184
|
const returnArg = isVoid
|
|
155
185
|
? ""
|
|
156
186
|
: `, ${renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership)}`;
|
|
@@ -162,52 +192,65 @@ const renderUnsupportedEmitCase = (signal) => {
|
|
|
162
192
|
return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, `throw new globalThis.Error(${sourceStringLiteral(message)});`);
|
|
163
193
|
};
|
|
164
194
|
const renderCallerOutAllocation = (context, parameter) => {
|
|
165
|
-
const name = parameter.type === undefined ? undefined : context.library.
|
|
195
|
+
const name = parameter.type === undefined ? undefined : context.library.nameFor(parameter.type);
|
|
166
196
|
if (name === undefined) {
|
|
167
197
|
throw new Error("renderCallerOutAllocation: expected a named caller-allocated out-parameter");
|
|
168
198
|
}
|
|
169
199
|
return `new ${context.qualify(name.namespaceName, name.typeName)}()`;
|
|
170
200
|
};
|
|
171
201
|
const renderCallback = (context, signal) => {
|
|
172
|
-
const params = signal
|
|
173
|
-
|
|
174
|
-
|
|
202
|
+
const params = nonVarargParameters(signal);
|
|
203
|
+
// The emitted argument list prepends the instance the signal was raised on, so every index a
|
|
204
|
+
// parameter descriptor carries (an array's `sizeParamIndex`, above all) sits one slot further
|
|
205
|
+
// right than the position GIR assigned it.
|
|
206
|
+
const callbackParamDescriptors = params.map((parameter) => renderParamDescriptor(context, parameter, parameter.type, { argIndexOffset: 1 }));
|
|
207
|
+
const isVoid = shouldOmitPrimaryReturn(context.library, signal.returnValue);
|
|
175
208
|
const returnDescriptor = isVoid
|
|
176
209
|
? tVoid
|
|
177
210
|
: renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership);
|
|
178
211
|
const callbackArgs = [tObject("borrowed"), ...callbackParamDescriptors, tVoid];
|
|
179
|
-
return tCallback(callbackArgs, returnDescriptor, `{ hasDestroy: true, userDataIndex: ${params.length + 1} }`);
|
|
212
|
+
return tCallback(callbackArgs, returnDescriptor, `{ hasDestroy: true, userDataIndex: ${String(params.length + 1)} }`);
|
|
213
|
+
};
|
|
214
|
+
const forEachInterfaceSignal = (context, klass, consider) => {
|
|
215
|
+
for (const implementName of klass.implements) {
|
|
216
|
+
const iface = resolveImplementedInterface(context, implementName);
|
|
217
|
+
if (iface === undefined) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
for (const signal of iface.klass.signals) {
|
|
221
|
+
consider(signal);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
180
224
|
};
|
|
181
225
|
const collectClassSignals = (context, klass) => {
|
|
182
226
|
const inheritedNames = collectInheritedSignalNames(context, klass);
|
|
183
227
|
const seen = new Set();
|
|
184
228
|
const result = [];
|
|
185
229
|
const consider = (signal) => {
|
|
186
|
-
const name =
|
|
187
|
-
if (inheritedNames.has(name) || seen.has(name))
|
|
230
|
+
const name = camelCase(signal.name);
|
|
231
|
+
if (!signal.introspectable || inheritedNames.has(name) || seen.has(name)) {
|
|
188
232
|
return;
|
|
233
|
+
}
|
|
189
234
|
seen.add(name);
|
|
190
235
|
result.push(signal);
|
|
191
236
|
};
|
|
192
|
-
for (const signal of klass.signals)
|
|
237
|
+
for (const signal of klass.signals) {
|
|
193
238
|
consider(signal);
|
|
194
|
-
for (const implementName of klass.implements) {
|
|
195
|
-
const iface = resolveImplementedInterface(context, implementName);
|
|
196
|
-
if (iface === undefined)
|
|
197
|
-
continue;
|
|
198
|
-
for (const signal of iface.klass.signals)
|
|
199
|
-
consider(signal);
|
|
200
239
|
}
|
|
240
|
+
forEachInterfaceSignal(context, klass, consider);
|
|
201
241
|
return result;
|
|
202
242
|
};
|
|
243
|
+
const addMemberNames = (target, source, select) => {
|
|
244
|
+
for (const member of select(source)) {
|
|
245
|
+
target.add(camelCase(member.name));
|
|
246
|
+
}
|
|
247
|
+
};
|
|
203
248
|
const collectInheritedMemberNames = (context, klass, select) => {
|
|
204
249
|
const names = new Set();
|
|
205
250
|
forEachAncestor(context, klass, (ancestor, interfaces) => {
|
|
206
|
-
|
|
207
|
-
names.add(toCamelCase(member.name));
|
|
251
|
+
addMemberNames(names, ancestor.klass, select);
|
|
208
252
|
for (const iface of interfaces) {
|
|
209
|
-
|
|
210
|
-
names.add(toCamelCase(member.name));
|
|
253
|
+
addMemberNames(names, iface.klass, select);
|
|
211
254
|
}
|
|
212
255
|
});
|
|
213
256
|
return names;
|
|
@@ -218,16 +261,20 @@ const collectNotifyDetails = (context, klass) => {
|
|
|
218
261
|
const seen = new Set();
|
|
219
262
|
const result = [];
|
|
220
263
|
const consider = (property) => {
|
|
221
|
-
const name =
|
|
222
|
-
if (inherited.has(name) || seen.has(name))
|
|
264
|
+
const name = camelCase(property.name);
|
|
265
|
+
if (inherited.has(name) || seen.has(name)) {
|
|
223
266
|
return;
|
|
267
|
+
}
|
|
224
268
|
seen.add(name);
|
|
225
269
|
result.push(property.name);
|
|
226
270
|
};
|
|
227
|
-
for (const property of klass.properties)
|
|
271
|
+
for (const property of klass.properties) {
|
|
228
272
|
consider(property);
|
|
229
|
-
|
|
273
|
+
}
|
|
274
|
+
for (const { property } of collectInterfaceProperties(context, klass)) {
|
|
230
275
|
consider(property);
|
|
276
|
+
}
|
|
231
277
|
return result;
|
|
232
278
|
};
|
|
279
|
+
export { renderSignalMembers, renderSignalDeclarations };
|
|
233
280
|
//# sourceMappingURL=signal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../src/store/gi/signal.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral, toCamelCase } from \"@gtkx/utils\";\nimport { tCallback, tObject, tVoid } from \"../../analysis/descriptor.js\";\nimport {\n isCellInout,\n omitsPrimaryReturn,\n renderDescriptor,\n renderParamDescriptor,\n} from \"../../analysis/descriptor-render.js\";\nimport {\n collectInterfaceProperties,\n forEachAncestor,\n resolveImplementedInterface,\n resolvePrerequisiteReference,\n} from \"../../analysis/inheritance.js\";\nimport { renderHandlerParameters, renderHandlerResultType } from \"../../analysis/param-structure.js\";\nimport { renderTsType } from \"../../analysis/ts-type.js\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirParameter, GirSignal } from \"../../gir/parameter.js\";\nimport { isCallerAllocatedOut, isOutParameter } from \"../../gir/parameter.js\";\nimport type { GirProperty } from \"../../gir/property.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { indent, renderBlock, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport { parentCompanionRef } from \"./companion.js\";\nimport { isRecordCallerOut, isRecordInout } from \"./param-marshal.js\";\n\nconst SIGNAL_HANDLER_TYPE = \"(...args: any[]) => any\";\n\nexport const renderSignalMembers = (context: ModuleContext, klass: GirClass): string[] => {\n if (klass.glibGetType === undefined) return [];\n const signals = collectClassSignals(context, klass);\n if (signals.length === 0) return [];\n const isRootObject = context.namespace.name === \"GObject\" && klass.name === \"Object\";\n\n context.addRuntimeImport(\"connectSignal\");\n context.addRuntimeImport(\"getSignalBaseName\");\n context.addRuntimeImport(\"t\");\n\n const connectCases = signals.map((signal) => renderConnectCase(context, signal));\n const emitCases = signals.map((signal) => renderEmitCase(context, signal));\n const connectDefault = isRootObject\n ? `default:\\n throw new globalThis.Error(\"Unknown signal '\" + signal + \"'\");`\n : \"default:\\n return super.connect(signal, handler, after);\";\n const emitDefault = isRootObject\n ? `default:\\n throw new globalThis.Error(\"Unknown signal '\" + sigName + \"'\");`\n : \"default:\\n return super.emit(sigName, ...args);\";\n\n const connectSwitch = `switch (getSignalBaseName(signal)) {\\n${indent([...connectCases, connectDefault].join(\"\\n\"), 1)}\\n}`;\n const emitSwitch = `switch (getSignalBaseName(sigName)) {\\n${indent([...emitCases, emitDefault].join(\"\\n\"), 1)}\\n}`;\n\n return [\n renderBlock(`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number`, connectSwitch),\n renderBlock(`emit(sigName: string, ...args: unknown[]): unknown`, emitSwitch),\n ];\n};\n\nconst SIGNALS_SUFFIX = \"Signals\";\nconst SIGNAL_EMIT_SUFFIX = \"SignalEmit\";\n\nexport const renderSignalDeclarations = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n parentlessExtendsObject: boolean,\n): string[] => {\n const base = { context, klass, className, parentlessExtendsObject };\n const declarations = [\n renderSignalMap({ ...base, suffix: SIGNALS_SUFFIX, renderEntry: renderSignalHandlerType }),\n renderSignalMap({ ...base, suffix: SIGNAL_EMIT_SUFFIX, renderEntry: renderSignalEmitEntry }),\n ];\n if (\n klass.glibGetType !== undefined &&\n (collectClassSignals(context, klass).length > 0 ||\n collectNotifyDetails(context, klass).length > 0 ||\n klass.implements.length > 0)\n ) {\n const isRootObject = context.namespace.name === \"GObject\" && klass.name === \"Object\";\n declarations.push(renderSignalConnectInterface(className, isRootObject));\n }\n return declarations;\n};\n\ntype SignalMapSpec = {\n context: ModuleContext;\n klass: GirClass;\n className: string;\n parentlessExtendsObject: boolean;\n suffix: string;\n renderEntry: (context: ModuleContext, signal: GirSignal) => string;\n};\n\nconst renderSignalMap = (spec: SignalMapSpec): string => {\n const { context, klass, className, parentlessExtendsObject, suffix, renderEntry } = spec;\n const extendsRefs = signalMapParentRefs(context, klass, parentlessExtendsObject, suffix);\n const extendsClause = extendsRefs.length === 0 ? \"\" : ` extends ${extendsRefs.join(\", \")}`;\n const signalEntries = collectClassSignals(context, klass).map((signal) => {\n const entry = `${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`;\n return suffix === SIGNALS_SUFFIX ? `${renderJsDoc(signal.doc)}${entry}` : entry;\n });\n const entries = [...signalEntries, ...renderNotifyDetailEntries(context, klass, suffix)];\n return renderBracedOrEmpty(`export interface ${className}${suffix}${extendsClause}`, entries.join(\"\\n\"));\n};\n\nconst renderNotifyDetailEntries = (context: ModuleContext, klass: GirClass, suffix: string): string[] => {\n const notifyValue = `${gobjectObjectMapRef(context, suffix)}[\"notify\"]`;\n return collectNotifyDetails(context, klass).map(\n (name) => `${sourceStringLiteral(`notify::${name}`)}: ${notifyValue};`,\n );\n};\n\nconst signalMapParentRefs = (\n context: ModuleContext,\n klass: GirClass,\n parentlessExtendsObject: boolean,\n suffix: string,\n): string[] => {\n const parentRef = parentCompanionRef(context, klass, suffix);\n if (parentRef !== undefined) return [parentRef];\n if (!parentlessExtendsObject) return [];\n const prerequisiteRefs = klass.prerequisites\n .map((name) => resolvePrerequisiteReference(context, name))\n .filter((entry): entry is string => entry !== undefined)\n .map((entry) => `${entry}${suffix}`);\n if (prerequisiteRefs.length > 0) return prerequisiteRefs;\n return [gobjectObjectMapRef(context, suffix)];\n};\n\nconst gobjectObjectMapRef = (context: ModuleContext, suffix: string): string => {\n if (context.namespace.name === \"GObject\") return `Object${suffix}`;\n return `${context.addCrossNamespaceImport(\"GObject\")}.Object${suffix}`;\n};\n\nconst renderSignalConnectInterface = (className: string, isRootObject: boolean): string => {\n const map = `${className}${SIGNALS_SUFFIX}`;\n const emitMap = `${className}${SIGNAL_EMIT_SUFFIX}`;\n const lines = [\n `__signals__?: ${map};`,\n `connect<K extends keyof ${map}>(signal: K, handler: ${map}[K], after?: boolean): number;`,\n `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number;`,\n `emit<K extends keyof ${emitMap}>(sigName: K, ...args: ${emitMap}[K][\"args\"]): ${emitMap}[K][\"result\"];`,\n \"emit(sigName: string, ...args: unknown[]): unknown;\",\n ];\n if (!isRootObject) {\n for (const method of [\"on\", \"once\", \"addEventListener\"]) {\n lines.push(\n `${method}<K extends keyof ${map}>(signal: K, handler: ${map}[K], after?: boolean): this;`,\n `${method}(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): this;`,\n );\n }\n for (const method of [\"off\", \"removeEventListener\"]) {\n lines.push(\n `${method}<K extends keyof ${map}>(signal: K, handler: ${map}[K]): this;`,\n `${method}(signal: string, handler: ${SIGNAL_HANDLER_TYPE}): this;`,\n );\n }\n }\n return renderBracedOrEmpty(`export interface ${className}`, lines.join(\"\\n\"));\n};\n\nconst renderSignalHandlerType = (context: ModuleContext, signal: GirSignal): string => {\n const params = renderHandlerParameters(signal.parameters, (ref, nullable) => renderTsType(context, ref, nullable));\n return `(${params.join(\", \")}) => ${renderResultType(context, signal, false, true)}`;\n};\n\nconst renderResultType = (\n context: ModuleContext,\n signal: GirSignal,\n includeCallerAllocated: boolean,\n optOut: boolean,\n): string =>\n renderHandlerResultType({\n library: context.library,\n signal,\n renderType: (ref, nullable) => renderTsType(context, ref, nullable),\n includeCallerAllocated,\n optOut,\n });\n\nconst renderSignalEmitEntry = (context: ModuleContext, signal: GirSignal): string => {\n const args = renderHandlerParameters(\n signal.parameters,\n (ref, nullable) => renderTsType(context, ref, nullable),\n isCallerAllocatedOut,\n );\n const result = renderResultType(context, signal, true, false);\n return `{ args: [${args.join(\", \")}]; result: ${result} }`;\n};\n\nconst renderConnectCase = (context: ModuleContext, signal: GirSignal): string => {\n const callback = renderCallback(context, signal);\n const body = `return connectSignal(this, signal, { callback: ${callback}, handler, after: after ?? false });`;\n return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);\n};\n\nconst renderEmitCase = (context: ModuleContext, signal: GirSignal): string => {\n const params = signal.parameters.filter((parameter) => !parameter.isVarargs);\n if (params.some((parameter) => isCallerAllocatedOut(parameter) && !isRecordCallerOut(context, parameter))) {\n return renderUnsupportedEmitCase(signal);\n }\n context.addRuntimeImport(\"emitSignal\");\n\n let argIndex = 0;\n const argLiterals = params.map((parameter) => {\n const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership);\n if (isOutParameter(parameter)) {\n return `{ type: ${descriptor}, direction: \"out\" }`;\n }\n if (isCellInout(context.library, parameter)) {\n return `{ type: ${descriptor}, direction: \"inout\", value: args[${argIndex++}] }`;\n }\n if (isCallerAllocatedOut(parameter)) {\n return `{ type: ${descriptor}, direction: \"out\", callerAllocated: true, value: ${renderCallerOutAllocation(context, parameter)} }`;\n }\n if (isRecordInout(context, parameter)) {\n return `{ type: ${descriptor}, direction: \"inout\", callerAllocated: true, value: args[${argIndex++}] }`;\n }\n return `{ type: ${descriptor}, value: args[${argIndex++}] }`;\n });\n\n const isVoid = omitsPrimaryReturn(context.library, signal.returnValue);\n const returnArg = isVoid\n ? \"\"\n : `, ${renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership)}`;\n const body = `return emitSignal(this, sigName, [${argLiterals.join(\", \")}]${returnArg});`;\n\n return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);\n};\n\nconst renderUnsupportedEmitCase = (signal: GirSignal): string => {\n const message = `emit() cannot allocate the caller-allocated out-parameter of '${signal.name}'`;\n return renderBlock(\n `case ${sourceStringLiteral(signal.name)}:`,\n `throw new globalThis.Error(${sourceStringLiteral(message)});`,\n );\n};\n\nconst renderCallerOutAllocation = (context: ModuleContext, parameter: GirParameter): string => {\n const name = parameter.type === undefined ? undefined : context.library.nameOf(parameter.type);\n if (name === undefined) {\n throw new Error(\"renderCallerOutAllocation: expected a named caller-allocated out-parameter\");\n }\n return `new ${context.qualify(name.namespaceName, name.typeName)}()`;\n};\n\nconst renderCallback = (context: ModuleContext, signal: GirSignal): string => {\n const params = signal.parameters.filter((parameter) => !parameter.isVarargs);\n const callbackParamDescriptors = params.map((parameter) =>\n renderParamDescriptor(context, parameter, parameter.type),\n );\n const isVoid = omitsPrimaryReturn(context.library, signal.returnValue);\n const returnDescriptor = isVoid\n ? tVoid\n : renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership);\n const callbackArgs = [tObject(\"borrowed\"), ...callbackParamDescriptors, tVoid];\n return tCallback(callbackArgs, returnDescriptor, `{ hasDestroy: true, userDataIndex: ${params.length + 1} }`);\n};\n\nconst collectClassSignals = (context: ModuleContext, klass: GirClass): GirSignal[] => {\n const inheritedNames = collectInheritedSignalNames(context, klass);\n const seen = new Set<string>();\n const result: GirSignal[] = [];\n const consider = (signal: GirSignal): void => {\n const name = toCamelCase(signal.name);\n if (inheritedNames.has(name) || seen.has(name)) return;\n seen.add(name);\n result.push(signal);\n };\n for (const signal of klass.signals) consider(signal);\n for (const implementName of klass.implements) {\n const iface = resolveImplementedInterface(context, implementName);\n if (iface === undefined) continue;\n for (const signal of iface.klass.signals) consider(signal);\n }\n return result;\n};\n\ntype NamedMember = { name: string };\n\nconst collectInheritedMemberNames = (\n context: ModuleContext,\n klass: GirClass,\n select: (source: GirClass) => NamedMember[],\n): Set<string> => {\n const names = new Set<string>();\n forEachAncestor(context, klass, (ancestor, interfaces) => {\n for (const member of select(ancestor.klass)) names.add(toCamelCase(member.name));\n for (const iface of interfaces) {\n for (const member of select(iface.klass)) names.add(toCamelCase(member.name));\n }\n });\n return names;\n};\n\nconst collectInheritedSignalNames = (context: ModuleContext, klass: GirClass): Set<string> =>\n collectInheritedMemberNames(context, klass, (source) => source.signals);\n\nconst collectNotifyDetails = (context: ModuleContext, klass: GirClass): string[] => {\n const inherited = collectInheritedMemberNames(context, klass, (source) => source.properties);\n const seen = new Set<string>();\n const result: string[] = [];\n const consider = (property: GirProperty): void => {\n const name = toCamelCase(property.name);\n if (inherited.has(name) || seen.has(name)) return;\n seen.add(name);\n result.push(property.name);\n };\n for (const property of klass.properties) consider(property);\n for (const { property } of collectInterfaceProperties(context, klass)) consider(property);\n return result;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../src/store/gi/signal.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase, sourceStringLiteral } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirCallable, GirParameter } from \"../../gir/parameter.js\";\nimport type { GirProperty } from \"../../gir/property.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport {\n isCellInout,\n renderDescriptor,\n renderParamDescriptor,\n shouldOmitPrimaryReturn,\n} from \"../../analysis/descriptor-render.js\";\nimport { tCallback, tObject, tVoid } from \"../../analysis/descriptor.js\";\nimport {\n collectInterfaceProperties,\n forEachAncestor,\n resolveImplementedInterface,\n resolvePrerequisiteReference,\n} from \"../../analysis/inheritance.js\";\nimport { renderHandlerParameters, renderHandlerResultType } from \"../../analysis/param-structure.js\";\nimport { renderTsType } from \"../../analysis/ts-type.js\";\nimport { isCallerAllocatedOut, isOutParameter } from \"../../gir/parameter.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { indent, renderBlock, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport { parentCompanionRef } from \"./companion.js\";\nimport { isRecordCallerOut, isRecordInout } from \"./param-marshal.js\";\n\ntype SignalMapSpec = {\n context: ModuleContext;\n klass: GirClass;\n className: string;\n parentlessExtendsObject: boolean;\n suffix: string;\n renderEntry: (context: ModuleContext, signal: GirCallable) => string;\n};\n\ntype EmitArgOptions = {\n context: ModuleContext;\n parameter: GirParameter;\n descriptor: string;\n argIndex: number;\n};\n\ntype NamedMember = { name: string };\n\nconst SIGNAL_HANDLER_TYPE = \"(...args: any[]) => any\";\nconst SIGNALS_SUFFIX = \"Signals\";\nconst SIGNAL_EMIT_SUFFIX = \"SignalEmit\";\n\nconst renderSignalMembers = (context: ModuleContext, klass: GirClass): string[] => {\n if (klass.glibGetType === undefined) {\n return [];\n }\n\n const signals = collectClassSignals(context, klass);\n\n if (signals.length === 0) {\n return [];\n }\n\n const isRootObject = context.namespace.name === \"GObject\" && klass.name === \"Object\";\n context.addRuntimeImport(\"connectSignal\");\n context.addRuntimeImport(\"getSignalBaseName\");\n context.addRuntimeImport(\"t\");\n const connectCases = signals.map((signal) => renderConnectCase(context, signal));\n const emitCases = signals.map((signal) => renderEmitCase(context, signal));\n\n const connectDefault = isRootObject\n ? \"default:\\n throw new globalThis.Error(\\\"Unknown signal '\\\" + signal + \\\"'\\\");\"\n : \"default:\\n return super.connect(signal, handler, after);\";\n\n const emitDefault = isRootObject\n ? \"default:\\n throw new globalThis.Error(\\\"Unknown signal '\\\" + sigName + \\\"'\\\");\"\n : \"default:\\n return super.emit(sigName, ...args);\";\n\n const connectBody = indent([...connectCases, connectDefault].join(\"\\n\"), 1);\n const connectSwitch = `switch (getSignalBaseName(signal)) {\\n${connectBody}\\n}`;\n const emitBody = indent([...emitCases, emitDefault].join(\"\\n\"), 1);\n const emitSwitch = `switch (getSignalBaseName(sigName)) {\\n${emitBody}\\n}`;\n\n return [\n renderBlock(`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number`, connectSwitch),\n renderBlock(\"emit(sigName: string, ...args: unknown[]): unknown\", emitSwitch),\n ];\n};\n\nconst renderSignalDeclarations = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n isParentlessObjectSubclass: boolean,\n): string[] => {\n const base = { context, klass, className, parentlessExtendsObject: isParentlessObjectSubclass };\n\n const declarations = [\n renderSignalMap({ ...base, suffix: SIGNALS_SUFFIX, renderEntry: renderSignalHandlerType }),\n renderSignalMap({ ...base, suffix: SIGNAL_EMIT_SUFFIX, renderEntry: renderSignalEmitEntry }),\n ];\n\n if (\n klass.glibGetType !== undefined &&\n (collectClassSignals(context, klass).length > 0 ||\n collectNotifyDetails(context, klass).length > 0 ||\n klass.implements.length > 0)\n ) {\n const isRootObject = context.namespace.name === \"GObject\" && klass.name === \"Object\";\n declarations.push(renderSignalConnectInterface(className, isRootObject));\n }\n\n return declarations;\n};\n\nconst renderSignalMap = (spec: SignalMapSpec): string => {\n const { context, klass, className, parentlessExtendsObject, suffix, renderEntry } = spec;\n const extendsRefs = signalMapParentRefs(context, klass, parentlessExtendsObject, suffix);\n const extendsClause = extendsRefs.length === 0 ? \"\" : ` extends ${extendsRefs.join(\", \")}`;\n\n const signalEntries = collectClassSignals(context, klass).map((signal) => {\n const entry = `${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`;\n\n return suffix === SIGNALS_SUFFIX ? `${renderJsDoc(signal.doc)}${entry}` : entry;\n });\n\n const entries = [...signalEntries, ...renderNotifyDetailEntries(context, klass, suffix)];\n\n return renderBracedOrEmpty(`export interface ${className}${suffix}${extendsClause}`, entries.join(\"\\n\"));\n};\n\nconst renderNotifyDetailEntries = (context: ModuleContext, klass: GirClass, suffix: string): string[] => {\n const notifyValue = `${gobjectObjectMapRef(context, suffix)}[\"notify\"]`;\n\n return collectNotifyDetails(context, klass).map((name) => {\n const detailedSignal = `notify::${name}`;\n\n return `${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;\n });\n};\n\nconst signalMapParentRefs = (\n context: ModuleContext,\n klass: GirClass,\n isParentlessObjectSubclass: boolean,\n suffix: string,\n): string[] => {\n const parentRef = parentCompanionRef(context, klass, suffix);\n\n if (parentRef !== undefined) {\n return [parentRef];\n }\n\n if (!isParentlessObjectSubclass) {\n return [];\n }\n\n const prerequisiteRefs = klass.prerequisites\n .map((name) => resolvePrerequisiteReference(context, name))\n .filter((entry): entry is string => entry !== undefined)\n .map((entry) => `${entry}${suffix}`);\n\n if (prerequisiteRefs.length > 0) {\n return prerequisiteRefs;\n }\n\n return [gobjectObjectMapRef(context, suffix)];\n};\n\nconst gobjectObjectMapRef = (context: ModuleContext, suffix: string): string => {\n if (context.namespace.name === \"GObject\") {\n return `Object${suffix}`;\n }\n\n return `${context.addCrossNamespaceImport(\"GObject\")}.Object${suffix}`;\n};\n\nconst renderSignalConnectInterface = (className: string, isRootObject: boolean): string => {\n const map = `${className}${SIGNALS_SUFFIX}`;\n const emitMap = `${className}${SIGNAL_EMIT_SUFFIX}`;\n\n const lines = [\n `__signals__?: ${map};`,\n `connect<K extends keyof ${map}>(signal: K, handler: ${map}[K], after?: boolean): number;`,\n `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number;`,\n `emit<K extends keyof ${emitMap}>(sigName: K, ...args: ${emitMap}[K][\"args\"]): ${emitMap}[K][\"result\"];`,\n \"emit(sigName: string, ...args: unknown[]): unknown;\",\n ];\n\n if (!isRootObject) {\n const chainable = (methods: string[], trailing: string): void => {\n for (const method of methods) {\n lines.push(\n `${method}<K extends keyof ${map}>(signal: K, handler: ${map}[K]${trailing}): this;`,\n `${method}(signal: string, handler: ${SIGNAL_HANDLER_TYPE}${trailing}): this;`,\n );\n }\n };\n\n chainable([\"on\", \"once\", \"addEventListener\"], \", after?: boolean\");\n chainable([\"off\", \"removeEventListener\"], \"\");\n }\n\n return renderBracedOrEmpty(`export interface ${className}`, lines.join(\"\\n\"));\n};\n\nconst renderSignalHandlerType = (context: ModuleContext, signal: GirCallable): string => {\n const params = renderHandlerParameters(signal.parameters, (ref, nullable) => renderTsType(context, ref, nullable));\n\n return `(${params.join(\", \")}) => ${renderResultType(context, signal, false, true)}`;\n};\n\nconst renderResultType = (\n context: ModuleContext,\n signal: GirCallable,\n shouldIncludeCallerAllocated: boolean,\n isOptOut: boolean,\n): string =>\n renderHandlerResultType({\n library: context.library,\n signal,\n renderType: (ref, nullable) => renderTsType(context, ref, nullable),\n includeCallerAllocated: shouldIncludeCallerAllocated,\n optOut: isOptOut,\n });\n\nconst renderSignalEmitEntry = (context: ModuleContext, signal: GirCallable): string => {\n const args = renderHandlerParameters(\n signal.parameters,\n (ref, nullable) => renderTsType(context, ref, nullable),\n isCallerAllocatedOut,\n );\n\n const result = renderResultType(context, signal, true, false);\n\n return `{ args: [${args.join(\", \")}]; result: ${result} }`;\n};\n\nconst nonVarargParameters = (signal: GirCallable): GirParameter[] =>\n signal.parameters.filter((parameter) => !parameter.isVarargs);\n\nconst renderConnectCase = (context: ModuleContext, signal: GirCallable): string => {\n const callback = renderCallback(context, signal);\n const body = `return connectSignal(this, signal, { callback: ${callback}, handler, after: after ?? false });`;\n\n return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);\n};\n\nconst renderEmitArgLiteral = (options: EmitArgOptions): { literal: string; nextArgIndex: number } => {\n const { context, parameter, descriptor, argIndex } = options;\n\n if (isOutParameter(parameter)) {\n return { literal: `{ type: ${descriptor}, direction: \"out\" }`, nextArgIndex: argIndex };\n }\n\n if (isCellInout(context.library, parameter)) {\n return {\n literal: `{ type: ${descriptor}, direction: \"inout\", value: args[${String(argIndex)}] }`,\n nextArgIndex: argIndex + 1,\n };\n }\n\n if (isCallerAllocatedOut(parameter)) {\n const value = renderCallerOutAllocation(context, parameter);\n\n return {\n literal: `{ type: ${descriptor}, direction: \"out\", callerAllocated: true, value: ${value} }`,\n nextArgIndex: argIndex,\n };\n }\n\n if (isRecordInout(context, parameter)) {\n return {\n literal:\n `{ type: ${descriptor}, direction: \"inout\", callerAllocated: true, ` +\n `value: args[${String(argIndex)}] }`,\n nextArgIndex: argIndex + 1,\n };\n }\n\n return { literal: `{ type: ${descriptor}, value: args[${String(argIndex)}] }`, nextArgIndex: argIndex + 1 };\n};\n\nconst renderEmitCase = (context: ModuleContext, signal: GirCallable): string => {\n const params = nonVarargParameters(signal);\n\n if (params.some((parameter) => isCallerAllocatedOut(parameter) && !isRecordCallerOut(context, parameter))) {\n return renderUnsupportedEmitCase(signal);\n }\n\n context.addRuntimeImport(\"emitSignal\");\n let argIndex = 0;\n\n const argLiterals = params.map((parameter) => {\n const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership);\n const rendered = renderEmitArgLiteral({ context, parameter, descriptor, argIndex });\n argIndex = rendered.nextArgIndex;\n\n return rendered.literal;\n });\n\n const isVoid = shouldOmitPrimaryReturn(context.library, signal.returnValue);\n\n const returnArg = isVoid\n ? \"\"\n : `, ${renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership)}`;\n\n const body = `return emitSignal(this, sigName, [${argLiterals.join(\", \")}]${returnArg});`;\n\n return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);\n};\n\nconst renderUnsupportedEmitCase = (signal: GirCallable): string => {\n const message = `emit() cannot allocate the caller-allocated out-parameter of '${signal.name}'`;\n\n return renderBlock(\n `case ${sourceStringLiteral(signal.name)}:`,\n `throw new globalThis.Error(${sourceStringLiteral(message)});`,\n );\n};\n\nconst renderCallerOutAllocation = (context: ModuleContext, parameter: GirParameter): string => {\n const name = parameter.type === undefined ? undefined : context.library.nameFor(parameter.type);\n\n if (name === undefined) {\n throw new Error(\"renderCallerOutAllocation: expected a named caller-allocated out-parameter\");\n }\n\n return `new ${context.qualify(name.namespaceName, name.typeName)}()`;\n};\n\nconst renderCallback = (context: ModuleContext, signal: GirCallable): string => {\n const params = nonVarargParameters(signal);\n\n // The emitted argument list prepends the instance the signal was raised on, so every index a\n // parameter descriptor carries (an array's `sizeParamIndex`, above all) sits one slot further\n // right than the position GIR assigned it.\n const callbackParamDescriptors = params.map((parameter) =>\n renderParamDescriptor(context, parameter, parameter.type, { argIndexOffset: 1 }),\n );\n\n const isVoid = shouldOmitPrimaryReturn(context.library, signal.returnValue);\n\n const returnDescriptor = isVoid\n ? tVoid\n : renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership);\n\n const callbackArgs = [tObject(\"borrowed\"), ...callbackParamDescriptors, tVoid];\n\n return tCallback(\n callbackArgs,\n returnDescriptor,\n `{ hasDestroy: true, userDataIndex: ${String(params.length + 1)} }`,\n );\n};\n\nconst forEachInterfaceSignal = (\n context: ModuleContext,\n klass: GirClass,\n consider: (signal: GirCallable) => void,\n): void => {\n for (const implementName of klass.implements) {\n const iface = resolveImplementedInterface(context, implementName);\n\n if (iface === undefined) {\n continue;\n }\n\n for (const signal of iface.klass.signals) {\n consider(signal);\n }\n }\n};\n\nconst collectClassSignals = (context: ModuleContext, klass: GirClass): GirCallable[] => {\n const inheritedNames = collectInheritedSignalNames(context, klass);\n const seen: Set<string> = new Set();\n const result: GirCallable[] = [];\n\n const consider = (signal: GirCallable): void => {\n const name = camelCase(signal.name);\n\n if (!signal.introspectable || inheritedNames.has(name) || seen.has(name)) {\n return;\n }\n\n seen.add(name);\n result.push(signal);\n };\n\n for (const signal of klass.signals) {\n consider(signal);\n }\n\n forEachInterfaceSignal(context, klass, consider);\n\n return result;\n};\n\nconst addMemberNames = (target: Set<string>, source: GirClass, select: (source: GirClass) => NamedMember[]): void => {\n for (const member of select(source)) {\n target.add(camelCase(member.name));\n }\n};\n\nconst collectInheritedMemberNames = (\n context: ModuleContext,\n klass: GirClass,\n select: (source: GirClass) => NamedMember[],\n): Set<string> => {\n const names: Set<string> = new Set();\n\n forEachAncestor(context, klass, (ancestor, interfaces) => {\n addMemberNames(names, ancestor.klass, select);\n\n for (const iface of interfaces) {\n addMemberNames(names, iface.klass, select);\n }\n });\n\n return names;\n};\n\nconst collectInheritedSignalNames = (context: ModuleContext, klass: GirClass): Set<string> =>\n collectInheritedMemberNames(context, klass, (source) => source.signals);\n\nconst collectNotifyDetails = (context: ModuleContext, klass: GirClass): string[] => {\n const inherited = collectInheritedMemberNames(context, klass, (source) => source.properties);\n const seen: Set<string> = new Set();\n const result: string[] = [];\n\n const consider = (property: GirProperty): void => {\n const name = camelCase(property.name);\n\n if (inherited.has(name) || seen.has(name)) {\n return;\n }\n\n seen.add(name);\n result.push(property.name);\n };\n\n for (const property of klass.properties) {\n consider(property);\n }\n\n for (const { property } of collectInterfaceProperties(context, klass)) {\n consider(property);\n }\n\n return result;\n};\n\nexport { renderSignalMembers, renderSignalDeclarations };\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GirRecord } from "../../gir/record.js";
|
|
2
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
+
declare const hasOwnCopySemantics: (record: GirRecord) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Whether a record can be copied by value. A plain struct is duplicated with a byte-wise `g_memdup2`,
|
|
6
|
+
* which shallow-copies whatever the bytes hold, so only a record whose every field is transitively a
|
|
7
|
+
* scalar can be owned, allocated or written into an inline slot. A pointer, a string, a function
|
|
8
|
+
* pointer or an opaque record makes it borrow-only. Records that carry their own copy/free pair are
|
|
9
|
+
* duplicated through that instead and never reach the byte-wise path.
|
|
10
|
+
*/
|
|
11
|
+
declare const isValueMarshalable: (context: ModuleContext, namespaceName: string, record: GirRecord) => boolean;
|
|
12
|
+
/** Whether a record can be allocated and populated from JavaScript. */
|
|
13
|
+
declare const isConstructibleRecord: (context: ModuleContext, namespaceName: string, record: GirRecord) => boolean;
|
|
14
|
+
export { hasOwnCopySemantics, isConstructibleRecord, isValueMarshalable };
|
|
15
|
+
//# sourceMappingURL=value-marshalable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-marshalable.d.ts","sourceRoot":"","sources":["../../../src/store/gi/value-marshalable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAS7D,QAAA,MAAM,mBAAmB,GAAI,QAAQ,SAAS,KAAG,OAEqE,CAAC;AAiEvH;;;;;;GAMG;AACH,QAAA,MAAM,kBAAkB,GAAI,SAAS,aAAa,EAAE,eAAe,MAAM,EAAE,QAAQ,SAAS,KAAG,OACb,CAAC;AAEnF,uEAAuE;AACvE,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,eAAe,MAAM,EAAE,QAAQ,SAAS,KAAG,OACb,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** Primitive categories that are a pointer at the C level, so copying the bytes aliases the pointee. */
|
|
2
|
+
const POINTER_CATEGORIES = new Set(["string", "pointer"]);
|
|
3
|
+
const recordKey = (namespaceName, record) => `${namespaceName}.${record.name}`;
|
|
4
|
+
const hasOwnCopySemantics = (record) => record.glibGetType !== undefined ||
|
|
5
|
+
((record.glibRefFunc ?? record.copyFunc) !== undefined && (record.glibUnrefFunc ?? record.freeFunc) !== undefined);
|
|
6
|
+
const isValueSafeArray = (scope, type) => type.fixedSize !== undefined && isValueSafeRef(scope, type.element, type.elementCType);
|
|
7
|
+
const isValueSafeAlias = (scope, type) => isValueSafeRef(scope, type.value.target, type.value.targetCType);
|
|
8
|
+
function isValueSafeType(scope, type) {
|
|
9
|
+
switch (type.kind) {
|
|
10
|
+
case "primitive": {
|
|
11
|
+
return !POINTER_CATEGORIES.has(type.category);
|
|
12
|
+
}
|
|
13
|
+
case "enum": {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
case "record": {
|
|
17
|
+
return isValueSafeRecord(scope, type.namespace.name, type.value);
|
|
18
|
+
}
|
|
19
|
+
case "carray": {
|
|
20
|
+
return isValueSafeArray(scope, type);
|
|
21
|
+
}
|
|
22
|
+
case "alias": {
|
|
23
|
+
return isValueSafeAlias(scope, type);
|
|
24
|
+
}
|
|
25
|
+
case "callback":
|
|
26
|
+
case "class":
|
|
27
|
+
case "hashtable":
|
|
28
|
+
case "interface":
|
|
29
|
+
case "list":
|
|
30
|
+
case "varargs": {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function isValueSafeRef(scope, ref, cType) {
|
|
36
|
+
if (ref === undefined || cType?.endsWith("*") === true) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const type = scope.context.library.typeFor(ref);
|
|
40
|
+
return type === undefined ? false : isValueSafeType(scope, type);
|
|
41
|
+
}
|
|
42
|
+
const isValueSafeField = (scope, field) => field.inlineMembers === undefined
|
|
43
|
+
? isValueSafeRef(scope, field.type, field.cType)
|
|
44
|
+
: field.inlineMembers.every((member) => isValueSafeField(scope, member));
|
|
45
|
+
function isValueSafeRecord(scope, namespaceName, record) {
|
|
46
|
+
const key = recordKey(namespaceName, record);
|
|
47
|
+
if (scope.seen.has(key) || record.fields.length === 0) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
scope.seen.add(key);
|
|
51
|
+
const isSafe = record.fields.every((field) => isValueSafeField(scope, field));
|
|
52
|
+
scope.seen.delete(key);
|
|
53
|
+
return isSafe;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Whether a record can be copied by value. A plain struct is duplicated with a byte-wise `g_memdup2`,
|
|
57
|
+
* which shallow-copies whatever the bytes hold, so only a record whose every field is transitively a
|
|
58
|
+
* scalar can be owned, allocated or written into an inline slot. A pointer, a string, a function
|
|
59
|
+
* pointer or an opaque record makes it borrow-only. Records that carry their own copy/free pair are
|
|
60
|
+
* duplicated through that instead and never reach the byte-wise path.
|
|
61
|
+
*/
|
|
62
|
+
const isValueMarshalable = (context, namespaceName, record) => isValueSafeRecord({ context, seen: new Set() }, namespaceName, record);
|
|
63
|
+
/** Whether a record can be allocated and populated from JavaScript. */
|
|
64
|
+
const isConstructibleRecord = (context, namespaceName, record) => hasOwnCopySemantics(record) || isValueMarshalable(context, namespaceName, record);
|
|
65
|
+
export { hasOwnCopySemantics, isConstructibleRecord, isValueMarshalable };
|
|
66
|
+
//# sourceMappingURL=value-marshalable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-marshalable.js","sourceRoot":"","sources":["../../../src/store/gi/value-marshalable.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GirField } from \"../../gir/field.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { GirRecord } from \"../../gir/record.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\n\ntype Scope = { context: ModuleContext; seen: Set<string> };\n\n/** Primitive categories that are a pointer at the C level, so copying the bytes aliases the pointee. */\nconst POINTER_CATEGORIES: Set<PrimitiveCategory> = new Set<PrimitiveCategory>([\"string\", \"pointer\"]);\n\nconst recordKey = (namespaceName: string, record: GirRecord): string => `${namespaceName}.${record.name}`;\n\nconst hasOwnCopySemantics = (record: GirRecord): boolean =>\n record.glibGetType !== undefined ||\n ((record.glibRefFunc ?? record.copyFunc) !== undefined && (record.glibUnrefFunc ?? record.freeFunc) !== undefined);\n\nconst isValueSafeArray = (scope: Scope, type: Extract<GirType, { kind: \"carray\" }>): boolean =>\n type.fixedSize !== undefined && isValueSafeRef(scope, type.element, type.elementCType);\n\nconst isValueSafeAlias = (scope: Scope, type: Extract<GirType, { kind: \"alias\" }>): boolean =>\n isValueSafeRef(scope, type.value.target, type.value.targetCType);\n\nfunction isValueSafeType(scope: Scope, type: GirType): boolean {\n switch (type.kind) {\n case \"primitive\": {\n return !POINTER_CATEGORIES.has(type.category);\n }\n case \"enum\": {\n return true;\n }\n case \"record\": {\n return isValueSafeRecord(scope, type.namespace.name, type.value);\n }\n case \"carray\": {\n return isValueSafeArray(scope, type);\n }\n case \"alias\": {\n return isValueSafeAlias(scope, type);\n }\n case \"callback\":\n case \"class\":\n case \"hashtable\":\n case \"interface\":\n case \"list\":\n case \"varargs\": {\n return false;\n }\n }\n}\n\nfunction isValueSafeRef(scope: Scope, ref: TypeId | undefined, cType: string | undefined): boolean {\n if (ref === undefined || cType?.endsWith(\"*\") === true) {\n return false;\n }\n\n const type = scope.context.library.typeFor(ref);\n\n return type === undefined ? false : isValueSafeType(scope, type);\n}\n\nconst isValueSafeField = (scope: Scope, field: GirField): boolean =>\n field.inlineMembers === undefined\n ? isValueSafeRef(scope, field.type, field.cType)\n : field.inlineMembers.every((member) => isValueSafeField(scope, member));\n\nfunction isValueSafeRecord(scope: Scope, namespaceName: string, record: GirRecord): boolean {\n const key = recordKey(namespaceName, record);\n\n if (scope.seen.has(key) || record.fields.length === 0) {\n return false;\n }\n\n scope.seen.add(key);\n const isSafe = record.fields.every((field) => isValueSafeField(scope, field));\n scope.seen.delete(key);\n\n return isSafe;\n}\n\n/**\n * Whether a record can be copied by value. A plain struct is duplicated with a byte-wise `g_memdup2`,\n * which shallow-copies whatever the bytes hold, so only a record whose every field is transitively a\n * scalar can be owned, allocated or written into an inline slot. A pointer, a string, a function\n * pointer or an opaque record makes it borrow-only. Records that carry their own copy/free pair are\n * duplicated through that instead and never reach the byte-wise path.\n */\nconst isValueMarshalable = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>\n isValueSafeRecord({ context, seen: new Set<string>() }, namespaceName, record);\n\n/** Whether a record can be allocated and populated from JavaScript. */\nconst isConstructibleRecord = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>\n hasOwnCopySemantics(record) || isValueMarshalable(context, namespaceName, record);\n\nexport { hasOwnCopySemantics, isConstructibleRecord, isValueMarshalable };\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GirClass } from "../../gir/class.js";
|
|
2
2
|
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
-
|
|
3
|
+
declare const renderVfuncMetadata: (context: ModuleContext, klass: GirClass) => string | undefined;
|
|
4
|
+
export { renderVfuncMetadata };
|
|
4
5
|
//# sourceMappingURL=vtable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vtable.d.ts","sourceRoot":"","sources":["../../../src/store/gi/vtable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vtable.d.ts","sourceRoot":"","sources":["../../../src/store/gi/vtable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAsB7D,QAAA,MAAM,mBAAmB,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,MAAM,GAAG,SAc/E,CAAC;AAqIF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|