@gtkx/codegen 1.0.0-rc.3 → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/dist/analysis/descriptor-render.d.ts +1 -3
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +14 -37
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +6 -6
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +7 -7
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/param-structure.d.ts +2 -2
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +5 -7
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +1 -1
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +3 -5
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -1
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +77 -1
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +62 -0
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/pipeline.d.ts +4 -4
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +4 -4
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.js +6 -6
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +5 -0
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +2 -2
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +2 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +6 -8
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +3 -11
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +0 -7
- package/dist/gi.js.map +1 -1
- package/dist/gir/field.d.ts +0 -1
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +0 -3
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/gir-path.d.ts +7 -0
- package/dist/gir/gir-path.d.ts.map +1 -1
- package/dist/gir/gir-path.js +7 -0
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/libraries.d.ts +13 -0
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +12 -0
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +0 -4
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +0 -3
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +1 -1
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +1 -3
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.js +1 -1
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/index.d.ts +18 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/jsx.d.ts +7 -12
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +18 -19
- package/dist/jsx.js.map +1 -1
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +1 -1
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/pipeline.js +1 -1
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +2 -2
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +6 -6
- package/dist/khronos/plan.js.map +1 -1
- package/dist/react/element-config.d.ts +17 -11
- package/dist/react/element-config.d.ts.map +1 -1
- package/dist/react/element-config.js +22 -15
- package/dist/react/element-config.js.map +1 -1
- package/dist/runner.d.ts +35 -17
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +19 -20
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +1 -2
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +2 -2
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/callables.js +4 -4
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +0 -2
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +1 -5
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +25 -23
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +1 -1
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +5 -7
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +1 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +3 -9
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +0 -4
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/return-wrap.d.ts +1 -1
- package/dist/store/gi/return-wrap.d.ts.map +1 -1
- package/dist/store/gi/return-wrap.js +4 -4
- 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 +13 -16
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +0 -8
- package/dist/store/gi/value-marshalable.d.ts.map +1 -1
- package/dist/store/gi/value-marshalable.js +0 -9
- package/dist/store/gi/value-marshalable.js.map +1 -1
- package/dist/store/gi-store.d.ts +2 -3
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts +0 -2
- package/dist/store/jsx/element-components.d.ts.map +1 -1
- package/dist/store/jsx/element-components.js +0 -4
- package/dist/store/jsx/element-components.js.map +1 -1
- package/dist/store/jsx/element-prop-imports.d.ts +2 -3
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-imports.js +0 -2
- package/dist/store/jsx/element-prop-imports.js.map +1 -1
- package/dist/store/jsx/element-prop-types.d.ts +0 -1
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-types.js +0 -1
- package/dist/store/jsx/element-prop-types.js.map +1 -1
- package/dist/store/jsx/generated-elements.d.ts +29 -0
- package/dist/store/jsx/generated-elements.d.ts.map +1 -0
- package/dist/store/jsx/generated-elements.js +30 -0
- package/dist/store/jsx/generated-elements.js.map +1 -0
- package/dist/store/jsx/jsx.js +6 -6
- package/dist/store/jsx/jsx.js.map +1 -1
- package/dist/store/jsx/metadata.js +7 -7
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx/omitted-props.d.ts +2 -4
- package/dist/store/jsx/omitted-props.d.ts.map +1 -1
- package/dist/store/jsx/omitted-props.js +2 -4
- package/dist/store/jsx/omitted-props.js.map +1 -1
- package/dist/store/jsx/pipeline.d.ts +3 -1
- package/dist/store/jsx/pipeline.d.ts.map +1 -1
- package/dist/store/jsx/pipeline.js +3 -2
- package/dist/store/jsx/pipeline.js.map +1 -1
- package/dist/store/jsx/props.js +2 -2
- package/dist/store/jsx/props.js.map +1 -1
- package/dist/store/jsx-store.d.ts +2 -3
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +3 -3
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts +28 -0
- package/dist/store/resolve-store.d.ts.map +1 -0
- package/dist/store/resolve-store.js +65 -0
- package/dist/store/resolve-store.js.map +1 -0
- package/dist/store/store-fs.d.ts +5 -1
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +6 -4
- package/dist/store/store-fs.js.map +1 -1
- package/overrides/gobject/object.ts.ejs +8 -8
- package/package.json +6 -10
- package/src/analysis/descriptor-render.ts +20 -45
- package/src/analysis/descriptor.ts +13 -13
- package/src/analysis/param-structure.ts +8 -10
- package/src/analysis/ts-type.ts +4 -6
- package/src/compile.ts +2 -1
- package/src/docs/api-reference.ts +127 -4
- package/src/docs/pipeline.ts +8 -8
- package/src/docs/render.ts +7 -7
- package/src/docs/symbol-page.ts +7 -2
- package/src/fingerprint.ts +8 -13
- package/src/gi.ts +4 -11
- package/src/gir/field.ts +0 -4
- package/src/gir/gir-path.ts +7 -0
- package/src/gir/libraries.ts +13 -0
- package/src/gir/parameter.ts +0 -4
- package/src/gir/size.ts +0 -3
- package/src/gir/type-id.ts +2 -4
- package/src/gir/type-ref.ts +1 -1
- package/src/index.ts +18 -16
- package/src/internal.ts +2 -0
- package/src/jsx.ts +26 -26
- package/src/khronos/args.ts +1 -1
- package/src/khronos/pipeline.ts +1 -1
- package/src/khronos/plan.ts +8 -8
- package/src/react/element-config.ts +22 -19
- package/src/runner.ts +57 -39
- package/src/store/compile-store.ts +3 -4
- package/src/store/gi/callables.ts +5 -5
- package/src/store/gi/constant.ts +0 -2
- package/src/store/gi/function.ts +1 -5
- package/src/store/gi/method.ts +30 -28
- package/src/store/gi/property-accessor.ts +6 -8
- package/src/store/gi/record-field-accessor.ts +4 -10
- package/src/store/gi/record-layout.ts +0 -4
- package/src/store/gi/return-wrap.ts +5 -5
- package/src/store/gi/signal.ts +17 -17
- package/src/store/gi/value-marshalable.ts +0 -9
- package/src/store/gi-store.ts +2 -4
- package/src/store/jsx/element-components.ts +0 -6
- package/src/store/jsx/element-prop-imports.ts +7 -4
- package/src/store/jsx/element-prop-types.ts +0 -1
- package/src/store/jsx/generated-elements.ts +60 -0
- package/src/store/jsx/jsx.ts +7 -7
- package/src/store/jsx/metadata.ts +8 -8
- package/src/store/jsx/omitted-props.ts +2 -4
- package/src/store/jsx/pipeline.ts +5 -3
- package/src/store/jsx/props.ts +2 -2
- package/src/store/jsx-store.ts +5 -7
- package/src/store/resolve-store.ts +100 -0
- package/src/store/store-fs.ts +12 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EASH,KAAK,OAAO,EACf,MAAM,YAAY,CAAC;AAGpB,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AACjD,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAMF,QAAA,MAAM,iBAAiB,GAAI,MAAM,OAAO,KAAG,iBACiD,CAAC;
|
|
1
|
+
{"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EASH,KAAK,OAAO,EACf,MAAM,YAAY,CAAC;AAGpB,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AACjD,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAMF,QAAA,MAAM,iBAAiB,GAAI,MAAM,OAAO,KAAG,iBACiD,CAAC;AAW7F,QAAA,MAAM,iBAAiB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,YAYhE,CAAC;AAEH,QAAA,MAAM,cAAc,GAAI,WAAW,YAAY,KAAG,OACa,CAAC;AAEhE,QAAA,MAAM,oBAAoB,GAAI,WAAW,YAAY,KAAG,OACM,CAAC;AAE/D,QAAA,MAAM,gBAAgB,GAAI,WAAW,YAAY,KAAG,OAA0C,CAAC;AAe/F,QAAA,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAY7D,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,GACnB,CAAC"}
|
package/dist/gir/parameter.js
CHANGED
|
@@ -4,10 +4,6 @@ const DIRECTIONS = new Set(["in", "out", "inout"]);
|
|
|
4
4
|
const TRANSFERS = new Set(["none", "full", "container"]);
|
|
5
5
|
const SCOPES = new Set(["call", "notified", "async", "forever"]);
|
|
6
6
|
const transferOwnership = (node) => parseEnumAttr(attr(node, "transfer-ownership"), TRANSFERS, "none", "transfer-ownership");
|
|
7
|
-
// `allow-none` is the legacy spelling of two different attributes: on an in-parameter it means the
|
|
8
|
-
// value may be NULL (`nullable`), but on an out-parameter it means the caller may pass a NULL
|
|
9
|
-
// location (`optional`). Folding it into `nullable` for an out-parameter would claim the returned
|
|
10
|
-
// value can be null for the 494 out-parameters across the installed GIRs that only say `allow-none`.
|
|
11
7
|
const isInDirection = (node) => parseEnumAttr(attr(node, "direction"), DIRECTIONS, "in", "direction") === "in";
|
|
12
8
|
const hasNullableAttr = (node) => isAttrTrue(node, "nullable") || (isInDirection(node) && isAttrTrue(node, "allow-none"));
|
|
13
9
|
const hasOptionalAttr = (node) => isAttrTrue(node, "optional") || (!isInDirection(node) && isAttrTrue(node, "allow-none"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AACA,OAAO,EACH,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,GAEhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAoChD,MAAM,UAAU,GAA4B,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,MAAM,SAAS,GAA2B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjF,MAAM,MAAM,GAAuB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAErF,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAqB,EAAE,CAC3D,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE7F,
|
|
1
|
+
{"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AACA,OAAO,EACH,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,GAEhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAoChD,MAAM,UAAU,GAA4B,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,MAAM,SAAS,GAA2B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjF,MAAM,MAAM,GAAuB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAErF,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAqB,EAAE,CAC3D,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE7F,MAAM,aAAa,GAAG,CAAC,IAAa,EAAW,EAAE,CAC7C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;AAEnF,MAAM,eAAe,GAAG,CAAC,IAAa,EAAW,EAAE,CAC/C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5F,MAAM,eAAe,GAAG,CAAC,IAAa,EAAW,EAAE,CAC/C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7F,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAgB,EAAE,CAAC,CAAC;IAC/E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;IACpC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC;IAChF,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAC1C,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;IAC/B,eAAe,EAAE,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACrD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;IACrE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IACtC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,SAAS;CACrD,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,SAAuB,EAAW,EAAE,CACxD,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAEhE,MAAM,oBAAoB,GAAG,CAAC,SAAuB,EAAW,EAAE,CAC9D,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,CAAC,eAAe,CAAC;AAE/D,MAAM,gBAAgB,GAAG,CAAC,SAAuB,EAAW,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC;AAE/F,MAAM,mBAAmB,GAAG,CAAC,IAAyB,EAAE,OAAqB,EAAkB,EAAE;IAC7F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxF,CAAC;IAED,OAAO;QACH,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QACpC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAC1C,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;KACjC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAe,EAAE;IACxE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEhE,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACjB,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpF,WAAW,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QACzE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;QAClC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;KAC3D,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,GAKhB,CAAC","sourcesContent":["import type { ParseContext, TypeId } from \"./type-id.js\";\nimport {\n attr,\n getChild,\n getChildren,\n getDoc,\n intAttr,\n isAttrTrue,\n nameAttr,\n parseEnumAttr,\n type RawNode,\n} from \"./parse.js\";\nimport { typeRefFromNode } from \"./type-ref.js\";\n\ntype ParameterDirection = \"in\" | \"out\" | \"inout\";\ntype ParameterTransfer = \"none\" | \"full\" | \"container\";\ntype CallbackScope = \"call\" | \"notified\" | \"async\" | \"forever\";\n\ntype GirParameter = {\n name: string;\n type: TypeId | undefined;\n direction: ParameterDirection;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n optional: boolean;\n callerAllocates: boolean;\n scope: CallbackScope | undefined;\n closureIndex: number | undefined;\n destroyIndex: number | undefined;\n isVarargs: boolean;\n};\n\ntype GirReturnValue = {\n type: TypeId | undefined;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n skip: boolean;\n};\n\ntype GirCallable = {\n name: string;\n doc: string | undefined;\n parameters: GirParameter[];\n returnValue: GirReturnValue;\n throws: boolean;\n introspectable: boolean;\n};\n\nconst DIRECTIONS: Set<ParameterDirection> = new Set([\"in\", \"out\", \"inout\"]);\nconst TRANSFERS: Set<ParameterTransfer> = new Set([\"none\", \"full\", \"container\"]);\nconst SCOPES: Set<CallbackScope> = new Set([\"call\", \"notified\", \"async\", \"forever\"]);\n\nconst transferOwnership = (node: RawNode): ParameterTransfer =>\n parseEnumAttr(attr(node, \"transfer-ownership\"), TRANSFERS, \"none\", \"transfer-ownership\");\n\nconst isInDirection = (node: RawNode): boolean =>\n parseEnumAttr(attr(node, \"direction\"), DIRECTIONS, \"in\", \"direction\") === \"in\";\n\nconst hasNullableAttr = (node: RawNode): boolean =>\n isAttrTrue(node, \"nullable\") || (isInDirection(node) && isAttrTrue(node, \"allow-none\"));\n\nconst hasOptionalAttr = (node: RawNode): boolean =>\n isAttrTrue(node, \"optional\") || (!isInDirection(node) && isAttrTrue(node, \"allow-none\"));\n\nconst parameterFromNode = (node: RawNode, context: ParseContext): GirParameter => ({\n name: nameAttr(node),\n type: typeRefFromNode(node, context),\n direction: parseEnumAttr(attr(node, \"direction\"), DIRECTIONS, \"in\", \"direction\"),\n transferOwnership: transferOwnership(node),\n nullable: hasNullableAttr(node),\n optional: hasOptionalAttr(node),\n callerAllocates: isAttrTrue(node, \"caller-allocates\"),\n scope: parseEnumAttr(attr(node, \"scope\"), SCOPES, undefined, \"scope\"),\n closureIndex: intAttr(node, \"closure\"),\n destroyIndex: intAttr(node, \"destroy\"),\n isVarargs: getChild(node, \"varargs\") !== undefined,\n});\n\nconst isOutParameter = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && !parameter.callerAllocates;\n\nconst isCallerAllocatedOut = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && parameter.callerAllocates;\n\nconst isInoutParameter = (parameter: GirParameter): boolean => parameter.direction === \"inout\";\n\nconst returnValueFromNode = (node: RawNode | undefined, context: ParseContext): GirReturnValue => {\n if (node === undefined) {\n return { type: undefined, transferOwnership: \"none\", nullable: false, skip: false };\n }\n\n return {\n type: typeRefFromNode(node, context),\n transferOwnership: transferOwnership(node),\n nullable: hasNullableAttr(node),\n skip: isAttrTrue(node, \"skip\"),\n };\n};\n\nconst parseCallable = (node: RawNode, context: ParseContext): GirCallable => {\n const parametersNode = getChild(node, \"parameters\");\n const parameterNodes = getChildren(parametersNode, \"parameter\");\n\n return {\n name: nameAttr(node),\n doc: getDoc(node),\n parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, context)),\n returnValue: returnValueFromNode(getChild(node, \"return-value\"), context),\n throws: isAttrTrue(node, \"throws\"),\n introspectable: isAttrTrue(node, \"introspectable\", true),\n };\n};\n\nexport {\n transferOwnership,\n parameterFromNode,\n isOutParameter,\n isCallerAllocatedOut,\n isInoutParameter,\n parseCallable,\n type ParameterTransfer,\n type GirParameter,\n type GirReturnValue,\n type GirCallable,\n};\n"]}
|
package/dist/gir/size.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AASF,QAAA,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAIxD,CAAC;
|
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AASF,QAAA,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAIxD,CAAC;AA+EF,QAAA,MAAM,iBAAiB,GAAI,QAAQ,gBAAgB,EAAE,EAAE,iBAAe,KAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CACvC,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|
package/dist/gir/size.js
CHANGED
|
@@ -26,9 +26,6 @@ const pushPlainField = (state, slots, field, align) => {
|
|
|
26
26
|
slots.push({ byteOffset, bitOffset: undefined, bitWidth: undefined });
|
|
27
27
|
state.bitCursor = (byteOffset + field.layout.size) * 8;
|
|
28
28
|
};
|
|
29
|
-
// SysV AMD64 places a bit-field at the current bit offset whenever it still fits inside a storage
|
|
30
|
-
// unit of its declared type aligned to that type's alignment, so the unit the cursor already sits in
|
|
31
|
-
// may have room even though the cursor is not on a unit boundary.
|
|
32
29
|
const pushBitfield = (input) => {
|
|
33
30
|
const { state, slots, field, align, bits } = input;
|
|
34
31
|
const unitStart = floorDown(floorDown(state.bitCursor, 8) / 8, align);
|
package/dist/gir/size.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AAuBzE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;AAE1F,MAAM,iBAAiB,GAAG,CAAC,QAA2B,EAAe,EAAE;IACnE,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IACxD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IAEnC,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAA0B,EAAwC,EAAE;IAC3F,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElD,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAE,KAAkB,EAAE,KAAuB,EAAE,KAAa,EAAQ,EAAE;IAClH,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,SAAS,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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","sourcesContent":["import { PRIMITIVE_SIZE, type PrimitiveCategory } from \"./primitives.js\";\n\ntype FieldLayout = {\n size: number;\n align: number;\n};\n\ntype FieldSlot = {\n byteOffset: number;\n bitOffset: number | undefined;\n bitWidth: number | undefined;\n};\n\ntype FieldLayoutInput = {\n layout: FieldLayout;\n bits: number | undefined;\n};\n\ntype StructLayoutState = {\n bitCursor: number;\n maxAlign: number;\n};\n\nconst floorDown = (value: number, multiple: number): number => value - (value % multiple);\n\nconst layoutOfPrimitive = (category: PrimitiveCategory): FieldLayout => {\n const size = PRIMITIVE_SIZE[category];\n\n return { size, align: size === 0 ? 1 : size };\n};\n\nconst roundUp = (value: number, multiple: number): number => {\n if (multiple <= 1) {\n return value;\n }\n\n const remainder = value % multiple;\n\n return remainder === 0 ? value : value + (multiple - remainder);\n};\n\nconst computeUnionSlots = (fields: FieldLayoutInput[]): { slots: FieldSlot[]; size: number } => {\n let maxSize = 0;\n let maxAlign = 1;\n\n const slots = fields.map((field) => {\n maxSize = Math.max(maxSize, field.layout.size);\n maxAlign = Math.max(maxAlign, field.layout.align);\n\n return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };\n });\n\n return { slots, size: roundUp(maxSize, maxAlign) };\n};\n\nconst pushPlainField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput, align: number): void => {\n const byteOffset = roundUp(roundUp(state.bitCursor, 8) / 8, align);\n slots.push({ byteOffset, bitOffset: undefined, bitWidth: undefined });\n state.bitCursor = (byteOffset + field.layout.size) * 8;\n};\n\nconst pushBitfield = (input: {\n state: StructLayoutState;\n slots: FieldSlot[];\n field: FieldLayoutInput;\n align: number;\n bits: number;\n}): void => {\n const { state, slots, field, align, bits } = input;\n const unitStart = floorDown(floorDown(state.bitCursor, 8) / 8, align);\n const isFitsInCurrentUnit = state.bitCursor + bits <= (unitStart + field.layout.size) * 8;\n const byteOffset = isFitsInCurrentUnit ? unitStart : roundUp(roundUp(state.bitCursor, 8) / 8, align);\n\n if (!isFitsInCurrentUnit) {\n state.bitCursor = byteOffset * 8;\n }\n\n slots.push({ byteOffset, bitOffset: state.bitCursor - byteOffset * 8, bitWidth: bits });\n state.bitCursor += bits;\n};\n\nconst processStructField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput): void => {\n const align = Math.max(1, field.layout.align);\n\n if (align > state.maxAlign) {\n state.maxAlign = align;\n }\n\n if (field.bits === undefined) {\n pushPlainField(state, slots, field, align);\n\n return;\n }\n\n pushBitfield({ state, slots, field, align, bits: field.bits });\n};\n\nconst computeStructSlots = (fields: FieldLayoutInput[]): { slots: FieldSlot[]; size: number } => {\n const slots: FieldSlot[] = [];\n const state: StructLayoutState = { bitCursor: 0, maxAlign: 1 };\n\n for (const field of fields) {\n processStructField(state, slots, field);\n }\n\n return { slots, size: roundUp(roundUp(state.bitCursor, 8) / 8, state.maxAlign) };\n};\n\nconst computeFieldSlots = (fields: FieldLayoutInput[], isUnion = false): { slots: FieldSlot[]; size: number } =>\n isUnion ? computeUnionSlots(fields) : computeStructSlots(fields);\n\nexport { layoutOfPrimitive, computeFieldSlots, type FieldLayout, type FieldSlot, type FieldLayoutInput };\n"]}
|
package/dist/gir/type-id.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3C,KAAK,UAAU,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AACjF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AACxE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvC,KAAK,UAAU,GAAG;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,
|
|
1
|
+
{"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3C,KAAK,UAAU,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AACjF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AACxE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvC,KAAK,UAAU,GAAG;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1F,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClD,UAAU,IAAI,MAAM,CAAC;IACrB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IAClE,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;CAMf,CAAC;AAEX,QAAA,MAAM,qBAAqB,GAAI,KAAK,UAAU,KAAG,OACiD,CAAC;AAEnG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,GACpB,CAAC"}
|
package/dist/gir/type-id.js
CHANGED
|
@@ -5,8 +5,6 @@ const LIST_FLAVOR_BY_NAME = {
|
|
|
5
5
|
"GLib.Array": "garray",
|
|
6
6
|
"GLib.ByteArray": "gbytearray",
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
// way to recover its length, so it is a bare pointer rather than something that can be walked.
|
|
10
|
-
const hasUnknownArrayLength = (ref) => !ref.zeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;
|
|
8
|
+
const hasUnknownArrayLength = (ref) => !ref.isZeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;
|
|
11
9
|
export { hasUnknownArrayLength, LIST_FLAVOR_BY_NAME, };
|
|
12
10
|
//# sourceMappingURL=type-id.js.map
|
package/dist/gir/type-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAwCA,MAAM,mBAAmB,GAAG;IACxB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAwCA,MAAM,mBAAmB,GAAG;IACxB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC;AAEX,MAAM,qBAAqB,GAAG,CAAC,GAAe,EAAW,EAAE,CACvD,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC;AAEnG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,GAQtB,CAAC","sourcesContent":["import type { RawNode } from \"./parse.js\";\nimport type { PrimitiveCategory } from \"./primitives.js\";\n\ntype TypeId = { nsId: number; id: number };\ntype ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];\ntype PrimitiveType = { kind: \"primitive\"; category: PrimitiveCategory };\ntype VarargsType = { kind: \"varargs\" };\n\ntype CArrayType = {\n kind: \"carray\";\n element: TypeId;\n elementCType: string | undefined;\n lengthParameterIndex: number | undefined;\n fixedSize: number | undefined;\n isZeroTerminated: boolean;\n};\n\ntype ListType = {\n kind: \"list\";\n flavor: ListFlavor;\n element: TypeId;\n};\n\ntype HashTableType = {\n kind: \"hashtable\";\n key: TypeId;\n value: TypeId;\n};\n\ntype StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;\n\ntype ParseContext = {\n nsId: number;\n findType(name: string): TypeId;\n addPrimitive(category: PrimitiveCategory): TypeId;\n addVarargs(): TypeId;\n addContainer(type: CArrayType | ListType | HashTableType): TypeId;\n addAnonymousCallback(node: RawNode): TypeId;\n};\n\nconst LIST_FLAVOR_BY_NAME = {\n \"GLib.List\": \"glist\",\n \"GLib.SList\": \"gslist\",\n \"GLib.PtrArray\": \"gptrarray\",\n \"GLib.Array\": \"garray\",\n \"GLib.ByteArray\": \"gbytearray\",\n} as const;\n\nconst hasUnknownArrayLength = (ref: CArrayType): boolean =>\n !ref.isZeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;\n\nexport {\n hasUnknownArrayLength,\n LIST_FLAVOR_BY_NAME,\n type TypeId,\n type ListFlavor,\n type CArrayType,\n type ListType,\n type HashTableType,\n type StructuralType,\n type ParseContext,\n};\n"]}
|
package/dist/gir/type-ref.js
CHANGED
|
@@ -66,7 +66,7 @@ const arrayTypeRefFromNode = (arrayNode, context) => {
|
|
|
66
66
|
elementCType: elementNode === undefined ? undefined : attr(elementNode, "c:type"),
|
|
67
67
|
lengthParameterIndex: intAttr(arrayNode, "length"),
|
|
68
68
|
fixedSize: intAttr(arrayNode, "fixed-size"),
|
|
69
|
-
|
|
69
|
+
isZeroTerminated: isAttrTrue(arrayNode, "zero-terminated", true),
|
|
70
70
|
};
|
|
71
71
|
return context.addContainer(carray);
|
|
72
72
|
};
|
package/dist/gir/type-ref.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, getChild, getChildren, intAttr, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\nimport { primitiveCategory } from \"./primitives.js\";\nimport { type CArrayType, LIST_FLAVOR_BY_NAME, type ListFlavor, type ParseContext, type TypeId } from \"./type-id.js\";\n\nconst LIST_FLAVOR_BY_NAME_LOOKUP: Map<string, ListFlavor> = new Map(Object.entries(LIST_FLAVOR_BY_NAME));\n\nconst getElementRef = (node: RawNode, context: ParseContext): TypeId => {\n const elementNode = getChild(node, \"type\");\n\n return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);\n};\n\nconst typeRefFromNode = (parent: RawNode | undefined, context: ParseContext): TypeId | undefined => {\n if (parent === undefined) {\n return undefined;\n }\n\n if (getChild(parent, \"varargs\") !== undefined) {\n return context.addVarargs();\n }\n\n const arrayNode = getChild(parent, \"array\");\n\n if (arrayNode !== undefined) {\n return arrayTypeRefFromNode(arrayNode, context);\n }\n\n const typeNode = getChild(parent, \"type\");\n\n if (typeNode !== undefined) {\n return typeRefFromTypeNode(typeNode, context);\n }\n\n const callback = getChild(parent, \"callback\");\n\n if (callback !== undefined) {\n return context.addAnonymousCallback(callback);\n }\n\n return undefined;\n};\n\nconst hashTableRefFromNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const elementTypes = getChildren(typeNode, \"type\");\n const keyNode = elementTypes[0];\n const valueNode = elementTypes[1];\n\n return context.addContainer({\n kind: \"hashtable\",\n key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),\n value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),\n });\n};\n\nconst typeRefFromTypeNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const name = nameAttr(typeNode);\n const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element: getElementRef(typeNode, context) });\n }\n\n if (name === \"GLib.HashTable\") {\n return hashTableRefFromNode(typeNode, context);\n }\n\n const primitive = primitiveCategory(name);\n\n if (primitive !== undefined) {\n return context.addPrimitive(primitive);\n }\n\n return context.findType(name);\n};\n\nconst arrayTypeRefFromNode = (arrayNode: RawNode, context: ParseContext): TypeId => {\n const element = getElementRef(arrayNode, context);\n const arrayName = attr(arrayNode, \"name\");\n const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element });\n }\n\n const elementNode = getChild(arrayNode, \"type\");\n\n const carray: CArrayType = {\n kind: \"carray\",\n element,\n elementCType: elementNode === undefined ? undefined : attr(elementNode, \"c:type\"),\n lengthParameterIndex: intAttr(arrayNode, \"length\"),\n fixedSize: intAttr(arrayNode, \"fixed-size\"),\n isZeroTerminated: isAttrTrue(arrayNode, \"zero-terminated\", true),\n };\n\n return context.addContainer(carray);\n};\n\nconst pointerFallback = (context: ParseContext): TypeId => context.addPrimitive(\"pointer\");\n\nconst splitOptionalNamespace = (name: string): [string | undefined, string] => {\n const dot = name.indexOf(\".\");\n\n if (dot === -1) {\n return [undefined, name];\n }\n\n return [name.slice(0, dot), name.slice(dot + 1)];\n};\n\nexport { typeRefFromNode, splitOptionalNamespace };\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
export { type
|
|
1
|
+
/** @public */
|
|
2
|
+
export { API_SYMBOL_KINDS, type ApiLookupResult, type ApiNamespaceSummary, type ApiReference, type ApiReferenceOptions, type ApiSearchOptions, type ApiSymbol, type ApiSymbolKind, type ApiSymbolQuery, loadApiReference, } from "./docs/api-reference.js";
|
|
3
|
+
/** @public */
|
|
3
4
|
export { resolveGirPath } from "./gir/gir-path.js";
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
|
|
5
|
+
/** @public */
|
|
6
|
+
export { discoverGirNamespaces, type LibrarySelection, resolveLibraries } from "./gir/libraries.js";
|
|
7
|
+
/** @public */
|
|
8
|
+
export { type BuiltinElements, type ModuleExport, readBuiltinElements } from "./react/element-config.js";
|
|
9
|
+
/** @public */
|
|
10
|
+
export { type CodegenRunnerOptions, type CodegenRunnerResult, runCodegen } from "./runner.js";
|
|
11
|
+
/** @public */
|
|
7
12
|
export type { ElementProps } from "./store/jsx/element-prop-imports.js";
|
|
8
|
-
|
|
13
|
+
/** @public */
|
|
14
|
+
export { type GeneratedElement, readGeneratedElements } from "./store/jsx/generated-elements.js";
|
|
15
|
+
/** @public */
|
|
16
|
+
export { mergeOmittedProps, type OmittedProps } from "./store/jsx/omitted-props.js";
|
|
17
|
+
/** @public */
|
|
18
|
+
export { type ResolvedStore, resolveStore } from "./store/resolve-store.js";
|
|
19
|
+
/** @public */
|
|
20
|
+
export type { StoreOptions } from "./store/store-fs.js";
|
|
9
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACH,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpG,cAAc;AACd,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACzG,cAAc;AACd,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9F,cAAc;AACd,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,cAAc;AACd,OAAO,EAAE,KAAK,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACjG,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACpF,cAAc;AACd,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5E,cAAc;AACd,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
/** @public */
|
|
1
2
|
export { API_SYMBOL_KINDS, loadApiReference, } from "./docs/api-reference.js";
|
|
2
|
-
|
|
3
|
+
/** @public */
|
|
3
4
|
export { resolveGirPath } from "./gir/gir-path.js";
|
|
5
|
+
/** @public */
|
|
4
6
|
export { discoverGirNamespaces, resolveLibraries } from "./gir/libraries.js";
|
|
5
|
-
|
|
7
|
+
/** @public */
|
|
8
|
+
export { readBuiltinElements } from "./react/element-config.js";
|
|
9
|
+
/** @public */
|
|
6
10
|
export { runCodegen } from "./runner.js";
|
|
7
|
-
|
|
11
|
+
/** @public */
|
|
12
|
+
export { readGeneratedElements } from "./store/jsx/generated-elements.js";
|
|
13
|
+
/** @public */
|
|
14
|
+
export { mergeOmittedProps } from "./store/jsx/omitted-props.js";
|
|
15
|
+
/** @public */
|
|
16
|
+
export { resolveStore } from "./store/resolve-store.js";
|
|
8
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACH,gBAAgB,EAShB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAyB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpG,cAAc;AACd,OAAO,EAA2C,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACzG,cAAc;AACd,OAAO,EAAuD,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9F,cAAc;AACd,OAAO,EAAyB,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AACjG,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAqB,MAAM,8BAA8B,CAAC;AACpF,cAAc;AACd,OAAO,EAAsB,YAAY,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["/** @public */\nexport {\n API_SYMBOL_KINDS,\n type ApiLookupResult,\n type ApiNamespaceSummary,\n type ApiReference,\n type ApiReferenceOptions,\n type ApiSearchOptions,\n type ApiSymbol,\n type ApiSymbolKind,\n type ApiSymbolQuery,\n loadApiReference,\n} from \"./docs/api-reference.js\";\n/** @public */\nexport { resolveGirPath } from \"./gir/gir-path.js\";\n/** @public */\nexport { discoverGirNamespaces, type LibrarySelection, resolveLibraries } from \"./gir/libraries.js\";\n/** @public */\nexport { type BuiltinElements, type ModuleExport, readBuiltinElements } from \"./react/element-config.js\";\n/** @public */\nexport { type CodegenRunnerOptions, type CodegenRunnerResult, runCodegen } from \"./runner.js\";\n/** @public */\nexport type { ElementProps } from \"./store/jsx/element-prop-imports.js\";\n/** @public */\nexport { type GeneratedElement, readGeneratedElements } from \"./store/jsx/generated-elements.js\";\n/** @public */\nexport { mergeOmittedProps, type OmittedProps } from \"./store/jsx/omitted-props.js\";\n/** @public */\nexport { type ResolvedStore, resolveStore } from \"./store/resolve-store.js\";\n/** @public */\nexport type { StoreOptions } from \"./store/store-fs.js\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export { writeDocs } from \"./docs/pipeline.js\";\nexport { runGlCodegen } from \"./runner.js\";\n"]}
|
package/dist/jsx.d.ts
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
import type { Library } from "./gir/library.js";
|
|
2
|
+
import type { StoreOptions } from "./store/store-fs.js";
|
|
2
3
|
import { type ModuleExport } from "./react/element-config.js";
|
|
3
|
-
import { type JsxStoreOptions } from "./store/jsx-store.js";
|
|
4
4
|
import { type OmittedProps } from "./store/jsx/omitted-props.js";
|
|
5
5
|
type RunJsxCodegenOptions = {
|
|
6
6
|
getLibrary: () => Library;
|
|
7
|
-
jsx:
|
|
7
|
+
jsx: StoreOptions;
|
|
8
8
|
giStoreDir: string;
|
|
9
9
|
reactSubexports: string[];
|
|
10
10
|
userComponents: Record<string, ModuleExport>;
|
|
11
11
|
userLazyElements: string[];
|
|
12
12
|
userProps: Record<string, ModuleExport>;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
userOmittedProps: OmittedProps;
|
|
14
|
+
isGiRegenerated: boolean;
|
|
15
|
+
isForced: boolean;
|
|
16
16
|
};
|
|
17
17
|
type RunJsxCodegenResult = {
|
|
18
|
-
|
|
18
|
+
isRegenerated: boolean;
|
|
19
19
|
intrinsicElementCount: number;
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
22
|
-
* Generates the `@gtkx/jsx` store, reading the framework's built-in element config from the freshly
|
|
23
|
-
* linked `@gtkx/react` and layering the project's own element config over it. This is the react-importing
|
|
24
|
-
* half of codegen: it must run only after the gi store has been written and linked.
|
|
25
|
-
*/
|
|
26
21
|
declare const runJsxCodegen: (options: RunJsxCodegenOptions) => Promise<RunJsxCodegenResult>;
|
|
27
|
-
export { runJsxCodegen
|
|
22
|
+
export { runJsxCodegen };
|
|
28
23
|
//# sourceMappingURL=jsx.d.ts.map
|
package/dist/jsx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,2BAA2B,CAAC;AAGnF,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGpF,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,GAAG,EAAE,YAAY,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,gBAAgB,EAAE,YAAY,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,aAAa,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAwCvF,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/jsx.js
CHANGED
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
import { computeJsxFingerprint, FINGERPRINT_FILENAME, jsxStoreFreshness, } from "./fingerprint.js";
|
|
2
2
|
import { readBuiltinElements } from "./react/element-config.js";
|
|
3
3
|
import { writeJsxStore } from "./store/jsx-store.js";
|
|
4
|
-
import {
|
|
4
|
+
import { ELEMENTS_FILENAME, renderGeneratedElements } from "./store/jsx/generated-elements.js";
|
|
5
|
+
import { mergeOmittedProps } from "./store/jsx/omitted-props.js";
|
|
5
6
|
import { generateJsxFiles } from "./store/jsx/pipeline.js";
|
|
6
|
-
/**
|
|
7
|
-
* Generates the `@gtkx/jsx` store, reading the framework's built-in element config from the freshly
|
|
8
|
-
* linked `@gtkx/react` and layering the project's own element config over it. This is the react-importing
|
|
9
|
-
* half of codegen: it must run only after the gi store has been written and linked.
|
|
10
|
-
*/
|
|
11
7
|
const runJsxCodegen = async (options) => {
|
|
12
8
|
const builtin = await readBuiltinElements(options.reactSubexports, options.giStoreDir);
|
|
13
9
|
const components = { ...builtin.components, ...options.userComponents };
|
|
14
10
|
const lazyElements = [...builtin.lazyElements, ...options.userLazyElements];
|
|
15
11
|
const props = { ...builtin.props, ...options.userProps };
|
|
16
|
-
const
|
|
12
|
+
const omittedProps = mergeOmittedProps(builtin.omittedProps, options.userOmittedProps);
|
|
17
13
|
const fingerprintInput = {
|
|
18
14
|
reactVersion: options.jsx.version,
|
|
19
15
|
components,
|
|
20
16
|
lazyElements,
|
|
21
17
|
props,
|
|
22
|
-
|
|
18
|
+
omittedProps,
|
|
23
19
|
};
|
|
24
|
-
if (!options.
|
|
25
|
-
const {
|
|
26
|
-
if (
|
|
27
|
-
return {
|
|
20
|
+
if (!options.isForced && !options.isGiRegenerated) {
|
|
21
|
+
const { isFresh, intrinsicElementCount } = jsxStoreFreshness(options.jsx.storeDir, fingerprintInput);
|
|
22
|
+
if (isFresh) {
|
|
23
|
+
return { isRegenerated: false, intrinsicElementCount };
|
|
28
24
|
}
|
|
29
25
|
}
|
|
30
|
-
const { namespaces, metadata, intrinsicElementCount } = generateJsxFiles(options.getLibrary(), {
|
|
26
|
+
const { namespaces, metadata, intrinsicElementCount, elements } = generateJsxFiles(options.getLibrary(), {
|
|
31
27
|
reactSubexports: options.reactSubexports,
|
|
32
28
|
components,
|
|
33
29
|
lazyElements,
|
|
34
30
|
props,
|
|
35
|
-
|
|
31
|
+
omittedProps,
|
|
36
32
|
});
|
|
37
|
-
writeJsxStore(options.jsx, namespaces, metadata,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
writeJsxStore(options.jsx, namespaces, metadata, [
|
|
34
|
+
{
|
|
35
|
+
relativePath: FINGERPRINT_FILENAME,
|
|
36
|
+
content: `${JSON.stringify(computeJsxFingerprint(fingerprintInput, intrinsicElementCount), null, 2)}\n`,
|
|
37
|
+
},
|
|
38
|
+
{ relativePath: ELEMENTS_FILENAME, content: renderGeneratedElements(elements) },
|
|
39
|
+
]);
|
|
40
|
+
return { isRegenerated: true, intrinsicElementCount };
|
|
42
41
|
};
|
|
43
42
|
export { runJsxCodegen };
|
|
44
43
|
//# sourceMappingURL=jsx.js.map
|
package/dist/jsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EAEpB,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAqB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAqB,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAoB3D,MAAM,aAAa,GAAG,KAAK,EAAE,OAA6B,EAAgC,EAAE;IACxF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACzD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEvF,MAAM,gBAAgB,GAAwB;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;QACjC,UAAU;QACV,YAAY;QACZ,KAAK;QACL,YAAY;KACf,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAErG,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;QACrG,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU;QACV,YAAY;QACZ,KAAK;QACL,YAAY;KACf,CAAC,CAAC;IAEH,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;QAC7C;YACI,YAAY,EAAE,oBAAoB;YAClC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;SAC1G;QACD,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE;KAClF,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import type { Library } from \"./gir/library.js\";\nimport type { StoreOptions } from \"./store/store-fs.js\";\nimport {\n computeJsxFingerprint,\n FINGERPRINT_FILENAME,\n type JsxFingerprintInput,\n jsxStoreFreshness,\n} from \"./fingerprint.js\";\nimport { type ModuleExport, readBuiltinElements } from \"./react/element-config.js\";\nimport { writeJsxStore } from \"./store/jsx-store.js\";\nimport { ELEMENTS_FILENAME, renderGeneratedElements } from \"./store/jsx/generated-elements.js\";\nimport { mergeOmittedProps, type OmittedProps } from \"./store/jsx/omitted-props.js\";\nimport { generateJsxFiles } from \"./store/jsx/pipeline.js\";\n\ntype RunJsxCodegenOptions = {\n getLibrary: () => Library;\n jsx: StoreOptions;\n giStoreDir: string;\n reactSubexports: string[];\n userComponents: Record<string, ModuleExport>;\n userLazyElements: string[];\n userProps: Record<string, ModuleExport>;\n userOmittedProps: OmittedProps;\n isGiRegenerated: boolean;\n isForced: boolean;\n};\n\ntype RunJsxCodegenResult = {\n isRegenerated: boolean;\n intrinsicElementCount: number;\n};\n\nconst runJsxCodegen = async (options: RunJsxCodegenOptions): Promise<RunJsxCodegenResult> => {\n const builtin = await readBuiltinElements(options.reactSubexports, options.giStoreDir);\n const components = { ...builtin.components, ...options.userComponents };\n const lazyElements = [...builtin.lazyElements, ...options.userLazyElements];\n const props = { ...builtin.props, ...options.userProps };\n const omittedProps = mergeOmittedProps(builtin.omittedProps, options.userOmittedProps);\n\n const fingerprintInput: JsxFingerprintInput = {\n reactVersion: options.jsx.version,\n components,\n lazyElements,\n props,\n omittedProps,\n };\n\n if (!options.isForced && !options.isGiRegenerated) {\n const { isFresh, intrinsicElementCount } = jsxStoreFreshness(options.jsx.storeDir, fingerprintInput);\n\n if (isFresh) {\n return { isRegenerated: false, intrinsicElementCount };\n }\n }\n\n const { namespaces, metadata, intrinsicElementCount, elements } = generateJsxFiles(options.getLibrary(), {\n reactSubexports: options.reactSubexports,\n components,\n lazyElements,\n props,\n omittedProps,\n });\n\n writeJsxStore(options.jsx, namespaces, metadata, [\n {\n relativePath: FINGERPRINT_FILENAME,\n content: `${JSON.stringify(computeJsxFingerprint(fingerprintInput, intrinsicElementCount), null, 2)}\\n`,\n },\n { relativePath: ELEMENTS_FILENAME, content: renderGeneratedElements(elements) },\n ]);\n\n return { isRegenerated: true, intrinsicElementCount };\n};\n\nexport { runJsxCodegen };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAclE,KAAK,KAAK,GAAG;IACT,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAqBjC,QAAA,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,EAAE,OAAO,MAAM,GAAG,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAclE,KAAK,KAAK,GAAG;IACT,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAqBjC,QAAA,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,EAAE,OAAO,MAAM,GAAG,SAAS,KAAG,MACQ,CAAC;AA8InF,QAAA,MAAM,SAAS,GACV,WAAW,GAAG,CAAC,MAAM,CAAC,MAClB,OAAO,MAAM,KAAG,MAIhB,CAAC;AAEV,QAAA,MAAM,QAAQ,GACV,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAChC,WAAW,GAAG,CAAC,MAAM,CAAC,KACvB;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAsBpD,CAAC;AAwBF,QAAA,MAAM,gBAAgB,GAAI,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,WAAW,GAAG,CAAC,MAAM,CAAC,KAAG,KAAK,EAAE,GAAG,SAe9F,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC"}
|
package/dist/khronos/args.js
CHANGED
|
@@ -2,7 +2,7 @@ import { toCamelIdentifier } from "@gtkx/utils";
|
|
|
2
2
|
import { tArray, tBoolean, tBuffer, tFixedArray, tInlineStruct, tRef, tSizedArray, tString, tUint64, } from "../analysis/descriptor.js";
|
|
3
3
|
import { paramPairAt } from "./param-pair.js";
|
|
4
4
|
const OUT_PLAN_KINDS = new Set(["ref-out", "ref-array-out", "ref-fixed-out", "string-out"]);
|
|
5
|
-
const scalarAliasOrGroup = (scalar, group) => group !== undefined && scalar.
|
|
5
|
+
const scalarAliasOrGroup = (scalar, group) => group !== undefined && scalar.isGroupBearing === true ? group : scalar.tsAlias;
|
|
6
6
|
const paramIndexByName = (command, name) => {
|
|
7
7
|
const index = command.params.findIndex((param) => param.name === name);
|
|
8
8
|
if (index === -1) {
|
package/dist/khronos/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GlCommand, GlParam } from \"./model.js\";\nimport type { CommandPlan, GlScalar, ParamPlan } from \"./plan.js\";\nimport {\n tArray,\n tBoolean,\n tBuffer,\n tFixedArray,\n tInlineStruct,\n tRef,\n tSizedArray,\n tString,\n tUint64,\n} from \"../analysis/descriptor.js\";\nimport { paramPairAt } from \"./param-pair.js\";\n\ntype InArg = {\n out: false;\n name: string;\n tsType: string;\n descriptor: string;\n};\n\ntype OutArg = {\n out: true;\n cellName: string;\n seed: string;\n tsType: string;\n descriptor: string;\n paramIndex: number;\n};\n\ntype PlannedArg = InArg | OutArg;\ntype OutArgCell = Pick<OutArg, \"out\" | \"cellName\" | \"paramIndex\">;\ntype OutArgFields = Pick<OutArg, \"seed\" | \"tsType\" | \"descriptor\">;\n\ntype OutArgFieldsOptions = {\n command: GlCommand;\n plan: ParamPlan;\n param: GlParam;\n cellName: string;\n track: (alias: string) => string;\n};\n\ntype BuildArgOptions = {\n command: GlCommand;\n index: number;\n plan: ParamPlan;\n outIndex: number;\n};\n\nconst OUT_PLAN_KINDS: Set<string> = new Set([\"ref-out\", \"ref-array-out\", \"ref-fixed-out\", \"string-out\"]);\n\nconst scalarAliasOrGroup = (scalar: GlScalar, group: string | undefined): string =>\n group !== undefined && scalar.groupBearing === true ? group : scalar.tsAlias;\n\nconst paramIndexByName = (command: GlCommand, name: string): number => {\n const index = command.params.findIndex((param) => param.name === name);\n\n if (index === -1) {\n throw new Error(`Command ${command.name} has no parameter named ${name}`);\n }\n\n return index;\n};\n\nconst arrayInTsType = (scalar: GlScalar, group: string | undefined): string => {\n const element = scalarAliasOrGroup(scalar, group);\n\n return scalar.viewType === undefined ? `${element}[]` : `${element}[] | ${scalar.viewType}`;\n};\n\nconst inArg = (name: string, tsType: string, descriptor: string): InArg => ({\n out: false,\n name,\n tsType,\n descriptor,\n});\n\nconst buildInArg = (options: BuildArgOptions, name: string, track: (alias: string) => string): InArg => {\n const { command, index, plan } = options;\n const param = command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${command.name}`);\n }\n\n switch (plan.kind) {\n case \"scalar\": {\n return inArg(name, track(scalarAliasOrGroup(plan.scalar, param.group)), plan.scalar.descriptor);\n }\n case \"boolean\": {\n return inArg(name, \"boolean\", tBoolean);\n }\n case \"sync\": {\n return inArg(name, track(\"GLsync\"), tInlineStruct());\n }\n case \"string-in\": {\n return inArg(name, \"string\", tString(\"borrowed\"));\n }\n case \"string-array-in\": {\n return inArg(name, \"string[]\", tArray(tString(\"borrowed\")));\n }\n case \"array-in\": {\n track(scalarAliasOrGroup(plan.scalar, param.group));\n\n return inArg(name, arrayInTsType(plan.scalar, param.group), tArray(plan.scalar.descriptor));\n }\n case \"buffer\": {\n return inArg(name, `ArrayBufferView | ${track(\"GLintptr\")} | null`, tBuffer);\n }\n case \"byte-offset\": {\n return inArg(name, track(\"GLintptr\"), tUint64);\n }\n case \"byte-offset-array\": {\n return inArg(name, `${track(\"GLintptr\")}[]`, tArray(tUint64));\n }\n case \"ref-array-out\":\n case \"ref-fixed-out\":\n case \"ref-out\":\n case \"string-out\": {\n throw new Error(`Plan kind ${plan.kind} is not an input parameter`);\n }\n }\n};\n\nconst outArgFields = (options: OutArgFieldsOptions): OutArgFields => {\n const { command, plan, param, cellName, track } = options;\n\n switch (plan.kind) {\n case \"ref-out\": {\n return {\n seed: `const ${cellName} = { value: 0 };`,\n tsType: track(scalarAliasOrGroup(plan.scalar, param.group)),\n descriptor: tRef(plan.scalar.descriptor),\n };\n }\n case \"ref-array-out\": {\n const sizeIndex = paramIndexByName(command, plan.lenParamName);\n const lenIdentifier = toCamelIdentifier(plan.lenParamName);\n\n return {\n seed: `const ${cellName} = { value: new Array<number>(${lenIdentifier}).fill(0) };`,\n tsType: `${track(plan.scalar.tsAlias)}[]`,\n descriptor: tRef(tSizedArray(plan.scalar.descriptor, sizeIndex)),\n };\n }\n case \"ref-fixed-out\": {\n return {\n seed: `const ${cellName} = { value: new Array<number>(${String(plan.length)}).fill(0) };`,\n tsType: `${track(plan.scalar.tsAlias)}[]`,\n descriptor: tRef(tFixedArray(plan.scalar.descriptor, plan.length)),\n };\n }\n case \"string-out\": {\n return {\n seed: `const ${cellName} = { value: \"\" };`,\n tsType: \"string\",\n descriptor: tRef(tString(\"borrowed\", toCamelIdentifier(plan.lenParamName))),\n };\n }\n case \"array-in\":\n case \"boolean\":\n case \"buffer\":\n case \"byte-offset\":\n case \"byte-offset-array\":\n case \"scalar\":\n case \"string-array-in\":\n case \"string-in\":\n case \"sync\": {\n throw new Error(`Plan kind ${plan.kind} is not an output parameter`);\n }\n }\n};\n\nconst buildOutArg = (options: BuildArgOptions, track: (alias: string) => string): OutArg => {\n const { command, index, plan, outIndex } = options;\n const param = command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${command.name}`);\n }\n\n const cellName = `out${String(outIndex)}`;\n const cell: OutArgCell = { out: true, cellName, paramIndex: index };\n\n return { ...cell, ...outArgFields({ command, plan, param, cellName, track }) };\n};\n\nconst isOutPlan = (plan: ParamPlan): boolean => OUT_PLAN_KINDS.has(plan.kind);\nconst isInArg = (arg: PlannedArg): arg is InArg => !arg.out;\nconst isOutArg = (arg: PlannedArg): arg is OutArg => arg.out;\n\nconst buildArg = (options: BuildArgOptions, name: string, track: (alias: string) => string): PlannedArg =>\n isOutPlan(options.plan) ? buildOutArg(options, track) : buildInArg(options, name, track);\n\nconst trackInto =\n (usedTypes: Set<string>) =>\n (alias: string): string => {\n usedTypes.add(alias);\n\n return alias;\n };\n\nconst planArgs = (\n plan: CommandPlan & { ok: true },\n usedTypes: Set<string>,\n): { args: PlannedArg[]; ins: InArg[]; outs: OutArg[] } => {\n const track = trackInto(usedTypes);\n const args: PlannedArg[] = [];\n\n for (const [index, paramPlan] of plan.params.entries()) {\n const param = plan.command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${plan.command.name}`);\n }\n\n const options: BuildArgOptions = {\n command: plan.command,\n index,\n plan: paramPlan,\n outIndex: args.filter(isOutArg).length,\n };\n\n args.push(buildArg(options, toCamelIdentifier(param.name), track));\n }\n\n return { args, ins: args.filter(isInArg), outs: args.filter(isOutArg) };\n};\n\nconst scalarPrefixArg = (\n plan: CommandPlan & { ok: true },\n index: number,\n track: (alias: string) => string,\n): InArg | undefined => {\n const { paramPlan, param } = paramPairAt(plan, index);\n\n if (param === undefined) {\n return undefined;\n }\n\n if (paramPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n return buildInArg(\n { command: plan.command, index, plan: paramPlan, outIndex: 0 },\n toCamelIdentifier(param.name),\n track,\n );\n};\n\nconst scalarPrefixArgs = (plan: CommandPlan & { ok: true }, usedTypes: Set<string>): InArg[] | undefined => {\n const track = trackInto(usedTypes);\n const prefix: InArg[] = [];\n\n for (let index = 0; index < plan.params.length - 2; index++) {\n const arg = scalarPrefixArg(plan, index, track);\n\n if (arg === undefined) {\n return undefined;\n }\n\n prefix.push(arg);\n }\n\n return prefix;\n};\n\nexport { scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs, type InArg, type OutArg };\n"]}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GlCommand, GlParam } from \"./model.js\";\nimport type { CommandPlan, GlScalar, ParamPlan } from \"./plan.js\";\nimport {\n tArray,\n tBoolean,\n tBuffer,\n tFixedArray,\n tInlineStruct,\n tRef,\n tSizedArray,\n tString,\n tUint64,\n} from \"../analysis/descriptor.js\";\nimport { paramPairAt } from \"./param-pair.js\";\n\ntype InArg = {\n out: false;\n name: string;\n tsType: string;\n descriptor: string;\n};\n\ntype OutArg = {\n out: true;\n cellName: string;\n seed: string;\n tsType: string;\n descriptor: string;\n paramIndex: number;\n};\n\ntype PlannedArg = InArg | OutArg;\ntype OutArgCell = Pick<OutArg, \"out\" | \"cellName\" | \"paramIndex\">;\ntype OutArgFields = Pick<OutArg, \"seed\" | \"tsType\" | \"descriptor\">;\n\ntype OutArgFieldsOptions = {\n command: GlCommand;\n plan: ParamPlan;\n param: GlParam;\n cellName: string;\n track: (alias: string) => string;\n};\n\ntype BuildArgOptions = {\n command: GlCommand;\n index: number;\n plan: ParamPlan;\n outIndex: number;\n};\n\nconst OUT_PLAN_KINDS: Set<string> = new Set([\"ref-out\", \"ref-array-out\", \"ref-fixed-out\", \"string-out\"]);\n\nconst scalarAliasOrGroup = (scalar: GlScalar, group: string | undefined): string =>\n group !== undefined && scalar.isGroupBearing === true ? group : scalar.tsAlias;\n\nconst paramIndexByName = (command: GlCommand, name: string): number => {\n const index = command.params.findIndex((param) => param.name === name);\n\n if (index === -1) {\n throw new Error(`Command ${command.name} has no parameter named ${name}`);\n }\n\n return index;\n};\n\nconst arrayInTsType = (scalar: GlScalar, group: string | undefined): string => {\n const element = scalarAliasOrGroup(scalar, group);\n\n return scalar.viewType === undefined ? `${element}[]` : `${element}[] | ${scalar.viewType}`;\n};\n\nconst inArg = (name: string, tsType: string, descriptor: string): InArg => ({\n out: false,\n name,\n tsType,\n descriptor,\n});\n\nconst buildInArg = (options: BuildArgOptions, name: string, track: (alias: string) => string): InArg => {\n const { command, index, plan } = options;\n const param = command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${command.name}`);\n }\n\n switch (plan.kind) {\n case \"scalar\": {\n return inArg(name, track(scalarAliasOrGroup(plan.scalar, param.group)), plan.scalar.descriptor);\n }\n case \"boolean\": {\n return inArg(name, \"boolean\", tBoolean);\n }\n case \"sync\": {\n return inArg(name, track(\"GLsync\"), tInlineStruct());\n }\n case \"string-in\": {\n return inArg(name, \"string\", tString(\"borrowed\"));\n }\n case \"string-array-in\": {\n return inArg(name, \"string[]\", tArray(tString(\"borrowed\")));\n }\n case \"array-in\": {\n track(scalarAliasOrGroup(plan.scalar, param.group));\n\n return inArg(name, arrayInTsType(plan.scalar, param.group), tArray(plan.scalar.descriptor));\n }\n case \"buffer\": {\n return inArg(name, `ArrayBufferView | ${track(\"GLintptr\")} | null`, tBuffer);\n }\n case \"byte-offset\": {\n return inArg(name, track(\"GLintptr\"), tUint64);\n }\n case \"byte-offset-array\": {\n return inArg(name, `${track(\"GLintptr\")}[]`, tArray(tUint64));\n }\n case \"ref-array-out\":\n case \"ref-fixed-out\":\n case \"ref-out\":\n case \"string-out\": {\n throw new Error(`Plan kind ${plan.kind} is not an input parameter`);\n }\n }\n};\n\nconst outArgFields = (options: OutArgFieldsOptions): OutArgFields => {\n const { command, plan, param, cellName, track } = options;\n\n switch (plan.kind) {\n case \"ref-out\": {\n return {\n seed: `const ${cellName} = { value: 0 };`,\n tsType: track(scalarAliasOrGroup(plan.scalar, param.group)),\n descriptor: tRef(plan.scalar.descriptor),\n };\n }\n case \"ref-array-out\": {\n const sizeIndex = paramIndexByName(command, plan.lenParamName);\n const lenIdentifier = toCamelIdentifier(plan.lenParamName);\n\n return {\n seed: `const ${cellName} = { value: new Array<number>(${lenIdentifier}).fill(0) };`,\n tsType: `${track(plan.scalar.tsAlias)}[]`,\n descriptor: tRef(tSizedArray(plan.scalar.descriptor, sizeIndex)),\n };\n }\n case \"ref-fixed-out\": {\n return {\n seed: `const ${cellName} = { value: new Array<number>(${String(plan.length)}).fill(0) };`,\n tsType: `${track(plan.scalar.tsAlias)}[]`,\n descriptor: tRef(tFixedArray(plan.scalar.descriptor, plan.length)),\n };\n }\n case \"string-out\": {\n return {\n seed: `const ${cellName} = { value: \"\" };`,\n tsType: \"string\",\n descriptor: tRef(tString(\"borrowed\", toCamelIdentifier(plan.lenParamName))),\n };\n }\n case \"array-in\":\n case \"boolean\":\n case \"buffer\":\n case \"byte-offset\":\n case \"byte-offset-array\":\n case \"scalar\":\n case \"string-array-in\":\n case \"string-in\":\n case \"sync\": {\n throw new Error(`Plan kind ${plan.kind} is not an output parameter`);\n }\n }\n};\n\nconst buildOutArg = (options: BuildArgOptions, track: (alias: string) => string): OutArg => {\n const { command, index, plan, outIndex } = options;\n const param = command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${command.name}`);\n }\n\n const cellName = `out${String(outIndex)}`;\n const cell: OutArgCell = { out: true, cellName, paramIndex: index };\n\n return { ...cell, ...outArgFields({ command, plan, param, cellName, track }) };\n};\n\nconst isOutPlan = (plan: ParamPlan): boolean => OUT_PLAN_KINDS.has(plan.kind);\nconst isInArg = (arg: PlannedArg): arg is InArg => !arg.out;\nconst isOutArg = (arg: PlannedArg): arg is OutArg => arg.out;\n\nconst buildArg = (options: BuildArgOptions, name: string, track: (alias: string) => string): PlannedArg =>\n isOutPlan(options.plan) ? buildOutArg(options, track) : buildInArg(options, name, track);\n\nconst trackInto =\n (usedTypes: Set<string>) =>\n (alias: string): string => {\n usedTypes.add(alias);\n\n return alias;\n };\n\nconst planArgs = (\n plan: CommandPlan & { ok: true },\n usedTypes: Set<string>,\n): { args: PlannedArg[]; ins: InArg[]; outs: OutArg[] } => {\n const track = trackInto(usedTypes);\n const args: PlannedArg[] = [];\n\n for (const [index, paramPlan] of plan.params.entries()) {\n const param = plan.command.params[index];\n\n if (param === undefined) {\n throw new Error(`Parameter index ${String(index)} out of range on ${plan.command.name}`);\n }\n\n const options: BuildArgOptions = {\n command: plan.command,\n index,\n plan: paramPlan,\n outIndex: args.filter(isOutArg).length,\n };\n\n args.push(buildArg(options, toCamelIdentifier(param.name), track));\n }\n\n return { args, ins: args.filter(isInArg), outs: args.filter(isOutArg) };\n};\n\nconst scalarPrefixArg = (\n plan: CommandPlan & { ok: true },\n index: number,\n track: (alias: string) => string,\n): InArg | undefined => {\n const { paramPlan, param } = paramPairAt(plan, index);\n\n if (param === undefined) {\n return undefined;\n }\n\n if (paramPlan?.kind !== \"scalar\") {\n return undefined;\n }\n\n return buildInArg(\n { command: plan.command, index, plan: paramPlan, outIndex: 0 },\n toCamelIdentifier(param.name),\n track,\n );\n};\n\nconst scalarPrefixArgs = (plan: CommandPlan & { ok: true }, usedTypes: Set<string>): InArg[] | undefined => {\n const track = trackInto(usedTypes);\n const prefix: InArg[] = [];\n\n for (let index = 0; index < plan.params.length - 2; index++) {\n const arg = scalarPrefixArg(plan, index, track);\n\n if (arg === undefined) {\n return undefined;\n }\n\n prefix.push(arg);\n }\n\n return prefix;\n};\n\nexport { scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs, type InArg, type OutArg };\n"]}
|
package/dist/khronos/pipeline.js
CHANGED