rowpipe 1.0.0 → 1.2.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 (185) hide show
  1. package/README.md +327 -41
  2. package/dist/cli/commands/diff.d.ts +30 -0
  3. package/dist/cli/commands/diff.d.ts.map +1 -0
  4. package/dist/cli/commands/diff.js +143 -0
  5. package/dist/cli/commands/diff.js.map +1 -0
  6. package/dist/cli/commands/files.d.ts +35 -0
  7. package/dist/cli/commands/files.d.ts.map +1 -0
  8. package/dist/cli/commands/files.js +93 -0
  9. package/dist/cli/commands/files.js.map +1 -0
  10. package/dist/cli/index.js +89 -5
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/core/errors.d.ts +23 -0
  13. package/dist/core/errors.d.ts.map +1 -1
  14. package/dist/core/errors.js +38 -0
  15. package/dist/core/errors.js.map +1 -1
  16. package/dist/core/types.d.ts +4 -0
  17. package/dist/core/types.d.ts.map +1 -1
  18. package/dist/diff/comparator.d.ts +17 -0
  19. package/dist/diff/comparator.d.ts.map +1 -0
  20. package/dist/diff/comparator.js +158 -0
  21. package/dist/diff/comparator.js.map +1 -0
  22. package/dist/diff/engine.d.ts +10 -0
  23. package/dist/diff/engine.d.ts.map +1 -0
  24. package/dist/diff/engine.js +333 -0
  25. package/dist/diff/engine.js.map +1 -0
  26. package/dist/diff/hash.d.ts +6 -0
  27. package/dist/diff/hash.d.ts.map +1 -0
  28. package/dist/diff/hash.js +50 -0
  29. package/dist/diff/hash.js.map +1 -0
  30. package/dist/diff/key.d.ts +21 -0
  31. package/dist/diff/key.d.ts.map +1 -0
  32. package/dist/diff/key.js +107 -0
  33. package/dist/diff/key.js.map +1 -0
  34. package/dist/diff/reporter.d.ts +18 -0
  35. package/dist/diff/reporter.d.ts.map +1 -0
  36. package/dist/diff/reporter.js +133 -0
  37. package/dist/diff/reporter.js.map +1 -0
  38. package/dist/diff/schema.d.ts +7 -0
  39. package/dist/diff/schema.d.ts.map +1 -0
  40. package/dist/diff/schema.js +65 -0
  41. package/dist/diff/schema.js.map +1 -0
  42. package/dist/diff/storage/disk-index.d.ts +28 -0
  43. package/dist/diff/storage/disk-index.d.ts.map +1 -0
  44. package/dist/diff/storage/disk-index.js +105 -0
  45. package/dist/diff/storage/disk-index.js.map +1 -0
  46. package/dist/diff/storage/memory-index.d.ts +23 -0
  47. package/dist/diff/storage/memory-index.d.ts.map +1 -0
  48. package/dist/diff/storage/memory-index.js +69 -0
  49. package/dist/diff/storage/memory-index.js.map +1 -0
  50. package/dist/diff/storage/spillable-index.d.ts +30 -0
  51. package/dist/diff/storage/spillable-index.d.ts.map +1 -0
  52. package/dist/diff/storage/spillable-index.js +108 -0
  53. package/dist/diff/storage/spillable-index.js.map +1 -0
  54. package/dist/diff/types.d.ts +127 -0
  55. package/dist/diff/types.d.ts.map +1 -0
  56. package/dist/diff/types.js +2 -0
  57. package/dist/diff/types.js.map +1 -0
  58. package/dist/files/glob.d.ts +21 -0
  59. package/dist/files/glob.d.ts.map +1 -0
  60. package/dist/files/glob.js +132 -0
  61. package/dist/files/glob.js.map +1 -0
  62. package/dist/files/hash.d.ts +10 -0
  63. package/dist/files/hash.d.ts.map +1 -0
  64. package/dist/files/hash.js +67 -0
  65. package/dist/files/hash.js.map +1 -0
  66. package/dist/files/index.d.ts +6 -0
  67. package/dist/files/index.d.ts.map +1 -0
  68. package/dist/files/index.js +6 -0
  69. package/dist/files/index.js.map +1 -0
  70. package/dist/files/mime.d.ts +9 -0
  71. package/dist/files/mime.d.ts.map +1 -0
  72. package/dist/files/mime.js +128 -0
  73. package/dist/files/mime.js.map +1 -0
  74. package/dist/files/reader.d.ts +19 -0
  75. package/dist/files/reader.d.ts.map +1 -0
  76. package/dist/files/reader.js +344 -0
  77. package/dist/files/reader.js.map +1 -0
  78. package/dist/files/types.d.ts +47 -0
  79. package/dist/files/types.d.ts.map +1 -0
  80. package/dist/files/types.js +2 -0
  81. package/dist/files/types.js.map +1 -0
  82. package/dist/index.d.ts +17 -2
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +19 -2
  85. package/dist/index.js.map +1 -1
  86. package/dist/readers/csv.d.ts.map +1 -1
  87. package/dist/readers/csv.js +59 -27
  88. package/dist/readers/csv.js.map +1 -1
  89. package/dist/readers/index.d.ts +2 -0
  90. package/dist/readers/index.d.ts.map +1 -1
  91. package/dist/readers/index.js +57 -3
  92. package/dist/readers/index.js.map +1 -1
  93. package/dist/readers/json.d.ts.map +1 -1
  94. package/dist/readers/json.js +6 -8
  95. package/dist/readers/json.js.map +1 -1
  96. package/dist/readers/jsonl.d.ts.map +1 -1
  97. package/dist/readers/jsonl.js +5 -7
  98. package/dist/readers/jsonl.js.map +1 -1
  99. package/dist/readers/parquet.d.ts +17 -0
  100. package/dist/readers/parquet.d.ts.map +1 -0
  101. package/dist/readers/parquet.js +146 -0
  102. package/dist/readers/parquet.js.map +1 -0
  103. package/dist/transforms/expression.d.ts.map +1 -1
  104. package/dist/transforms/expression.js +73 -7
  105. package/dist/transforms/expression.js.map +1 -1
  106. package/dist/utils/compression.d.ts +30 -6
  107. package/dist/utils/compression.d.ts.map +1 -1
  108. package/dist/utils/compression.js +95 -18
  109. package/dist/utils/compression.js.map +1 -1
  110. package/dist/writers/csv.d.ts.map +1 -1
  111. package/dist/writers/csv.js +29 -17
  112. package/dist/writers/csv.js.map +1 -1
  113. package/dist/writers/index.d.ts +2 -0
  114. package/dist/writers/index.d.ts.map +1 -1
  115. package/dist/writers/index.js +49 -4
  116. package/dist/writers/index.js.map +1 -1
  117. package/dist/writers/json.d.ts +1 -1
  118. package/dist/writers/json.d.ts.map +1 -1
  119. package/dist/writers/json.js +9 -11
  120. package/dist/writers/json.js.map +1 -1
  121. package/dist/writers/jsonl.d.ts +1 -1
  122. package/dist/writers/jsonl.d.ts.map +1 -1
  123. package/dist/writers/jsonl.js +9 -11
  124. package/dist/writers/jsonl.js.map +1 -1
  125. package/dist/writers/markdown.d.ts +21 -0
  126. package/dist/writers/markdown.d.ts.map +1 -0
  127. package/dist/writers/markdown.js +82 -0
  128. package/dist/writers/markdown.js.map +1 -0
  129. package/dist/writers/parquet.d.ts +19 -0
  130. package/dist/writers/parquet.d.ts.map +1 -0
  131. package/dist/writers/parquet.js +129 -0
  132. package/dist/writers/parquet.js.map +1 -0
  133. package/package.json +16 -3
  134. package/skills/rowpipe/SKILL.md +263 -0
  135. package/benchmarks/memory-bench.ts +0 -109
  136. package/src/analytics/reduce.ts +0 -388
  137. package/src/analytics/schema-inference.ts +0 -217
  138. package/src/analytics/semantic-types.ts +0 -36
  139. package/src/analytics/stats.ts +0 -383
  140. package/src/analytics/validator.ts +0 -134
  141. package/src/cli/commands/cast.ts +0 -60
  142. package/src/cli/commands/convert.ts +0 -128
  143. package/src/cli/commands/filter.ts +0 -58
  144. package/src/cli/commands/inspect.ts +0 -193
  145. package/src/cli/commands/map.ts +0 -66
  146. package/src/cli/commands/reduce.ts +0 -74
  147. package/src/cli/commands/rename.ts +0 -59
  148. package/src/cli/commands/sample.ts +0 -61
  149. package/src/cli/commands/schema.ts +0 -86
  150. package/src/cli/commands/select.ts +0 -59
  151. package/src/cli/commands/stats.ts +0 -100
  152. package/src/cli/commands/validate.ts +0 -123
  153. package/src/cli/index.ts +0 -285
  154. package/src/core/batch.ts +0 -81
  155. package/src/core/errors.ts +0 -81
  156. package/src/core/pipeline.ts +0 -150
  157. package/src/core/types.ts +0 -110
  158. package/src/index.ts +0 -52
  159. package/src/readers/csv.ts +0 -302
  160. package/src/readers/index.ts +0 -88
  161. package/src/readers/json.ts +0 -256
  162. package/src/readers/jsonl.ts +0 -126
  163. package/src/readers/xlsx.ts +0 -182
  164. package/src/transforms/cast.ts +0 -212
  165. package/src/transforms/expression.ts +0 -1114
  166. package/src/transforms/filter.ts +0 -38
  167. package/src/transforms/map.ts +0 -99
  168. package/src/transforms/rename.ts +0 -47
  169. package/src/transforms/sample.ts +0 -57
  170. package/src/transforms/select.ts +0 -64
  171. package/src/utils/compression.ts +0 -43
  172. package/src/utils/formatting.ts +0 -75
  173. package/src/utils/progress.ts +0 -37
  174. package/src/writers/csv.ts +0 -106
  175. package/src/writers/index.ts +0 -87
  176. package/src/writers/json.ts +0 -52
  177. package/src/writers/jsonl.ts +0 -49
  178. package/src/writers/xlsx.ts +0 -87
  179. package/tests/analytics.test.ts +0 -119
  180. package/tests/cli-integration.test.ts +0 -187
  181. package/tests/map-reduce.test.ts +0 -223
  182. package/tests/readers-writers.test.ts +0 -189
  183. package/tests/transforms.test.ts +0 -199
  184. package/tsconfig.json +0 -21
  185. package/vitest.config.ts +0 -9
