node-liblzma 1.1.8 → 2.0.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 (76) hide show
  1. package/.claude/settings.local.json +92 -0
  2. package/.gitattributes +3 -0
  3. package/.release-it.json +6 -0
  4. package/CHANGELOG.md +209 -0
  5. package/History.md +23 -1
  6. package/README.md +750 -30
  7. package/RELEASING.md +131 -0
  8. package/binding.gyp +159 -438
  9. package/biome.json +81 -0
  10. package/coverage/base.css +224 -0
  11. package/coverage/block-navigation.js +87 -0
  12. package/coverage/errors.ts.html +586 -0
  13. package/coverage/favicon.png +0 -0
  14. package/coverage/index.html +146 -0
  15. package/coverage/lcov-report/base.css +224 -0
  16. package/coverage/lcov-report/block-navigation.js +87 -0
  17. package/coverage/lcov-report/errors.ts.html +586 -0
  18. package/coverage/lcov-report/favicon.png +0 -0
  19. package/coverage/lcov-report/index.html +146 -0
  20. package/coverage/lcov-report/lzma.ts.html +2596 -0
  21. package/coverage/lcov-report/pool.ts.html +769 -0
  22. package/coverage/lcov-report/prettify.css +1 -0
  23. package/coverage/lcov-report/prettify.js +2 -0
  24. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  25. package/coverage/lcov-report/sorter.js +210 -0
  26. package/coverage/lcov.info +636 -0
  27. package/coverage/lzma.ts.html +2596 -0
  28. package/coverage/pool.ts.html +769 -0
  29. package/coverage/prettify.css +1 -0
  30. package/coverage/prettify.js +2 -0
  31. package/coverage/sort-arrow-sprite.png +0 -0
  32. package/coverage/sorter.js +210 -0
  33. package/coverage-reports/assets/monocart-coverage-app.js +2 -0
  34. package/coverage-reports/coverage-data.js +1 -0
  35. package/coverage-reports/index.html +48 -0
  36. package/err.log +26 -0
  37. package/index.d.ts +254 -0
  38. package/lib/errors.d.ts +72 -0
  39. package/lib/errors.d.ts.map +1 -0
  40. package/lib/errors.js +153 -0
  41. package/lib/errors.js.map +1 -0
  42. package/lib/lzma.d.ts +245 -0
  43. package/lib/lzma.d.ts.map +1 -0
  44. package/lib/lzma.js +626 -345
  45. package/lib/lzma.js.map +1 -0
  46. package/lib/pool.d.ts +123 -0
  47. package/lib/pool.d.ts.map +1 -0
  48. package/lib/pool.js +188 -0
  49. package/lib/pool.js.map +1 -0
  50. package/lib/types.d.ts +27 -0
  51. package/lib/types.d.ts.map +1 -0
  52. package/lib/types.js +5 -0
  53. package/lib/types.js.map +1 -0
  54. package/package.json +60 -21
  55. package/pnpm-workspace.yaml +3 -0
  56. package/scripts/analyze-coverage.js +132 -0
  57. package/scripts/build_xz_with_cmake.py +390 -0
  58. package/scripts/compare-coverage-tools.js +93 -0
  59. package/scripts/copy_dll.py +51 -0
  60. package/scripts/download_xz_from_github.py +375 -0
  61. package/src/bindings/module.cpp +107 -0
  62. package/src/bindings/node-liblzma.cpp +522 -0
  63. package/src/bindings/node-liblzma.hpp +144 -0
  64. package/src/errors.ts +167 -0
  65. package/src/lzma.ts +839 -0
  66. package/src/pool.ts +228 -0
  67. package/src/types.ts +30 -0
  68. package/tsconfig.json +50 -0
  69. package/vitest.config.istanbul.ts +29 -0
  70. package/vitest.config.monocart.ts +44 -0
  71. package/vitest.config.ts +44 -0
  72. package/xz-version.json +8 -0
  73. package/prebuilds/darwin-x64/node.napi.node +0 -0
  74. package/prebuilds/linux-x64/node.napi.node +0 -0
  75. package/prebuilds/win32-x64/node.napi.node +0 -0
  76. package/scripts/download_extract_deps.py +0 -29
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzma.js","sourceRoot":"","sources":["../src/lzma.ts"],"names":[],"mappings":"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"}
package/lib/pool.d.ts ADDED
@@ -0,0 +1,123 @@
1
+ /**
2
+ * node-liblzma - Node.js bindings for liblzma
3
+ * Copyright (C) Olivier Orabona <olivier.orabona@gmail.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Lesser General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Lesser General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { EventEmitter } from 'node:events';
19
+ import { type LZMAOptions } from './lzma.js';
20
+ /**
21
+ * Metrics for pool monitoring
22
+ */
23
+ export interface PoolMetrics {
24
+ /** Number of currently active compression/decompression operations */
25
+ active: number;
26
+ /** Number of operations waiting in the queue */
27
+ queued: number;
28
+ /** Total number of successfully completed operations */
29
+ completed: number;
30
+ /** Total number of failed operations */
31
+ failed: number;
32
+ }
33
+ /**
34
+ * LZMA Pool with concurrency control and event monitoring
35
+ *
36
+ * Provides rate limiting and backpressure for LZMA operations.
37
+ * Emits events for monitoring and metrics collection in production.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const pool = new LZMAPool(10); // Max 10 concurrent operations
42
+ *
43
+ * pool.on('metrics', (metrics) => {
44
+ * console.log(`Active: ${metrics.active}, Queued: ${metrics.queued}`);
45
+ * });
46
+ *
47
+ * const compressed = await pool.compress(buffer);
48
+ * ```
49
+ *
50
+ * Events:
51
+ * - 'queue': Emitted when task added to queue
52
+ * - 'start': Emitted when task starts processing
53
+ * - 'complete': Emitted when task completes successfully
54
+ * - 'error-task': Emitted when task fails
55
+ * - 'metrics': Emitted after each state change with current metrics
56
+ */
57
+ export declare class LZMAPool extends EventEmitter {
58
+ private maxConcurrent;
59
+ private queue;
60
+ private metrics;
61
+ /**
62
+ * Create a new LZMA pool
63
+ * @param maxConcurrent Maximum number of concurrent operations (default: 10)
64
+ */
65
+ constructor(maxConcurrent?: number);
66
+ /**
67
+ * Compress data with automatic queue management
68
+ * @param data Buffer to compress
69
+ * @param opts LZMA compression options
70
+ * @returns Promise that resolves to compressed buffer
71
+ */
72
+ compress(data: Buffer, opts?: LZMAOptions): Promise<Buffer>;
73
+ /**
74
+ * Decompress data with automatic queue management
75
+ * @param data Compressed buffer to decompress
76
+ * @param opts LZMA decompression options
77
+ * @returns Promise that resolves to decompressed buffer
78
+ */
79
+ decompress(data: Buffer, opts?: LZMAOptions): Promise<Buffer>;
80
+ /**
81
+ * Get current pool metrics
82
+ * @returns Copy of current metrics
83
+ */
84
+ getMetrics(): Readonly<PoolMetrics>;
85
+ /**
86
+ * Get number of tasks waiting in queue
87
+ * @returns Queue length
88
+ */
89
+ get queueLength(): number;
90
+ /**
91
+ * Get number of currently active tasks
92
+ * @returns Active task count
93
+ */
94
+ get activeCount(): number;
95
+ /**
96
+ * Check if pool is at maximum capacity
97
+ * @returns True if at capacity
98
+ */
99
+ get isAtCapacity(): boolean;
100
+ /**
101
+ * Enqueue a task for execution
102
+ * @param fn Task function returning Promise<Buffer>
103
+ * @returns Promise that resolves when task completes
104
+ */
105
+ private enqueue;
106
+ /**
107
+ * Process tasks from queue respecting concurrency limit
108
+ */
109
+ private processQueue;
110
+ /**
111
+ * Wait for all active tasks to complete
112
+ * Does not process new tasks added while waiting
113
+ * @returns Promise that resolves when all active tasks are done
114
+ */
115
+ drain(): Promise<void>;
116
+ /**
117
+ * Clear all pending tasks from the queue
118
+ * Active tasks will continue to run
119
+ * @returns Number of tasks removed from queue
120
+ */
121
+ clearQueue(): number;
122
+ }
123
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,WAAW,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IAc5B,OAAO,CAAC,aAAa;IAbjC,OAAO,CAAC,KAAK,CAAoB;IAEjC,OAAO,CAAC,OAAO,CAKb;IAEF;;;OAGG;gBACiB,aAAa,SAAK;IAQtC;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAInC;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;OAGG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;OAIG;YACW,OAAO;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmCpB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;;;OAIG;IACH,UAAU,IAAI,MAAM;CAOrB"}
package/lib/pool.js ADDED
@@ -0,0 +1,188 @@
1
+ /**
2
+ * node-liblzma - Node.js bindings for liblzma
3
+ * Copyright (C) Olivier Orabona <olivier.orabona@gmail.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Lesser General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Lesser General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { EventEmitter } from 'node:events';
19
+ import { unxzAsync, xzAsync } from './lzma.js';
20
+ /**
21
+ * LZMA Pool with concurrency control and event monitoring
22
+ *
23
+ * Provides rate limiting and backpressure for LZMA operations.
24
+ * Emits events for monitoring and metrics collection in production.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const pool = new LZMAPool(10); // Max 10 concurrent operations
29
+ *
30
+ * pool.on('metrics', (metrics) => {
31
+ * console.log(`Active: ${metrics.active}, Queued: ${metrics.queued}`);
32
+ * });
33
+ *
34
+ * const compressed = await pool.compress(buffer);
35
+ * ```
36
+ *
37
+ * Events:
38
+ * - 'queue': Emitted when task added to queue
39
+ * - 'start': Emitted when task starts processing
40
+ * - 'complete': Emitted when task completes successfully
41
+ * - 'error-task': Emitted when task fails
42
+ * - 'metrics': Emitted after each state change with current metrics
43
+ */
44
+ export class LZMAPool extends EventEmitter {
45
+ /**
46
+ * Create a new LZMA pool
47
+ * @param maxConcurrent Maximum number of concurrent operations (default: 10)
48
+ */
49
+ constructor(maxConcurrent = 10) {
50
+ super();
51
+ this.maxConcurrent = maxConcurrent;
52
+ this.queue = [];
53
+ this.metrics = {
54
+ active: 0,
55
+ queued: 0,
56
+ completed: 0,
57
+ failed: 0,
58
+ };
59
+ if (maxConcurrent < 1) {
60
+ throw new RangeError('maxConcurrent must be at least 1');
61
+ }
62
+ }
63
+ /**
64
+ * Compress data with automatic queue management
65
+ * @param data Buffer to compress
66
+ * @param opts LZMA compression options
67
+ * @returns Promise that resolves to compressed buffer
68
+ */
69
+ async compress(data, opts) {
70
+ return this.enqueue(() => xzAsync(data, opts));
71
+ }
72
+ /**
73
+ * Decompress data with automatic queue management
74
+ * @param data Compressed buffer to decompress
75
+ * @param opts LZMA decompression options
76
+ * @returns Promise that resolves to decompressed buffer
77
+ */
78
+ async decompress(data, opts) {
79
+ return this.enqueue(() => unxzAsync(data, opts));
80
+ }
81
+ /**
82
+ * Get current pool metrics
83
+ * @returns Copy of current metrics
84
+ */
85
+ getMetrics() {
86
+ return { ...this.metrics };
87
+ }
88
+ /**
89
+ * Get number of tasks waiting in queue
90
+ * @returns Queue length
91
+ */
92
+ get queueLength() {
93
+ return this.queue.length;
94
+ }
95
+ /**
96
+ * Get number of currently active tasks
97
+ * @returns Active task count
98
+ */
99
+ get activeCount() {
100
+ return this.metrics.active;
101
+ }
102
+ /**
103
+ * Check if pool is at maximum capacity
104
+ * @returns True if at capacity
105
+ */
106
+ get isAtCapacity() {
107
+ return this.metrics.active >= this.maxConcurrent;
108
+ }
109
+ /**
110
+ * Enqueue a task for execution
111
+ * @param fn Task function returning Promise<Buffer>
112
+ * @returns Promise that resolves when task completes
113
+ */
114
+ async enqueue(fn) {
115
+ return new Promise((resolve, reject) => {
116
+ this.queue.push({ fn, resolve, reject });
117
+ this.metrics.queued = this.queue.length;
118
+ this.emit('queue', { ...this.metrics });
119
+ this.processQueue();
120
+ });
121
+ }
122
+ /**
123
+ * Process tasks from queue respecting concurrency limit
124
+ */
125
+ processQueue() {
126
+ // Don't start new tasks if at capacity or queue empty
127
+ if (this.metrics.active >= this.maxConcurrent || this.queue.length === 0) {
128
+ return;
129
+ }
130
+ const item = this.queue.shift();
131
+ if (!item)
132
+ return;
133
+ this.metrics.active++;
134
+ this.metrics.queued = this.queue.length;
135
+ this.emit('start', { ...this.metrics });
136
+ // Execute task
137
+ item
138
+ .fn()
139
+ .then((result) => {
140
+ this.metrics.completed++;
141
+ item.resolve(result);
142
+ this.emit('complete', { ...this.metrics });
143
+ })
144
+ .catch((error) => {
145
+ this.metrics.failed++;
146
+ item.reject(error);
147
+ this.emit('error-task', error, { ...this.metrics });
148
+ })
149
+ .finally(() => {
150
+ this.metrics.active--;
151
+ this.emit('metrics', { ...this.metrics });
152
+ // Process next task in queue
153
+ this.processQueue();
154
+ });
155
+ }
156
+ /**
157
+ * Wait for all active tasks to complete
158
+ * Does not process new tasks added while waiting
159
+ * @returns Promise that resolves when all active tasks are done
160
+ */
161
+ async drain() {
162
+ if (this.metrics.active === 0) {
163
+ return Promise.resolve();
164
+ }
165
+ return new Promise((resolve) => {
166
+ const checkDrained = () => {
167
+ if (this.metrics.active === 0) {
168
+ this.off('metrics', checkDrained);
169
+ resolve();
170
+ }
171
+ };
172
+ this.on('metrics', checkDrained);
173
+ });
174
+ }
175
+ /**
176
+ * Clear all pending tasks from the queue
177
+ * Active tasks will continue to run
178
+ * @returns Number of tasks removed from queue
179
+ */
180
+ clearQueue() {
181
+ const cleared = this.queue.length;
182
+ this.queue = [];
183
+ this.metrics.queued = 0;
184
+ this.emit('metrics', { ...this.metrics });
185
+ return cleared;
186
+ }
187
+ }
188
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Shared TypeScript types for node-liblzma
3
+ */
4
+ export interface LZMAOptions {
5
+ /** Integrity check type */
6
+ check?: number;
7
+ /** Compression preset level */
8
+ preset?: number;
9
+ /** Array of filters to use */
10
+ filters?: number[];
11
+ /** Compression mode */
12
+ mode?: number;
13
+ /** Number of threads for compression (encoding only) */
14
+ threads?: number;
15
+ /** Chunk size for processing */
16
+ chunkSize?: number;
17
+ /** Flush flag to use */
18
+ flushFlag?: number;
19
+ }
20
+ export type CompressionCallback = (error: Error | null, result?: Buffer) => void;
21
+ export type LZMAActionType = 0 | 1 | 2 | 3;
22
+ export type LZMAStatusType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
23
+ export type CheckType = 0 | 1 | 4 | 10;
24
+ export type PresetType = 6 | 9;
25
+ export type FilterType = 0x21 | 0x03 | 0x04 | 0x06 | 0x07 | 0x08 | 0x09;
26
+ export type ModeType = 1 | 2;
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAGjF,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7E,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACvC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/lib/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared TypeScript types for node-liblzma
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,28 +1,61 @@
1
1
  {
2
2
  "name": "node-liblzma",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "description": "NodeJS wrapper for liblzma",
5
+ "type": "module",
5
6
  "main": "./lib/lzma.js",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./lib/lzma.js",
10
+ "types": "./index.d.ts"
11
+ }
12
+ },
6
13
  "scripts": {
7
14
  "install": "node-gyp-build",
8
- "prepare": "npx ynpx coffeescript --bare --compile --output lib/ src/",
9
- "prebuildify": "npx prebuildify --napi --strip -t $(node -v)",
10
- "prebuildify:win": "for /f \"usebackq tokens=*\" %v in (`node -v`) do npx prebuildify -t %v --napi --strip",
11
- "test": "mocha test/*.coffee"
15
+ "build": "tsc",
16
+ "build:watch": "tsc --watch",
17
+ "prepare": "simple-git-hooks && pnpm run build",
18
+ "prebuildify": "pnpm exec prebuildify --napi --strip -t $(node -v)",
19
+ "prebuildify:win": "for /f \"usebackq tokens=*\" %v in (`node -v`) do pnpm exec prebuildify -t %v --napi --strip",
20
+ "test": "vitest run",
21
+ "test:watch": "vitest",
22
+ "test:coverage": "vitest run --config vitest.config.monocart.ts --coverage",
23
+ "test:coverage-v8": "vitest run --coverage",
24
+ "type-check": "tsc --noEmit",
25
+ "clean": "rm -rf lib",
26
+ "lint": "biome lint",
27
+ "lint:fix": "biome lint --write",
28
+ "format": "biome format",
29
+ "format:write": "biome format --write",
30
+ "check": "biome check",
31
+ "check:write": "biome check --write",
32
+ "release": "release-it-preset default",
33
+ "release:manual": "release-it-preset manual-changelog",
34
+ "release:hotfix": "release-it-preset hotfix",
35
+ "changelog:update": "release-it-preset changelog-only"
12
36
  },
