kamiazya
web-csv-toolbox
BlogDocsChangelog

Performance History

Latest Results

build(deps): bump tinybench from 2.9.0 to 6.0.0 Bumps [tinybench](https://github.com/tinylibs/tinybench) from 2.9.0 to 6.0.0. - [Release notes](https://github.com/tinylibs/tinybench/releases) - [Commits](https://github.com/tinylibs/tinybench/compare/v2.9.0...v6.0.0) --- updated-dependencies: - dependency-name: tinybench dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot/npm_and_yarn/tinybench-6.0.0
6 days ago
feat: implement multi-layered supply chain attack defense (#617) * feat: implement multi-layered supply chain attack defense Implement comprehensive protection against npm supply chain attacks (such as Shai-Hulud 2.0) using a three-layer defense strategy. Layer 1: New Package Release Delay - Add minimumReleaseAge (48 hours) to pnpm-workspace.yaml - Blocks installation of recently published packages - Provides time buffer for community to detect malicious updates Layer 2: Install Script Prevention - Configure ignore-scripts=true in .npmrc - Prevents execution of preinstall/postinstall scripts - Includes whitelist support via onlyBuiltDependencies (currently unused) Layer 3: Continuous Vulnerability Scanning - Add OSV-Scanner workflow for dependency scanning - Integrate security scan into CI/CD pipeline - Fail builds on detected vulnerabilities Documentation: - Add comprehensive supply chain protection section to SECURITY.md - Document configuration, trade-offs, and compromise detection - Include references to defense resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: pin OSV-Scanner action to specific commit SHA Pin google/osv-scanner-action to v2.3.0 (b77c075) instead of using floating ref @main for improved security and reproducibility. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: correct pnpm whitelist configuration key Change onlyBuiltDependencies to only-built-dependencies (kebab-case) to match pnpm's actual configuration format. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: correct typo in malicious repo search example Change "Sha1-Hulud" to "Shai-Hulud" to match the actual attack name. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add inline comment clarifying minimumReleaseAge unit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: add changeset for supply chain defense 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
main
8 days ago
perf: JavaScript parser performance improvements (#614) * perf: JavaScript parser performance improvements - Token type constants: Changed from Symbol to numeric constants for faster comparison - Location tracking: Now disabled by default (add trackLocation: true for token location info) - Lazy position tracking: Error messages include position info even when trackLocation: false - Unified token structure: Reduced token count by combining delimiter info into field tokens - Object.create(null) for records: ~3.6x faster object creation - Non-destructive buffer reading: Reduced GC pressure by 46% - Regex removal for unquoted fields: ~15% faster parsing - String comparison optimization: ~10% faster - Quoted field parsing optimization: Eliminated overhead Benchmark results: - 1,000 rows: 3.57 ms → 1.77 ms (50% faster) - 5,000 rows: 19.47 ms → 8.96 ms (54% faster) - Throughput: 23.8 MB/s → 49.0 MB/s (2.06x improvement) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: update new factory function tests to use unified token format Update createStringCSVLexerTransformer.spec.ts and createCSVRecordAssemblerTransformer.spec.ts to use the new unified token structure with Delimiter enum instead of separate Field/FieldDelimiter/RecordDelimiter token types. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * style: format code * fix: update test expectations for new parser behavior Missing CSV fields now return empty string instead of undefined. Updated test expectations in: - StringCSVParserStream.test.ts - BinaryCSVParserStream.test.ts - parseBinaryToIterableIterator.test.ts - parse.spec.ts * fix: change toStrictEqual to toEqual in browser tests Object.create(null) records don't match toStrictEqual due to prototype differences. Changed to toEqual to properly compare object values. Updated test files: - parseResponse.browser.spec.ts - parseBinaryStream.browser.spec.ts - parseBinary.browser.spec.ts * fix: remove concurrent test execution in stream tests Stream tests were hanging in CI and locally when run in parallel. Removed .concurrent from describe and it blocks in: - StringCSVParserStream.test.ts - BinaryCSVParserStream.test.ts * refactor: use direct vitest imports in stream tests Removed unnecessary aliases for describe and it. Directly importing from vitest is cleaner and more standard. * style: format test files Applied biome formatting to: - src/parser/stream/StringCSVParserStream.test.ts - src/parser/stream/BinaryCSVParserStream.test.ts * feat(parser): enhance FlexibleStringCSVLexer with reusable array pooling - Implemented ReusableArrayPool to optimize memory usage for string segments in FlexibleStringCSVLexer. - Updated FlexibleStringCSVLexer to utilize the new array pool for segment management, improving performance in parsing. - Adjusted token handling to ensure correct delimiter usage, replacing EOF with Record where appropriate. - Modified tests in CSVRecordAssemblerTransformer and StringCSVLexerTransformer to reflect changes in token structure and delimiter handling. - Cleaned up test cases for better readability and consistency. * Pad record-view fill rows in fill strategy * Add record-view assembler and tighten column strategies * revert: remove CSVRecordView feature CSVRecordView機能を削除し、過剰な最適化を切り戻しました。 object形式のcolumnCountStrategy制限(fill/strictのみ)は維持されています。 - FlexibleCSVRecordViewAssembler関連のファイルを削除 - types.tsからCSVRecordView型と'record-view' outputFormatを削除 - FlexibleCSVObjectRecordAssemblerからrecord-view機能を削除 - 関連するテストとドキュメントを更新 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: apply const type parameters consistently across all parser classes プロジェクト全体でconst type parametersを一貫して適用しました。 変更内容: - FlexibleCSVArrayRecordAssembler - FlexibleCSVObjectRecordAssembler - FlexibleStringArrayCSVParser - FlexibleStringObjectCSVParser - FlexibleBinaryArrayCSVParser - FlexibleBinaryObjectCSVParser すべてのクラスで`Header extends ReadonlyArray<string>`を `const Header extends ReadonlyArray<string>`に変更。 これにより、ユーザーは`as const`を書かなくてもリテラル型が 正しく推論されるようになりました: Before: header: ['name', 'age'] as const After: header: ['name', 'age'] テスト:1341個すべて成功 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: address code review comments レビューコメントに基づいて以下を修正: 1. parseResponse.spec.ts - describeブロック名を修正(parseRequest → parseResponse) 2. column-count-strategy-rename.md - breaking changeをminorに変更し、移行ガイドを追加 3. performance-improvements.md - ベンチマーク結果の記述を修正(46% → 83% faster) 4. vitest.setup.ts - endOnFailureのコメントを正確に修正(デフォルトはfalse) 5. createStringCSVLexer.ts - 戻り値の型にTrackLocationジェネリックを追加 すべてのテストが成功(1341個) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test: improve StringCSVLexerTransformer test quality and update benchmarks - Remove debug options ({ numRuns: 10 }) to restore full property-based test coverage - Add .flat() to transform result in third test for correct array shape matching - Fix edge case: empty CSV string should produce no tokens - Update performance numbers with final benchmark measurements: - Object format (1,000 rows): 61.2 MB/s (was 49.0 MB/s) - Object format (5,000 rows): 67.9 MB/s (was 53.3 MB/s) - Array format (1,000 rows): 87.6 MB/s (was 89.6 MB/s) - Array format (5,000 rows): 86.4 MB/s (new measurement) - Array format is 43% faster (1.43× throughput) vs Object format 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * style: improve formatting of expected tokens in StringCSVLexerTransformer tests * test: consolidate test files and improve coverage config - Consolidate FlexibleCSVRecordAssembler test files (6 → 2 files) - Merged array-output, field-count-limit, object-output, and prototype-safety tests into .test.ts - All 77 tests passing - Consolidate FlexibleStringCSVLexer test files (4 → 2 files) - Merged buffer-overflow and undefined-check tests into .test.ts - All 33 tests passing - Improve coverage configuration in vite.config.ts - Add explicit exclude patterns for test files - Add reporter configuration - Set reportsDirectory - Add @vitest/coverage-v8 to devDependencies for future migration Total: 110 test cases passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: enhance comments and improve header handling in FlexibleCSVRecordAssembler tests --------- Co-authored-by: Claude <noreply@anthropic.com>
main
11 days ago

Active Branches

build(deps): bump tinybench from 2.9.0 to 6.0.0
last run
6 days ago
#619
CodSpeed Performance Gauge
N/A
#618
CodSpeed Performance Gauge
×3.5
#558
CodSpeed Performance Gauge
-89%
© 2025 CodSpeed Technology
Home Terms Privacy Docs