@qoretechnologies/reqraft 0.10.52 → 0.10.53-pr.121.gaf1e48a

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.
@@ -0,0 +1,38 @@
1
+ # TASK — export the bare `ExpressionBuilder` from the form barrel
2
+
3
+ **Status:** committed `0eea9e7`, pushed (branch `feature/119_export-expression-builder`), PR open — awaiting CI + review
4
+
5
+ Issue: [toolkit-react#119](https://github.com/qoretechnologies/toolkit-react/issues/119).
6
+ Design: [`design/IDE_INTEGRATION.md`](../design/IDE_INTEGRATION.md) (the shell-at-root / bare-builder-nested rule;
7
+ revised note added in this task).
8
+
9
+ ## Why
10
+
11
+ The library's own `TemplateField` renders the `ExpressionField` shell for a root field (FormEngine sets
12
+ `allowTextExpressions`) and the bare `ExpressionBuilder` for nested operands — the June 11 "top-level
13
+ re-wrap" decision in `FIELD_STACK_REPORT.md`. The barrel exported the shell but not the builder, so a host
14
+ mirroring that rule (qorus-ide's `template.tsx`) had to deep-import `dist/components/form/expressions/builder`.
15
+
16
+ ## Surface area
17
+
18
+ | File | Change |
19
+ |---|---|
20
+ | `src/components/form/index.tsx` | `export { ExpressionBuilder }` + `export type { IExpressionBuilderProps }` next to the shell |
21
+ | `__tests__/formBarrelExports.test.ts` | asserts both come from the barrel — fails if the export is removed |
22
+ | `design/IDE_INTEGRATION.md` | one-line revision under "the shell is the host's component" |
23
+ | `package.json` | `0.10.52` → `0.10.53` (single bump) |
24
+
25
+ ## Phases
26
+
27
+ - [x] export + type export
28
+ - [x] unit test through `yarn test`
29
+ - [x] `build:test:prod` green
30
+ - [ ] `yarn precheck` (lint + unit + prod tsc)
31
+ - [ ] **STOP — user verifies before commit** (no visual surface: nothing to click; the test is the proof)
32
+ - [ ] `/audit`, commit, push, PR, CI, qlip (expect 0 changed snapshots)
33
+
34
+ ## Not this task
35
+
36
+ toolkit-react#120 was filed alongside this and closed as invalid: both operand mounts have forwarded
37
+ `expressions_url` since the port (5905e52); the symptom was qorus-ide's raw-catalogue override on its own
38
+ legacy builder, fixed there.
package/.tasks/INDEX.md CHANGED
@@ -60,6 +60,7 @@ needs phase 1.
60
60
  | [BRANCH_REMEDIATION](./BRANCH_REMEDIATION.md) | done pending user verify (uncommitted) — jest 268→356, plays 241→255, lint/tsc clean | **10th.** Burn-down of the 2026-06-10 full-branch audit: tests/stories/API/comment-voice remediation + behavior fixes (Select modal-click collapse, edge-triggered Url, ReqraftLspClient rename, CI auth wiring). Ledger: gitignored `SWEEP.local.md`. |
61
61
  | [TEMPLATE_TOKEN_GRAMMAR](./TEMPLATE_TOKEN_GRAMMAR.md) | committed `0ef167c`, in PR (branch `bugfix/template-token-grammar`) — user-verified 2026-08-27; 13/13 unit, 21/21 template plays, qlip PNGs read | **11th (bugfix).** Braced `$data:{…}` state-output refs rehydrate as raw text: canonical token grammar + strict whole-token check + TemplateField renders whole-token values as the picker chip. Twin fix applied in qorus-ide the same day; ships as a normal per-PR patch release (`0.10.37`). |
62
62
  | [EXPRESSION_FIELD_SEAMS](./EXPRESSION_FIELD_SEAMS.md) | committed `f5fb2ee`, pushed (branch `bugfix/116_expression-field-seams`) — user-verified 2026-09-07; PR not yet opened | **12th (bugfix).** The `extraActions` seam stopped one hop short of the `ExpressionField` shell hosts mount, and the builder's operand `TemplateField` mounts dropped it again — qorus-ide lost its AI-assist button on every expression card when it adopted the shell ([#116](https://github.com/qoretechnologies/toolkit-react/issues/116)). Forward it through both hops; pin with a nested-operand story; ships as a per-PR patch (`0.10.51`; re-based onto `4860e6e` after #114 published 0.10.50). |
63
+ | [EXPORT_EXPRESSION_BUILDER](./EXPORT_EXPRESSION_BUILDER.md) | committed `0eea9e7`, pushed, PR open (branch `feature/119_export-expression-builder`) | **13th (surface fix).** The barrel exported the `ExpressionField` shell but not the bare `ExpressionBuilder`, so a host mirroring the library's root/nested rule had to deep-import `dist/…/builder` ([#119](https://github.com/qoretechnologies/toolkit-react/issues/119)). Export + a barrel test; ships as `0.10.53`. |
63
64
 
64
65
  Not yet scoped (acknowledged in the design doc): the remaining
65
66
  `ui_type` editors (`tool-catalog`, `processor-mappings`, `test-cases`,
@@ -40,6 +40,9 @@ checklist the IDE-integration PR ticks off so that can't happen.
40
40
  expression mounts its own builder. A seam that stops one hop short reads
41
41
  as wired and is not — which is the silent-regression class this checklist
42
42
  exists to prevent.
43
+ *Revised 2026-09-08:* a host that mirrors this rule needs the bare builder
44
+ from the barrel; it is exported next to the shell as of 0.10.53 (#119) — no
45
+ deep import of `dist/…/expressions/builder` required.
43
46
  - **Open product call (B4):** whether reqraft should ALSO ship a *native*
44
47
  saved-values (so non-IDE consumers get it without wiring the seam). The
45
48
  storage primitive exists (`useReqraftStorage` mirrors the IDE's
@@ -31,4 +31,6 @@ export * from './expressions/useExpressions';
31
31
  export { renderExpressionToText, useRenderExpression } from './expressions/useRenderExpression';
32
32
  export type { IRenderedExpression, IUseRenderExpressionResult, } from './expressions/useRenderExpression';
33
33
  export * from './expressions/ExpressionField';
34
+ export { ExpressionBuilder } from './expressions/builder';
35
+ export type { IExpressionBuilderProps } from './expressions/builder';
34
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAChG,YAAY,EACV,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC;AAC3C,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAChG,YAAY,EACV,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,mCAAmC,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAI9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.useRenderExpression = exports.renderExpressionToText = void 0;
17
+ exports.ExpressionBuilder = exports.useRenderExpression = exports.renderExpressionToText = void 0;
18
18
  __exportStar(require("./fields/Field"), exports);
19
19
  __exportStar(require("./fields/allowed-values/AllowedValues"), exports);
20
20
  __exportStar(require("./fields/array/ArrayAuto"), exports);
@@ -51,4 +51,9 @@ var useRenderExpression_1 = require("./expressions/useRenderExpression");
51
51
  Object.defineProperty(exports, "renderExpressionToText", { enumerable: true, get: function () { return useRenderExpression_1.renderExpressionToText; } });
52
52
  Object.defineProperty(exports, "useRenderExpression", { enumerable: true, get: function () { return useRenderExpression_1.useRenderExpression; } });
53
53
  __exportStar(require("./expressions/ExpressionField"), exports);
54
+ // The bare builder is public too: the library's own rule renders the shell at a
55
+ // root field and the bare builder for nested operands, and a host that follows
56
+ // it must be able to reach the builder without a deep import (#119).
57
+ var builder_1 = require("./expressions/builder");
58
+ Object.defineProperty(exports, "ExpressionBuilder", { enumerable: true, get: function () { return builder_1.ExpressionBuilder; } });
54
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wEAAsD;AACtD,2DAAyC;AACzC,gEAA8C;AAC9C,8DAA4C;AAC5C,8DAA4C;AAC5C,2DAAyC;AACzC,mDAAiC;AACjC,6DAA2C;AAC3C,2DAAyC;AACzC,uDAAqC;AACrC,qDAAmC;AACnC,qDAAmC;AACnC,kEAAgD;AAChD,6DAA2C;AAC3C,6EAA2D;AAC3D,yDAAuC;AACvC,yDAAuC;AACvC,kEAAgD;AAChD,8DAA4C;AAC5C,yDAAuC;AACvC,mEAAiD;AACjD,yDAAuC;AACvC,sEAAoD;AACpD,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,yDAAuC;AACvC,sDAAoC;AACpC,+DAA6C;AAC7C,wEAAwE;AACxE,qDAAqD;AACrD,yEAAgG;AAAvF,6HAAA,sBAAsB,OAAA;AAAE,0HAAA,mBAAmB,OAAA;AAKpD,gEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wEAAsD;AACtD,2DAAyC;AACzC,gEAA8C;AAC9C,8DAA4C;AAC5C,8DAA4C;AAC5C,2DAAyC;AACzC,mDAAiC;AACjC,6DAA2C;AAC3C,2DAAyC;AACzC,uDAAqC;AACrC,qDAAmC;AACnC,qDAAmC;AACnC,kEAAgD;AAChD,6DAA2C;AAC3C,6EAA2D;AAC3D,yDAAuC;AACvC,yDAAuC;AACvC,kEAAgD;AAChD,8DAA4C;AAC5C,yDAAuC;AACvC,mEAAiD;AACjD,yDAAuC;AACvC,sEAAoD;AACpD,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,yDAAuC;AACvC,sDAAoC;AACpC,+DAA6C;AAC7C,wEAAwE;AACxE,qDAAqD;AACrD,yEAAgG;AAAvF,6HAAA,sBAAsB,OAAA;AAAE,0HAAA,mBAAmB,OAAA;AAKpD,gEAA8C;AAC9C,gFAAgF;AAChF,+EAA+E;AAC/E,qEAAqE;AACrE,iDAA0D;AAAjD,4GAAA,iBAAiB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qoretechnologies/reqraft",
3
- "version": "0.10.52",
3
+ "version": "0.10.53-pr.121.gaf1e48a",
4
4
  "description": "ReQraft is a collection of React components and hooks that are used across Qore Technologies' products made using the ReQore component library from Qore.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -36,3 +36,8 @@ export type {
36
36
  IUseRenderExpressionResult,
37
37
  } from './expressions/useRenderExpression';
38
38
  export * from './expressions/ExpressionField';
39
+ // The bare builder is public too: the library's own rule renders the shell at a
40
+ // root field and the bare builder for nested operands, and a host that follows
41
+ // it must be able to reach the builder without a deep import (#119).
42
+ export { ExpressionBuilder } from './expressions/builder';
43
+ export type { IExpressionBuilderProps } from './expressions/builder';