13
37
  "dependencies": {
14
- "node-addon-api": "4.2.0",
15
- "node-gyp-build": "4.3.0"
38
+ "node-addon-api": "^8.5.0",
39
+ "node-gyp-build": "^4.8.4"
16
40
  },
17
41
  "devDependencies": {
18
- "coffeescript": "2.6.1",
19
- "expect.js": "0.3.1",
20
- "mocha": "9.2.1",
21
- "tsd": "0.19.1"
42
+ "@biomejs/biome": "^2.2.3",
43
+ "@oorabona/release-it-preset": "^0.8.0",
44
+ "@oorabona/vitest-monocart-coverage": "^2.0.1",
45
+ "@types/node": "^24.3.1",
46
+ "@vitest/coverage-istanbul": "^3.2.4",
47
+ "@vitest/coverage-v8": "^3.2.4",
48
+ "@vitest/ui": "3.2.4",
49
+ "nano-staged": "^0.8.0",
50
+ "release-it": "^19.0.5",
51
+ "simple-git-hooks": "^2.13.1",
52
+ "tsd": "^0.33.0",
53
+ "typescript": "^5.9.2",
54
+ "vitest": "^3.2.4"
22
55
  },
23
56
  "types": "index.d.ts",
24
57
  "engines": {
25
- "node": ">12.0.0"
58
+ "node": ">=16.0.0"
26
59
  },
