@sanity/export 6.0.5 → 6.0.6-alpha.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.
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAA;AAoBtD,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EAGb,MAAM,YAAY,CAAA;AAKnB;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,QAAQ,CAAA;CAAC,GAC3C,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GACzC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;AAChC,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAiS/E,KAAK,yBAAyB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,gBAAgB,CAAC,GAAG;IACnF,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GAAG;IAAC,UAAU,EAAE,QAAQ,CAAA;CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GAAG;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;AAChC,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAOnG;;;;;;GAMG;+BAE+B,aAAa,KAAG,OAAO,CAAC,YAAY,CAAC;AADvE,wBAMC"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAA;AAoBtD,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EAGb,MAAM,YAAY,CAAA;AAmBnB;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,QAAQ,CAAA;CAAC,GAC3C,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GACzC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;AAChC,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAyS/E,KAAK,yBAAyB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,gBAAgB,CAAC,GAAG;IACnF,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GAAG;IAAC,UAAU,EAAE,QAAQ,CAAA;CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GAAG;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;AAChC,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAOnG;;;;;;GAMG;+BAE+B,aAAa,KAAG,OAAO,CAAC,YAAY,CAAC;AADvE,wBAMC"}
package/dist/export.js CHANGED
@@ -6,7 +6,7 @@ import { PassThrough } from 'node:stream';
6
6
  import { finished, pipeline } from 'node:stream/promises';
7
7
  import { deprecate } from 'node:util';
8
8
  import { constants as zlib } from 'node:zlib';
9
- import archiver from 'archiver';
9
+ import { Pack } from 'tar';
10
10
  import { JsonStreamStringify } from 'json-stream-stringify';
11
11
  import { isWritableStream, split, throughObj } from './util/streamHelpers.js';
12
12
  import { AssetHandler } from './AssetHandler.js';
@@ -22,21 +22,20 @@ import { stringifyStream } from './stringifyStream.js';
22
22
  import { tryParseJson } from './tryParseJson.js';
23
23
  import { getSource, validateOptions } from './options.js';
24
24
  const noop = () => null;