@@ -0,0 +1,35 @@
1
+ import type { FileTypeFilter } from "../../files/types.js";
2
+ import { DiffCommandOptions } from "./diff.js";
3
+ export interface FilesCommandOptions {
4
+ recursive?: boolean;
5
+ maxDepth?: string | number;
6
+ include?: string | string[];
7
+ exclude?: string | string[];
8
+ hidden?: boolean;
9
+ followSymlinks?: boolean;
10
+ type?: FileTypeFilter;
11
+ hash?: string | false;
12
+ mime?: boolean;
13
+ concurrency?: string | number;
14
+ onError?: "fail" | "skip";
15
+ to?: string;
16
+ json?: boolean;
17
+ output?: string;
18
+ batchSize?: string | number;
19
+ deterministic?: boolean;
20
+ quiet?: boolean;
21
+ noProgress?: boolean;
22
+ }
23
+ /**
24
+ * Main handler for `rowpipe files <path> [options]`.
25
+ */
26
+ export declare function filesCommand(targetPath?: string, options?: FilesCommandOptions): Promise<void>;
27
+ /**
28
+ * Convenience handler for `rowpipe files snapshot <path> [options]`.
29
+ */
30
+ export declare function filesSnapshotCommand(targetPath?: string, options?: FilesCommandOptions): Promise<void>;
31
+ /**
32
+ * Convenience handler for `rowpipe files diff <left> <right> [options]`.
33
+ */
34
+ export declare function filesDiffCommand(leftPath: string, rightPath: string, options?: DiffCommandOptions & FilesCommandOptions): Promise<void>;
35
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAC;AAK1E,OAAO,EAAe,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,SAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,SAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAkB,GAAG,mBAAwB,GACrD,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,93 @@
1
+ import { createPipeline } from "../../core/pipeline.js";
2
+ import { FileSystemReader } from "../../files/reader.js";
3
+ import { createWriter, inferFormatFromPath as inferWriterFormat } from "../../writers/index.js";
4
+ import { openWritableStream } from "../../utils/compression.js";
5
+ import { logMemoryDebug } from "../../utils/formatting.js";
6
+ import { ProgressReporter } from "../../utils/progress.js";
7
+ import { diffCommand } from "./diff.js";
8
+ /**
9
+ * Main handler for `rowpipe files <path> [options]`.
10
+ */
11
+ export async function filesCommand(targetPath = ".", options = {}) {
12
+ const effectiveBatchSize = Number(options.batchSize) || 1000;
13
+ const maxDepth = options.maxDepth !== undefined ? Number(options.maxDepth) : undefined;
14
+ const concurrency = options.concurrency !== undefined ? Number(options.concurrency) : undefined;
15
+ let hashAlgo = false;
16
+ if (options.hash) {
17
+ const rawHash = String(options.hash).toLowerCase();
18
+ if (["sha256", "sha1", "md5", "fast"].includes(rawHash)) {
19
+ hashAlgo = rawHash;
20
+ }
21
+ }
22
+ // Parse includes and excludes
23
+ const include = options.include
24
+ ? (Array.isArray(options.include) ? options.include : [options.include])
25
+ : undefined;
26
+ const exclude = options.exclude
27
+ ? (Array.isArray(options.exclude) ? options.exclude : [options.exclude])
28
+ : undefined;
29
+ const reader = new FileSystemReader({
30
+ root: targetPath,
31
+ recursive: options.recursive ?? true,
32
+ maxDepth,
33
+ include,
34
+ exclude,
35
+ hidden: options.hidden ?? false,
36
+ followSymlinks: options.followSymlinks ?? false,
37
+ type: options.type ?? "file",
38
+ hash: hashAlgo,
39
+ mime: options.mime ?? false,
40
+ concurrency,
41
+ onError: options.onError ?? "fail",
42
+ deterministic: options.deterministic ?? false,
43
+ batchSize: effectiveBatchSize,
44
+ });
45
+ // Determine output format
46
+ let toFormat = options.to?.toLowerCase();
47
+ if (options.json) {
48
+ toFormat = "json";
49
+ }
50
+ else if (!toFormat && options.output && options.output !== "-") {
51
+ toFormat = inferWriterFormat(options.output) ?? undefined;
52
+ }
53
+ if (!toFormat) {
54
+ toFormat = "csv";
55
+ }
56
+ const effectiveOutput = options.output || "-";
57
+ const outputStream = openWritableStream(effectiveOutput);
58
+ const writer = createWriter(outputStream, {
59
+ format: toFormat,
60
+ });
61
+ const progress = new ProgressReporter(options);
62
+ const pipeline = createPipeline(reader, { batchSize: effectiveBatchSize });
63
+ pipeline.onProgress((info) => progress.update(info));
64
+ await pipeline.to(writer);
65
+ progress.done();
66
+ logMemoryDebug();
67
+ }
68
+ /**
69
+ * Convenience handler for `rowpipe files snapshot <path> [options]`.
70
+ */
71
+ export async function filesSnapshotCommand(targetPath = ".", options = {}) {
72
+ const snapshotOptions = {
73
+ ...options,
74
+ deterministic: true,
75
+ hash: options.hash || "sha256",
76
+ to: options.to || (options.json ? "json" : "jsonl"),
77
+ };
78
+ await filesCommand(targetPath, snapshotOptions);
79
+ }
80
+ /**
81
+ * Convenience handler for `rowpipe files diff <left> <right> [options]`.
82
+ */
83
+ export async function filesDiffCommand(leftPath, rightPath, options = {}) {
84
+ const diffOpts = {
85
+ ...options,
86
+ fromLeft: "files",
87
+ fromRight: "files",
88
+ key: options.key || "relative_path",
89
+ ignore: options.ignore || "modified_at,accessed_at,created_at",
90
+ };
91
+ await diffCommand(leftPath, rightPath, diffOpts);
92
+ }
93
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/cli/commands/files.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -3,6 +3,8 @@ import { Command } from "commander";
3
3
  import { RowpipeError } from "../core/errors.js";
