@bilig/formula 0.1.0 → 0.1.3

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 (30) hide show
  1. package/dist/builtins/lookup-hypothesis-builtins.d.ts +4 -5
  2. package/dist/builtins/lookup-hypothesis-builtins.js +393 -10
  3. package/dist/builtins/lookup-hypothesis-builtins.js.map +1 -1
  4. package/dist/builtins/lookup.js +3 -387
  5. package/dist/builtins/lookup.js.map +1 -1
  6. package/dist/builtins/placeholder.d.ts +2 -2
  7. package/dist/builtins/text-core-builtins.d.ts +12 -0
  8. package/dist/builtins/text-core-builtins.js +409 -0
  9. package/dist/builtins/text-core-builtins.js.map +1 -0
  10. package/dist/builtins/text-format-builtins.d.ts +14 -0
  11. package/dist/builtins/text-format-builtins.js +537 -0
  12. package/dist/builtins/text-format-builtins.js.map +1 -0
  13. package/dist/builtins/text-search-builtins.d.ts +21 -0
  14. package/dist/builtins/text-search-builtins.js +469 -0
  15. package/dist/builtins/text-search-builtins.js.map +1 -0
  16. package/dist/builtins/text.js +41 -1368
  17. package/dist/builtins/text.js.map +1 -1
  18. package/dist/js-evaluator-array-special-calls.d.ts +28 -0
  19. package/dist/js-evaluator-array-special-calls.js +340 -0
  20. package/dist/js-evaluator-array-special-calls.js.map +1 -0
  21. package/dist/js-evaluator-context-special-calls.d.ts +24 -0
  22. package/dist/js-evaluator-context-special-calls.js +156 -0
  23. package/dist/js-evaluator-context-special-calls.js.map +1 -0
  24. package/dist/js-evaluator-types.d.ts +117 -0
  25. package/dist/js-evaluator-types.js +2 -0
  26. package/dist/js-evaluator-types.js.map +1 -0
  27. package/dist/js-evaluator.d.ts +3 -100
  28. package/dist/js-evaluator.js +42 -492
  29. package/dist/js-evaluator.js.map +1 -1
  30. package/package.json +6 -6
