@gtkx/codegen 0.21.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -0
- package/dist/analysis/descriptor-render.d.ts +18 -0
- package/dist/analysis/descriptor-render.d.ts.map +1 -0
- package/dist/analysis/descriptor-render.js +297 -0
- package/dist/analysis/descriptor-render.js.map +1 -0
- package/dist/analysis/descriptor.d.ts +59 -0
- package/dist/analysis/descriptor.d.ts.map +1 -0
- package/dist/analysis/descriptor.js +123 -0
- package/dist/analysis/descriptor.js.map +1 -0
- package/dist/analysis/inheritance.d.ts +38 -0
- package/dist/analysis/inheritance.d.ts.map +1 -0
- package/dist/analysis/inheritance.js +193 -0
- package/dist/analysis/inheritance.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +26 -0
- package/dist/analysis/param-structure.d.ts.map +1 -0
- package/dist/analysis/param-structure.js +107 -0
- package/dist/analysis/param-structure.js.map +1 -0
- package/dist/analysis/ts-type.d.ts +19 -0
- package/dist/analysis/ts-type.d.ts.map +1 -0
- package/dist/analysis/ts-type.js +65 -0
- package/dist/analysis/ts-type.js.map +1 -0
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +123 -0
- package/dist/compile.js.map +1 -0
- package/dist/docs/api-reference.d.ts +66 -0
- package/dist/docs/api-reference.d.ts.map +1 -0
- package/dist/docs/api-reference.js +299 -0
- package/dist/docs/api-reference.js.map +1 -0
- package/dist/docs/element-page.d.ts +15 -0
- package/dist/docs/element-page.d.ts.map +1 -0
- package/dist/docs/element-page.js +221 -0
- package/dist/docs/element-page.js.map +1 -0
- package/dist/docs/pipeline.d.ts +25 -0
- package/dist/docs/pipeline.d.ts.map +1 -0
- package/dist/docs/pipeline.js +130 -0
- package/dist/docs/pipeline.js.map +1 -0
- package/dist/docs/render.d.ts +32 -0
- package/dist/docs/render.d.ts.map +1 -0
- package/dist/docs/render.js +134 -0
- package/dist/docs/render.js.map +1 -0
- package/dist/docs/symbol-page.d.ts +41 -0
- package/dist/docs/symbol-page.d.ts.map +1 -0
- package/dist/docs/symbol-page.js +338 -0
- package/dist/docs/symbol-page.js.map +1 -0
- package/dist/fingerprint.d.ts +6 -26
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +30 -18
- package/dist/fingerprint.js.map +1 -1
- package/dist/gir/ancestry.d.ts +9 -0
- package/dist/gir/ancestry.d.ts.map +1 -0
- package/dist/gir/ancestry.js +29 -0
- package/dist/gir/ancestry.js.map +1 -0
- package/dist/gir/callback.d.ts +9 -10
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +17 -16
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +22 -43
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +11 -23
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +13 -31
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +7 -14
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +10 -23
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +12 -18
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +11 -42
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +7 -20
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +2 -0
- package/dist/gir/gir-path.d.ts.map +1 -0
- package/dist/gir/gir-path.js +41 -0
- package/dist/gir/gir-path.js.map +1 -0
- package/dist/gir/libraries.d.ts +4 -0
- package/dist/gir/libraries.d.ts.map +1 -0
- package/dist/gir/libraries.js +62 -0
- package/dist/gir/libraries.js.map +1 -0
- package/dist/gir/library.d.ts +37 -0
- package/dist/gir/library.d.ts.map +1 -0
- package/dist/gir/library.js +218 -0
- package/dist/gir/library.js.map +1 -0
- package/dist/gir/namespace.d.ts +36 -50
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +46 -36
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/parameter.d.ts +25 -69
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +36 -57
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +6 -70
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +32 -80
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +3 -34
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +19 -35
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +16 -25
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +12 -9
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +27 -0
- package/dist/gir/record.d.ts.map +1 -0
- package/dist/gir/record.js +25 -0
- package/dist/gir/record.js.map +1 -0
- package/dist/gir/size.d.ts +10 -57
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +0 -25
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +49 -0
- package/dist/gir/type-id.d.ts.map +1 -0
- package/dist/gir/type-id.js +8 -0
- package/dist/gir/type-id.js.map +1 -0
- package/dist/gir/type-ref.d.ts +3 -77
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +35 -65
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +33 -0
- package/dist/gir/type.d.ts.map +1 -0
- package/dist/gir/type.js +2 -0
- package/dist/gir/type.js.map +1 -0
- package/dist/index.d.ts +5 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -11
- package/dist/index.js.map +1 -1
- package/dist/khronos/args.d.ts +30 -0
- package/dist/khronos/args.d.ts.map +1 -0
- package/dist/khronos/args.js +150 -0
- package/dist/khronos/args.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +21 -0
- package/dist/khronos/jsdoc.d.ts.map +1 -0
- package/dist/khronos/jsdoc.js +59 -0
- package/dist/khronos/jsdoc.js.map +1 -0
- package/dist/khronos/model.d.ts +37 -0
- package/dist/khronos/model.d.ts.map +1 -0
- package/dist/khronos/model.js +132 -0
- package/dist/khronos/model.js.map +1 -0
- package/dist/khronos/modules.d.ts +11 -0
- package/dist/khronos/modules.d.ts.map +1 -0
- package/dist/khronos/modules.js +58 -0
- package/dist/khronos/modules.js.map +1 -0
- package/dist/khronos/parse.d.ts +9 -0
- package/dist/khronos/parse.d.ts.map +1 -0
- package/dist/khronos/parse.js +61 -0
- package/dist/khronos/parse.js.map +1 -0
- package/dist/khronos/pipeline.d.ts +24 -0
- package/dist/khronos/pipeline.d.ts.map +1 -0
- package/dist/khronos/pipeline.js +182 -0
- package/dist/khronos/pipeline.js.map +1 -0
- package/dist/khronos/plan.d.ts +80 -0
- package/dist/khronos/plan.d.ts.map +1 -0
- package/dist/khronos/plan.js +136 -0
- package/dist/khronos/plan.js.map +1 -0
- package/dist/khronos/render.d.ts +16 -0
- package/dist/khronos/render.d.ts.map +1 -0
- package/dist/khronos/render.js +158 -0
- package/dist/khronos/render.js.map +1 -0
- package/dist/khronos/select.d.ts +15 -0
- package/dist/khronos/select.d.ts.map +1 -0
- package/dist/khronos/select.js +45 -0
- package/dist/khronos/select.js.map +1 -0
- package/dist/runner.d.ts +29 -47
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +78 -53
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +9 -0
- package/dist/store/compile-store.d.ts.map +1 -0
- package/dist/store/compile-store.js +38 -0
- package/dist/store/compile-store.js.map +1 -0
- package/dist/store/gi/async.d.ts +4 -0
- package/dist/store/gi/async.d.ts.map +1 -0
- package/dist/store/gi/async.js +41 -0
- package/dist/store/gi/async.js.map +1 -0
- package/dist/store/gi/callables.d.ts +36 -0
- package/dist/store/gi/callables.d.ts.map +1 -0
- package/dist/store/gi/callables.js +202 -0
- package/dist/store/gi/callables.js.map +1 -0
- package/dist/store/gi/callback.d.ts +4 -0
- package/dist/store/gi/callback.d.ts.map +1 -0
- package/dist/store/gi/callback.js +14 -0
- package/dist/store/gi/callback.js.map +1 -0
- package/dist/store/gi/class-struct-record.d.ts +9 -0
- package/dist/store/gi/class-struct-record.d.ts.map +1 -0
- package/dist/store/gi/class-struct-record.js +34 -0
- package/dist/store/gi/class-struct-record.js.map +1 -0
- package/dist/store/gi/class.d.ts +4 -0
- package/dist/store/gi/class.d.ts.map +1 -0
- package/dist/store/gi/class.js +169 -0
- package/dist/store/gi/class.js.map +1 -0
- package/dist/store/gi/companion.d.ts +4 -0
- package/dist/store/gi/companion.d.ts.map +1 -0
- package/dist/store/gi/companion.js +13 -0
- package/dist/store/gi/companion.js.map +1 -0
- package/dist/store/gi/constant.d.ts +5 -0
- package/dist/store/gi/constant.d.ts.map +1 -0
- package/dist/store/gi/constant.js +18 -0
- package/dist/store/gi/constant.js.map +1 -0
- package/dist/store/gi/constructor-props.d.ts +5 -0
- package/dist/store/gi/constructor-props.d.ts.map +1 -0
- package/dist/store/gi/constructor-props.js +64 -0
- package/dist/store/gi/constructor-props.js.map +1 -0
- package/dist/store/gi/enum.d.ts +5 -0
- package/dist/store/gi/enum.d.ts.map +1 -0
- package/dist/store/gi/enum.js +38 -0
- package/dist/store/gi/enum.js.map +1 -0
- package/dist/store/gi/function.d.ts +8 -0
- package/dist/store/gi/function.d.ts.map +1 -0
- package/dist/store/gi/function.js +87 -0
- package/dist/store/gi/function.js.map +1 -0
- package/dist/store/gi/gtype-binding.d.ts +10 -0
- package/dist/store/gi/gtype-binding.d.ts.map +1 -0
- package/dist/store/gi/gtype-binding.js +20 -0
- package/dist/store/gi/gtype-binding.js.map +1 -0
- package/dist/store/gi/interface.d.ts +4 -0
- package/dist/store/gi/interface.d.ts.map +1 -0
- package/dist/store/gi/interface.js +99 -0
- package/dist/store/gi/interface.js.map +1 -0
- package/dist/store/gi/item-comparators.d.ts +6 -0
- package/dist/store/gi/item-comparators.d.ts.map +1 -0
- package/dist/store/gi/item-comparators.js +76 -0
- package/dist/store/gi/item-comparators.js.map +1 -0
- package/dist/store/gi/method.d.ts +24 -0
- package/dist/store/gi/method.d.ts.map +1 -0
- package/dist/store/gi/method.js +279 -0
- package/dist/store/gi/method.js.map +1 -0
- package/dist/store/gi/param-marshal.d.ts +9 -0
- package/dist/store/gi/param-marshal.d.ts.map +1 -0
- package/dist/store/gi/param-marshal.js +37 -0
- package/dist/store/gi/param-marshal.js.map +1 -0
- package/dist/store/gi/pipeline.d.ts +4 -0
- package/dist/store/gi/pipeline.d.ts.map +1 -0
- package/dist/store/gi/pipeline.js +80 -0
- package/dist/store/gi/pipeline.js.map +1 -0
- package/dist/store/gi/properties.d.ts +5 -0
- package/dist/store/gi/properties.d.ts.map +1 -0
- package/dist/store/gi/properties.js +30 -0
- package/dist/store/gi/properties.js.map +1 -0
- package/dist/store/gi/property-accessor.d.ts +26 -0
- package/dist/store/gi/property-accessor.d.ts.map +1 -0
- package/dist/store/gi/property-accessor.js +132 -0
- package/dist/store/gi/property-accessor.js.map +1 -0
- package/dist/store/gi/record-constructor.d.ts +5 -0
- package/dist/store/gi/record-constructor.d.ts.map +1 -0
- package/dist/store/gi/record-constructor.js +65 -0
- package/dist/store/gi/record-constructor.js.map +1 -0
- package/dist/store/gi/record-field-accessor.d.ts +25 -0
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
- package/dist/store/gi/record-field-accessor.js +288 -0
- package/dist/store/gi/record-field-accessor.js.map +1 -0
- package/dist/store/gi/record-layout.d.ts +14 -0
- package/dist/store/gi/record-layout.d.ts.map +1 -0
- package/dist/store/gi/record-layout.js +96 -0
- package/dist/store/gi/record-layout.js.map +1 -0
- package/dist/store/gi/record.d.ts +4 -0
- package/dist/store/gi/record.d.ts.map +1 -0
- package/dist/store/gi/record.js +59 -0
- package/dist/store/gi/record.js.map +1 -0
- package/dist/store/gi/registration.d.ts +16 -0
- package/dist/store/gi/registration.d.ts.map +1 -0
- package/dist/store/gi/registration.js +20 -0
- package/dist/store/gi/registration.js.map +1 -0
- package/dist/store/gi/return-wrap.d.ts +10 -0
- package/dist/store/gi/return-wrap.d.ts.map +1 -0
- package/dist/store/gi/return-wrap.js +46 -0
- package/dist/store/gi/return-wrap.js.map +1 -0
- package/dist/store/gi/runtime-override.d.ts +3 -0
- package/dist/store/gi/runtime-override.d.ts.map +1 -0
- package/dist/{writers → store/gi}/runtime-override.js +0 -15
- package/dist/store/gi/runtime-override.js.map +1 -0
- package/dist/store/gi/signal.d.ts +5 -0
- package/dist/store/gi/signal.d.ts.map +1 -0
- package/dist/store/gi/signal.js +233 -0
- package/dist/store/gi/signal.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +4 -0
- package/dist/store/gi/vtable.d.ts.map +1 -0
- package/dist/store/gi/vtable.js +78 -0
- package/dist/store/gi/vtable.js.map +1 -0
- package/dist/store/gi-store.d.ts +9 -0
- package/dist/store/gi-store.d.ts.map +1 -0
- package/dist/store/gi-store.js +57 -0
- package/dist/store/gi-store.js.map +1 -0
- package/dist/store/jsx-store.d.ts +5 -0
- package/dist/store/jsx-store.d.ts.map +1 -0
- package/dist/store/jsx-store.js +23 -0
- package/dist/store/jsx-store.js.map +1 -0
- package/dist/store/react/built-ins.d.ts +9 -0
- package/dist/store/react/built-ins.d.ts.map +1 -0
- package/dist/store/react/built-ins.js +226 -0
- package/dist/store/react/built-ins.js.map +1 -0
- package/dist/store/react/element-components.d.ts +15 -0
- package/dist/store/react/element-components.d.ts.map +1 -0
- package/dist/store/react/element-components.js +92 -0
- package/dist/store/react/element-components.js.map +1 -0
- package/dist/store/react/element-prop-types.d.ts +19 -0
- package/dist/store/react/element-prop-types.d.ts.map +1 -0
- package/dist/store/react/element-prop-types.js +244 -0
- package/dist/store/react/element-prop-types.js.map +1 -0
- package/dist/store/react/element-props.d.ts +4 -0
- package/dist/store/react/element-props.d.ts.map +1 -0
- package/dist/store/react/element-props.js +178 -0
- package/dist/store/react/element-props.js.map +1 -0
- package/dist/store/react/gir-index.d.ts +25 -0
- package/dist/store/react/gir-index.d.ts.map +1 -0
- package/dist/store/react/gir-index.js +55 -0
- package/dist/store/react/gir-index.js.map +1 -0
- package/dist/store/react/intrinsic-elements.d.ts +26 -0
- package/dist/store/react/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/react/intrinsic-elements.js +107 -0
- package/dist/store/react/intrinsic-elements.js.map +1 -0
- package/dist/store/react/jsx.d.ts +18 -0
- package/dist/store/react/jsx.d.ts.map +1 -0
- package/dist/store/react/jsx.js +203 -0
- package/dist/store/react/jsx.js.map +1 -0
- package/dist/store/react/metadata.d.ts +4 -0
- package/dist/store/react/metadata.d.ts.map +1 -0
- package/dist/store/react/metadata.js +174 -0
- package/dist/store/react/metadata.js.map +1 -0
- package/dist/store/react/pipeline.d.ts +14 -0
- package/dist/store/react/pipeline.d.ts.map +1 -0
- package/dist/store/react/pipeline.js +60 -0
- package/dist/store/react/pipeline.js.map +1 -0
- package/dist/store/react/props.d.ts +36 -0
- package/dist/store/react/props.d.ts.map +1 -0
- package/dist/store/react/props.js +133 -0
- package/dist/store/react/props.js.map +1 -0
- package/dist/store/store-fs.d.ts +41 -0
- package/dist/store/store-fs.d.ts.map +1 -0
- package/dist/store/store-fs.js +71 -0
- package/dist/store/store-fs.js.map +1 -0
- package/dist/writer/context.d.ts +16 -0
- package/dist/writer/context.d.ts.map +1 -0
- package/dist/writer/context.js +44 -0
- package/dist/writer/context.js.map +1 -0
- package/dist/writer/doc.d.ts +2 -0
- package/dist/writer/doc.d.ts.map +1 -0
- package/dist/writer/doc.js +12 -0
- package/dist/writer/doc.js.map +1 -0
- package/dist/writer/emit.d.ts +8 -0
- package/dist/writer/emit.d.ts.map +1 -0
- package/dist/writer/emit.js +21 -0
- package/dist/writer/emit.js.map +1 -0
- package/dist/writer/gtk-doc.d.ts +2 -0
- package/dist/writer/gtk-doc.d.ts.map +1 -0
- package/dist/writer/gtk-doc.js +67 -0
- package/dist/writer/gtk-doc.js.map +1 -0
- package/dist/writer/imports.d.ts +10 -0
- package/dist/writer/imports.d.ts.map +1 -0
- package/dist/writer/imports.js +50 -0
- package/dist/writer/imports.js.map +1 -0
- package/dist/writer/module.d.ts +15 -0
- package/dist/writer/module.d.ts.map +1 -0
- package/dist/writer/module.js +46 -0
- package/dist/writer/module.js.map +1 -0
- package/overrides/cairo/context.ts.ejs +1269 -0
- package/overrides/cairo/font-face.ts.ejs +151 -0
- package/overrides/cairo/font-options.ts.ejs +199 -0
- package/overrides/cairo/image-surface.ts.ejs +132 -0
- package/overrides/cairo/index.ts.ejs +22 -0
- package/overrides/cairo/matrix.ts.ejs +171 -0
- package/overrides/cairo/pattern.ts.ejs +476 -0
- package/overrides/cairo/recording-surface.ts.ejs +102 -0
- package/overrides/cairo/region.ts.ejs +237 -0
- package/overrides/cairo/scaled-font.ts.ejs +330 -0
- package/overrides/cairo/surface.ts.ejs +296 -0
- package/overrides/gdk/index.ts.ejs +2 -0
- package/overrides/gdk/rgba.ts.ejs +11 -0
- package/overrides/gobject/index.ts.ejs +29 -0
- package/overrides/gobject/object.ts.ejs +51 -0
- package/overrides/gobject/value.ts.ejs +17 -0
- package/overrides/graphene/index.ts.ejs +2 -0
- package/overrides/graphene/structs.ts.ejs +37 -0
- package/overrides/gtk/constants.ts.ejs +3 -0
- package/overrides/gtk/index.ts.ejs +2 -0
- package/package.json +15 -15
- package/src/analysis/descriptor-render.ts +407 -0
- package/src/analysis/descriptor.ts +263 -0
- package/src/analysis/inheritance.ts +242 -0
- package/src/analysis/param-structure.ts +127 -0
- package/src/analysis/ts-type.ts +88 -0
- package/src/compile.ts +152 -0
- package/src/docs/api-reference.ts +361 -0
- package/src/docs/element-page.ts +290 -0
- package/src/docs/pipeline.ts +182 -0
- package/src/docs/render.ts +191 -0
- package/src/docs/symbol-page.ts +444 -0
- package/src/fingerprint.ts +40 -29
- package/src/gir/ancestry.ts +41 -0
- package/src/gir/callback.ts +25 -22
- package/src/gir/class.ts +31 -57
- package/src/gir/enum.ts +20 -38
- package/src/gir/field.ts +21 -36
- package/src/gir/function.ts +17 -56
- package/src/gir/gir-path.ts +49 -0
- package/src/gir/libraries.ts +77 -0
- package/src/gir/library.ts +248 -0
- package/src/gir/namespace.ts +85 -80
- package/src/gir/parameter.ts +64 -93
- package/src/gir/parse.ts +43 -95
- package/src/gir/primitives.ts +23 -45
- package/src/gir/property.ts +27 -29
- package/src/gir/record.ts +53 -0
- package/src/gir/size.ts +9 -56
- package/src/gir/type-id.ts +49 -0
- package/src/gir/type-ref.ts +35 -140
- package/src/gir/type.ts +16 -0
- package/src/index.ts +20 -15
- package/src/khronos/args.ts +202 -0
- package/src/khronos/jsdoc.ts +76 -0
- package/src/khronos/model.ts +166 -0
- package/src/khronos/modules.ts +75 -0
- package/src/khronos/parse.ts +66 -0
- package/src/khronos/pipeline.ts +234 -0
- package/src/khronos/plan.ts +191 -0
- package/src/khronos/registry/LICENSE +202 -0
- package/src/khronos/registry/gl.xml +47748 -0
- package/src/khronos/render.ts +193 -0
- package/src/khronos/select.ts +67 -0
- package/src/runner.ts +112 -75
- package/src/store/compile-store.ts +49 -0
- package/src/store/gi/async.ts +42 -0
- package/src/store/gi/callables.ts +309 -0
- package/src/store/gi/callback.ts +15 -0
- package/src/store/gi/class-struct-record.ts +40 -0
- package/src/store/gi/class.ts +212 -0
- package/src/store/gi/companion.ts +13 -0
- package/src/store/gi/constant.ts +24 -0
- package/src/store/gi/constructor-props.ts +82 -0
- package/src/store/gi/enum.ts +49 -0
- package/src/store/gi/function.ts +107 -0
- package/src/store/gi/gtype-binding.ts +33 -0
- package/src/store/gi/interface.ts +157 -0
- package/src/store/gi/item-comparators.ts +90 -0
- package/src/store/gi/method.ts +417 -0
- package/src/store/gi/param-marshal.ts +48 -0
- package/src/store/gi/pipeline.ts +85 -0
- package/src/store/gi/properties.ts +39 -0
- package/src/store/gi/property-accessor.ts +194 -0
- package/src/store/gi/record-constructor.ts +87 -0
- package/src/store/gi/record-field-accessor.ts +394 -0
- package/src/store/gi/record-layout.ts +134 -0
- package/src/store/gi/record.ts +66 -0
- package/src/store/gi/registration.ts +38 -0
- package/src/store/gi/return-wrap.ts +52 -0
- package/src/store/gi/runtime-override.ts +36 -0
- package/src/store/gi/signal.ts +310 -0
- package/src/store/gi/vtable.ts +99 -0
- package/src/store/gi-store.ts +79 -0
- package/src/store/jsx-store.ts +27 -0
- package/src/store/react/built-ins.ts +260 -0
- package/src/store/react/element-components.ts +138 -0
- package/src/store/react/element-prop-types.ts +280 -0
- package/src/store/react/element-props.ts +204 -0
- package/src/store/react/gir-index.ts +85 -0
- package/src/store/react/intrinsic-elements.ts +161 -0
- package/src/store/react/jsx.ts +294 -0
- package/src/store/react/metadata.ts +197 -0
- package/src/store/react/pipeline.ts +90 -0
- package/src/store/react/props.ts +197 -0
- package/src/store/store-fs.ts +112 -0
- package/src/writer/context.ts +48 -0
- package/src/writer/doc.ts +11 -0
- package/src/writer/emit.ts +26 -0
- package/src/writer/gtk-doc.ts +74 -0
- package/src/writer/imports.ts +59 -0
- package/src/writer/module.ts +45 -0
- package/LICENSE +0 -373
- package/dist/dsl/context.d.ts +0 -104
- package/dist/dsl/context.d.ts.map +0 -1
- package/dist/dsl/context.js +0 -140
- package/dist/dsl/context.js.map +0 -1
- package/dist/dsl/emit.d.ts +0 -28
- package/dist/dsl/emit.d.ts.map +0 -1
- package/dist/dsl/emit.js +0 -41
- package/dist/dsl/emit.js.map +0 -1
- package/dist/dsl/identifier.d.ts +0 -28
- package/dist/dsl/identifier.d.ts.map +0 -1
- package/dist/dsl/identifier.js +0 -45
- package/dist/dsl/identifier.js.map +0 -1
- package/dist/dsl/imports.d.ts +0 -58
- package/dist/dsl/imports.d.ts.map +0 -1
- package/dist/dsl/imports.js +0 -107
- package/dist/dsl/imports.js.map +0 -1
- package/dist/dsl/module.d.ts +0 -53
- package/dist/dsl/module.d.ts.map +0 -1
- package/dist/dsl/module.js +0 -76
- package/dist/dsl/module.js.map +0 -1
- package/dist/ffi/pipeline.d.ts +0 -19
- package/dist/ffi/pipeline.d.ts.map +0 -1
- package/dist/ffi/pipeline.js +0 -107
- package/dist/ffi/pipeline.js.map +0 -1
- package/dist/gi-store.d.ts +0 -34
- package/dist/gi-store.d.ts.map +0 -1
- package/dist/gi-store.js +0 -154
- package/dist/gi-store.js.map +0 -1
- package/dist/gir/boxed.d.ts +0 -66
- package/dist/gir/boxed.d.ts.map +0 -1
- package/dist/gir/boxed.js +0 -49
- package/dist/gir/boxed.js.map +0 -1
- package/dist/gir/qualified-name.d.ts +0 -37
- package/dist/gir/qualified-name.d.ts.map +0 -1
- package/dist/gir/qualified-name.js +0 -39
- package/dist/gir/qualified-name.js.map +0 -1
- package/dist/gir/qualify.d.ts +0 -32
- package/dist/gir/qualify.d.ts.map +0 -1
- package/dist/gir/qualify.js +0 -60
- package/dist/gir/qualify.js.map +0 -1
- package/dist/gir/repository.d.ts +0 -82
- package/dist/gir/repository.d.ts.map +0 -1
- package/dist/gir/repository.js +0 -122
- package/dist/gir/repository.js.map +0 -1
- package/dist/gir/signal.d.ts +0 -22
- package/dist/gir/signal.d.ts.map +0 -1
- package/dist/gir/signal.js +0 -20
- package/dist/gir/signal.js.map +0 -1
- package/dist/jsx-store.d.ts +0 -22
- package/dist/jsx-store.d.ts.map +0 -1
- package/dist/jsx-store.js +0 -40
- package/dist/jsx-store.js.map +0 -1
- package/dist/react/compounds-meta.d.ts +0 -18
- package/dist/react/compounds-meta.d.ts.map +0 -1
- package/dist/react/compounds-meta.js +0 -93
- package/dist/react/compounds-meta.js.map +0 -1
- package/dist/react/compounds.d.ts +0 -27
- package/dist/react/compounds.d.ts.map +0 -1
- package/dist/react/compounds.js +0 -164
- package/dist/react/compounds.js.map +0 -1
- package/dist/react/internal.d.ts +0 -14
- package/dist/react/internal.d.ts.map +0 -1
- package/dist/react/internal.js +0 -79
- package/dist/react/internal.js.map +0 -1
- package/dist/react/jsx.d.ts +0 -22
- package/dist/react/jsx.d.ts.map +0 -1
- package/dist/react/jsx.js +0 -134
- package/dist/react/jsx.js.map +0 -1
- package/dist/react/pipeline.d.ts +0 -13
- package/dist/react/pipeline.d.ts.map +0 -1
- package/dist/react/pipeline.js +0 -25
- package/dist/react/pipeline.js.map +0 -1
- package/dist/react/props.d.ts +0 -38
- package/dist/react/props.d.ts.map +0 -1
- package/dist/react/props.js +0 -231
- package/dist/react/props.js.map +0 -1
- package/dist/react/slot-props.d.ts +0 -10
- package/dist/react/slot-props.d.ts.map +0 -1
- package/dist/react/slot-props.js +0 -56
- package/dist/react/slot-props.js.map +0 -1
- package/dist/react/widgets.d.ts +0 -83
- package/dist/react/widgets.d.ts.map +0 -1
- package/dist/react/widgets.js +0 -152
- package/dist/react/widgets.js.map +0 -1
- package/dist/store-fs.d.ts +0 -109
- package/dist/store-fs.d.ts.map +0 -1
- package/dist/store-fs.js +0 -98
- package/dist/store-fs.js.map +0 -1
- package/dist/transpile.d.ts +0 -32
- package/dist/transpile.d.ts.map +0 -1
- package/dist/transpile.js +0 -63
- package/dist/transpile.js.map +0 -1
- package/dist/typecheck-store.d.ts +0 -41
- package/dist/typecheck-store.d.ts.map +0 -1
- package/dist/typecheck-store.js +0 -102
- package/dist/typecheck-store.js.map +0 -1
- package/dist/writers/alias.d.ts +0 -13
- package/dist/writers/alias.d.ts.map +0 -1
- package/dist/writers/alias.js +0 -17
- package/dist/writers/alias.js.map +0 -1
- package/dist/writers/async.d.ts +0 -22
- package/dist/writers/async.d.ts.map +0 -1
- package/dist/writers/async.js +0 -48
- package/dist/writers/async.js.map +0 -1
- package/dist/writers/boxed-constructor.d.ts +0 -26
- package/dist/writers/boxed-constructor.d.ts.map +0 -1
- package/dist/writers/boxed-constructor.js +0 -85
- package/dist/writers/boxed-constructor.js.map +0 -1
- package/dist/writers/boxed-field-accessor.d.ts +0 -18
- package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
- package/dist/writers/boxed-field-accessor.js +0 -260
- package/dist/writers/boxed-field-accessor.js.map +0 -1
- package/dist/writers/boxed-layout.d.ts +0 -27
- package/dist/writers/boxed-layout.d.ts.map +0 -1
- package/dist/writers/boxed-layout.js +0 -128
- package/dist/writers/boxed-layout.js.map +0 -1
- package/dist/writers/boxed.d.ts +0 -20
- package/dist/writers/boxed.d.ts.map +0 -1
- package/dist/writers/boxed.js +0 -71
- package/dist/writers/boxed.js.map +0 -1
- package/dist/writers/callables.d.ts +0 -124
- package/dist/writers/callables.d.ts.map +0 -1
- package/dist/writers/callables.js +0 -283
- package/dist/writers/callables.js.map +0 -1
- package/dist/writers/callback.d.ts +0 -16
- package/dist/writers/callback.d.ts.map +0 -1
- package/dist/writers/callback.js +0 -38
- package/dist/writers/callback.js.map +0 -1
- package/dist/writers/class-struct-record.d.ts +0 -31
- package/dist/writers/class-struct-record.d.ts.map +0 -1
- package/dist/writers/class-struct-record.js +0 -67
- package/dist/writers/class-struct-record.js.map +0 -1
- package/dist/writers/class-struct.d.ts +0 -22
- package/dist/writers/class-struct.d.ts.map +0 -1
- package/dist/writers/class-struct.js +0 -85
- package/dist/writers/class-struct.js.map +0 -1
- package/dist/writers/class.d.ts +0 -16
- package/dist/writers/class.d.ts.map +0 -1
- package/dist/writers/class.js +0 -307
- package/dist/writers/class.js.map +0 -1
- package/dist/writers/constant.d.ts +0 -15
- package/dist/writers/constant.d.ts.map +0 -1
- package/dist/writers/constant.js +0 -23
- package/dist/writers/constant.js.map +0 -1
- package/dist/writers/constants.d.ts +0 -15
- package/dist/writers/constants.d.ts.map +0 -1
- package/dist/writers/constants.js +0 -23
- package/dist/writers/constants.js.map +0 -1
- package/dist/writers/constructor-props.d.ts +0 -32
- package/dist/writers/constructor-props.d.ts.map +0 -1
- package/dist/writers/constructor-props.js +0 -110
- package/dist/writers/constructor-props.js.map +0 -1
- package/dist/writers/enum.d.ts +0 -21
- package/dist/writers/enum.d.ts.map +0 -1
- package/dist/writers/enum.js +0 -48
- package/dist/writers/enum.js.map +0 -1
- package/dist/writers/function.d.ts +0 -40
- package/dist/writers/function.d.ts.map +0 -1
- package/dist/writers/function.js +0 -127
- package/dist/writers/function.js.map +0 -1
- package/dist/writers/gtype-binding.d.ts +0 -19
- package/dist/writers/gtype-binding.d.ts.map +0 -1
- package/dist/writers/gtype-binding.js +0 -40
- package/dist/writers/gtype-binding.js.map +0 -1
- package/dist/writers/inheritance.d.ts +0 -48
- package/dist/writers/inheritance.d.ts.map +0 -1
- package/dist/writers/inheritance.js +0 -90
- package/dist/writers/inheritance.js.map +0 -1
- package/dist/writers/interface.d.ts +0 -16
- package/dist/writers/interface.d.ts.map +0 -1
- package/dist/writers/interface.js +0 -155
- package/dist/writers/interface.js.map +0 -1
- package/dist/writers/method.d.ts +0 -150
- package/dist/writers/method.d.ts.map +0 -1
- package/dist/writers/method.js +0 -510
- package/dist/writers/method.js.map +0 -1
- package/dist/writers/param-classify.d.ts +0 -93
- package/dist/writers/param-classify.d.ts.map +0 -1
- package/dist/writers/param-classify.js +0 -163
- package/dist/writers/param-classify.js.map +0 -1
- package/dist/writers/property-accessor.d.ts +0 -19
- package/dist/writers/property-accessor.d.ts.map +0 -1
- package/dist/writers/property-accessor.js +0 -117
- package/dist/writers/property-accessor.js.map +0 -1
- package/dist/writers/registration.d.ts +0 -27
- package/dist/writers/registration.d.ts.map +0 -1
- package/dist/writers/registration.js +0 -30
- package/dist/writers/registration.js.map +0 -1
- package/dist/writers/return-wrap.d.ts +0 -39
- package/dist/writers/return-wrap.d.ts.map +0 -1
- package/dist/writers/return-wrap.js +0 -152
- package/dist/writers/return-wrap.js.map +0 -1
- package/dist/writers/runtime-override.d.ts +0 -18
- package/dist/writers/runtime-override.d.ts.map +0 -1
- package/dist/writers/runtime-override.js.map +0 -1
- package/dist/writers/signal.d.ts +0 -21
- package/dist/writers/signal.d.ts.map +0 -1
- package/dist/writers/signal.js +0 -260
- package/dist/writers/signal.js.map +0 -1
- package/dist/writers/ts-type.d.ts +0 -50
- package/dist/writers/ts-type.d.ts.map +0 -1
- package/dist/writers/ts-type.js +0 -75
- package/dist/writers/ts-type.js.map +0 -1
- package/dist/writers/types-ts.d.ts +0 -27
- package/dist/writers/types-ts.d.ts.map +0 -1
- package/dist/writers/types-ts.js +0 -97
- package/dist/writers/types-ts.js.map +0 -1
- package/dist/writers/value.d.ts +0 -89
- package/dist/writers/value.d.ts.map +0 -1
- package/dist/writers/value.js +0 -402
- package/dist/writers/value.js.map +0 -1
- package/src/dsl/context.ts +0 -146
- package/src/dsl/emit.ts +0 -42
- package/src/dsl/identifier.ts +0 -52
- package/src/dsl/imports.ts +0 -109
- package/src/dsl/module.ts +0 -75
- package/src/ffi/pipeline.ts +0 -113
- package/src/gi-store.ts +0 -199
- package/src/gir/boxed.ts +0 -94
- package/src/gir/qualified-name.ts +0 -55
- package/src/gir/qualify.ts +0 -64
- package/src/gir/repository.ts +0 -149
- package/src/gir/signal.ts +0 -36
- package/src/jsx-store.ts +0 -53
- package/src/react/compounds-meta.ts +0 -99
- package/src/react/compounds.ts +0 -204
- package/src/react/internal.ts +0 -91
- package/src/react/jsx.ts +0 -155
- package/src/react/pipeline.ts +0 -29
- package/src/react/props.ts +0 -307
- package/src/react/slot-props.ts +0 -57
- package/src/react/widgets.ts +0 -185
- package/src/store-fs.ts +0 -157
- package/src/transpile.ts +0 -80
- package/src/typecheck-store.ts +0 -136
- package/src/writers/alias.ts +0 -19
- package/src/writers/async.ts +0 -44
- package/src/writers/boxed-constructor.ts +0 -105
- package/src/writers/boxed-field-accessor.ts +0 -306
- package/src/writers/boxed-layout.ts +0 -166
- package/src/writers/boxed.ts +0 -77
- package/src/writers/callables.ts +0 -339
- package/src/writers/callback.ts +0 -40
- package/src/writers/class-struct-record.ts +0 -75
- package/src/writers/class-struct.ts +0 -96
- package/src/writers/class.ts +0 -384
- package/src/writers/constant.ts +0 -29
- package/src/writers/constructor-props.ts +0 -130
- package/src/writers/enum.ts +0 -53
- package/src/writers/function.ts +0 -136
- package/src/writers/gtype-binding.ts +0 -48
- package/src/writers/inheritance.ts +0 -104
- package/src/writers/interface.ts +0 -168
- package/src/writers/method.ts +0 -678
- package/src/writers/param-classify.ts +0 -178
- package/src/writers/property-accessor.ts +0 -139
- package/src/writers/registration.ts +0 -42
- package/src/writers/return-wrap.ts +0 -180
- package/src/writers/runtime-override.ts +0 -59
- package/src/writers/signal.ts +0 -318
- package/src/writers/ts-type.ts +0 -115
- package/src/writers/value.ts +0 -485
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, toPascalCase } from \"@gtkx/utils\";\nimport {\n collectInheritedMethods,\n collectInheritedPropertyTypes,\n collectInterfaceMergeOmissions,\n conflictRename,\n type InheritedMethods,\n} from \"../../analysis/inheritance.js\";\nimport { ancestorChain } from \"../../gir/ancestry.js\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport { splitOptionalNamespace } from \"../../gir/type-ref.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { indentMembers } from \"../../writer/emit.js\";\nimport {\n type Callables,\n classConstructorMemberNames,\n dedupeCallables,\n generateBindings,\n indexMethodsByName,\n renderClassInstanceMember,\n renderStaticHead,\n} from \"./callables.js\";\nimport { renderClassConstructor, renderConstructorPropsInterface } from \"./constructor-props.js\";\nimport { gtypeExprFor, gtypeMemberDeclaration } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport { renderPropertyDeclarations } from \"./properties.js\";\nimport { type ResolvedAccessor, renderResolvedPropertyAccessor, resolveAccessor } from \"./property-accessor.js\";\nimport { appendWrapperClassRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport { renderVfuncMetadata } from \"./vtable.js\";\n\ntype ImplementedRef = {\n typeRef: string;\n makerRef: string;\n interfaceKlass: GirClass;\n interfaceNamespace: string;\n};\n\nexport const generateClass = (context: ModuleContext, klass: GirClass): void => {\n if (!klass.introspectable) return;\n if (klass.name.length === 0) return;\n const className = toPascalCase(klass.name);\n const callables: Callables = {\n constructors: dedupeCallables(klass.constructors),\n functions: dedupeCallables(klass.functions),\n methods: dedupeCallables(klass.methods),\n };\n generateBindings(context, callables);\n\n const parentExpression = resolveParent(context, klass);\n const extendsClause = renderExtendsClause(context, parentExpression, callables);\n const implemented = resolveImplementedRefs(context, klass);\n const typeRefs = implemented.map((ref) => ref.typeRef);\n const implementsClause = typeRefs.length === 0 ? \"\" : ` implements ${typeRefs.join(\", \")}`;\n const { members, accessors } = renderClassMembers(context, klass, callables, parentExpression !== undefined);\n const body = indentMembers(members);\n context.module.appendDeclaration(\n `${renderJsDoc(klass.doc)}export class ${className}${extendsClause}${implementsClause} {\\n${body}\\n}`,\n );\n context.module.appendDeclaration(renderConstructorPropsInterface(context, klass, className));\n for (const declaration of renderPropertyDeclarations(context, klass, className, accessors)) {\n context.module.appendDeclaration(declaration);\n }\n for (const declaration of renderSignalDeclarations(context, klass, className, false)) {\n context.module.appendDeclaration(declaration);\n }\n if (typeRefs.length > 0) {\n const mergeRefs = implemented.map((ref) => interfaceMergeRef(context, klass, ref));\n context.module.appendDeclaration(`export interface ${className} extends ${mergeRefs.join(\", \")} {}`);\n }\n\n appendInstallMixins(context, className, implemented);\n appendClassRegistrations(context, klass, className);\n};\n\ntype ClassMembers = { members: string[]; accessors: ResolvedAccessor[] };\n\nconst renderClassMembers = (\n context: ModuleContext,\n klass: GirClass,\n callables: Callables,\n hasParent: boolean,\n): ClassMembers => {\n const className = toPascalCase(klass.name);\n const members: string[] = [gtypeMemberDeclaration(context)];\n const constructorBlock = renderClassConstructor(context, klass, className, hasParent);\n if (constructorBlock !== undefined) members.push(constructorBlock);\n const claimedNames = new Set<string>();\n members.push(...renderStaticHead(context, callables, className));\n const inherited = collectInheritedMethods(context, klass);\n const methodByName = indexMethodsByName(callables.methods);\n appendInstanceMethods({\n context,\n methods: callables.methods,\n methodByName,\n inherited,\n members,\n claimedNames,\n className,\n });\n const inheritedPropertyTypes = collectInheritedPropertyTypes(context, klass);\n const accessors: ResolvedAccessor[] = [];\n for (const property of klass.properties) {\n const inheritedType = inheritedPropertyTypes.get(toCamelIdentifier(property.name));\n const accessor = resolveAccessor({ context, property, claimedNames, methodByName, inheritedType });\n if (accessor === undefined) continue;\n accessors.push(accessor);\n members.push(renderResolvedPropertyAccessor(context, property, accessor));\n }\n members.push(...renderSignalMembers(context, klass));\n return { members, accessors };\n};\n\ntype AppendInstanceMethodsOptions = {\n context: ModuleContext;\n methods: GirFunction[];\n methodByName: Map<string, GirFunction>;\n inherited: InheritedMethods;\n members: string[];\n claimedNames: Set<string>;\n className: string;\n};\n\nconst appendInstanceMethods = (options: AppendInstanceMethodsOptions): void => {\n const { context, methods, methodByName, inherited, members, claimedNames, className } = options;\n for (const callable of methods) {\n const rename = conflictRename(context, callable, inherited, className);\n const block = renderClassInstanceMember(context, callable, methodByName, rename);\n if (block === undefined) continue;\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n};\n\nconst appendInstallMixins = (context: ModuleContext, className: string, implemented: ImplementedRef[]): void => {\n if (implemented.length === 0) return;\n context.addRuntimeImport(\"installMixins\");\n const makers = implemented.map((ref) => ref.makerRef).join(\", \");\n context.module.appendRegistration(`installMixins(${className}, [${makers}]);`);\n};\n\nconst appendClassRegistrations = (context: ModuleContext, klass: GirClass, className: string): void => {\n const gtypeExpr = gtypeExprFor(context, klass);\n appendWrapperClassRegistration(context, {\n className,\n gtypeExpr,\n vfuncs: renderVfuncMetadata(context, klass),\n });\n};\n\nconst inheritedInterfaceKeys = (context: ModuleContext, klass: GirClass): Set<string> => {\n const keys = new Set<string>();\n if (klass.parent === undefined) return keys;\n const parent = context.library.resolveType(context.namespace.name, klass.parent);\n if (parent === undefined || parent.kind !== \"class\") return keys;\n for (const ancestor of ancestorChain(context.library, parent.value, parent.namespace.name)) {\n for (const name of ancestor.klass.implements) {\n const resolved = context.library.resolveType(ancestor.namespaceName, name);\n if (resolved?.kind === \"interface\") keys.add(`${resolved.namespace.name}.${resolved.value.name}`);\n }\n }\n return keys;\n};\n\nconst interfaceMergeRef = (context: ModuleContext, klass: GirClass, ref: ImplementedRef): string => {\n const omissions = collectInterfaceMergeOmissions(context, klass, {\n klass: ref.interfaceKlass,\n namespaceName: ref.interfaceNamespace,\n });\n if (omissions.length === 0) return ref.typeRef;\n const keys = omissions.map((name) => JSON.stringify(name)).join(\" | \");\n return `Omit<${ref.typeRef}, ${keys}>`;\n};\n\nconst resolveImplementedRefs = (context: ModuleContext, klass: GirClass): ImplementedRef[] => {\n const inherited = inheritedInterfaceKeys(context, klass);\n const refs: ImplementedRef[] = [];\n for (const name of klass.implements) {\n const resolved = context.library.resolveType(context.namespace.name, name);\n if (resolved === undefined || resolved.kind !== \"interface\") continue;\n if (inherited.has(`${resolved.namespace.name}.${resolved.value.name}`)) continue;\n const pascal = toPascalCase(resolved.value.name);\n refs.push({\n typeRef: context.qualify(resolved.namespace.name, pascal),\n makerRef: context.qualify(resolved.namespace.name, `make${pascal}`),\n interfaceKlass: resolved.value,\n interfaceNamespace: resolved.namespace.name,\n });\n }\n return refs;\n};\n\nconst renderExtendsClause = (\n context: ModuleContext,\n parentExpression: string | undefined,\n callables: Callables,\n): string => {\n if (parentExpression === undefined) return \"\";\n const constructorNames = classConstructorMemberNames(context, callables);\n if (constructorNames.length === 0) return ` extends ${parentExpression}`;\n context.addRuntimeTypeImport(\"StaticBase\");\n const omitted = constructorNames.map((name) => JSON.stringify(name)).join(\" | \");\n return ` extends (${parentExpression} as StaticBase<typeof ${parentExpression}, ${omitted}>)`;\n};\n\nconst resolveParent = (context: ModuleContext, klass: GirClass): string | undefined => {\n if (klass.parent === undefined) return undefined;\n const [namespace, typeName] = splitOptionalNamespace(klass.parent);\n return context.qualify(namespace ?? context.namespace.name, toPascalCase(typeName));\n};\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GirClass } from "../../gir/class.js";
|
|
2
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
+
export declare const parentCompanionRef: (context: ModuleContext, klass: GirClass, suffix: string) => string | undefined;
|
|
4
|
+
//# sourceMappingURL=companion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/store/gi/companion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,kBAAkB,YAAa,aAAa,SAAS,QAAQ,UAAU,MAAM,KAAG,MAAM,GAAG,SAOrG,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { toPascalCase } from "@gtkx/utils";
|
|
2
|
+
import { splitOptionalNamespace } from "../../gir/type-ref.js";
|
|
3
|
+
export const parentCompanionRef = (context, klass, suffix) => {
|
|
4
|
+
if (klass.parent === undefined)
|
|
5
|
+
return undefined;
|
|
6
|
+
const [parentNamespace, typeName] = splitOptionalNamespace(klass.parent);
|
|
7
|
+
const namespaceName = parentNamespace ?? context.namespace.name;
|
|
8
|
+
const name = `${toPascalCase(typeName)}${suffix}`;
|
|
9
|
+
if (namespaceName === context.namespace.name)
|
|
10
|
+
return name;
|
|
11
|
+
return `${context.addCrossNamespaceImport(namespaceName)}.${name}`;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=companion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion.js","sourceRoot":"","sources":["../../../src/store/gi/companion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAsB,EAAE,KAAe,EAAE,MAAc,EAAsB,EAAE;IAC9G,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;IAChE,MAAM,IAAI,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;IAClD,IAAI,aAAa,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;AACvE,CAAC,CAAC","sourcesContent":["import { toPascalCase } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport { splitOptionalNamespace } from \"../../gir/type-ref.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\n\nexport const parentCompanionRef = (context: ModuleContext, klass: GirClass, suffix: string): string | undefined => {\n if (klass.parent === undefined) return undefined;\n const [parentNamespace, typeName] = splitOptionalNamespace(klass.parent);\n const namespaceName = parentNamespace ?? context.namespace.name;\n const name = `${toPascalCase(typeName)}${suffix}`;\n if (namespaceName === context.namespace.name) return name;\n return `${context.addCrossNamespaceImport(namespaceName)}.${name}`;\n};\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GirConstant } from "../../gir/namespace.js";
|
|
2
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
+
export declare const generateConstant: (context: ModuleContext, constant: GirConstant) => void;
|
|
4
|
+
export declare const constantLiteral: (context: ModuleContext, constant: GirConstant) => string;
|
|
5
|
+
//# sourceMappingURL=constant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/store/gi/constant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,eAAO,MAAM,gBAAgB,YAAa,aAAa,YAAY,WAAW,KAAG,IAIhF,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,aAAa,YAAY,WAAW,KAAG,MAG/E,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { renderJsDoc } from "../../writer/doc.js";
|
|
3
|
+
export const generateConstant = (context, constant) => {
|
|
4
|
+
context.module.appendDeclaration(`${renderJsDoc(constant.doc)}export const ${constant.name} = ${constantLiteral(context, constant)};`);
|
|
5
|
+
};
|
|
6
|
+
export const constantLiteral = (context, constant) => {
|
|
7
|
+
if (isStringTyped(context, constant.type))
|
|
8
|
+
return sourceStringLiteral(constant.value);
|
|
9
|
+
return isNumericLiteral(constant.value) ? constant.value : sourceStringLiteral(constant.value);
|
|
10
|
+
};
|
|
11
|
+
const isStringTyped = (context, type) => {
|
|
12
|
+
if (type === undefined)
|
|
13
|
+
return false;
|
|
14
|
+
const resolved = context.library.typeOf(type);
|
|
15
|
+
return resolved?.kind === "primitive" && resolved.category === "string";
|
|
16
|
+
};
|
|
17
|
+
const isNumericLiteral = (value) => /^-?(?:\d+|\d*\.\d+)$/.test(value);
|
|
18
|
+
//# sourceMappingURL=constant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../src/store/gi/constant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAsB,EAAE,QAAqB,EAAQ,EAAE;IACpF,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAC5B,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CACvG,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,QAAqB,EAAU,EAAE;IACrF,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,IAAwB,EAAW,EAAE;IAChF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,QAAQ,EAAE,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { GirConstant } from \"../../gir/namespace.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\n\nexport const generateConstant = (context: ModuleContext, constant: GirConstant): void => {\n context.module.appendDeclaration(\n `${renderJsDoc(constant.doc)}export const ${constant.name} = ${constantLiteral(context, constant)};`,\n );\n};\n\nexport const constantLiteral = (context: ModuleContext, constant: GirConstant): string => {\n if (isStringTyped(context, constant.type)) return sourceStringLiteral(constant.value);\n return isNumericLiteral(constant.value) ? constant.value : sourceStringLiteral(constant.value);\n};\n\nconst isStringTyped = (context: ModuleContext, type: TypeId | undefined): boolean => {\n if (type === undefined) return false;\n const resolved = context.library.typeOf(type);\n return resolved?.kind === \"primitive\" && resolved.category === \"string\";\n};\n\nconst isNumericLiteral = (value: string): boolean => /^-?(?:\\d+|\\d*\\.\\d+)$/.test(value);\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GirClass } from "../../gir/class.js";
|
|
2
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
+
export declare const renderConstructorPropsInterface: (context: ModuleContext, klass: GirClass, className: string) => string;
|
|
4
|
+
export declare const renderClassConstructor: (context: ModuleContext, klass: GirClass, className: string, hasParent: boolean) => string | undefined;
|
|
5
|
+
//# sourceMappingURL=constructor-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constructor-props.d.ts","sourceRoot":"","sources":["../../../src/store/gi/constructor-props.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAyB7D,eAAO,MAAM,+BAA+B,YAAa,aAAa,SAAS,QAAQ,aAAa,MAAM,KAAG,MAQ5G,CAAC;AAEF,eAAO,MAAM,sBAAsB,YACtB,aAAa,SACf,QAAQ,aACJ,MAAM,aACN,OAAO,KACnB,MAAM,GAAG,SAKX,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { sourceStringLiteral, toCamelIdentifier, uniqBy } from "@gtkx/utils";
|
|
2
|
+
import { renderDescriptor } from "../../analysis/descriptor-render.js";
|
|
3
|
+
import { collectInterfaceProperties } from "../../analysis/inheritance.js";
|
|
4
|
+
import { renderTsType } from "../../analysis/ts-type.js";
|
|
5
|
+
import { ancestorChain } from "../../gir/ancestry.js";
|
|
6
|
+
import { isConstructableProperty } from "../../gir/property.js";
|
|
7
|
+
import { renderBlock, renderBraced, renderBracedOrEmpty } from "../../writer/emit.js";
|
|
8
|
+
import { parentCompanionRef } from "./companion.js";
|
|
9
|
+
const ancestorConstructablePropNames = (context, klass) => {
|
|
10
|
+
const names = new Set();
|
|
11
|
+
for (const { klass: ancestor } of ancestorChain(context.library, klass, context.namespace.name)) {
|
|
12
|
+
if (ancestor === klass)
|
|
13
|
+
continue;
|
|
14
|
+
for (const property of ancestor.properties) {
|
|
15
|
+
if (isConstructableProperty(property))
|
|
16
|
+
names.add(toCamelIdentifier(property.name));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return names;
|
|
20
|
+
};
|
|
21
|
+
const collectConstructableProps = (context, klass) => {
|
|
22
|
+
const inherited = ancestorConstructablePropNames(context, klass);
|
|
23
|
+
return uniqBy([...klass.properties, ...collectInterfaceProperties(context, klass).map((entry) => entry.property)]
|
|
24
|
+
.filter(isConstructableProperty)
|
|
25
|
+
.filter((property) => !inherited.has(toCamelIdentifier(property.name))), (property) => toCamelIdentifier(property.name));
|
|
26
|
+
};
|
|
27
|
+
export const renderConstructorPropsInterface = (context, klass, className) => {
|
|
28
|
+
const parentRef = parentCompanionRef(context, klass, "ConstructorProps");
|
|
29
|
+
const extendsClause = parentRef === undefined ? "" : ` extends ${parentRef}`;
|
|
30
|
+
const lines = collectConstructableProps(context, klass).map((property) => `${toCamelIdentifier(property.name)}?: ${renderTsType(context, property.type, true)} | undefined;`);
|
|
31
|
+
return renderBracedOrEmpty(`export interface ${className}ConstructorProps${extendsClause}`, lines.join("\n"));
|
|
32
|
+
};
|
|
33
|
+
export const renderClassConstructor = (context, klass, className, hasParent) => {
|
|
34
|
+
if (!hasParent)
|
|
35
|
+
return renderRootConstructor(context);
|
|
36
|
+
const props = collectConstructableProps(context, klass);
|
|
37
|
+
if (props.length === 0)
|
|
38
|
+
return undefined;
|
|
39
|
+
return renderTranslatingConstructor(context, props, className);
|
|
40
|
+
};
|
|
41
|
+
const PROPS_RECORD = "Record<string, unknown>";
|
|
42
|
+
const renderRootConstructor = (context) => {
|
|
43
|
+
context.addRuntimeImport("getInstanceType");
|
|
44
|
+
context.addRuntimeImport("newObjectWithProperties");
|
|
45
|
+
context.addRuntimeImport("setHandle");
|
|
46
|
+
context.addRuntimeImport("setWrapper");
|
|
47
|
+
const body = [
|
|
48
|
+
"const handle = newObjectWithProperties(getInstanceType(this), props);",
|
|
49
|
+
"setHandle(this, handle);",
|
|
50
|
+
"setWrapper(handle, this);",
|
|
51
|
+
].join("\n");
|
|
52
|
+
return renderBlock(`constructor(props: ${PROPS_RECORD} = {})`, body);
|
|
53
|
+
};
|
|
54
|
+
const renderTranslatingConstructor = (context, props, className) => {
|
|
55
|
+
context.addRuntimeImport("t");
|
|
56
|
+
const destructured = props.map((property) => toCamelIdentifier(property.name));
|
|
57
|
+
const pattern = `{ ${[...destructured, "...rest"].join(", ")} }`;
|
|
58
|
+
const entries = props.map((property) => `${sourceStringLiteral(property.name)}: [${renderDescriptor(context, property.type, property.transferOwnership)}, ${toCamelIdentifier(property.name)}],`);
|
|
59
|
+
const recordLiteral = renderBraced(entries.join("\n"));
|
|
60
|
+
const lines = [`const props: ${PROPS_RECORD} = ${recordLiteral};`, "super({ ...props, ...rest });"];
|
|
61
|
+
const body = lines.join("\n");
|
|
62
|
+
return renderBlock(`constructor(${pattern}: ${className}ConstructorProps = {})`, body);
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=constructor-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constructor-props.js","sourceRoot":"","sources":["../../../src/store/gi/constructor-props.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral, toCamelIdentifier, uniqBy } from \"@gtkx/utils\";\nimport { renderDescriptor } from \"../../analysis/descriptor-render.js\";\nimport { collectInterfaceProperties } from \"../../analysis/inheritance.js\";\nimport { renderTsType } from \"../../analysis/ts-type.js\";\nimport { ancestorChain } from \"../../gir/ancestry.js\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderBlock, renderBraced, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport { parentCompanionRef } from \"./companion.js\";\n\nconst ancestorConstructablePropNames = (context: ModuleContext, klass: GirClass): Set<string> => {\n const names = new Set<string>();\n for (const { klass: ancestor } of ancestorChain(context.library, klass, context.namespace.name)) {\n if (ancestor === klass) continue;\n for (const property of ancestor.properties) {\n if (isConstructableProperty(property)) names.add(toCamelIdentifier(property.name));\n }\n }\n return names;\n};\n\nconst collectConstructableProps = (context: ModuleContext, klass: GirClass): GirProperty[] => {\n const inherited = ancestorConstructablePropNames(context, klass);\n return uniqBy(\n [...klass.properties, ...collectInterfaceProperties(context, klass).map((entry) => entry.property)]\n .filter(isConstructableProperty)\n .filter((property) => !inherited.has(toCamelIdentifier(property.name))),\n (property) => toCamelIdentifier(property.name),\n );\n};\n\nexport const renderConstructorPropsInterface = (context: ModuleContext, klass: GirClass, className: string): string => {\n const parentRef = parentCompanionRef(context, klass, \"ConstructorProps\");\n const extendsClause = parentRef === undefined ? \"\" : ` extends ${parentRef}`;\n const lines = collectConstructableProps(context, klass).map(\n (property) =>\n `${toCamelIdentifier(property.name)}?: ${renderTsType(context, property.type, true)} | undefined;`,\n );\n return renderBracedOrEmpty(`export interface ${className}ConstructorProps${extendsClause}`, lines.join(\"\\n\"));\n};\n\nexport const renderClassConstructor = (\n context: ModuleContext,\n klass: GirClass,\n className: string,\n hasParent: boolean,\n): string | undefined => {\n if (!hasParent) return renderRootConstructor(context);\n const props = collectConstructableProps(context, klass);\n if (props.length === 0) return undefined;\n return renderTranslatingConstructor(context, props, className);\n};\n\nconst PROPS_RECORD = \"Record<string, unknown>\";\n\nconst renderRootConstructor = (context: ModuleContext): string => {\n context.addRuntimeImport(\"getInstanceType\");\n context.addRuntimeImport(\"newObjectWithProperties\");\n context.addRuntimeImport(\"setHandle\");\n context.addRuntimeImport(\"setWrapper\");\n const body = [\n \"const handle = newObjectWithProperties(getInstanceType(this), props);\",\n \"setHandle(this, handle);\",\n \"setWrapper(handle, this);\",\n ].join(\"\\n\");\n return renderBlock(`constructor(props: ${PROPS_RECORD} = {})`, body);\n};\n\nconst renderTranslatingConstructor = (context: ModuleContext, props: GirProperty[], className: string): string => {\n context.addRuntimeImport(\"t\");\n const destructured = props.map((property) => toCamelIdentifier(property.name));\n const pattern = `{ ${[...destructured, \"...rest\"].join(\", \")} }`;\n const entries = props.map(\n (property) =>\n `${sourceStringLiteral(property.name)}: [${renderDescriptor(context, property.type, property.transferOwnership)}, ${toCamelIdentifier(property.name)}],`,\n );\n const recordLiteral = renderBraced(entries.join(\"\\n\"));\n const lines = [`const props: ${PROPS_RECORD} = ${recordLiteral};`, \"super({ ...props, ...rest });\"];\n const body = lines.join(\"\\n\");\n return renderBlock(`constructor(${pattern}: ${className}ConstructorProps = {})`, body);\n};\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GirEnum } from "../../gir/enum.js";
|
|
2
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
+
export declare const generateEnum: (context: ModuleContext, enumeration: GirEnum) => void;
|
|
4
|
+
export declare const enumMemberKey: (name: string) => string;
|
|
5
|
+
//# sourceMappingURL=enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/store/gi/enum.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D,eAAO,MAAM,YAAY,YAAa,aAAa,eAAe,OAAO,KAAG,IA6B3E,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,MAG5C,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { renderJsDoc } from "../../writer/doc.js";
|
|
3
|
+
import { indent } from "../../writer/emit.js";
|
|
4
|
+
export const generateEnum = (context, enumeration) => {
|
|
5
|
+
if (!enumeration.introspectable)
|
|
6
|
+
return;
|
|
7
|
+
const name = enumeration.name;
|
|
8
|
+
const memberKeys = enumeration.members.map((member) => enumMemberKey(member.name));
|
|
9
|
+
if (enumeration.errorDomain !== undefined) {
|
|
10
|
+
const memberEntries = enumeration.members.map((member, index) => `${memberKeys[index]}: ${member.value}`);
|
|
11
|
+
const typeFields = memberKeys.map((key) => `${key}: number`).join("; ");
|
|
12
|
+
context.addRuntimeImport("createErrorDomain");
|
|
13
|
+
context.addRuntimeImport("ErrorDomain");
|
|
14
|
+
const quarkExpression = renderQuarkExpression(context, enumeration.errorDomain);
|
|
15
|
+
context.module.appendDeclaration(`${renderJsDoc(enumeration.doc)}export type ${name} = number;`);
|
|
16
|
+
context.module.appendDeclaration(`export const ${name}: ErrorDomain<{ ${typeFields} }> = createErrorDomain(${quarkExpression}, { ${memberEntries.join(", ")} });`);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (enumeration.members.some((member) => member.doc !== undefined)) {
|
|
20
|
+
const memberBlocks = enumeration.members.map((member, index) => `${renderJsDoc(member.doc)}${memberKeys[index]} = ${member.value},`);
|
|
21
|
+
context.module.appendDeclaration(`${renderJsDoc(enumeration.doc)}export enum ${name} {\n${indent(memberBlocks.join("\n"), 1)}\n}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const memberDeclarations = enumeration.members.map((member, index) => `${memberKeys[index]} = ${member.value}`);
|
|
25
|
+
context.module.appendDeclaration(`${renderJsDoc(enumeration.doc)}export enum ${name} { ${memberDeclarations.join(", ")} }`);
|
|
26
|
+
};
|
|
27
|
+
export const enumMemberKey = (name) => {
|
|
28
|
+
const upper = name.toUpperCase().replaceAll("-", "_");
|
|
29
|
+
return /^[0-9]/.test(upper) ? `_${upper}` : upper;
|
|
30
|
+
};
|
|
31
|
+
const renderQuarkExpression = (context, errorDomain) => {
|
|
32
|
+
if (context.namespace.name === "GLib") {
|
|
33
|
+
return `() => quarkFromString(${sourceStringLiteral(errorDomain)})`;
|
|
34
|
+
}
|
|
35
|
+
const alias = context.addCrossNamespaceImport("GLib");
|
|
36
|
+
return `() => ${alias}.quarkFromString(${sourceStringLiteral(errorDomain)})`;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/store/gi/enum.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { indent } from \"../../writer/emit.js\";\n\nexport const generateEnum = (context: ModuleContext, enumeration: GirEnum): void => {\n if (!enumeration.introspectable) return;\n const name = enumeration.name;\n const memberKeys = enumeration.members.map((member) => enumMemberKey(member.name));\n if (enumeration.errorDomain !== undefined) {\n const memberEntries = enumeration.members.map((member, index) => `${memberKeys[index]}: ${member.value}`);\n const typeFields = memberKeys.map((key) => `${key}: number`).join(\"; \");\n context.addRuntimeImport(\"createErrorDomain\");\n context.addRuntimeImport(\"ErrorDomain\");\n const quarkExpression = renderQuarkExpression(context, enumeration.errorDomain);\n context.module.appendDeclaration(`${renderJsDoc(enumeration.doc)}export type ${name} = number;`);\n context.module.appendDeclaration(\n `export const ${name}: ErrorDomain<{ ${typeFields} }> = createErrorDomain(${quarkExpression}, { ${memberEntries.join(\", \")} });`,\n );\n return;\n }\n if (enumeration.members.some((member) => member.doc !== undefined)) {\n const memberBlocks = enumeration.members.map(\n (member, index) => `${renderJsDoc(member.doc)}${memberKeys[index]} = ${member.value},`,\n );\n context.module.appendDeclaration(\n `${renderJsDoc(enumeration.doc)}export enum ${name} {\\n${indent(memberBlocks.join(\"\\n\"), 1)}\\n}`,\n );\n return;\n }\n const memberDeclarations = enumeration.members.map((member, index) => `${memberKeys[index]} = ${member.value}`);\n context.module.appendDeclaration(\n `${renderJsDoc(enumeration.doc)}export enum ${name} { ${memberDeclarations.join(\", \")} }`,\n );\n};\n\nexport const enumMemberKey = (name: string): string => {\n const upper = name.toUpperCase().replaceAll(\"-\", \"_\");\n return /^[0-9]/.test(upper) ? `_${upper}` : upper;\n};\n\nconst renderQuarkExpression = (context: ModuleContext, errorDomain: string): string => {\n if (context.namespace.name === \"GLib\") {\n return `() => quarkFromString(${sourceStringLiteral(errorDomain)})`;\n }\n const alias = context.addCrossNamespaceImport(\"GLib\");\n return `() => ${alias}.quarkFromString(${sourceStringLiteral(errorDomain)})`;\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GirFunction } from "../../gir/function.js";
|
|
2
|
+
import type { GirNamespace } from "../../gir/namespace.js";
|
|
3
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
4
|
+
export declare const renderFnExpression: (context: ModuleContext, fn: GirFunction) => string | undefined;
|
|
5
|
+
export declare const generateNamespaceFunction: (context: ModuleContext, fn: GirFunction) => void;
|
|
6
|
+
export declare const namespaceFunctionExportName: (cIdentifier: string, girName: string, symbolPrefixes: string[]) => string;
|
|
7
|
+
export declare const generateNamespaceBootstrap: (context: ModuleContext, namespace: GirNamespace) => void;
|
|
8
|
+
//# sourceMappingURL=function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/store/gi/function.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAe7D,eAAO,MAAM,kBAAkB,YAAa,aAAa,MAAM,WAAW,KAAG,MAAM,GAAG,SAQrF,CAAC;AASF,eAAO,MAAM,yBAAyB,YAAa,aAAa,MAAM,WAAW,KAAG,IAYnF,CAAC;AA0BF,eAAO,MAAM,2BAA2B,gBAAiB,MAAM,WAAW,MAAM,kBAAkB,MAAM,EAAE,KAAG,MAM5G,CAAC;AAaF,eAAO,MAAM,0BAA0B,YAAa,aAAa,aAAa,YAAY,KAAG,IAY5F,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { toCamelIdentifier } from "@gtkx/utils";
|
|
2
|
+
import { tFn } from "../../analysis/descriptor.js";
|
|
3
|
+
import { hasCallerAllocatedArrayLength } from "../../analysis/param-structure.js";
|
|
4
|
+
import { renderJsDoc } from "../../writer/doc.js";
|
|
5
|
+
import { arrayLiteral, renderBlock } from "../../writer/emit.js";
|
|
6
|
+
import { matchAsyncFinish } from "./async.js";
|
|
7
|
+
import { callableReferencesClassStruct } from "./class-struct-record.js";
|
|
8
|
+
import { planCallArgs, renderMethodBody, renderMethodReturnType, renderMethodSignature, renderPromisifiedBody, renderPromisifiedSignature, renderReturnDescriptor, } from "./method.js";
|
|
9
|
+
export const renderFnExpression = (context, fn) => {
|
|
10
|
+
if (fn.cIdentifier === undefined)
|
|
11
|
+
return undefined;
|
|
12
|
+
const library = context.namespace.sharedLibrary;
|
|
13
|
+
if (library === undefined)
|
|
14
|
+
return undefined;
|
|
15
|
+
context.addRuntimeImport("t");
|
|
16
|
+
const params = planCallArgs(context, fn).map((arg) => arg.paramLiteral);
|
|
17
|
+
const ret = renderReturnDescriptor(context, fn);
|
|
18
|
+
return tFn(library, fn.cIdentifier, { args: arrayLiteral(params), returns: ret, throws: fn.throws });
|
|
19
|
+
};
|
|
20
|
+
const namespaceFunctionEmittable = (context, fn) => fn.introspectable &&
|
|
21
|
+
fn.shadowedBy === undefined &&
|
|
22
|
+
fn.cIdentifier !== undefined &&
|
|
23
|
+
!callableReferencesClassStruct(context, fn) &&
|
|
24
|
+
!hasCallerAllocatedArrayLength(context.library, fn);
|
|
25
|
+
export const generateNamespaceFunction = (context, fn) => {
|
|
26
|
+
if (!namespaceFunctionEmittable(context, fn))
|
|
27
|
+
return;
|
|
28
|
+
const expression = renderFnExpression(context, fn);
|
|
29
|
+
if (expression === undefined)
|
|
30
|
+
return;
|
|
31
|
+
const cIdentifier = fn.cIdentifier;
|
|
32
|
+
if (cIdentifier === undefined)
|
|
33
|
+
return;
|
|
34
|
+
const bindingName = toCamelIdentifier(cIdentifier);
|
|
35
|
+
context.module.appendBinding(`const ${bindingName} = ${expression};`, cIdentifier);
|
|
36
|
+
const exportName = namespaceFunctionExportName(cIdentifier, fn.name, context.namespace.cSymbolPrefixes);
|
|
37
|
+
const declaration = renderNamespaceFunctionDeclaration(context, fn, exportName, bindingName);
|
|
38
|
+
context.module.appendDeclaration(`${renderJsDoc(fn.doc)}${declaration}`);
|
|
39
|
+
};
|
|
40
|
+
const renderNamespaceFunctionDeclaration = (context, fn, exportName, bindingName) => {
|
|
41
|
+
const finishFn = matchAsyncFinish(context.library, fn, context.namespace.functions);
|
|
42
|
+
const finishCIdentifier = finishFn?.cIdentifier;
|
|
43
|
+
if (finishFn !== undefined && finishCIdentifier !== undefined && namespaceFunctionEmittable(context, finishFn)) {
|
|
44
|
+
const finishExport = namespaceFunctionExportName(finishCIdentifier, finishFn.name, context.namespace.cSymbolPrefixes);
|
|
45
|
+
const { signature, returnType } = renderPromisifiedSignature(context, fn, finishFn);
|
|
46
|
+
const body = renderPromisifiedBody(context, fn, finishExport, bindingName);
|
|
47
|
+
return renderBlock(`export function ${exportName}(${signature}): ${returnType}`, body);
|
|
48
|
+
}
|
|
49
|
+
const signature = renderMethodSignature(context, fn);
|
|
50
|
+
const returnType = renderMethodReturnType(context, fn);
|
|
51
|
+
const body = renderMethodBody(context, fn, { bindingExpression: bindingName });
|
|
52
|
+
return renderBlock(`export function ${exportName}(${signature}): ${returnType}`, body);
|
|
53
|
+
};
|
|
54
|
+
export const namespaceFunctionExportName = (cIdentifier, girName, symbolPrefixes) => {
|
|
55
|
+
if (girName.length > 0) {
|
|
56
|
+
return toCamelIdentifier(girName);
|
|
57
|
+
}
|
|
58
|
+
const stripped = stripLongestPrefix(cIdentifier, symbolPrefixes);
|
|
59
|
+
return toCamelIdentifier(stripped);
|
|
60
|
+
};
|
|
61
|
+
const stripLongestPrefix = (input, prefixes) => {
|
|
62
|
+
let best = "";
|
|
63
|
+
for (const prefix of prefixes) {
|
|
64
|
+
const candidate = `${prefix}_`;
|
|
65
|
+
if (input.startsWith(candidate) && candidate.length > best.length) {
|
|
66
|
+
best = candidate;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return best.length === 0 ? input : input.slice(best.length);
|
|
70
|
+
};
|
|
71
|
+
export const generateNamespaceBootstrap = (context, namespace) => {
|
|
72
|
+
for (const fn of namespace.functions) {
|
|
73
|
+
if (fn.parameters.length > 0)
|
|
74
|
+
continue;
|
|
75
|
+
if (!fn.introspectable || fn.shadowedBy !== undefined || fn.cIdentifier === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
const exportName = namespaceFunctionExportName(fn.cIdentifier, fn.name, context.namespace.cSymbolPrefixes);
|
|
78
|
+
if (fn.name === "init") {
|
|
79
|
+
context.module.appendRegistration(`${exportName}();`);
|
|
80
|
+
}
|
|
81
|
+
else if (fn.name === "finalize") {
|
|
82
|
+
context.addRuntimeImport("onExit");
|
|
83
|
+
context.module.appendRegistration(`onExit(${exportName});`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/store/gi/function.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport { tFn } from \"../../analysis/descriptor.js\";\nimport { hasCallerAllocatedArrayLength } from \"../../analysis/param-structure.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { arrayLiteral, renderBlock } from \"../../writer/emit.js\";\nimport { matchAsyncFinish } from \"./async.js\";\nimport { callableReferencesClassStruct } from \"./class-struct-record.js\";\nimport {\n planCallArgs,\n renderMethodBody,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedBody,\n renderPromisifiedSignature,\n renderReturnDescriptor,\n} from \"./method.js\";\n\nexport const renderFnExpression = (context: ModuleContext, fn: GirFunction): string | undefined => {\n if (fn.cIdentifier === undefined) return undefined;\n const library = context.namespace.sharedLibrary;\n if (library === undefined) return undefined;\n context.addRuntimeImport(\"t\");\n const params = planCallArgs(context, fn).map((arg) => arg.paramLiteral);\n const ret = renderReturnDescriptor(context, fn);\n return tFn(library, fn.cIdentifier, { args: arrayLiteral(params), returns: ret, throws: fn.throws });\n};\n\nconst namespaceFunctionEmittable = (context: ModuleContext, fn: GirFunction): boolean =>\n fn.introspectable &&\n fn.shadowedBy === undefined &&\n fn.cIdentifier !== undefined &&\n !callableReferencesClassStruct(context, fn) &&\n !hasCallerAllocatedArrayLength(context.library, fn);\n\nexport const generateNamespaceFunction = (context: ModuleContext, fn: GirFunction): void => {\n if (!namespaceFunctionEmittable(context, fn)) return;\n const expression = renderFnExpression(context, fn);\n if (expression === undefined) return;\n const cIdentifier = fn.cIdentifier;\n if (cIdentifier === undefined) return;\n const bindingName = toCamelIdentifier(cIdentifier);\n context.module.appendBinding(`const ${bindingName} = ${expression};`, cIdentifier);\n\n const exportName = namespaceFunctionExportName(cIdentifier, fn.name, context.namespace.cSymbolPrefixes);\n const declaration = renderNamespaceFunctionDeclaration(context, fn, exportName, bindingName);\n context.module.appendDeclaration(`${renderJsDoc(fn.doc)}${declaration}`);\n};\n\nconst renderNamespaceFunctionDeclaration = (\n context: ModuleContext,\n fn: GirFunction,\n exportName: string,\n bindingName: string,\n): string => {\n const finishFn = matchAsyncFinish(context.library, fn, context.namespace.functions);\n const finishCIdentifier = finishFn?.cIdentifier;\n if (finishFn !== undefined && finishCIdentifier !== undefined && namespaceFunctionEmittable(context, finishFn)) {\n const finishExport = namespaceFunctionExportName(\n finishCIdentifier,\n finishFn.name,\n context.namespace.cSymbolPrefixes,\n );\n const { signature, returnType } = renderPromisifiedSignature(context, fn, finishFn);\n const body = renderPromisifiedBody(context, fn, finishExport, bindingName);\n return renderBlock(`export function ${exportName}(${signature}): ${returnType}`, body);\n }\n const signature = renderMethodSignature(context, fn);\n const returnType = renderMethodReturnType(context, fn);\n const body = renderMethodBody(context, fn, { bindingExpression: bindingName });\n return renderBlock(`export function ${exportName}(${signature}): ${returnType}`, body);\n};\n\nexport const namespaceFunctionExportName = (cIdentifier: string, girName: string, symbolPrefixes: string[]): string => {\n if (girName.length > 0) {\n return toCamelIdentifier(girName);\n }\n const stripped = stripLongestPrefix(cIdentifier, symbolPrefixes);\n return toCamelIdentifier(stripped);\n};\n\nconst stripLongestPrefix = (input: string, prefixes: string[]): string => {\n let best = \"\";\n for (const prefix of prefixes) {\n const candidate = `${prefix}_`;\n if (input.startsWith(candidate) && candidate.length > best.length) {\n best = candidate;\n }\n }\n return best.length === 0 ? input : input.slice(best.length);\n};\n\nexport const generateNamespaceBootstrap = (context: ModuleContext, namespace: GirNamespace): void => {\n for (const fn of namespace.functions) {\n if (fn.parameters.length > 0) continue;\n if (!fn.introspectable || fn.shadowedBy !== undefined || fn.cIdentifier === undefined) continue;\n const exportName = namespaceFunctionExportName(fn.cIdentifier, fn.name, context.namespace.cSymbolPrefixes);\n if (fn.name === \"init\") {\n context.module.appendRegistration(`${exportName}();`);\n } else if (fn.name === \"finalize\") {\n context.addRuntimeImport(\"onExit\");\n context.module.appendRegistration(`onExit(${exportName});`);\n }\n }\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
2
|
+
export declare const gtypeTsType: (context: ModuleContext) => string;
|
|
3
|
+
export declare const gtypeMemberDeclaration: (context: ModuleContext) => string;
|
|
4
|
+
type TypeSource = {
|
|
5
|
+
glibGetType: string | undefined;
|
|
6
|
+
glibTypeName: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare const gtypeExprFor: (context: ModuleContext, source: TypeSource) => string | undefined;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=gtype-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gtype-binding.d.ts","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,WAAW,YAAa,aAAa,KAAG,MACsB,CAAC;AAE5E,eAAO,MAAM,sBAAsB,YAAa,aAAa,KAAG,MAAsD,CAAC;AAiBvH,KAAK,UAAU,GAAG;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,aAAa,UAAU,UAAU,KAAG,MAAM,GAAG,SAGF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { PRIMITIVE_TS_TYPE } from "../../gir/primitives.js";
|
|
3
|
+
export const gtypeTsType = (context) => context.namespace.name === "GObject" ? "Type" : PRIMITIVE_TS_TYPE.gtype;
|
|
4
|
+
export const gtypeMemberDeclaration = (context) => `declare __type__: ${gtypeTsType(context)};`;
|
|
5
|
+
const renderGtypeExpression = (context, getType, typeName) => {
|
|
6
|
+
if (getType === "intern") {
|
|
7
|
+
if (typeName === undefined)
|
|
8
|
+
return undefined;
|
|
9
|
+
if (context.namespace.name !== "GObject")
|
|
10
|
+
context.addRuntimeImport("typeFromName");
|
|
11
|
+
return `typeFromName(${sourceStringLiteral(typeName)})`;
|
|
12
|
+
}
|
|
13
|
+
context.addRuntimeImport("resolveType");
|
|
14
|
+
const lib = context.namespace.sharedLibrary ?? "";
|
|
15
|
+
return `resolveType(${sourceStringLiteral(lib)}, ${sourceStringLiteral(getType)})`;
|
|
16
|
+
};
|
|
17
|
+
export const gtypeExprFor = (context, source) => source.glibGetType === undefined
|
|
18
|
+
? undefined
|
|
19
|
+
: renderGtypeExpression(context, source.glibGetType, source.glibTypeName);
|
|
20
|
+
//# sourceMappingURL=gtype-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gtype-binding.js","sourceRoot":"","sources":["../../../src/store/gi/gtype-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAU,EAAE,CAC1D,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAE5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAsB,EAAU,EAAE,CAAC,qBAAqB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AAEvH,MAAM,qBAAqB,GAAG,CAC1B,OAAsB,EACtB,OAAe,EACf,QAA4B,EACV,EAAE;IACpB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACnF,OAAO,gBAAgB,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;IAClD,OAAO,eAAe,mBAAmB,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC;AACvF,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAE,MAAkB,EAAsB,EAAE,CAC3F,MAAM,CAAC,WAAW,KAAK,SAAS;IAC5B,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport { PRIMITIVE_TS_TYPE } from \"../../gir/primitives.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\n\nexport const gtypeTsType = (context: ModuleContext): string =>\n context.namespace.name === \"GObject\" ? \"Type\" : PRIMITIVE_TS_TYPE.gtype;\n\nexport const gtypeMemberDeclaration = (context: ModuleContext): string => `declare __type__: ${gtypeTsType(context)};`;\n\nconst renderGtypeExpression = (\n context: ModuleContext,\n getType: string,\n typeName: string | undefined,\n): string | undefined => {\n if (getType === \"intern\") {\n if (typeName === undefined) return undefined;\n if (context.namespace.name !== \"GObject\") context.addRuntimeImport(\"typeFromName\");\n return `typeFromName(${sourceStringLiteral(typeName)})`;\n }\n context.addRuntimeImport(\"resolveType\");\n const lib = context.namespace.sharedLibrary ?? \"\";\n return `resolveType(${sourceStringLiteral(lib)}, ${sourceStringLiteral(getType)})`;\n};\n\ntype TypeSource = {\n glibGetType: string | undefined;\n glibTypeName: string | undefined;\n};\n\nexport const gtypeExprFor = (context: ModuleContext, source: TypeSource): string | undefined =>\n source.glibGetType === undefined\n ? undefined\n : renderGtypeExpression(context, source.glibGetType, source.glibTypeName);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/store/gi/interface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAuB7D,eAAO,MAAM,iBAAiB,YAAa,aAAa,SAAS,QAAQ,KAAG,IA0B3E,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { toPascalCase } from "@gtkx/utils";
|
|
2
|
+
import { reservedSignalMemberRename, resolvePrerequisiteReference } from "../../analysis/inheritance.js";
|
|
3
|
+
import { renderJsDoc } from "../../writer/doc.js";
|
|
4
|
+
import { renderBlock, renderBracedOrEmpty } from "../../writer/emit.js";
|
|
5
|
+
import { dedupeCallables, generateBindings, indexMethodsByName, renderClassInstanceMember, renderInstanceMethodSignature, renderStaticHead, } from "./callables.js";
|
|
6
|
+
import { gtypeExprFor } from "./gtype-binding.js";
|
|
7
|
+
import { methodExportName } from "./method.js";
|
|
8
|
+
import { renderPropertyAccessor, renderPropertyAccessorSignature, } from "./property-accessor.js";
|
|
9
|
+
import { appendInterfaceRegistration } from "./registration.js";
|
|
10
|
+
import { renderSignalDeclarations, renderSignalMembers } from "./signal.js";
|
|
11
|
+
import { renderVfuncMetadata } from "./vtable.js";
|
|
12
|
+
export const generateInterface = (context, iface) => {
|
|
13
|
+
if (!iface.introspectable)
|
|
14
|
+
return;
|
|
15
|
+
if (iface.name.length === 0)
|
|
16
|
+
return;
|
|
17
|
+
const className = toPascalCase(iface.name);
|
|
18
|
+
const callables = {
|
|
19
|
+
constructors: dedupeCallables(iface.constructors),
|
|
20
|
+
functions: dedupeCallables(iface.functions),
|
|
21
|
+
methods: dedupeCallables(iface.methods),
|
|
22
|
+
};
|
|
23
|
+
generateBindings(context, callables);
|
|
24
|
+
const gtypeExpr = gtypeExprFor(context, iface);
|
|
25
|
+
context.module.appendDeclaration(renderInterfaceType(context, iface, className, callables));
|
|
26
|
+
context.module.appendDeclaration(renderInterfaceClass(context, className, callables, gtypeExpr));
|
|
27
|
+
for (const declaration of renderSignalDeclarations(context, iface, className, true)) {
|
|
28
|
+
context.module.appendDeclaration(declaration);
|
|
29
|
+
}
|
|
30
|
+
context.module.appendDeclaration(renderInterfaceMaker(context, iface, className, callables));
|
|
31
|
+
appendInterfaceRegistration(context, {
|
|
32
|
+
className,
|
|
33
|
+
makerName: makerName(className),
|
|
34
|
+
gtypeExpr,
|
|
35
|
+
vfuncs: renderVfuncMetadata(context, iface),
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const makerName = (className) => `make${className}`;
|
|
39
|
+
const interfaceTypeExtends = (context, iface) => {
|
|
40
|
+
const refs = iface.prerequisites
|
|
41
|
+
.map((name) => resolvePrerequisiteReference(context, name))
|
|
42
|
+
.filter((entry) => entry !== undefined);
|
|
43
|
+
if (refs.length > 0)
|
|
44
|
+
return refs.join(", ");
|
|
45
|
+
return context.qualify("GObject", "Object");
|
|
46
|
+
};
|
|
47
|
+
const renderInterfaceType = (context, iface, className, callables) => {
|
|
48
|
+
const members = renderInterfaceTypeMembers(context, iface, callables);
|
|
49
|
+
return `${renderJsDoc(iface.doc)}${renderBracedOrEmpty(`export interface ${className} extends ${interfaceTypeExtends(context, iface)}`, members.join("\n"))}`;
|
|
50
|
+
};
|
|
51
|
+
const renderInterfaceMembers = (context, iface, callables, renderers) => {
|
|
52
|
+
const className = toPascalCase(iface.name);
|
|
53
|
+
const members = [];
|
|
54
|
+
const claimedNames = new Set();
|
|
55
|
+
const methodByName = indexMethodsByName(callables.methods);
|
|
56
|
+
for (const callable of callables.methods) {
|
|
57
|
+
const rename = reservedSignalMemberRename(className, callable);
|
|
58
|
+
const block = renderers.renderMethod(context, callable, methodByName, rename);
|
|
59
|
+
if (block === undefined)
|
|
60
|
+
continue;
|
|
61
|
+
members.push(block);
|
|
62
|
+
claimedNames.add(rename ?? methodExportName(callable));
|
|
63
|
+
}
|
|
64
|
+
for (const property of iface.properties) {
|
|
65
|
+
const block = renderers.renderProperty({ context, property, claimedNames, methodByName });
|
|
66
|
+
if (block !== undefined)
|
|
67
|
+
members.push(block);
|
|
68
|
+
}
|
|
69
|
+
return members;
|
|
70
|
+
};
|
|
71
|
+
const renderInterfaceTypeMembers = (context, iface, callables) => renderInterfaceMembers(context, iface, callables, {
|
|
72
|
+
renderMethod: renderInstanceMethodSignature,
|
|
73
|
+
renderProperty: renderPropertyAccessorSignature,
|
|
74
|
+
});
|
|
75
|
+
const renderInterfaceClass = (context, className, callables, gtypeExpr) => {
|
|
76
|
+
const members = [];
|
|
77
|
+
if (gtypeExpr !== undefined)
|
|
78
|
+
members.push(renderInterfaceHasInstance(context, className, gtypeExpr));
|
|
79
|
+
members.push(...renderStaticHead(context, callables, className));
|
|
80
|
+
return renderBracedOrEmpty(`export abstract class ${className}`, members.join("\n\n"));
|
|
81
|
+
};
|
|
82
|
+
const renderInterfaceHasInstance = (context, className, gtypeExpr) => {
|
|
83
|
+
context.addRuntimeImport("valueIsA");
|
|
84
|
+
return renderBlock(`static [Symbol.hasInstance](value: unknown): value is ${className}`, `return valueIsA(value, ${gtypeExpr});`);
|
|
85
|
+
};
|
|
86
|
+
const renderInterfaceMaker = (context, iface, className, callables) => {
|
|
87
|
+
context.addRuntimeTypeImport("Mixin");
|
|
88
|
+
const members = renderInterfaceInstanceMembers(context, iface, callables);
|
|
89
|
+
const classExpression = renderBracedOrEmpty("class extends Base", members.join("\n\n"));
|
|
90
|
+
return `export const ${makerName(className)}: Mixin = (Base) =>\n${classExpression};`;
|
|
91
|
+
};
|
|
92
|
+
const renderInterfaceInstanceMembers = (context, iface, callables) => [
|
|
93
|
+
...renderInterfaceMembers(context, iface, callables, {
|
|
94
|
+
renderMethod: renderClassInstanceMember,
|
|
95
|
+
renderProperty: renderPropertyAccessor,
|
|
96
|
+
}),
|
|
97
|
+
...renderSignalMembers(context, iface),
|
|
98
|
+
];
|
|
99
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/store/gi/interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { toPascalCase } from \"@gtkx/utils\";\nimport { reservedSignalMemberRename, resolvePrerequisiteReference } from \"../../analysis/inheritance.js\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { renderBlock, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport {\n type Callables,\n dedupeCallables,\n generateBindings,\n indexMethodsByName,\n renderClassInstanceMember,\n renderInstanceMethodSignature,\n renderStaticHead,\n} from \"./callables.js\";\nimport { gtypeExprFor } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport {\n type PropertyAccessorArgs,\n renderPropertyAccessor,\n renderPropertyAccessorSignature,\n} from \"./property-accessor.js\";\nimport { appendInterfaceRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport { renderVfuncMetadata } from \"./vtable.js\";\n\nexport const generateInterface = (context: ModuleContext, iface: GirClass): void => {\n if (!iface.introspectable) return;\n if (iface.name.length === 0) return;\n const className = toPascalCase(iface.name);\n const callables: Callables = {\n constructors: dedupeCallables(iface.constructors),\n functions: dedupeCallables(iface.functions),\n methods: dedupeCallables(iface.methods),\n };\n generateBindings(context, callables);\n\n const gtypeExpr = gtypeExprFor(context, iface);\n\n context.module.appendDeclaration(renderInterfaceType(context, iface, className, callables));\n context.module.appendDeclaration(renderInterfaceClass(context, className, callables, gtypeExpr));\n for (const declaration of renderSignalDeclarations(context, iface, className, true)) {\n context.module.appendDeclaration(declaration);\n }\n context.module.appendDeclaration(renderInterfaceMaker(context, iface, className, callables));\n\n appendInterfaceRegistration(context, {\n className,\n makerName: makerName(className),\n gtypeExpr,\n vfuncs: renderVfuncMetadata(context, iface),\n });\n};\n\nconst makerName = (className: string): string => `make${className}`;\n\nconst interfaceTypeExtends = (context: ModuleContext, iface: GirClass): string => {\n const refs = iface.prerequisites\n .map((name) => resolvePrerequisiteReference(context, name))\n .filter((entry): entry is string => entry !== undefined);\n if (refs.length > 0) return refs.join(\", \");\n return context.qualify(\"GObject\", \"Object\");\n};\n\nconst renderInterfaceType = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n const members = renderInterfaceTypeMembers(context, iface, callables);\n return `${renderJsDoc(iface.doc)}${renderBracedOrEmpty(\n `export interface ${className} extends ${interfaceTypeExtends(context, iface)}`,\n members.join(\"\\n\"),\n )}`;\n};\n\ntype InterfaceMemberRenderers = {\n renderMethod: (\n context: ModuleContext,\n callable: GirFunction,\n methodByName: Map<string, GirFunction>,\n nameOverride?: string,\n ) => string | undefined;\n renderProperty: (args: PropertyAccessorArgs) => string | undefined;\n};\n\nconst renderInterfaceMembers = (\n context: ModuleContext,\n iface: GirClass,\n callables: Callables,\n renderers: InterfaceMemberRenderers,\n): string[] => {\n const className = toPascalCase(iface.name);\n const members: string[] = [];\n const claimedNames = new Set<string>();\n const methodByName = indexMethodsByName(callables.methods);\n for (const callable of callables.methods) {\n const rename = reservedSignalMemberRename(className, callable);\n const block = renderers.renderMethod(context, callable, methodByName, rename);\n if (block === undefined) continue;\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n for (const property of iface.properties) {\n const block = renderers.renderProperty({ context, property, claimedNames, methodByName });\n if (block !== undefined) members.push(block);\n }\n return members;\n};\n\nconst renderInterfaceTypeMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] =>\n renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderInstanceMethodSignature,\n renderProperty: renderPropertyAccessorSignature,\n });\n\nconst renderInterfaceClass = (\n context: ModuleContext,\n className: string,\n callables: Callables,\n gtypeExpr: string | undefined,\n): string => {\n const members: string[] = [];\n if (gtypeExpr !== undefined) members.push(renderInterfaceHasInstance(context, className, gtypeExpr));\n members.push(...renderStaticHead(context, callables, className));\n return renderBracedOrEmpty(`export abstract class ${className}`, members.join(\"\\n\\n\"));\n};\n\nconst renderInterfaceHasInstance = (context: ModuleContext, className: string, gtypeExpr: string): string => {\n context.addRuntimeImport(\"valueIsA\");\n return renderBlock(\n `static [Symbol.hasInstance](value: unknown): value is ${className}`,\n `return valueIsA(value, ${gtypeExpr});`,\n );\n};\n\nconst renderInterfaceMaker = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n context.addRuntimeTypeImport(\"Mixin\");\n const members = renderInterfaceInstanceMembers(context, iface, callables);\n const classExpression = renderBracedOrEmpty(\"class extends Base\", members.join(\"\\n\\n\"));\n return `export const ${makerName(className)}: Mixin = (Base) =>\\n${classExpression};`;\n};\n\nconst renderInterfaceInstanceMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] => [\n ...renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderClassInstanceMember,\n renderProperty: renderPropertyAccessor,\n }),\n ...renderSignalMembers(context, iface),\n];\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GirFunction } from "../../gir/function.js";
|
|
2
|
+
import type { GirParameter } from "../../gir/parameter.js";
|
|
3
|
+
import type { ModuleContext } from "../../writer/context.js";
|
|
4
|
+
export declare const itemComparatorArgDescriptors: (context: ModuleContext, fn: GirFunction, parameter: GirParameter) => Map<number, string> | undefined;
|
|
5
|
+
export declare const itemComparatorTsType: (context: ModuleContext, fn: GirFunction, parameter: GirParameter) => string | undefined;
|
|
6
|
+
//# sourceMappingURL=item-comparators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-comparators.d.ts","sourceRoot":"","sources":["../../../src/store/gi/item-comparators.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAoD7D,eAAO,MAAM,4BAA4B,YAC5B,aAAa,MAClB,WAAW,aACJ,YAAY,KACxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAQxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,YACpB,aAAa,MAClB,WAAW,aACJ,YAAY,KACxB,MAAM,GAAG,SAWX,CAAC"}
|