Skip to content

Commit f9e38f1

Browse files
fix(deps): make lzma-native optional
1 parent 38f03c1 commit f9e38f1

3 files changed

Lines changed: 32 additions & 6 deletions

File tree

package-lock.json

Lines changed: 11 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,16 @@
131131
"express": "4.22.1",
132132
"js-yaml": "4.1.1",
133133
"knex": "2.4.2",
134-
"lzma-native": "^8.0.6",
135134
"pg": "8.9.0",
136135
"pg-query-stream": "4.3.0",
137136
"ramda": "0.28.0",
138137
"redis": "4.5.1",
139138
"ws": "^8.18.0",
140139
"zod": "^3.22.4"
141140
},
141+
"optionalDependencies": {
142+
"lzma-native": "^8.0.6"
143+
},
142144
"overrides": {
143145
"axios@<0.31.0": ">=0.31.0"
144146
}

test/unit/utils/compression.spec.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ import {
1717
parseCompressionFormat,
1818
} from '../../../src/utils/compression'
1919

20+
const hasLzmaNative = (): boolean => {
21+
try {
22+
require.resolve('lzma-native')
23+
24+
return true
25+
} catch {
26+
return false
27+
}
28+
}
29+
2030
const toBuffer = async (stream: NodeJS.ReadableStream): Promise<Buffer> => {
2131
const chunks: Buffer[] = []
2232

@@ -37,6 +47,9 @@ const expectStreamToFail = async (stream: NodeJS.ReadableStream): Promise<void>
3747
}
3848

3949
describe('compression utils', () => {
50+
const xzAvailable = hasLzmaNative()
51+
const itIfXzAvailable = xzAvailable ? it : it.skip
52+
4053
const tempDirs: string[] = []
4154

4255
const createTempFile = (name: string, data: Buffer): string => {
@@ -169,7 +182,7 @@ describe('compression utils', () => {
169182
expect(decompressed.equals(input)).to.equal(true)
170183
})
171184

172-
it('round-trips data with xz streams', async () => {
185+
itIfXzAvailable('round-trips data with xz streams', async () => {
173186
const input = Buffer.from('nostream-xz-test\n'.repeat(2048), 'utf-8')
174187

175188
const compressed = await toBuffer(
@@ -244,7 +257,7 @@ describe('compression utils', () => {
244257
)
245258
})
246259

247-
it('fails to decompress invalid xz payloads', async () => {
260+
itIfXzAvailable('fails to decompress invalid xz payloads', async () => {
248261
const invalidPayload = Buffer.from('not-an-xz-stream', 'utf-8')
249262

250263
await expectStreamToFail(
@@ -254,7 +267,9 @@ describe('compression utils', () => {
254267

255268
it('round-trips binary payloads across boundary sizes', async () => {
256269
const sizes = [0, 1, 2, 31, 32, 33, 1024, 8192]
257-
const formats = [CompressionFormat.GZIP, CompressionFormat.XZ]
270+
const formats = xzAvailable
271+
? [CompressionFormat.GZIP, CompressionFormat.XZ]
272+
: [CompressionFormat.GZIP]
258273

259274
for (const size of sizes) {
260275
const input = Buffer.alloc(size)

0 commit comments

Comments
 (0)