@@ -0,0 +1,537 @@
1
+ import { ErrorCode, ValueTag } from "@bilig/protocol";
2
+ import { excelSerialToDateParts } from "./datetime.js";
3
+ function valueToTextResult(deps, value, format) {
4
+ if (format !== 0 && format !== 1) {
5
+ return deps.error(ErrorCode.Value);
6
+ }
7
+ switch (value.tag) {
8
+ case ValueTag.Empty:
9
+ return deps.stringResult("");
10
+ case ValueTag.Number:
11
+ return deps.stringResult(String(value.value));
12
+ case ValueTag.Boolean:
13
+ return deps.stringResult(value.value ? "TRUE" : "FALSE");
14
+ case ValueTag.String:
15
+ return deps.stringResult(format === 1 ? JSON.stringify(value.value) : value.value);
16
+ case ValueTag.Error: {
17
+ const label = value.code === ErrorCode.Div0
18
+ ? "#DIV/0!"
19
+ : value.code === ErrorCode.Ref
20
+ ? "#REF!"
21
+ : value.code === ErrorCode.Value
22
+ ? "#VALUE!"
23
+ : value.code === ErrorCode.Name
24
+ ? "#NAME?"
25
+ : value.code === ErrorCode.NA
26
+ ? "#N/A"
27
+ : value.code === ErrorCode.Cycle
28
+ ? "#CYCLE!"
29
+ : value.code === ErrorCode.Spill
30
+ ? "#SPILL!"
31
+ : value.code === ErrorCode.Blocked
32
+ ? "#BLOCKED!"
33
+ : "#ERROR!";
34
+ return deps.stringResult(label);
35
+ }
36
+ }
37
+ }
38
+ const shortMonthNames = [
39
+ "Jan",
40
+ "Feb",
41
+ "Mar",
42
+ "Apr",
43
+ "May",
44
+ "Jun",
45
+ "Jul",
46
+ "Aug",
47
+ "Sep",
48
+ "Oct",
49
+ "Nov",
50
+ "Dec",
51
+ ];
52
+ const fullMonthNames = [
53
+ "January",
54
+ "February",
55
+ "March",
56
+ "April",
57
+ "May",
58
+ "June",
59
+ "July",
60
+ "August",
61
+ "September",
62
+ "October",
63
+ "November",
64
+ "December",
65
+ ];
66
+ const shortWeekdayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
67
+ const fullWeekdayNames = [
68
+ "Sunday",
69
+ "Monday",
70
+ "Tuesday",
71
+ "Wednesday",
72
+ "Thursday",
73
+ "Friday",
74
+ "Saturday",
75
+ ];
76
+ function splitFormatSections(format) {
77
+ const sections = [];
78
+ let current = "";
79
+ let inQuotes = false;
80
+ let bracketDepth = 0;
81
+ let escaped = false;
82
+ for (let index = 0; index < format.length; index += 1) {
83
+ const char = format[index];
84
+ if (escaped) {
85
+ current += char;
86
+ escaped = false;
87
+ continue;
88
+ }
89
+ if (char === "\\") {
90
+ current += char;
91
+ escaped = true;
92
+ continue;
93
+ }
94
+ if (char === '"') {
95
+ current += char;
96
+ inQuotes = !inQuotes;
97
+ continue;
98
+ }
99
+ if (!inQuotes && char === "[") {
100
+ bracketDepth += 1;
101
+ current += char;
102
+ continue;
103
+ }
104
+ if (!inQuotes && char === "]" && bracketDepth > 0) {
105
+ bracketDepth -= 1;
106
+ current += char;
107
+ continue;
108
+ }
109
+ if (!inQuotes && bracketDepth === 0 && char === ";") {
110
+ sections.push(current);
111
+ current = "";
112
+ continue;
113
+ }
114
+ current += char;
115
+ }
116
+ sections.push(current);
117
+ return sections;
118
+ }
119
+ function stripFormatDecorations(section) {
120
+ let output = "";
121
+ let inQuotes = false;
122
+ for (let index = 0; index < section.length; index += 1) {
123
+ const char = section[index];
124
+ if (inQuotes) {
125
+ if (char === '"') {
126
+ inQuotes = false;
127
+ }
128
+ else {
129
+ output += char;
130
+ }
131
+ continue;
132
+ }
133
+ if (char === '"') {
134
+ inQuotes = true;
135
+ continue;
136
+ }
137
+ if (char === "\\") {
138
+ output += section[index + 1] ?? "";
139
+ index += 1;
140
+ continue;
141
+ }
142
+ if (char === "_") {
143
+ output += " ";
144
+ index += 1;
145
+ continue;
146
+ }
147
+ if (char === "*") {
148
+ index += 1;
149
+ continue;
150
+ }
151
+ if (char === "[") {
152
+ const end = section.indexOf("]", index + 1);
153
+ if (end === -1) {
154
+ continue;
155
+ }
156
+ index = end;
157
+ continue;
158
+ }
159
+ output += char;
160
+ }
161
+ return output;
162
+ }
163
+ function formatThousandsText(integerPart) {
164
+ return integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
165
+ }
166
+ function zeroPadText(value, width) {
167
+ return String(Math.trunc(Math.abs(value))).padStart(width, "0");
168
+ }
169
+ function roundToDigits(value, digits) {
170
+ if (!Number.isFinite(value)) {
171
+ return Number.NaN;
172
+ }
173
+ const factor = 10 ** Math.max(0, digits);
174
+ return Math.round((value + Number.EPSILON) * factor) / factor;
175
+ }
176
+ function excelSecondOfDay(serial) {
177
+ if (!Number.isFinite(serial)) {
178
+ return undefined;
179
+ }
180
+ const whole = Math.floor(serial);
181
+ let fraction = serial - whole;
182
+ if (fraction < 0) {
183
+ fraction += 1;
184
+ }
185
+ let seconds = Math.floor(fraction * 86_400 + 1e-9);
186
+ if (seconds >= 86_400) {
187
+ seconds = 0;
188
+ }
189
+ return seconds;
190
+ }
191
+ function excelWeekdayIndex(serial) {
192
+ if (!Number.isFinite(serial)) {
193
+ return undefined;
194
+ }
195
+ const whole = Math.floor(serial);
196
+ if (whole < 0) {
197
+ return undefined;
198
+ }
199
+ const adjustedWhole = whole < 60 ? whole : whole - 1;
200
+ return ((adjustedWhole % 7) + 7) % 7;
201
+ }
202
+ function isDateTimeFormat(section) {
203
+ const cleaned = stripFormatDecorations(section).toUpperCase();
204
+ return (cleaned.includes("AM/PM") ||
205
+ cleaned.includes("A/P") ||
206
+ /[YDSH]/.test(cleaned) ||
207
+ /(^|[^0#?])M+([^0#?]|$)/.test(cleaned));
208
+ }
209
+ function isTextFormat(section) {
210
+ return stripFormatDecorations(section).includes("@");
211
+ }
212
+ function chooseFormatSection(deps, value, formatText) {
213
+ const sections = splitFormatSections(formatText);
214
+ if (value.tag === ValueTag.String) {
215
+ return { section: sections[3] ?? sections[0] ?? "", autoNegative: false };
216
+ }
217
+ const numeric = deps.coerceNumber(value);
218
+ if (numeric === undefined) {
219
+ return deps.error(ErrorCode.Value);
220
+ }
221
+ if (numeric < 0) {
222
+ if (sections[1] !== undefined) {
223
+ return { section: sections[1], numeric: -numeric, autoNegative: false };
224
+ }
225
+ return { section: sections[0] ?? "", numeric: -numeric, autoNegative: true };
226
+ }
227
+ if (numeric === 0 && sections[2] !== undefined) {
228
+ return { section: sections[2], numeric, autoNegative: false };
229
+ }
230
+ return { section: sections[0] ?? "", numeric, autoNegative: false };
231
+ }
232
+ function formatTextSectionValue(value, section) {
233
+ const cleaned = stripFormatDecorations(section);
234
+ return cleaned.includes("@") ? cleaned.replace(/@/g, value) : cleaned;
235
+ }
236
+ function tokenizeDateTimeFormat(section) {
237
+ const cleaned = stripFormatDecorations(section);
238
+ const tokens = [];
239
+ let index = 0;
240
+ while (index < cleaned.length) {
241
+ const remainder = cleaned.slice(index);
242
+ const upperRemainder = remainder.toUpperCase();
243
+ if (upperRemainder.startsWith("AM/PM")) {
244
+ tokens.push({ kind: "ampm", text: cleaned.slice(index, index + 5) });
245
+ index += 5;
246
+ continue;
247
+ }
248
+ if (upperRemainder.startsWith("A/P")) {
249
+ tokens.push({ kind: "ampm", text: cleaned.slice(index, index + 3) });
250
+ index += 3;
251
+ continue;
252
+ }
253
+ const char = cleaned[index];
254
+ const lower = char.toLowerCase();
255
+ if ("ymdhms".includes(lower)) {
256
+ let end = index + 1;
257
+ while (end < cleaned.length && cleaned[end].toLowerCase() === lower) {
258
+ end += 1;
259
+ }
260
+ const tokenText = cleaned.slice(index, end);
261
+ const baseKind = lower === "y"
262
+ ? "year"
263
+ : lower === "d"
264
+ ? "day"
265
+ : lower === "h"
266
+ ? "hour"
267
+ : lower === "s"
268
+ ? "second"
269
+ : "month";
270
+ tokens.push({ kind: baseKind, text: tokenText });
271
+ index = end;
272
+ continue;
273
+ }
274
+ tokens.push({ kind: "literal", text: char });
275
+ index += 1;
276
+ }
277
+ return tokens.map((token, tokenIndex, allTokens) => {
278
+ if (token.kind !== "month") {
279
+ return token;
280
+ }
281
+ const previous = allTokens.slice(0, tokenIndex).findLast((entry) => entry.kind !== "literal");
282
+ const next = allTokens.slice(tokenIndex + 1).find((entry) => entry.kind !== "literal");
283
+ if (previous?.kind === "hour" || previous?.kind === "minute" || next?.kind === "second") {
284
+ return { kind: "minute", text: token.text };
285
+ }
286
+ return token;
287
+ });
288
+ }
289
+ function formatAmPmToken(token, hour) {
290
+ const isPm = hour >= 12;
291
+ const upper = token.toUpperCase();
292
+ if (upper === "A/P") {
293
+ const letter = isPm ? "P" : "A";
294
+ return token === token.toLowerCase() ? letter.toLowerCase() : letter;
295
+ }
296
+ if (token === token.toLowerCase()) {
297
+ return isPm ? "pm" : "am";
298
+ }
299
+ return isPm ? "PM" : "AM";
300
+ }
301
+ function formatDateTimeSectionValue(serial, section) {
302
+ const dateParts = excelSerialToDateParts(serial);
303
+ const weekdayIndex = excelWeekdayIndex(serial);
304
+ const secondOfDay = excelSecondOfDay(serial);
305
+ if (!dateParts || weekdayIndex === undefined || secondOfDay === undefined) {
306
+ return undefined;
307
+ }
308
+ const hour24 = Math.floor(secondOfDay / 3600);
309
+ const minute = Math.floor((secondOfDay % 3600) / 60);
310
+ const second = secondOfDay % 60;
311
+ const tokens = tokenizeDateTimeFormat(section);
312
+ const hasAmPm = tokens.some((token) => token.kind === "ampm");
313
+ return tokens
314
+ .map((token) => {
315
+ switch (token.kind) {
316
+ case "literal":
317
+ return token.text;
318
+ case "year":
319
+ return token.text.length === 2
320
+ ? zeroPadText(dateParts.year % 100, 2)
321
+ : String(dateParts.year).padStart(Math.max(4, token.text.length), "0");
322
+ case "month":
323
+ return token.text.length === 1
324
+ ? String(dateParts.month)
325
+ : token.text.length === 2
326
+ ? zeroPadText(dateParts.month, 2)
327
+ : token.text.length === 3
328
+ ? shortMonthNames[dateParts.month - 1]
329
+ : fullMonthNames[dateParts.month - 1];
330
+ case "minute":
331
+ return token.text.length >= 2 ? zeroPadText(minute, 2) : String(minute);
332
+ case "day":
333
+ return token.text.length === 1
334
+ ? String(dateParts.day)
335
+ : token.text.length === 2
336
+ ? zeroPadText(dateParts.day, 2)
337
+ : token.text.length === 3
338
+ ? shortWeekdayNames[weekdayIndex]
339
+ : fullWeekdayNames[weekdayIndex];
340
+ case "hour": {
341
+ const normalizedHour = hasAmPm ? ((hour24 + 11) % 12) + 1 : hour24;
342
+ return token.text.length >= 2 ? zeroPadText(normalizedHour, 2) : String(normalizedHour);
343
+ }
344
+ case "second":
345
+ return token.text.length >= 2 ? zeroPadText(second, 2) : String(second);
346
+ case "ampm":
347
+ return formatAmPmToken(token.text, hour24);
348
+ }
349
+ })
350
+ .join("");
351
+ }
352
+ function trimOptionalFractionDigits(fraction, minDigits) {
353
+ let trimmed = fraction;
354
+ while (trimmed.length > minDigits && trimmed.endsWith("0")) {
355
+ trimmed = trimmed.slice(0, -1);
356
+ }
357
+ return trimmed;
358
+ }
359
+ function formatScientificSection(value, core) {
360
+ const exponentIndex = core.search(/[Ee][+-]/);
361
+ const mantissaPattern = core.slice(0, exponentIndex);
362
+ const exponentPattern = core.slice(exponentIndex + 2);
363
+ const mantissaParts = mantissaPattern.split(".");
364
+ const fractionPattern = mantissaParts[1] ?? "";
365
+ const maxFractionDigits = (fractionPattern.match(/[0#?]/g) ?? []).length;
366
+ const minFractionDigits = (fractionPattern.match(/0/g) ?? []).length;
367
+ const [mantissaRaw = "0", exponentRaw] = value.toExponential(maxFractionDigits).split("e");
368
+ let [integerPart = "0", fractionPart = ""] = mantissaRaw.split(".");
369
+ fractionPart = trimOptionalFractionDigits(fractionPart, minFractionDigits);
370
+ const exponentValue = Number(exponentRaw ?? 0);
371
+ const exponentText = String(Math.abs(exponentValue)).padStart(exponentPattern.length, "0");
372
+ return `${integerPart}${fractionPart === "" ? "" : `.${fractionPart}`}E${exponentValue < 0 ? "-" : "+"}${exponentText}`;
373
+ }
374
+ function formatNumericSectionValue(value, section, autoNegative) {
375
+ const cleaned = stripFormatDecorations(section);
376
+ if (!/[0#?]/.test(cleaned)) {
377
+ return autoNegative && !cleaned.startsWith("-") ? `-${cleaned}` : cleaned;
378
+ }
379
+ const firstPlaceholder = cleaned.search(/[0#?]/);
380
+ let lastPlaceholder = -1;
381
+ for (let index = cleaned.length - 1; index >= 0; index -= 1) {
382
+ if (/[0#?]/.test(cleaned[index])) {
383
+ lastPlaceholder = index;
384
+ break;
385
+ }
386
+ }
387
+ const prefix = cleaned.slice(0, firstPlaceholder);
388
+ const core = cleaned.slice(firstPlaceholder, lastPlaceholder + 1);
389
+ const suffix = cleaned.slice(lastPlaceholder + 1);
390
+ const percentCount = (cleaned.match(/%/g) ?? []).length;
391
+ const scaledValue = Math.abs(value) * 100 ** percentCount;
392
+ let numericText = "";
393
+ if (/[Ee][+-]/.test(core)) {
394
+ numericText = formatScientificSection(scaledValue, core);
395
+ }
396
+ else {
397
+ const decimalIndex = core.indexOf(".");
398
+ const integerPattern = (decimalIndex === -1 ? core : core.slice(0, decimalIndex)).replaceAll(",", "");
399
+ const fractionPattern = decimalIndex === -1 ? "" : core.slice(decimalIndex + 1);
400
+ const maxFractionDigits = (fractionPattern.match(/[0#?]/g) ?? []).length;
401
+ const minFractionDigits = (fractionPattern.match(/0/g) ?? []).length;
402
+ const minIntegerDigits = (integerPattern.match(/0/g) ?? []).length;
403
+ const roundedValue = roundToDigits(scaledValue, maxFractionDigits);
404
+ const fixed = roundedValue.toFixed(maxFractionDigits);
405
+ let [integerPart = "0", fractionPart = ""] = fixed.split(".");
406
+ if (integerPart.length < minIntegerDigits) {
407
+ integerPart = integerPart.padStart(minIntegerDigits, "0");
408
+ }
409
+ if (core.includes(",")) {
410
+ integerPart = formatThousandsText(integerPart);
411
+ }
412
+ fractionPart = trimOptionalFractionDigits(fractionPart, minFractionDigits);
413
+ numericText = `${integerPart}${fractionPart === "" ? "" : `.${fractionPart}`}`;
414
+ }
415
+ const combined = `${prefix}${numericText}${suffix}`;
416
+ return autoNegative && !combined.startsWith("-") ? `-${combined}` : combined;
417
+ }
418
+ function formatTextBuiltinValue(deps, value, formatText) {
419
+ const chosen = chooseFormatSection(deps, value, formatText);
420
+ if ("tag" in chosen) {
421
+ return chosen;
422
+ }
423
+ const { section, numeric, autoNegative } = chosen;
424
+ if (value.tag === ValueTag.String) {
425
+ const cleaned = stripFormatDecorations(section);
426
+ if (isTextFormat(section) || !/[0#?YMDHS]/i.test(cleaned)) {
427
+ return deps.stringResult(formatTextSectionValue(value.value, section));
428
+ }
429
+ return deps.error(ErrorCode.Value);
430
+ }
431
+ if (numeric === undefined) {
432
+ return deps.error(ErrorCode.Value);
433
+ }
434
+ if (isDateTimeFormat(section)) {
435
+ const formatted = formatDateTimeSectionValue(numeric, section);
436
+ return formatted === undefined ? deps.error(ErrorCode.Value) : deps.stringResult(formatted);
437
+ }
438
+ return deps.stringResult(formatNumericSectionValue(numeric, section, autoNegative));
439
+ }
440
+ function parseNumberValueText(input, decimalSeparator, groupSeparator) {
441
+ const compact = input.replaceAll(/\s+/g, "");
442
+ if (compact === "") {
443
+ return 0;
444
+ }
445
+ const percentMatch = compact.match(/%+$/);
446
+ const percentCount = percentMatch?.[0].length ?? 0;
447
+ const core = percentCount === 0 ? compact : compact.slice(0, -percentCount);
448
+ if (core.includes("%")) {
449
+ return undefined;
450
+ }
451
+ if (decimalSeparator !== "" && groupSeparator !== "" && decimalSeparator === groupSeparator) {
452
+ return undefined;
453
+ }
454
+ const decimal = decimalSeparator === "" ? "." : decimalSeparator[0];
455
+ const group = groupSeparator === "" ? "" : groupSeparator[0];
456
+ const decimalIndex = decimal === "" ? -1 : core.indexOf(decimal);
457
+ if (decimalIndex !== -1 && core.indexOf(decimal, decimalIndex + 1) !== -1) {
458
+ return undefined;
459
+ }
460
+ let normalized = core;
461
+ if (group !== "") {
462
+ const groupAfterDecimal = decimalIndex === -1 ? -1 : normalized.indexOf(group, decimalIndex + decimal.length);
463
+ if (groupAfterDecimal !== -1) {
464
+ return undefined;
465
+ }
466
+ normalized = normalized.replaceAll(group, "");
467
+ }
468
+ if (decimal !== "." && decimal !== "") {
469
+ normalized = normalized.replace(decimal, ".");
470
+ }
471
+ if (normalized === "" || normalized === "." || normalized === "+" || normalized === "-") {
472
+ return undefined;
473
+ }
474
+ const parsed = Number(normalized);
475
+ if (!Number.isFinite(parsed)) {
476
+ return undefined;
477
+ }
478
+ return parsed / 100 ** percentCount;
479
+ }
480
+ export function createTextFormatBuiltins(deps) {
481
+ return {
482
+ TEXT: (...args) => {
483
+ const existingError = deps.firstError(args);
484
+ if (existingError) {
485
+ return existingError;
486
+ }
487
+ const [value, formatValue] = args;
488
+ if (value === undefined || formatValue === undefined) {
489
+ return deps.error(ErrorCode.Value);
490
+ }
491
+ return formatTextBuiltinValue(deps, value, deps.coerceText(formatValue));
492
+ },
493
+ VALUE: (...args) => {
494
+ const existingError = deps.firstError(args);
495
+ if (existingError) {
496
+ return existingError;
497
+ }
498
+ const [value] = args;
499
+ if (value === undefined) {
500
+ return deps.error(ErrorCode.Value);
501
+ }
502
+ const coerced = deps.coerceNumber(value);
503
+ return coerced === undefined ? deps.error(ErrorCode.Value) : deps.numberResult(coerced);
504
+ },
505
+ NUMBERVALUE: (...args) => {
506
+ const existingError = deps.firstError(args);
507
+ if (existingError) {
508
+ return existingError;
509
+ }
510
+ const [textValue, decimalSeparatorValue, groupSeparatorValue] = args;
511
+ if (textValue === undefined) {
512
+ return deps.error(ErrorCode.Value);
513
+ }
514
+ const text = deps.coerceText(textValue);
515
+ const decimalSeparator = decimalSeparatorValue === undefined ? "." : deps.coerceText(decimalSeparatorValue);
516
+ const groupSeparator = groupSeparatorValue === undefined ? "," : deps.coerceText(groupSeparatorValue);
517
+ const parsed = parseNumberValueText(text, decimalSeparator, groupSeparator);
518
+ return parsed === undefined ? deps.error(ErrorCode.Value) : deps.numberResult(parsed);
519
+ },
520
+ VALUETOTEXT: (...args) => {
521
+ const existingError = deps.firstError(args);
522
+ if (existingError) {
523
+ return valueToTextResult(deps, existingError, 0);
524
+ }
525
+ const [value, formatValue] = args;
526
+ if (value === undefined) {
527
+ return deps.error(ErrorCode.Value);
528
+ }
529
+ const format = deps.coerceInteger(formatValue, 0);
530
+ if (deps.isErrorValue(format)) {
531
+ return format;
532
+ }
533
+ return valueToTextResult(deps, value, format);
534
+ },
535
+ };
536
+ }
537
+ //# sourceMappingURL=text-format-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-format-builtins.js","sourceRoot":"","sources":["../../src/builtins/text-format-builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ErrorCode, type CellValue } from "@bilig/protocol";
2
+ import type { TextBuiltin } from "./text.js";
3
+ interface TextSearchBuiltinDeps {
4
+ error: (code: ErrorCode) => CellValue;
5
+ stringResult: (value: string) => CellValue;
6
+ numberResult: (value: number) => CellValue;
7
+ booleanResult: (value: boolean) => CellValue;
8
+ firstError: (args: readonly (CellValue | undefined)[]) => CellValue | undefined;
9
+ coerceText: (value: CellValue) => string;
10
+ coerceNumber: (value: CellValue) => number | undefined;
11
+ coerceBoolean: (value: CellValue, fallback: boolean) => boolean | CellValue;
12
+ coerceInteger: (value: CellValue | undefined, defaultValue: number) => number | CellValue;
13
+ coercePositiveStart: (value: CellValue | undefined, defaultValue: number) => number | CellValue;
14
+ isErrorValue: (value: number | CellValue) => value is CellValue;
15
+ utf8Bytes: (value: string) => Uint8Array;
16
+ findSubBytes: (haystack: Uint8Array, needle: Uint8Array, start: number) => number;
17
+ bytePositionToCharPosition: (text: string, startByte: number) => number;
18
+ charPositionToBytePosition: (text: string, charPosition: number) => number;
19
+ }
20
+ export declare function createTextSearchBuiltins(deps: TextSearchBuiltinDeps): Record<string, TextBuiltin>;
21
+ export {};