@bilig/formula 0.1.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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/addressing.d.ts +66 -0
  4. package/dist/addressing.js +179 -0
  5. package/dist/addressing.js.map +1 -0
  6. package/dist/ast.d.ts +74 -0
  7. package/dist/ast.js +2 -0
  8. package/dist/ast.js.map +1 -0
  9. package/dist/binder.d.ts +13 -0
  10. package/dist/binder.js +1700 -0
  11. package/dist/binder.js.map +1 -0
  12. package/dist/builtin-capabilities.d.ts +19 -0
  13. package/dist/builtin-capabilities.js +861 -0
  14. package/dist/builtin-capabilities.js.map +1 -0
  15. package/dist/builtins/complex.d.ts +10 -0
  16. package/dist/builtins/complex.js +407 -0
  17. package/dist/builtins/complex.js.map +1 -0
  18. package/dist/builtins/convert.d.ts +3 -0
  19. package/dist/builtins/convert.js +362 -0
  20. package/dist/builtins/convert.js.map +1 -0
  21. package/dist/builtins/datetime.d.ts +23 -0
  22. package/dist/builtins/datetime.js +1096 -0
  23. package/dist/builtins/datetime.js.map +1 -0
  24. package/dist/builtins/distribution-builtins.d.ts +16 -0
  25. package/dist/builtins/distribution-builtins.js +517 -0
  26. package/dist/builtins/distribution-builtins.js.map +1 -0
  27. package/dist/builtins/distributions.d.ts +34 -0
  28. package/dist/builtins/distributions.js +722 -0
  29. package/dist/builtins/distributions.js.map +1 -0
  30. package/dist/builtins/financial-builtins.d.ts +16 -0
  31. package/dist/builtins/financial-builtins.js +324 -0
  32. package/dist/builtins/financial-builtins.js.map +1 -0
  33. package/dist/builtins/financial.d.ts +11 -0
  34. package/dist/builtins/financial.js +241 -0
  35. package/dist/builtins/financial.js.map +1 -0
  36. package/dist/builtins/fixed-income-builtins.d.ts +14 -0
  37. package/dist/builtins/fixed-income-builtins.js +598 -0
  38. package/dist/builtins/fixed-income-builtins.js.map +1 -0
  39. package/dist/builtins/fixed-income.d.ts +42 -0
  40. package/dist/builtins/fixed-income.js +668 -0
  41. package/dist/builtins/fixed-income.js.map +1 -0
  42. package/dist/builtins/formatting.d.ts +8 -0
  43. package/dist/builtins/formatting.js +53 -0
  44. package/dist/builtins/formatting.js.map +1 -0
  45. package/dist/builtins/logical.d.ts +4 -0
  46. package/dist/builtins/logical.js +258 -0
  47. package/dist/builtins/logical.js.map +1 -0
  48. package/dist/builtins/lookup-array-shape-builtins.d.ts +21 -0
  49. package/dist/builtins/lookup-array-shape-builtins.js +517 -0
  50. package/dist/builtins/lookup-array-shape-builtins.js.map +1 -0
  51. package/dist/builtins/lookup-criteria-builtins.d.ts +16 -0
  52. package/dist/builtins/lookup-criteria-builtins.js +216 -0
  53. package/dist/builtins/lookup-criteria-builtins.js.map +1 -0
  54. package/dist/builtins/lookup-database-builtins.d.ts +17 -0
  55. package/dist/builtins/lookup-database-builtins.js +294 -0
  56. package/dist/builtins/lookup-database-builtins.js.map +1 -0
  57. package/dist/builtins/lookup-financial-builtins.d.ts +11 -0
  58. package/dist/builtins/lookup-financial-builtins.js +291 -0
  59. package/dist/builtins/lookup-financial-builtins.js.map +1 -0
  60. package/dist/builtins/lookup-hypothesis-builtins.d.ts +11 -0
  61. package/dist/builtins/lookup-hypothesis-builtins.js +57 -0
  62. package/dist/builtins/lookup-hypothesis-builtins.js.map +1 -0
  63. package/dist/builtins/lookup-matrix-builtins.d.ts +17 -0
  64. package/dist/builtins/lookup-matrix-builtins.js +218 -0
  65. package/dist/builtins/lookup-matrix-builtins.js.map +1 -0
  66. package/dist/builtins/lookup-order-statistics-builtins.d.ts +18 -0
  67. package/dist/builtins/lookup-order-statistics-builtins.js +575 -0
  68. package/dist/builtins/lookup-order-statistics-builtins.js.map +1 -0
  69. package/dist/builtins/lookup-reference-builtins.d.ts +18 -0
  70. package/dist/builtins/lookup-reference-builtins.js +300 -0
  71. package/dist/builtins/lookup-reference-builtins.js.map +1 -0
  72. package/dist/builtins/lookup-regression-builtins.d.ts +12 -0
  73. package/dist/builtins/lookup-regression-builtins.js +511 -0
  74. package/dist/builtins/lookup-regression-builtins.js.map +1 -0
  75. package/dist/builtins/lookup-sort-filter-builtins.d.ts +20 -0
  76. package/dist/builtins/lookup-sort-filter-builtins.js +382 -0
  77. package/dist/builtins/lookup-sort-filter-builtins.js.map +1 -0
  78. package/dist/builtins/lookup.d.ts +13 -0
  79. package/dist/builtins/lookup.js +867 -0
  80. package/dist/builtins/lookup.js.map +1 -0
  81. package/dist/builtins/math-builtins.d.ts +31 -0
  82. package/dist/builtins/math-builtins.js +420 -0
  83. package/dist/builtins/math-builtins.js.map +1 -0
  84. package/dist/builtins/numeric.d.ts +30 -0
  85. package/dist/builtins/numeric.js +150 -0
  86. package/dist/builtins/numeric.js.map +1 -0
  87. package/dist/builtins/placeholder.d.ts +9 -0
  88. package/dist/builtins/placeholder.js +540 -0
  89. package/dist/builtins/placeholder.js.map +1 -0
  90. package/dist/builtins/radix.d.ts +12 -0
  91. package/dist/builtins/radix.js +220 -0
  92. package/dist/builtins/radix.js.map +1 -0
  93. package/dist/builtins/statistical-builtins.d.ts +13 -0
  94. package/dist/builtins/statistical-builtins.js +240 -0
  95. package/dist/builtins/statistical-builtins.js.map +1 -0
  96. package/dist/builtins/statistics.d.ts +8 -0
  97. package/dist/builtins/statistics.js +74 -0
  98. package/dist/builtins/statistics.js.map +1 -0
  99. package/dist/builtins/text.d.ts +5 -0
  100. package/dist/builtins/text.js +1879 -0
  101. package/dist/builtins/text.js.map +1 -0
  102. package/dist/builtins.d.ts +8 -0
  103. package/dist/builtins.js +695 -0
  104. package/dist/builtins.js.map +1 -0
  105. package/dist/compatibility.d.ts +25 -0
  106. package/dist/compatibility.js +498 -0
  107. package/dist/compatibility.js.map +1 -0
  108. package/dist/compiler.d.ts +29 -0
  109. package/dist/compiler.js +474 -0
  110. package/dist/compiler.js.map +1 -0
  111. package/dist/external-function-adapter.d.ts +32 -0
  112. package/dist/external-function-adapter.js +42 -0
  113. package/dist/external-function-adapter.js.map +1 -0
  114. package/dist/generated/formula-inventory.d.ts +6839 -0
  115. package/dist/generated/formula-inventory.js +7368 -0
  116. package/dist/generated/formula-inventory.js.map +1 -0
  117. package/dist/group-pivot-evaluator.d.ts +28 -0
  118. package/dist/group-pivot-evaluator.js +435 -0
  119. package/dist/group-pivot-evaluator.js.map +1 -0
  120. package/dist/index.d.ts +16 -0
  121. package/dist/index.js +17 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/js-evaluator.d.ts +107 -0
  124. package/dist/js-evaluator.js +1651 -0
  125. package/dist/js-evaluator.js.map +1 -0
  126. package/dist/lexer.d.ts +6 -0
  127. package/dist/lexer.js +115 -0
  128. package/dist/lexer.js.map +1 -0
  129. package/dist/optimizer.d.ts +2 -0
  130. package/dist/optimizer.js +353 -0
  131. package/dist/optimizer.js.map +1 -0
  132. package/dist/parser.d.ts +2 -0
  133. package/dist/parser.js +352 -0
  134. package/dist/parser.js.map +1 -0
  135. package/dist/program-arena.d.ts +22 -0
  136. package/dist/program-arena.js +67 -0
  137. package/dist/program-arena.js.map +1 -0
  138. package/dist/runtime-values.d.ts +17 -0
  139. package/dist/runtime-values.js +11 -0
  140. package/dist/runtime-values.js.map +1 -0
  141. package/dist/special-call-rewrites.d.ts +2 -0
  142. package/dist/special-call-rewrites.js +74 -0
  143. package/dist/special-call-rewrites.js.map +1 -0
  144. package/dist/translation.d.ts +28 -0
  145. package/dist/translation.js +569 -0
  146. package/dist/translation.js.map +1 -0
  147. package/package.json +53 -0
