@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/src/gir/libraries.ts
CHANGED
|
@@ -1,64 +1,87 @@
|
|
|
1
|
-
import { readdirSync } from "node:fs";
|
|
2
|
-
import type { Config } from "@gtkx/config";
|
|
3
|
-
import { GIR_LIBRARY_PATTERN, LIBRARIES_WILDCARD } from "@gtkx/config/internal";
|
|
4
1
|
import { sortStrings } from "@gtkx/utils";
|
|
2
|
+
import { readdirSync } from "node:fs";
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
type GirNamespace = { name: string; version: string; identifier: string };
|
|
5
|
+
type LibrarySelection = typeof LIBRARIES_WILDCARD | string[] | undefined;
|
|
7
6
|
|
|
7
|
+
const LIBRARIES_WILDCARD = "*";
|
|
8
|
+
const GIR_LIBRARY_PATTERN = /^[A-Za-z][A-Za-z0-9]*-\d+(?:\.\d+)*$/;
|
|
9
|
+
const DEFAULT_LIBRARIES: string[] = ["Gtk-4.0"];
|
|
8
10
|
const GIR_FILE_SUFFIX = ".gir";
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
const resolveLibraries = (libraries: LibrarySelection, girPath: string[]): string[] => {
|
|
11
13
|
if (libraries === undefined) {
|
|
12
14
|
return [...DEFAULT_LIBRARIES];
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
if (libraries === LIBRARIES_WILDCARD) {
|
|
16
18
|
const discovered = discoverGirNamespaces(girPath);
|
|
19
|
+
|
|
17
20
|
if (discovered.length === 0) {
|
|
18
21
|
throw new Error(
|
|
19
22
|
`gtkx.config.ts: \`libraries: "*"\` matched no .gir files in [${girPath.join(", ")}]. ` +
|
|
20
|
-
|
|
23
|
+
"Install gobject-introspection data packages, or list the libraries explicitly.",
|
|
21
24
|
);
|
|
22
25
|
}
|
|
26
|
+
|
|
23
27
|
return discovered;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
const hasGtk = libraries.some((library) => library.startsWith("Gtk-"));
|
|
31
|
+
|
|
27
32
|
return [...new Set([...(hasGtk ? [] : DEFAULT_LIBRARIES), ...libraries])];
|
|
28
33
|
};
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
35
|
+
const readDirEntries = (dir: string): string[] => {
|
|
36
|
+
try {
|
|
37
|
+
return readdirSync(dir);
|
|
38
|
+
} catch {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
};
|
|
32
42
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
const parseGirNamespace = (entry: string): GirNamespace | undefined => {
|
|
44
|
+
if (!entry.endsWith(GIR_FILE_SUFFIX)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const identifier = entry.slice(0, -GIR_FILE_SUFFIX.length);
|
|
49
|
+
|
|
50
|
+
if (!GIR_LIBRARY_PATTERN.test(identifier)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const separator = identifier.indexOf("-");
|
|
55
|
+
|
|
56
|
+
return { name: identifier.slice(0, separator), version: identifier.slice(separator + 1), identifier };
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const recordHighest = (highestByName: Map<string, GirNamespace>, parsed: GirNamespace): void => {
|
|
60
|
+
const existing = highestByName.get(parsed.name);
|
|
61
|
+
|
|
62
|
+
if (existing === undefined || compareVersions(parsed.version, existing.version) > 0) {
|
|
63
|
+
highestByName.set(parsed.name, parsed);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const collectDirNamespaces = (highestByName: Map<string, GirNamespace>, dir: string): void => {
|
|
68
|
+
for (const entry of readDirEntries(dir)) {
|
|
69
|
+
const parsed = parseGirNamespace(entry);
|
|
70
|
+
|
|
71
|
+
if (parsed !== undefined) {
|
|
72
|
+
recordHighest(highestByName, parsed);
|
|
58
73
|
}
|
|
59
74
|
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const discoverGirNamespaces = (girPath: string[]): string[] => {
|
|
78
|
+
const highestByName: Map<string, GirNamespace> = new Map();
|
|
60
79
|
|
|
61
|
-
|
|
80
|
+
for (const dir of girPath) {
|
|
81
|
+
collectDirNamespaces(highestByName, dir);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return sortStrings(highestByName.values().map(({ identifier }) => identifier));
|
|
62
85
|
};
|
|
63
86
|
|
|
64
87
|
const compareVersions = (a: string, b: string): number => {
|
|
@@ -68,6 +91,7 @@ const compareVersions = (a: string, b: string): number => {
|
|
|
68
91
|
|
|
69
92
|
for (let index = 0; index < length; index += 1) {
|
|
70
93
|
const difference = Number(aParts[index] ?? 0) - Number(bParts[index] ?? 0);
|
|
94
|
+
|
|
71
95
|
if (difference !== 0) {
|
|
72
96
|
return difference;
|
|
73
97
|
}
|
|
@@ -75,3 +99,5 @@ const compareVersions = (a: string, b: string): number => {
|
|
|
75
99
|
|
|
76
100
|
return 0;
|
|
77
101
|
};
|
|
102
|
+
|
|
103
|
+
export { resolveLibraries, discoverGirNamespaces, type LibrarySelection };
|
package/src/gir/library.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import type { PrimitiveCategory } from "./primitives.js";
|
|
4
|
+
import type { CArrayType, HashTableType, ListType, ParseContext, TypeId } from "./type-id.js";
|
|
5
|
+
import type { GirType } from "./type.js";
|
|
3
6
|
import { callbackFromNode } from "./callback.js";
|
|
4
7
|
import {
|
|
5
8
|
createNamespaceShell,
|
|
@@ -9,35 +12,73 @@ import {
|
|
|
9
12
|
populateNamespaceBody,
|
|
10
13
|
} from "./namespace.js";
|
|
11
14
|
import { parseGirFile, type RawNode } from "./parse.js";
|
|
12
|
-
import type { PrimitiveCategory } from "./primitives.js";
|
|
13
|
-
import type { GirType } from "./type.js";
|
|
14
|
-
import type { CArrayType, HashTableType, ListType, ParseContext, TypeId } from "./type-id.js";
|
|
15
15
|
import { splitOptionalNamespace } from "./type-ref.js";
|
|
16
16
|
|
|
17
|
-
const INTERNAL_NS_ID = 0;
|
|
18
|
-
|
|
19
17
|
type TypeTable = {
|
|
20
18
|
types: (GirType | undefined)[];
|
|
21
19
|
names: (string | undefined)[];
|
|
22
20
|
index: Map<string, number>;
|
|
23
21
|
};
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
private namespacesByName = new Map<string, GirNamespace>();
|
|
27
|
-
private namespaceById: (GirNamespace | undefined)[] = [];
|
|
28
|
-
private nsNameById: string[] = [];
|
|
29
|
-
private nsIdByName = new Map<string, number>();
|
|
30
|
-
private typeTables: TypeTable[] = [];
|
|
31
|
-
private girFilesValue: string[] = [];
|
|
23
|
+
type DiscoveredNamespace = { header: NamespaceHeader; shell: GirNamespace };
|
|
32
24
|
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
const INTERNAL_NS_ID = 0;
|
|
26
|
+
|
|
27
|
+
const readRepositoryNode = (path: string): RawNode => {
|
|
28
|
+
const root = parseGirFile(path);
|
|
29
|
+
const repository = root.repository;
|
|
30
|
+
|
|
31
|
+
if (typeof repository !== "object" || repository === null) {
|
|
32
|
+
throw new Error(`GIR file at ${path} has no <repository> root`);
|
|
35
33
|
}
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
return repository as RawNode;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const locateGirFile = (identifier: string, girPath: string[]): string => {
|
|
39
|
+
const filename = `${identifier}.gir`;
|
|
40
|
+
|
|
41
|
+
for (const directory of girPath) {
|
|
42
|
+
const candidate = join(directory, filename);
|
|
43
|
+
|
|
44
|
+
if (existsSync(candidate)) {
|
|
45
|
+
return candidate;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const tried = girPath.map((directory) => join(directory, filename)).join(", ");
|
|
50
|
+
throw new Error(`GIR file ${filename} not found on girPath. Tried: ${tried}`);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
class Library {
|
|
54
|
+
private static drive(library: Library, libraries: string[], girPath: string[]): void {
|
|
55
|
+
const { discovered, girFiles } = library.discoverNamespaces(libraries, girPath);
|
|
56
|
+
|
|
57
|
+
for (const { header, shell } of discovered) {
|
|
58
|
+
populateNamespaceBody(shell, header.namespaceNode, library.parseContext(shell.id));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
for (const { shell } of discovered) {
|
|
62
|
+
library.addDeclarations(shell);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
library.girFilesValue = girFiles;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static load(libraries: string[], girPath: string[]): Library {
|
|
69
|
+
const library = new Library();
|
|
70
|
+
this.drive(library, libraries, girPath);
|
|
71
|
+
|
|
72
|
+
return library;
|
|
39
73
|
}
|
|
40
74
|
|
|
75
|
+
private namespacesByName: Map<string, GirNamespace> = new Map();
|
|
76
|
+
private namespaceById: (GirNamespace | undefined)[] = [];
|
|
77
|
+
private nsNameById: string[] = [];
|
|
78
|
+
private nsIdByName: Map<string, number> = new Map();
|
|
79
|
+
private typeTables: TypeTable[] = [];
|
|
80
|
+
private girFilesValue: string[] = [];
|
|
81
|
+
|
|
41
82
|
constructor() {
|
|
42
83
|
this.typeTables[INTERNAL_NS_ID] = { types: [], names: [], index: new Map() };
|
|
43
84
|
this.namespaceById[INTERNAL_NS_ID] = undefined;
|
|
@@ -46,12 +87,17 @@ export class Library {
|
|
|
46
87
|
|
|
47
88
|
private ensureNsId(name: string): number {
|
|
48
89
|
const existing = this.nsIdByName.get(name);
|
|
49
|
-
|
|
90
|
+
|
|
91
|
+
if (existing !== undefined) {
|
|
92
|
+
return existing;
|
|
93
|
+
}
|
|
94
|
+
|
|
50
95
|
const nsId = this.typeTables.length;
|
|
51
96
|
this.typeTables[nsId] = { types: [], names: [], index: new Map() };
|
|
52
97
|
this.namespaceById[nsId] = undefined;
|
|
53
98
|
this.nsNameById[nsId] = name;
|
|
54
99
|
this.nsIdByName.set(name, nsId);
|
|
100
|
+
|
|
55
101
|
return nsId;
|
|
56
102
|
}
|
|
57
103
|
|
|
@@ -60,22 +106,27 @@ export class Library {
|
|
|
60
106
|
const shell = createNamespaceShell(header, nsId);
|
|
61
107
|
this.namespaceById[nsId] = shell;
|
|
62
108
|
this.namespacesByName.set(header.name, shell);
|
|
109
|
+
|
|
63
110
|
return shell;
|
|
64
111
|
}
|
|
65
112
|
|
|
66
|
-
private
|
|
113
|
+
private namespaceFor(nsId: number): GirNamespace {
|
|
67
114
|
const namespace = this.namespaceById[nsId];
|
|
115
|
+
|
|
68
116
|
if (namespace === undefined) {
|
|
69
|
-
throw new Error(`No namespace registered for type table id ${nsId}`);
|
|
117
|
+
throw new Error(`No namespace registered for type table id ${String(nsId)}`);
|
|
70
118
|
}
|
|
119
|
+
|
|
71
120
|
return namespace;
|
|
72
121
|
}
|
|
73
122
|
|
|
74
|
-
private
|
|
123
|
+
private typeTableFor(nsId: number): TypeTable {
|
|
75
124
|
const typeTable = this.typeTables[nsId];
|
|
125
|
+
|
|
76
126
|
if (typeTable === undefined) {
|
|
77
|
-
throw new Error(`No type table for namespace id ${nsId}`);
|
|
127
|
+
throw new Error(`No type table for namespace id ${String(nsId)}`);
|
|
78
128
|
}
|
|
129
|
+
|
|
79
130
|
return typeTable;
|
|
80
131
|
}
|
|
81
132
|
|
|
@@ -86,37 +137,44 @@ export class Library {
|
|
|
86
137
|
const id = typeTable.types.length;
|
|
87
138
|
typeTable.types.push(slot.type);
|
|
88
139
|
typeTable.names.push(slot.displayName);
|
|
89
|
-
|
|
140
|
+
|
|
141
|
+
if (slot.indexKey !== undefined) {
|
|
142
|
+
typeTable.index.set(slot.indexKey, id);
|
|
143
|
+
}
|
|
144
|
+
|
|
90
145
|
return id;
|
|
91
146
|
}
|
|
92
147
|
|
|
93
|
-
private
|
|
94
|
-
const typeTable = this.
|
|
148
|
+
private resolveTypeId(nsId: number, name: string, type: GirType | undefined): number {
|
|
149
|
+
const typeTable = this.typeTableFor(nsId);
|
|
95
150
|
const existing = typeTable.index.get(name);
|
|
151
|
+
|
|
96
152
|
if (existing !== undefined) {
|
|
97
|
-
|
|
98
|
-
return;
|
|
153
|
+
return existing;
|
|
99
154
|
}
|
|
100
|
-
|
|
155
|
+
|
|
156
|
+
return this.insertIntoTypeTable(typeTable, { type, indexKey: name, displayName: name });
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private addType(nsId: number, name: string, type: GirType): void {
|
|
160
|
+
this.typeTableFor(nsId).types[this.resolveTypeId(nsId, name, type)] = type;
|
|
101
161
|
}
|
|
102
162
|
|
|
103
163
|
private findType(nsId: number, name: string): TypeId {
|
|
104
|
-
|
|
105
|
-
const existing = typeTable.index.get(name);
|
|
106
|
-
if (existing !== undefined) return { nsId, id: existing };
|
|
107
|
-
const id = this.insertIntoTypeTable(typeTable, { type: undefined, indexKey: name, displayName: name });
|
|
108
|
-
return { nsId, id };
|
|
164
|
+
return { nsId, id: this.resolveTypeId(nsId, name, undefined) };
|
|
109
165
|
}
|
|
110
166
|
|
|
111
167
|
private addAnonymousType(nsId: number, type: GirType): TypeId {
|
|
112
|
-
const typeTable = this.
|
|
168
|
+
const typeTable = this.typeTableFor(nsId);
|
|
113
169
|
const id = this.insertIntoTypeTable(typeTable, { type });
|
|
170
|
+
|
|
114
171
|
return { nsId, id };
|
|
115
172
|
}
|
|
116
173
|
|
|
117
174
|
private findTypeByName(currentNsId: number, name: string): TypeId {
|
|
118
175
|
const [namespaceName, localName] = splitOptionalNamespace(name);
|
|
119
176
|
const targetNsId = namespaceName === undefined ? currentNsId : this.ensureNsId(namespaceName);
|
|
177
|
+
|
|
120
178
|
return this.findType(targetNsId, localName);
|
|
121
179
|
}
|
|
122
180
|
|
|
@@ -130,10 +188,11 @@ export class Library {
|
|
|
130
188
|
addAnonymousCallback: (node) =>
|
|
131
189
|
this.addAnonymousType(nsId, {
|
|
132
190
|
kind: "callback",
|
|
133
|
-
namespace: this.
|
|
191
|
+
namespace: this.namespaceFor(nsId),
|
|
134
192
|
value: callbackFromNode(node, context),
|
|
135
193
|
}),
|
|
136
194
|
};
|
|
195
|
+
|
|
137
196
|
return context;
|
|
138
197
|
}
|
|
139
198
|
|
|
@@ -146,103 +205,147 @@ export class Library {
|
|
|
146
205
|
}
|
|
147
206
|
|
|
148
207
|
private findOrAddContainer(key: string, type: GirType): TypeId {
|
|
149
|
-
const typeTable = this.
|
|
208
|
+
const typeTable = this.typeTableFor(INTERNAL_NS_ID);
|
|
150
209
|
const existing = typeTable.index.get(key);
|
|
151
|
-
|
|
210
|
+
|
|
211
|
+
if (existing !== undefined) {
|
|
212
|
+
return { nsId: INTERNAL_NS_ID, id: existing };
|
|
213
|
+
}
|
|
214
|
+
|
|
152
215
|
const id = this.insertIntoTypeTable(typeTable, { type, indexKey: key });
|
|
216
|
+
|
|
153
217
|
return { nsId: INTERNAL_NS_ID, id };
|
|
154
218
|
}
|
|
155
219
|
|
|
156
220
|
private addDeclarations(shell: GirNamespace): void {
|
|
221
|
+
this.addClassDeclarations(shell);
|
|
222
|
+
this.addValueDeclarations(shell);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private addClassDeclarations(shell: GirNamespace): void {
|
|
157
226
|
const nsId = shell.id;
|
|
158
|
-
|
|
227
|
+
|
|
228
|
+
for (const value of shell.classes) {
|
|
229
|
+
this.addType(nsId, value.name, { kind: "class", namespace: shell, value });
|
|
230
|
+
}
|
|
231
|
+
|
|
159
232
|
for (const value of shell.interfaces) {
|
|
160
233
|
this.addType(nsId, value.name, { kind: "interface", namespace: shell, value });
|
|
161
234
|
}
|
|
162
|
-
|
|
163
|
-
for (const value of shell.
|
|
235
|
+
|
|
236
|
+
for (const value of shell.records) {
|
|
237
|
+
this.addType(nsId, value.name, { kind: "record", namespace: shell, value });
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
private addValueDeclarations(shell: GirNamespace): void {
|
|
242
|
+
const nsId = shell.id;
|
|
243
|
+
|
|
244
|
+
for (const value of shell.enums) {
|
|
245
|
+
this.addType(nsId, value.name, { kind: "enum", namespace: shell, value });
|
|
246
|
+
}
|
|
247
|
+
|
|
164
248
|
for (const value of shell.callbacks) {
|
|
165
249
|
this.addType(nsId, value.name, { kind: "callback", namespace: shell, value });
|
|
166
250
|
}
|
|
251
|
+
|
|
167
252
|
for (const alias of shell.aliases) {
|
|
168
253
|
this.addType(nsId, alias.name, { kind: "alias", namespace: shell, value: alias });
|
|
169
254
|
}
|
|
170
255
|
}
|
|
171
256
|
|
|
172
|
-
|
|
257
|
+
private processIdentifier(input: {
|
|
258
|
+
identifier: string;
|
|
259
|
+
girPath: string[];
|
|
260
|
+
seen: Set<string>;
|
|
261
|
+
queue: string[];
|
|
262
|
+
girFiles: string[];
|
|
263
|
+
discovered: DiscoveredNamespace[];
|
|
264
|
+
}): void {
|
|
265
|
+
const { identifier, girPath, seen, queue, girFiles, discovered } = input;
|
|
266
|
+
const namespaceName = identifier.split("-", 1)[0] ?? identifier;
|
|
267
|
+
|
|
268
|
+
if (seen.has(namespaceName)) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
seen.add(namespaceName);
|
|
273
|
+
const path = locateGirFile(identifier, girPath);
|
|
274
|
+
girFiles.push(path);
|
|
275
|
+
const header = parseNamespaceHeader(readRepositoryNode(path));
|
|
276
|
+
const shell = this.registerNamespace(header);
|
|
277
|
+
discovered.push({ header, shell });
|
|
278
|
+
|
|
279
|
+
for (const include of header.includes) {
|
|
280
|
+
queue.push(`${include.name}-${include.version}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
private discoverNamespaces(
|
|
285
|
+
libraries: string[],
|
|
286
|
+
girPath: string[],
|
|
287
|
+
): { discovered: DiscoveredNamespace[]; girFiles: string[] } {
|
|
288
|
+
const queue: string[] = [...libraries];
|
|
289
|
+
const seen: Set<string> = new Set();
|
|
290
|
+
const discovered: DiscoveredNamespace[] = [];
|
|
291
|
+
const girFiles: string[] = [];
|
|
292
|
+
|
|
293
|
+
while (queue.length > 0) {
|
|
294
|
+
const identifier = queue.shift();
|
|
295
|
+
|
|
296
|
+
if (identifier !== undefined) {
|
|
297
|
+
this.processIdentifier({ identifier, girPath, seen, queue, girFiles, discovered });
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return { discovered, girFiles };
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
public get namespaces(): Map<string, GirNamespace> {
|
|
305
|
+
return this.namespacesByName;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
public get girFiles(): string[] {
|
|
309
|
+
return this.girFilesValue;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
typeFor(tid: TypeId): GirType | undefined {
|
|
173
313
|
return this.typeTables[tid.nsId]?.types[tid.id];
|
|
174
314
|
}
|
|
175
315
|
|
|
176
|
-
|
|
316
|
+
nameFor(tid: TypeId): { namespaceName: string; typeName: string } | undefined {
|
|
177
317
|
const typeName = this.typeTables[tid.nsId]?.names[tid.id];
|
|
178
318
|
const namespaceName = this.nsNameById[tid.nsId];
|
|
179
|
-
|
|
319
|
+
|
|
320
|
+
if (typeName === undefined || namespaceName === undefined) {
|
|
321
|
+
return undefined;
|
|
322
|
+
}
|
|
323
|
+
|
|
180
324
|
return { namespaceName, typeName };
|
|
181
325
|
}
|
|
182
326
|
|
|
183
327
|
resolveType(currentNamespaceName: string, name: string): GirType | undefined {
|
|
184
328
|
const currentNsId = this.nsIdByName.get(currentNamespaceName);
|
|
185
|
-
|
|
329
|
+
|
|
330
|
+
if (currentNsId === undefined) {
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
|
|
186
334
|
const [namespaceName, localName] = splitOptionalNamespace(name);
|
|
187
335
|
const targetNsId = namespaceName === undefined ? currentNsId : this.nsIdByName.get(namespaceName);
|
|
188
|
-
if (targetNsId === undefined) return undefined;
|
|
189
|
-
const id = this.typeTableOf(targetNsId).index.get(localName);
|
|
190
|
-
if (id === undefined) return undefined;
|
|
191
|
-
return this.typeTableOf(targetNsId).types[id];
|
|
192
|
-
}
|
|
193
336
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const seen = new Set<string>();
|
|
197
|
-
const discovered: { header: NamespaceHeader; shell: GirNamespace }[] = [];
|
|
198
|
-
const girFiles: string[] = [];
|
|
199
|
-
while (queue.length > 0) {
|
|
200
|
-
const identifier = queue.shift();
|
|
201
|
-
if (identifier === undefined) continue;
|
|
202
|
-
const namespaceName = identifier.split("-")[0] ?? identifier;
|
|
203
|
-
if (seen.has(namespaceName)) continue;
|
|
204
|
-
seen.add(namespaceName);
|
|
205
|
-
const path = locateGirFile(identifier, girPath);
|
|
206
|
-
girFiles.push(path);
|
|
207
|
-
const repositoryNode = readRepositoryNode(path);
|
|
208
|
-
const header = parseNamespaceHeader(repositoryNode);
|
|
209
|
-
const shell = library.registerNamespace(header);
|
|
210
|
-
discovered.push({ header, shell });
|
|
211
|
-
for (const include of header.includes) {
|
|
212
|
-
queue.push(`${include.name}-${include.version}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
for (const { header, shell } of discovered) {
|
|
216
|
-
populateNamespaceBody(shell, header.namespaceNode, library.parseContext(shell.id));
|
|
337
|
+
if (targetNsId === undefined) {
|
|
338
|
+
return undefined;
|
|
217
339
|
}
|
|
218
|
-
|
|
219
|
-
|
|
340
|
+
|
|
341
|
+
const id = this.typeTableFor(targetNsId).index.get(localName);
|
|
342
|
+
|
|
343
|
+
if (id === undefined) {
|
|
344
|
+
return undefined;
|
|
220
345
|
}
|
|
221
|
-
library.girFilesValue = girFiles;
|
|
222
|
-
}
|
|
223
346
|
|
|
224
|
-
|
|
225
|
-
const library = new Library();
|
|
226
|
-
Library.drive(library, libraries, girPath);
|
|
227
|
-
return library;
|
|
347
|
+
return this.typeTableFor(targetNsId).types[id];
|
|
228
348
|
}
|
|
229
349
|
}
|
|
230
350
|
|
|
231
|
-
|
|
232
|
-
const root = parseGirFile(path);
|
|
233
|
-
const repository = root.repository;
|
|
234
|
-
if (typeof repository !== "object" || repository === null) {
|
|
235
|
-
throw new Error(`GIR file at ${path} has no <repository> root`);
|
|
236
|
-
}
|
|
237
|
-
return repository as RawNode;
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
const locateGirFile = (identifier: string, girPath: string[]): string => {
|
|
241
|
-
const filename = `${identifier}.gir`;
|
|
242
|
-
for (const directory of girPath) {
|
|
243
|
-
const candidate = join(directory, filename);
|
|
244
|
-
if (existsSync(candidate)) return candidate;
|
|
245
|
-
}
|
|
246
|
-
const tried = girPath.map((directory) => join(directory, filename)).join(", ");
|
|
247
|
-
throw new Error(`GIR file ${filename} not found on girPath. Tried: ${tried}`);
|
|
248
|
-
};
|
|
351
|
+
export { Library };
|