simple-zstd 2.0.0 → 2.1.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.
package/dist/src/index.js CHANGED
@@ -1,19 +1,7 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
4
  };
16
- var _SimpleZSTD_compressQueue, _SimpleZSTD_decompressQueue, _SimpleZSTD_compressDictCleanup, _SimpleZSTD_decompressDictCleanup, _SimpleZSTD_ready, _SimpleZSTD_poolOptions;
17
5
  Object.defineProperty(exports, "__esModule", { value: true });
18
6
  exports.SimpleZSTD = void 0;
19
7
  exports.clearDictionaryCache = clearDictionaryCache;
@@ -21,7 +9,9 @@ exports.compress = compress;
21
9
  exports.compressBuffer = compressBuffer;
22
10
  exports.decompress = decompress;
23
11
  exports.decompressBuffer = decompressBuffer;
12
+ exports.createDictionary = createDictionary;
24
13
  const node_fs_1 = __importDefault(require("node:fs"));
14
+ const node_path_1 = __importDefault(require("node:path"));
25
15
  const promises_1 = require("node:fs/promises");
26
16
  const node_crypto_1 = require("node:crypto");
27
17
  const node_stream_1 = require("node:stream");
@@ -38,6 +28,13 @@ const peek_transform_1 = __importDefault(require("./peek-transform"));
38
28
  // Dictionary cache to avoid recreating temp files for the same dictionary buffer
39
29
  // Map: hash -> { path: string, cleanup: () => void, refCount: number }
40
30
  const dictionaryCache = new Map();
31
+ async function createTempDirectory(prefix) {
32
+ const { path: tempDirectory, cleanup } = await (0, tmp_promise_1.dir)({ prefix, unsafeCleanup: true });
33
+ return {
34
+ directoryPath: tempDirectory,
35
+ cleanup: () => Promise.resolve(cleanup()),
36
+ };
37
+ }
41
38
  function hashBuffer(buffer) {
42
39
  return (0, node_crypto_1.createHash)('sha256').update(buffer).digest('hex');
43
40
  }
@@ -58,15 +55,16 @@ async function getCachedDictionaryPath(dictionary) {
58
55
  };
59
56
  }
60
57
  debug(`Dictionary cache miss: ${hash.slice(0, 8)}... - creating temp file`);
61
- const { path, cleanup: tmpCleanup } = await (0, tmp_promise_1.file)({ prefix: 'zstd-dict-' });
62
- await (0, promises_1.writeFile)(path, dictionary);
58
+ const { directoryPath, cleanup: tmpCleanup } = await createTempDirectory('zstd-dict-cache-');
59
+ const dictionaryPath = node_path_1.default.join(directoryPath, 'dictionary.zstd');
60
+ await (0, promises_1.writeFile)(dictionaryPath, dictionary);
63
61
  dictionaryCache.set(hash, {
64
- path,
62
+ path: dictionaryPath,
65
63
  cleanup: tmpCleanup,
66
64
  refCount: 1,
67
65
  });