27
60
  "repository": {
28
61
  "type": "git",
@@ -48,20 +81,26 @@
48
81
  "url": "https://github.com/oorabona/node-liblzma/issues"
49
82
  },
50
83
  "homepage": "https://github.com/oorabona/node-liblzma",
84
+ "funding": {
85
+ "type": "github",
86
+ "url": "https://github.com/sponsors/oorabona"
87
+ },
51
88
  "binary": {
52
89
  "module_name": "liblzma"
53
90
  },
54
91
  "publishConfig": {
55
92
  "registry": "https://registry.npmjs.org/"
56
93
  },
57
- "mocha": {
58
- "throw-deprecation": true,
59
- "require": [
60
- "coffeescript/register"
94
+ "nano-staged": {
95
+ "*.{ts,js,mts,cts}": [
96
+ "biome check --write --no-errors-on-unmatched"
61
97
  ],
62
- "inline-diffs": true,
63
- "timeout": 5000,
64
- "reporter": "spec",
65
- "recursive": true
66
- }
98
+ "*.json": [
99
+ "biome format --write"
100
+ ]
101
+ },
102
+ "simple-git-hooks": {
103
+ "pre-commit": "pnpm exec nano-staged"
104
+ },
105
+ "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b"
67
106
  }
@@ -0,0 +1,3 @@
1
+ onlyBuiltDependencies:
2
+ - esbuild
3
+ - simple-git-hooks
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+
6
+ const COVERAGE_FILE = './coverage/coverage-final.json';
7
+ const SOURCE_FILE = './src/lzma.ts';
8
+
9
+ if (!fs.existsSync(COVERAGE_FILE)) {
10
+ console.log("❌ Fichier de coverage non trouvé. Lancez `pnpm test -- --coverage` d'abord.");
11
+ process.exit(1);
12
+ }
13
+
14
+ const coverage = JSON.parse(fs.readFileSync(COVERAGE_FILE, 'utf8'));
15
+ const sourceLines = fs.readFileSync(SOURCE_FILE, 'utf8').split('\n');
16
+
17
+ // Analyser le fichier principal
18
+ const filePath = path.resolve(SOURCE_FILE);
19
+ const data = coverage[filePath] || coverage[Object.keys(coverage)[0]];
20
+
21
+ if (!data) {
22
+ console.log('❌ Données de coverage non trouvées');
23
+ process.exit(1);
24
+ }
25
+
26
+ console.log('🔍 ANALYSE DE PRÉCISION DU COVERAGE\n');
27
+
28
+ // Fonctions non couvertes
29
+ const uncoveredFunctions = Object.entries(data.f).filter(([, count]) => count === 0);
30
+ console.log(`📊 FONCTIONS NON COUVERTES (${uncoveredFunctions.length}):`);
31
+ uncoveredFunctions.forEach(([key, count]) => {
32
+ const fn = data.fnMap[key];
33
+ const startLine = fn.loc.start.line;
34
+ const endLine = fn.loc.end.line;
35
+
36
+ console.log(` Function ${key}: "${fn.name}" (lignes ${startLine}-${endLine})`);
37
+ console.log(` Code: ${sourceLines[startLine - 1]?.trim() || 'N/A'}`);
38
+
39
+ // Vérifier si c'est un artefact
40
+ const isArtifact =
41
+ sourceLines[startLine - 1]?.includes('/* v8 ignore') ||
42
+ sourceLines[startLine - 1]?.includes('export const') ||
43
+ fn.name.includes('anonymous');
44
+
45
+ if (isArtifact) {
46
+ console.log(` ⚠️ Probablement un artefact V8`);
47
+ } else {
48
+ console.log(` 🎯 VRAIE fonction non testée`);
49
+ }
50
+ console.log('');
51
+ });
52
+
53
+ // Statements non couverts
54
+ const uncoveredStatements = Object.entries(data.s).filter(([, count]) => count === 0);
55
+ console.log(`📊 STATEMENTS NON COUVERTS (${uncoveredStatements.length}):`);
56
+ uncoveredStatements.slice(0, 10).forEach(([key, count]) => {
57
+ const stmt = data.statementMap[key];
58
+ const line = stmt.start.line;
59
+
60
+ console.log(` Statement ${key}: ligne ${line}`);
61
+ console.log(` Code: ${sourceLines[line - 1]?.trim() || 'N/A'}`);
62
+
63
+ // Vérifier si c'est vraiment du code exécutable
64
+ const codeLine = sourceLines[line - 1]?.trim() || '';
65
+ const isIgnorable =
66
+ codeLine.includes('/* v8 ignore') ||
67
+ codeLine === '' ||
68
+ codeLine.includes('//') ||
69
+ codeLine === '}' ||
70
+ codeLine === '{' ||
71
+ codeLine.includes('export const');
72
+
73
+ if (isIgnorable) {
74
+ console.log(` ⚠️ Ligne probablement ignorable`);
75
+ } else {
76
+ console.log(` 🎯 VRAI code non testé`);
77
+ }
78
+ console.log('');
79
+ });
80
+
81
+ // Branches critiques non couvertes
82
+ const uncoveredBranches = Object.entries(data.b)
83
+ .filter(([, counts]) => counts.includes(0))
84
+ .filter(([key]) => {
85
+ const branch = data.branchMap[key];
86
+ const line = sourceLines[branch.line - 1]?.trim() || '';
87
+ return !line.includes('/* v8 ignore') && line.length > 0;
88
+ });
89
+
90
+ console.log(`📊 BRANCHES CRITIQUES NON COUVERTES (${uncoveredBranches.length}):`);
91
+ uncoveredBranches.slice(0, 10).forEach(([key, counts]) => {
92
+ const branch = data.branchMap[key];
93
+ const line = branch.line;
94
+
95
+ console.log(` Branch ${key}: ligne ${line} - ${counts}`);
96
+ console.log(` Code: ${sourceLines[line - 1]?.trim() || 'N/A'}`);
97
+ console.log(` Type: ${branch.type}`);
98
+ console.log(` 🎯 VRAIE condition non testée`);
99
+ console.log('');
100
+ });
101
+
102
+ console.log('💡 RÉSUMÉ:');
103
+ console.log(
104
+ ` - Fonctions vraiment non testées: ${
105
+ uncoveredFunctions.filter(([key]) => {
106
+ const fn = data.fnMap[key];
107
+ return (
108
+ !fn.name.includes('anonymous') &&
109
+ !sourceLines[fn.loc.start.line - 1]?.includes('export const')
110
+ );
111
+ }).length
112
+ }`
113
+ );
114
+
115
+ console.log(
116
+ ` - Statements vraiment non testés: ${
117
+ uncoveredStatements.filter(([key]) => {
118
+ const stmt = data.statementMap[key];
119
+ const codeLine = sourceLines[stmt.start.line - 1]?.trim() || '';
120
+ return (
121
+ !codeLine.includes('/* v8 ignore') &&
122
+ codeLine !== '' &&
123
+ !codeLine.includes('//') &&
124
+ codeLine !== '}' &&
125
+ codeLine !== '{' &&
126
+ !codeLine.includes('export const')
127
+ );
128
+ }).length
129
+ }`
130
+ );
131
+
132
+ console.log(` - Branches vraiment non testées: ${uncoveredBranches.length}`);