@zaowu-labs/data 1.0.5 → 1.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/README.md CHANGED
@@ -20,3 +20,26 @@ Safety:
20
20
  - Confirmed writes refuse to overwrite the input file or an existing output.
21
21
  - XLSX support requires explicit sheet selection when the first sheet is not the
22
22
  intended input.
23
+
24
+ ## Real-input limits and analysis
25
+
26
+ All inputs are bounded to 20 MiB. Tables allow 250,000 data rows, 1,024 columns,
27
+ and two million rectangular cells including the header. XLSX is checked against
28
+ an actual 64 MiB inflated-byte budget and 2,000 archive entries before SheetJS
29
+ parsing. Oversized worksheet ranges fail before sparse cells are enumerated.
30
+ No data is silently truncated to fit a limit.
31
+
32
+ Numeric `count`, `min`, `max`, and `average` use finite numeric cells only;
33
+ `missingCount` and `nonNumericCount` explain excluded cells. Leading-zero IDs,
34
+ units such as `20kg`, and numeric overflow remain non-numeric source values.
35
+ A scaled compensated mean avoids overflow on finite extreme values.
36
+
37
+ Extra unnamed columns receive stable `column_N` headers instead of losing data.
38
+ JSON accepts an object or arrays of objects, preserves nested values as JSON
39
+ cell text, and rejects primitive/mixed arrays. Unclosed CSV quotes fail with a
40
+ repair hint. XLSX formulas are not executed: results use stored cell values,
41
+ which may need recalculation in a spreadsheet editor before export.
42
+
43
+ Confirmation execution also checks the freshly prepared content against the
44
+ already verified plan immediately before the write/request. Changes between
45
+ reads fail with `OPERATION_PLAN_MISMATCH` and produce no write or network call.
package/dist/index.d.ts CHANGED
@@ -25,6 +25,8 @@ export interface NumericColumnAnalysis {
25
25
  min: number;
26
26
  max: number;
27
27
  average: number;
28
+ missingCount: number;
29
+ nonNumericCount: number;
28
30
  }
