@bilig/formula 0.1.74 → 0.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export * from "./compiler.js";
12
12
  export * from "./js-evaluator.js";
13
13
  export * from "./program-arena.js";
14
14
  export * from "./runtime-values.js";
15
+ export * from "./formula-template-key.js";
15
16
  export * from "./translation.js";
16
17
  export * from "./compatibility.js";
17
18
  export * from "./builtin-capabilities.js";
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export * from "./compiler.js";
12
12
  export * from "./js-evaluator.js";
13
13
  export * from "./program-arena.js";
14
14
  export * from "./runtime-values.js";
15
+ export * from "./formula-template-key.js";
15
16
  export * from "./translation.js";
16
17
  export * from "./compatibility.js";
17
18
  export * from "./builtin-capabilities.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAGxB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAGxB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { builtinJsSpecialNames, builtinWasmEnabledNames, } from "./builtin-capabilities.js";
2
- import { getBuiltin, hasBuiltin } from "./builtins.js";
2
+ import { formulaInventory } from "./generated/formula-inventory.js";
3
+ import { getBuiltin } from "./builtins.js";
3
4
  import { lookupBuiltins } from "./builtins/lookup.js";
4
5
  import { placeholderBuiltinNames } from "./builtins/placeholder.js";
5
6
  const lookupBuiltinNameSet = new Set(Object.keys(lookupBuiltins).map(normalizeFormulaName));
6
7
  const placeholderBuiltinNameSet = new Set(placeholderBuiltinNames.map(normalizeFormulaName));
8
+ const formulaInventoryByName = new Map(formulaInventory.map((entry) => [normalizeFormulaName(entry.name), entry]));
7
9
  const runtimeAliasByCanonicalName = new Map([
8
10
  ["AVERAGE", "AVG"],
9
11
  ["USE.THE.COUNTIF", "COUNTIF"],
@@ -26,14 +28,24 @@ export function isPlaceholderBuiltinRuntime(name) {
26
28
  return getFormulaRuntimeLookupNames(name).some((entry) => placeholderBuiltinNameSet.has(entry));
27
29
  }
28
30
  export function getFormulaRuntimeStatus(name) {
31
+ const fromInventory = formulaInventoryByName.get(normalizeFormulaName(name));
32
+ if (fromInventory) {
33
+ return fromInventory.runtimeStatus;
34
+ }
29
35
  if (isPlaceholderBuiltinRuntime(name)) {
30
36
  return "placeholder";
31
37
  }
32
- return getFormulaRuntimeLookupNames(name).some((entry) => hasBuiltin(entry))
38
+ return getFormulaRuntimeLookupNames(name).some((entry) => getBuiltin(entry) !== undefined ||
39
+ lookupBuiltinNameSet.has(entry) ||
40
+ builtinJsSpecialNames.has(entry))
33
41
  ? "implemented"
34
42
  : "missing";
35
43
  }
36
44
  export function getFormulaRuntimeJsStatus(name) {
45
+ const fromInventory = formulaInventoryByName.get(normalizeFormulaName(name));
46
+ if (fromInventory) {
47
+ return fromInventory.jsStatus;
48
+ }
37
49
  const runtimeStatus = getFormulaRuntimeStatus(name);
38
50
  if (runtimeStatus !== "implemented") {
39
51
  return runtimeStatus;
@@ -43,6 +55,10 @@ export function getFormulaRuntimeJsStatus(name) {
43
55
  : "implemented";
44
56
  }
45
57
  export function getFormulaRuntimeWasmStatus(name) {
58
+ const fromInventory = formulaInventoryByName.get(normalizeFormulaName(name));
59
+ if (fromInventory) {
60
+ return fromInventory.wasmStatus;
61
+ }
46
62
  return getFormulaRuntimeLookupNames(name).some((entry) => builtinWasmEnabledNames.has(entry))
47
63
  ? "production"
48
64
  : "not-started";
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-inventory.js","sourceRoot":"","sources":["../src/runtime-inventory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-inventory.js","sourceRoot":"","sources":["../src/runtime-inventory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { FormulaNode } from "./ast.js";
2
+ import { type CompiledFormula } from "./compiler.js";
2
3
  export type StructuralAxisKind = "row" | "column";
3
4
  export type StructuralAxisTransform = {
4
5
  kind: "insert";
@@ -18,7 +19,22 @@ export type StructuralAxisTransform = {
18
19
  target: number;
19
20
  };
20
21
  export declare function translateFormulaReferences(source: string, rowDelta: number, colDelta: number): string;
22
+ export declare function buildRelativeFormulaTemplateKey(source: string, ownerRow: number, ownerCol: number): string;
23
+ export declare function buildRelativeFormulaTemplateKeyFromAst(node: FormulaNode, ownerRow: number, ownerCol: number): string;
24
+ export interface CompiledFormulaTranslationResult {
25
+ source: string;
26
+ compiled: CompiledFormula;
27
+ }
28
+ export declare function canTranslateCompiledFormulaWithoutAst(compiled: CompiledFormula): boolean;
29
+ export declare function translateCompiledFormulaWithoutAst(compiled: CompiledFormula, rowDelta: number, colDelta: number, sourceOverride?: string): CompiledFormulaTranslationResult;
30
+ export declare function translateCompiledFormula(compiled: CompiledFormula, rowDelta: number, colDelta: number, sourceOverride?: string): CompiledFormulaTranslationResult;
21
31
  export declare function rewriteFormulaForStructuralTransform(source: string, ownerSheetName: string, targetSheetName: string, transform: StructuralAxisTransform): string;
32
+ export interface StructuralCompiledFormulaRewriteResult {
33
+ source: string;
34
+ compiled: CompiledFormula;
35
+ reusedProgram: boolean;
36
+ }
37
+ export declare function rewriteCompiledFormulaForStructuralTransform(compiled: CompiledFormula, ownerSheetName: string, targetSheetName: string, transform: StructuralAxisTransform): StructuralCompiledFormulaRewriteResult;
22
38
  export declare function renameFormulaSheetReferences(source: string, oldSheetName: string, newSheetName: string): string;
23
39
  export declare function rewriteAddressForStructuralTransform(address: string, transform: StructuralAxisTransform): string | undefined;
24
40
  export declare function rewriteRangeForStructuralTransform(startAddress: string, endAddress: string, transform: StructuralAxisTransform): {