@gtkx/codegen 1.1.0 → 1.2.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/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +14 -10
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +11 -5
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +25 -9
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/interface-conflicts.d.ts +3 -1
- package/dist/analysis/interface-conflicts.d.ts.map +1 -1
- package/dist/analysis/interface-conflicts.js +3 -8
- package/dist/analysis/interface-conflicts.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +3 -2
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +16 -9
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/analysis/type-shape.d.ts +3 -2
- package/dist/analysis/type-shape.d.ts.map +1 -1
- package/dist/analysis/type-shape.js +2 -1
- package/dist/analysis/type-shape.js.map +1 -1
- package/dist/compile.d.ts +4 -5
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +56 -4
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +2 -0
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +1 -1
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/pipeline.d.ts +1 -0
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +10 -3
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +2 -4
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +11 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +22 -19
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +1 -0
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +7 -2
- package/dist/gi.js.map +1 -1
- package/dist/gir/class.d.ts +7 -2
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +4 -1
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/gir-path.d.ts +1 -1
- package/dist/gir/gir-path.js +1 -1
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/library.d.ts +5 -1
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +8 -1
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +4 -1
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.js +1 -1
- package/dist/gir/primitives.js.map +1 -1
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +8 -6
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +8 -4
- package/dist/khronos/render.js.map +1 -1
- package/dist/runner.d.ts +2 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +5 -3
- package/dist/runner.js.map +1 -1
- package/dist/staging.d.ts.map +1 -1
- package/dist/staging.js +1 -1
- package/dist/staging.js.map +1 -1
- package/dist/store/compile-store.d.ts +0 -1
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +7 -34
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/callables.d.ts +2 -4
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +22 -7
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +63 -17
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/constant.js +1 -1
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +2 -5
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts +2 -1
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +13 -1
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.js +4 -4
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +4 -7
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +0 -3
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +15 -108
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +7 -5
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +3 -2
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +42 -12
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +5 -9
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/return-wrap.js +1 -1
- package/dist/store/gi/return-wrap.js.map +1 -1
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +27 -6
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +0 -1
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts.map +1 -1
- package/dist/store/resolve-store.js +1 -0
- package/dist/store/resolve-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +0 -1
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +2 -7
- package/dist/store/store-fs.js.map +1 -1
- package/dist/xml.d.ts +1 -0
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +28 -1
- package/dist/xml.js.map +1 -1
- package/overrides/gobject/object.ts.ejs +2 -0
- package/package.json +3 -3
- package/src/analysis/descriptor-render.ts +19 -10
- package/src/analysis/descriptor.ts +43 -9
- package/src/analysis/interface-conflicts.ts +6 -8
- package/src/analysis/ts-type.ts +30 -11
- package/src/analysis/type-shape.ts +5 -2
- package/src/compile.ts +87 -6
- package/src/docs/api-reference.ts +3 -1
- package/src/docs/pipeline.ts +13 -7
- package/src/docs/symbol-page.ts +1 -5
- package/src/fingerprint.ts +31 -38
- package/src/gi.ts +9 -2
- package/src/gir/class.ts +12 -3
- package/src/gir/gir-path.ts +1 -1
- package/src/gir/library.ts +9 -1
- package/src/gir/parse.ts +6 -1
- package/src/gir/primitives.ts +1 -1
- package/src/khronos/args.ts +9 -6
- package/src/khronos/render.ts +8 -6
- package/src/runner.ts +7 -3
- package/src/staging.ts +1 -3
- package/src/store/compile-store.ts +7 -40
- package/src/store/gi/callables.ts +30 -11
- package/src/store/gi/class.ts +96 -21
- package/src/store/gi/constant.ts +1 -1
- package/src/store/gi/enum.ts +2 -6
- package/src/store/gi/gtype-binding.ts +16 -1
- package/src/store/gi/interface.ts +4 -4
- package/src/store/gi/method.ts +4 -9
- package/src/store/gi/property-accessor.ts +22 -193
- package/src/store/gi/record-constructor.ts +7 -5
- package/src/store/gi/record-field-accessor.ts +65 -13
- package/src/store/gi/record.ts +13 -17
- package/src/store/gi/return-wrap.ts +1 -1
- package/src/store/gi/signal.ts +36 -13
- package/src/store/jsx-store.ts +0 -1
- package/src/store/resolve-store.ts +1 -0
- package/src/store/store-fs.ts +3 -9
- package/src/xml.ts +43 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/khronos/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAA2B,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0B/C,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,UAAU,GAAG,iCAAiC,CAAC;AACrD,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAElD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAU,EAAE,CACzE,KAAK,CAAC;IACF,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC;IACrC,OAAO;IACP,UAAU;CACb,CAAC,CAAC;AAEP,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAC3C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAElF,MAAM,oBAAoB,GAAG,CAAC,WAAqB,EAAU,EAAE,CAC3D,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAEpE,MAAM,kBAAkB,GAAG,CACvB,IAAgB,EAChB,WAA+B,EAC/B,SAAsB,EACT,EAAE;IACf,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,OAAO,MAAM,EAAE,CAAC;IAE9D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACzC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACvF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,QAAuB,EAAE,IAAc,EAAU,EAAE;IACrE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzG,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,QAAuB,EAAY,EAAE,CACpE,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,QAAuB,EAAE,IAAc,EAAY,EAAE;IACzF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,QAAQ,CAAC,CAAC;IAE7D,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QAE3B,MAAM,IAAI,GACN,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAC1C,CAAC,CAAC,UAAU,MAAM,GAAG;YACrB,CAAC,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE9C,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,kBAAkB,IAAI,GAAG,EAAE,WAAW,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAClB,IAAkC,EAClC,UAA8B,EAC9B,SAAsB,EACtB,IAAkB,EACH,EAAE;IACjB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E,MAAM,IAAI,GAAG;QACT,GAAG,KAAK;QACR,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,gBAAgB,CAAC,GAAG,WAAW,IAAI,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;KACrE;SACI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO;QACH,UAAU;QACV,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,OAAO,EAAE,SAAS,WAAW,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1E,WAAW,EAAE,GAAG,KAAK,qBAAqB,UAAU,IAAI,SAAS,MAAM,QAAQ,OAAO,IAAI,KAAK;KAClG,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAE,OAAe,EAAE,IAAc,EAAU,EAAE,CAC/F,YAAY,CAAC;IACT,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;IAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,OAAO;IACP,IAAI;CACP,CAAC,CAAC;AAEP,MAAM,kBAAkB,GAAG,CACvB,IAAkC,EAC8C,EAAE;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,SAAS,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,OAAO,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;AAC5G,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,IAAkC,EAAE,YAAoB,EAAsB,EAAE;IAC5G,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAkC,EAAgC,EAAE;IAC1F,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAEvE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAE,MAAe,EAAE,KAAuB,EAAU,EAAE;IACpG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC,OAAO,oBAAoB,CACvB,OAAO,EACP,eAAe,KAAK,CAAC,WAAW,mBAAmB;QACnD,KAAK,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EACjE;QACI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,iBAAiB,KAAK,CAAC,SAAS,CAAC,OAAO,sBAAsB,KAAK,CAAC,WAAW,IAAI;KACtF,CACJ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACtB,IAAkC,EAClC,UAA8B,EAC9B,SAAsB,EACtB,IAAkB,EACS,EAAE;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;IACjD,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACjH,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAG,CAAC,+BAA+B,EAAE,OAAO,WAAW,IAAI,QAAQ,IAAI,EAAE,uBAAuB,CAAC,CAAC,IAAI,CAC5G,IAAI,CACP,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAEpF,OAAO;QACH,UAAU;QACV,OAAO,EAAE,SAAS,WAAW,MAAM,OAAO,GAAG;QAC7C,WAAW,EAAE,GAAG,KAAK,qBAAqB,UAAU,IAAI,SAAS,MAAM,SAAS,CAAC,OAAO,OAAO,IAAI,KAAK;KAC3G,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAkC,EAAsB,EAAE;IACnF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3C,IAAI,SAAS,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,SAAS,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,IAAkC,EAAsB,EAAE;IACzF,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAErD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,UAAU,CAAC,WAAW,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CACzB,IAAkC,EAClC,UAA8B,EAC9B,SAAsB,EACtB,IAAkB,EACS,EAAE;IAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,oBAAoB,CAC9B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAC1B,eAAe,WAAW,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,EAC9E,CAAC,sBAAsB,WAAW,sBAAsB,WAAW,IAAI,CAAC,CAC3E,CAAC;IAEF,OAAO;QACH,UAAU;QACV,WAAW,EACP,GAAG,KAAK,qBAAqB,UAAU,UAAU,WAAW,aAAa;YACzE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,iBAAiB;KAChD,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAwB,CAAC","sourcesContent":["import { sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GlDocContext } from \"./doc-context.js\";\nimport type { CommandPlan, GlScalar, ReturnPlan } from \"./plan.js\";\nimport type { GlSymbolProvenance } from \"./select.js\";\nimport { tBind, tInlineStruct, tRef, tString, tUint8, tVoid } from \"../analysis/descriptor.js\";\nimport { type InArg, type OutArg, planArgs, returnPlanTsType, scalarPrefixArgs, trackInto } from \"./args.js\";\nimport { commandJsDoc, derivedJsDoc, inParamDocLine } from \"./jsdoc.js\";\nimport { commandExportName } from \"./notes.js\";\n\ntype RenderedCommand = {\n exportName: string;\n binding?: string;\n declaration: string;\n};\n\ntype SingularContext = {\n plan: CommandPlan & { isOk: true };\n provenance: GlSymbolProvenance;\n docs: GlDocContext;\n};\n\ntype EmittedReturn = {\n tsType: string;\n descriptor: string;\n expr?: (call: string) => string;\n};\n\ntype GenSingularShape = {\n countScalar: GlScalar;\n outScalar: GlScalar;\n objectClass: string;\n};\n\nconst GL_LIB_EXPRESSION = \"LIB\";\nconst GEN_FAMILY = /^gl(Gen|Create)[A-Z][A-Za-z]*s$/;\nconst DELETE_FAMILY = /^glDelete[A-Z][A-Za-z]*s$/;\n\nconst glBind = (name: string, argList: string, returnType: string): string =>\n tBind({\n libExpr: GL_LIB_EXPRESSION,\n symbolExpr: sourceStringLiteral(name),\n argList,\n returnType,\n });\n\nconst singularize = (plural: string): string =>\n plural.endsWith(\"ies\") ? `${plural.slice(0, -3)}y` : plural.replace(/s$/, \"\");\n\nconst renderDescriptorList = (descriptors: string[]): string =>\n descriptors.length === 0 ? \"[]\" : `[${descriptors.join(\", \")}]`;\n\nconst buildEmittedReturn = (\n plan: ReturnPlan,\n returnGroup: string | undefined,\n usedTypes: Set<string>,\n): EmittedReturn => {\n const tsType = trackInto(usedTypes)(returnPlanTsType(plan, returnGroup));\n const cast = (call: string): string => `${call} as ${tsType}`;\n\n switch (plan.kind) {\n case \"void\": {\n return { tsType, descriptor: tVoid };\n }\n case \"scalar\": {\n return { tsType, descriptor: plan.scalar.descriptor, expr: cast };\n }\n case \"boolean\": {\n return { tsType, descriptor: tUint8, expr: (call) => `(${call} as number) !== 0` };\n }\n case \"string\": {\n return { tsType, descriptor: tString(\"borrowed\"), expr: cast };\n }\n case \"sync\": {\n return { tsType, descriptor: tInlineStruct(), expr: cast };\n }\n case \"opaque-pointer\": {\n return { tsType, descriptor: tInlineStruct(), expr: cast };\n }\n }\n};\n\nconst returnTsType = (returned: EmittedReturn, outs: OutArg[]): string => {\n if (outs.length === 0) {\n return returned.tsType;\n }\n\n const outTypes = outs.map((out) => out.tsType);\n\n if (returned.expr === undefined) {\n return outTypes.length === 1 && outTypes[0] !== undefined ? outTypes[0] : `[${outTypes.join(\", \")}]`;\n }\n\n return `[${returned.tsType}, ${outTypes.join(\", \")}]`;\n};\n\nconst returnNoOut = (call: string, returned: EmittedReturn): string[] =>\n returned.expr === undefined ? [`${call};`] : [`return ${returned.expr(call)};`];\n\nconst returnStatements = (call: string, returned: EmittedReturn, outs: OutArg[]): string[] => {\n if (outs.length === 0) {\n return returnNoOut(call, returned);\n }\n\n const outValues = outs.map((out) => `${out.cellName}.value`);\n\n if (returned.expr === undefined) {\n const [single] = outValues;\n\n const tail =\n single !== undefined && outValues.length === 1\n ? `return ${single};`\n : `return [${outValues.join(\", \")}];`;\n\n return [`${call};`, tail];\n }\n\n return [`const result = ${call};`, `return [${returned.expr(\"result\")}, ${outValues.join(\", \")}];`];\n};\n\nconst renderCommand = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand => {\n const { command } = plan;\n const exportName = commandExportName(command.name);\n const { args, ins, outs } = planArgs(plan, usedTypes);\n const returned = buildEmittedReturn(plan.returnPlan, command.returnGroup, usedTypes);\n const signature = ins.map((arg) => `${arg.name}: ${arg.tsType}`).join(\", \");\n const argNames = args.map((arg) => (arg.isOut ? arg.cellName : arg.name)).join(\", \");\n const descriptors = renderDescriptorList(args.map((arg) => arg.descriptor));\n const tsReturn = returnTsType(returned, outs);\n const jsDoc = commandJsDoc({ plan, provenance, ins, outs, docs });\n const seeds = outs.map((out) => out.seed);\n const bindExpression = glBind(command.name, descriptors, returned.descriptor);\n const isInline = plan.params.some((paramPlan) => paramPlan.kind === \"string-out\");\n const bindingName = isInline ? \"binding\" : toCamelIdentifier(command.name);\n\n const body = [\n ...seeds,\n ...(isInline ? [`const ${bindingName} = ${bindExpression};`] : []),\n ...returnStatements(`${bindingName}(${argNames})`, returned, outs),\n ]\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n\n return {\n exportName,\n ...(!isInline && { binding: `const ${bindingName} = ${bindExpression};` }),\n declaration: `${jsDoc}\\nexport function ${exportName}(${signature}): ${tsReturn} {\\n${body}\\n}`,\n };\n};\n\nconst singularCommandJsDoc = (context: SingularContext, summary: string, body: string[]): string =>\n derivedJsDoc({\n command: context.plan.command,\n provenance: context.provenance,\n docs: context.docs,\n summary,\n body,\n });\n\nconst genSingularScalars = (\n plan: CommandPlan & { isOk: true },\n): { countScalar: GlScalar; outScalar: GlScalar; lenParamName: string } | undefined => {\n const countPlan = plan.params.at(-2);\n\n if (countPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n const outPlan = plan.params.at(-1);\n\n if (outPlan?.kind !== \"ref-array-out\") {\n return undefined;\n }\n\n return { countScalar: countPlan.scalar, outScalar: outPlan.scalar, lenParamName: outPlan.lenParamName };\n};\n\nconst genSingularObjectClass = (plan: CommandPlan & { isOk: true }, lenParamName: string): string | undefined => {\n const countParam = plan.command.params[plan.params.length - 2];\n const outParam = plan.command.params[plan.params.length - 1];\n\n if (countParam === undefined || outParam === undefined) {\n return undefined;\n }\n\n if (lenParamName !== countParam.name) {\n return undefined;\n }\n\n return outParam.objectClass;\n};\n\nconst genSingularShape = (plan: CommandPlan & { isOk: true }): GenSingularShape | undefined => {\n const scalars = genSingularScalars(plan);\n\n if (scalars === undefined) {\n return undefined;\n }\n\n const objectClass = genSingularObjectClass(plan, scalars.lenParamName);\n\n if (objectClass === undefined) {\n return undefined;\n }\n\n return { countScalar: scalars.countScalar, outScalar: scalars.outScalar, objectClass };\n};\n\nconst genSingularJsDoc = (context: SingularContext, prefix: InArg[], shape: GenSingularShape): string => {\n const { command } = context.plan;\n\n return singularCommandJsDoc(\n context,\n `Returns one ${shape.objectClass} object name via ` +\n `\\`${command.name}(${prefix.length > 0 ? \"..., \" : \"\"}1, ...)\\`.`,\n [\n ...prefix.map((arg) => inParamDocLine(context.plan, arg, context.docs)),\n ` * @returns \\`${shape.outScalar.tsAlias}\\`, object class \\`${shape.objectClass}\\``,\n ],\n );\n};\n\nconst deriveGenSingular = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand | undefined => {\n if (!GEN_FAMILY.test(plan.command.name)) {\n return undefined;\n }\n\n const shape = genSingularShape(plan);\n\n if (shape === undefined) {\n return undefined;\n }\n\n const prefix = scalarPrefixArgs(plan, usedTypes);\n\n if (prefix === undefined) {\n return undefined;\n }\n\n const { countScalar, outScalar } = shape;\n const exportName = singularize(commandExportName(plan.command.name));\n const bindingName = `${plan.command.name}Single`;\n const descriptors = [...prefix.map((arg) => arg.descriptor), countScalar.descriptor, tRef(outScalar.descriptor)];\n usedTypes.add(outScalar.tsAlias);\n const signature = prefix.map((arg) => `${arg.name}: ${arg.tsType}`).join(\", \");\n const callArgs = [...prefix.map((arg) => arg.name), \"1\", \"out\"].join(\", \");\n const jsDoc = genSingularJsDoc({ plan, provenance, docs }, prefix, shape);\n\n const body = [\" const out = { value: 0 };\", ` ${bindingName}(${callArgs});`, \" return out.value;\"].join(\n \"\\n\",\n );\n\n const binding = glBind(plan.command.name, renderDescriptorList(descriptors), tVoid);\n\n return {\n exportName,\n binding: `const ${bindingName} = ${binding};`,\n declaration: `${jsDoc}\\nexport function ${exportName}(${signature}): ${outScalar.tsAlias} {\\n${body}\\n}`,\n };\n};\n\nconst deleteSingularAlias = (plan: CommandPlan & { isOk: true }): string | undefined => {\n if (plan.params.length !== 2) {\n return undefined;\n }\n\n const [countPlan, arrayPlan] = plan.params;\n\n if (countPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n if (arrayPlan?.kind !== \"array-in\") {\n return undefined;\n }\n\n return arrayPlan.scalar.tsAlias;\n};\n\nconst deleteSingularObjectClass = (plan: CommandPlan & { isOk: true }): string | undefined => {\n const [countParam, arrayParam] = plan.command.params;\n\n if (countParam === undefined || arrayParam === undefined) {\n return undefined;\n }\n\n if (arrayParam.len !== countParam.name) {\n return undefined;\n }\n\n return arrayParam.objectClass;\n};\n\nconst deriveDeleteSingular = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand | undefined => {\n if (!DELETE_FAMILY.test(plan.command.name)) {\n return undefined;\n }\n\n const scalarAlias = deleteSingularAlias(plan);\n\n if (scalarAlias === undefined) {\n return undefined;\n }\n\n const objectClass = deleteSingularObjectClass(plan);\n\n if (objectClass === undefined) {\n return undefined;\n }\n\n usedTypes.add(scalarAlias);\n const exportName = singularize(commandExportName(plan.command.name));\n\n const jsDoc = singularCommandJsDoc(\n { plan, provenance, docs },\n `Deletes one ${objectClass} object name via \\`${plan.command.name}(1, ...)\\`.`,\n [` * @param name - \\`${scalarAlias}\\`, object class \\`${objectClass}\\``],\n );\n\n return {\n exportName,\n declaration:\n `${jsDoc}\\nexport function ${exportName}(name: ${scalarAlias}): void {\\n` +\n ` ${plan.command.name}(1, [name]);\\n}`,\n };\n};\n\nexport { renderCommand, deriveGenSingular, deriveDeleteSingular, type RenderedCommand };\n"]}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/khronos/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GlDocContext } from \"./doc-context.js\";\nimport type { CommandPlan, GlScalar, ReturnPlan } from \"./plan.js\";\nimport type { GlSymbolProvenance } from \"./select.js\";\nimport { tBind, tInlineStruct, tRef, tString, tUint8, tVoid } from \"../analysis/descriptor.js\";\nimport { type InArg, type OutArg, planArgs, returnPlanTsType, scalarPrefixArgs, trackInto } from \"./args.js\";\nimport { commandJsDoc, derivedJsDoc, inParamDocLine } from \"./jsdoc.js\";\nimport { commandExportName } from \"./notes.js\";\n\ntype RenderedCommand = {\n exportName: string;\n binding?: string;\n declaration: string;\n};\n\ntype SingularContext = {\n plan: CommandPlan & { isOk: true };\n provenance: GlSymbolProvenance;\n docs: GlDocContext;\n};\n\ntype EmittedReturn = {\n tsType: string;\n descriptor: string;\n expr?: (call: string) => string;\n};\n\ntype GenSingularShape = {\n countScalar: GlScalar;\n outScalar: GlScalar;\n objectClass: string;\n};\n\nconst GL_LIB_EXPRESSION = \"LIB\";\nconst GEN_FAMILY = /^gl(Gen|Create)[A-Z][A-Za-z]*s$/;\nconst DELETE_FAMILY = /^glDelete[A-Z][A-Za-z]*s$/;\n\nconst glBind = (name: string, argList: string, returnType: string): string =>\n tBind({\n libExpr: GL_LIB_EXPRESSION,\n symbolExpr: sourceStringLiteral(name),\n argList,\n returnType,\n });\n\nconst singularize = (plural: string): string =>\n plural.endsWith(\"ies\") ? `${plural.slice(0, -3)}y` : plural.replace(/s$/, \"\");\n\nconst renderDescriptorList = (descriptors: string[]): string =>\n descriptors.length === 0 ? \"[]\" : `[${descriptors.join(\", \")}]`;\n\nconst buildEmittedReturn = (\n plan: ReturnPlan,\n returnGroup: string | undefined,\n usedTypes: Set<string>,\n): EmittedReturn => {\n const tsType = trackInto(usedTypes)(returnPlanTsType(plan, returnGroup));\n const cast = (call: string): string => `${call} as ${tsType}`;\n\n switch (plan.kind) {\n case \"void\": {\n return { tsType, descriptor: tVoid };\n }\n case \"scalar\": {\n return { tsType, descriptor: plan.scalar.descriptor, expr: cast };\n }\n case \"boolean\": {\n return { tsType, descriptor: tUint8, expr: (call) => `(${call} as number) !== 0` };\n }\n case \"string\": {\n return { tsType, descriptor: tString(\"borrowed\"), expr: cast };\n }\n case \"sync\": {\n return { tsType, descriptor: tInlineStruct(), expr: cast };\n }\n case \"opaque-pointer\": {\n return { tsType, descriptor: tInlineStruct(), expr: cast };\n }\n }\n};\n\nconst returnTsType = (returned: EmittedReturn, outs: OutArg[]): string => {\n if (outs.length === 0) {\n return returned.tsType;\n }\n\n const outTypes = outs.map((out) => out.tsType);\n\n if (returned.expr === undefined) {\n return outTypes.length === 1 && outTypes[0] !== undefined ? outTypes[0] : `[${outTypes.join(\", \")}]`;\n }\n\n return `[${returned.tsType}, ${outTypes.join(\", \")}]`;\n};\n\nconst returnNoOut = (call: string, returned: EmittedReturn): string[] =>\n returned.expr === undefined ? [`${call};`] : [`return ${returned.expr(call)};`];\n\nconst returnStatements = (call: string, returned: EmittedReturn, outs: OutArg[]): string[] => {\n if (outs.length === 0) {\n return returnNoOut(call, returned);\n }\n\n const outValues = outs.map((out) => `${out.cellName}.value`);\n\n if (returned.expr === undefined) {\n const [single] = outValues;\n\n const tail =\n single !== undefined && outValues.length === 1\n ? `return ${single};`\n : `return [${outValues.join(\", \")}];`;\n\n return [`${call};`, tail];\n }\n\n return [`const __result = ${call};`, `return [${returned.expr(\"__result\")}, ${outValues.join(\", \")}];`];\n};\n\nconst renderCommand = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand => {\n const { command } = plan;\n const exportName = commandExportName(command.name);\n const { args, ins, outs } = planArgs(plan, usedTypes);\n const returned = buildEmittedReturn(plan.returnPlan, command.returnGroup, usedTypes);\n const signature = ins.map((arg) => `${arg.name}: ${arg.tsType}`).join(\", \");\n const argNames = args.map((arg) => (arg.isOut ? arg.cellName : arg.name)).join(\", \");\n const descriptors = renderDescriptorList(args.map((arg) => arg.descriptor));\n const tsReturn = returnTsType(returned, outs);\n const jsDoc = commandJsDoc({ plan, provenance, ins, outs, docs });\n const seeds = outs.map((out) => out.seed);\n const bindExpression = glBind(command.name, descriptors, returned.descriptor);\n const isInline = plan.params.some((paramPlan) => paramPlan.kind === \"string-out\");\n const bindingName = isInline ? \"__binding\" : toCamelIdentifier(command.name);\n\n const body = [\n ...seeds,\n ...(isInline ? [`const ${bindingName} = ${bindExpression};`] : []),\n ...returnStatements(`${bindingName}(${argNames})`, returned, outs),\n ]\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n\n return {\n exportName,\n ...(!isInline && { binding: `const ${bindingName} = ${bindExpression};` }),\n declaration: `${jsDoc}\\nexport function ${exportName}(${signature}): ${tsReturn} {\\n${body}\\n}`,\n };\n};\n\nconst singularCommandJsDoc = (context: SingularContext, summary: string, body: string[]): string =>\n derivedJsDoc({\n command: context.plan.command,\n provenance: context.provenance,\n docs: context.docs,\n summary,\n body,\n });\n\nconst genSingularScalars = (\n plan: CommandPlan & { isOk: true },\n): { countScalar: GlScalar; outScalar: GlScalar; lenParamName: string } | undefined => {\n const countPlan = plan.params.at(-2);\n\n if (countPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n const outPlan = plan.params.at(-1);\n\n if (outPlan?.kind !== \"ref-array-out\") {\n return undefined;\n }\n\n return { countScalar: countPlan.scalar, outScalar: outPlan.scalar, lenParamName: outPlan.lenParamName };\n};\n\nconst genSingularObjectClass = (plan: CommandPlan & { isOk: true }, lenParamName: string): string | undefined => {\n const countParam = plan.command.params[plan.params.length - 2];\n const outParam = plan.command.params[plan.params.length - 1];\n\n if (countParam === undefined || outParam === undefined) {\n return undefined;\n }\n\n if (lenParamName !== countParam.name) {\n return undefined;\n }\n\n return outParam.objectClass;\n};\n\nconst genSingularShape = (plan: CommandPlan & { isOk: true }): GenSingularShape | undefined => {\n const scalars = genSingularScalars(plan);\n\n if (scalars === undefined) {\n return undefined;\n }\n\n const objectClass = genSingularObjectClass(plan, scalars.lenParamName);\n\n if (objectClass === undefined) {\n return undefined;\n }\n\n return { countScalar: scalars.countScalar, outScalar: scalars.outScalar, objectClass };\n};\n\nconst genSingularJsDoc = (context: SingularContext, prefix: InArg[], shape: GenSingularShape): string => {\n const { command } = context.plan;\n\n return singularCommandJsDoc(\n context,\n `Returns one ${shape.objectClass} object name via ` +\n `\\`${command.name}(${prefix.length > 0 ? \"..., \" : \"\"}1, ...)\\`.`,\n [\n ...prefix.map((arg) => inParamDocLine(context.plan, arg, context.docs)),\n ` * @returns \\`${shape.outScalar.tsAlias}\\`, object class \\`${shape.objectClass}\\``,\n ],\n );\n};\n\nconst deriveGenSingular = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand | undefined => {\n if (!GEN_FAMILY.test(plan.command.name)) {\n return undefined;\n }\n\n const shape = genSingularShape(plan);\n\n if (shape === undefined) {\n return undefined;\n }\n\n const prefix = scalarPrefixArgs(plan, usedTypes);\n\n if (prefix === undefined) {\n return undefined;\n }\n\n const { countScalar, outScalar } = shape;\n const exportName = singularize(commandExportName(plan.command.name));\n const bindingName = `${plan.command.name}Single`;\n const descriptors = [...prefix.map((arg) => arg.descriptor), countScalar.descriptor, tRef(outScalar.descriptor)];\n usedTypes.add(outScalar.tsAlias);\n const signature = prefix.map((arg) => `${arg.name}: ${arg.tsType}`).join(\", \");\n const callArgs = [...prefix.map((arg) => arg.name), \"1\", \"__out\"].join(\", \");\n const jsDoc = genSingularJsDoc({ plan, provenance, docs }, prefix, shape);\n\n const body = [\n \" const __out = { value: 0 };\",\n ` ${bindingName}(${callArgs});`,\n \" return __out.value;\",\n ].join(\"\\n\");\n\n const binding = glBind(plan.command.name, renderDescriptorList(descriptors), tVoid);\n\n return {\n exportName,\n binding: `const ${bindingName} = ${binding};`,\n declaration: `${jsDoc}\\nexport function ${exportName}(${signature}): ${outScalar.tsAlias} {\\n${body}\\n}`,\n };\n};\n\nconst deleteSingularAlias = (plan: CommandPlan & { isOk: true }): string | undefined => {\n if (plan.params.length !== 2) {\n return undefined;\n }\n\n const [countPlan, arrayPlan] = plan.params;\n\n if (countPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n if (arrayPlan?.kind !== \"array-in\") {\n return undefined;\n }\n\n return arrayPlan.scalar.tsAlias;\n};\n\nconst deleteSingularObjectClass = (plan: CommandPlan & { isOk: true }): string | undefined => {\n const [countParam, arrayParam] = plan.command.params;\n\n if (countParam === undefined || arrayParam === undefined) {\n return undefined;\n }\n\n if (arrayParam.len !== countParam.name) {\n return undefined;\n }\n\n return arrayParam.objectClass;\n};\n\nconst deriveDeleteSingular = (\n plan: CommandPlan & { isOk: true },\n provenance: GlSymbolProvenance,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommand | undefined => {\n if (!DELETE_FAMILY.test(plan.command.name)) {\n return undefined;\n }\n\n const scalarAlias = deleteSingularAlias(plan);\n\n if (scalarAlias === undefined) {\n return undefined;\n }\n\n const objectClass = deleteSingularObjectClass(plan);\n\n if (objectClass === undefined) {\n return undefined;\n }\n\n usedTypes.add(scalarAlias);\n const exportName = singularize(commandExportName(plan.command.name));\n\n const jsDoc = singularCommandJsDoc(\n { plan, provenance, docs },\n `Deletes one ${objectClass} object name via \\`${plan.command.name}(1, ...)\\`.`,\n [` * @param name - \\`${scalarAlias}\\`, object class \\`${objectClass}\\``],\n );\n\n return {\n exportName,\n declaration:\n `${jsDoc}\\nexport function ${exportName}(name: ${scalarAlias}): void {\\n` +\n ` ${plan.command.name}(1, [name]);\\n}`,\n };\n};\n\nexport { renderCommand, deriveGenSingular, deriveDeleteSingular, type RenderedCommand };\n"]}
|
package/dist/runner.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ type CodegenRunnerOptions = {
|
|
|
30
30
|
userOmittedProps?: OmittedProps;
|
|
31
31
|
/** Regenerates both stores even when their fingerprints are fresh. */
|
|
32
32
|
isForced?: boolean;
|
|
33
|
+
/** Emits GIR byte sequences as `Uint8Array` rather than `number[]`; defaults to false. */
|
|
34
|
+
isByteArrayTyped?: boolean;
|
|
33
35
|
};
|
|
34
36
|
/** What a `runCodegen` run produced. */
|
|
35
37
|
type CodegenRunnerResult = {
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzE,KAAK,gBAAgB,GAAG;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,8CAA8C;AAC9C,KAAK,oBAAoB,GAAG;IACxB,2GAA2G;IAC3G,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,EAAE,EAAE,YAAY,CAAC;IACjB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,iGAAiG;IACjG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzE,KAAK,gBAAgB,GAAG;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,8CAA8C;AAC9C,KAAK,oBAAoB,GAAG;IACxB,2GAA2G;IAC3G,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,EAAE,EAAE,YAAY,CAAC;IACjB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,iGAAiG;IACjG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wCAAwC;AACxC,KAAK,mBAAmB,GAAG;IACvB,+EAA+E;IAC/E,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,UAAU,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAUpF,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,SAAS,gBAAgB,KAAG,kBAmBjD,CAAC;AA6FF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,CAAC"}
|
package/dist/runner.js
CHANGED
|
@@ -73,11 +73,13 @@ const emitJsxStore = async (input) => {
|
|
|
73
73
|
};
|
|
74
74
|
const emitStoresWithConfig = async (config) => {
|
|
75
75
|
const { options, gi, jsx, libraries, girPath } = config;
|
|
76
|
+
const isByteArrayTyped = options.isByteArrayTyped === true;
|
|
76
77
|
let library;
|
|
77
|
-
const loadLibrary = () => (library ??= Library.load(libraries, girPath));
|
|
78
|
-
const
|
|
78
|
+
const loadLibrary = () => (library ??= Library.load(libraries, girPath, isByteArrayTyped));
|
|
79
|
+
const giInputs = { girFiles: [], libraries, girPath, isByteArrayTyped };
|
|
80
|
+
const isGiRegenerated = options.isForced === true || !isGiStoreFresh(gi.storeDir, giInputs);
|
|
79
81
|
const namespaces = isGiRegenerated
|
|
80
|
-
? runGiCodegen(loadLibrary(), { gi, libraries, girPath })
|
|
82
|
+
? runGiCodegen(loadLibrary(), { gi, libraries, girPath, isByteArrayTyped })
|
|
81
83
|
: 0;
|
|
82
84
|
if (jsx === undefined) {
|
|
83
85
|
return { isRegenerated: isGiRegenerated, namespaces, intrinsicElements: 0 };
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { ModuleExport } from \"./react/element-config.js\";\nimport type { OmittedProps } from \"./store/jsx/omitted-props.js\";\nimport { checkModules } from \"./compile.js\";\nimport { isGiStoreFresh } from \"./fingerprint.js\";\nimport { runGiCodegen } from \"./gi.js\";\nimport { Library } from \"./gir/library.js\";\nimport { generateGlModules, type GlGenerationReport } from \"./khronos/pipeline.js\";\nimport { sweepStagingDirs } from \"./staging.js\";\nimport { ensureStoreLink, type StoreOptions } from \"./store/store-fs.js\";\n\ntype GlCodegenOptions = {\n registryPath: string;\n overrideExports: Set<string>;\n outputDir: string;\n resolveFrom: string;\n};\n\n/** What to generate and where to write it. */\ntype CodegenRunnerOptions = {\n /** GIR library identifiers such as `\"Gtk-4.0\"`; a `\"*\"` selection must be expanded before it gets here. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Where to write and link the `@gtkx/gi` store. */\n gi: StoreOptions;\n /** Where to write and link the `@gtkx/jsx` store; omit to generate the gi store alone. */\n jsx?: StoreOptions | undefined;\n /** Subexport names of the installed `@gtkx/react`, whose element config shapes the jsx store. */\n reactSubexports?: string[];\n /** Component wrappers the project layers over the built-ins, keyed by GLib type name. */\n userComponents?: Record<string, ModuleExport>;\n /** GLib type names whose GObject their parent container creates, added to the framework's own. */\n userLazyElements?: string[];\n /** Base props interfaces the project's elements extend, keyed by GLib type name. */\n userProps?: Record<string, ModuleExport>;\n /** Props the project drops from the generated element props, keyed by GLib type name. */\n userOmittedProps?: OmittedProps;\n /** Regenerates both stores even when their fingerprints are fresh. */\n isForced?: boolean;\n};\n\n/** What a `runCodegen` run produced. */\ntype CodegenRunnerResult = {\n /** Whether either store was rewritten; false means both were already fresh. */\n isRegenerated: boolean;\n /** How many namespaces the gi store was written with, zero when it was already fresh. */\n namespaces: number;\n /** How many JSX elements the jsx store binds, zero when no jsx store was requested. */\n intrinsicElements: number;\n /** Wall-clock duration of the run, in milliseconds. */\n duration: number;\n};\n\ntype StoreResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n};\n\n/**\n * Writes and links a project's `@gtkx/gi` and `@gtkx/jsx` stores from the given GObject-Introspection\n * libraries. The gi store is rewritten only when its GIR inputs changed, and the jsx store only when the gi\n * store or the React element config changed, unless `options.isForced` is set. Pass the spread of\n * `resolveStore(projectRoot)` for everything but `libraries` and `girPath`.\n *\n * Every store already on disk is linked at its `linkDir` before anything is generated, so a link an install\n * pruned out of `node_modules` is restored without regenerating the store, and the gi store is reachable\n * under its own specifier while the jsx store is type checked.\n *\n * @param options What to generate and where to write it.\n * @returns A summary of what was regenerated and how long the run took.\n * @throws If `girPath` is empty, which would otherwise generate nothing and report success.\n */\nconst runCodegen = async (options: CodegenRunnerOptions): Promise<CodegenRunnerResult> => {\n const start = Date.now();\n const store = await emitStores(options);\n\n return {\n isRegenerated: store.isRegenerated,\n namespaces: store.namespaces,\n intrinsicElements: store.intrinsicElements,\n duration: Date.now() - start,\n };\n};\n\nconst runGlCodegen = (options: GlCodegenOptions): GlGenerationReport => {\n const { files, report } = generateGlModules({\n registryPath: options.registryPath,\n overrideExports: options.overrideExports,\n });\n\n checkModules({\n modules: [...files].map(([fileName, source]) => ({ fileName, source })),\n resolveFrom: options.resolveFrom,\n label: \"the generated gl modules\",\n });\n\n mkdirSync(options.outputDir, { recursive: true });\n\n for (const [fileName, source] of files) {\n writeFileSync(join(options.outputDir, fileName), source);\n }\n\n return report;\n};\n\nconst jsxUserOptions = (\n options: CodegenRunnerOptions,\n): {\n reactSubexports: string[];\n userComponents: Record<string, ModuleExport>;\n userLazyElements: string[];\n userProps: Record<string, ModuleExport>;\n userOmittedProps: OmittedProps;\n} => ({\n reactSubexports: options.reactSubexports ?? [],\n userComponents: options.userComponents ?? {},\n userLazyElements: options.userLazyElements ?? [],\n userProps: options.userProps ?? {},\n userOmittedProps: options.userOmittedProps ?? {},\n});\n\nconst emitJsxStore = async (input: {\n options: CodegenRunnerOptions;\n jsx: StoreOptions;\n gi: StoreOptions;\n loadLibrary: () => Library;\n isGiRegenerated: boolean;\n namespaces: number;\n}): Promise<StoreResult> => {\n const { options, jsx, gi, loadLibrary, isGiRegenerated, namespaces } = input;\n const { runJsxCodegen } = await import(\"./jsx.js\");\n\n const jsxResult = await runJsxCodegen({\n getLibrary: loadLibrary,\n jsx,\n giStoreDir: gi.storeDir,\n ...jsxUserOptions(options),\n isGiRegenerated,\n isForced: options.isForced === true,\n });\n\n return {\n isRegenerated: isGiRegenerated || jsxResult.isRegenerated,\n namespaces,\n intrinsicElements: jsxResult.intrinsicElementCount,\n };\n};\n\nconst emitStoresWithConfig = async (config: {\n options: CodegenRunnerOptions;\n gi: StoreOptions;\n jsx: StoreOptions | undefined;\n libraries: string[];\n girPath: string[];\n}): Promise<StoreResult> => {\n const { options, gi, jsx, libraries, girPath } = config;\n let library: Library | undefined;\n const loadLibrary = (): Library => (library ??= Library.load(libraries, girPath));\n const isGiRegenerated = options.isForced === true || !isGiStoreFresh(gi.storeDir, libraries, girPath);\n\n const namespaces = isGiRegenerated\n ? runGiCodegen(loadLibrary(), { gi, libraries, girPath })\n : 0;\n\n if (jsx === undefined) {\n return { isRegenerated: isGiRegenerated, namespaces, intrinsicElements: 0 };\n }\n\n return emitJsxStore({ options, jsx, gi, loadLibrary, isGiRegenerated, namespaces });\n};\n\nconst prepareStores = (stores: (StoreOptions | undefined)[]): void => {\n for (const store of stores) {\n if (store === undefined) {\n continue;\n }\n\n sweepStagingDirs(store.storeDir);\n ensureStoreLink(store);\n }\n};\n\nconst emitStores = async (options: CodegenRunnerOptions): Promise<StoreResult> => {\n const { gi, jsx, libraries, girPath } = options;\n\n if (girPath.length === 0) {\n throw new Error(\"codegen needs at least one GIR search path; pass the result of resolveGirPath\");\n }\n\n prepareStores([gi, jsx]);\n\n return emitStoresWithConfig({ options, gi, jsx, libraries, girPath });\n};\n\nexport { runCodegen, runGlCodegen, type CodegenRunnerOptions, type CodegenRunnerResult };\n"]}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAA2B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAqB,MAAM,qBAAqB,CAAC;AAqDzE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAG,KAAK,EAAE,OAA6B,EAAgC,EAAE;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO;QACH,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;KAC/B,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,OAAyB,EAAsB,EAAE;IACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC;QACxC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe,EAAE,OAAO,CAAC,eAAe;KAC3C,CAAC,CAAC;IAEH,YAAY,CAAC;QACT,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,0BAA0B;KACpC,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACnB,OAA6B,EAO/B,EAAE,CAAC,CAAC;IACF,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;IAC9C,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;IAC5C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE;IAChD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;IAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,KAAK,EAAE,KAO3B,EAAwB,EAAE;IACvB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;QAClC,UAAU,EAAE,WAAW;QACvB,GAAG;QACH,UAAU,EAAE,EAAE,CAAC,QAAQ;QACvB,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,eAAe;QACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI;KACtC,CAAC,CAAC;IAEH,OAAO;QACH,aAAa,EAAE,eAAe,IAAI,SAAS,CAAC,aAAa;QACzD,UAAU;QACV,iBAAiB,EAAE,SAAS,CAAC,qBAAqB;KACrD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAMnC,EAAwB,EAAE;IACvB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;IAC3D,IAAI,OAA4B,CAAC;IACjC,MAAM,WAAW,GAAG,GAAY,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAc,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACpF,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE5F,MAAM,UAAU,GAAG,eAAe;QAC9B,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC;IAER,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAoC,EAAQ,EAAE;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,OAA6B,EAAwB,EAAE;IAC7E,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEhD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACrG,CAAC;IAED,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzB,OAAO,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAuD,CAAC","sourcesContent":["import { mkdirSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { ModuleExport } from \"./react/element-config.js\";\nimport type { OmittedProps } from \"./store/jsx/omitted-props.js\";\nimport { checkModules } from \"./compile.js\";\nimport { isGiStoreFresh } from \"./fingerprint.js\";\nimport { runGiCodegen } from \"./gi.js\";\nimport { Library } from \"./gir/library.js\";\nimport { generateGlModules, type GlGenerationReport } from \"./khronos/pipeline.js\";\nimport { sweepStagingDirs } from \"./staging.js\";\nimport { ensureStoreLink, type StoreOptions } from \"./store/store-fs.js\";\n\ntype GlCodegenOptions = {\n registryPath: string;\n overrideExports: Set<string>;\n outputDir: string;\n resolveFrom: string;\n};\n\n/** What to generate and where to write it. */\ntype CodegenRunnerOptions = {\n /** GIR library identifiers such as `\"Gtk-4.0\"`; a `\"*\"` selection must be expanded before it gets here. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Where to write and link the `@gtkx/gi` store. */\n gi: StoreOptions;\n /** Where to write and link the `@gtkx/jsx` store; omit to generate the gi store alone. */\n jsx?: StoreOptions | undefined;\n /** Subexport names of the installed `@gtkx/react`, whose element config shapes the jsx store. */\n reactSubexports?: string[];\n /** Component wrappers the project layers over the built-ins, keyed by GLib type name. */\n userComponents?: Record<string, ModuleExport>;\n /** GLib type names whose GObject their parent container creates, added to the framework's own. */\n userLazyElements?: string[];\n /** Base props interfaces the project's elements extend, keyed by GLib type name. */\n userProps?: Record<string, ModuleExport>;\n /** Props the project drops from the generated element props, keyed by GLib type name. */\n userOmittedProps?: OmittedProps;\n /** Regenerates both stores even when their fingerprints are fresh. */\n isForced?: boolean;\n /** Emits GIR byte sequences as `Uint8Array` rather than `number[]`; defaults to false. */\n isByteArrayTyped?: boolean;\n};\n\n/** What a `runCodegen` run produced. */\ntype CodegenRunnerResult = {\n /** Whether either store was rewritten; false means both were already fresh. */\n isRegenerated: boolean;\n /** How many namespaces the gi store was written with, zero when it was already fresh. */\n namespaces: number;\n /** How many JSX elements the jsx store binds, zero when no jsx store was requested. */\n intrinsicElements: number;\n /** Wall-clock duration of the run, in milliseconds. */\n duration: number;\n};\n\ntype StoreResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n};\n\n/**\n * Writes and links a project's `@gtkx/gi` and `@gtkx/jsx` stores from the given GObject-Introspection\n * libraries. The gi store is rewritten only when its GIR inputs changed, and the jsx store only when the gi\n * store or the React element config changed, unless `options.isForced` is set. Pass the spread of\n * `resolveStore(projectRoot)` for everything but `libraries` and `girPath`.\n *\n * Every store already on disk is linked at its `linkDir` before anything is generated, so a link an install\n * pruned out of `node_modules` is restored without regenerating the store, and the gi store is reachable\n * under its own specifier while the jsx store is type checked.\n *\n * @param options What to generate and where to write it.\n * @returns A summary of what was regenerated and how long the run took.\n * @throws If `girPath` is empty, which would otherwise generate nothing and report success.\n */\nconst runCodegen = async (options: CodegenRunnerOptions): Promise<CodegenRunnerResult> => {\n const start = Date.now();\n const store = await emitStores(options);\n\n return {\n isRegenerated: store.isRegenerated,\n namespaces: store.namespaces,\n intrinsicElements: store.intrinsicElements,\n duration: Date.now() - start,\n };\n};\n\nconst runGlCodegen = (options: GlCodegenOptions): GlGenerationReport => {\n const { files, report } = generateGlModules({\n registryPath: options.registryPath,\n overrideExports: options.overrideExports,\n });\n\n checkModules({\n modules: [...files].map(([fileName, source]) => ({ fileName, source })),\n resolveFrom: options.resolveFrom,\n label: \"the generated gl modules\",\n });\n\n mkdirSync(options.outputDir, { recursive: true });\n\n for (const [fileName, source] of files) {\n writeFileSync(join(options.outputDir, fileName), source);\n }\n\n return report;\n};\n\nconst jsxUserOptions = (\n options: CodegenRunnerOptions,\n): {\n reactSubexports: string[];\n userComponents: Record<string, ModuleExport>;\n userLazyElements: string[];\n userProps: Record<string, ModuleExport>;\n userOmittedProps: OmittedProps;\n} => ({\n reactSubexports: options.reactSubexports ?? [],\n userComponents: options.userComponents ?? {},\n userLazyElements: options.userLazyElements ?? [],\n userProps: options.userProps ?? {},\n userOmittedProps: options.userOmittedProps ?? {},\n});\n\nconst emitJsxStore = async (input: {\n options: CodegenRunnerOptions;\n jsx: StoreOptions;\n gi: StoreOptions;\n loadLibrary: () => Library;\n isGiRegenerated: boolean;\n namespaces: number;\n}): Promise<StoreResult> => {\n const { options, jsx, gi, loadLibrary, isGiRegenerated, namespaces } = input;\n const { runJsxCodegen } = await import(\"./jsx.js\");\n\n const jsxResult = await runJsxCodegen({\n getLibrary: loadLibrary,\n jsx,\n giStoreDir: gi.storeDir,\n ...jsxUserOptions(options),\n isGiRegenerated,\n isForced: options.isForced === true,\n });\n\n return {\n isRegenerated: isGiRegenerated || jsxResult.isRegenerated,\n namespaces,\n intrinsicElements: jsxResult.intrinsicElementCount,\n };\n};\n\nconst emitStoresWithConfig = async (config: {\n options: CodegenRunnerOptions;\n gi: StoreOptions;\n jsx: StoreOptions | undefined;\n libraries: string[];\n girPath: string[];\n}): Promise<StoreResult> => {\n const { options, gi, jsx, libraries, girPath } = config;\n const isByteArrayTyped = options.isByteArrayTyped === true;\n let library: Library | undefined;\n const loadLibrary = (): Library => (library ??= Library.load(libraries, girPath, isByteArrayTyped));\n const giInputs = { girFiles: [] as string[], libraries, girPath, isByteArrayTyped };\n const isGiRegenerated = options.isForced === true || !isGiStoreFresh(gi.storeDir, giInputs);\n\n const namespaces = isGiRegenerated\n ? runGiCodegen(loadLibrary(), { gi, libraries, girPath, isByteArrayTyped })\n : 0;\n\n if (jsx === undefined) {\n return { isRegenerated: isGiRegenerated, namespaces, intrinsicElements: 0 };\n }\n\n return emitJsxStore({ options, jsx, gi, loadLibrary, isGiRegenerated, namespaces });\n};\n\nconst prepareStores = (stores: (StoreOptions | undefined)[]): void => {\n for (const store of stores) {\n if (store === undefined) {\n continue;\n }\n\n sweepStagingDirs(store.storeDir);\n ensureStoreLink(store);\n }\n};\n\nconst emitStores = async (options: CodegenRunnerOptions): Promise<StoreResult> => {\n const { gi, jsx, libraries, girPath } = options;\n\n if (girPath.length === 0) {\n throw new Error(\"codegen needs at least one GIR search path; pass the result of resolveGirPath\");\n }\n\n prepareStores([gi, jsx]);\n\n return emitStoresWithConfig({ options, gi, jsx, libraries, girPath });\n};\n\nexport { runCodegen, runGlCodegen, type CodegenRunnerOptions, type CodegenRunnerResult };\n"]}
|
package/dist/staging.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"staging.d.ts","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":"AA+CA,QAAA,MAAM,iBAAiB,GAAI,WAAW,MAAM,EAAE,QAAQ,MAAM,KAAG,IAM9D,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,IAE1C,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAK1C,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/staging.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { errorCode } from "@gtkx/utils";
|
|
1
2
|
import { mkdirSync, mkdtempSync, readdirSync, rmSync } from "node:fs";
|
|
2
3
|
import { basename, dirname, join } from "node:path";
|
|
3
4
|
const STAGING_SUFFIX = ".tmp-";
|
|
4
5
|
const OWNER_PATTERN = /^(?<pid>\d+)-/;
|
|
5
|
-
const errorCode = (error) => error instanceof Error && "code" in error && typeof error.code === "string" ? error.code : undefined;
|
|
6
6
|
const isOwnerRunning = (pid) => {
|
|
7
7
|
if (!Number.isSafeInteger(pid) || pid <= 0) {
|
|
8
8
|
return false;
|
package/dist/staging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staging.js","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,MAAM,
|
|
1
|
+
{"version":3,"file":"staging.js","sourceRoot":"","sources":["../src/staging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAW,EAAE;IAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;IACxC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,MAAc,EAAW,EAAE;IAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;IAE1E,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAY,EAAE;IAChD,IAAI,CAAC;QACD,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;IAC7C,IAAI,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO;IACX,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAQ,EAAE;IAClE,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC9C,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAU,EAAE;IAChD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { errorCode } from \"@gtkx/utils\";\nimport { mkdirSync, mkdtempSync, readdirSync, rmSync } from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\n\nconst STAGING_SUFFIX = \".tmp-\";\nconst OWNER_PATTERN = /^(?<pid>\\d+)-/;\n\nconst isOwnerRunning = (pid: number): boolean => {\n if (!Number.isSafeInteger(pid) || pid <= 0) {\n return false;\n }\n\n try {\n process.kill(pid, 0);\n\n return true;\n } catch (error) {\n return errorCode(error) === \"EPERM\";\n }\n};\n\nconst isStranded = (entry: string, prefix: string): boolean => {\n if (!entry.startsWith(prefix)) {\n return false;\n }\n\n const owner = OWNER_PATTERN.exec(entry.slice(prefix.length))?.groups?.pid;\n\n return owner === undefined || !isOwnerRunning(Number(owner));\n};\n\nconst readEntries = (parentDir: string): string[] => {\n try {\n return readdirSync(parentDir);\n } catch {\n return [];\n }\n};\n\nconst removeStrandedDir = (path: string): void => {\n try {\n rmSync(path, { recursive: true, force: true });\n } catch {\n return;\n }\n};\n\nconst sweepStrandedDirs = (parentDir: string, prefix: string): void => {\n for (const entry of readEntries(parentDir)) {\n if (isStranded(entry, prefix)) {\n removeStrandedDir(join(parentDir, entry));\n }\n }\n};\n\nconst sweepStagingDirs = (target: string): void => {\n sweepStrandedDirs(dirname(target), `${basename(target)}${STAGING_SUFFIX}`);\n};\n\nconst createStagingDir = (target: string): string => {\n mkdirSync(dirname(target), { recursive: true });\n sweepStagingDirs(target);\n\n return mkdtempSync(`${target}${STAGING_SUFFIX}${String(process.pid)}-`);\n};\n\nexport { createStagingDir, sweepStagingDirs, sweepStrandedDirs };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-store.d.ts","sourceRoot":"","sources":["../../src/store/compile-store.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"compile-store.d.ts","sourceRoot":"","sources":["../../src/store/compile-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,KAAK,kBAAkB,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ,kBAAkB,KAAG,IAUlD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,39 +1,12 @@
|
|
|
1
|
-
import { rmSync
|
|
1
|
+
import { rmSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
4
|
-
const EMIT_OPTIONS = {
|
|
5
|
-
declaration: true,
|
|
6
|
-
removeComments: false,
|
|
7
|
-
sourceMap: false,
|
|
8
|
-
declarationMap: false,
|
|
9
|
-
rootDir: ".",
|
|
10
|
-
outDir: ".",
|
|
11
|
-
};
|
|
12
|
-
const ENV_REFERENCE_FILE = "__gtkx-env__.d.ts";
|
|
13
|
-
const writeEnvReference = (storeDir) => {
|
|
14
|
-
writeFileSync(join(storeDir, ENV_REFERENCE_FILE), "/// <reference types=\"@gtkx/react/env\" />\n");
|
|
15
|
-
return () => {
|
|
16
|
-
rmSync(join(storeDir, ENV_REFERENCE_FILE), { force: true });
|
|
17
|
-
};
|
|
18
|
-
};
|
|
3
|
+
import { emitModules } from "../compile.js";
|
|
19
4
|
const compileStore = (params) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
: params.files;
|
|
26
|
-
try {
|
|
27
|
-
compileProject({
|
|
28
|
-
projectDir: params.storeDir,
|
|
29
|
-
files,
|
|
30
|
-
compilerOptions: EMIT_OPTIONS,
|
|
31
|
-
label: `the generated ${params.packageName} store`,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
finally {
|
|
35
|
-
removeEnvReference();
|
|
36
|
-
}
|
|
5
|
+
emitModules({
|
|
6
|
+
projectDir: params.storeDir,
|
|
7
|
+
files: params.files,
|
|
8
|
+
label: `the generated ${params.packageName} store`,
|
|
9
|
+
});
|
|
37
10
|
for (const file of params.files) {
|
|
38
11
|
rmSync(join(params.storeDir, file.fileName), { force: true });
|
|
39
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-store.js","sourceRoot":"","sources":["../../src/store/compile-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"compile-store.js","sourceRoot":"","sources":["../../src/store/compile-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AAQ/D,MAAM,YAAY,GAAG,CAAC,MAA0B,EAAQ,EAAE;IACtD,WAAW,CAAC;QACR,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,iBAAiB,MAAM,CAAC,WAAW,QAAQ;KACrD,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { emitModules, type SourceModule } from \"../compile.js\";\n\ntype CompileStoreParams = {\n storeDir: string;\n files: SourceModule[];\n packageName: string;\n};\n\nconst compileStore = (params: CompileStoreParams): void => {\n emitModules({\n projectDir: params.storeDir,\n files: params.files,\n label: `the generated ${params.packageName} store`,\n });\n\n for (const file of params.files) {\n rmSync(join(params.storeDir, file.fileName), { force: true });\n }\n};\n\nexport { compileStore };\n"]}
|
|
@@ -20,7 +20,7 @@ type PlainTypeMembersOptions = {
|
|
|
20
20
|
context: ModuleContext;
|
|
21
21
|
className: string;
|
|
22
22
|
callables: Callables;
|
|
23
|
-
|
|
23
|
+
gtypeExpr: string | undefined;
|
|
24
24
|
};
|
|
25
25
|
declare const renderInstanceMethodSignature: InstanceMemberRenderer;
|
|
26
26
|
declare const renderClassInstanceMember: InstanceMemberRenderer;
|
|
@@ -29,7 +29,6 @@ declare const instanceScope: (ownerName: string, callables: Callables) => Instan
|
|
|
29
29
|
declare const dedupeCallables: (callables: GirFunction[]) => GirFunction[];
|
|
30
30
|
declare const generateBindings: (context: ModuleContext, callables: Callables) => void;
|
|
31
31
|
declare const matchStaticFinishFunction: (context: ModuleContext, callable: GirFunction, siblings: GirFunction[]) => GirFunction | undefined;
|
|
32
|
-
declare const indexMethodsByName: (methods: GirFunction[]) => Map<string, GirFunction>;
|
|
33
32
|
declare const isEmittableCallable: (context: ModuleContext, callable: GirFunction) => boolean;
|
|
34
33
|
declare const renderStaticSignature: (context: ModuleContext, callable: GirFunction, options?: {
|
|
35
34
|
returnTypeOverride?: string | undefined;
|
|
@@ -39,11 +38,10 @@ declare const renderStaticSignature: (context: ModuleContext, callable: GirFunct
|
|
|
39
38
|
signature: string;
|
|
40
39
|
} | undefined;
|
|
41
40
|
declare const staticMembers: (context: ModuleContext, callables: Callables) => StaticMember[];
|
|
42
|
-
declare const constructorMemberNames: (context: ModuleContext, constructors: GirFunction[]) => string[];
|
|
43
41
|
declare const renderStaticHead: (context: ModuleContext, callables: Callables, ownerClassName: string) => string[];
|
|
44
42
|
declare const renderPlainTypeMembers: (options: PlainTypeMembersOptions) => {
|
|
45
43
|
members: string[];
|
|
46
44
|
claimedNames: Set<string>;
|
|
47
45
|
};
|
|
48
|
-
export { renderInstanceMethodSignature, renderClassInstanceMember, instanceMemberSpec, instanceScope, dedupeCallables, generateBindings, matchStaticFinishFunction,
|
|
46
|
+
export { renderInstanceMethodSignature, renderClassInstanceMember, instanceMemberSpec, instanceScope, dedupeCallables, generateBindings, matchStaticFinishFunction, isEmittableCallable, renderStaticSignature, renderStaticHead, renderPlainTypeMembers, staticMembers, type Callables, type InstanceMemberRenderer, type InstanceScope, };
|
|
49
47
|
//# sourceMappingURL=callables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callables.d.ts","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAmBrD,KAAK,SAAS,GAAG;IACb,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AAoBF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,aAAa,EACpB,YAAY,CAAC,EAAE,MAAM,KACpB,MAAM,GAAG,SAAS,CAAC;AAExB,KAAK,uBAAuB,GAAG;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"callables.d.ts","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,17 @@ import { renderBlock } from "../../writer/emit.js";
|
|
|
4
4
|
import { matchAsyncFinish } from "./async.js";
|
|
5
5
|
import { callableDoc, callableSpec } from "./callable-doc.js";
|
|
6
6
|
import { renderFnExpression } from "./function.js";
|
|
7
|
-
import { gtypeMemberDeclaration } from "./gtype-binding.js";
|
|
7
|
+
import { gtypeMemberDeclaration, gtypeStaticMember } from "./gtype-binding.js";
|
|
8
8
|
import { finishCallExpression, memberName, methodExportName, renderMethodBody, renderMethodReturnType, renderMethodSignature, renderPromisifiedBody, renderPromisifiedSignature, } from "./method.js";
|
|
9
9
|
import { renderRuntimeOverride, runtimeOverrideRenames } from "./runtime-override.js";
|
|
10
|
+
const RUNTIME_OWNED_LIFETIME_METHODS = new Set([
|
|
11
|
+
"force_floating",
|
|
12
|
+
"free",
|
|
13
|
+
"ref",
|
|
14
|
+
"ref_sink",
|
|
15
|
+
"take_ref",
|
|
16
|
+
"unref",
|
|
17
|
+
]);
|
|
10
18
|
const renderInstanceMethodSignature = instanceMemberRenderer((context, callable, { name, finishFn }) => `${memberDoc(context, callable, finishFn)}${memberSignatureText(context, callable, name, { finishFn })};`);
|
|
11
19
|
const renderClassInstanceMember = instanceMemberRenderer((context, callable, { name, finishFn }, scope) => finishFn === undefined
|
|
12
20
|
? renderInstanceMethod(context, callable, name)
|
|
@@ -167,6 +175,7 @@ const indexMethodsByName = (methods) => {
|
|
|
167
175
|
const isEmittableCallable = (context, callable) => callable.introspectable &&
|
|
168
176
|
callable.shadowedBy === undefined &&
|
|
169
177
|
callable.cIdentifier !== undefined &&
|
|
178
|
+
!RUNTIME_OWNED_LIFETIME_METHODS.has(callable.name) &&
|
|
170
179
|
!hasUnmarshalableParam(context, callable);
|
|
171
180
|
const constructorMemberName = (girName) => {
|
|
172
181
|
const camel = memberName(girName);
|
|
@@ -189,10 +198,17 @@ const renderStaticSignature = (context, callable, options) => {
|
|
|
189
198
|
}),
|
|
190
199
|
};
|
|
191
200
|
};
|
|
201
|
+
const staticMemberName = (context, callable, resolveName) => {
|
|
202
|
+
if (!isEmittableCallable(context, callable)) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
const name = resolveName(callable.name);
|
|
206
|
+
return name !== undefined && isEmittableMemberName(name) ? name : undefined;
|
|
207
|
+
};
|
|
192
208
|
const collectStaticMembers = (context, group, resolveName) => {
|
|
193
209
|
const members = [];
|
|
194
210
|
for (const callable of group) {
|
|
195
|
-
const name =
|
|
211
|
+
const name = staticMemberName(context, callable, resolveName);
|
|
196
212
|
if (name !== undefined) {
|
|
197
213
|
members.push({ callable, name });
|
|
198
214
|
}
|
|
@@ -200,10 +216,9 @@ const collectStaticMembers = (context, group, resolveName) => {
|
|
|
200
216
|
return members;
|
|
201
217
|
};
|
|
202
218
|
const staticMembers = (context, callables) => [
|
|
203
|
-
...collectStaticMembers(context, callables.constructors,
|
|
219
|
+
...collectStaticMembers(context, callables.constructors, memberName),
|
|
204
220
|
...collectStaticMembers(context, callables.functions, memberName),
|
|
205
221
|
];
|
|
206
|
-
const constructorMemberNames = (context, constructors) => collectStaticMembers(context, constructors, constructorMemberName).map((member) => member.name);
|
|
207
222
|
const collectStaticEntries = (context, group, siblings, options) => {
|
|
208
223
|
const blocks = [];
|
|
209
224
|
for (const callable of group) {
|
|
@@ -241,14 +256,14 @@ const renderPlainInstanceMethods = (context, methods, claimedNames) => {
|
|
|
241
256
|
return blocks;
|
|
242
257
|
};
|
|
243
258
|
const renderPlainTypeMembers = (options) => {
|
|
244
|
-
const { context, className, callables,
|
|
259
|
+
const { context, className, callables, gtypeExpr } = options;
|
|
245
260
|
const claimedNames = new Set();
|
|
246
261
|
const members = [
|
|
247
|
-
...(
|
|
262
|
+
...(gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)]),
|
|
248
263
|
...renderStaticHead(context, callables, className),
|
|
249
264
|
...renderPlainInstanceMethods(context, callables.methods, claimedNames),
|
|
250
265
|
];
|
|
251
266
|
return { members, claimedNames };
|
|
252
267
|
};
|
|
253
|
-
export { renderInstanceMethodSignature, renderClassInstanceMember, instanceMemberSpec, instanceScope, dedupeCallables, generateBindings, matchStaticFinishFunction,
|
|
268
|
+
export { renderInstanceMethodSignature, renderClassInstanceMember, instanceMemberSpec, instanceScope, dedupeCallables, generateBindings, matchStaticFinishFunction, isEmittableCallable, renderStaticSignature, renderStaticHead, renderPlainTypeMembers, staticMembers, };
|
|
254
269
|
//# sourceMappingURL=callables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callables.js","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, uniqBy } from \"@gtkx/utils\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport type { JsDocSpec } from \"../../writer/doc.js\";\nimport { hasUnmarshalableParam } from \"../../analysis/param-capability.js\";\nimport { renderBlock } from \"../../writer/emit.js\";\nimport { matchAsyncFinish } from \"./async.js\";\nimport { callableDoc, callableSpec } from \"./callable-doc.js\";\nimport { renderFnExpression } from \"./function.js\";\nimport { gtypeMemberDeclaration } from \"./gtype-binding.js\";\nimport {\n finishCallExpression,\n memberName,\n methodExportName,\n renderMethodBody,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedBody,\n renderPromisifiedSignature,\n} from \"./method.js\";\nimport { renderRuntimeOverride, runtimeOverrideRenames } from \"./runtime-override.js\";\n\ntype Callables = {\n constructors: GirFunction[];\n functions: GirFunction[];\n methods: GirFunction[];\n};\n\ntype InstanceScope = {\n ownerName: string;\n methodByName: Map<string, GirFunction>;\n statics: GirFunction[];\n};\n\ntype CallableMemberOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n isStatic: boolean;\n returnTypeOverride?: string | undefined;\n canUseRuntimeOverride?: boolean;\n};\n\ntype StaticEntryOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n ownerName: string;\n returnTypeOverride?: string | undefined;\n};\n\ntype ResolvedInstanceMember = {\n name: string;\n finishFn: GirFunction | undefined;\n};\n\ntype StaticMember = {\n callable: GirFunction;\n name: string;\n};\n\ntype InstanceMemberRenderer = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n) => string | undefined;\n\ntype PlainTypeMembersOptions = {\n context: ModuleContext;\n className: string;\n callables: Callables;\n hasGtype: boolean;\n};\n\nconst renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }) =>\n `${memberDoc(context, callable, finishFn)}${memberSignatureText(context, callable, name, { finishFn })};`,\n);\n\nconst renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }, scope) =>\n finishFn === undefined\n ? renderInstanceMethod(context, callable, name)\n : renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: false,\n ownerName: scope.ownerName,\n }),\n);\n\nconst memberDoc = (context: ModuleContext, callable: GirFunction, finishFn: GirFunction | undefined): string =>\n callableDoc(context, callable, { finishFn });\n\nconst instanceMemberSpec = (context: ModuleContext, callable: GirFunction, scope: InstanceScope): JsDocSpec =>\n callableSpec(context, callable, { finishFn: matchFinishFunction(context, callable, scope) });\n\nconst instanceScope = (ownerName: string, callables: Callables): InstanceScope => ({\n ownerName,\n methodByName: indexMethodsByName(callables.methods),\n statics: [...callables.constructors, ...callables.functions],\n});\n\nconst dedupeCallables = (callables: GirFunction[]): GirFunction[] =>\n uniqBy(\n callables.filter(\n (callable): callable is GirFunction & { cIdentifier: string } => callable.cIdentifier !== undefined,\n ),\n (callable) => callable.cIdentifier,\n );\n\nconst getEmittableCIdentifier = (context: ModuleContext, callable: GirFunction): string | undefined =>\n isEmittableCallable(context, callable) ? callable.cIdentifier : undefined;\n\nconst renderBinding = (\n context: ModuleContext,\n callable: GirFunction,\n): { text: string; cIdentifier: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const expression = renderFnExpression(context, callable);\n\n if (expression === undefined) {\n return undefined;\n }\n\n return { text: `const ${toCamelIdentifier(cIdentifier)} = ${expression};`, cIdentifier };\n};\n\nconst generateBindings = (context: ModuleContext, callables: Callables): void => {\n const all = [...callables.constructors, ...callables.functions, ...callables.methods];\n\n for (const callable of all) {\n const binding = renderBinding(context, callable);\n\n if (binding !== undefined) {\n context.module.appendBinding(binding.text, binding.cIdentifier);\n }\n }\n};\n\nconst resolveCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (callable: GirFunction) => string | undefined,\n): { cIdentifier: string; name: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return { cIdentifier, name };\n};\n\nconst runtimeOverrideMember = (\n callable: GirFunction,\n name: string,\n doc: string,\n canUseRuntimeOverride: boolean | undefined,\n): string | undefined => {\n if (canUseRuntimeOverride !== true) {\n return undefined;\n }\n\n const override = renderRuntimeOverride(callable, name);\n\n return override === undefined ? undefined : `${doc}${override}`;\n};\n\nconst renderCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n options: CallableMemberOptions,\n): string | undefined => {\n const resolved = resolveCallableMember(context, callable, options.resolveName);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n const { cIdentifier, name } = resolved;\n const renames = options.canUseRuntimeOverride === true ? runtimeOverrideRenames(callable) : undefined;\n const doc = callableDoc(context, callable, { renames });\n const override = runtimeOverrideMember(callable, name, doc, options.canUseRuntimeOverride);\n\n if (override !== undefined) {\n return override;\n }\n\n const signature = renderMethodSignature(context, callable);\n const returnType = options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n const body = renderMethodBody(context, callable, {\n bindingExpression: toCamelIdentifier(cIdentifier),\n returnTypeOverride: options.returnTypeOverride,\n });\n\n const prefix = options.isStatic ? \"static \" : \"\";\n const header = `${prefix}${name}(${signature}): ${returnType}`;\n\n return `${doc}${renderBlock(header, body)}`;\n};\n\nconst renderStaticEntry = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string | undefined => {\n const finishFn = matchStaticFinishFunction(context, callable, siblings);\n\n if (finishFn !== undefined) {\n const name = options.resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: true,\n ownerName: options.ownerName,\n });\n }\n\n return renderCallableMember(context, callable, {\n resolveName: options.resolveName,\n isStatic: true,\n returnTypeOverride: options.returnTypeOverride,\n });\n};\n\nconst renderInstanceMethod = (\n context: ModuleContext,\n callable: GirFunction,\n nameOverride?: string,\n): string | undefined =>\n renderCallableMember(context, callable, {\n resolveName: (member) => nameOverride ?? methodExportName(member),\n isStatic: false,\n canUseRuntimeOverride: true,\n });\n\nconst isEmittableMemberName = (name: string): boolean => name !== \"constructor\" && name.length > 0;\n\nconst resolveInstanceMember = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n): ResolvedInstanceMember | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = nameOverride ?? methodExportName(callable);\n\n if (!isEmittableMemberName(name)) {\n return undefined;\n }\n\n const finishFn = matchFinishFunction(context, callable, scope);\n\n if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return { name, finishFn };\n};\n\nfunction instanceMemberRenderer(\n render: (\n context: ModuleContext,\n callable: GirFunction,\n member: ResolvedInstanceMember,\n scope: InstanceScope,\n ) => string | undefined,\n): InstanceMemberRenderer {\n return (context, callable, scope, nameOverride) => {\n const member = resolveInstanceMember(context, callable, scope, nameOverride);\n\n return member === undefined ? undefined : render(context, callable, member, scope);\n };\n}\n\nconst memberSignatureText = (\n context: ModuleContext,\n callable: GirFunction,\n name: string,\n options: { finishFn: GirFunction | undefined; returnTypeOverride?: string | undefined },\n): string => {\n const promisified =\n options.finishFn === undefined ? undefined : renderPromisifiedSignature(context, callable, options.finishFn);\n\n const signature = promisified?.signature ?? renderMethodSignature(context, callable);\n\n const returnType =\n promisified?.returnType ?? options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n return `${name}(${signature}): ${returnType}`;\n};\n\nconst matchFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n): GirFunction | undefined =>\n matchAsyncFinish(context.library, callable, [...scope.methodByName.values(), ...scope.statics]);\n\nconst matchStaticFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n): GirFunction | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const finishFn = matchAsyncFinish(context.library, callable, siblings);\n\n if (finishFn === undefined || !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return finishFn;\n};\n\nconst renderPromisifiedCallable = (\n context: ModuleContext,\n callable: GirFunction,\n finishFn: GirFunction,\n member: { name: string; isStatic: boolean; ownerName: string },\n): string | undefined => {\n const cIdentifier = callable.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);\n\n const body = renderPromisifiedBody(\n context,\n callable,\n finishCallExpression(callable, finishFn, member.ownerName),\n toCamelIdentifier(cIdentifier),\n );\n\n const prefix = member.isStatic ? \"static \" : \"\";\n const header = `${prefix}${member.name}(${signature}): ${returnType}`;\n\n return `${memberDoc(context, callable, finishFn)}${renderBlock(header, body)}`;\n};\n\nconst indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {\n const map: Map<string, GirFunction> = new Map();\n\n for (const callable of methods) {\n map.set(callable.name, callable);\n }\n\n return map;\n};\n\nconst isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>\n callable.introspectable &&\n callable.shadowedBy === undefined &&\n callable.cIdentifier !== undefined &&\n !hasUnmarshalableParam(context, callable);\n\nconst constructorMemberName = (girName: string): string | undefined => {\n const camel = memberName(girName);\n\n return isEmittableMemberName(camel) ? camel : undefined;\n};\n\nconst renderStaticSignature = (\n context: ModuleContext,\n callable: GirFunction,\n options?: { returnTypeOverride?: string | undefined; siblings?: GirFunction[] | undefined },\n): { name: string; signature: string } | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = constructorMemberName(callable.name);\n\n if (name === undefined) {\n return undefined;\n }\n\n const finishFn =\n options?.siblings === undefined ? undefined : matchStaticFinishFunction(context, callable, options.siblings);\n\n return {\n name,\n signature: memberSignatureText(context, callable, name, {\n finishFn,\n returnTypeOverride: options?.returnTypeOverride,\n }),\n };\n};\n\nconst collectStaticMembers = (\n context: ModuleContext,\n group: GirFunction[],\n resolveName: (girName: string) => string | undefined,\n): StaticMember[] => {\n const members: StaticMember[] = [];\n\n for (const callable of group) {\n const name = isEmittableCallable(context, callable) ? resolveName(callable.name) : undefined;\n\n if (name !== undefined) {\n members.push({ callable, name });\n }\n }\n\n return members;\n};\n\nconst staticMembers = (context: ModuleContext, callables: Callables): StaticMember[] => [\n ...collectStaticMembers(context, callables.constructors, constructorMemberName),\n ...collectStaticMembers(context, callables.functions, memberName),\n];\n\nconst constructorMemberNames = (context: ModuleContext, constructors: GirFunction[]): string[] =>\n collectStaticMembers(context, constructors, constructorMemberName).map((member) => member.name);\n\nconst collectStaticEntries = (\n context: ModuleContext,\n group: GirFunction[],\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of group) {\n const block = renderStaticEntry(context, callable, siblings, options);\n\n if (block !== undefined) {\n blocks.push(block);\n }\n }\n\n return blocks;\n};\n\nconst renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {\n const siblings = [...callables.constructors, ...callables.functions];\n\n return [\n ...collectStaticEntries(context, callables.constructors, siblings, {\n resolveName: (member) => constructorMemberName(member.name),\n ownerName: ownerClassName,\n returnTypeOverride: ownerClassName,\n }),\n ...collectStaticEntries(context, callables.functions, siblings, {\n resolveName: (member) => memberName(member.name),\n ownerName: ownerClassName,\n }),\n ];\n};\n\nconst renderPlainInstanceMethods = (\n context: ModuleContext,\n methods: GirFunction[],\n claimedNames: Set<string>,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of methods) {\n const block = renderInstanceMethod(context, callable);\n\n if (block === undefined) {\n continue;\n }\n\n blocks.push(block);\n claimedNames.add(methodExportName(callable));\n }\n\n return blocks;\n};\n\nconst renderPlainTypeMembers = (\n options: PlainTypeMembersOptions,\n): { members: string[]; claimedNames: Set<string> } => {\n const { context, className, callables, hasGtype } = options;\n const claimedNames: Set<string> = new Set();\n\n const members: string[] = [\n ...(hasGtype ? [gtypeMemberDeclaration(context)] : []),\n ...renderStaticHead(context, callables, className),\n ...renderPlainInstanceMethods(context, callables.methods, claimedNames),\n ];\n\n return { members, claimedNames };\n};\n\nexport {\n renderInstanceMethodSignature,\n renderClassInstanceMember,\n instanceMemberSpec,\n instanceScope,\n dedupeCallables,\n generateBindings,\n matchStaticFinishFunction,\n indexMethodsByName,\n isEmittableCallable,\n renderStaticSignature,\n constructorMemberNames,\n renderStaticHead,\n renderPlainTypeMembers,\n staticMembers,\n type Callables,\n type InstanceMemberRenderer,\n type InstanceScope,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"callables.js","sourceRoot":"","sources":["../../../src/store/gi/callables.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, uniqBy } from \"@gtkx/utils\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport type { JsDocSpec } from \"../../writer/doc.js\";\nimport { hasUnmarshalableParam } from \"../../analysis/param-capability.js\";\nimport { renderBlock } from \"../../writer/emit.js\";\nimport { matchAsyncFinish } from \"./async.js\";\nimport { callableDoc, callableSpec } from \"./callable-doc.js\";\nimport { renderFnExpression } from \"./function.js\";\nimport { gtypeMemberDeclaration, gtypeStaticMember } from \"./gtype-binding.js\";\nimport {\n finishCallExpression,\n memberName,\n methodExportName,\n renderMethodBody,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedBody,\n renderPromisifiedSignature,\n} from \"./method.js\";\nimport { renderRuntimeOverride, runtimeOverrideRenames } from \"./runtime-override.js\";\n\ntype Callables = {\n constructors: GirFunction[];\n functions: GirFunction[];\n methods: GirFunction[];\n};\n\ntype InstanceScope = {\n ownerName: string;\n methodByName: Map<string, GirFunction>;\n statics: GirFunction[];\n};\n\ntype CallableMemberOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n isStatic: boolean;\n returnTypeOverride?: string | undefined;\n canUseRuntimeOverride?: boolean;\n};\n\ntype StaticEntryOptions = {\n resolveName: (callable: GirFunction) => string | undefined;\n ownerName: string;\n returnTypeOverride?: string | undefined;\n};\n\ntype ResolvedInstanceMember = {\n name: string;\n finishFn: GirFunction | undefined;\n};\n\ntype StaticMember = {\n callable: GirFunction;\n name: string;\n};\n\ntype InstanceMemberRenderer = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n) => string | undefined;\n\ntype PlainTypeMembersOptions = {\n context: ModuleContext;\n className: string;\n callables: Callables;\n gtypeExpr: string | undefined;\n};\n\nconst RUNTIME_OWNED_LIFETIME_METHODS: Set<string> = new Set([\n \"force_floating\",\n \"free\",\n \"ref\",\n \"ref_sink\",\n \"take_ref\",\n \"unref\",\n]);\n\nconst renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }) =>\n `${memberDoc(context, callable, finishFn)}${memberSignatureText(context, callable, name, { finishFn })};`,\n);\n\nconst renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(\n (context, callable, { name, finishFn }, scope) =>\n finishFn === undefined\n ? renderInstanceMethod(context, callable, name)\n : renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: false,\n ownerName: scope.ownerName,\n }),\n);\n\nconst memberDoc = (context: ModuleContext, callable: GirFunction, finishFn: GirFunction | undefined): string =>\n callableDoc(context, callable, { finishFn });\n\nconst instanceMemberSpec = (context: ModuleContext, callable: GirFunction, scope: InstanceScope): JsDocSpec =>\n callableSpec(context, callable, { finishFn: matchFinishFunction(context, callable, scope) });\n\nconst instanceScope = (ownerName: string, callables: Callables): InstanceScope => ({\n ownerName,\n methodByName: indexMethodsByName(callables.methods),\n statics: [...callables.constructors, ...callables.functions],\n});\n\nconst dedupeCallables = (callables: GirFunction[]): GirFunction[] =>\n uniqBy(\n callables.filter(\n (callable): callable is GirFunction & { cIdentifier: string } => callable.cIdentifier !== undefined,\n ),\n (callable) => callable.cIdentifier,\n );\n\nconst getEmittableCIdentifier = (context: ModuleContext, callable: GirFunction): string | undefined =>\n isEmittableCallable(context, callable) ? callable.cIdentifier : undefined;\n\nconst renderBinding = (\n context: ModuleContext,\n callable: GirFunction,\n): { text: string; cIdentifier: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const expression = renderFnExpression(context, callable);\n\n if (expression === undefined) {\n return undefined;\n }\n\n return { text: `const ${toCamelIdentifier(cIdentifier)} = ${expression};`, cIdentifier };\n};\n\nconst generateBindings = (context: ModuleContext, callables: Callables): void => {\n const all = [...callables.constructors, ...callables.functions, ...callables.methods];\n\n for (const callable of all) {\n const binding = renderBinding(context, callable);\n\n if (binding !== undefined) {\n context.module.appendBinding(binding.text, binding.cIdentifier);\n }\n }\n};\n\nconst resolveCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (callable: GirFunction) => string | undefined,\n): { cIdentifier: string; name: string } | undefined => {\n const cIdentifier = getEmittableCIdentifier(context, callable);\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return { cIdentifier, name };\n};\n\nconst runtimeOverrideMember = (\n callable: GirFunction,\n name: string,\n doc: string,\n canUseRuntimeOverride: boolean | undefined,\n): string | undefined => {\n if (canUseRuntimeOverride !== true) {\n return undefined;\n }\n\n const override = renderRuntimeOverride(callable, name);\n\n return override === undefined ? undefined : `${doc}${override}`;\n};\n\nconst renderCallableMember = (\n context: ModuleContext,\n callable: GirFunction,\n options: CallableMemberOptions,\n): string | undefined => {\n const resolved = resolveCallableMember(context, callable, options.resolveName);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n const { cIdentifier, name } = resolved;\n const renames = options.canUseRuntimeOverride === true ? runtimeOverrideRenames(callable) : undefined;\n const doc = callableDoc(context, callable, { renames });\n const override = runtimeOverrideMember(callable, name, doc, options.canUseRuntimeOverride);\n\n if (override !== undefined) {\n return override;\n }\n\n const signature = renderMethodSignature(context, callable);\n const returnType = options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n const body = renderMethodBody(context, callable, {\n bindingExpression: toCamelIdentifier(cIdentifier),\n returnTypeOverride: options.returnTypeOverride,\n });\n\n const prefix = options.isStatic ? \"static \" : \"\";\n const header = `${prefix}${name}(${signature}): ${returnType}`;\n\n return `${doc}${renderBlock(header, body)}`;\n};\n\nconst renderStaticEntry = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string | undefined => {\n const finishFn = matchStaticFinishFunction(context, callable, siblings);\n\n if (finishFn !== undefined) {\n const name = options.resolveName(callable);\n\n if (name === undefined || !isEmittableMemberName(name)) {\n return undefined;\n }\n\n return renderPromisifiedCallable(context, callable, finishFn, {\n name,\n isStatic: true,\n ownerName: options.ownerName,\n });\n }\n\n return renderCallableMember(context, callable, {\n resolveName: options.resolveName,\n isStatic: true,\n returnTypeOverride: options.returnTypeOverride,\n });\n};\n\nconst renderInstanceMethod = (\n context: ModuleContext,\n callable: GirFunction,\n nameOverride?: string,\n): string | undefined =>\n renderCallableMember(context, callable, {\n resolveName: (member) => nameOverride ?? methodExportName(member),\n isStatic: false,\n canUseRuntimeOverride: true,\n });\n\nconst isEmittableMemberName = (name: string): boolean => name !== \"constructor\" && name.length > 0;\n\nconst resolveInstanceMember = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n): ResolvedInstanceMember | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = nameOverride ?? methodExportName(callable);\n\n if (!isEmittableMemberName(name)) {\n return undefined;\n }\n\n const finishFn = matchFinishFunction(context, callable, scope);\n\n if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return { name, finishFn };\n};\n\nfunction instanceMemberRenderer(\n render: (\n context: ModuleContext,\n callable: GirFunction,\n member: ResolvedInstanceMember,\n scope: InstanceScope,\n ) => string | undefined,\n): InstanceMemberRenderer {\n return (context, callable, scope, nameOverride) => {\n const member = resolveInstanceMember(context, callable, scope, nameOverride);\n\n return member === undefined ? undefined : render(context, callable, member, scope);\n };\n}\n\nconst memberSignatureText = (\n context: ModuleContext,\n callable: GirFunction,\n name: string,\n options: { finishFn: GirFunction | undefined; returnTypeOverride?: string | undefined },\n): string => {\n const promisified =\n options.finishFn === undefined ? undefined : renderPromisifiedSignature(context, callable, options.finishFn);\n\n const signature = promisified?.signature ?? renderMethodSignature(context, callable);\n\n const returnType =\n promisified?.returnType ?? options.returnTypeOverride ?? renderMethodReturnType(context, callable);\n\n return `${name}(${signature}): ${returnType}`;\n};\n\nconst matchFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n): GirFunction | undefined =>\n matchAsyncFinish(context.library, callable, [...scope.methodByName.values(), ...scope.statics]);\n\nconst matchStaticFinishFunction = (\n context: ModuleContext,\n callable: GirFunction,\n siblings: GirFunction[],\n): GirFunction | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const finishFn = matchAsyncFinish(context.library, callable, siblings);\n\n if (finishFn === undefined || !isEmittableCallable(context, finishFn)) {\n return undefined;\n }\n\n return finishFn;\n};\n\nconst renderPromisifiedCallable = (\n context: ModuleContext,\n callable: GirFunction,\n finishFn: GirFunction,\n member: { name: string; isStatic: boolean; ownerName: string },\n): string | undefined => {\n const cIdentifier = callable.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);\n\n const body = renderPromisifiedBody(\n context,\n callable,\n finishCallExpression(callable, finishFn, member.ownerName),\n toCamelIdentifier(cIdentifier),\n );\n\n const prefix = member.isStatic ? \"static \" : \"\";\n const header = `${prefix}${member.name}(${signature}): ${returnType}`;\n\n return `${memberDoc(context, callable, finishFn)}${renderBlock(header, body)}`;\n};\n\nconst indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {\n const map: Map<string, GirFunction> = new Map();\n\n for (const callable of methods) {\n map.set(callable.name, callable);\n }\n\n return map;\n};\n\nconst isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>\n callable.introspectable &&\n callable.shadowedBy === undefined &&\n callable.cIdentifier !== undefined &&\n !RUNTIME_OWNED_LIFETIME_METHODS.has(callable.name) &&\n !hasUnmarshalableParam(context, callable);\n\nconst constructorMemberName = (girName: string): string | undefined => {\n const camel = memberName(girName);\n\n return isEmittableMemberName(camel) ? camel : undefined;\n};\n\nconst renderStaticSignature = (\n context: ModuleContext,\n callable: GirFunction,\n options?: { returnTypeOverride?: string | undefined; siblings?: GirFunction[] | undefined },\n): { name: string; signature: string } | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = constructorMemberName(callable.name);\n\n if (name === undefined) {\n return undefined;\n }\n\n const finishFn =\n options?.siblings === undefined ? undefined : matchStaticFinishFunction(context, callable, options.siblings);\n\n return {\n name,\n signature: memberSignatureText(context, callable, name, {\n finishFn,\n returnTypeOverride: options?.returnTypeOverride,\n }),\n };\n};\n\nconst staticMemberName = (\n context: ModuleContext,\n callable: GirFunction,\n resolveName: (girName: string) => string | undefined,\n): string | undefined => {\n if (!isEmittableCallable(context, callable)) {\n return undefined;\n }\n\n const name = resolveName(callable.name);\n\n return name !== undefined && isEmittableMemberName(name) ? name : undefined;\n};\n\nconst collectStaticMembers = (\n context: ModuleContext,\n group: GirFunction[],\n resolveName: (girName: string) => string | undefined,\n): StaticMember[] => {\n const members: StaticMember[] = [];\n\n for (const callable of group) {\n const name = staticMemberName(context, callable, resolveName);\n\n if (name !== undefined) {\n members.push({ callable, name });\n }\n }\n\n return members;\n};\n\nconst staticMembers = (context: ModuleContext, callables: Callables): StaticMember[] => [\n ...collectStaticMembers(context, callables.constructors, memberName),\n ...collectStaticMembers(context, callables.functions, memberName),\n];\n\nconst collectStaticEntries = (\n context: ModuleContext,\n group: GirFunction[],\n siblings: GirFunction[],\n options: StaticEntryOptions,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of group) {\n const block = renderStaticEntry(context, callable, siblings, options);\n\n if (block !== undefined) {\n blocks.push(block);\n }\n }\n\n return blocks;\n};\n\nconst renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {\n const siblings = [...callables.constructors, ...callables.functions];\n\n return [\n ...collectStaticEntries(context, callables.constructors, siblings, {\n resolveName: (member) => constructorMemberName(member.name),\n ownerName: ownerClassName,\n returnTypeOverride: ownerClassName,\n }),\n ...collectStaticEntries(context, callables.functions, siblings, {\n resolveName: (member) => memberName(member.name),\n ownerName: ownerClassName,\n }),\n ];\n};\n\nconst renderPlainInstanceMethods = (\n context: ModuleContext,\n methods: GirFunction[],\n claimedNames: Set<string>,\n): string[] => {\n const blocks: string[] = [];\n\n for (const callable of methods) {\n const block = renderInstanceMethod(context, callable);\n\n if (block === undefined) {\n continue;\n }\n\n blocks.push(block);\n claimedNames.add(methodExportName(callable));\n }\n\n return blocks;\n};\n\nconst renderPlainTypeMembers = (\n options: PlainTypeMembersOptions,\n): { members: string[]; claimedNames: Set<string> } => {\n const { context, className, callables, gtypeExpr } = options;\n const claimedNames: Set<string> = new Set();\n\n const members: string[] = [\n ...(gtypeExpr === undefined ? [] : [gtypeMemberDeclaration(context), gtypeStaticMember(context)]),\n ...renderStaticHead(context, callables, className),\n ...renderPlainInstanceMethods(context, callables.methods, claimedNames),\n ];\n\n return { members, claimedNames };\n};\n\nexport {\n renderInstanceMethodSignature,\n renderClassInstanceMember,\n instanceMemberSpec,\n instanceScope,\n dedupeCallables,\n generateBindings,\n matchStaticFinishFunction,\n isEmittableCallable,\n renderStaticSignature,\n renderStaticHead,\n renderPlainTypeMembers,\n staticMembers,\n type Callables,\n type InstanceMemberRenderer,\n type InstanceScope,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/store/gi/class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAqF7D,QAAA,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,IA+ChE,CAAC;AAmTF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|