68
66
  return {
69
- path,
67
+ path: dictionaryPath,
70
68
  cleanup: () => {
71
69
  const cached = dictionaryCache.get(hash);
72
70
  if (cached) {
@@ -112,7 +110,6 @@ catch {
112
110
  async function CreateCompressStream(compLevel, opts) {
113
111
  let lvl = compLevel;
114
112
  let zo = opts.zstdOptions || [];
115
- let path = null;
116
113
  let cleanup = () => null;
117
114
  if (!lvl)
118
115
  lvl = 3;
@@ -124,13 +121,20 @@ async function CreateCompressStream(compLevel, opts) {
124
121
  }
125
122
  else if (Buffer.isBuffer(opts.dictionary)) {
126
123
  // Use cached dictionary to avoid recreating temp files
127
- ({ path, cleanup } = await getCachedDictionaryPath(opts.dictionary));
128
- zo = [...zo, '-D', `${path}`];
124
+ const cached = await getCachedDictionaryPath(opts.dictionary);
125
+ cleanup = cached.cleanup;
126
+ zo = [...zo, '-D', cached.path];
129
127
  }
130
128
  let c;
131
129
  try {
132
130
  debug(bin, ['-zc', `-${lvl}`, ...zo], opts.spawnOptions, opts.streamOptions);
133
- c = new process_duplex_1.default(bin, ['-zc', `-${lvl}`, ...zo], opts.spawnOptions, opts.streamOptions);
131
+ c = new process_duplex_1.default({
132
+ command: bin,
133
+ args: ['-zc', `-${lvl}`, ...zo],
134
+ spawnOptions: opts.spawnOptions,
135
+ streamOptions: opts.streamOptions,
136
+ nonZeroExitPolicy: true,
137
+ });
134
138
  }
135
139
  catch (err) {
136
140
  // cleanup if error;
@@ -139,11 +143,6 @@ async function CreateCompressStream(compLevel, opts) {
139
143
  }
140
144
  c.on('exit', (code, signal) => {
141
145
  debug('c exit', code, signal);
142
- if (code !== 0) {
143
- setImmediate(() => {
144
- c.destroy(new Error(`zstd exited non zero. code: ${code} signal: ${signal}`));
145
- });
146
- }
147
146
  cleanup();
148
147
  });
149
148
  return c;
@@ -175,7 +174,6 @@ function CompressBuffer(buffer, c) {
175
174
  async function CreateDecompressStream(opts) {
176
175
  // Dictionary
177
176
  let zo = opts.zstdOptions || [];
178
- let path = null;
179
177
  let cleanup = () => null;
180
178
  let terminate = false;
181
179
  if (opts.dictionary && 'path' in opts.dictionary) {
@@ -183,13 +181,20 @@ async function CreateDecompressStream(opts) {
183
181
  }
184
182
  else if (Buffer.isBuffer(opts.dictionary)) {
185
183
  // Use cached dictionary to avoid recreating temp files
186
- ({ path, cleanup } = await getCachedDictionaryPath(opts.dictionary));
187
- zo = [...zo, '-D', `${path}`];
184
+ const cached = await getCachedDictionaryPath(opts.dictionary);
185
+ cleanup = cached.cleanup;
186
+ zo = [...zo, '-D', cached.path];
188
187
  }
189
188
  let d;
190
189
  try {
191
190
  debug(bin, ['-dc', ...zo], opts.spawnOptions, opts.streamOptions);
192
- d = new process_duplex_1.default(bin, ['-dc', ...zo], opts.spawnOptions, opts.streamOptions);
191
+ d = new process_duplex_1.default({
192
+ command: bin,
193
+ args: ['-dc', ...zo],
194
+ spawnOptions: opts.spawnOptions,
195
+ streamOptions: opts.streamOptions,
196
+ nonZeroExitPolicy: () => !terminate,
197
+ });
193
198
  }
194
199
  catch (err) {
195
200
  // cleanup if error
@@ -198,11 +203,6 @@ async function CreateDecompressStream(opts) {
198
203
  }
199
204
  d.on('exit', (code, signal) => {
200
205
  debug('d exit', code, signal);
201
- if (code !== 0 && !terminate) {
202
- setImmediate(() => {
203
- d.destroy(new Error(`zstd exited non zero. code: ${code} signal: ${signal}`));
204
- });
205
- }
206
206
  cleanup();
207
207
  });
208
208
  const wrapper = new peek_transform_1.default({ maxBuffer: 10 }, (data, swap) => {
@@ -256,23 +256,112 @@ function decompress(opts = {}) {
256
256
  return CreateDecompressStream(opts);
257
257
  }
258
258
  async function decompressBuffer(buffer, opts = {}) {
259
- const d = await CreateDecompressStream(opts);
260
- return DecompressBuffer(buffer, d);
259
+ // Preserve "smart decompression" behavior for non-zstd payloads.
260
+ if (!(0, is_zst_1.default)(buffer)) {
261
+ return buffer;
262
+ }
263
+ let zo = opts.zstdOptions || [];
264
+ let cleanup = () => null;
265
+ if (opts.dictionary && 'path' in opts.dictionary) {
266
+ zo = [...zo, '-D', `${opts.dictionary.path}`];
267
+ }
268
+ else if (Buffer.isBuffer(opts.dictionary)) {
269
+ const cachedDictionary = await getCachedDictionaryPath(opts.dictionary);
270
+ zo = [...zo, '-D', `${cachedDictionary.path}`];
271
+ cleanup = cachedDictionary.cleanup;
272
+ }
273
+ const args = ['-dc', ...zo];
274
+ return new Promise((resolve, reject) => {
275
+ debug(bin, args, opts.spawnOptions);
276
+ const child = (0, node_child_process_1.execFile)(bin, args, {
277
+ ...(opts.spawnOptions ?? {}),
278
+ encoding: 'buffer',
279
+ maxBuffer: 512 * 1024 * 1024,
280
+ }, (error, stdout, stderr) => {
281
+ cleanup();
282
+ if (!error) {
283
+ resolve(Buffer.isBuffer(stdout) ? stdout : Buffer.from(stdout));
284
+ return;
285
+ }
286
+ const code = typeof error.code === 'number' ? error.code : null;
287
+ const signal = error.signal ?? null;
288
+ const stdErrMessage = stderr?.toString().trim();
289
+ const errorMessage = stdErrMessage
290
+ ? `zstd decompression failed (code: ${code}, signal: ${signal}): ${stdErrMessage}`
291
+ : `zstd decompression failed (code: ${code}, signal: ${signal})`;
292
+ reject(new Error(errorMessage));
293
+ });
294
+ child.stdin?.end(buffer);
295
+ });
296
+ }
297
+ async function createDictionary(opts) {
298
+ if (!Array.isArray(opts.trainingFiles) || opts.trainingFiles.length === 0) {
299
+ throw new Error('createDictionary requires at least one training file or buffer');
300
+ }
301
+ const { path: tempRunDirectory, cleanup } = await (0, tmp_promise_1.dir)({
302
+ prefix: 'zstd-dict-create-run-',
303
+ unsafeCleanup: true,
304
+ });
305
+ try {
306
+ const trainingPaths = [];
307
+ const outputPath = node_path_1.default.join(tempRunDirectory, 'dictionary.zstd');
308
+ for (const [index, trainingInput] of opts.trainingFiles.entries()) {
309
+ const stagedTrainingPath = node_path_1.default.join(tempRunDirectory, `training-${index}.bin`);
310
+ if (typeof trainingInput === 'string') {
311
+ await (0, promises_1.copyFile)(trainingInput, stagedTrainingPath);
312
+ trainingPaths.push(stagedTrainingPath);
313
+ continue;
314
+ }
315
+ if (Buffer.isBuffer(trainingInput)) {
316
+ await (0, promises_1.writeFile)(stagedTrainingPath, trainingInput);
317
+ trainingPaths.push(stagedTrainingPath);
318
+ continue;
319
+ }
320
+ throw new Error('createDictionary trainingFiles entries must be file paths or Buffers');
321
+ }
322
+ const args = ['--train', ...trainingPaths, '-o', outputPath];
323
+ if (opts.maxDictSize && opts.maxDictSize > 0) {
324
+ args.push(`--maxdict=${opts.maxDictSize}`);
325
+ }
326
+ if (opts.zstdOptions?.length) {
327
+ args.push(...opts.zstdOptions);
328
+ }
329
+ await new Promise((resolve, reject) => {
330
+ debug(bin, args, opts.spawnOptions);
331
+ (0, node_child_process_1.execFile)(bin, args, opts.spawnOptions ?? {}, (error, _stdout, stderr) => {
332
+ if (!error) {
333
+ resolve();
334
+ return;
335
+ }
336
+ const code = typeof error.code === 'number' ? error.code : null;
337
+ const signal = error.signal ?? null;
338
+ const stdErrMessage = stderr?.toString().trim();
339
+ const errorMessage = stdErrMessage
340
+ ? `zstd dictionary training failed (code: ${code}, signal: ${signal}): ${stdErrMessage}`
341
+ : `zstd dictionary training failed (code: ${code}, signal: ${signal})`;
342
+ reject(new Error(errorMessage));
343
+ });
344
+ });
345
+ return (0, promises_1.readFile)(outputPath);
346
+ }
347
+ finally {
348
+ await cleanup();
349
+ }
261
350
  }
262
351
  // SimpleZSTD Class
263
352
  class SimpleZSTD {
353
+ #compressQueue;
354
+ #decompressQueue;
355
+ #compressDictCleanup = async () => undefined;
356
+ #decompressDictCleanup = async () => undefined;
357
+ #ready;
358
+ #poolOptions;
264
359
  constructor(poolOptions) {
265
- _SimpleZSTD_compressQueue.set(this, void 0);
266
- _SimpleZSTD_decompressQueue.set(this, void 0);
267
- _SimpleZSTD_compressDictCleanup.set(this, () => null);
268
- _SimpleZSTD_decompressDictCleanup.set(this, () => null);
269
- _SimpleZSTD_ready.set(this, void 0);
270
- _SimpleZSTD_poolOptions.set(this, void 0);
271
360
  debug('constructor', poolOptions);
272
- __classPrivateFieldSet(this, _SimpleZSTD_poolOptions, poolOptions, "f");
273
- __classPrivateFieldSet(this, _SimpleZSTD_compressDictCleanup, () => null, "f");
274
- __classPrivateFieldSet(this, _SimpleZSTD_decompressDictCleanup, () => null, "f");
275
- __classPrivateFieldSet(this, _SimpleZSTD_ready, new Promise((resolve, reject) => {
361
+ this.#poolOptions = poolOptions;
362
+ this.#compressDictCleanup = async () => undefined;
363
+ this.#decompressDictCleanup = async () => undefined;
364
+ this.#ready = new Promise((resolve, reject) => {
276
365
  (async () => {
277
366
  try {
278
367
  // Handle compress queue dictionary
@@ -282,10 +371,11 @@ class SimpleZSTD {
282
371
  compressDictPath = compressDict.path;
283
372
  }
284
373
  else if (compressDict && Buffer.isBuffer(compressDict)) {
285
- const { path, cleanup } = await (0, tmp_promise_1.file)({ prefix: 'zstd-dict-' });
286
- __classPrivateFieldSet(this, _SimpleZSTD_compressDictCleanup, cleanup, "f");
287
- await (0, promises_1.writeFile)(path, compressDict);
288
- compressDictPath = path;
374
+ const { directoryPath, cleanup } = await createTempDirectory('zstd-dict-pool-compress-');
375
+ const dictionaryPath = node_path_1.default.join(directoryPath, 'dictionary.zstd');
376
+ this.#compressDictCleanup = cleanup;
377
+ await (0, promises_1.writeFile)(dictionaryPath, compressDict);
378
+ compressDictPath = dictionaryPath;
289
379
  }
290
380
  // Handle decompress queue dictionary
291
381
  let decompressDictPath = undefined;
@@ -294,12 +384,13 @@ class SimpleZSTD {
294
384
  decompressDictPath = decompressDict.path;
295
385
  }
296
386
  else if (decompressDict && Buffer.isBuffer(decompressDict)) {
297
- const { path, cleanup } = await (0, tmp_promise_1.file)({ prefix: 'zstd-dict-' });
298
- __classPrivateFieldSet(this, _SimpleZSTD_decompressDictCleanup, cleanup, "f");
299
- await (0, promises_1.writeFile)(path, decompressDict);
300
- decompressDictPath = path;
387
+ const { directoryPath, cleanup } = await createTempDirectory('zstd-dict-pool-decompress-');
388
+ const dictionaryPath = node_path_1.default.join(directoryPath, 'dictionary.zstd');
389
+ this.#decompressDictCleanup = cleanup;
390
+ await (0, promises_1.writeFile)(dictionaryPath, decompressDict);
391
+ decompressDictPath = dictionaryPath;
301
392
  }
302
- __classPrivateFieldSet(this, _SimpleZSTD_compressQueue, new process_queue_1.default(poolOptions?.compressQueueSize || 0, () => {
393
+ this.#compressQueue = new process_queue_1.default(poolOptions?.compressQueueSize || 0, () => {
303
394
  debug('compress factory');
304
395
  return CreateCompressStream(poolOptions?.compressQueue?.compLevel || 3, {
305
396
  ...poolOptions?.compressQueue,
@@ -317,8 +408,8 @@ class SimpleZSTD {
317
408
  stream.destroy();
318
409
  }
319
410
  });
320
- }), "f");
321
- __classPrivateFieldSet(this, _SimpleZSTD_decompressQueue, new process_queue_1.default(poolOptions?.decompressQueueSize || 0, () => {
411
+ });
412
+ this.#decompressQueue = new process_queue_1.default(poolOptions?.decompressQueueSize || 0, () => {
322
413
  debug('decompress factory');
323
414
  return CreateDecompressStream({
324
415
  ...poolOptions?.decompressQueue,
@@ -336,7 +427,7 @@ class SimpleZSTD {
336
427
  stream.destroy();
337
428
  }
338
429
  });
339
- }), "f");
430
+ });
340
431
  debug('READY');
341
432
  resolve(null);
342
433
  }
@@ -346,11 +437,11 @@ class SimpleZSTD {
346
437
  })();
347
438
  }).catch((err) => {
348
439
  debug('ready error', err);
349
- __classPrivateFieldGet(this, _SimpleZSTD_compressDictCleanup, "f").call(this);
350
- __classPrivateFieldGet(this, _SimpleZSTD_decompressDictCleanup, "f").call(this);
351
- __classPrivateFieldSet(this, _SimpleZSTD_compressDictCleanup, () => null, "f");
352
- __classPrivateFieldSet(this, _SimpleZSTD_decompressDictCleanup, () => null, "f");
353
- }), "f");
440
+ void this.#compressDictCleanup();
441
+ void this.#decompressDictCleanup();
442
+ this.#compressDictCleanup = async () => undefined;
443
+ this.#decompressDictCleanup = async () => undefined;
444
+ });
354
445
  }
355
446
  /**
356
447
  * Create a new SimpleZSTD instance with process pooling
@@ -359,27 +450,27 @@ class SimpleZSTD {
359
450
  */
360
451
  static async create(poolOptions) {
361
452
  const instance = new SimpleZSTD(poolOptions);
362
- await __classPrivateFieldGet(instance, _SimpleZSTD_ready, "f");
453
+ await instance.#ready;
363
454
  return instance;
364
455
  }
365
456
  get queueStats() {
366
457
  return {
367
458
  compress: {
368
- hits: __classPrivateFieldGet(this, _SimpleZSTD_compressQueue, "f").hits,
369
- misses: __classPrivateFieldGet(this, _SimpleZSTD_compressQueue, "f").misses,
459
+ hits: this.#compressQueue.hits,
460
+ misses: this.#compressQueue.misses,
370
461
  },
371
462
  decompress: {
372
- hits: __classPrivateFieldGet(this, _SimpleZSTD_decompressQueue, "f").hits,
373
- misses: __classPrivateFieldGet(this, _SimpleZSTD_decompressQueue, "f").misses,
463
+ hits: this.#decompressQueue.hits,
464
+ misses: this.#decompressQueue.misses,
374
465
  },
375
466
  };
376
467
  }
377
468
  async destroy() {
378
- await Promise.all([__classPrivateFieldGet(this, _SimpleZSTD_compressQueue, "f").destroy(), __classPrivateFieldGet(this, _SimpleZSTD_decompressQueue, "f").destroy()]);
379
- __classPrivateFieldGet(this, _SimpleZSTD_compressDictCleanup, "f").call(this);
380
- __classPrivateFieldGet(this, _SimpleZSTD_decompressDictCleanup, "f").call(this);
381
- __classPrivateFieldSet(this, _SimpleZSTD_compressDictCleanup, () => null, "f");
382
- __classPrivateFieldSet(this, _SimpleZSTD_decompressDictCleanup, () => null, "f");
469
+ await Promise.all([this.#compressQueue.destroy(), this.#decompressQueue.destroy()]);
470
+ await this.#compressDictCleanup();
471
+ await this.#decompressDictCleanup();
472
+ this.#compressDictCleanup = async () => undefined;
473
+ this.#decompressDictCleanup = async () => undefined;
383
474
  }
384
475
  /**
385
476
  * Get a compression stream from the pool, or create a one-off stream with custom compression level
@@ -387,15 +478,15 @@ class SimpleZSTD {
387
478
  * @returns Promise resolving to a Duplex compression stream
388
479
  */
389
480
  async compress(compLevel) {
390
- await __classPrivateFieldGet(this, _SimpleZSTD_ready, "f");
481
+ await this.#ready;
391
482
  // If custom compression level is provided, create a one-off stream
392
483
  if (compLevel !== undefined) {
393
484
  return CreateCompressStream(compLevel, {
394
- ...__classPrivateFieldGet(this, _SimpleZSTD_poolOptions, "f")?.compressQueue,
485
+ ...this.#poolOptions?.compressQueue,
395
486
  });
396
487
  }
397
488
  // Otherwise, acquire from pool
398
- return __classPrivateFieldGet(this, _SimpleZSTD_compressQueue, "f").acquire();
489
+ return this.#compressQueue.acquire();
399
490
  }
400
491
  /**
401
492
  * Compress a buffer using the pool, or with a custom compression level
@@ -404,22 +495,21 @@ class SimpleZSTD {
404
495
  * @returns Promise resolving to compressed buffer
405
496
  */
406
497
  async compressBuffer(buffer, compLevel) {
407
- await __classPrivateFieldGet(this, _SimpleZSTD_ready, "f");
498
+ await this.#ready;
408
499
  const c = await this.compress(compLevel);
409
500
  return CompressBuffer(buffer, c);
410
501
  }
411
502
  async decompress() {
412
- await __classPrivateFieldGet(this, _SimpleZSTD_ready, "f");
413
- return __classPrivateFieldGet(this, _SimpleZSTD_decompressQueue, "f").acquire();
503
+ await this.#ready;
504
+ return this.#decompressQueue.acquire();
414
505
  }
415
506
  async decompressBuffer(buffer) {
416
- await __classPrivateFieldGet(this, _SimpleZSTD_ready, "f");
417
- const d = await __classPrivateFieldGet(this, _SimpleZSTD_decompressQueue, "f").acquire();
507
+ await this.#ready;
508
+ const d = await this.#decompressQueue.acquire();
418
509
  return DecompressBuffer(buffer, d);
419
510
  }
420
511
  }
421
512
  exports.SimpleZSTD = SimpleZSTD;
422
- _SimpleZSTD_compressQueue = new WeakMap(), _SimpleZSTD_decompressQueue = new WeakMap(), _SimpleZSTD_compressDictCleanup = new WeakMap(), _SimpleZSTD_decompressDictCleanup = new WeakMap(), _SimpleZSTD_ready = new WeakMap(), _SimpleZSTD_poolOptions = new WeakMap();
423
513
  // module.exports = {
424
514
  // SimpleZSTD,
425
515
  // compress,
@@ -427,4 +517,4 @@ _SimpleZSTD_compressQueue = new WeakMap(), _SimpleZSTD_decompressQueue = new Wea
427
517
  // decompress,
428
518
  // decompressBuffer,
429
519
  // };
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUZBLG9EQVlDO0FBMEtELDRCQUVDO0FBRUQsd0NBT0M7QUFFRCxnQ0FFQztBQUVELDRDQUdDO0FBN1JELHNEQUF5QjtBQUN6QiwrQ0FBNkM7QUFDN0MsNkNBQXlDO0FBQ3pDLDZDQUE0RDtBQUM1RCxtREFBZ0Q7QUFDaEQsMkRBQThDO0FBRTlDLG9EQUEyQjtBQUMzQiw2Q0FBbUM7QUFDbkMsa0RBQTBCO0FBRTFCLE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBSyxFQUFDLFlBQVksQ0FBQyxDQUFDO0FBRWxDLG9FQUEyQztBQUMzQyx3RUFBK0M7QUFDL0Msc0VBQTZDO0FBQzdDLHNFQUErQztBQU0vQyxpRkFBaUY7QUFDakYsdUVBQXVFO0FBQ3ZFLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFtRSxDQUFDO0FBRW5HLFNBQVMsVUFBVSxDQUFDLE1BQWM7SUFDaEMsT0FBTyxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsS0FBSyxVQUFVLHVCQUF1QixDQUNwQyxVQUFrQjtJQUVsQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFcEMsSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNyRixPQUFPO1lB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
520
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}