@ryuzaki13/react-foundation-lib 2.28.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":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxF,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,MAAM,EAAE,CAAC;IACxC,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
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/formatters/pipeline/types.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1,9 +1,10 @@
1
+ import { type TableFormulaDependency } from "./types";
1
2
  /**
2
- * Подставляет ID упорядоченных зависимостей в шаблон превью формулы.
3
+ * Подставляет ID полей и числовые константы в шаблон превью формулы.
3
4
  *
4
5
  * Незаданные позиции остаются в виде $n, чтобы редактор мог показывать неполный
5
6
  * черновик. Подстановка однопроходная: ID сохраняются буквально, а полученный
6
7
  * текст предназначен только для отображения и никогда не исполняется.
7
8
  */
8
- export declare function formatTableFormulaExpression(expressionTemplate: string, dependencies: readonly string[]): string;
9
+ export declare function formatTableFormulaExpression(expressionTemplate: string, dependencies: readonly TableFormulaDependency[]): string;
9
10
  //# sourceMappingURL=formatTableFormulaExpression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatTableFormulaExpression.d.ts","sourceRoot":"","sources":["../../src/formulas/formatTableFormulaExpression.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAKhH"}
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,198 +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/formatTableFormulaExpression.ts
113
- function l(e, t) {
114
- return e.replace(/\$([0-9]+)/g, (e, n) => {
115
- let r = t[Number(n)];
116
- return r === void 0 || r === "" ? e : r;
117
- });
118
- }
119
- //#endregion
120
- //#region src/formulas/validate.ts
121
- function u(e) {
122
- return [...e].sort((e, t) => e - t);
123
- }
124
- function d(e, t) {
125
- return e.reduce((e, n, r) => (e[n] = (r + 1) * t, e), {});
126
- }
127
- function f(e) {
128
- let t = [], n = [], r = i(e.formulaId), a = [...e.dependencies ?? []], s = e.availableColumnIds ?? [];
129
- if (!r) return t.push({
130
- code: "formula_not_found",
131
- message: "Формула не найдена в реестре."
132
- }), {
133
- ok: !1,
134
- errors: t,
135
- warnings: n,
136
- usage: {
137
- usedDependencyIndexes: [],
138
- usedDependencyIds: [],
139
- requiredDependencyCount: 0
140
- }
141
- };
142
- let c = new Set(s), l = a.filter((e) => !c.has(e));
143
- l.length > 0 && t.push({
144
- code: "dependency_not_available",
145
- message: `Не найдены среди доступных полей: ${l.join(", ")}.`
146
- });
147
- let f = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Set(), m = 0, h = (e) => {
148
- try {
149
- let t = o({
150
- rowData: e,
151
- keys: a,
152
- instrumentation: {
153
- onReadIndex: (e) => {
154
- f.add(e);
155
- },
156
- onOutOfRangeIndex: (e) => {
157
- p.add(e);
158
- }
159
- }
160
- });
161
- r.fn(t);
162
- } catch {
163
- m += 1;
164
- }
165
- };
166
- h(d(a, 100)), h(d(a, -100));
167
- let g = u(f), _ = g.length > 0 ? g[g.length - 1] + 1 : 0;
168
- p.size > 0 && t.push({
169
- code: "dependency_index_out_of_range",
170
- message: `Формула обращается к несуществующим индексам. Минимально требуется зависимостей: ${_}, выбрано: ${a.length}.`
171
- }), g.length === 0 && n.push({
172
- code: "formula_does_not_use_dependencies",
173
- message: "Формула не использует dependencies."
174
- });
175
- let v = a.filter((e, t) => !f.has(t));
176
- v.length > 0 && n.push({
177
- code: "unused_dependencies",
178
- message: `Выбраны, но не используются формулой: ${v.join(", ")}.`
179
- }), m > 0 && n.push({
180
- code: "formula_runtime_error",
181
- message: "На тестовых данных формула завершилась с ошибкой."
182
- });
183
- let y = g.map((e) => a[e]).filter(Boolean);
184
- return {
185
- ok: t.length === 0,
186
- errors: t,
187
- warnings: n,
188
- usage: {
189
- usedDependencyIndexes: g,
190
- usedDependencyIds: y,
191
- requiredDependencyCount: _
192
- }
193
- };
194
- }
195
- //#endregion
196
- export { s as compileTableFormula, n as configureTableFormulaRegistry, o as createTableFormulaContext, e as createTableFormulaRegistry, c as executeTableFormula, l as formatTableFormulaExpression, i as getTableFormulaById, r as getTableFormulaList, f as validateTableFormulaDependencies };
197
-
198
- //# 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;
@@ -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,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
+ {"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.28.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
  данные строки + упорядоченные зависимости
@@ -181,12 +181,17 @@ const rowData = {
181
181
 
182
182
  ### Зависимости и keys
183
183
 
184
- Dependencies — упорядоченный массив id полей:
184
+ Dependencies — упорядоченный массив аргументов. Строка обозначает id поля, объект — конечную числовую константу:
185
185
 
186
186
  ```ts
187
- 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 }];
188
191
  ```
189
192
 
193
+ `keys: ["planned", { kind: "constant", value: 100 }]` передаёт в `$0` значение поля, а в `$1` число `100`. Поля и константы можно смешивать, повторять и переставлять; константа не становится полем строки. Ноль, отрицательные и дробные числа допустимы. Строковый `"100"` обозначает ID поля, а не число. `NaN` и бесконечности отклоняются validator-ом; при исполнении дают `runtime_error`. Редактор отвечает за разбор пользовательского ввода до передачи числового значения в API.
194
+
190
195
  Позиция является частью контракта:
191
196
 
192
197
  - `0` означает `planned`;
@@ -283,16 +288,18 @@ expressionTemplate: "$0 / $1";
283
288
 
284
289
  ### `formatTableFormulaExpression(expressionTemplate, dependencies)`
285
290
 
286
- Чистая функция подставляет ID зависимостей в позиции `$n` за один проход:
291
+ Чистая функция подставляет ID полей и константы в позиции `$n` за один проход:
287
292
 
288
293
  ```ts
289
294
  import { formatTableFormulaExpression } from "@ryuzaki13/react-foundation-lib/formulas";
290
295
 
291
296
  formatTableFormulaExpression("$0 / $1", ["FIELD_X", "FIELD_Y"]); // "FIELD_X / FIELD_Y"
292
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)"
293
300
  ```
294
301
 
295
- Повторные вхождения заменяются, `$1` и `$10` различаются. Незаданный или пустой ID оставляет исходный маркер; пробелы и специальные символы в ID сохраняются. Подставленные ID не обрабатываются повторно, входной массив не изменяется. Операторы, скобки и остальной текст шаблона не анализируются.
302
+ Повторные вхождения заменяются, `$1` и `$10` различаются. Незаданный, пустой или некорректный аргумент оставляет исходный маркер; пробелы и специальные символы в ID сохраняются. Отрицательное число отображается в скобках, чтобы сохранить смысл выражения. Подставленные ID не обрабатываются повторно, входной массив не изменяется. Операторы, скобки и остальной текст шаблона не анализируются.
296
303
 
297
304
  Пустая строка возвращается без изменений. Host UI самостоятельно выбирает сообщение для отсутствующего или пустого шаблона и отображает результат как текст.
298
305
 
@@ -369,7 +376,7 @@ ctx.key(-1); // undefined
369
376
  ctx.key(1.5); // undefined
370
377
  ```
371
378
 
372
- Допустим только целый неотрицательный index в пределах массива.
379
+ Допустим только целый неотрицательный index в пределах массива. Для константы `key(index)` возвращает `undefined`: у неё нет ID поля, хотя сама позиция считается прочитанной instrumentation.
373
380
 
374
381
  Пустая строка технически может вернуться из `key`, если она была передана в `keys`, но `value` и `num` считают пустой key отсутствующим. Используйте только непустые dependency ids.
375
382
 
@@ -382,7 +389,7 @@ ctx.key(1.5); // undefined
382
389
  ctx.value(1); // "25"
383
390
  ```
384
391
 
385
- Для неправильного индекса, пустого key или отсутствующего свойства возвращается `undefined`.
392
+ Для константы возвращается непосредственно её числовое значение. Для неправильного индекса, пустого key или отсутствующего свойства возвращается `undefined`.
386
393
 
387
394
  Используйте `value`, когда нужно отличать отсутствующее значение от нуля или применять собственный parser:
388
395
 
@@ -426,7 +433,7 @@ context.num(0); // 12.5
426
433
  context.num(1); // 4
427
434
  ```
428
435
 
429
- `keys` копируется при создании context. Изменение исходного массива после вызова не меняет mapping. `rowData` не копируется: context читает переданный объект.
436
+ `keys`, включая значения объектов-констант, копируется при создании context. Изменение исходного массива или объекта константы после вызова не меняет mapping. Некорректная константа приводит к `TypeError` при ручном создании context. `rowData` не копируется: context читает переданный объект.
430
437
 
431
438
  ### Instrumentation
432
439
 
@@ -766,11 +773,11 @@ type CompileResult = { ok: true; execute: TableFormulaCompiledExecutor } | { ok:
766
773
  Compiler:
767
774
 
768
775
  - находит formula definition один раз;
769
- - копирует массив `keys`;
776
+ - копирует массив `keys` и значения объектов-констант;
770
777
  - создаёт один context object;
771
778
  - возвращает executor `(rowData) => result`.
772
779
 
773
- Изменение исходного массива keys после compile не влияет на executor. Замена активного registry также не меняет уже найденную formula function.
780
+ Изменение исходного массива keys или объекта константы после compile не влияет на executor. Замена активного registry также не меняет уже найденную formula function. При некорректной константе возвращается executor с прежней ошибкой `runtime_error`; форма compile-result не расширяется.
774
781
 
775
782
  ### Что происходит при каждом execute
776
783
 
@@ -840,7 +847,7 @@ interface TableFormulaDependenciesValidationResult {
840
847
  Validator:
841
848
 
842
849
  1. ищет formula в активном registry;
843
- 2. проверяет, что каждый dependency id входит в `availableColumnIds`;
850
+ 2. проверяет, что каждый dependency id входит в `availableColumnIds`, а константа содержит конечное число;
844
851
  3. запускает formula на положительных synthetic values;
845
852
  4. запускает formula на отрицательных synthetic values;
846
853
  5. через instrumentation собирает прочитанные indexes;
@@ -855,6 +862,7 @@ Validator:
855
862
  | ------------------------------- | ----------------------------------------------------------- |
856
863
  | `formula_not_found` | Formula id отсутствует в registry |
857
864
  | `dependency_not_available` | Dependency id отсутствует среди доступных колонок |
865
+ | `invalid_constant` | Константа не содержит конечное числовое значение |
858
866
  | `dependency_index_out_of_range` | Formula прочитала index, для которого dependency не передан |
859
867
 
860
868
  ### Warnings
@@ -873,7 +881,7 @@ validation.usage.usedDependencyIds; // например ["planned", "actual"]
873
881
  validation.usage.requiredDependencyCount; // 2
874
882
  ```
875
883
 
876
- `requiredDependencyCount` равен `максимальный использованный index + 1`.
884
+ `requiredDependencyCount` равен `максимальный использованный index + 1`. Константы учитываются в indexes и требуемом количестве аргументов, но отсутствуют в `usedDependencyIds`. Synthetic passes меняют только значения полей; значения констант остаются заданными в конфигурации.
877
885
 
878
886
  Это полезно редактору:
879
887
 
@@ -884,7 +892,7 @@ validation.usage.requiredDependencyCount; // 2
884
892
 
885
893
  ### `availableColumnIds` нужно передавать явно
886
894
 
887
- По умолчанию список доступных колонок пуст. Если передать dependencies, но не передать `availableColumnIds`, каждый dependency будет считаться недоступным:
895
+ По умолчанию список доступных колонок пуст. Если передать аргументы-поля, но не передать `availableColumnIds`, каждое поле будет считаться недоступным. Константы не проверяются на присутствие в этом списке:
888
896
 
889
897
  ```ts
890
898
  validateTableFormulaDependencies({
@@ -1217,7 +1225,7 @@ Promise не является конечным number и даст `invalid_resul
1217
1225
 
1218
1226
  ### Хранить function в JSON
1219
1227
 
1220
- Сохраняйте только `formulaId` и dependency ids. Function определяется доверенным application bundle.
1228
+ Сохраняйте только `formulaId` и сериализуемые аргументы: dependency ids и объекты числовых констант. Function определяется доверенным application bundle.
1221
1229
 
1222
1230
  ### Путать table formula и row-based formatter
1223
1231
 
@@ -1244,6 +1252,7 @@ Promise не является конечным number и даст `invalid_resul
1244
1252
  | Тип | Назначение |
1245
1253
  | ------------------------------------------ | ------------------------------------------ |
1246
1254
  | `TableFormulaRowData` | Строка `Record<string, unknown>` |
1255
+ | `TableFormulaDependency` | ID поля либо объект конечной числовой константы |
1247
1256
  | `TableFormulaContext` | Методы `key`, `value`, `num` |
1248
1257
  | `TableFormulaFn` | Синхронная function `context → number` |
1249
1258
  | `TableFormulaDefinition` | Metadata и function одной formula |
@@ -1270,6 +1279,7 @@ Promise не является конечным number и даст `invalid_resul
1270
1279
  | `formula_not_found` | error |
1271
1280
  | `dependency_index_out_of_range` | error |
1272
1281
  | `dependency_not_available` | error |
1282
+ | `invalid_constant` | error |
1273
1283
  | `unused_dependencies` | warning |
1274
1284
  | `formula_does_not_use_dependencies` | warning |
1275
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/formatTableFormulaExpression.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","/**\n * Подставляет ID упорядоченных зависимостей в шаблон превью формулы.\n *\n * Незаданные позиции остаются в виде $n, чтобы редактор мог показывать неполный\n * черновик. Подстановка однопроходная: ID сохраняются буквально, а полученный\n * текст предназначен только для отображения и никогда не исполняется.\n */\nexport function formatTableFormulaExpression(expressionTemplate: string, dependencies: readonly string[]): string {\n\treturn expressionTemplate.replace(/\\$([0-9]+)/g, (placeholder: string, index: string) => {\n\t\tconst dependencyId = dependencies[Number(index)];\n\t\treturn dependencyId === undefined || dependencyId === \"\" ? placeholder : dependencyId;\n\t});\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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"}