kamiazya
web-csv-toolbox
BlogDocsChangelog

feat: implement const type parameters to eliminate `as const` requirement

#616Merged
Comparing
feat/const-type-parameters
(
3d75c8b
) with
main
(
2a7b22e
)
CodSpeed Performance Gauge
-51%
Improvements
3
Regressions
1
Untouched
61
Skipped
8

Benchmarks

Skipped (8)

Failed

Data transformation: no conversion (100 rows)
benchmark/main.ts
Regression
CodSpeed Performance Gauge
-51%
2.3 ms4.8 ms

Improved

parseString.toIterableIterator(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+92%
2.8 ms1.4 ms
Engine comparison: mainThread (500 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+76%
30.5 ms17.4 ms
Worker perf: medium (1000 rows) - mainThread
benchmark/main.ts
CodSpeed Performance Gauge
+71%
33.6 ms19.7 ms

Passed

Engine comparison: wasm (5000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+27%
142.7 ms112.5 ms
Engine comparison: mainThread (5000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+15%
176.3 ms153.1 ms
Scaling: 100 rows
benchmark/main.ts
CodSpeed Performance Gauge
+14%
3.4 ms2.9 ms
Stream approach: parseBinaryStream (100KB)
benchmark/main.ts
CodSpeed Performance Gauge
+13%
350.2 ms311 ms
Quote ratio: 50% (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+10%
13.2 ms12 ms
Field length: 100 chars (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+6%
14.2 ms13.4 ms
Stream approach: parseBinaryStream (10KB)
benchmark/main.ts
CodSpeed Performance Gauge
+2%
36.4 ms35.7 ms
Stream approach: parseBinaryStream (1KB)
benchmark/main.ts
CodSpeed Performance Gauge
+1%
4.5 ms4.4 ms
parseBinary.toArraySync(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+1%
999 µs987.3 µs
Low-level: CSVLexer + CSVRecordAssembler (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
+1%
27.9 ms27.6 ms
Binary approach: parseBinary (100KB)
benchmark/main.ts
CodSpeed Performance Gauge
+1%
36 ms35.8 ms
Concurrent: Sequential mainThread
benchmark/main.ts
CodSpeed Performance Gauge
+1%
35.7 ms35.5 ms
Scaling: 50 rows
benchmark/main.ts
CodSpeed Performance Gauge
+1%
1.7 ms1.7 ms
parseString.toStream(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
2.3 ms2.3 ms
Worker perf: small (100 rows) - mainThread
benchmark/main.ts
CodSpeed Performance Gauge
0%
2.1 ms2.1 ms
Field length: 1KB (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
27.4 ms27.4 ms
Quote ratio: 100% (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
12.6 ms12.6 ms
parseString engine:stable (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
21.1 ms21 ms
parseString engine:fast (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
13.8 ms13.8 ms
Scaling: 5000 rows
benchmark/main.ts
CodSpeed Performance Gauge
0%
161.4 ms161.2 ms
Worker perf: tiny (10 rows) - mainThread
benchmark/main.ts
CodSpeed Performance Gauge
0%
351.3 µs351 µs
Binary approach: parseBinary (10KB)
benchmark/main.ts
CodSpeed Performance Gauge
0%
3.7 ms3.7 ms
parseStringToArraySyncWASM(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
1.5 ms1.5 ms
Binary approach: parseBinary (1KB)
benchmark/main.ts
CodSpeed Performance Gauge
0%
462.4 µs462.4 µs
Binary approach: parseBinary (1MB)
benchmark/main.ts
CodSpeed Performance Gauge
0%
373.9 ms374.5 ms
parseString engine:stable (50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
1.1 ms1.1 ms
Engine comparison: wasm (500 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
9.1 ms9.1 ms
parseString engine:fast (50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
1.2 ms1.2 ms
Field length: 10KB (100 rows)
benchmark/main.ts
CodSpeed Performance Gauge
0%
16.7 ms16.7 ms
Stream approach: parseBinaryStream (1MB)
benchmark/main.ts
CodSpeed Performance Gauge
-1%
3.1 s3.1 s
parseBinary.toIterableIterator(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-1%
1 ms1 ms
Concurrent: Parallel mainThread
benchmark/main.ts
CodSpeed Performance Gauge
-1%
35 ms35.4 ms
Memory: toIterableIterator (streaming)
benchmark/main.ts
CodSpeed Performance Gauge
-1%
27.7 ms28 ms
Memory: toArraySync (allocate all at once)
benchmark/main.ts
CodSpeed Performance Gauge
-2%
27.5 ms27.9 ms
Worker perf: large (10000 rows) - mainThread
benchmark/main.ts
CodSpeed Performance Gauge
-2%
192.6 ms195.9 ms
Quote ratio: 25% (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-2%
12.2 ms12.4 ms
Queuing: large (10000 rows) - default HWM
benchmark/main.ts
CodSpeed Performance Gauge
-2%
2.3 s2.3 s
Low-level: CSVLexer only (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-2%
17.6 ms18 ms
Line ending: CRLF (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-3%
18 ms18.5 ms
Scaling: 500 rows
benchmark/main.ts
CodSpeed Performance Gauge
-3%
14.7 ms15.2 ms
Scaling: 1000 rows
benchmark/main.ts
CodSpeed Performance Gauge
-3%
29.4 ms30.4 ms
parseBinary.toStream(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-3%
2 ms2.1 ms
parseString.toArraySync(10000 cols, 10 rows, quoted)
benchmark/main.ts
CodSpeed Performance Gauge
-4%
390 ms404.6 ms
Custom delimiter: TSV (100 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-6%
1.1 ms1.1 ms
Custom delimiter: PSV (100 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-6%
1.1 ms1.1 ms
Queuing: medium (1000 rows) - default HWM
benchmark/main.ts
CodSpeed Performance Gauge
-7%
266.4 ms286.8 ms
Field length: 10 chars (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-8%
12.1 ms13.1 ms
Line ending: LF (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-8%
8.8 ms9.6 ms
parseString.toArraySync(50 cols, 50 rows, quoted)
benchmark/main.ts
CodSpeed Performance Gauge
-8%
18.7 ms20.3 ms
parseStringStream: medium (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-8%
191.3 ms208.7 ms
Quote ratio: 0% (1000 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-9%
11.5 ms12.6 ms
parseStringStream: small (100 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-9%
19 ms20.8 ms
parseString.toArraySync(10 cols, 50 rows, quoted)
benchmark/main.ts
CodSpeed Performance Gauge
-9%
3.8 ms4.1 ms
parseString.toArraySync(100 cols, 50 rows, unquoted)
benchmark/main.ts
CodSpeed Performance Gauge
-16%
17.5 ms21 ms
parseString.toArraySync(50 cols, 50 rows, unquoted)
benchmark/main.ts
CodSpeed Performance Gauge
-17%
9.2 ms11.1 ms
parseString.toArraySync(10 cols, 50 rows, unquoted)
benchmark/main.ts
CodSpeed Performance Gauge
-17%
1.8 ms2.1 ms
parseString.toArraySync(100 cols, 50 rows, quoted)
benchmark/main.ts
CodSpeed Performance Gauge
-22%
17.3 ms22.3 ms
parseString.toArraySync(10000 cols, 10 rows, unquoted)
benchmark/main.ts
CodSpeed Performance Gauge
-23%
384.3 ms499.1 ms
parseString.toArraySync(50 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-28%
1.9 ms2.7 ms
Data transformation: type conversion (100 rows)
benchmark/main.ts
CodSpeed Performance Gauge
-44%
2.7 ms4.8 ms
Queuing: small (100 rows) - default HWM
benchmark/main.ts
CodSpeed Performance Gauge
-46%
23.4 ms43.6 ms

Commits

Click on a commit to change the comparison range
Base
main
2a7b22e
-51.12%
feat: implement const type parameters to eliminate `as const` requirement This change leverages TypeScript 5.0's const type parameters feature to automatically capture literal types without requiring users to write `as const` annotations. Changes: - Added const type parameters to all factory functions - Implemented function overloads for precise return type narrowing - Created CSVOutputFormat type alias for better code organization - Unified import statements (removed import("").XXX patterns) - Updated all documentation and JSDoc examples to remove `as const` Users can now write: header: ['name', 'age'] instead of: header: ['name', 'age'] as const Maintains 100% backward compatibility. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3d75c8b
12 days ago
by kamiazya
© 2025 CodSpeed Technology
Home Terms Privacy Docs