@ryuzaki13/react-foundation-lib 2.27.0 → 2.29.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/formatters/pipeline/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/formatters/pipeline/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1H,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAEpI;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uCAAuC,GAAG;IACrD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2CAA2C,GAAG;IACzD,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0CAA0C,GACrD,uCAAuC,GAAG,2CAA2C,CAAC;AAEvF;;GAEG;AACH,MAAM,MAAM,6CAA6C,GAAG;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6CAA6C,GAAG;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+CAA+C,GAAG;IAC7D,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wCAAwC,GACnD,6CAA6C,GAAG,+CAA+C,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,2CAA2C,GAAG;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;IACF,MAAM,CAAC,EAAE,6CAA6C,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;IACF,MAAM,EAAE,wCAAwC,CAAC;CACjD,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,uCAAuC,GAAG;IACrD,IAAI,EAAE,OAAO,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yCAAyC,GAAG;IACvD,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,kCAAkC,GAAG,uCAAuC,GAAG,yCAAyC,CAAC;AAErI,MAAM,MAAM,yCAAyC,GAAG;IACvD,QAAQ,EAAE,0CAA0C,CAAC;IACrD,IAAI,CAAC,EAAE,wCAAwC,CAAC;IAChD,qFAAqF;IACrF,WAAW,CAAC,EAAE,kCAAkC,CAAC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uCAAuC,GAAG;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;IACF,MAAM,EAAE,yCAAyC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACtD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAGxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;IACF,MAAM,CAAC,EAAE,wCAAwC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACV,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC/B,4BAA4B,GAC5B,0BAA0B,GAC1B,2CAA2C,GAC3C,sCAAsC,GACtC,uCAAuC,GACvC,sCAAsC,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACrC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2CAA2C,GAAG;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,CAAC,EAAE,6CAA6C,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,wCAAwC,CAAC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uCAAuC,GAAG;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,yCAAyC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,wCAAwC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC/B,2CAA2C,GAC3C,sCAAsC,GACtC,uCAAuC,GACvC,sCAAsC,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,sBAAsB,EAAE,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,EAAE,yBAAyB,CAAC;IACnC;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,8BAA8B,CAAC;IAC7C,mBAAmB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,kCAAkC,KAAK,iCAAiC,CAAC;IACxF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IACjD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,GAAG,mCAAmC,GAAG;IAClF,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACxD,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAC/C,+EAA+E;IAC/E,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,CAAC,MAAM,SAAS,8BAA8B,GAAG,8BAA8B,IAAI,QAAQ,CACrI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC5C,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,KAAK,EAAE,KAAK,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,YAAY,EAAE,8BAA8B,CAAC;IAC7C,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,CAAC,MAAM,SAAS,8BAA8B,GAAG,8BAA8B,IAAI;IAC5H,yCAAyC;IACzC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC;IAC/C,mEAAmE;IACnE,OAAO,EAAE,yBAAyB,CAAC;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC"}
@@ -1,11 +1,11 @@
1
- import type { TableFormulaContext, TableFormulaRowData } from "./types";
1
+ import { type TableFormulaContext, type TableFormulaDependency, type TableFormulaRowData } from "./types";
2
2
  type TableFormulaContextInstrumentation = {
3
3
  onReadIndex?: (index: number) => void;
4
4
  onOutOfRangeIndex?: (index: number) => void;
5
5
  };
6
6
  export declare function createTableFormulaContext(args: {
7
7
  rowData: TableFormulaRowData;
8
- keys?: readonly string[];
8
+ keys?: readonly TableFormulaDependency[];
9
9
  instrumentation?: TableFormulaContextInstrumentation;
10
10
  }): TableFormulaContext;