4
4
  import { castCommand } from "./commands/cast.js";
5
5
  import { convertCommand } from "./commands/convert.js";
6
+ import { diffCommand } from "./commands/diff.js";
7
+ import { filesCommand, filesDiffCommand, filesSnapshotCommand } from "./commands/files.js";
6
8
  import { filterCommand } from "./commands/filter.js";
7
9
  import { inspectCommand } from "./commands/inspect.js";
8
10
  import { mapCommand } from "./commands/map.js";
@@ -22,7 +24,7 @@ process.stdout.on("error", (err) => {
22
24
  const program = new Command();
23
25
  program
24
26
  .name("rowpipe")
25
- .description("Stream-first tabular data toolkit for CSV, JSON, JSONL, and XLSX")
27
+ .description("Stream-first tabular data toolkit for CSV, TSV, JSON, JSONL, XLSX, Parquet, and Markdown")
26
28
  .version("1.0.0");
27
29
  // Global options
28
30
  program
@@ -35,7 +37,7 @@ program
35
37
  .description("Inspect format, row count, columns, and sheet summary")
36
38
  .option("--sheet <sheet>", "Target worksheet name or index for XLSX")
37
39
  .option("--path <path>", "Nested object path for JSON (e.g. data.results)")
38
- .option("--delimiter <delim>", "Custom CSV delimiter")
40
+ .option("--delimiter <delim>", "Custom CSV/TSV delimiter")
39
41
  .option("--json", "Output metadata as machine-readable JSON")
40
42
  .action(async (input = "-", cmdOptions) => {
41
43
  const opts = { ...program.opts(), ...cmdOptions };
@@ -45,8 +47,8 @@ program
45
47
  program
46
48
  .command("convert [input] [output]")
47
49
  .description("Stream convert tabular datasets across formats")
48
- .option("--from <format>", "Input format (csv, json, jsonl, xlsx)")
49
- .option("--to <format>", "Output format (csv, json, jsonl, xlsx)")
50
+ .option("--from <format>", "Input format (csv, tsv, psv, json, jsonl, xlsx, parquet)")
51
+ .option("--to <format>", "Output format (csv, tsv, psv, json, jsonl, xlsx, parquet, markdown)")
50
52
  .option("--sheet <sheet>", "Worksheet name or index for XLSX")
51
53
  .option("--all-sheets", "Export all worksheets in the workbook to individual files")
52
54
  .option("--out-dir <dir>", "Output directory for --all-sheets export")
@@ -229,7 +231,7 @@ program
229
231
  const opts = { ...program.opts(), ...cmdOptions };
230
232
  await sampleCommand(input, opts);
231
233
  });
232
- // 10. validate
234
+ // 12. validate
233
235
  program
234
236
  .command("validate [input]")
235
237
  .description("Validate stream against schema definition")
@@ -242,6 +244,88 @@ program
242
244
  const opts = { ...program.opts(), ...cmdOptions };
243
245
  await validateCommand(input, opts);
244
246
  });