@@ -0,0 +1,241 @@
1
+ export function futureValue(rate, periods, payment, present, type) {
2
+ if (rate === 0) {
3
+ return -(present + payment * periods);
4
+ }
5
+ const growth = (1 + rate) ** periods;
6
+ return -(present * growth + payment * (1 + rate * type) * ((growth - 1) / rate));
7
+ }
8
+ export function presentValue(rate, periods, payment, future, type) {
9
+ if (rate === 0) {
10
+ return -(future + payment * periods);
11
+ }
12
+ const growth = (1 + rate) ** periods;
13
+ return -(future + payment * (1 + rate * type) * ((growth - 1) / rate)) / growth;
14
+ }
15
+ export function periodicPayment(rate, periods, present, future, type) {
16
+ if (periods <= 0) {
17
+ return undefined;
18
+ }
19
+ if (rate === 0) {
20
+ return -(future + present) / periods;
21
+ }
22
+ const growth = (1 + rate) ** periods;
23
+ const denominator = (1 + rate * type) * (growth - 1);
24
+ if (denominator === 0) {
25
+ return undefined;
26
+ }
27
+ return (-rate * (future + present * growth)) / denominator;
28
+ }
29
+ export function totalPeriods(rate, payment, present, future, type) {
30
+ if (payment === 0 && rate === 0) {
31
+ return undefined;
32
+ }
33
+ if (rate === 0) {
34
+ return payment === 0 ? undefined : -(future + present) / payment;
35
+ }
36
+ const adjustedPayment = payment * (1 + rate * type);
37
+ const numerator = adjustedPayment - future * rate;
38
+ const denominator = adjustedPayment + present * rate;
39
+ if (numerator === 0 || denominator === 0 || numerator / denominator <= 0) {
40
+ return undefined;
41
+ }
42
+ return Math.log(numerator / denominator) / Math.log(1 + rate);
43
+ }
44
+ function annuityRateEquation(rate, periods, payment, present, future, type) {
45
+ if (Math.abs(rate) < 1e-12) {
46
+ return future + present + payment * periods;
47
+ }
48
+ const growth = (1 + rate) ** periods;
49
+ return future + present * growth + payment * (1 + rate * type) * ((growth - 1) / rate);
50
+ }
51
+ export function solveRate(periods, payment, present, future, type, guess) {
52
+ if (!Number.isFinite(periods) || periods <= 0) {
53
+ return undefined;
54
+ }
55
+ if (Math.abs(annuityRateEquation(0, periods, payment, present, future, type)) < 1e-7) {
56
+ return 0;
57
+ }
58
+ let previousRate = Number.isFinite(guess) ? guess : 0.1;
59
+ if (previousRate <= -0.999999999) {
60
+ previousRate = -0.9;
61
+ }
62
+ let currentRate = previousRate === 0 ? 0.1 : previousRate * 1.1;
63
+ if (currentRate <= -0.999999999) {
64
+ currentRate = -0.8;
65
+ }
66
+ let previousError = annuityRateEquation(previousRate, periods, payment, present, future, type);
67
+ let currentError = annuityRateEquation(currentRate, periods, payment, present, future, type);
68
+ for (let iteration = 0; iteration < 50; iteration += 1) {
69
+ if (!Number.isFinite(currentError)) {
70
+ return undefined;
71
+ }
72
+ if (Math.abs(currentError) < 1e-7) {
73
+ return currentRate;
74
+ }
75
+ let nextRate;
76
+ if (!Number.isFinite(previousError) ||
77
+ !Number.isFinite(currentError) ||
78
+ currentError === previousError) {
79
+ const epsilon = Math.max(1e-7, Math.abs(currentRate) * 1e-7);
80
+ const forward = annuityRateEquation(currentRate + epsilon, periods, payment, present, future, type);
81
+ const backward = annuityRateEquation(currentRate - epsilon, periods, payment, present, future, type);
82
+ const derivative = (forward - backward) / (2 * epsilon);
83
+ if (!Number.isFinite(derivative) || derivative === 0) {
84
+ return undefined;
85
+ }
86
+ nextRate = currentRate - currentError / derivative;
87
+ }
88
+ else {
89
+ nextRate =
90
+ currentRate -
91
+ (currentError * (currentRate - previousRate)) / (currentError - previousError);
92
+ }
93
+ if (!Number.isFinite(nextRate) || nextRate <= -0.999999999) {
94
+ return undefined;
95
+ }
96
+ previousRate = currentRate;
97
+ previousError = currentError;
98
+ currentRate = nextRate;
99
+ currentError = annuityRateEquation(currentRate, periods, payment, present, future, type);
100
+ }
101
+ return Math.abs(currentError) < 1e-6 ? currentRate : undefined;
102
+ }
103
+ function fixedDecliningBalanceRate(cost, salvage, life) {
104
+ if (!Number.isFinite(cost) ||
105
+ !Number.isFinite(salvage) ||
106
+ !Number.isFinite(life) ||
107
+ cost <= 0 ||
108
+ salvage < 0 ||
109
+ life <= 0) {
110
+ return undefined;
111
+ }
112
+ const ratio = salvage / cost;
113
+ if (ratio < 0) {
114
+ return undefined;
115
+ }
116
+ return Math.round((1 - ratio ** (1 / life)) * 1000) / 1000;
117
+ }
118
+ export function dbDepreciation(cost, salvage, life, period, month) {
119
+ const rate = fixedDecliningBalanceRate(cost, salvage, life);
120
+ if (rate === undefined || month < 1 || month > 12 || period < 1 || period > life + 1) {
121
+ return undefined;
122
+ }
123
+ let bookValue = cost;
124
+ let depreciation = 0;
125
+ for (let currentPeriod = 1; currentPeriod <= period; currentPeriod += 1) {
126
+ const raw = currentPeriod === 1
127
+ ? bookValue * rate * (month / 12)
128
+ : currentPeriod === Math.floor(life) + 1
129
+ ? bookValue * rate * ((12 - month) / 12)
130
+ : bookValue * rate;
131
+ depreciation = Math.min(Math.max(raw, 0), Math.max(0, bookValue - salvage));
132
+ bookValue -= depreciation;
133
+ }
134
+ return depreciation;
135
+ }
136
+ function ddbPeriodDepreciation(bookValue, salvage, life, factor, remainingLife, noSwitch) {
137
+ const declining = (bookValue * factor) / life;
138
+ const straightLine = remainingLife <= 0 ? 0 : (bookValue - salvage) / remainingLife;
139
+ const base = noSwitch ? declining : Math.max(declining, straightLine);
140
+ return Math.min(Math.max(base, 0), Math.max(0, bookValue - salvage));
141
+ }
142
+ export function ddbDepreciation(cost, salvage, life, period, factor) {
143
+ if (!Number.isFinite(cost) ||
144
+ !Number.isFinite(salvage) ||
145
+ !Number.isFinite(life) ||
146
+ !Number.isFinite(period) ||
147
+ !Number.isFinite(factor) ||
148
+ cost <= 0 ||
149
+ salvage < 0 ||
150
+ life <= 0 ||
151
+ period <= 0 ||
152
+ factor <= 0) {
153
+ return undefined;
154
+ }
155
+ let bookValue = cost;
156
+ let current = 0;
157
+ let depreciation = 0;
158
+ while (current < period && bookValue > salvage) {
159
+ const segment = Math.min(1, period - current);
160
+ const full = Math.min(Math.max((bookValue * factor) / life, 0), Math.max(0, bookValue - salvage));
161
+ depreciation = Math.min(full * segment, Math.max(0, bookValue - salvage));
162
+ bookValue -= depreciation;
163
+ current += segment;
164
+ }
165
+ return depreciation;
166
+ }
167
+ export function vdbDepreciation(cost, salvage, life, startPeriod, endPeriod, factor, noSwitch) {
168
+ if (!Number.isFinite(cost) ||
169
+ !Number.isFinite(salvage) ||
170
+ !Number.isFinite(life) ||
171
+ !Number.isFinite(startPeriod) ||
172
+ !Number.isFinite(endPeriod) ||
173
+ !Number.isFinite(factor) ||
174
+ cost <= 0 ||
175
+ salvage < 0 ||
176
+ life <= 0 ||
177
+ startPeriod < 0 ||
178
+ endPeriod < startPeriod ||
179
+ factor <= 0) {
180
+ return undefined;
181
+ }
182
+ let bookValue = cost;
183
+ let total = 0;
184
+ for (let current = 0; current < endPeriod && bookValue > salvage; current += 1) {
185
+ const overlap = Math.max(0, Math.min(endPeriod, current + 1) - Math.max(startPeriod, current));
186
+ if (overlap <= 0) {
187
+ const full = ddbPeriodDepreciation(bookValue, salvage, life, factor, life - current, noSwitch);
188
+ bookValue -= full;
189
+ continue;
190
+ }
191
+ const full = ddbPeriodDepreciation(bookValue, salvage, life, factor, life - current, noSwitch);
192
+ const applied = Math.min(full * overlap, Math.max(0, bookValue - salvage));
193
+ total += applied;
194
+ bookValue -= full;
195
+ }
196
+ return total;
197
+ }
198
+ export function interestPayment(rate, period, periods, present, future, type) {
199
+ if (period < 1 || period > periods) {
200
+ return undefined;
201
+ }
202
+ const payment = periodicPayment(rate, periods, present, future, type);
203
+ if (payment === undefined) {
204
+ return undefined;
205
+ }
206
+ if (type === 1 && period === 1) {
207
+ return 0;
208
+ }
209
+ const balance = futureValue(rate, type === 1 ? period - 2 : period - 1, payment, present, type);
210
+ return balance * rate;
211
+ }
212
+ export function principalPayment(rate, period, periods, present, future, type) {
213
+ const payment = periodicPayment(rate, periods, present, future, type);
214
+ const interest = interestPayment(rate, period, periods, present, future, type);
215
+ if (payment === undefined || interest === undefined) {
216
+ return undefined;
217
+ }
218
+ return payment - interest;
219
+ }
220
+ export function cumulativePeriodicPayment(rate, periods, present, startPeriod, endPeriod, type, principalOnly) {
221
+ if (rate <= 0 ||
222
+ periods <= 0 ||
223
+ present <= 0 ||
224
+ startPeriod < 1 ||
225
+ endPeriod < startPeriod ||
226
+ endPeriod > periods) {
227
+ return undefined;
228
+ }
229
+ let total = 0;
230
+ for (let period = startPeriod; period <= endPeriod; period += 1) {
231
+ const value = principalOnly
232
+ ? principalPayment(rate, period, periods, present, 0, type)
233
+ : interestPayment(rate, period, periods, present, 0, type);
234
+ if (value === undefined) {
235
+ return undefined;
236
+ }
237
+ total += value;
238
+ }
239
+ return total;
240
+ }
241
+ //# sourceMappingURL=financial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financial.js","sourceRoot":"","sources":["../../src/builtins/financial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CellValue } from "@bilig/protocol";
2
+ import type { EvaluationResult } from "../runtime-values.js";
3
+ type Builtin = (...args: CellValue[]) => EvaluationResult;
4
+ interface FixedIncomeBuiltinDeps {
5
+ toNumber: (value: CellValue) => number | undefined;
6
+ coerceBoolean: (value: CellValue | undefined, fallback: boolean) => boolean | undefined;
7
+ coerceDateSerial: (value: CellValue | undefined) => number | undefined;
8
+ coerceNumber: (value: CellValue | undefined, fallback: number) => number | undefined;
9
+ integerValue: (value: CellValue | undefined, fallback?: number) => number | undefined;
10
+ numberResult: (value: number) => EvaluationResult;
11
+ valueError: () => EvaluationResult;
12
+ }
13
+ export declare function createFixedIncomeBuiltins({ toNumber, coerceBoolean, coerceDateSerial, coerceNumber, integerValue, numberResult, valueError, }: FixedIncomeBuiltinDeps): Record<string, Builtin>;
14
+ export {};