25
+ /** Assert that a value is a readable stream (Pack from tar extends Minipass, which is pipe-compatible but not typed as a Node.js stream) */
26
+ function assertReadableStream(value) {
27
+ if (typeof value !== 'object' ||
28
+ value === null ||
29
+ !('pipe' in value) ||
30
+ typeof value.pipe !== 'function' ||
31
+ !('on' in value) ||
32
+ typeof value.on !== 'function') {
33
+ throw new TypeError('Expected a readable stream');
34
+ }
35
+ }
25
36
  export async function exportDataset(opts) {
26
37
  const options = validateOptions(opts);
27
38
  const onProgress = options.onProgress ?? noop;
28
- const archive = archiver('tar', {
29
- gzip: true,
30
- gzipOptions: {
31
- level: options.compress ? zlib.Z_DEFAULT_COMPRESSION : zlib.Z_NO_COMPRESSION,
32
- },
33
- });
34
- archive.on('warning', (err) => {
35
- debug('Archive warning: %s', err.message);
36
- });
37
- archive.on('entry', (entry) => {
38
- debug('Adding archive entry: %s', entry.name);
39
- });
40
39
  const slugDate = new Date()
41
40
  .toISOString()
42
41
  .replace(/[^a-z0-9]/gi, '-')
@@ -45,6 +44,23 @@ export async function exportDataset(opts) {
45
44
  const prefix = `${source.id}-export-${slugDate}`;
46
45
  const tmpDir = joinPath(tmpdir(), prefix);
47
46
  await mkdir(tmpDir, { recursive: true });
47
+ // Pre-create asset directories so tar.Pack.add() doesn't throw if no assets are downloaded
48
+ await mkdir(joinPath(tmpDir, 'files'), { recursive: true });
49
+ await mkdir(joinPath(tmpDir, 'images'), { recursive: true });
50
+ const archive = new Pack({
51
+ gzip: options.compress
52
+ ? { level: zlib.Z_DEFAULT_COMPRESSION }
53
+ : { level: zlib.Z_NO_COMPRESSION },
54
+ cwd: tmpDir,
55
+ prefix,
56
+ portable: true,
57
+ onwarn: (_code, message) => {
58
+ debug('Archive warning: %s', message);
59
+ },
60
+ onWriteEntry: (entry) => {
61
+ debug('Adding archive entry: %s', entry.path);
62
+ },
63
+ });
48
64
  const dataPath = joinPath(tmpDir, 'data.ndjson');
49
65
  const assetsPath = joinPath(tmpDir, 'assets.json');
50
66
  const cleanup = () => rm(tmpDir, { recursive: true, force: true }).catch((err) => {
@@ -74,6 +90,7 @@ export async function exportDataset(opts) {
74
90
  resolve = res;
75
91
  reject = rej;
76
92
  });
93
+ assertReadableStream(archive);
77
94
  finished(archive)
78
95
  .then(() => {
79
96
  debug('Archive finished');
@@ -172,7 +189,7 @@ export async function exportDataset(opts) {
172
189
  update: true,
173
190
  });
174
191
  debug('Adding data.ndjson to archive');
175
- archive.file(dataPath, { name: 'data.ndjson', prefix });
192
+ archive.add('data.ndjson');
176
193
  if (!options.raw && options.assets) {
177
194
  onProgress({ step: 'Downloading assets...' });
178
195
  }
@@ -203,7 +220,7 @@ export async function exportDataset(opts) {
203
220
  const assetsStream = createWriteStream(assetsPath);
204
221
  await pipeline(new JsonStreamStringify(assetMap), assetsStream);
205
222
  if (options.assetsMap) {
206
- archive.file(assetsPath, { name: 'assets.json', prefix });
223
+ archive.add('assets.json');
207
224
  }
208
225
  clearInterval(progressInterval);
209
226
  }
@@ -214,11 +231,11 @@ export async function exportDataset(opts) {
214
231
  return;
215
232
  }
216
233
  // Add all downloaded assets to archive
217
- archive.directory(joinPath(tmpDir, 'files'), `${prefix}/files`);
218
- archive.directory(joinPath(tmpDir, 'images'), `${prefix}/images`);
234
+ archive.add('files');
235
+ archive.add('images');
219
236
  debug('Finalizing archive, flushing streams');
220
237
  onProgress({ step: 'Adding assets to archive...' });
221
- await archive.finalize();
238
+ archive.end();
222
239
  })
223
240
  .catch(async (err) => {
224
241
  if (debugTimer !== null)
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AACzC,OAAO,EAAC,KAAK,EAAE,EAAE,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAC,IAAI,IAAI,QAAQ,EAAC,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAC,WAAW,EAAgB,MAAM,aAAa,CAAA;AACtD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,EAAC,SAAS,IAAI,IAAI,EAAC,MAAM,WAAW,CAAA;AAE3C,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAEzD,OAAO,EAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,yBAAyB,CAAA;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAC,8BAA8B,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAChC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAQ9C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAA;AAEvD,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,IAAI,CAAA;AAgB7B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAA;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,IAAI;QACV,WAAW,EAAE;YACX,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB;SAC7E;KACF,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5B,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5B,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE;SACxB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,WAAW,EAAE,CAAA;IAEhB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,WAAW,QAAQ,EAAE,CAAA;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,EAAE,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAChE,KAAK,CAAC,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7F,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEJ,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,MAAM;QACN,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAC,CAAC;QACtF,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,EAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAC,CAAC;QAC/E,UAAU,EAAE,OAAO,CAAC,eAAe;KACpC,CAAC,CAAA;IAEF,KAAK,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;IACvD,KAAK,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhG,MAAM,YAAY,GAAa,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,UAAU;QACpB,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAEzC,IAAI,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAA;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAA;IAC7F,CAAC;IAED,IAAI,OAAsC,CAAA;IAC1C,IAAI,MAA+B,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpD,OAAO,GAAG,GAAG,CAAA;QACb,MAAM,GAAG,GAAG,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,OAAO,CAAC;SACd,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC3B,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,UAAmB,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,CAAA;QACjF,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,oFAAoF;QACpF,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;IAEJ,KAAK,CAAC,2CAA2C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,UAAU,CAAC,EAAC,IAAI,EAAE,wBAAwB,EAAC,CAAC,CAAA;IAE5C,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,cAAc,GAAkB,IAAI,CAAA;IACxC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC7B,MAAM,mBAAmB,GAAG,CAC1B,GAAmB,EACnB,IAAoB,EACpB,EAAoD,EAC9C,EAAE;QACR,EAAE,aAAa,CAAA;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,qDAAqD;QACrD,2DAA2D;QAC3D,IAAI,GAAG,GAAG,YAAY,GAAG,EAAE,EAAE,CAAC;YAC5B,UAAU,CAAC;gBACT,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YAEF,YAAY,GAAG,GAAG,CAAA;QACpB,CAAC;QAED,cAAc,GAAG,GAAG,CAAC,GAAG,CAAA;QAExB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACf,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACzD,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;QAC7B,KAAK,CAAC,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,UAAU,GAAyC,IAAI,CAAA;IAC3D,SAAS,kBAAkB;QACzB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,KAAK,CAAC,2BAA2B,EAAE;gBACjC,aAAa;gBACb,cAAc;aACf,CAAC,CAAA;YAEF,yBAAyB;YACzB,kBAAkB,EAAE,CAAA;QACtB,CAAC,EAAE,8BAA8B,CAAC,CAAA;IACpC,CAAC;IAED,kBAAkB,EAAE,CAAA;IAEpB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,GAAmB,EAAE,IAAoB,EAAE,QAAQ,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,GAAmB,EAAE,IAAoB,EAAE,QAAQ,EAAE,EAAE;QAC5F,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAEvD,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC;SACjB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAEpF,QAAQ,CACN,WAAW,EACX,aAAa,EAAE,EACf,KAAK,CAAC,YAAY,CAAC,EACnB,gBAAgB,EAAE,EAClB,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAC/B,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAClC,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,eAAe,EAAE,EACjB,UAAU,CACX,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACvB,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,KAAK,CAAC,yBAAyB,cAAc,IAAI,aAAa,IAAI,EAAE,GAAG,CAAC,CAAA;QACxE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;SAC9C,IAAI,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QAEjD,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAChC,UAAU,CAAC;YACT,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAC,CAAC,CAAA;QAErD,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,UAAU,CAAC,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,MAAM,SAAS,GACb,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAA;YAE/E,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAM;YACR,CAAC;YAED,aAAa,GAAG,SAAS,CAAA;YACzB,UAAU,CAAC;gBACT,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,YAAY,CAAC,SAAS;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;QACJ,CAAC,EAAE,GAAG,CAAC,CAAA;QAEP,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACxD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;YAE5C,wEAAwE;YACxE,UAAU,CAAC;gBACT,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,YAAY,CAAC,SAAS;gBAC/B,KAAK,EAAE,YAAY,CAAC,SAAS;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,QAAQ,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAA;YAE/D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAC,CAAC,CAAA;YACzD,CAAC;YAED,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,gBAAgB,CAAC,CAAA;YAC/B,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,0CAA0C;YACtE,MAAM,CAAC,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAA;YACvE,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,QAAQ,CAAC,CAAA;QAC/D,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,MAAM,SAAS,CAAC,CAAA;QAEjE,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAC7C,UAAU,CAAC,EAAC,IAAI,EAAE,6BAA6B,EAAC,CAAC,CAAA;QACjD,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,GAAY,EAAE,EAAE;QAC5B,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,KAAK,CAAC,yBAAyB,cAAc,IAAI,aAAa,IAAI,EAAE,GAAG,CAAC,CAAA;QACxE,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;SAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;SACxB,KAAK,CAAC,UAAU,CAAC,CAAA;IAEpB,KAAK,UAAU,UAAU,CAAC,GAAW;QACnC,UAAU,CAAC,EAAC,IAAI,EAAE,6BAA6B,EAAC,CAAC,CAAA;QACjD,MAAM,OAAO,EAAE,CAAA;QAEf,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACzB,OAAO,CAAC;gBACN,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa;gBACb,UAAU,EAAE,YAAY,CAAC,YAAY;aACtC,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9C,YAAY,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,CAAC,GAAG,CAAC,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW;QACjC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,OAAO,aAAa,CAAC,OAAwB,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,eAAe,SAAS,CACtB,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,EACD,kJAAkJ,EAClJ,2BAA2B,CAC5B,CAAA"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AACzC,OAAO,EAAC,KAAK,EAAE,EAAE,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAC,IAAI,IAAI,QAAQ,EAAC,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAC,WAAW,EAAgB,MAAM,aAAa,CAAA;AACtD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,EAAC,SAAS,IAAI,IAAI,EAAC,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAEzD,OAAO,EAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,yBAAyB,CAAA;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAC,8BAA8B,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAChC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAQ9C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAA;AAEvD,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,IAAI,CAAA;AAE7B,4IAA4I;AAC5I,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;QAChC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,EAAE,KAAK,UAAU,EAC9B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAA;IACnD,CAAC;AACH,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAA;IAE7C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE;SACxB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,WAAW,EAAE,CAAA;IAEhB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,WAAW,QAAQ,EAAE,CAAA;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IACtC,2FAA2F;IAC3F,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IACzD,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC;QACvB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACpB,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAC;YACrC,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAC;QAClC,GAAG,EAAE,MAAM;QACX,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACzB,KAAK,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,EAAE,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAChE,KAAK,CAAC,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7F,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEJ,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,MAAM;QACN,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAC,CAAC;QACtF,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,EAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAC,CAAC;QAC/E,UAAU,EAAE,OAAO,CAAC,eAAe;KACpC,CAAC,CAAA;IAEF,KAAK,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;IACvD,KAAK,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhG,MAAM,YAAY,GAAa,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,UAAU;QACpB,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAEzC,IAAI,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAA;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAA;IAC7F,CAAC;IAED,IAAI,OAAsC,CAAA;IAC1C,IAAI,MAA+B,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpD,OAAO,GAAG,GAAG,CAAA;QACb,MAAM,GAAG,GAAG,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC;SACd,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC3B,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,UAAmB,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,CAAA;QACjF,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,oFAAoF;QACpF,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;IAEJ,KAAK,CAAC,2CAA2C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,UAAU,CAAC,EAAC,IAAI,EAAE,wBAAwB,EAAC,CAAC,CAAA;IAE5C,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,cAAc,GAAkB,IAAI,CAAA;IACxC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC7B,MAAM,mBAAmB,GAAG,CAC1B,GAAmB,EACnB,IAAoB,EACpB,EAAoD,EAC9C,EAAE;QACR,EAAE,aAAa,CAAA;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,qDAAqD;QACrD,2DAA2D;QAC3D,IAAI,GAAG,GAAG,YAAY,GAAG,EAAE,EAAE,CAAC;YAC5B,UAAU,CAAC;gBACT,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YAEF,YAAY,GAAG,GAAG,CAAA;QACpB,CAAC;QAED,cAAc,GAAG,GAAG,CAAC,GAAG,CAAA;QAExB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACf,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACzD,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;QAC7B,KAAK,CAAC,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,UAAU,GAAyC,IAAI,CAAA;IAC3D,SAAS,kBAAkB;QACzB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,KAAK,CAAC,2BAA2B,EAAE;gBACjC,aAAa;gBACb,cAAc;aACf,CAAC,CAAA;YAEF,yBAAyB;YACzB,kBAAkB,EAAE,CAAA;QACtB,CAAC,EAAE,8BAA8B,CAAC,CAAA;IACpC,CAAC;IAED,kBAAkB,EAAE,CAAA;IAEpB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,GAAmB,EAAE,IAAoB,EAAE,QAAQ,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,GAAmB,EAAE,IAAoB,EAAE,QAAQ,EAAE,EAAE;QAC5F,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAEvD,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC;SACjB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAEpF,QAAQ,CACN,WAAW,EACX,aAAa,EAAE,EACf,KAAK,CAAC,YAAY,CAAC,EACnB,gBAAgB,EAAE,EAClB,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAC/B,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAClC,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,eAAe,EAAE,EACjB,UAAU,CACX,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACvB,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,KAAK,CAAC,yBAAyB,cAAc,IAAI,aAAa,IAAI,EAAE,GAAG,CAAC,CAAA;QACxE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;SAC9C,IAAI,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QAEjD,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAChC,UAAU,CAAC;YACT,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAE1B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,UAAU,CAAC,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,MAAM,SAAS,GACb,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAA;YAE/E,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAM;YACR,CAAC;YAED,aAAa,GAAG,SAAS,CAAA;YACzB,UAAU,CAAC;gBACT,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,YAAY,CAAC,SAAS;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;QACJ,CAAC,EAAE,GAAG,CAAC,CAAA;QAEP,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACxD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;YAE5C,wEAAwE;YACxE,UAAU,CAAC;gBACT,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,YAAY,CAAC,SAAS;gBAC/B,KAAK,EAAE,YAAY,CAAC,SAAS;gBAC7B,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;YAClD,MAAM,QAAQ,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAA;YAE/D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAC5B,CAAC;YAED,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,gBAAgB,CAAC,CAAA;YAC/B,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,0CAA0C;YACtE,MAAM,CAAC,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAA;YACvE,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAErB,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAC7C,UAAU,CAAC,EAAC,IAAI,EAAE,6BAA6B,EAAC,CAAC,CAAA;QACjD,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,GAAY,EAAE,EAAE;QAC5B,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,KAAK,CAAC,yBAAyB,cAAc,IAAI,aAAa,IAAI,EAAE,GAAG,CAAC,CAAA;QACxE,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEJ,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;SAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;SACxB,KAAK,CAAC,UAAU,CAAC,CAAA;IAEpB,KAAK,UAAU,UAAU,CAAC,GAAW;QACnC,UAAU,CAAC,EAAC,IAAI,EAAE,6BAA6B,EAAC,CAAC,CAAA;QACjD,MAAM,OAAO,EAAE,CAAA;QAEf,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACzB,OAAO,CAAC;gBACN,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa;gBACb,UAAU,EAAE,YAAY,CAAC,YAAY;aACtC,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9C,YAAY,CAAC,KAAK,EAAE,CAAA;QACpB,MAAM,CAAC,GAAG,CAAC,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW;QACjC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,OAAO,aAAa,CAAC,OAAwB,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,eAAe,SAAS,CACtB,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,EACD,kJAAkJ,EAClJ,2BAA2B,CAC5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ExportInputOptions, ExportOptions } from './types.js';
2
+ export declare function validateOptions(opts: ExportInputOptions): ExportOptions;
3
+ //# sourceMappingURL=validateOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.d.ts","sourceRoot":"","sources":["../src/validateOptions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,kBAAkB,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAyBjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CA+FvE"}
@@ -0,0 +1,81 @@
1
+ import { ASSET_DOWNLOAD_MAX_RETRIES, DOCUMENT_STREAM_MAX_RETRIES, MODE_CURSOR, MODE_STREAM, REQUEST_READ_TIMEOUT, } from './constants.js';
2
+ const clientMethods = ['getUrl', 'config'];
3
+ const booleanFlags = ['assets', 'raw', 'compress', 'drafts'];
4
+ const numberFlags = ['maxAssetRetries', 'maxRetries', 'assetConcurrency', 'readTimeout'];
5
+ const exportDefaults = {
6
+ compress: true,
7
+ drafts: true,
8
+ assets: true,
9
+ assetsMap: true,
10
+ raw: false,
11
+ mode: MODE_STREAM,
12
+ maxRetries: DOCUMENT_STREAM_MAX_RETRIES,
13
+ maxAssetRetries: ASSET_DOWNLOAD_MAX_RETRIES,
14
+ readTimeout: REQUEST_READ_TIMEOUT,
15
+ filterDocument: () => true,
16
+ transformDocument: (doc) => doc,
17
+ };
18
+ export function validateOptions(opts) {
19
+ const options = { ...exportDefaults, ...opts };
20
+ const resources = [options.dataset, options.mediaLibraryId].filter((resource) => typeof resource === 'string' && resource.length !== 0);
21
+ if (resources.length === 0) {
22
+ throw new Error('either `options.dataset` or `options.mediaLibraryId` must be specified, got neither');
23
+ }
24
+ if (resources.length === 2) {
25
+ throw new Error('either `options.dataset` or `options.mediaLibraryId` must be specified, got both');
26
+ }
27
+ // Type narrowing for mode validation
28
+ const mode = options.mode;
29
+ if (typeof mode !== 'string') {
30
+ throw new Error(`options.mode must be either "${MODE_STREAM}" or "${MODE_CURSOR}", got "${String(mode)}"`);
31
+ }
32
+ if (mode !== MODE_STREAM && mode !== MODE_CURSOR) {
33
+ throw new Error(`options.mode must be either "${MODE_STREAM}" or "${MODE_CURSOR}", got "${mode}"`);
34
+ }
35
+ const onProgress = options.onProgress;
36
+ if (onProgress !== undefined && typeof onProgress !== 'function') {
37
+ throw new Error(`options.onProgress must be a function`);
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
40
+ if (!options.client) {
41
+ throw new Error('`options.client` must be set to an instance of @sanity/client');
42
+ }
43
+ const client = options.client;
44
+ const missing = clientMethods.find((key) => typeof client[key] !== 'function');
45
+ if (missing) {
46
+ throw new Error(`\`options.client\` is not a valid @sanity/client instance - no "${missing}" method found`);
47
+ }
48
+ const clientConfig = options.client.config();
49
+ if (!clientConfig.token) {
50
+ throw new Error('Client is not instantiated with a `token`');
51
+ }
52
+ for (const flag of booleanFlags) {
53
+ if (typeof options[flag] !== 'boolean') {
54
+ throw new Error(`Flag ${flag} must be a boolean (true/false)`);
55
+ }
56
+ }
57
+ for (const flag of numberFlags) {
58
+ if (typeof options[flag] !== 'undefined' && typeof options[flag] !== 'number') {
59
+ throw new Error(`Flag ${flag} must be a number if specified`);
60
+ }
61
+ }
62
+ if (!options.outputPath) {
63
+ throw new Error('outputPath must be specified (- for stdout)');
64
+ }
65
+ if (options.assetConcurrency && (options.assetConcurrency < 1 || options.assetConcurrency > 24)) {
66
+ throw new Error('`assetConcurrency` must be between 1 and 24');
67
+ }
68
+ if (typeof options.filterDocument !== 'undefined' &&
69
+ typeof options.filterDocument !== 'function') {
70
+ throw new Error('`filterDocument` must be a function');
71
+ }
72
+ if (typeof options.transformDocument !== 'undefined' &&
73
+ typeof options.transformDocument !== 'function') {
74
+ throw new Error('`transformDocument` must be a function');
75
+ }
76
+ if (typeof options.assetsMap !== 'undefined' && typeof options.assetsMap !== 'boolean') {
77
+ throw new Error('`assetsMap` must be a boolean');
78
+ }
79
+ return options;
80
+ }
81
+ //# sourceMappingURL=validateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.js","sourceRoot":"","sources":["../src/validateOptions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/export",
3
- "version": "6.0.5",
3
+ "version": "6.0.6-alpha.0",
4
4
  "description": "Export Sanity documents and assets",
5
5
  "keywords": [
6
6
  "sanity",
@@ -47,18 +47,17 @@
47
47
  "typecheck": "tsc --noEmit"
48
48
  },
49
49
  "dependencies": {
50
- "archiver": "^7.0.1",
51
50
  "debug": "^4.3.4",
52
51
  "get-it": "^8.6.10",
53
52
  "json-stream-stringify": "^3.1.6",
54
53
  "p-queue": "^9.0.1",
54
+ "tar": "^7.5.2",
55
55
  "tar-stream": "^3.1.7"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@eslint/js": "^9.39.1",
59
59
  "@sanity/client": "^7.13.1",
60
60
  "@sanity/semantic-release-preset": "^5.0.0",
61
- "@types/archiver": "^7.0.0",
62
61
  "@types/debug": "^4.1.12",
63
62
  "@types/node": "^20.19.0",
64
63
  "@types/tar-stream": "^3.1.3",
@@ -69,7 +68,6 @@
69
68
  "nock": "^14.0.10",
70
69
  "prettier": "^3.7.4",
71
70
  "prettier-plugin-packagejson": "^2.5.20",
72
- "tar": "^7.5.2",
73
71
  "typescript": "^5.9.3",
74
72
  "typescript-eslint": "^8.48.1",
75
73
  "vitest": "^4.0.15"
@@ -78,7 +76,6 @@
78
76
  "node": ">=20.19 <22 || >=22.12"
79
77
  },
80
78
  "publishConfig": {
81
- "access": "public",
82
- "provenance": true
79
+ "access": "public"
83
80
  }
84
81
  }
package/src/export.ts CHANGED
@@ -7,7 +7,7 @@ import {finished, pipeline} from 'node:stream/promises'
7
7
  import {deprecate} from 'node:util'
8
8
  import {constants as zlib} from 'node:zlib'
9
9
 
10
- import archiver from 'archiver'
10
+ import {Pack} from 'tar'
11
11
  import {JsonStreamStringify} from 'json-stream-stringify'
12
12
 
13
13
  import {isWritableStream, split, throughObj} from './util/streamHelpers.js'
@@ -33,6 +33,20 @@ import {getSource, validateOptions} from './options.js'
33
33
 
34
34
  const noop = (): null => null
35
35
 
36
+ /** Assert that a value is a readable stream (Pack from tar extends Minipass, which is pipe-compatible but not typed as a Node.js stream) */
37
+ function assertReadableStream(value: unknown): asserts value is NodeJS.ReadableStream {
38
+ if (
39
+ typeof value !== 'object' ||
40
+ value === null ||
41
+ !('pipe' in value) ||
42
+ typeof value.pipe !== 'function' ||
43
+ !('on' in value) ||
44
+ typeof value.on !== 'function'
45
+ ) {
46
+ throw new TypeError('Expected a readable stream')
47
+ }
48
+ }
49
+
36
50
  /**
37
51
  * Export the dataset with the given options.
38
52
  *
@@ -50,18 +64,6 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
50
64
  export async function exportDataset(opts: ExportOptions): Promise<ExportResult> {
51
65
  const options = validateOptions(opts)
52
66
  const onProgress = options.onProgress ?? noop
53
- const archive = archiver('tar', {
54
- gzip: true,
55
- gzipOptions: {
56
- level: options.compress ? zlib.Z_DEFAULT_COMPRESSION : zlib.Z_NO_COMPRESSION,
57
- },
58
- })
59
- archive.on('warning', (err) => {
60
- debug('Archive warning: %s', err.message)
61
- })
62
- archive.on('entry', (entry) => {
63
- debug('Adding archive entry: %s', entry.name)
64
- })
65
67
 
66
68
  const slugDate = new Date()
67
69
  .toISOString()
@@ -72,6 +74,25 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
72
74
  const prefix = `${source.id}-export-${slugDate}`
73
75
  const tmpDir = joinPath(tmpdir(), prefix)
74
76
  await mkdir(tmpDir, {recursive: true})
77
+ // Pre-create asset directories so tar.Pack.add() doesn't throw if no assets are downloaded
78
+ await mkdir(joinPath(tmpDir, 'files'), {recursive: true})
79
+ await mkdir(joinPath(tmpDir, 'images'), {recursive: true})
80
+
81
+ const archive = new Pack({
82
+ gzip: options.compress
83
+ ? {level: zlib.Z_DEFAULT_COMPRESSION}
84
+ : {level: zlib.Z_NO_COMPRESSION},
85
+ cwd: tmpDir,
86
+ prefix,
87
+ portable: true,
88
+ onwarn: (_code, message) => {
89
+ debug('Archive warning: %s', message)
90
+ },
91
+ onWriteEntry: (entry) => {
92
+ debug('Adding archive entry: %s', entry.path)
93
+ },
94
+ })
95
+
75
96
  const dataPath = joinPath(tmpDir, 'data.ndjson')
76
97
  const assetsPath = joinPath(tmpDir, 'assets.json')
77
98
 
@@ -109,6 +130,7 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
109
130
  reject = rej
110
131
  })
111
132
 
133
+ assertReadableStream(archive)
112
134
  finished(archive)
113
135
  .then(() => {
114
136
  debug('Archive finished')
@@ -237,7 +259,7 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
237
259
  })
238
260
 
239
261
  debug('Adding data.ndjson to archive')
240
- archive.file(dataPath, {name: 'data.ndjson', prefix})
262
+ archive.add('data.ndjson')
241
263
 
242
264
  if (!options.raw && options.assets) {
243
265
  onProgress({step: 'Downloading assets...'})
@@ -277,7 +299,7 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
277
299
  await pipeline(new JsonStreamStringify(assetMap), assetsStream)
278
300
 
279
301
  if (options.assetsMap) {
280
- archive.file(assetsPath, {name: 'assets.json', prefix})
302
+ archive.add('assets.json')
281
303
  }
282
304
 
283
305
  clearInterval(progressInterval)
@@ -289,12 +311,12 @@ export async function exportDataset(opts: ExportOptions): Promise<ExportResult>
289
311
  }
290
312
 
291
313
  // Add all downloaded assets to archive
292
- archive.directory(joinPath(tmpDir, 'files'), `${prefix}/files`)
293
- archive.directory(joinPath(tmpDir, 'images'), `${prefix}/images`)
314
+ archive.add('files')
315
+ archive.add('images')
294
316
 
295
317
  debug('Finalizing archive, flushing streams')
296
318
  onProgress({step: 'Adding assets to archive...'})
297
- await archive.finalize()
319
+ archive.end()
298
320
  })
299
321
  .catch(async (err: unknown) => {
300
322
  if (debugTimer !== null) clearTimeout(debugTimer)