11
11
  export type TableFormulaExecutionResult = {
@@ -25,12 +25,12 @@ type CompileTableFormulaResult = {
25
25
  };
26
26
  export declare function compileTableFormula(args: {
27
27
  formulaId: string | undefined;
28
- keys?: readonly string[];
28
+ keys?: readonly TableFormulaDependency[];
29
29
  }): CompileTableFormulaResult;
30
30
  export declare function executeTableFormula(args: {
31
31
  formulaId: string | undefined;
32
32
  rowData: TableFormulaRowData;
33
- keys?: readonly string[];
33
+ keys?: readonly TableFormulaDependency[];
34
34
  }): TableFormulaExecutionResult;
35
35
  export {};
36
36
  //# sourceMappingURL=execute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/formulas/execute.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAExE,KAAK,kCAAkC,GAAG;IACzC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAOF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,kCAAkC,CAAC;CACrD,GAAG,mBAAmB,CA+BtB;AAED,MAAM,MAAM,2BAA2B,GACpC;IACA,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACb,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,eAAe,CAAC;CAChE,CAAC;AAEL,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,2BAA2B,CAAC;AAEzG,KAAK,yBAAyB,GAC3B;IACA,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,4BAA4B,CAAC;CACrC,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEL,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,yBAAyB,CAyChI;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,GAAG,2BAA2B,CAU9B"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/formulas/execute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE1G,KAAK,kCAAkC,GAAG;IACzC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAkBF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,kCAAkC,CAAC;CACrD,GAAG,mBAAmB,CAiCtB;AAED,MAAM,MAAM,2BAA2B,GACpC;IACA,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACb,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,eAAe,CAAC;CAChE,CAAC;AAEL,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,2BAA2B,CAAC;AAEzG,KAAK,yBAAyB,GAC3B;IACA,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,4BAA4B,CAAC;CACrC,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEL,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzC,GAAG,yBAAyB,CAmD5B;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzC,GAAG,2BAA2B,CAU9B"}
@@ -0,0 +1,10 @@
1
+ import { type TableFormulaDependency } from "./types";
2
+ /**
3
+ * Подставляет ID полей и числовые константы в шаблон превью формулы.
4
+ *
5
+ * Незаданные позиции остаются в виде $n, чтобы редактор мог показывать неполный
6
+ * черновик. Подстановка однопроходная: ID сохраняются буквально, а полученный
7
+ * текст предназначен только для отображения и никогда не исполняется.
8
+ */
9
+ export declare function formatTableFormulaExpression(expressionTemplate: string, dependencies: readonly TableFormulaDependency[]): string;
10
+ //# sourceMappingURL=formatTableFormulaExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatTableFormulaExpression.d.ts","sourceRoot":"","sources":["../../src/formulas/formatTableFormulaExpression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,CAShI"}
@@ -1,4 +1,5 @@
1
1
  export * from "./execute";
2
+ export * from "./formatTableFormulaExpression";
2
3
  export * from "./registry";
3
4
  export * from "./validate";
4
5
  export type * from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formulas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,mBAAmB,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formulas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,mBAAmB,SAAS,CAAC"}
@@ -1,190 +1,2 @@
1
- //#region src/formulas/registry.ts
2
- function e(e) {
3
- let t = /* @__PURE__ */ new Map(), n = [];
4
- for (let r of e) {
5
- let e = r.id.trim();
6
- if (!e) throw Error("Formula id не может быть пустым");
7
- if (t.has(e)) throw Error(`Найден дублирующийся formulaId: ${e}`);
8
- let i = Object.freeze({
9
- ...r,
10
- id: e,
11
- name: r.name.trim(),
12
- description: r.description.trim(),
13
- keywords: r.keywords ? [...r.keywords] : void 0
14
- });
15
- t.set(e, i), n.push(i);
16
- }
17
- return Object.freeze({
18
- list: Object.freeze(n),
19
- byId: t
20
- });
21
- }
22
- var t = e([]);
23
- function n(e) {
24
- t = e;
25
- }
26
- function r() {
27
- return t.list;
28
- }
29
- function i(e) {
30
- let n = e?.trim();
31
- if (n) return t.byId.get(n);
32
- }
33
- //#endregion
34
- //#region src/formulas/execute.ts
35
- function a(e) {
36
- let t = Number(e);
37
- return Number.isFinite(t) ? t : 0;
38
- }
39
- function o(e) {
40
- let t = [...e.keys ?? []], n = (n) => {
41
- if (!Number.isInteger(n) || n < 0) {
42
- e.instrumentation?.onOutOfRangeIndex?.(n);
43
- return;
44
- }
45
- if (e.instrumentation?.onReadIndex?.(n), n >= t.length) {
46
- e.instrumentation?.onOutOfRangeIndex?.(n);
47
- return;
48
- }
49
- return t[n];
50
- }, r = (t) => {
51
- let r = n(t);
52
- if (r) return e.rowData[r];
53
- };
54
- return {
55
- key: n,
56
- value: r,
57
- num: (e) => a(r(e))
58
- };
59
- }
60
- function s(e) {
61
- let t = i(e.formulaId);
62
- if (!t) return {
63
- ok: !1,
64
- reason: "formula_not_found"
65
- };
66
- let n = [...e.keys ?? []], r = {}, o = {
67
- key: (e) => Number.isInteger(e) && e >= 0 && e < n.length ? n[e] : void 0,
68
- value: (e) => {
69
- if (!Number.isInteger(e) || e < 0 || e >= n.length) return;
70
- let t = n[e];
71
- if (t) return r[t];
72
- },
73
- num: (e) => {
74
- if (!Number.isInteger(e) || e < 0 || e >= n.length) return 0;
75
- let t = n[e];
76
- return t ? a(r[t]) : 0;
77
- }
78
- };
79
- return {
80
- ok: !0,
81
- execute: (e) => {
82
- r = e;
83
- try {
84
- let e = t.fn(o);
85
- return Number.isFinite(e) ? {
86
- ok: !0,
87
- value: e
88
- } : {
89
- ok: !1,
90
- reason: "invalid_result"
91
- };
92
- } catch {
93
- return {
94
- ok: !1,
95
- reason: "runtime_error"
96
- };
97
- }
98
- }
99
- };
100
- }
101
- function c(e) {
102
- let t = s({
103
- formulaId: e.formulaId,
104
- keys: e.keys
105
- });
106
- return t.ok ? t.execute(e.rowData) : {
107
- ok: !1,
108
- reason: t.reason
109
- };
110
- }
111
- //#endregion
112
- //#region src/formulas/validate.ts
113
- function l(e) {
114
- return [...e].sort((e, t) => e - t);
115
- }
116
- function u(e, t) {
117
- return e.reduce((e, n, r) => (e[n] = (r + 1) * t, e), {});
118
- }
119
- function d(e) {
120
- let t = [], n = [], r = i(e.formulaId), a = [...e.dependencies ?? []], s = e.availableColumnIds ?? [];
121
- if (!r) return t.push({
122
- code: "formula_not_found",
123
- message: "Формула не найдена в реестре."
124
- }), {
125
- ok: !1,
126
- errors: t,
127
- warnings: n,
128
- usage: {
129
- usedDependencyIndexes: [],
130
- usedDependencyIds: [],
131
- requiredDependencyCount: 0
132
- }
133
- };
134
- let c = new Set(s), d = a.filter((e) => !c.has(e));
135
- d.length > 0 && t.push({
136
- code: "dependency_not_available",
137
- message: `Не найдены среди доступных полей: ${d.join(", ")}.`
138
- });
139
- let f = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Set(), m = 0, h = (e) => {
140
- try {
141
- let t = o({
142
- rowData: e,
143
- keys: a,
144
- instrumentation: {
145
- onReadIndex: (e) => {
146
- f.add(e);
147
- },
148
- onOutOfRangeIndex: (e) => {
149
- p.add(e);
150
- }
151
- }
152
- });
153
- r.fn(t);
154
- } catch {
155
- m += 1;
156
- }
157
- };
158
- h(u(a, 100)), h(u(a, -100));
159
- let g = l(f), _ = g.length > 0 ? g[g.length - 1] + 1 : 0;
160
- p.size > 0 && t.push({
161
- code: "dependency_index_out_of_range",
162
- message: `Формула обращается к несуществующим индексам. Минимально требуется зависимостей: ${_}, выбрано: ${a.length}.`
163
- }), g.length === 0 && n.push({
164
- code: "formula_does_not_use_dependencies",
165
- message: "Формула не использует dependencies."
166
- });
167
- let v = a.filter((e, t) => !f.has(t));
168
- v.length > 0 && n.push({
169
- code: "unused_dependencies",
170
- message: `Выбраны, но не используются формулой: ${v.join(", ")}.`
171
- }), m > 0 && n.push({
172
- code: "formula_runtime_error",
173
- message: "На тестовых данных формула завершилась с ошибкой."
174
- });
175
- let y = g.map((e) => a[e]).filter(Boolean);
176
- return {
177
- ok: t.length === 0,
178
- errors: t,
179
- warnings: n,
180
- usage: {
181
- usedDependencyIndexes: g,
182
- usedDependencyIds: y,
183
- requiredDependencyCount: _
184
- }
185
- };
186
- }
187
- //#endregion
188
- export { s as compileTableFormula, n as configureTableFormulaRegistry, o as createTableFormulaContext, e as createTableFormulaRegistry, c as executeTableFormula, i as getTableFormulaById, r as getTableFormulaList, d as validateTableFormulaDependencies };
189
-
190
- //# sourceMappingURL=index.js.map
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../chunks/formulas-BXT_XBWI.js";
2
+ export { o as compileTableFormula, a as configureTableFormulaRegistry, n as createTableFormulaContext, s as createTableFormulaRegistry, e as executeTableFormula, i as formatTableFormulaExpression, t as getTableFormulaById, r as getTableFormulaList, c as validateTableFormulaDependencies };
@@ -0,0 +1,4 @@
1
+ import { type TableFormulaDependency } from "./types";
2
+ /** Проверяет внешний аргумент без приведения пустых строк или нечисловых значений к нулю. */
3
+ export declare function isTableFormulaDependency(value: unknown): value is TableFormulaDependency;
4
+ //# sourceMappingURL=isTableFormulaDependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isTableFormulaDependency.d.ts","sourceRoot":"","sources":["../../src/formulas/isTableFormulaDependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAOxF"}
@@ -1,5 +1,16 @@
1
1
  export type TableFormulaRowData = Record<string, unknown>;
2
+ /**
3
+ * Позиционный аргумент формулы: ID поля строки либо конечная числовая константа.
4
+ *
5
+ * Константа занимает обычную позицию аргумента, но не создаёт зависимости от
6
+ * данных строки. Строковая форма сохраняет контракт существующих consumers.
7
+ */
8
+ export type TableFormulaDependency = string | {
9
+ readonly kind: "constant";
10
+ readonly value: number;
11
+ };
2
12
  export interface TableFormulaContext {
13
+ /** Возвращает ID только для аргумента-поля; у константы ключа строки нет. */
3
14
  key: (index: number) => string | undefined;
4
15
  value: (index: number) => unknown;
5
16
  num: (index: number) => number;
@@ -9,6 +20,8 @@ export interface TableFormulaDefinition {
9
20
  id: string;
10
21
  name: string;
11
22
  description: string;
23
+ /** Шаблон превью с позициями $n; описывает выражение для человека и не участвует в выполнении fn. */
24
+ expressionTemplate?: string;
12
25
  args?: readonly string[];
13
26
  keywords?: readonly string[];
14
27
  fn: TableFormulaFn;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formulas/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IACnC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,EAAE,EAAE,cAAc,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formulas/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,MAAM,WAAW,mBAAmB;IACnC,6EAA6E;IAC7E,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,EAAE,EAAE,cAAc,CAAC;CACnB"}
@@ -1,4 +1,5 @@
1
- type ValidationCode = "formula_not_found" | "dependency_index_out_of_range" | "dependency_not_available" | "unused_dependencies" | "formula_does_not_use_dependencies" | "formula_runtime_error";
1
+ import { type TableFormulaDependency } from "./types";
2
+ type ValidationCode = "formula_not_found" | "dependency_index_out_of_range" | "dependency_not_available" | "invalid_constant" | "unused_dependencies" | "formula_does_not_use_dependencies" | "formula_runtime_error";
2
3
  export interface TableFormulaValidationMessage {
3
4
  code: ValidationCode;
4
5
  message: string;
@@ -15,7 +16,7 @@ export interface TableFormulaDependenciesValidationResult {
15
16
  }
16
17
  export declare function validateTableFormulaDependencies(args: {
17
18
  formulaId: string | undefined;
18
- dependencies?: readonly string[];
19
+ dependencies?: readonly TableFormulaDependency[];
19
20
  availableColumnIds?: readonly string[];
20
21
  }): TableFormulaDependenciesValidationResult;
21
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/formulas/validate.ts"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAChB,mBAAmB,GACnB,+BAA+B,GAC/B,0BAA0B,GAC1B,qBAAqB,GACrB,mCAAmC,GACnC,uBAAuB,CAAC;AAE3B,MAAM,WAAW,6BAA6B;IAC7C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,wCAAwC;IACxD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACxC,QAAQ,EAAE,6BAA6B,EAAE,CAAC;IAC1C,KAAK,EAAE;QACN,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,uBAAuB,EAAE,MAAM,CAAC;KAChC,CAAC;CACF;AAaD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACtD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,GAAG,wCAAwC,CA2G3C"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/formulas/validate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,KAAK,cAAc,GAChB,mBAAmB,GACnB,+BAA+B,GAC/B,0BAA0B,GAC1B,kBAAkB,GAClB,qBAAqB,GACrB,mCAAmC,GACnC,uBAAuB,CAAC;AAE3B,MAAM,WAAW,6BAA6B;IAC7C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,wCAAwC;IACxD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACxC,QAAQ,EAAE,6BAA6B,EAAE,CAAC;IAC1C,KAAK,EAAE;QACN,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,uBAAuB,EAAE,MAAM,CAAC;KAChC,CAAC;CACF;AAcD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACtD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,GAAG,wCAAwC,CAqH3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuzaki13/react-foundation-lib",
3
- "version": "2.27.0",
3
+ "version": "2.29.0",
4
4
  "description": "Reusable React and TypeScript foundation utilities, hooks, and primitives.",
5
5
  "license": "MIT",
6
6
  "author": "Ryuzaki13",
@@ -6,7 +6,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
6
6
 
7
7
  Модуль `@ryuzaki13/react-foundation-lib/formulas` предоставляет безопасную инфраструктуру для заранее написанных клиентских формул таблицы.
8
8
 
9
- Формула получает значения других полей текущей строки, выполняет синхронный расчёт и возвращает конечное JavaScript-число. Например, она может вычислить сумму, разницу, отношение или процент для calculated-колонки.
9
+ Формула получает значения полей текущей строки и числовые константы, выполняет синхронный расчёт и возвращает конечное JavaScript-число. Например, она может вычислить сумму, разницу, отношение или процент для calculated-колонки.
10
10
 
11
11
  ```text
12
12
  данные строки + упорядоченные зависимости
@@ -45,6 +45,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
45
45
 
46
46
  - описывает типизированный контракт числовой формулы;
47
47
  - связывает dependency indexes с полями текущей строки;
48
+ - формирует текстовое превью выражения с ID выбранных зависимостей;
48
49
  - создаёт нормализованный реестр формул host-приложения;
49
50
  - хранит один активный реестр в текущем экземпляре модуля;
50
51
  - выполняет формулы без выбрасывания их runtime-ошибок наружу;
@@ -81,6 +82,7 @@ import {
81
82
  executeTableFormula,
82
83
  getTableFormulaById,
83
84
  getTableFormulaList,
85
+ formatTableFormulaExpression,
84
86
  validateTableFormulaDependencies
85
87
  } from "@ryuzaki13/react-foundation-lib/formulas";
86
88
 
@@ -179,12 +181,17 @@ const rowData = {
179
181
 
180
182
  ### Зависимости и keys
181
183
 
182
- Dependencies — упорядоченный массив id полей:
184
+ Dependencies — упорядоченный массив аргументов. Строка обозначает id поля, объект — конечную числовую константу:
183
185
 
184
186
  ```ts
185
- const keys = ["planned", "actual"];
187
+ import { type TableFormulaDependency } from "@ryuzaki13/react-foundation-lib/formulas";
188
+
189
+ const keys: readonly TableFormulaDependency[] = ["planned", "actual"];
190
+ const scaledKeys: readonly TableFormulaDependency[] = ["planned", { kind: "constant", value: 100 }];
186
191
  ```
187
192
 
193
+ `keys: ["planned", { kind: "constant", value: 100 }]` передаёт в `$0` значение поля, а в `$1` число `100`. Поля и константы можно смешивать, повторять и переставлять; константа не становится полем строки. Ноль, отрицательные и дробные числа допустимы. Строковый `"100"` обозначает ID поля, а не число. `NaN` и бесконечности отклоняются validator-ом; при исполнении дают `runtime_error`. Редактор отвечает за разбор пользовательского ввода до передачи числового значения в API.
194
+
188
195
  Позиция является частью контракта:
189
196
 
190
197
  - `0` означает `planned`;
@@ -222,6 +229,7 @@ interface TableFormulaDefinition {
222
229
  id: string;
223
230
  name: string;
224
231
  description: string;
232
+ expressionTemplate?: string;
225
233
  args?: readonly string[];
226
234
  keywords?: readonly string[];
227
235
  fn: TableFormulaFn;
@@ -266,6 +274,35 @@ description: "100 * $0 / ($0 + $1)";
266
274
 
267
275
  Factory trim-ит строку, но не анализирует выражение. `$0`, `$1` — только принятая человеком нотация документации, а не parser syntax.
268
276
 
277
+ ### `expressionTemplate`
278
+
279
+ Необязательный шаблон компактного превью. В отличие от `description`, он содержит только отображаемое выражение:
280
+
281
+ ```ts
282
+ expressionTemplate: "$0 / $1";
283
+ ```
284
+
285
+ Индекс `$n` соответствует позиции в упорядоченном списке зависимостей. Шаблон сохраняется буквально; registry, execution и validation не требуют его наличия. Ранее объявленные definitions без этого поля сохраняют прежний контракт.
286
+
287
+ Шаблон служит описанием основной операции для человека. Он не заменяет `fn`, не исполняется и не обязан воспроизводить все защитные ветвления функции, например возврат нуля при нулевом делителе. За соответствие шаблона операции отвечает автор definition.
288
+
289
+ ### `formatTableFormulaExpression(expressionTemplate, dependencies)`
290
+
291
+ Чистая функция подставляет ID полей и константы в позиции `$n` за один проход:
292
+
293
+ ```ts
294
+ import { formatTableFormulaExpression } from "@ryuzaki13/react-foundation-lib/formulas";
295
+
296
+ formatTableFormulaExpression("$0 / $1", ["FIELD_X", "FIELD_Y"]); // "FIELD_X / FIELD_Y"
297
+ formatTableFormulaExpression("$0 / $1", ["FIELD_X"]); // "FIELD_X / $1"
298
+ formatTableFormulaExpression("$0 / $1", ["FIELD_X", { kind: "constant", value: 100 }]); // "FIELD_X / 100"
299
+ formatTableFormulaExpression("$0 - $1", ["FIELD_X", { kind: "constant", value: -2.5 }]); // "FIELD_X - (-2.5)"
300
+ ```
301
+
302
+ Повторные вхождения заменяются, `$1` и `$10` различаются. Незаданный, пустой или некорректный аргумент оставляет исходный маркер; пробелы и специальные символы в ID сохраняются. Отрицательное число отображается в скобках, чтобы сохранить смысл выражения. Подставленные ID не обрабатываются повторно, входной массив не изменяется. Операторы, скобки и остальной текст шаблона не анализируются.
303
+
304
+ Пустая строка возвращается без изменений. Host UI самостоятельно выбирает сообщение для отсутствующего или пустого шаблона и отображает результат как текст.
305
+
269
306
  ### `args`
270
307
 
271
308
  Необязательные подписи positional arguments:
@@ -339,7 +376,7 @@ ctx.key(-1); // undefined
339
376
  ctx.key(1.5); // undefined
340
377
  ```
341
378
 
342
- Допустим только целый неотрицательный index в пределах массива.
379
+ Допустим только целый неотрицательный index в пределах массива. Для константы `key(index)` возвращает `undefined`: у неё нет ID поля, хотя сама позиция считается прочитанной instrumentation.
343
380
 
344
381
  Пустая строка технически может вернуться из `key`, если она была передана в `keys`, но `value` и `num` считают пустой key отсутствующим. Используйте только непустые dependency ids.
345
382
 
@@ -352,7 +389,7 @@ ctx.key(1.5); // undefined
352
389
  ctx.value(1); // "25"
353
390
  ```
354
391
 
355
- Для неправильного индекса, пустого key или отсутствующего свойства возвращается `undefined`.
392
+ Для константы возвращается непосредственно её числовое значение. Для неправильного индекса, пустого key или отсутствующего свойства возвращается `undefined`.
356
393
 
357
394
  Используйте `value`, когда нужно отличать отсутствующее значение от нуля или применять собственный parser:
358
395
 
@@ -396,7 +433,7 @@ context.num(0); // 12.5
396
433
  context.num(1); // 4
397
434
  ```
398
435
 
399
- `keys` копируется при создании context. Изменение исходного массива после вызова не меняет mapping. `rowData` не копируется: context читает переданный объект.
436
+ `keys`, включая значения объектов-констант, копируется при создании context. Изменение исходного массива или объекта константы после вызова не меняет mapping. Некорректная константа приводит к `TypeError` при ручном создании context. `rowData` не копируется: context читает переданный объект.
400
437
 
401
438
  ### Instrumentation
402
439
 
@@ -736,11 +773,11 @@ type CompileResult = { ok: true; execute: TableFormulaCompiledExecutor } | { ok:
736
773
  Compiler:
737
774
 
738
775
  - находит formula definition один раз;
739
- - копирует массив `keys`;
776
+ - копирует массив `keys` и значения объектов-констант;
740
777
  - создаёт один context object;
741
778
  - возвращает executor `(rowData) => result`.
742
779
 
743
- Изменение исходного массива keys после compile не влияет на executor. Замена активного registry также не меняет уже найденную formula function.
780
+ Изменение исходного массива keys или объекта константы после compile не влияет на executor. Замена активного registry также не меняет уже найденную formula function. При некорректной константе возвращается executor с прежней ошибкой `runtime_error`; форма compile-result не расширяется.
744
781
 
745
782
  ### Что происходит при каждом execute
746
783
 
@@ -810,7 +847,7 @@ interface TableFormulaDependenciesValidationResult {
810
847
  Validator:
811
848
 
812
849
  1. ищет formula в активном registry;
813
- 2. проверяет, что каждый dependency id входит в `availableColumnIds`;
850
+ 2. проверяет, что каждый dependency id входит в `availableColumnIds`, а константа содержит конечное число;
814
851
  3. запускает formula на положительных synthetic values;
815
852
  4. запускает formula на отрицательных synthetic values;
816
853
  5. через instrumentation собирает прочитанные indexes;
@@ -825,6 +862,7 @@ Validator:
825
862
  | ------------------------------- | ----------------------------------------------------------- |
826
863
  | `formula_not_found` | Formula id отсутствует в registry |
827
864
  | `dependency_not_available` | Dependency id отсутствует среди доступных колонок |
865
+ | `invalid_constant` | Константа не содержит конечное числовое значение |
828
866
  | `dependency_index_out_of_range` | Formula прочитала index, для которого dependency не передан |
829
867
 
830
868
  ### Warnings
@@ -843,7 +881,7 @@ validation.usage.usedDependencyIds; // например ["planned", "actual"]
843
881
  validation.usage.requiredDependencyCount; // 2
844
882
  ```
845
883
 
846
- `requiredDependencyCount` равен `максимальный использованный index + 1`.
884
+ `requiredDependencyCount` равен `максимальный использованный index + 1`. Константы учитываются в indexes и требуемом количестве аргументов, но отсутствуют в `usedDependencyIds`. Synthetic passes меняют только значения полей; значения констант остаются заданными в конфигурации.
847
885
 
848
886
  Это полезно редактору:
849
887
 
@@ -854,7 +892,7 @@ validation.usage.requiredDependencyCount; // 2
854
892
 
855
893
  ### `availableColumnIds` нужно передавать явно
856
894
 
857
- По умолчанию список доступных колонок пуст. Если передать dependencies, но не передать `availableColumnIds`, каждый dependency будет считаться недоступным:
895
+ По умолчанию список доступных колонок пуст. Если передать аргументы-поля, но не передать `availableColumnIds`, каждое поле будет считаться недоступным. Константы не проверяются на присутствие в этом списке:
858
896
 
859
897
  ```ts
860
898
  validateTableFormulaDependencies({
@@ -1035,7 +1073,7 @@ app composition / registries
1035
1073
  - TypeScript проверяет написанные definitions;
1036
1074
  - обычные unit-tests видят функцию напрямую.
1037
1075
 
1038
- `description` может содержать формулу для человека, но runtime выполняет только `fn`, заранее включённую разработчиком в registry.
1076
+ `description` и `expressionTemplate` могут содержать формулу для человека, но runtime выполняет только `fn`, заранее включённую разработчиком в registry.
1039
1077
 
1040
1078
  ### Доверенный код всё равно требует дисциплины
1041
1079
 
@@ -1187,7 +1225,7 @@ Promise не является конечным number и даст `invalid_resul
1187
1225
 
1188
1226
  ### Хранить function в JSON
1189
1227
 
1190
- Сохраняйте только `formulaId` и dependency ids. Function определяется доверенным application bundle.
1228
+ Сохраняйте только `formulaId` и сериализуемые аргументы: dependency ids и объекты числовых констант. Function определяется доверенным application bundle.
1191
1229
 
1192
1230
  ### Путать table formula и row-based formatter
1193
1231
 
@@ -1204,6 +1242,7 @@ Promise не является конечным number и даст `invalid_resul
1204
1242
  | `configureTableFormulaRegistry` | Установить активный registry | Полностью заменяет module-level registry |
1205
1243
  | `getTableFormulaList` | Получить ordered catalog | Возвращает тот же readonly list |
1206
1244
  | `getTableFormulaById` | Найти definition | Trim id; `undefined` для пустого/неизвестного |
1245
+ | `formatTableFormulaExpression` | Подставить ID в шаблон превью | Сохраняет незаполненные `$n`; не исполняет выражение |
1207
1246
  | `compileTableFormula` | Подготовить reusable executor | Фиксирует formula и копирует keys |
1208
1247
  | `executeTableFormula` | Compile + один execute | Возвращает controlled result, не бросает formula error |
1209
1248
  | `validateTableFormulaDependencies` | Проверить mapping dependencies | Дважды исполняет formula на synthetic data |
@@ -1213,6 +1252,7 @@ Promise не является конечным number и даст `invalid_resul
1213
1252
  | Тип | Назначение |
1214
1253
  | ------------------------------------------ | ------------------------------------------ |
1215
1254
  | `TableFormulaRowData` | Строка `Record<string, unknown>` |
1255
+ | `TableFormulaDependency` | ID поля либо объект конечной числовой константы |
1216
1256
  | `TableFormulaContext` | Методы `key`, `value`, `num` |
1217
1257
  | `TableFormulaFn` | Синхронная function `context → number` |
1218
1258
  | `TableFormulaDefinition` | Metadata и function одной formula |
@@ -1239,6 +1279,7 @@ Promise не является конечным number и даст `invalid_resul
1239
1279
  | `formula_not_found` | error |
1240
1280
  | `dependency_index_out_of_range` | error |
1241
1281
  | `dependency_not_available` | error |
1282
+ | `invalid_constant` | error |
1242
1283
  | `unused_dependencies` | warning |
1243
1284
  | `formula_does_not_use_dependencies` | warning |
1244
1285
  | `formula_runtime_error` | warning |
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/formulas/registry.ts","../../src/formulas/execute.ts","../../src/formulas/validate.ts"],"sourcesContent":["import type { TableFormulaDefinition } from \"./types\";\n\nexport type TableFormulaRegistry = Readonly<{\n\tlist: readonly TableFormulaDefinition[];\n\tbyId: ReadonlyMap<string, TableFormulaDefinition>;\n}>;\n\nexport function createTableFormulaRegistry(definitions: readonly TableFormulaDefinition[]): TableFormulaRegistry {\n\tconst byId = new Map<string, TableFormulaDefinition>();\n\tconst list: TableFormulaDefinition[] = [];\n\n\tfor (const definition of definitions) {\n\t\tconst normalizedId = definition.id.trim();\n\t\tif (!normalizedId) {\n\t\t\tthrow new Error(\"Formula id не может быть пустым\");\n\t\t}\n\n\t\tif (byId.has(normalizedId)) {\n\t\t\tthrow new Error(`Найден дублирующийся formulaId: ${normalizedId}`);\n\t\t}\n\n\t\tconst normalizedDefinition: TableFormulaDefinition = Object.freeze({\n\t\t\t...definition,\n\t\t\tid: normalizedId,\n\t\t\tname: definition.name.trim(),\n\t\t\tdescription: definition.description.trim(),\n\t\t\tkeywords: definition.keywords ? [...definition.keywords] : undefined\n\t\t});\n\n\t\tbyId.set(normalizedId, normalizedDefinition);\n\t\tlist.push(normalizedDefinition);\n\t}\n\n\treturn Object.freeze({\n\t\tlist: Object.freeze(list),\n\t\tbyId\n\t});\n}\n\nlet tableFormulaRegistry = createTableFormulaRegistry([]);\n\n/**\n * Устанавливает реестр формул host-приложения для всех formula runtime API.\n *\n * Конфигурация выполняется composition root до первого чтения, валидации или\n * компиляции формулы. Библиотека намеренно не содержит прикладной каталог.\n */\nexport function configureTableFormulaRegistry(registry: TableFormulaRegistry): void {\n\ttableFormulaRegistry = registry;\n}\n\nexport function getTableFormulaList(): readonly TableFormulaDefinition[] {\n\treturn tableFormulaRegistry.list;\n}\n\nexport function getTableFormulaById(formulaId: string | undefined): TableFormulaDefinition | undefined {\n\tconst normalizedId = formulaId?.trim();\n\tif (!normalizedId) return undefined;\n\treturn tableFormulaRegistry.byId.get(normalizedId);\n}\n","import { getTableFormulaById } from \"./registry\";\n\nimport type { TableFormulaContext, TableFormulaRowData } from \"./types\";\n\ntype TableFormulaContextInstrumentation = {\n\tonReadIndex?: (index: number) => void;\n\tonOutOfRangeIndex?: (index: number) => void;\n};\n\nfunction toFiniteNumberOrZero(value: unknown): number {\n\tconst normalized = Number(value);\n\treturn Number.isFinite(normalized) ? normalized : 0;\n}\n\nexport function createTableFormulaContext(args: {\n\trowData: TableFormulaRowData;\n\tkeys?: readonly string[];\n\tinstrumentation?: TableFormulaContextInstrumentation;\n}): TableFormulaContext {\n\t// TODO: duplicate createRowBasedFormatterContext src\\shared\\lib\\formatters\\rowBased\\context.ts\n\tconst keys = [...(args.keys ?? [])];\n\n\tconst readKey = (index: number): string | undefined => {\n\t\tif (!Number.isInteger(index) || index < 0) {\n\t\t\targs.instrumentation?.onOutOfRangeIndex?.(index);\n\t\t\treturn undefined;\n\t\t}\n\n\t\targs.instrumentation?.onReadIndex?.(index);\n\n\t\tif (index >= keys.length) {\n\t\t\targs.instrumentation?.onOutOfRangeIndex?.(index);\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn keys[index];\n\t};\n\n\tconst readValue = (index: number): unknown => {\n\t\tconst key = readKey(index);\n\t\tif (!key) return undefined;\n\t\treturn args.rowData[key];\n\t};\n\n\treturn {\n\t\tkey: readKey,\n\t\tvalue: readValue,\n\t\tnum: (index) => toFiniteNumberOrZero(readValue(index))\n\t};\n}\n\nexport type TableFormulaExecutionResult =\n\t| {\n\t\t\tok: true;\n\t\t\tvalue: number;\n\t }\n\t| {\n\t\t\tok: false;\n\t\t\treason: \"formula_not_found\" | \"invalid_result\" | \"runtime_error\";\n\t };\n\nexport type TableFormulaCompiledExecutor = (rowData: TableFormulaRowData) => TableFormulaExecutionResult;\n\ntype CompileTableFormulaResult =\n\t| {\n\t\t\tok: true;\n\t\t\texecute: TableFormulaCompiledExecutor;\n\t }\n\t| {\n\t\t\tok: false;\n\t\t\treason: \"formula_not_found\";\n\t };\n\nexport function compileTableFormula(args: { formulaId: string | undefined; keys?: readonly string[] }): CompileTableFormulaResult {\n\tconst formula = getTableFormulaById(args.formulaId);\n\tif (!formula) {\n\t\treturn { ok: false, reason: \"formula_not_found\" };\n\t}\n\n\tconst keys = [...(args.keys ?? [])];\n\tlet rowDataRef: TableFormulaRowData = {};\n\tconst context: TableFormulaContext = {\n\t\tkey: (index) => (Number.isInteger(index) && index >= 0 && index < keys.length ? keys[index] : undefined),\n\t\tvalue: (index) => {\n\t\t\tif (!Number.isInteger(index) || index < 0 || index >= keys.length) return undefined;\n\t\t\tconst key = keys[index];\n\t\t\tif (!key) return undefined;\n\t\t\treturn rowDataRef[key];\n\t\t},\n\t\tnum: (index) => {\n\t\t\tif (!Number.isInteger(index) || index < 0 || index >= keys.length) return 0;\n\t\t\tconst key = keys[index];\n\t\t\tif (!key) return 0;\n\t\t\treturn toFiniteNumberOrZero(rowDataRef[key]);\n\t\t}\n\t};\n\n\treturn {\n\t\tok: true,\n\t\texecute: (rowData) => {\n\t\t\trowDataRef = rowData;\n\n\t\t\ttry {\n\t\t\t\tconst value = formula.fn(context);\n\t\t\t\tif (!Number.isFinite(value)) {\n\t\t\t\t\treturn { ok: false, reason: \"invalid_result\" };\n\t\t\t\t}\n\n\t\t\t\treturn { ok: true, value };\n\t\t\t} catch {\n\t\t\t\treturn { ok: false, reason: \"runtime_error\" };\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function executeTableFormula(args: {\n\tformulaId: string | undefined;\n\trowData: TableFormulaRowData;\n\tkeys?: readonly string[];\n}): TableFormulaExecutionResult {\n\tconst compiled = compileTableFormula({\n\t\tformulaId: args.formulaId,\n\t\tkeys: args.keys\n\t});\n\tif (!compiled.ok) {\n\t\treturn { ok: false, reason: compiled.reason };\n\t}\n\n\treturn compiled.execute(args.rowData);\n}\n","import { createTableFormulaContext } from \"./execute\";\nimport { getTableFormulaById } from \"./registry\";\n\ntype ValidationCode =\n\t| \"formula_not_found\"\n\t| \"dependency_index_out_of_range\"\n\t| \"dependency_not_available\"\n\t| \"unused_dependencies\"\n\t| \"formula_does_not_use_dependencies\"\n\t| \"formula_runtime_error\";\n\nexport interface TableFormulaValidationMessage {\n\tcode: ValidationCode;\n\tmessage: string;\n}\nexport interface TableFormulaDependenciesValidationResult {\n\tok: boolean;\n\terrors: TableFormulaValidationMessage[];\n\twarnings: TableFormulaValidationMessage[];\n\tusage: {\n\t\tusedDependencyIndexes: number[];\n\t\tusedDependencyIds: string[];\n\t\trequiredDependencyCount: number;\n\t};\n}\n\nfunction toSortedArray(items: Set<number>): number[] {\n\treturn [...items].sort((left, right) => left - right);\n}\n\nfunction createSampleRowData(dependencies: readonly string[], multiplier: number): Record<string, unknown> {\n\treturn dependencies.reduce<Record<string, unknown>>((acc, dependencyId, index) => {\n\t\tacc[dependencyId] = (index + 1) * multiplier;\n\t\treturn acc;\n\t}, {});\n}\n\nexport function validateTableFormulaDependencies(args: {\n\tformulaId: string | undefined;\n\tdependencies?: readonly string[];\n\tavailableColumnIds?: readonly string[];\n}): TableFormulaDependenciesValidationResult {\n\tconst errors: TableFormulaValidationMessage[] = [];\n\tconst warnings: TableFormulaValidationMessage[] = [];\n\n\tconst formula = getTableFormulaById(args.formulaId);\n\tconst dependencies = [...(args.dependencies ?? [])];\n\tconst availableColumnIds = args.availableColumnIds ?? [];\n\n\tif (!formula) {\n\t\terrors.push({\n\t\t\tcode: \"formula_not_found\",\n\t\t\tmessage: \"Формула не найдена в реестре.\"\n\t\t});\n\n\t\treturn {\n\t\t\tok: false,\n\t\t\terrors,\n\t\t\twarnings,\n\t\t\tusage: {\n\t\t\t\tusedDependencyIndexes: [],\n\t\t\t\tusedDependencyIds: [],\n\t\t\t\trequiredDependencyCount: 0\n\t\t\t}\n\t\t};\n\t}\n\n\tconst availableSet = new Set(availableColumnIds);\n\tconst missingDependencies = dependencies.filter((dependencyId) => !availableSet.has(dependencyId));\n\tif (missingDependencies.length > 0) {\n\t\terrors.push({\n\t\t\tcode: \"dependency_not_available\",\n\t\t\tmessage: `Не найдены среди доступных полей: ${missingDependencies.join(\", \")}.`\n\t\t});\n\t}\n\n\tconst usedIndexes = new Set<number>();\n\tconst outOfRangeIndexes = new Set<number>();\n\tlet runtimeErrorCount = 0;\n\n\tconst runValidationPass = (sampleRowData: Record<string, unknown>) => {\n\t\ttry {\n\t\t\tconst context = createTableFormulaContext({\n\t\t\t\trowData: sampleRowData,\n\t\t\t\tkeys: dependencies,\n\t\t\t\tinstrumentation: {\n\t\t\t\t\tonReadIndex: (index) => {\n\t\t\t\t\t\tusedIndexes.add(index);\n\t\t\t\t\t},\n\t\t\t\t\tonOutOfRangeIndex: (index) => {\n\t\t\t\t\t\toutOfRangeIndexes.add(index);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tformula.fn(context);\n\t\t} catch {\n\t\t\truntimeErrorCount += 1;\n\t\t}\n\t};\n\n\t// Несколько прогонов повышают шанс увидеть обращения к индексам в разных ветках формулы.\n\trunValidationPass(createSampleRowData(dependencies, 100));\n\trunValidationPass(createSampleRowData(dependencies, -100));\n\n\tconst sortedUsedIndexes = toSortedArray(usedIndexes);\n\tconst requiredDependencyCount = sortedUsedIndexes.length > 0 ? sortedUsedIndexes[sortedUsedIndexes.length - 1] + 1 : 0;\n\n\tif (outOfRangeIndexes.size > 0) {\n\t\terrors.push({\n\t\t\tcode: \"dependency_index_out_of_range\",\n\t\t\tmessage: `Формула обращается к несуществующим индексам. Минимально требуется зависимостей: ${requiredDependencyCount}, выбрано: ${dependencies.length}.`\n\t\t});\n\t}\n\n\tif (sortedUsedIndexes.length === 0) {\n\t\twarnings.push({\n\t\t\tcode: \"formula_does_not_use_dependencies\",\n\t\t\tmessage: \"Формула не использует dependencies.\"\n\t\t});\n\t}\n\n\tconst unusedDependencies = dependencies.filter((_, index) => !usedIndexes.has(index));\n\tif (unusedDependencies.length > 0) {\n\t\twarnings.push({\n\t\t\tcode: \"unused_dependencies\",\n\t\t\tmessage: `Выбраны, но не используются формулой: ${unusedDependencies.join(\", \")}.`\n\t\t});\n\t}\n\n\tif (runtimeErrorCount > 0) {\n\t\twarnings.push({\n\t\t\tcode: \"formula_runtime_error\",\n\t\t\tmessage: \"На тестовых данных формула завершилась с ошибкой.\"\n\t\t});\n\t}\n\n\tconst usedDependencyIds = sortedUsedIndexes.map((index) => dependencies[index]).filter(Boolean);\n\n\treturn {\n\t\tok: errors.length === 0,\n\t\terrors,\n\t\twarnings,\n\t\tusage: {\n\t\t\tusedDependencyIndexes: sortedUsedIndexes,\n\t\t\tusedDependencyIds,\n\t\t\trequiredDependencyCount\n\t\t}\n\t};\n}\n"],"mappings":"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"}