@gtkx/codegen 0.21.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -0
- package/dist/analysis/descriptor-render.d.ts +25 -0
- package/dist/analysis/descriptor-render.d.ts.map +1 -0
- package/dist/analysis/descriptor-render.js +420 -0
- package/dist/analysis/descriptor-render.js.map +1 -0
- package/dist/analysis/descriptor.d.ts +62 -0
- package/dist/analysis/descriptor.d.ts.map +1 -0
- package/dist/analysis/descriptor.js +127 -0
- package/dist/analysis/descriptor.js.map +1 -0
- package/dist/analysis/inheritance.d.ts +38 -0
- package/dist/analysis/inheritance.d.ts.map +1 -0
- package/dist/analysis/inheritance.js +248 -0
- package/dist/analysis/inheritance.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +27 -0
- package/dist/analysis/param-structure.d.ts.map +1 -0
- package/dist/analysis/param-structure.js +158 -0
- package/dist/analysis/param-structure.js.map +1 -0
- package/dist/analysis/ts-type.d.ts +20 -0
- package/dist/analysis/ts-type.d.ts.map +1 -0
- package/dist/analysis/ts-type.js +111 -0
- package/dist/analysis/ts-type.js.map +1 -0
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +130 -0
- package/dist/compile.js.map +1 -0
- package/dist/docs/api-reference.d.ts +67 -0
- package/dist/docs/api-reference.d.ts.map +1 -0
- package/dist/docs/api-reference.js +372 -0
- package/dist/docs/api-reference.js.map +1 -0
- package/dist/docs/element-page.d.ts +12 -0
- package/dist/docs/element-page.d.ts.map +1 -0
- package/dist/docs/element-page.js +156 -0
- package/dist/docs/element-page.js.map +1 -0
- package/dist/docs/pipeline.d.ts +26 -0
- package/dist/docs/pipeline.d.ts.map +1 -0
- package/dist/docs/pipeline.js +156 -0
- package/dist/docs/pipeline.js.map +1 -0
- package/dist/docs/render.d.ts +34 -0
- package/dist/docs/render.d.ts.map +1 -0
- package/dist/docs/render.js +143 -0
- package/dist/docs/render.js.map +1 -0
- package/dist/docs/symbol-page.d.ts +41 -0
- package/dist/docs/symbol-page.d.ts.map +1 -0
- package/dist/docs/symbol-page.js +380 -0
- package/dist/docs/symbol-page.js.map +1 -0
- package/dist/fingerprint.d.ts +31 -28
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +84 -19
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +13 -0
- package/dist/gi.d.ts.map +1 -0
- package/dist/gi.js +21 -0
- package/dist/gi.js.map +1 -0
- package/dist/gir/ancestry.d.ts +10 -0
- package/dist/gir/ancestry.d.ts.map +1 -0
- package/dist/gir/ancestry.js +26 -0
- package/dist/gir/ancestry.js.map +1 -0
- package/dist/gir/callback.d.ts +8 -14
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +16 -16
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +25 -44
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +16 -26
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +16 -34
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +10 -16
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +16 -24
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +35 -18
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +15 -43
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +26 -23
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +3 -0
- package/dist/gir/gir-path.d.ts.map +1 -0
- package/dist/gir/gir-path.js +57 -0
- package/dist/gir/gir-path.js.map +1 -0
- package/dist/gir/libraries.d.ts +5 -0
- package/dist/gir/libraries.d.ts.map +1 -0
- package/dist/gir/libraries.js +74 -0
- package/dist/gir/libraries.js.map +1 -0
- package/dist/gir/library.d.ts +43 -0
- package/dist/gir/library.d.ts.map +1 -0
- package/dist/gir/library.js +242 -0
- package/dist/gir/library.js.map +1 -0
- package/dist/gir/namespace.d.ts +40 -54
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +51 -40
- 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 +34 -76
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +47 -59
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +12 -77
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +65 -103
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +5 -35
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +21 -36
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +18 -26
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +16 -12
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +28 -0
- package/dist/gir/record.d.ts.map +1 -0
- package/dist/gir/record.js +26 -0
- package/dist/gir/record.js.map +1 -0
- package/dist/gir/size.d.ts +15 -61
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +49 -72
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +51 -0
- package/dist/gir/type-id.d.ts.map +1 -0
- package/dist/gir/type-id.js +12 -0
- package/dist/gir/type-id.js.map +1 -0
- package/dist/gir/type-ref.d.ts +4 -77
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +58 -77
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +34 -0
- package/dist/gir/type.d.ts.map +1 -0
- package/dist/gir/type.js +2 -0
- package/dist/gir/type.js.map +1 -0
- package/dist/index.d.ts +7 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +26 -0
- package/dist/jsx.d.ts.map +1 -0
- package/dist/jsx.js +40 -0
- package/dist/jsx.js.map +1 -0
- package/dist/khronos/args.d.ts +30 -0
- package/dist/khronos/args.d.ts.map +1 -0
- package/dist/khronos/args.js +171 -0
- package/dist/khronos/args.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +21 -0
- package/dist/khronos/jsdoc.d.ts.map +1 -0
- package/dist/khronos/jsdoc.js +72 -0
- package/dist/khronos/jsdoc.js.map +1 -0
- package/dist/khronos/model.d.ts +38 -0
- package/dist/khronos/model.d.ts.map +1 -0
- package/dist/khronos/model.js +167 -0
- package/dist/khronos/model.js.map +1 -0
- package/dist/khronos/modules.d.ts +12 -0
- package/dist/khronos/modules.d.ts.map +1 -0
- package/dist/khronos/modules.js +73 -0
- package/dist/khronos/modules.js.map +1 -0
- 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 +8 -0
- package/dist/khronos/parse.d.ts.map +1 -0
- package/dist/khronos/parse.js +62 -0
- package/dist/khronos/parse.js.map +1 -0
- package/dist/khronos/pipeline.d.ts +24 -0
- package/dist/khronos/pipeline.d.ts.map +1 -0
- package/dist/khronos/pipeline.js +223 -0
- package/dist/khronos/pipeline.js.map +1 -0
- package/dist/khronos/plan.d.ts +81 -0
- package/dist/khronos/plan.d.ts.map +1 -0
- package/dist/khronos/plan.js +200 -0
- package/dist/khronos/plan.js.map +1 -0
- package/dist/khronos/render.d.ts +17 -0
- package/dist/khronos/render.d.ts.map +1 -0
- package/dist/khronos/render.js +205 -0
- package/dist/khronos/render.js.map +1 -0
- package/dist/khronos/select.d.ts +15 -0
- package/dist/khronos/select.d.ts.map +1 -0
- package/dist/khronos/select.js +56 -0
- package/dist/khronos/select.js.map +1 -0
- package/dist/react/element-config.d.ts +17 -0
- package/dist/react/element-config.d.ts.map +1 -0
- package/dist/react/element-config.js +61 -0
- package/dist/react/element-config.js.map +1 -0
- package/dist/runner.d.ts +38 -49
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +81 -54
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +11 -0
- package/dist/store/compile-store.d.ts.map +1 -0
- package/dist/store/compile-store.js +40 -0
- package/dist/store/compile-store.js.map +1 -0
- package/dist/store/gi/async.d.ts +5 -0
- package/dist/store/gi/async.d.ts.map +1 -0
- package/dist/store/gi/async.js +45 -0
- package/dist/store/gi/async.js.map +1 -0
- package/dist/store/gi/callables.d.ts +42 -0
- package/dist/store/gi/callables.d.ts.map +1 -0
- package/dist/store/gi/callables.js +264 -0
- package/dist/store/gi/callables.js.map +1 -0
- package/dist/store/gi/callback.d.ts +5 -0
- package/dist/store/gi/callback.d.ts.map +1 -0
- package/dist/store/gi/callback.js +17 -0
- package/dist/store/gi/callback.js.map +1 -0
- package/dist/store/gi/class-struct-record.d.ts +10 -0
- package/dist/store/gi/class-struct-record.d.ts.map +1 -0
- package/dist/store/gi/class-struct-record.js +52 -0
- package/dist/store/gi/class-struct-record.js.map +1 -0
- package/dist/store/gi/class.d.ts +5 -0
- package/dist/store/gi/class.d.ts.map +1 -0
- package/dist/store/gi/class.js +208 -0
- package/dist/store/gi/class.js.map +1 -0
- package/dist/store/gi/companion.d.ts +5 -0
- package/dist/store/gi/companion.d.ts.map +1 -0
- package/dist/store/gi/companion.js +16 -0
- package/dist/store/gi/companion.js.map +1 -0
- package/dist/store/gi/constant.d.ts +6 -0
- package/dist/store/gi/constant.d.ts.map +1 -0
- package/dist/store/gi/constant.js +35 -0
- package/dist/store/gi/constant.js.map +1 -0
- package/dist/store/gi/constructor-props.d.ts +6 -0
- package/dist/store/gi/constructor-props.d.ts.map +1 -0
- package/dist/store/gi/constructor-props.js +71 -0
- package/dist/store/gi/constructor-props.js.map +1 -0
- package/dist/store/gi/enum.d.ts +6 -0
- package/dist/store/gi/enum.d.ts.map +1 -0
- package/dist/store/gi/enum.js +41 -0
- package/dist/store/gi/enum.js.map +1 -0
- package/dist/store/gi/function.d.ts +9 -0
- package/dist/store/gi/function.d.ts.map +1 -0
- package/dist/store/gi/function.js +114 -0
- package/dist/store/gi/function.js.map +1 -0
- package/dist/store/gi/gtype-binding.d.ts +10 -0
- package/dist/store/gi/gtype-binding.d.ts.map +1 -0
- package/dist/store/gi/gtype-binding.js +24 -0
- package/dist/store/gi/gtype-binding.js.map +1 -0
- package/dist/store/gi/interface.d.ts +5 -0
- package/dist/store/gi/interface.d.ts.map +1 -0
- package/dist/store/gi/interface.js +117 -0
- package/dist/store/gi/interface.js.map +1 -0
- package/dist/store/gi/item-comparators.d.ts +7 -0
- package/dist/store/gi/item-comparators.d.ts.map +1 -0
- package/dist/store/gi/item-comparators.js +88 -0
- package/dist/store/gi/item-comparators.js.map +1 -0
- package/dist/store/gi/method.d.ts +24 -0
- package/dist/store/gi/method.d.ts.map +1 -0
- package/dist/store/gi/method.js +336 -0
- package/dist/store/gi/method.js.map +1 -0
- package/dist/store/gi/param-marshal.d.ts +10 -0
- package/dist/store/gi/param-marshal.d.ts.map +1 -0
- package/dist/store/gi/param-marshal.js +50 -0
- package/dist/store/gi/param-marshal.js.map +1 -0
- package/dist/store/gi/pipeline.d.ts +5 -0
- package/dist/store/gi/pipeline.d.ts.map +1 -0
- package/dist/store/gi/pipeline.js +95 -0
- package/dist/store/gi/pipeline.js.map +1 -0
- package/dist/store/gi/properties.d.ts +6 -0
- package/dist/store/gi/properties.d.ts.map +1 -0
- package/dist/store/gi/properties.js +32 -0
- package/dist/store/gi/properties.js.map +1 -0
- package/dist/store/gi/property-accessor.d.ts +27 -0
- package/dist/store/gi/property-accessor.d.ts.map +1 -0
- package/dist/store/gi/property-accessor.js +158 -0
- package/dist/store/gi/property-accessor.js.map +1 -0
- package/dist/store/gi/record-constructor.d.ts +6 -0
- package/dist/store/gi/record-constructor.d.ts.map +1 -0
- package/dist/store/gi/record-constructor.js +76 -0
- package/dist/store/gi/record-constructor.js.map +1 -0
- package/dist/store/gi/record-field-accessor.d.ts +25 -0
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
- package/dist/store/gi/record-field-accessor.js +360 -0
- package/dist/store/gi/record-field-accessor.js.map +1 -0
- package/dist/store/gi/record-layout.d.ts +15 -0
- package/dist/store/gi/record-layout.d.ts.map +1 -0
- package/dist/store/gi/record-layout.js +132 -0
- package/dist/store/gi/record-layout.js.map +1 -0
- package/dist/store/gi/record.d.ts +5 -0
- package/dist/store/gi/record.d.ts.map +1 -0
- package/dist/store/gi/record.js +65 -0
- package/dist/store/gi/record.js.map +1 -0
- package/dist/store/gi/registration.d.ts +16 -0
- package/dist/store/gi/registration.d.ts.map +1 -0
- package/dist/store/gi/registration.js +21 -0
- package/dist/store/gi/registration.js.map +1 -0
- package/dist/store/gi/return-wrap.d.ts +10 -0
- package/dist/store/gi/return-wrap.d.ts.map +1 -0
- package/dist/store/gi/return-wrap.js +67 -0
- package/dist/store/gi/return-wrap.js.map +1 -0
- package/dist/store/gi/runtime-override.d.ts +4 -0
- package/dist/store/gi/runtime-override.d.ts.map +1 -0
- package/dist/store/gi/runtime-override.js +32 -0
- package/dist/store/gi/runtime-override.js.map +1 -0
- package/dist/store/gi/signal.d.ts +6 -0
- package/dist/store/gi/signal.d.ts.map +1 -0
- package/dist/store/gi/signal.js +280 -0
- package/dist/store/gi/signal.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +5 -0
- package/dist/store/gi/vtable.d.ts.map +1 -0
- package/dist/store/gi/vtable.js +108 -0
- package/dist/store/gi/vtable.js.map +1 -0
- package/dist/store/gi-store.d.ts +10 -0
- package/dist/store/gi-store.d.ts.map +1 -0
- package/dist/store/gi-store.js +59 -0
- package/dist/store/gi-store.js.map +1 -0
- 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 +27 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/jsx/intrinsic-elements.js +128 -0
- package/dist/store/jsx/intrinsic-elements.js.map +1 -0
- package/dist/store/jsx/jsx.d.ts +16 -0
- package/dist/store/jsx/jsx.d.ts.map +1 -0
- package/dist/store/jsx/jsx.js +242 -0
- 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/jsx/metadata.js +253 -0
- package/dist/store/jsx/metadata.js.map +1 -0
- package/dist/store/jsx/pipeline.d.ts +21 -0
- package/dist/store/jsx/pipeline.d.ts.map +1 -0
- package/dist/store/jsx/pipeline.js +81 -0
- package/dist/store/jsx/pipeline.js.map +1 -0
- package/dist/store/jsx/props.d.ts +33 -0
- package/dist/store/jsx/props.d.ts.map +1 -0
- package/dist/store/jsx/props.js +158 -0
- package/dist/store/jsx/props.js.map +1 -0
- package/dist/store/jsx-store.d.ts +7 -0
- package/dist/store/jsx-store.d.ts.map +1 -0
- package/dist/store/jsx-store.js +26 -0
- package/dist/store/jsx-store.js.map +1 -0
- package/dist/store/store-fs.d.ts +43 -0
- package/dist/store/store-fs.d.ts.map +1 -0
- package/dist/store/store-fs.js +73 -0
- package/dist/store/store-fs.js.map +1 -0
- package/dist/writer/context.d.ts +17 -0
- package/dist/writer/context.d.ts.map +1 -0
- package/dist/writer/context.js +50 -0
- package/dist/writer/context.js.map +1 -0
- package/dist/writer/doc.d.ts +3 -0
- package/dist/writer/doc.d.ts.map +1 -0
- package/dist/writer/doc.js +18 -0
- package/dist/writer/doc.js.map +1 -0
- package/dist/writer/emit.d.ts +9 -0
- package/dist/writer/emit.d.ts.map +1 -0
- package/dist/writer/emit.js +24 -0
- package/dist/writer/emit.js.map +1 -0
- package/dist/writer/gtk-doc.d.ts +3 -0
- package/dist/writer/gtk-doc.d.ts.map +1 -0
- package/dist/writer/gtk-doc.js +78 -0
- package/dist/writer/gtk-doc.js.map +1 -0
- package/dist/writer/imports.d.ts +12 -0
- package/dist/writer/imports.d.ts.map +1 -0
- package/dist/writer/imports.js +61 -0
- package/dist/writer/imports.js.map +1 -0
- package/dist/writer/module.d.ts +16 -0
- package/dist/writer/module.d.ts.map +1 -0
- package/dist/writer/module.js +53 -0
- package/dist/writer/module.js.map +1 -0
- 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 +1269 -0
- package/overrides/cairo/font-face.ts.ejs +151 -0
- package/overrides/cairo/font-options.ts.ejs +199 -0
- package/overrides/cairo/image-surface.ts.ejs +132 -0
- package/overrides/cairo/index.ts.ejs +22 -0
- package/overrides/cairo/matrix.ts.ejs +171 -0
- package/overrides/cairo/pattern.ts.ejs +476 -0
- package/overrides/cairo/recording-surface.ts.ejs +102 -0
- package/overrides/cairo/region.ts.ejs +237 -0
- package/overrides/cairo/scaled-font.ts.ejs +330 -0
- package/overrides/cairo/surface.ts.ejs +296 -0
- package/overrides/gdk/index.ts.ejs +2 -0
- package/overrides/gdk/rgba.ts.ejs +11 -0
- package/overrides/gobject/index.ts.ejs +29 -0
- package/overrides/gobject/object.ts.ejs +51 -0
- package/overrides/gobject/value.ts.ejs +17 -0
- package/overrides/graphene/index.ts.ejs +2 -0
- package/overrides/graphene/structs.ts.ejs +37 -0
- package/package.json +21 -15
- package/src/analysis/descriptor-render.ts +723 -0
- package/src/analysis/descriptor.ts +300 -0
- package/src/analysis/inheritance.ts +430 -0
- package/src/analysis/param-structure.ts +258 -0
- package/src/analysis/ts-type.ts +174 -0
- package/src/compile.ts +179 -0
- package/src/docs/api-reference.ts +557 -0
- package/src/docs/element-page.ts +281 -0
- package/src/docs/pipeline.ts +241 -0
- package/src/docs/render.ts +255 -0
- package/src/docs/symbol-page.ts +589 -0
- package/src/fingerprint.ts +144 -35
- package/src/gi.ts +26 -0
- package/src/gir/ancestry.ts +53 -0
- package/src/gir/callback.ts +22 -24
- package/src/gir/class.ts +39 -61
- package/src/gir/enum.ts +25 -41
- package/src/gir/field.ts +51 -37
- package/src/gir/function.ts +44 -59
- package/src/gir/gir-path.ts +73 -0
- package/src/gir/libraries.ts +102 -0
- package/src/gir/library.ts +351 -0
- package/src/gir/namespace.ts +109 -88
- package/src/gir/nullable-overrides.ts +5 -0
- package/src/gir/parameter.ts +111 -102
- package/src/gir/parse.ts +124 -121
- package/src/gir/primitives.ts +43 -63
- package/src/gir/property.ts +33 -33
- package/src/gir/record.ts +55 -0
- package/src/gir/size.ts +93 -107
- package/src/gir/type-id.ts +64 -0
- package/src/gir/type-ref.ts +77 -146
- package/src/gir/type.ts +18 -0
- package/src/index.ts +27 -15
- package/src/jsx.ts +70 -0
- package/src/khronos/args.ts +271 -0
- package/src/khronos/jsdoc.ts +114 -0
- package/src/khronos/model.ts +267 -0
- package/src/khronos/modules.ts +115 -0
- package/src/khronos/param-pair.ts +14 -0
- package/src/khronos/parse.ts +86 -0
- package/src/khronos/pipeline.ts +337 -0
- package/src/khronos/plan.ts +340 -0
- package/src/khronos/registry/LICENSE +202 -0
- package/src/khronos/registry/gl.xml +47748 -0
- package/src/khronos/render.ts +330 -0
- package/src/khronos/select.ts +97 -0
- package/src/react/element-config.ts +91 -0
- package/src/runner.ts +153 -80
- package/src/store/compile-store.ts +55 -0
- package/src/store/gi/async.ts +69 -0
- package/src/store/gi/callables.ts +518 -0
- package/src/store/gi/callback.ts +24 -0
- package/src/store/gi/class-struct-record.ts +72 -0
- package/src/store/gi/class.ts +334 -0
- package/src/store/gi/companion.ts +22 -0
- package/src/store/gi/constant.ts +58 -0
- package/src/store/gi/constructor-props.ts +108 -0
- package/src/store/gi/enum.ts +64 -0
- package/src/store/gi/function.ts +173 -0
- package/src/store/gi/gtype-binding.ts +46 -0
- package/src/store/gi/interface.ts +222 -0
- package/src/store/gi/item-comparators.ts +138 -0
- package/src/store/gi/method.ts +634 -0
- package/src/store/gi/param-marshal.ts +71 -0
- package/src/store/gi/pipeline.ts +135 -0
- package/src/store/gi/properties.ts +50 -0
- package/src/store/gi/property-accessor.ts +302 -0
- package/src/store/gi/record-constructor.ts +119 -0
- package/src/store/gi/record-field-accessor.ts +607 -0
- package/src/store/gi/record-layout.ts +221 -0
- package/src/store/gi/record.ts +89 -0
- package/src/store/gi/registration.ts +44 -0
- package/src/store/gi/return-wrap.ts +100 -0
- package/src/store/gi/runtime-override.ts +46 -0
- package/src/store/gi/signal.ts +450 -0
- package/src/store/gi/vtable.ts +175 -0
- package/src/store/gi-store.ts +92 -0
- 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 +262 -0
- package/src/store/jsx/jsx.ts +408 -0
- package/src/store/jsx/metadata.ts +385 -0
- package/src/store/jsx/pipeline.ts +145 -0
- package/src/store/jsx/props.ts +274 -0
- package/src/store/jsx-store.ts +39 -0
- package/src/store/store-fs.ts +128 -0
- package/src/writer/context.ts +67 -0
- package/src/writer/doc.ts +25 -0
- package/src/writer/emit.ts +35 -0
- package/src/writer/gtk-doc.ts +101 -0
- package/src/writer/imports.ts +94 -0
- package/src/writer/module.ts +69 -0
- package/src/xml.ts +12 -0
- package/LICENSE +0 -373
- package/dist/dsl/context.d.ts +0 -104
- package/dist/dsl/context.d.ts.map +0 -1
- package/dist/dsl/context.js +0 -140
- package/dist/dsl/context.js.map +0 -1
- package/dist/dsl/emit.d.ts +0 -28
- package/dist/dsl/emit.d.ts.map +0 -1
- package/dist/dsl/emit.js +0 -41
- package/dist/dsl/emit.js.map +0 -1
- package/dist/dsl/identifier.d.ts +0 -28
- package/dist/dsl/identifier.d.ts.map +0 -1
- package/dist/dsl/identifier.js +0 -45
- package/dist/dsl/identifier.js.map +0 -1
- package/dist/dsl/imports.d.ts +0 -58
- package/dist/dsl/imports.d.ts.map +0 -1
- package/dist/dsl/imports.js +0 -107
- package/dist/dsl/imports.js.map +0 -1
- package/dist/dsl/module.d.ts +0 -53
- package/dist/dsl/module.d.ts.map +0 -1
- package/dist/dsl/module.js +0 -76
- package/dist/dsl/module.js.map +0 -1
- package/dist/ffi/pipeline.d.ts +0 -19
- package/dist/ffi/pipeline.d.ts.map +0 -1
- package/dist/ffi/pipeline.js +0 -107
- package/dist/ffi/pipeline.js.map +0 -1
- package/dist/gi-store.d.ts +0 -34
- package/dist/gi-store.d.ts.map +0 -1
- package/dist/gi-store.js +0 -154
- package/dist/gi-store.js.map +0 -1
- package/dist/gir/boxed.d.ts +0 -66
- package/dist/gir/boxed.d.ts.map +0 -1
- package/dist/gir/boxed.js +0 -49
- package/dist/gir/boxed.js.map +0 -1
- package/dist/gir/qualified-name.d.ts +0 -37
- package/dist/gir/qualified-name.d.ts.map +0 -1
- package/dist/gir/qualified-name.js +0 -39
- package/dist/gir/qualified-name.js.map +0 -1
- package/dist/gir/qualify.d.ts +0 -32
- package/dist/gir/qualify.d.ts.map +0 -1
- package/dist/gir/qualify.js +0 -60
- package/dist/gir/qualify.js.map +0 -1
- package/dist/gir/repository.d.ts +0 -82
- package/dist/gir/repository.d.ts.map +0 -1
- package/dist/gir/repository.js +0 -122
- package/dist/gir/repository.js.map +0 -1
- package/dist/gir/signal.d.ts +0 -22
- package/dist/gir/signal.d.ts.map +0 -1
- package/dist/gir/signal.js +0 -20
- package/dist/gir/signal.js.map +0 -1
- package/dist/jsx-store.d.ts +0 -22
- package/dist/jsx-store.d.ts.map +0 -1
- package/dist/jsx-store.js +0 -40
- package/dist/jsx-store.js.map +0 -1
- package/dist/react/compounds-meta.d.ts +0 -18
- package/dist/react/compounds-meta.d.ts.map +0 -1
- package/dist/react/compounds-meta.js +0 -93
- package/dist/react/compounds-meta.js.map +0 -1
- package/dist/react/compounds.d.ts +0 -27
- package/dist/react/compounds.d.ts.map +0 -1
- package/dist/react/compounds.js +0 -164
- package/dist/react/compounds.js.map +0 -1
- package/dist/react/internal.d.ts +0 -14
- package/dist/react/internal.d.ts.map +0 -1
- package/dist/react/internal.js +0 -79
- package/dist/react/internal.js.map +0 -1
- package/dist/react/jsx.d.ts +0 -22
- package/dist/react/jsx.d.ts.map +0 -1
- package/dist/react/jsx.js +0 -134
- package/dist/react/jsx.js.map +0 -1
- package/dist/react/pipeline.d.ts +0 -13
- package/dist/react/pipeline.d.ts.map +0 -1
- package/dist/react/pipeline.js +0 -25
- package/dist/react/pipeline.js.map +0 -1
- package/dist/react/props.d.ts +0 -38
- package/dist/react/props.d.ts.map +0 -1
- package/dist/react/props.js +0 -231
- package/dist/react/props.js.map +0 -1
- package/dist/react/slot-props.d.ts +0 -10
- package/dist/react/slot-props.d.ts.map +0 -1
- package/dist/react/slot-props.js +0 -56
- package/dist/react/slot-props.js.map +0 -1
- package/dist/react/widgets.d.ts +0 -83
- package/dist/react/widgets.d.ts.map +0 -1
- package/dist/react/widgets.js +0 -152
- package/dist/react/widgets.js.map +0 -1
- package/dist/store-fs.d.ts +0 -109
- package/dist/store-fs.d.ts.map +0 -1
- package/dist/store-fs.js +0 -98
- package/dist/store-fs.js.map +0 -1
- package/dist/transpile.d.ts +0 -32
- package/dist/transpile.d.ts.map +0 -1
- package/dist/transpile.js +0 -63
- package/dist/transpile.js.map +0 -1
- package/dist/typecheck-store.d.ts +0 -41
- package/dist/typecheck-store.d.ts.map +0 -1
- package/dist/typecheck-store.js +0 -102
- package/dist/typecheck-store.js.map +0 -1
- package/dist/writers/alias.d.ts +0 -13
- package/dist/writers/alias.d.ts.map +0 -1
- package/dist/writers/alias.js +0 -17
- package/dist/writers/alias.js.map +0 -1
- package/dist/writers/async.d.ts +0 -22
- package/dist/writers/async.d.ts.map +0 -1
- package/dist/writers/async.js +0 -48
- package/dist/writers/async.js.map +0 -1
- package/dist/writers/boxed-constructor.d.ts +0 -26
- package/dist/writers/boxed-constructor.d.ts.map +0 -1
- package/dist/writers/boxed-constructor.js +0 -85
- package/dist/writers/boxed-constructor.js.map +0 -1
- package/dist/writers/boxed-field-accessor.d.ts +0 -18
- package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
- package/dist/writers/boxed-field-accessor.js +0 -260
- package/dist/writers/boxed-field-accessor.js.map +0 -1
- package/dist/writers/boxed-layout.d.ts +0 -27
- package/dist/writers/boxed-layout.d.ts.map +0 -1
- package/dist/writers/boxed-layout.js +0 -128
- package/dist/writers/boxed-layout.js.map +0 -1
- package/dist/writers/boxed.d.ts +0 -20
- package/dist/writers/boxed.d.ts.map +0 -1
- package/dist/writers/boxed.js +0 -71
- package/dist/writers/boxed.js.map +0 -1
- package/dist/writers/callables.d.ts +0 -124
- package/dist/writers/callables.d.ts.map +0 -1
- package/dist/writers/callables.js +0 -283
- package/dist/writers/callables.js.map +0 -1
- package/dist/writers/callback.d.ts +0 -16
- package/dist/writers/callback.d.ts.map +0 -1
- package/dist/writers/callback.js +0 -38
- package/dist/writers/callback.js.map +0 -1
- package/dist/writers/class-struct-record.d.ts +0 -31
- package/dist/writers/class-struct-record.d.ts.map +0 -1
- package/dist/writers/class-struct-record.js +0 -67
- package/dist/writers/class-struct-record.js.map +0 -1
- package/dist/writers/class-struct.d.ts +0 -22
- package/dist/writers/class-struct.d.ts.map +0 -1
- package/dist/writers/class-struct.js +0 -85
- package/dist/writers/class-struct.js.map +0 -1
- package/dist/writers/class.d.ts +0 -16
- package/dist/writers/class.d.ts.map +0 -1
- package/dist/writers/class.js +0 -307
- package/dist/writers/class.js.map +0 -1
- package/dist/writers/constant.d.ts +0 -15
- package/dist/writers/constant.d.ts.map +0 -1
- package/dist/writers/constant.js +0 -23
- package/dist/writers/constant.js.map +0 -1
- package/dist/writers/constants.d.ts +0 -15
- package/dist/writers/constants.d.ts.map +0 -1
- package/dist/writers/constants.js +0 -23
- package/dist/writers/constants.js.map +0 -1
- package/dist/writers/constructor-props.d.ts +0 -32
- package/dist/writers/constructor-props.d.ts.map +0 -1
- package/dist/writers/constructor-props.js +0 -110
- package/dist/writers/constructor-props.js.map +0 -1
- package/dist/writers/enum.d.ts +0 -21
- package/dist/writers/enum.d.ts.map +0 -1
- package/dist/writers/enum.js +0 -48
- package/dist/writers/enum.js.map +0 -1
- package/dist/writers/function.d.ts +0 -40
- package/dist/writers/function.d.ts.map +0 -1
- package/dist/writers/function.js +0 -127
- package/dist/writers/function.js.map +0 -1
- package/dist/writers/gtype-binding.d.ts +0 -19
- package/dist/writers/gtype-binding.d.ts.map +0 -1
- package/dist/writers/gtype-binding.js +0 -40
- package/dist/writers/gtype-binding.js.map +0 -1
- package/dist/writers/inheritance.d.ts +0 -48
- package/dist/writers/inheritance.d.ts.map +0 -1
- package/dist/writers/inheritance.js +0 -90
- package/dist/writers/inheritance.js.map +0 -1
- package/dist/writers/interface.d.ts +0 -16
- package/dist/writers/interface.d.ts.map +0 -1
- package/dist/writers/interface.js +0 -155
- package/dist/writers/interface.js.map +0 -1
- package/dist/writers/method.d.ts +0 -150
- package/dist/writers/method.d.ts.map +0 -1
- package/dist/writers/method.js +0 -510
- package/dist/writers/method.js.map +0 -1
- package/dist/writers/param-classify.d.ts +0 -93
- package/dist/writers/param-classify.d.ts.map +0 -1
- package/dist/writers/param-classify.js +0 -163
- package/dist/writers/param-classify.js.map +0 -1
- package/dist/writers/property-accessor.d.ts +0 -19
- package/dist/writers/property-accessor.d.ts.map +0 -1
- package/dist/writers/property-accessor.js +0 -117
- package/dist/writers/property-accessor.js.map +0 -1
- package/dist/writers/registration.d.ts +0 -27
- package/dist/writers/registration.d.ts.map +0 -1
- package/dist/writers/registration.js +0 -30
- package/dist/writers/registration.js.map +0 -1
- package/dist/writers/return-wrap.d.ts +0 -39
- package/dist/writers/return-wrap.d.ts.map +0 -1
- package/dist/writers/return-wrap.js +0 -152
- package/dist/writers/return-wrap.js.map +0 -1
- package/dist/writers/runtime-override.d.ts +0 -18
- package/dist/writers/runtime-override.d.ts.map +0 -1
- package/dist/writers/runtime-override.js +0 -44
- package/dist/writers/runtime-override.js.map +0 -1
- package/dist/writers/signal.d.ts +0 -21
- package/dist/writers/signal.d.ts.map +0 -1
- package/dist/writers/signal.js +0 -260
- package/dist/writers/signal.js.map +0 -1
- package/dist/writers/ts-type.d.ts +0 -50
- package/dist/writers/ts-type.d.ts.map +0 -1
- package/dist/writers/ts-type.js +0 -75
- package/dist/writers/ts-type.js.map +0 -1
- package/dist/writers/types-ts.d.ts +0 -27
- package/dist/writers/types-ts.d.ts.map +0 -1
- package/dist/writers/types-ts.js +0 -97
- package/dist/writers/types-ts.js.map +0 -1
- package/dist/writers/value.d.ts +0 -89
- package/dist/writers/value.d.ts.map +0 -1
- package/dist/writers/value.js +0 -402
- package/dist/writers/value.js.map +0 -1
- package/src/dsl/context.ts +0 -146
- package/src/dsl/emit.ts +0 -42
- package/src/dsl/identifier.ts +0 -52
- package/src/dsl/imports.ts +0 -109
- package/src/dsl/module.ts +0 -75
- package/src/ffi/pipeline.ts +0 -113
- package/src/gi-store.ts +0 -199
- package/src/gir/boxed.ts +0 -94
- package/src/gir/qualified-name.ts +0 -55
- package/src/gir/qualify.ts +0 -64
- package/src/gir/repository.ts +0 -149
- package/src/gir/signal.ts +0 -36
- package/src/jsx-store.ts +0 -53
- package/src/react/compounds-meta.ts +0 -99
- package/src/react/compounds.ts +0 -204
- package/src/react/internal.ts +0 -91
- package/src/react/jsx.ts +0 -155
- package/src/react/pipeline.ts +0 -29
- package/src/react/props.ts +0 -307
- package/src/react/slot-props.ts +0 -57
- package/src/react/widgets.ts +0 -185
- package/src/store-fs.ts +0 -157
- package/src/transpile.ts +0 -80
- package/src/typecheck-store.ts +0 -136
- package/src/writers/alias.ts +0 -19
- package/src/writers/async.ts +0 -44
- package/src/writers/boxed-constructor.ts +0 -105
- package/src/writers/boxed-field-accessor.ts +0 -306
- package/src/writers/boxed-layout.ts +0 -166
- package/src/writers/boxed.ts +0 -77
- package/src/writers/callables.ts +0 -339
- package/src/writers/callback.ts +0 -40
- package/src/writers/class-struct-record.ts +0 -75
- package/src/writers/class-struct.ts +0 -96
- package/src/writers/class.ts +0 -384
- package/src/writers/constant.ts +0 -29
- package/src/writers/constructor-props.ts +0 -130
- package/src/writers/enum.ts +0 -53
- package/src/writers/function.ts +0 -136
- package/src/writers/gtype-binding.ts +0 -48
- package/src/writers/inheritance.ts +0 -104
- package/src/writers/interface.ts +0 -168
- package/src/writers/method.ts +0 -678
- package/src/writers/param-classify.ts +0 -178
- package/src/writers/property-accessor.ts +0 -139
- package/src/writers/registration.ts +0 -42
- package/src/writers/return-wrap.ts +0 -180
- package/src/writers/runtime-override.ts +0 -59
- package/src/writers/signal.ts +0 -318
- package/src/writers/ts-type.ts +0 -115
- package/src/writers/value.ts +0 -485
package/dist/gir/parameter.d.ts
CHANGED
|
@@ -1,82 +1,40 @@
|
|
|
1
|
+
import type { ParseContext, TypeId } from "./type-id.js";
|
|
1
2
|
import { type RawNode } from "./parse.js";
|
|
2
|
-
import { type GirTypeRef } from "./type-ref.js";
|
|
3
|
-
/** Direction of a `<parameter>` (`in`, `out`, `inout`). */
|
|
4
3
|
type ParameterDirection = "in" | "out" | "inout";
|
|
5
|
-
|
|
6
|
-
* Lifetime conveyed by `transfer-ownership`. Mirrors the GIR vocabulary one
|
|
7
|
-
* for one; the marshal layer translates to the runtime's `Ownership` set.
|
|
8
|
-
*/
|
|
9
|
-
export type ParameterTransfer = "none" | "full" | "container";
|
|
10
|
-
/** Lifetime of a callback parameter (`scope=…`). */
|
|
4
|
+
type ParameterTransfer = "none" | "full" | "container";
|
|
11
5
|
type CallbackScope = "call" | "notified" | "async" | "forever";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
readonly transferOwnership: ParameterTransfer;
|
|
25
|
-
readonly nullable: boolean;
|
|
26
|
-
readonly optional: boolean;
|
|
27
|
-
/** `caller-allocates="1"` — used in out parameters that fill a caller buffer. */
|
|
28
|
-
readonly callerAllocates: boolean;
|
|
29
|
-
/** Lifetime of a callback parameter (defined only when the parameter is a callback). */
|
|
30
|
-
readonly scope: CallbackScope | undefined;
|
|
31
|
-
/** Index of the paired `gpointer user_data` parameter in the C signature. */
|
|
32
|
-
readonly closureIndex: number | undefined;
|
|
33
|
-
/** Index of the paired `GDestroyNotify` parameter in the C signature. */
|
|
34
|
-
readonly destroyIndex: number | undefined;
|
|
35
|
-
/** `true` for `<instance-parameter>` (the implicit `self` of a method). */
|
|
36
|
-
readonly isInstance: boolean;
|
|
37
|
-
/** `<varargs/>` parameter; not marshalable. */
|
|
38
|
-
readonly isVarargs: boolean;
|
|
6
|
+
type GirParameter = {
|
|
7
|
+
name: string;
|
|
8
|
+
type: TypeId | undefined;
|
|
9
|
+
direction: ParameterDirection;
|
|
10
|
+
transferOwnership: ParameterTransfer;
|
|
11
|
+
nullable: boolean;
|
|
12
|
+
optional: boolean;
|
|
13
|
+
callerAllocates: boolean;
|
|
14
|
+
scope: CallbackScope | undefined;
|
|
15
|
+
closureIndex: number | undefined;
|
|
16
|
+
destroyIndex: number | undefined;
|
|
17
|
+
isVarargs: boolean;
|
|
39
18
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
export declare const parameterFromNode: (node: RawNode, isInstance: boolean) => GirParameter;
|
|
47
|
-
/**
|
|
48
|
-
* Whether a parameter is a pure out-parameter: `direction="out"` and not
|
|
49
|
-
* caller-allocated, so it marshals through a `{ value }` cell the callee writes into.
|
|
50
|
-
*
|
|
51
|
-
* @param parameter - The parameter to test
|
|
52
|
-
*/
|
|
53
|
-
export declare const isOutParameter: (parameter: GirParameter) => boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Whether a parameter is a caller-allocated out-parameter: `direction="out"`
|
|
56
|
-
* with `caller-allocates="1"`, passed as a pre-built handle the callee fills
|
|
57
|
-
* in place rather than through a `{ value }` cell.
|
|
58
|
-
*
|
|
59
|
-
* @param parameter - The parameter to test
|
|
60
|
-
*/
|
|
61
|
-
export declare const isCallerAllocatedOut: (parameter: GirParameter) => boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Whether a parameter is an inout parameter (`direction="inout"`).
|
|
64
|
-
*
|
|
65
|
-
* @param parameter - The parameter to test
|
|
66
|
-
*/
|
|
67
|
-
export declare const isInoutParameter: (parameter: GirParameter) => boolean;
|
|
68
|
-
/** A `<return-value>` plus its inferred type and transfer settings. */
|
|
69
|
-
export type GirReturnValue = {
|
|
70
|
-
readonly type: GirTypeRef | undefined;
|
|
71
|
-
readonly transferOwnership: ParameterTransfer;
|
|
72
|
-
readonly nullable: boolean;
|
|
19
|
+
type GirReturnValue = {
|
|
20
|
+
type: TypeId | undefined;
|
|
21
|
+
transferOwnership: ParameterTransfer;
|
|
22
|
+
nullable: boolean;
|
|
23
|
+
skip: boolean;
|
|
73
24
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
25
|
+
type GirCallable = {
|
|
26
|
+
name: string;
|
|
27
|
+
doc: string | undefined;
|
|
28
|
+
parameters: GirParameter[];
|
|
29
|
+
returnValue: GirReturnValue;
|
|
30
|
+
throws: boolean;
|
|
31
|
+
introspectable: boolean;
|
|
32
|
+
};
|
|
33
|
+
declare const transferOwnership: (node: RawNode) => ParameterTransfer;
|
|
34
|
+
declare const parameterFromNode: (node: RawNode, context: ParseContext) => GirParameter;
|
|
35
|
+
declare const isOutParameter: (parameter: GirParameter) => boolean;
|
|
36
|
+
declare const isCallerAllocatedOut: (parameter: GirParameter) => boolean;
|
|
37
|
+
declare const isInoutParameter: (parameter: GirParameter) => boolean;
|
|
38
|
+
declare const parseCallable: (node: RawNode, context: ParseContext) => GirCallable;
|
|
39
|
+
export { transferOwnership, parameterFromNode, isOutParameter, isCallerAllocatedOut, isInoutParameter, parseCallable, type ParameterTransfer, type GirParameter, type GirReturnValue, type GirCallable, };
|
|
82
40
|
//# sourceMappingURL=parameter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EASH,KAAK,OAAO,EACf,MAAM,YAAY,CAAC;AAGpB,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AACjD,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAMF,QAAA,MAAM,iBAAiB,GAAI,MAAM,OAAO,KAAG,iBACiD,CAAC;AAe7F,QAAA,MAAM,iBAAiB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,YAYhE,CAAC;AAEH,QAAA,MAAM,cAAc,GAAI,WAAW,YAAY,KAAG,OACa,CAAC;AAEhE,QAAA,MAAM,oBAAoB,GAAI,WAAW,YAAY,KAAG,OACM,CAAC;AAE/D,QAAA,MAAM,gBAAgB,GAAI,WAAW,YAAY,KAAG,OAA0C,CAAC;AAe/F,QAAA,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAY7D,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,GACnB,CAAC"}
|
package/dist/gir/parameter.js
CHANGED
|
@@ -1,66 +1,54 @@
|
|
|
1
|
-
import { attr,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { attr, getChild, getChildren, getDoc, intAttr, isAttrTrue, nameAttr, parseEnumAttr, } from "./parse.js";
|
|
2
|
+
import { typeRefFromNode } from "./type-ref.js";
|
|
3
|
+
const DIRECTIONS = new Set(["in", "out", "inout"]);
|
|
4
|
+
const TRANSFERS = new Set(["none", "full", "container"]);
|
|
5
|
+
const SCOPES = new Set(["call", "notified", "async", "forever"]);
|
|
6
|
+
const transferOwnership = (node) => parseEnumAttr(attr(node, "transfer-ownership"), TRANSFERS, "none", "transfer-ownership");
|
|
7
|
+
// `allow-none` is the legacy spelling of two different attributes: on an in-parameter it means the
|
|
8
|
+
// value may be NULL (`nullable`), but on an out-parameter it means the caller may pass a NULL
|
|
9
|
+
// location (`optional`). Folding it into `nullable` for an out-parameter would claim the returned
|
|
10
|
+
// value can be null for the 494 out-parameters across the installed GIRs that only say `allow-none`.
|
|
11
|
+
const isInDirection = (node) => parseEnumAttr(attr(node, "direction"), DIRECTIONS, "in", "direction") === "in";
|
|
12
|
+
const hasNullableAttr = (node) => isAttrTrue(node, "nullable") || (isInDirection(node) && isAttrTrue(node, "allow-none"));
|
|
13
|
+
const hasOptionalAttr = (node) => isAttrTrue(node, "optional") || (!isInDirection(node) && isAttrTrue(node, "allow-none"));
|
|
14
|
+
const parameterFromNode = (node, context) => ({
|
|
15
|
+
name: nameAttr(node),
|
|
16
|
+
type: typeRefFromNode(node, context),
|
|
17
|
+
direction: parseEnumAttr(attr(node, "direction"), DIRECTIONS, "in", "direction"),
|
|
18
|
+
transferOwnership: transferOwnership(node),
|
|
19
|
+
nullable: hasNullableAttr(node),
|
|
20
|
+
optional: hasOptionalAttr(node),
|
|
21
|
+
callerAllocates: isAttrTrue(node, "caller-allocates"),
|
|
22
|
+
scope: parseEnumAttr(attr(node, "scope"), SCOPES, undefined, "scope"),
|
|
23
|
+
closureIndex: intAttr(node, "closure"),
|
|
24
|
+
destroyIndex: intAttr(node, "destroy"),
|
|
25
|
+
isVarargs: getChild(node, "varargs") !== undefined,
|
|
26
|
+
});
|
|
27
|
+
const isOutParameter = (parameter) => parameter.direction === "out" && !parameter.callerAllocates;
|
|
28
|
+
const isCallerAllocatedOut = (parameter) => parameter.direction === "out" && parameter.callerAllocates;
|
|
29
|
+
const isInoutParameter = (parameter) => parameter.direction === "inout";
|
|
30
|
+
const returnValueFromNode = (node, context) => {
|
|
31
|
+
if (node === undefined) {
|
|
32
|
+
return { type: undefined, transferOwnership: "none", nullable: false, skip: false };
|
|
33
|
+
}
|
|
14
34
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
nullable: attrBool(node, "nullable") || attrBool(node, "allow-none"),
|
|
20
|
-
optional: attrBool(node, "optional"),
|
|
21
|
-
callerAllocates: attrBool(node, "caller-allocates"),
|
|
22
|
-
scope: attr(node, "scope"),
|
|
23
|
-
closureIndex: closure === undefined ? undefined : Number.parseInt(closure, 10),
|
|
24
|
-
destroyIndex: destroy === undefined ? undefined : Number.parseInt(destroy, 10),
|
|
25
|
-
isInstance,
|
|
26
|
-
isVarargs: childOf(node, "varargs") !== undefined,
|
|
35
|
+
type: typeRefFromNode(node, context),
|
|
36
|
+
transferOwnership: transferOwnership(node),
|
|
37
|
+
nullable: hasNullableAttr(node),
|
|
38
|
+
skip: isAttrTrue(node, "skip"),
|
|
27
39
|
};
|
|
28
40
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
* @param parameter - The parameter to test
|
|
34
|
-
*/
|
|
35
|
-
export const isOutParameter = (parameter) => parameter.direction === "out" && !parameter.callerAllocates;
|
|
36
|
-
/**
|
|
37
|
-
* Whether a parameter is a caller-allocated out-parameter: `direction="out"`
|
|
38
|
-
* with `caller-allocates="1"`, passed as a pre-built handle the callee fills
|
|
39
|
-
* in place rather than through a `{ value }` cell.
|
|
40
|
-
*
|
|
41
|
-
* @param parameter - The parameter to test
|
|
42
|
-
*/
|
|
43
|
-
export const isCallerAllocatedOut = (parameter) => parameter.direction === "out" && parameter.callerAllocates;
|
|
44
|
-
/**
|
|
45
|
-
* Whether a parameter is an inout parameter (`direction="inout"`).
|
|
46
|
-
*
|
|
47
|
-
* @param parameter - The parameter to test
|
|
48
|
-
*/
|
|
49
|
-
export const isInoutParameter = (parameter) => parameter.direction === "inout";
|
|
50
|
-
/**
|
|
51
|
-
* Builds a {@link GirReturnValue} from a `<return-value>` element, or returns a
|
|
52
|
-
* void return when the element is missing.
|
|
53
|
-
*
|
|
54
|
-
* @param node - The `<return-value>` element, or `undefined`
|
|
55
|
-
*/
|
|
56
|
-
export const returnValueFromNode = (node) => {
|
|
57
|
-
if (node === undefined) {
|
|
58
|
-
return { type: undefined, transferOwnership: "none", nullable: false };
|
|
59
|
-
}
|
|
41
|
+
const parseCallable = (node, context) => {
|
|
42
|
+
const parametersNode = getChild(node, "parameters");
|
|
43
|
+
const parameterNodes = getChildren(parametersNode, "parameter");
|
|
60
44
|
return {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
name: nameAttr(node),
|
|
46
|
+
doc: getDoc(node),
|
|
47
|
+
parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, context)),
|
|
48
|
+
returnValue: returnValueFromNode(getChild(node, "return-value"), context),
|
|
49
|
+
throws: isAttrTrue(node, "throws"),
|
|
50
|
+
introspectable: isAttrTrue(node, "introspectable", true),
|
|
64
51
|
};
|
|
65
52
|
};
|
|
53
|
+
export { transferOwnership, parameterFromNode, isOutParameter, isCallerAllocatedOut, isInoutParameter, parseCallable, };
|
|
66
54
|
//# sourceMappingURL=parameter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ParseContext, TypeId } from \"./type-id.js\";\nimport {\n attr,\n getChild,\n getChildren,\n getDoc,\n intAttr,\n isAttrTrue,\n nameAttr,\n parseEnumAttr,\n type RawNode,\n} from \"./parse.js\";\nimport { typeRefFromNode } from \"./type-ref.js\";\n\ntype ParameterDirection = \"in\" | \"out\" | \"inout\";\ntype ParameterTransfer = \"none\" | \"full\" | \"container\";\ntype CallbackScope = \"call\" | \"notified\" | \"async\" | \"forever\";\n\ntype GirParameter = {\n name: string;\n type: TypeId | undefined;\n direction: ParameterDirection;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n optional: boolean;\n callerAllocates: boolean;\n scope: CallbackScope | undefined;\n closureIndex: number | undefined;\n destroyIndex: number | undefined;\n isVarargs: boolean;\n};\n\ntype GirReturnValue = {\n type: TypeId | undefined;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n skip: boolean;\n};\n\ntype GirCallable = {\n name: string;\n doc: string | undefined;\n parameters: GirParameter[];\n returnValue: GirReturnValue;\n throws: boolean;\n introspectable: boolean;\n};\n\nconst DIRECTIONS: Set<ParameterDirection> = new Set([\"in\", \"out\", \"inout\"]);\nconst TRANSFERS: Set<ParameterTransfer> = new Set([\"none\", \"full\", \"container\"]);\nconst SCOPES: Set<CallbackScope> = new Set([\"call\", \"notified\", \"async\", \"forever\"]);\n\nconst transferOwnership = (node: RawNode): ParameterTransfer =>\n parseEnumAttr(attr(node, \"transfer-ownership\"), TRANSFERS, \"none\", \"transfer-ownership\");\n\n// `allow-none` is the legacy spelling of two different attributes: on an in-parameter it means the\n// value may be NULL (`nullable`), but on an out-parameter it means the caller may pass a NULL\n// location (`optional`). Folding it into `nullable` for an out-parameter would claim the returned\n// value can be null for the 494 out-parameters across the installed GIRs that only say `allow-none`.\nconst isInDirection = (node: RawNode): boolean =>\n parseEnumAttr(attr(node, \"direction\"), DIRECTIONS, \"in\", \"direction\") === \"in\";\n\nconst hasNullableAttr = (node: RawNode): boolean =>\n isAttrTrue(node, \"nullable\") || (isInDirection(node) && isAttrTrue(node, \"allow-none\"));\n\nconst hasOptionalAttr = (node: RawNode): boolean =>\n isAttrTrue(node, \"optional\") || (!isInDirection(node) && isAttrTrue(node, \"allow-none\"));\n\nconst parameterFromNode = (node: RawNode, context: ParseContext): GirParameter => ({\n name: nameAttr(node),\n type: typeRefFromNode(node, context),\n direction: parseEnumAttr(attr(node, \"direction\"), DIRECTIONS, \"in\", \"direction\"),\n transferOwnership: transferOwnership(node),\n nullable: hasNullableAttr(node),\n optional: hasOptionalAttr(node),\n callerAllocates: isAttrTrue(node, \"caller-allocates\"),\n scope: parseEnumAttr(attr(node, \"scope\"), SCOPES, undefined, \"scope\"),\n closureIndex: intAttr(node, \"closure\"),\n destroyIndex: intAttr(node, \"destroy\"),\n isVarargs: getChild(node, \"varargs\") !== undefined,\n});\n\nconst isOutParameter = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && !parameter.callerAllocates;\n\nconst isCallerAllocatedOut = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && parameter.callerAllocates;\n\nconst isInoutParameter = (parameter: GirParameter): boolean => parameter.direction === \"inout\";\n\nconst returnValueFromNode = (node: RawNode | undefined, context: ParseContext): GirReturnValue => {\n if (node === undefined) {\n return { type: undefined, transferOwnership: \"none\", nullable: false, skip: false };\n }\n\n return {\n type: typeRefFromNode(node, context),\n transferOwnership: transferOwnership(node),\n nullable: hasNullableAttr(node),\n skip: isAttrTrue(node, \"skip\"),\n };\n};\n\nconst parseCallable = (node: RawNode, context: ParseContext): GirCallable => {\n const parametersNode = getChild(node, \"parameters\");\n const parameterNodes = getChildren(parametersNode, \"parameter\");\n\n return {\n name: nameAttr(node),\n doc: getDoc(node),\n parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, context)),\n returnValue: returnValueFromNode(getChild(node, \"return-value\"), context),\n throws: isAttrTrue(node, \"throws\"),\n introspectable: isAttrTrue(node, \"introspectable\", true),\n };\n};\n\nexport {\n transferOwnership,\n parameterFromNode,\n isOutParameter,\n isCallerAllocatedOut,\n isInoutParameter,\n parseCallable,\n type ParameterTransfer,\n type GirParameter,\n type GirReturnValue,\n type GirCallable,\n};\n"]}
|
package/dist/gir/parse.d.ts
CHANGED
|
@@ -1,78 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* The tag name codegen reads GIR constructors under.
|
|
15
|
-
*
|
|
16
|
-
* GIR spells constructors `<constructor>`, but `fast-xml-parser` rejects the
|
|
17
|
-
* literal names `constructor`, `prototype`, and `__proto__` to guard against
|
|
18
|
-
* prototype pollution, with no opt-out. {@link parseGirFile} rewrites the tag
|
|
19
|
-
* to this token via `transformTagName` before that guard runs, so every
|
|
20
|
-
* downstream lookup of a constructor child must use this constant rather than
|
|
21
|
-
* the raw GIR name.
|
|
22
|
-
*/
|
|
23
|
-
export declare const GIR_CONSTRUCTOR_TAG = "gir-constructor";
|
|
24
|
-
/**
|
|
25
|
-
* Parses a GIR XML file from disk and returns its raw tree.
|
|
26
|
-
*
|
|
27
|
-
* The returned object always has a single `repository` property containing
|
|
28
|
-
* the root `<repository>` element. Callers should not interpret the tree
|
|
29
|
-
* directly — pass it to {@link GirRepository.load} (in `./repository.ts`),
|
|
30
|
-
* which builds the typed domain model on top of it.
|
|
31
|
-
*
|
|
32
|
-
* @param path - Absolute path to a `.gir` file
|
|
33
|
-
* @returns The raw repository node
|
|
34
|
-
*/
|
|
35
|
-
export declare const parseGirFile: (path: string) => RawNode;
|
|
36
|
-
/**
|
|
37
|
-
* Reads an attribute from a raw GIR node as a string, returning `undefined`
|
|
38
|
-
* when the attribute is absent.
|
|
39
|
-
*
|
|
40
|
-
* The `@_` prefix is added by `fast-xml-parser`; this helper hides that
|
|
41
|
-
* convention from the call sites.
|
|
42
|
-
*
|
|
43
|
-
* @param node - The raw element
|
|
44
|
-
* @param name - The attribute name (without the `@_` prefix)
|
|
45
|
-
*/
|
|
46
|
-
export declare const attr: (node: RawNode | undefined, name: string) => string | undefined;
|
|
47
|
-
/**
|
|
48
|
-
* Reads an attribute as a boolean using GIR's `"1"` / `"0"` convention.
|
|
49
|
-
*
|
|
50
|
-
* Attributes that are missing return the supplied default (defaulting to
|
|
51
|
-
* `false`). Any non-`"1"` value is treated as `false`.
|
|
52
|
-
*
|
|
53
|
-
* @param node - The raw element
|
|
54
|
-
* @param name - The attribute name (without the `@_` prefix)
|
|
55
|
-
* @param fallback - Value returned when the attribute is missing
|
|
56
|
-
*/
|
|
57
|
-
export declare const attrBool: (node: RawNode | undefined, name: string, fallback?: boolean) => boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Returns the children of a raw node under a given tag name as an array.
|
|
60
|
-
*
|
|
61
|
-
* The parser configuration forces multi-occurrence tags to arrays already;
|
|
62
|
-
* this helper covers the residual case where a tag was registered as
|
|
63
|
-
* single-occurrence at the schema level but a particular file emits zero
|
|
64
|
-
* elements (returning `[]`) or where the caller wants a uniform array view.
|
|
65
|
-
*
|
|
66
|
-
* @param node - The parent element
|
|
67
|
-
* @param tag - The child tag name (with namespace prefix if any)
|
|
68
|
-
*/
|
|
69
|
-
export declare const childrenOf: (node: RawNode | undefined, tag: string) => readonly RawNode[];
|
|
70
|
-
/**
|
|
71
|
-
* Returns the single child of a raw node under a given tag, or `undefined`
|
|
72
|
-
* if absent. If multiple are present the first is returned.
|
|
73
|
-
*
|
|
74
|
-
* @param node - The parent element
|
|
75
|
-
* @param tag - The child tag name (with namespace prefix if any)
|
|
76
|
-
*/
|
|
77
|
-
export declare const childOf: (node: RawNode | undefined, tag: string) => RawNode | undefined;
|
|
1
|
+
type RawNode = Record<string, unknown>;
|
|
2
|
+
declare const GIR_CONSTRUCTOR_TAG = "gir-constructor";
|
|
3
|
+
declare const parseGirFile: (path: string) => RawNode;
|
|
4
|
+
declare const attr: (node: RawNode | undefined, name: string) => string | undefined;
|
|
5
|
+
declare const isAttrTrue: (node: RawNode | undefined, name: string, isTrueByDefault?: boolean) => boolean;
|
|
6
|
+
declare const nameAttr: (node: RawNode) => string;
|
|
7
|
+
declare const intAttr: (node: RawNode, name: string) => number | undefined;
|
|
8
|
+
declare const parseEnumAttr: <T extends string, F extends T | undefined>(raw: string | undefined, members: Set<T>, fallback: F, label: string) => T | F;
|
|
9
|
+
declare const getChildren: (node: RawNode | undefined, tag: string) => RawNode[];
|
|
10
|
+
declare const getChild: (node: RawNode | undefined, tag: string) => RawNode | undefined;
|
|
11
|
+
declare const getDoc: (node: RawNode | undefined) => string | undefined;
|
|
12
|
+
export { GIR_CONSTRUCTOR_TAG, parseGirFile, attr, isAttrTrue, nameAttr, intAttr, parseEnumAttr, getChildren, getChild, getDoc, type RawNode, };
|
|
78
13
|
//# sourceMappingURL=parse.d.ts.map
|
package/dist/gir/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyBvC,QAAA,MAAM,mBAAmB,oBAAoB,CAAC;AAc9C,QAAA,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAIpC,CAAC;AAEF,QAAA,MAAM,IAAI,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAQhE,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,MAAM,EAAE,yBAAuB,KAAG,OAQtF,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,MAAkC,CAAC;AAErE,QAAA,MAAM,OAAO,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAIvD,CAAC;AAYF,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,SAAS,EAC5D,KAAK,MAAM,GAAG,SAAS,EACvB,SAAS,GAAG,CAAC,CAAC,CAAC,EACf,UAAU,CAAC,EACX,OAAO,MAAM,KACd,CAAC,GAAG,CAAqE,CAAC;AAE7E,QAAA,MAAM,WAAW,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,MAAM,KAAG,OAAO,EAgBpE,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,MAAM,KAAG,OAAO,GAAG,SAgBpE,CAAC;AAgBF,QAAA,MAAM,MAAM,GAAI,MAAM,OAAO,GAAG,SAAS,KAAG,MAAM,GAAG,SAgBpD,CAAC;AAEF,OAAO,EACH,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAW,EACX,QAAQ,EACR,MAAM,EACN,KAAK,OAAO,GACf,CAAC"}
|
package/dist/gir/parse.js
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
import {
|
|
3
|
-
/**
|
|
4
|
-
* Tag names that the GIR schema permits at multi-occurrence positions.
|
|
5
|
-
*
|
|
6
|
-
* `fast-xml-parser` is configured to always materialize these as arrays so
|
|
7
|
-
* downstream traversal never needs to branch on "is this an object or an
|
|
8
|
-
* array of objects". Tags missing from this set may appear as a single
|
|
9
|
-
* object (e.g. `<return-value>`, `<parameters>`, `<type>`, `<doc>`).
|
|
10
|
-
*/
|
|
2
|
+
import { createXmlParser } from "../xml.js";
|
|
11
3
|
const MULTI_TAGS = new Set([
|
|
12
4
|
"include",
|
|
13
|
-
"c:include",
|
|
14
|
-
"package",
|
|
15
5
|
"class",
|
|
16
6
|
"interface",
|
|
17
7
|
"record",
|
|
@@ -19,14 +9,11 @@ const MULTI_TAGS = new Set([
|
|
|
19
9
|
"bitfield",
|
|
20
10
|
"callback",
|
|
21
11
|
"function",
|
|
22
|
-
"function-macro",
|
|
23
12
|
"constant",
|
|
24
13
|
"alias",
|
|
25
14
|
"union",
|
|
26
|
-
"glib:boxed",
|
|
27
15
|
"method",
|
|
28
16
|
"constructor",
|
|
29
|
-
"virtual-method",
|
|
30
17
|
"property",
|
|
31
18
|
"field",
|
|
32
19
|
"glib:signal",
|
|
@@ -34,122 +21,97 @@ const MULTI_TAGS = new Set([
|
|
|
34
21
|
"prerequisite",
|
|
35
22
|
"member",
|
|
36
23
|
"parameter",
|
|
37
|
-
"attribute",
|
|
38
24
|
]);
|
|
39
|
-
|
|
40
|
-
* The tag name codegen reads GIR constructors under.
|
|
41
|
-
*
|
|
42
|
-
* GIR spells constructors `<constructor>`, but `fast-xml-parser` rejects the
|
|
43
|
-
* literal names `constructor`, `prototype`, and `__proto__` to guard against
|
|
44
|
-
* prototype pollution, with no opt-out. {@link parseGirFile} rewrites the tag
|
|
45
|
-
* to this token via `transformTagName` before that guard runs, so every
|
|
46
|
-
* downstream lookup of a constructor child must use this constant rather than
|
|
47
|
-
* the raw GIR name.
|
|
48
|
-
*/
|
|
49
|
-
export const GIR_CONSTRUCTOR_TAG = "gir-constructor";
|
|
25
|
+
const GIR_CONSTRUCTOR_TAG = "gir-constructor";
|
|
50
26
|
const RESERVED_TAG_RENAMES = new Map([["constructor", GIR_CONSTRUCTOR_TAG]]);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* names {@link RESERVED_TAG_RENAMES} covers and passing every other tag
|
|
54
|
-
* through unchanged.
|
|
55
|
-
*
|
|
56
|
-
* @param tag - The raw GIR tag name
|
|
57
|
-
*/
|
|
58
|
-
const renameReservedTag = (tag) => RESERVED_TAG_RENAMES.get(tag) ?? tag;
|
|
59
|
-
const RENAMED_MULTI_TAGS = new Set([...MULTI_TAGS].map(renameReservedTag));
|
|
60
|
-
const PARSER = new XMLParser({
|
|
61
|
-
ignoreAttributes: false,
|
|
62
|
-
attributeNamePrefix: "@_",
|
|
63
|
-
parseAttributeValue: false,
|
|
64
|
-
parseTagValue: false,
|
|
27
|
+
const RENAMED_MULTI_TAGS = new Set([...MULTI_TAGS].map((tag) => renameReservedTag(tag)));
|
|
28
|
+
const PARSER = createXmlParser({
|
|
65
29
|
trimValues: true,
|
|
66
30
|
transformTagName: renameReservedTag,
|
|
67
31
|
isArray: (name) => RENAMED_MULTI_TAGS.has(name),
|
|
68
32
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* directly — pass it to {@link GirRepository.load} (in `./repository.ts`),
|
|
75
|
-
* which builds the typed domain model on top of it.
|
|
76
|
-
*
|
|
77
|
-
* @param path - Absolute path to a `.gir` file
|
|
78
|
-
* @returns The raw repository node
|
|
79
|
-
*/
|
|
80
|
-
export const parseGirFile = (path) => {
|
|
81
|
-
const xml = readFileSync(path, "utf-8");
|
|
33
|
+
function renameReservedTag(tag) {
|
|
34
|
+
return RESERVED_TAG_RENAMES.get(tag) ?? tag;
|
|
35
|
+
}
|
|
36
|
+
const parseGirFile = (path) => {
|
|
37
|
+
const xml = readFileSync(path, "utf8");
|
|
82
38
|
return PARSER.parse(xml);
|
|
83
39
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
* when the attribute is absent.
|
|
87
|
-
*
|
|
88
|
-
* The `@_` prefix is added by `fast-xml-parser`; this helper hides that
|
|
89
|
-
* convention from the call sites.
|
|
90
|
-
*
|
|
91
|
-
* @param node - The raw element
|
|
92
|
-
* @param name - The attribute name (without the `@_` prefix)
|
|
93
|
-
*/
|
|
94
|
-
export const attr = (node, name) => {
|
|
95
|
-
if (node === undefined)
|
|
40
|
+
const attr = (node, name) => {
|
|
41
|
+
if (node === undefined) {
|
|
96
42
|
return undefined;
|
|
43
|
+
}
|
|
97
44
|
const value = node[`@_${name}`];
|
|
98
45
|
return typeof value === "string" ? value : undefined;
|
|
99
46
|
};
|
|
100
|
-
|
|
101
|
-
* Reads an attribute as a boolean using GIR's `"1"` / `"0"` convention.
|
|
102
|
-
*
|
|
103
|
-
* Attributes that are missing return the supplied default (defaulting to
|
|
104
|
-
* `false`). Any non-`"1"` value is treated as `false`.
|
|
105
|
-
*
|
|
106
|
-
* @param node - The raw element
|
|
107
|
-
* @param name - The attribute name (without the `@_` prefix)
|
|
108
|
-
* @param fallback - Value returned when the attribute is missing
|
|
109
|
-
*/
|
|
110
|
-
export const attrBool = (node, name, fallback = false) => {
|
|
47
|
+
const isAttrTrue = (node, name, isTrueByDefault = false) => {
|
|
111
48
|
const value = attr(node, name);
|
|
112
|
-
if (value === undefined)
|
|
113
|
-
return
|
|
49
|
+
if (value === undefined) {
|
|
50
|
+
return isTrueByDefault;
|
|
51
|
+
}
|
|
114
52
|
return value === "1";
|
|
115
53
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
54
|
+
const nameAttr = (node) => attr(node, "name") ?? "";
|
|
55
|
+
const intAttr = (node, name) => {
|
|
56
|
+
const raw = attr(node, name);
|
|
57
|
+
return raw === undefined ? undefined : Number(raw);
|
|
58
|
+
};
|
|
59
|
+
const enumMember = (raw, members, label) => {
|
|
60
|
+
for (const member of members) {
|
|
61
|
+
if (member === raw) {
|
|
62
|
+
return member;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
throw new Error(`Unknown ${label} value "${raw}"`);
|
|
66
|
+
};
|
|
67
|
+
const parseEnumAttr = (raw, members, fallback, label) => (raw === undefined ? fallback : enumMember(raw, members, label));
|
|
68
|
+
const getChildren = (node, tag) => {
|
|
69
|
+
if (node === undefined) {
|
|
129
70
|
return [];
|
|
71
|
+
}
|
|
130
72
|
const value = node[tag];
|
|
131
|
-
if (value === undefined)
|
|
73
|
+
if (value === undefined) {
|
|
132
74
|
return [];
|
|
133
|
-
|
|
75
|
+
}
|
|
76
|
+
if (Array.isArray(value)) {
|
|
134
77
|
return value;
|
|
78
|
+
}
|
|
135
79
|
return [value];
|
|
136
80
|
};
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* if absent. If multiple are present the first is returned.
|
|
140
|
-
*
|
|
141
|
-
* @param node - The parent element
|
|
142
|
-
* @param tag - The child tag name (with namespace prefix if any)
|
|
143
|
-
*/
|
|
144
|
-
export const childOf = (node, tag) => {
|
|
145
|
-
if (node === undefined)
|
|
81
|
+
const getChild = (node, tag) => {
|
|
82
|
+
if (node === undefined) {
|
|
146
83
|
return undefined;
|
|
84
|
+
}
|
|
147
85
|
const value = node[tag];
|
|
148
|
-
if (value === undefined)
|
|
86
|
+
if (value === undefined) {
|
|
149
87
|
return undefined;
|
|
88
|
+
}
|
|
150
89
|
if (Array.isArray(value)) {
|
|
151
90
|
return value.length === 0 ? undefined : value[0];
|
|
152
91
|
}
|
|
153
92
|
return value;
|
|
154
93
|
};
|
|
94
|
+
const normalizeDoc = (text) => {
|
|
95
|
+
const trimmed = text.trim();
|
|
96
|
+
return trimmed.length === 0 ? undefined : trimmed;
|
|
97
|
+
};
|
|
98
|
+
const firstDocValue = (raw) => (Array.isArray(raw) ? raw[0] : raw);
|
|
99
|
+
const docTextFromObject = (value) => {
|
|
100
|
+
const text = value["#text"];
|
|
101
|
+
return typeof text === "string" ? normalizeDoc(text) : undefined;
|
|
102
|
+
};
|
|
103
|
+
const getDoc = (node) => {
|
|
104
|
+
if (node === undefined) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const value = firstDocValue(node.doc);
|
|
108
|
+
if (typeof value === "string") {
|
|
109
|
+
return normalizeDoc(value);
|
|
110
|
+
}
|
|
111
|
+
if (value === null || typeof value !== "object") {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
return docTextFromObject(value);
|
|
115
|
+
};
|
|
116
|
+
export { GIR_CONSTRUCTOR_TAG, parseGirFile, attr, isAttrTrue, nameAttr, intAttr, parseEnumAttr, getChildren, getChild, getDoc, };
|
|
155
117
|
//# sourceMappingURL=parse.js.map
|
package/dist/gir/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { createXmlParser } from \"../xml.js\";\n\ntype RawNode = Record<string, unknown>;\n\nconst MULTI_TAGS: Set<string> = new Set([\n \"include\",\n \"class\",\n \"interface\",\n \"record\",\n \"enumeration\",\n \"bitfield\",\n \"callback\",\n \"function\",\n \"constant\",\n \"alias\",\n \"union\",\n \"method\",\n \"constructor\",\n \"property\",\n \"field\",\n \"glib:signal\",\n \"implements\",\n \"prerequisite\",\n \"member\",\n \"parameter\",\n]);\n\nconst GIR_CONSTRUCTOR_TAG = \"gir-constructor\";\nconst RESERVED_TAG_RENAMES: Map<string, string> = new Map([[\"constructor\", GIR_CONSTRUCTOR_TAG]]);\nconst RENAMED_MULTI_TAGS: Set<string> = new Set([...MULTI_TAGS].map((tag) => renameReservedTag(tag)));\n\nconst PARSER = createXmlParser({\n trimValues: true,\n transformTagName: renameReservedTag,\n isArray: (name) => RENAMED_MULTI_TAGS.has(name),\n});\n\nfunction renameReservedTag(tag: string): string {\n return RESERVED_TAG_RENAMES.get(tag) ?? tag;\n}\n\nconst parseGirFile = (path: string): RawNode => {\n const xml = readFileSync(path, \"utf8\");\n\n return PARSER.parse(xml) as RawNode;\n};\n\nconst attr = (node: RawNode | undefined, name: string): string | undefined => {\n if (node === undefined) {\n return undefined;\n }\n\n const value = node[`@_${name}`];\n\n return typeof value === \"string\" ? value : undefined;\n};\n\nconst isAttrTrue = (node: RawNode | undefined, name: string, isTrueByDefault = false): boolean => {\n const value = attr(node, name);\n\n if (value === undefined) {\n return isTrueByDefault;\n }\n\n return value === \"1\";\n};\n\nconst nameAttr = (node: RawNode): string => attr(node, \"name\") ?? \"\";\n\nconst intAttr = (node: RawNode, name: string): number | undefined => {\n const raw = attr(node, name);\n\n return raw === undefined ? undefined : Number(raw);\n};\n\nconst enumMember = <T extends string>(raw: string, members: Set<T>, label: string): T => {\n for (const member of members) {\n if (member === raw) {\n return member;\n }\n }\n\n throw new Error(`Unknown ${label} value \"${raw}\"`);\n};\n\nconst parseEnumAttr = <T extends string, F extends T | undefined>(\n raw: string | undefined,\n members: Set<T>,\n fallback: F,\n label: string,\n): T | F => (raw === undefined ? fallback : enumMember(raw, members, label));\n\nconst getChildren = (node: RawNode | undefined, tag: string): RawNode[] => {\n if (node === undefined) {\n return [];\n }\n\n const value = node[tag];\n\n if (value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value as RawNode[];\n }\n\n return [value as RawNode];\n};\n\nconst getChild = (node: RawNode | undefined, tag: string): RawNode | undefined => {\n if (node === undefined) {\n return undefined;\n }\n\n const value = node[tag];\n\n if (value === undefined) {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0 ? undefined : (value[0] as RawNode);\n }\n\n return value as RawNode;\n};\n\nconst normalizeDoc = (text: string): string | undefined => {\n const trimmed = text.trim();\n\n return trimmed.length === 0 ? undefined : trimmed;\n};\n\nconst firstDocValue = (raw: unknown): unknown => (Array.isArray(raw) ? raw[0] : raw);\n\nconst docTextFromObject = (value: object): string | undefined => {\n const text = (value as RawNode)[\"#text\"];\n\n return typeof text === \"string\" ? normalizeDoc(text) : undefined;\n};\n\nconst getDoc = (node: RawNode | undefined): string | undefined => {\n if (node === undefined) {\n return undefined;\n }\n\n const value = firstDocValue(node.doc);\n\n if (typeof value === \"string\") {\n return normalizeDoc(value);\n }\n\n if (value === null || typeof value !== \"object\") {\n return undefined;\n }\n\n return docTextFromObject(value);\n};\n\nexport {\n GIR_CONSTRUCTOR_TAG,\n parseGirFile,\n attr,\n isAttrTrue,\n nameAttr,\n intAttr,\n parseEnumAttr,\n getChildren,\n getChild,\n getDoc,\n type RawNode,\n};\n"]}
|