29
31
  export interface DataAnalyzeResult {
30
32
  schemaVersion: 1;
@@ -78,6 +80,7 @@ export declare const cleanData: (inputPath: string, options?: {
78
80
  outputPath?: string;
79
81
  yes?: boolean;
80
82
  sheet?: string;
83
+ expectedContent?: string;
81
84
  }) => Promise<DataCleanResult>;
82
85
  export declare const inferDataSchema: (filePath: string, options?: DataReadOptions) => Promise<DataSchemaResult>;
83
86
  export declare const sampleData: (filePath: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { readFile } from 'node:fs/promises';
2
1
  import path from 'node:path';
3
- import { assertSafeOutputPath, createCapabilityLedger, readTextFileOrThrow, stripUtf8Bom, writeTextFileExclusive, ZaoWuError, } from '@zaowu-labs/core';
2
+ import { assertTableSize, assertWorkbookSize, dataTooLarge, MAX_DATA_COLUMNS, MAX_DATA_ROWS, readDataFile, } from './input-limits.js';
3
+ import { assertSafeOutputPath, createCapabilityLedger, stripUtf8Bom, writeTextFileExclusive, ZaoWuError, } from '@zaowu-labs/core';
4
4
  export const DATA_DOMAIN = {
5
5
  name: 'data',
6
6
  summary: 'Data workflows for inspection, analysis, and cleanup',
@@ -79,6 +79,8 @@ const createCellCollector = () => ({
79
79
  values: [],
80
80
  trimmedCells: 0,
81
81
  push(value) {
82
+ if (this.values.length >= MAX_DATA_COLUMNS)
83
+ throw dataTooLarge();
82
84
  const trimmed = value.trim();
83
85
  if (value !== trimmed) {
84
86
  this.trimmedCells += 1;
@@ -88,7 +90,7 @@ const createCellCollector = () => ({
88
90
  });
89
91
  const parseTsvLine = (line) => {
90
92
  const cells = createCellCollector();
91
- for (const value of line.split('\t')) {
93
+ for (const value of line.split('\t', MAX_DATA_COLUMNS + 1)) {
92
94
  cells.push(value);
93
95
  }
94
96
  return { values: cells.values, trimmedCells: cells.trimmedCells };
@@ -103,6 +105,7 @@ const parseTsvLine = (line) => {
103
105
  const parseCsvRecords = (content) => {
104
106
  const records = [];
105
107
  let emptyLineCount = 0;
108
+ let widestRecord = 0;
106
109
  let cells = createCellCollector();
107
110
  let current = '';
108
111
  let raw = '';
@@ -117,6 +120,8 @@ const parseCsvRecords = (content) => {
117
120
  emptyLineCount += 1;
118
121
  }
119
122
  else {
123
+ widestRecord = Math.max(widestRecord, cells.values.length);
124
+ assertTableSize(records.length, widestRecord);
120
125
  records.push({ values: cells.values, trimmedCells: cells.trimmedCells });
121
126
  }
122
127
  cells = createCellCollector();
@@ -153,6 +158,13 @@ const parseCsvRecords = (content) => {
153
158
  }
154
159
  current += char;
155
160
  }
161
+ if (quoted)
162
+ throw new ZaoWuError({
163
+ code: 'DATA_READ_FAILED',
164
+ message: 'CSV contains an unclosed quoted field.',
165
+ why: 'The file ended before a quoted field was closed; continuing would merge records and lose row boundaries.',
166
+ fix: 'Close the quoted field or re-export the file as valid CSV.',
167
+ });
156
168
  if (started || current !== '' || cells.values.length > 0) {
157
169
  finishRecord();
158
170
  }
@@ -163,12 +175,16 @@ const parseTsvRecords = (content) => {
163
175
  const contentLines = rawLines.at(-1) === '' ? rawLines.slice(0, -1) : rawLines;
164
176
  const records = [];
165
177
  let emptyLineCount = 0;
178
+ let widestRecord = 0;
166
179
  for (const line of contentLines) {
167
180
  if (line.trim() === '') {
168
181
  emptyLineCount += 1;
169
182
  continue;
170
183
  }
171
- records.push(parseTsvLine(line));
184
+ const record = parseTsvLine(line);
185
+ widestRecord = Math.max(widestRecord, record.values.length);
186
+ assertTableSize(records.length, widestRecord);
187
+ records.push(record);
172
188
  }
173
189
  return { records, emptyLineCount };
174
190
  };
@@ -202,7 +218,8 @@ const normalizeHeaders = (headers) => {
202
218
  */
203
219
  const openXlsxWorkbook = async (filePath) => {
204
220
  try {
205
- const workbookBuffer = await readFile(filePath);
221
+ const workbookBuffer = await readDataFile(filePath);
222
+ await assertWorkbookSize(workbookBuffer);
206
223
  if (workbookBuffer[0] !== 0x50 || workbookBuffer[1] !== 0x4b) {
207
224
  throw new ZaoWuError({
208
225
  code: 'DATA_READ_FAILED',
@@ -216,6 +233,9 @@ const openXlsxWorkbook = async (filePath) => {
216
233
  XLSX,
217
234
  workbook: XLSX.read(workbookBuffer, {
218
235
  type: 'buffer',
236
+ sheetRows: MAX_DATA_ROWS + 2,
237
+ cellHTML: false,
238
+ cellStyles: false,
219
239
  }),
220
240
  };
221
241
  }
@@ -223,11 +243,10 @@ const openXlsxWorkbook = async (filePath) => {
223
243
  if (error instanceof ZaoWuError) {
224
244
  throw error;
225
245
  }
226
- const errorMsg = error instanceof Error ? error.message : String(error);
227
246
  throw new ZaoWuError({
228
247
  code: 'DATA_READ_FAILED',
229
248
  message: 'Could not read data file.',
230
- why: `ZaoWu tried to read \`${filePath}\` as an XLSX file, but the file was not readable. Details: ${errorMsg}`,
249
+ why: `ZaoWu tried to read \`${filePath}\` as an XLSX file, but the file was not readable. The workbook may be corrupt, encrypted, or unsupported.`,
231
250
  fix: 'Check the path, file permissions, and workbook format, then run the command again.',
232
251
  });
233
252
  }
@@ -237,16 +256,29 @@ export const loadDataTable = async (filePath, options = {}) => {
237
256
  let content;
238
257
  if (source.format === 'json') {
239
258
  try {
240
- const jsonContent = await readFile(filePath, 'utf8');
259
+ const jsonContent = (await readDataFile(filePath)).toString('utf8');
241
260
  const parsed = JSON.parse(stripUtf8Bom(jsonContent));
261
+ if (!parsed ||
262
+ typeof parsed !== 'object' ||
263
+ (Array.isArray(parsed) &&
264
+ parsed.some((item) => !item || typeof item !== 'object' || Array.isArray(item)))) {
265
+ throw new ZaoWuError({
266
+ code: 'DATA_READ_FAILED',
267
+ message: 'JSON data must contain records.',
268
+ why: 'Table commands require an object or an array of objects; primitive and mixed arrays have no stable columns.',
269
+ fix: 'Use records such as [{"name":"A","amount":10}] or export a CSV table.',
270
+ });
271
+ }
242
272
  let rows = [];
243
273
  let headers = [];
244
274
  if (Array.isArray(parsed)) {
275
+ assertTableSize(parsed.length, 0);
245
276
  const uniqueKeys = new Set();
246
277
  for (const item of parsed) {
247
278
  if (item && typeof item === 'object') {
248
279
  for (const key of Object.keys(item)) {
249
280
  uniqueKeys.add(key);
281
+ assertTableSize(parsed.length, uniqueKeys.size);
250
282
  }
251
283
  }
252
284
  }
@@ -258,7 +290,9 @@ export const loadDataTable = async (filePath, options = {}) => {
258
290
  const obj = item;
259
291
  for (const key of sourceKeys) {
260
292
  const val = Object.hasOwn(obj, key) ? obj[key] : undefined;
261
- row.push(val === undefined || val === null ? '' : String(val).trim());
293
+ row.push(val === undefined || val === null
294
+ ? ''
295
+ : (typeof val === 'object' ? JSON.stringify(val) : String(val)).trim());
262
296
  }
263
297
  }
264
298
  else {
@@ -271,12 +305,15 @@ export const loadDataTable = async (filePath, options = {}) => {
271
305
  }
272
306
  else if (parsed && typeof parsed === 'object') {
273
307
  const sourceKeys = Object.keys(parsed);
308
+ assertTableSize(1, sourceKeys.length);
274
309
  headers = normalizeHeaders(sourceKeys);
275
310
  const row = [];
276
311
  const obj = parsed;
277
312
  for (const key of sourceKeys) {
278
313
  const val = obj[key];
279
- row.push(val === undefined || val === null ? '' : String(val).trim());
314
+ row.push(val === undefined || val === null
315
+ ? ''
316
+ : (typeof val === 'object' ? JSON.stringify(val) : String(val)).trim());
280
317
  }
281
318
  rows.push(row);
282
319
  }
@@ -324,6 +361,11 @@ export const loadDataTable = async (filePath, options = {}) => {
324
361
  });
325
362
  }
326
363
  const sheet = sheetName ? workbook.Sheets[sheetName] : undefined;
364
+ const range = sheet?.['!fullref'] || sheet?.['!ref'];
365
+ if (range) {
366
+ const bounds = XLSX.utils.decode_range(range);
367
+ assertTableSize(bounds.e.r, bounds.e.c + 1);
368
+ }
327
369
  const rows = sheet
328
370
  ? XLSX.utils.sheet_to_json(sheet, {
329
371
  header: 1,
@@ -331,7 +373,9 @@ export const loadDataTable = async (filePath, options = {}) => {
331
373
  })
332
374
  : [];
333
375
  const normalizedRows = rows.map((row) => row.map((value) => String(value).trim()));
334
- const headers = normalizeHeaders(normalizedRows[0] ?? []);
376
+ const width = normalizedRows.reduce((max, row) => Math.max(max, row.length), 0);
377
+ assertTableSize(Math.max(0, normalizedRows.length - 1), width);
378
+ const headers = normalizeHeaders(Array.from({ length: width }, (_, i) => normalizedRows[0]?.[i] ?? ''));
335
379
  const dataRows = normalizedRows.slice(1).filter((row) => row.some((value) => value.trim()));
336
380
  return {
337
381
  filePath,
@@ -350,31 +394,27 @@ export const loadDataTable = async (filePath, options = {}) => {
350
394
  if (error instanceof ZaoWuError) {
351
395
  throw error;
352
396
  }
353
- const errorMsg = error instanceof Error ? error.message : String(error);
354
397
  throw new ZaoWuError({
355
398
  code: 'DATA_READ_FAILED',
356
399
  message: 'Could not read data file.',
357
- why: `ZaoWu tried to read \`${filePath}\` as an XLSX file, but the file was not readable. Details: ${errorMsg}`,
400
+ why: `ZaoWu tried to read \`${filePath}\` as an XLSX file, but the file was not readable. The workbook may be corrupt, encrypted, or unsupported.`,
358
401
  fix: 'Check the path, file permissions, and workbook format, then run the command again.',
359
402
  });
360
403
  }
361
404
  }
362
- content = await readTextFileOrThrow(filePath, {
363
- code: 'DATA_READ_FAILED',
364
- message: 'Could not read data file.',
365
- why: `ZaoWu tried to read \`${filePath}\`, but the file was not readable.`,
366
- fix: 'Check the path and file permissions, then run the command again.',
367
- }, { stripBom: true });
405
+ content = stripUtf8Bom((await readDataFile(filePath)).toString('utf8'));
368
406
  const { records, emptyLineCount } = source.delimiter === ',' ? parseCsvRecords(content) : parseTsvRecords(content);
369
407
  const parsedHeaders = records[0] ?? { values: [], trimmedCells: 0 };
370
408
  const parsedRows = records.slice(1);
409
+ const width = records.reduce((max, record) => Math.max(max, record.values.length), 0);
410
+ assertTableSize(Math.max(0, records.length - 1), width);
371
411
  const trimmedCellCount = parsedHeaders.trimmedCells +
372
412
  parsedRows.reduce((count, parsedLine) => count + parsedLine.trimmedCells, 0);
373
413
  return {
374
414
  filePath,
375
415
  format: source.format,
376
416
  delimiter: source.delimiter,
377
- headers: normalizeHeaders(parsedHeaders.values),
417
+ headers: normalizeHeaders(Array.from({ length: width }, (_, i) => parsedHeaders.values[i] ?? '')),
378
418
  rows: parsedRows.map((row) => row.values),
379
419
  emptyLineCount,
380
420
  trimmedCellCount,
@@ -427,11 +467,15 @@ export const analyzeData = async (filePath, options = {}) => {
427
467
  // Reduce instead of Math.min(...numbers)/Math.max(...numbers): spreading a
428
468
  // large numeric column into an argument list throws RangeError (call stack)
429
469
  // once the column has ~100k+ values.
430
- let total = 0;
470
+ let average = 0;
471
+ let correction = 0;
431
472
  let min = numbers[0];
432
473
  let max = numbers[0];
433
474
  for (const value of numbers) {
434
- total += value;
475
+ const adjusted = value / numbers.length - correction;
476
+ const nextAverage = average + adjusted;
477
+ correction = nextAverage - average - adjusted;
478
+ average = nextAverage;
435
479
  if (value < min) {
436
480
  min = value;
437
481
  }
@@ -444,7 +488,9 @@ export const analyzeData = async (filePath, options = {}) => {
444
488
  count: numbers.length,
445
489
  min,
446
490
  max,
447
- average: total / numbers.length,
491
+ average,
492
+ missingCount: table.rows.filter((row) => !row[index]?.trim()).length,
493
+ nonNumericCount: table.rows.filter((row) => row[index]?.trim() && !isNumericText(row[index].trim())).length,
448
494
  });
449
495
  }
450
496
  return {
@@ -473,6 +519,13 @@ export const cleanData = async (inputPath, options = {}) => {
473
519
  ];
474
520
  const content = `${lines.join('\n')}\n`;
475
521
  if (options.outputPath && options.yes) {
522
+ if (options.expectedContent !== undefined && content !== options.expectedContent)
523
+ throw new ZaoWuError({
524
+ code: 'OPERATION_PLAN_MISMATCH',
525
+ message: 'Data content changed after plan verification.',
526
+ why: 'The cleaned output no longer matches the content authorized by the operation plan. No file was written.',
527
+ fix: 'Run the preview again and confirm its new fingerprint.',
528
+ });
476
529
  await assertSafeDataOutputPath(inputPath, options.outputPath);
477
530
  await writeTextFileExclusive(options.outputPath, content, {
478
531
  exists: {
@@ -535,7 +588,9 @@ const isCurrencyLike = (value) => {
535
588
  * leading-zero values (`01234` ZIP codes, phone fragments, SKUs) and hex
536
589
  * (`0x1A`). Decimal and scientific notation stay supported.
537
590
  */
538
- const isNumericText = (value) => /^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/.test(value) && !/^[+-]?0\d/.test(value);
591
+ const isNumericText = (value) => /^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/.test(value) &&
592
+ !/^[+-]?0\d/.test(value) &&
593
+ Number.isFinite(Number(value));
539
594
  const getValueType = (value) => {
540
595
  if (isNumericText(value)) {
541
596
  return 'number';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ZaoWuError } from '@zaowu-labs/core';
2
+ export declare const MAX_DATA_ROWS = 250000;
3
+ export declare const MAX_DATA_COLUMNS = 1024;
4
+ export declare const dataTooLarge: () => ZaoWuError;
5
+ export declare const assertTableSize: (rows: number, columns: number) => void;
6
+ export declare const readDataFile: (filePath: string) => Promise<Buffer>;
7
+ /** Inflate sequentially under an actual-byte budget before handing ZIP to SheetJS. */
8
+ export declare const assertWorkbookSize: (buffer: Buffer) => Promise<void>;
9
+ //# sourceMappingURL=input-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-limits.d.ts","sourceRoot":"","sources":["../src/input-limits.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAGtC,eAAO,MAAM,YAAY,QAAO,UAM5B,CAAC;AAEL,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,IAG/D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAS1D,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAqBrE,CAAC"}
@@ -0,0 +1,50 @@
1
+ import JSZip from 'jszip';
2
+ import { readBoundedFile, ZaoWuError } from '@zaowu-labs/core';
3
+ export const MAX_DATA_ROWS = 250_000;
4
+ export const MAX_DATA_COLUMNS = 1_024;
5
+ const MAX_DATA_CELLS = 2_000_000;
6
+ export const dataTooLarge = () => new ZaoWuError({
7
+ code: 'DATA_INPUT_TOO_LARGE',
8
+ message: 'Dataset is too large to process safely.',
9
+ why: 'Limits: 20 MiB input, 250,000 data rows, 1,024 columns, two million cells; XLSX also allows 2,000 ZIP entries and 64 MiB inflated content.',
10
+ fix: 'Split the dataset, remove unused rows/columns, or export a smaller CSV file.',
11
+ });
12
+ export const assertTableSize = (rows, columns) => {
13
+ if (rows > MAX_DATA_ROWS || columns > MAX_DATA_COLUMNS || (rows + 1) * columns > MAX_DATA_CELLS)
14
+ throw dataTooLarge();
15
+ };
16
+ export const readDataFile = (filePath) => readBoundedFile(filePath, 20 * 1024 * 1024, {
17
+ failed: {
18
+ code: 'DATA_READ_FAILED',
19
+ message: 'Could not read data file.',
20
+ why: `ZaoWu could not read \`${filePath}\` as a regular file.`,
21
+ fix: 'Check the path and file permissions, then try again.',
22
+ },
23
+ tooLarge: dataTooLarge(),
24
+ });
25
+ /** Inflate sequentially under an actual-byte budget before handing ZIP to SheetJS. */
26
+ export const assertWorkbookSize = async (buffer) => {
27
+ const zip = await JSZip.loadAsync(buffer);
28
+ const entries = Object.values(zip.files);
29
+ if (entries.length > 2_000)
30
+ throw dataTooLarge();
31
+ let total = 0;
32
+ for (const entry of entries) {
33
+ if (entry.dir)
34
+ continue;
35
+ await new Promise((resolve, reject) => {
36
+ const stream = entry.nodeStream('nodebuffer');
37
+ stream.on('data', (chunk) => {
38
+ total += chunk.length;
39
+ if (total > 64 * 1024 * 1024) {
40
+ stream.pause();
41
+ reject(dataTooLarge());
42
+ }
43
+ });
44
+ stream.on('error', reject);
45
+ stream.on('end', resolve);
46
+ stream.resume();
47
+ });
48
+ }
49
+ };
50
+ //# sourceMappingURL=input-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-limits.js","sourceRoot":"","sources":["../src/input-limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAe,EAAE,CAC3C,IAAI,UAAU,CAAC;IACb,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,yCAAyC;IAClD,GAAG,EAAE,4IAA4I;IACjJ,GAAG,EAAE,8EAA8E;CACpF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;IACrE,IAAI,IAAI,GAAG,aAAa,IAAI,OAAO,GAAG,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,cAAc;QAC7F,MAAM,YAAY,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAmB,EAAE,CAChE,eAAe,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE;IAC1C,MAAM,EAAE;QACN,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2BAA2B;QACpC,GAAG,EAAE,0BAA0B,QAAQ,uBAAuB;QAC9D,GAAG,EAAE,sDAAsD;KAC5D;IACD,QAAQ,EAAE,YAAY,EAAE;CACzB,CAAC,CAAC;AAEL,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;QAAE,MAAM,YAAY,EAAE,CAAC;IACjD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,GAAG;YAAE,SAAS;QACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAClC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;gBACtB,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;oBAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaowu-labs/data",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "ZaoWu data workflows",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -20,8 +20,9 @@
20
20
  }
21
21
  },
22
22
  "dependencies": {
23
+ "jszip": "^3.10.1",
23
24
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
24
- "@zaowu-labs/core": "1.0.5"
25
+ "@zaowu-labs/core": "1.1.0"
25
26
  },
26
27
  "keywords": [
27
28
  "zaowu",