247
+ // 13. diff
248
+ program
249
+ .command("diff <left> <right>")
250
+ .description("Compare two tabular datasets by key and report row/column/schema differences")
251
+ .requiredOption("--key <columns>", "Key column(s) for matching rows (comma-separated, e.g. id or country,user_id)")
252
+ .option("--format <format>", "Output format: summary, rows, patch", "summary")
253
+ .option("--only <type>", "Filter diff output to specific change type: added, removed, changed, unchanged")
254
+ .option("--columns <columns>", "Only compare specified columns for changes (comma-separated)")
255
+ .option("--ignore <columns>", "Ignore specific columns during comparison (comma-separated)")
256
+ .option("--limit <number>", "Limit number of changed/added/removed rows output in rows/patch mode")
257
+ .option("--json", "Output machine-readable diff summary JSON")
258
+ .option("--output <file>", "Write diff output to file instead of stdout")
259
+ .option("--fail-on-diff", "Exit with non-zero code if differences are found (CI mode)")
260
+ .option("--duplicate-key <policy>", "Duplicate key policy: error, first, last", "error")
261
+ .option("--coerce", "Coerce string numbers, booleans, and dates before comparing")
262
+ .option("--epsilon <number>", "Numeric equality tolerance for floating point comparison", "0")
263
+ .option("--ignore-case", "Case-insensitive string comparison")
264
+ .option("--trim", "Trim whitespace from strings before comparison")
265
+ .option("--memory-limit <size>", "Memory threshold before spilling index to disk (e.g. 256mb, 64mb, 1gb)", "256mb")
266
+ .option("--sheet <sheet>", "Worksheet name for XLSX (applied to both left and right)")
267
+ .option("--left-sheet <sheet>", "Worksheet name for left XLSX")
268
+ .option("--right-sheet <sheet>", "Worksheet name for right XLSX")
269
+ .option("--from <format>", "Input format for both datasets")
270
+ .option("--from-left <format>", "Input format for left dataset")
271
+ .option("--from-right <format>", "Input format for right dataset")
272
+ .option("--no-schema", "Disable schema difference detection")
273
+ .action(async (left, right, cmdOptions) => {
274
+ const opts = { ...program.opts(), ...cmdOptions };
275
+ await diffCommand(left, right, opts);
276
+ });
277
+ // 14. files
278
+ program
279
+ .command("files [args...]")
280
+ .description("Stream files and directories as tabular records (e.g. rowpipe files ./src --include '*.ts')")
281
+ .option("--no-recursive", "Disable recursive directory traversal")
282
+ .option("--max-depth <number>", "Maximum directory recursion depth")
283
+ .option("--include <glob>", "Glob pattern(s) to include (comma-separated or repeated)")
284
+ .option("--exclude <glob>", "Glob pattern(s) to exclude (comma-separated or repeated)")
285
+ .option("--hidden", "Include hidden files and directories (starting with '.')")
286
+ .option("--follow-symlinks", "Follow symbolic links to directories")
287
+ .option("--type <type>", "Filter record type: file, directory, symlink, all", "file")
288
+ .option("--hash <algorithm>", "Compute streaming content hash: sha256, sha1, md5, fast")
289
+ .option("--mime", "Infer MIME type and category from file extension")
290
+ .option("--concurrency <number>", "Concurrency limit for stat and hash operations", "8")
291
+ .option("--on-error <behavior>", "Error handling behavior: fail, skip", "fail")
292
+ .option("--to <format>", "Output format: csv, tsv, psv, json, jsonl, xlsx, parquet, markdown")
293
+ .option("--json", "Output file records as formatted JSON array")
294
+ .option("--output <file>", "Write records to file instead of stdout")
295
+ .option("--deterministic", "Produce deterministic output (normalized paths, omit volatile atime)")
296
+ .action(async (args, cmdOptions) => {
297
+ const opts = { ...program.opts(), ...cmdOptions };
298
+ const firstArg = args[0];
299
+ if (firstArg === "snapshot") {
300
+ const target = args[1] || ".";
301
+ await filesSnapshotCommand(target, opts);
302
+ }
303
+ else if (firstArg === "diff") {
304
+ const left = args[1];
305
+ const right = args[2];
306
+ if (!left || !right) {
307
+ throw new RowpipeError("Usage: rowpipe files diff <left_dir> <right_dir>", 2);
308
+ }
309
+ await filesDiffCommand(left, right, opts);
310
+ }
311
+ else {
312
+ const target = firstArg || ".";
313
+ await filesCommand(target, opts);
314
+ }
315
+ });
316
+ // 15. diff-files (convenience alias)
317
+ program
318
+ .command("diff-files <left> <right>")
319
+ .description("Compare two directories as streaming tabular datasets")
320
+ .option("--hash <algorithm>", "Compute and compare file hashes: sha256, sha1, md5, fast")
321
+ .option("--format <format>", "Output format: summary, rows, patch", "summary")
322
+ .option("--only <type>", "Filter diff output to specific change type: added, removed, changed, unchanged")
323
+ .option("--json", "Output machine-readable diff summary JSON")
324
+ .option("--fail-on-diff", "Exit with non-zero code if differences are found")
325
+ .action(async (left, right, cmdOptions) => {
326
+ const opts = { ...program.opts(), ...cmdOptions };
327
+ await filesDiffCommand(left, right, opts);
328
+ });
245
329
  async function main() {
246
330
  try {
247
331
  await program.parseAsync(process.argv);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,yDAAyD;AACzD,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE;IAC1C,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,kEAAkE,CAAC;KAC/E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,CAAC;KACxE,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;AAE7D,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,0BAA0B,CAAC;KACnC,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,2DAA2D,CAAC;KACnF,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,MAAM,CAAC,eAAe,EAAE,4BAA4B,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,2CAA2C,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,EAAE,OAAO,CAAC;KAC5E,MAAM,CAAC,QAAQ,EAAE,6CAA6C,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,WAAW;AACX,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;KACxE,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,uCAAuC,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEL,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,0BAA0B,CAAC;KACnC,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IACnD,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,GAAG,WAAW,IAAI,GAAG,CAAC;QAC3B,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,WAAW,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEL,UAAU;AACV,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,uBAAuB,EAAE,4CAA4C,EAAE,MAAM,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEL,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,6BAA6B,CAAC;KACtC,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IACnD,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,GAAG,WAAW,IAAI,GAAG,CAAC;QAC3B,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,WAAW,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,SAAS;AACT,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,yFAAyF,CAAC;KACtG,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,+FAA+F,CAAC;KAC5G,MAAM,CAAC,gBAAgB,EAAE,2DAA2D,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEL,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACtD,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,2CAA2C,CAAC;KACxD,cAAc,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAwB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,GAAa,CAAC,KAAK,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -32,4 +32,27 @@ export declare class ValidationError extends RowpipeError {
32
32
  readonly invalidRows: number;
33
33
  constructor(message: string, violations?: ValidationViolation[], totalRows?: number, validRows?: number, invalidRows?: number);
34
34
  }
35
+ export interface DuplicateKeyContext {
36
+ dataset: "left" | "right";
37
+ key: string;
38
+ rows: number[];
39
+ filePath?: string;
40
+ }
41
+ export declare class DuplicateKeyError extends RowpipeError {
42
+ readonly context: DuplicateKeyContext;
43
+ constructor(context: DuplicateKeyContext);
44
+ }
45
+ export declare class DiffMismatchError extends RowpipeError {
46
+ readonly differencesFound: number;
47
+ constructor(differencesFound: number);
48
+ }
49
+ export interface FileSystemErrorContext {
50
+ path?: string;
51
+ operation?: string;
52
+ cause?: string | Error;
53
+ }
54
+ export declare class FileSystemError extends RowpipeError {
55
+ readonly context: FileSystemErrorContext;
56
+ constructor(message: string, context?: FileSystemErrorContext);
57
+ }
35
58
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI;CAM1C;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,SAAgB,OAAO,EAAE,iBAAiB,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;CAmB7D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,mBAAmB,EAAO,EACtC,SAAS,SAAI,EACb,SAAS,SAAI,EACb,WAAW,SAAI;CASlB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI;CAM1C;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,SAAgB,OAAO,EAAE,iBAAiB,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;CAmB7D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,mBAAmB,EAAO,EACtC,SAAS,SAAI,EACb,SAAS,SAAI,EACb,WAAW,SAAI;CASlB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAgB,OAAO,EAAE,mBAAmB,CAAC;gBAEjC,OAAO,EAAE,mBAAmB;CAMzC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAgB,gBAAgB,EAAE,MAAM,CAAC;gBAE7B,gBAAgB,EAAE,MAAM;CAKrC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,SAAgB,OAAO,EAAE,sBAAsB,CAAC;gBAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;CAmBlE"}
@@ -52,4 +52,42 @@ export class ValidationError extends RowpipeError {
52
52
  this.invalidRows = invalidRows;
53
53
  }
54
54
  }
55
+ export class DuplicateKeyError extends RowpipeError {
56
+ context;
57
+ constructor(context) {
58
+ const msg = `Duplicate key detected\n Dataset: ${context.dataset}${context.filePath ? ` (${context.filePath})` : ""}\n Key: ${context.key}\n Rows: ${context.rows.join(", ")}`;
59
+ super(msg, 5);
60
+ this.name = "DuplicateKeyError";
61
+ this.context = context;
62
+ }
63
+ }
64
+ export class DiffMismatchError extends RowpipeError {
65
+ differencesFound;
66
+ constructor(differencesFound) {
67
+ super(`Datasets have ${differencesFound} difference(s).`, 1);
68
+ this.name = "DiffMismatchError";
69
+ this.differencesFound = differencesFound;
70
+ }
71
+ }
72
+ export class FileSystemError extends RowpipeError {
73
+ context;
74
+ constructor(message, context = {}) {
75
+ let detailedMsg = `Filesystem error: ${message}`;
76
+ const parts = [];
77
+ if (context.path)
78
+ parts.push(`Path: ${context.path}`);
79
+ if (context.operation)
80
+ parts.push(`Operation: ${context.operation}`);
81
+ if (context.cause) {
82
+ const causeStr = context.cause instanceof Error ? context.cause.message : String(context.cause);
83
+ parts.push(`Cause: ${causeStr}`);
84
+ }
85
+ if (parts.length > 0) {
86
+ detailedMsg += `\n ${parts.join("\n ")}`;
87
+ }
88
+ super(detailedMsg, 1);
89
+ this.name = "FileSystemError";
90
+ this.context = context;
91
+ }
92
+ }
55
93
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrB,QAAQ,CAAS;IAEjC,YAAY,OAAe,EAAE,QAAQ,GAAG,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAYD,MAAM,OAAO,UAAW,SAAQ,YAAY;IAC1B,OAAO,CAAoB;IAE3C,YAAY,OAAe,EAAE,UAA6B,EAAE;QAC1D,IAAI,WAAW,GAAG,gBAAgB,OAAO,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,WAAW,IAAI,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAUD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/B,UAAU,CAAwB;IAClC,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,WAAW,CAAS;IAEpC,YACE,OAAe,EACf,aAAoC,EAAE,EACtC,SAAS,GAAG,CAAC,EACb,SAAS,GAAG,CAAC,EACb,WAAW,GAAG,CAAC;QAEf,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,15 @@ export interface ReaderOptions {
15
15
  sheet?: string | number;
16
16
  maxRows?: number;
17
17
  filePath?: string;
18
+ gzip?: boolean;
19
+ format?: string;
18
20
  }
19
21
  export interface WriterOptions {
20
22
  delimiter?: string;
21
23
  header?: boolean;
22
24
  sheet?: string;
25
+ gzip?: boolean;
26
+ format?: string;
23
27
  }
24
28
  export interface SheetMetadata {
25
29
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Row } from "../core/types.js";
2
+ import type { ColumnChange } from "./types.js";
3
+ export interface ValueComparisonOptions {
4
+ coerce?: boolean;
5
+ epsilon?: number;
6
+ ignoreCase?: boolean;
7
+ trim?: boolean;
8
+ }
9
+ /**
10
+ * Checks if two arbitrary values are considered equal under the specified options.
11
+ */
12
+ export declare function areValuesEqual(a: unknown, b: unknown, options?: ValueComparisonOptions): boolean;
13
+ /**
14
+ * Compares two rows across specified columns and returns a list of differences.
15
+ */
16
+ export declare function compareRows(leftRow: Row, rightRow: Row, compareColumns: string[], options?: ValueComparisonOptions): ColumnChange[];
17
+ //# sourceMappingURL=comparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparator.d.ts","sourceRoot":"","sources":["../../src/diff/comparator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAyGT;AAiCD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,GAAG,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE,sBAA2B,GACnC,YAAY,EAAE,CAkBhB"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Checks if two arbitrary values are considered equal under the specified options.
3
+ */
4
+ export function areValuesEqual(a, b, options = {}) {
5
+ // Identical reference or primitive
6
+ if (a === b) {
7
+ // Note: NaN === NaN is false in JS, handle NaN equality
8
+ if (typeof a === "number" && typeof b === "number" && Number.isNaN(a) && Number.isNaN(b)) {
9
+ return true;
10
+ }
11
+ return true;
12
+ }
13
+ // Strict undefined (missing) vs null check
14
+ if (a === undefined || b === undefined) {
15
+ return a === b;
16
+ }
17
+ if (a === null || b === null) {
18
+ if (options.coerce) {
19
+ // Under coerce, null and empty string can match
20
+ const other = a === null ? b : a;
21
+ return other === "" || other === null || other === undefined;
22
+ }
23
+ return a === b;
24
+ }
25
+ // Type Coercion Mode
26
+ if (options.coerce) {
27
+ // If one is boolean and other is boolean string / number
28
+ if (typeof a === "boolean" || typeof b === "boolean") {
29
+ const boolA = toCoercedBoolean(a);
30
+ const boolB = toCoercedBoolean(b);
31
+ if (boolA !== null && boolB !== null) {
32
+ return boolA === boolB;
33
+ }
34
+ }
35
+ // If both can be converted to numbers
36
+ const numA = toCoercedNumber(a);
37
+ const numB = toCoercedNumber(b);
38
+ if (numA !== null && numB !== null) {
39
+ if (options.epsilon && options.epsilon > 0) {
40
+ return Math.abs(numA - numB) <= options.epsilon;
41
+ }
42
+ return numA === numB;
43
+ }
44
+ // Date coercion
45
+ const dateA = toDateTimestamp(a);
46
+ const dateB = toDateTimestamp(b);
47
+ if (dateA !== null && dateB !== null) {
48
+ return dateA === dateB;
49
+ }
50
+ }
51
+ // Numbers comparison (with epsilon if supplied)
52
+ if (typeof a === "number" && typeof b === "number") {
53
+ if (options.epsilon && options.epsilon > 0) {
54
+ return Math.abs(a - b) <= options.epsilon;
55
+ }
56
+ return a === b;
57
+ }
58
+ // String comparison (with trim / ignoreCase)
59
+ if (typeof a === "string" && typeof b === "string") {
60
+ let strA = a;
61
+ let strB = b;
62
+ if (options.trim) {
63
+ strA = strA.trim();
64
+ strB = strB.trim();
65
+ }
66
+ if (options.ignoreCase) {
67
+ strA = strA.toLowerCase();
68
+ strB = strB.toLowerCase();
69
+ }
70
+ return strA === strB;
71
+ }
72
+ // Date object comparison
73
+ if (a instanceof Date && b instanceof Date) {
74
+ return a.getTime() === b.getTime();
75
+ }
76
+ // Arrays comparison
77
+ if (Array.isArray(a) && Array.isArray(b)) {
78
+ if (a.length !== b.length)
79
+ return false;
80
+ for (let i = 0; i < a.length; i++) {
81
+ if (!areValuesEqual(a[i], b[i], options))
82
+ return false;
83
+ }
84
+ return true;
85
+ }
86
+ // Object comparison
87
+ if (typeof a === "object" && typeof b === "object" && a !== null && b !== null) {
88
+ const objA = a;
89
+ const objB = b;
90
+ const keysA = Object.keys(objA);
91
+ const keysB = Object.keys(objB);
92
+ if (keysA.length !== keysB.length)
93
+ return false;
94
+ for (const key of keysA) {
95
+ if (!Object.prototype.hasOwnProperty.call(objB, key))
96
+ return false;
97
+ if (!areValuesEqual(objA[key], objB[key], options))
98
+ return false;
99
+ }
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+ function toCoercedBoolean(val) {
105
+ if (typeof val === "boolean")
106
+ return val;
107
+ if (typeof val === "number")
108
+ return val === 1 ? true : val === 0 ? false : null;
109
+ if (typeof val === "string") {
110
+ const s = val.trim().toLowerCase();
111
+ if (s === "true" || s === "1" || s === "yes" || s === "t")
112
+ return true;
113
+ if (s === "false" || s === "0" || s === "no" || s === "f")
114
+ return false;
115
+ }
116
+ return null;
117
+ }
118
+ function toCoercedNumber(val) {
119
+ if (typeof val === "number")
120
+ return Number.isNaN(val) ? null : val;
121
+ if (typeof val === "string") {
122
+ const s = val.trim();
123
+ if (!s)
124
+ return null;
125
+ const num = Number(s);
126
+ return Number.isNaN(num) ? null : num;
127
+ }
128
+ return null;
129
+ }
130
+ function toDateTimestamp(val) {
131
+ if (val instanceof Date)
132
+ return val.getTime();
133
+ if (typeof val === "string" && /^\d{4}-\d{2}-\d{2}/.test(val.trim())) {
134
+ const time = Date.parse(val.trim());
135
+ return Number.isNaN(time) ? null : time;
136
+ }
137
+ return null;
138
+ }
139
+ /**
140
+ * Compares two rows across specified columns and returns a list of differences.
141
+ */
142
+ export function compareRows(leftRow, rightRow, compareColumns, options = {}) {
143
+ const changes = [];
144
+ for (let i = 0; i < compareColumns.length; i++) {
145
+ const col = compareColumns[i];
146
+ const leftVal = leftRow[col];
147
+ const rightVal = rightRow[col];
148
+ if (!areValuesEqual(leftVal, rightVal, options)) {
149
+ changes.push({
150
+ column: col,
151
+ oldVal: leftVal,
152
+ newVal: rightVal,
153
+ });
154
+ }
155
+ }
156
+ return changes;
157
+ }
158
+ //# sourceMappingURL=comparator.js.map