rowpipe 2.1.0 → 2.2.1

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 (207) hide show
  1. package/README.md +183 -5
  2. package/dist/analytics/profiler.d.ts +56 -0
  3. package/dist/analytics/profiler.d.ts.map +1 -0
  4. package/dist/analytics/profiler.js +277 -0
  5. package/dist/analytics/profiler.js.map +1 -0
  6. package/dist/analytics/schema-inference.d.ts.map +1 -1
  7. package/dist/analytics/schema-inference.js +14 -0
  8. package/dist/analytics/schema-inference.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +15 -0
  10. package/dist/cli/commands/clean.d.ts.map +1 -0
  11. package/dist/cli/commands/clean.js +108 -0
  12. package/dist/cli/commands/clean.js.map +1 -0
  13. package/dist/cli/commands/convert.d.ts +6 -0
  14. package/dist/cli/commands/convert.d.ts.map +1 -1
  15. package/dist/cli/commands/convert.js +6 -6
  16. package/dist/cli/commands/convert.js.map +1 -1
  17. package/dist/cli/commands/db.d.ts +35 -0
  18. package/dist/cli/commands/db.d.ts.map +1 -0
  19. package/dist/cli/commands/db.js +173 -0
  20. package/dist/cli/commands/db.js.map +1 -0
  21. package/dist/cli/commands/explain.d.ts +8 -1
  22. package/dist/cli/commands/explain.d.ts.map +1 -1
  23. package/dist/cli/commands/explain.js +89 -2
  24. package/dist/cli/commands/explain.js.map +1 -1
  25. package/dist/cli/commands/join.d.ts +23 -0
  26. package/dist/cli/commands/join.d.ts.map +1 -0
  27. package/dist/cli/commands/join.js +97 -0
  28. package/dist/cli/commands/join.js.map +1 -0
  29. package/dist/cli/commands/pipeline.d.ts +20 -0
  30. package/dist/cli/commands/pipeline.d.ts.map +1 -1
  31. package/dist/cli/commands/pipeline.js +53 -12
  32. package/dist/cli/commands/pipeline.js.map +1 -1
  33. package/dist/cli/commands/profile.d.ts +22 -0
  34. package/dist/cli/commands/profile.d.ts.map +1 -0
  35. package/dist/cli/commands/profile.js +53 -0
  36. package/dist/cli/commands/profile.js.map +1 -0
  37. package/dist/cli/commands/view.d.ts +12 -0
  38. package/dist/cli/commands/view.d.ts.map +1 -0
  39. package/dist/cli/commands/view.js +52 -0
  40. package/dist/cli/commands/view.js.map +1 -0
  41. package/dist/cli/commands/window.d.ts +10 -0
  42. package/dist/cli/commands/window.d.ts.map +1 -0
  43. package/dist/cli/commands/window.js +87 -0
  44. package/dist/cli/commands/window.js.map +1 -0
  45. package/dist/cli/index.js +201 -5
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/batch.d.ts +1 -1
  48. package/dist/core/batch.d.ts.map +1 -1
  49. package/dist/core/batch.js.map +1 -1
  50. package/dist/core/pipeline.d.ts +2 -2
  51. package/dist/core/pipeline.d.ts.map +1 -1
  52. package/dist/core/pipeline.js +5 -2
  53. package/dist/core/pipeline.js.map +1 -1
  54. package/dist/core/types.d.ts +21 -1
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/db/adapters/index.d.ts +6 -0
  57. package/dist/db/adapters/index.d.ts.map +1 -0
  58. package/dist/db/adapters/index.js +21 -0
  59. package/dist/db/adapters/index.js.map +1 -0
  60. package/dist/db/adapters/mysql.d.ts +16 -0
  61. package/dist/db/adapters/mysql.d.ts.map +1 -0
  62. package/dist/db/adapters/mysql.js +230 -0
  63. package/dist/db/adapters/mysql.js.map +1 -0
  64. package/dist/db/adapters/postgres.d.ts +17 -0
  65. package/dist/db/adapters/postgres.d.ts.map +1 -0
  66. package/dist/db/adapters/postgres.js +239 -0
  67. package/dist/db/adapters/postgres.js.map +1 -0
  68. package/dist/db/adapters/sqlite.d.ts +19 -0
  69. package/dist/db/adapters/sqlite.d.ts.map +1 -0
  70. package/dist/db/adapters/sqlite.js +241 -0
  71. package/dist/db/adapters/sqlite.js.map +1 -0
  72. package/dist/db/index.d.ts +11 -0
  73. package/dist/db/index.d.ts.map +1 -0
  74. package/dist/db/index.js +11 -0
  75. package/dist/db/index.js.map +1 -0
  76. package/dist/db/mapping.d.ts +45 -0
  77. package/dist/db/mapping.d.ts.map +1 -0
  78. package/dist/db/mapping.js +222 -0
  79. package/dist/db/mapping.js.map +1 -0
  80. package/dist/db/pushdown.d.ts +25 -0
  81. package/dist/db/pushdown.d.ts.map +1 -0
  82. package/dist/db/pushdown.js +165 -0
  83. package/dist/db/pushdown.js.map +1 -0
  84. package/dist/db/sink.d.ts +15 -0
  85. package/dist/db/sink.d.ts.map +1 -0
  86. package/dist/db/sink.js +47 -0
  87. package/dist/db/sink.js.map +1 -0
  88. package/dist/db/source.d.ts +14 -0
  89. package/dist/db/source.d.ts.map +1 -0
  90. package/dist/db/source.js +69 -0
  91. package/dist/db/source.js.map +1 -0
  92. package/dist/db/types.d.ts +80 -0
  93. package/dist/db/types.d.ts.map +1 -0
  94. package/dist/db/types.js +2 -0
  95. package/dist/db/types.js.map +1 -0
  96. package/dist/db/url.d.ts +15 -0
  97. package/dist/db/url.d.ts.map +1 -0
  98. package/dist/db/url.js +145 -0
  99. package/dist/db/url.js.map +1 -0
  100. package/dist/diff/hash.d.ts.map +1 -1
  101. package/dist/diff/hash.js +4 -3
  102. package/dist/diff/hash.js.map +1 -1
  103. package/dist/diff/key.d.ts.map +1 -1
  104. package/dist/diff/key.js +8 -1
  105. package/dist/diff/key.js.map +1 -1
  106. package/dist/diff/reporter.d.ts.map +1 -1
  107. package/dist/diff/reporter.js +5 -3
  108. package/dist/diff/reporter.js.map +1 -1
  109. package/dist/diff/storage/disk-index.d.ts.map +1 -1
  110. package/dist/diff/storage/disk-index.js +2 -1
  111. package/dist/diff/storage/disk-index.js.map +1 -1
  112. package/dist/diff/storage/memory-index.d.ts.map +1 -1
  113. package/dist/diff/storage/memory-index.js +3 -2
  114. package/dist/diff/storage/memory-index.js.map +1 -1
  115. package/dist/index.d.ts +8 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +9 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/planner/executor.d.ts.map +1 -1
  120. package/dist/planner/executor.js +7 -0
  121. package/dist/planner/executor.js.map +1 -1
  122. package/dist/planner/types.d.ts +4 -0
  123. package/dist/planner/types.d.ts.map +1 -1
  124. package/dist/readers/csv.d.ts.map +1 -1
  125. package/dist/readers/csv.js +1 -2
  126. package/dist/readers/csv.js.map +1 -1
  127. package/dist/readers/index.d.ts +5 -1
  128. package/dist/readers/index.d.ts.map +1 -1
  129. package/dist/readers/index.js +43 -0
  130. package/dist/readers/index.js.map +1 -1
  131. package/dist/readers/json.d.ts.map +1 -1
  132. package/dist/readers/json.js +1 -2
  133. package/dist/readers/json.js.map +1 -1
  134. package/dist/readers/jsonl.d.ts.map +1 -1
  135. package/dist/readers/jsonl.js +1 -2
  136. package/dist/readers/jsonl.js.map +1 -1
  137. package/dist/readers/multi-file.d.ts +29 -0
  138. package/dist/readers/multi-file.d.ts.map +1 -0
  139. package/dist/readers/multi-file.js +169 -0
  140. package/dist/readers/multi-file.js.map +1 -0
  141. package/dist/transforms/clean.d.ts +18 -0
  142. package/dist/transforms/clean.d.ts.map +1 -0
  143. package/dist/transforms/clean.js +118 -0
  144. package/dist/transforms/clean.js.map +1 -0
  145. package/dist/transforms/expression.d.ts.map +1 -1
  146. package/dist/transforms/expression.js +12 -0
  147. package/dist/transforms/expression.js.map +1 -1
  148. package/dist/transforms/jit-compiler.d.ts +50 -0
  149. package/dist/transforms/jit-compiler.d.ts.map +1 -0
  150. package/dist/transforms/jit-compiler.js +275 -0
  151. package/dist/transforms/jit-compiler.js.map +1 -0
  152. package/dist/transforms/join/index-storage.d.ts +36 -0
  153. package/dist/transforms/join/index-storage.d.ts.map +1 -0
  154. package/dist/transforms/join/index-storage.js +176 -0
  155. package/dist/transforms/join/index-storage.js.map +1 -0
  156. package/dist/transforms/join/index.d.ts +4 -0
  157. package/dist/transforms/join/index.d.ts.map +1 -0
  158. package/dist/transforms/join/index.js +4 -0
  159. package/dist/transforms/join/index.js.map +1 -0
  160. package/dist/transforms/join/join.d.ts +15 -0
  161. package/dist/transforms/join/join.d.ts.map +1 -0
  162. package/dist/transforms/join/join.js +216 -0
  163. package/dist/transforms/join/join.js.map +1 -0
  164. package/dist/transforms/join/types.d.ts +29 -0
  165. package/dist/transforms/join/types.d.ts.map +1 -0
  166. package/dist/transforms/join/types.js +2 -0
  167. package/dist/transforms/join/types.js.map +1 -0
  168. package/dist/transforms/window.d.ts +24 -0
  169. package/dist/transforms/window.d.ts.map +1 -0
  170. package/dist/transforms/window.js +317 -0
  171. package/dist/transforms/window.js.map +1 -0
  172. package/dist/ui/colors.d.ts +57 -0
  173. package/dist/ui/colors.d.ts.map +1 -0
  174. package/dist/ui/colors.js +94 -0
  175. package/dist/ui/colors.js.map +1 -0
  176. package/dist/ui/viewer.d.ts +67 -0
  177. package/dist/ui/viewer.d.ts.map +1 -0
  178. package/dist/ui/viewer.js +673 -0
  179. package/dist/ui/viewer.js.map +1 -0
  180. package/dist/utils/compression.d.ts +68 -19
  181. package/dist/utils/compression.d.ts.map +1 -1
  182. package/dist/utils/compression.js +222 -34
  183. package/dist/utils/compression.js.map +1 -1
  184. package/dist/utils/formatting.d.ts +5 -0
  185. package/dist/utils/formatting.d.ts.map +1 -1
  186. package/dist/utils/formatting.js +15 -0
  187. package/dist/utils/formatting.js.map +1 -1
  188. package/dist/writers/csv.d.ts.map +1 -1
  189. package/dist/writers/csv.js +13 -14
  190. package/dist/writers/csv.js.map +1 -1
  191. package/dist/writers/index.d.ts +1 -0
  192. package/dist/writers/index.d.ts.map +1 -1
  193. package/dist/writers/index.js +35 -0
  194. package/dist/writers/index.js.map +1 -1
  195. package/dist/writers/json.d.ts.map +1 -1
  196. package/dist/writers/json.js +6 -5
  197. package/dist/writers/json.js.map +1 -1
  198. package/dist/writers/jsonl.d.ts.map +1 -1
  199. package/dist/writers/jsonl.js +6 -5
  200. package/dist/writers/jsonl.js.map +1 -1
  201. package/dist/writers/markdown.d.ts.map +1 -1
  202. package/dist/writers/markdown.js +5 -4
  203. package/dist/writers/markdown.js.map +1 -1
  204. package/dist/writers/parquet.d.ts +1 -1
  205. package/dist/writers/parquet.d.ts.map +1 -1
  206. package/package.json +10 -2
  207. package/skills/rowpipe/SKILL.md +8 -4
package/README.md CHANGED
@@ -13,11 +13,15 @@ Designed around stream backpressure and batch processing, Rowpipe processes mult
13
13
  ## Highlights
14
14
 
15
15
  - **Stream-First Architecture**: Datasets are never buffered entirely in memory; rows flow in configurable batches through async generator pipelines.
16
- - **Rich Format Ecosystem**: Native streaming support for **CSV, TSV / PSV, JSON, JSONL, XLSX, Apache Parquet (`.parquet`), Markdown tables (`.md`), and Gzip (`.gz`)**.
16
+ - **Rich Format Ecosystem**: Native streaming support for **PostgreSQL, MySQL, SQLite, CSV, TSV / PSV, JSON, JSONL, XLSX, Apache Parquet (`.parquet`), Markdown tables (`.md`), and Gzip (`.gz`)**.
17
+ - **First-Class Database Streaming (`rowpipe db`)**: True cursor-based streaming sources and sinks for PostgreSQL, MySQL, and SQLite. "Databases are just another Rowpipe source and sink" — rows normalize directly into standard `DataBatch` objects with zero parallel data models.
18
+ - **Intelligent Pushdown Optimizer**: Automatically pushes compatible operations (`SELECT`, `WHERE`, `ORDER BY`, `LIMIT`, `OFFSET`) down into database queries in `--table` mode while seamlessly executing non-pushdownable transforms in the local streaming pipeline.
19
+ - **Database Writing, Migration & DDL**: Stream directly into database tables (`--to-db`) with automatic table creation (`--create-table`), batched inserts, transactions (`--transaction`), dialect-specific upsert (`--upsert --conflict <cols>`), and truncate (`--truncate`).
20
+ - **Lossless Type Precision**: Preserves full `BIGINT` and arbitrary precision `DECIMAL` / `NUMERIC` values without floating point corruption. Safely maps `JSONB`, `BYTEA`/`BLOB`, dates, and timestamps.
21
+ - **Connection Security & Credential Masking**: Automatically sanitizes database passwords across all logs, explain plans, errors, and metadata (`postgres://user:***@host/db`).
17
22
  - **Apache Parquet Support**: High-performance columnar binary format reader (Snappy, Zstd, Gzip decompression via pure JS) and streaming writer.
18
- - **Cross-Format Conversion & Multi-Sheet Export**: Convert seamlessly across all formats. Export individual Excel sheets or bulk export all worksheets with `--all-sheets`.
19
23
  - **Filesystem as Data (`rowpipe files`)**: First-class streaming filesystem source adapter. Directories and files become streams of tabular records (`path`, `size`, `type`, `extension`, `modified_at`, streaming `hash`, `mime`) composable with `filter`, `select`, `stats`, `convert`, and `diff`.
20
- - **Cross-Format Dataset Diffing (`rowpipe diff`)**: High-performance, stream-first comparison across CSV, JSONL, XLSX, and Parquet with bounded memory and automatic spill-to-disk. Supports composite keys, duplicate policies, value tolerance, column filtering, schema diffing, JSONL patch generation, and CI `--fail-on-diff` mode.
24
+ - **Cross-Format Dataset Diffing (`rowpipe diff`)**: High-performance, stream-first comparison across CSV, JSONL, XLSX, Parquet, and Database tables with bounded memory and automatic spill-to-disk. Supports composite keys, duplicate policies, value tolerance, column filtering, schema diffing, JSONL patch generation, and CI `--fail-on-diff` mode.
21
25
 
22
26
  - **Zero-`eval` Safe Expression Engine**: Ultra-fast JIT closure-compiled evaluators supporting arithmetic (`revenue - cost`), string/date pipe functions (`email | lower | trim`), and direct JSON dot-notation (`payload.user.city`).
23
27
  - **Map & Reduce Streaming Engine**: Compute row derivations (`rowpipe map`) and global or group-by aggregations (`rowpipe reduce --by country`) in a single pass.
@@ -549,11 +553,185 @@ rowpipe diff dist.snapshot.v1.jsonl dist.snapshot.v2.jsonl \
549
553
  #### 5. Native Directory Diffing (`rowpipe files diff`)
550
554
  Compare two directory trees directly:
551
555
 
556
+ ---
557
+
558
+ ## Databases
559
+
560
+ Rowpipe provides first-class streaming database support for **PostgreSQL, MySQL, and SQLite**.
561
+
562
+ The key architectural rule is:
563
+
564
+ > **Databases are just another Rowpipe source and sink.**
565
+
566
+ Database rows normalize directly into standard Rowpipe `DataBatch` and `Row` objects. There is no parallel execution engine or secondary row type — existing operations (`filter`, `select`, `sort`, `group`, `reduce`, `stats`, `diff`) compose natively without intermediate files or memory buffering.
567
+
568
+ ```text
569
+ PostgreSQL / MySQL / SQLite / CSV / JSONL / Parquet / Files
570
+ ↓
571
+ DataBatch / Row
572
+ ↓
573
+ filter / select / map / sort
574
+ group / reduce / stats / diff
575
+ ↓
576
+ TabularWriter
577
+ ↓
578
+ PostgreSQL / MySQL / SQLite / CSV / JSONL / Parquet / Markdown
579
+ ```
580
+
581
+ ### 1. Database Streaming Sources
582
+
583
+ Read directly from database tables or custom queries in bounded, cursor-based streams:
584
+
552
585
  ```bash
553
- rowpipe files diff ./dist-v1 ./dist-v2 --hash sha256
586
+ # Read from PostgreSQL table in streaming batches
587
+ rowpipe db postgres://localhost/mydb --table users
588
+
589
+ # Read from MySQL database
590
+ rowpipe db mysql://root@localhost/app --table orders
591
+
592
+ # Read from SQLite database file
593
+ rowpipe db sqlite://./data.db --table events
594
+ # or direct file path
595
+ rowpipe db ./data.db --table events
596
+
597
+ # Execute custom SQL query
598
+ rowpipe db postgres://localhost/mydb \
599
+ --query 'SELECT id, email, created_at FROM users WHERE active = true'
600
+
601
+ # Parameterized queries (driver-level binding)
602
+ rowpipe db postgres://localhost/mydb \
603
+ --query 'SELECT * FROM users WHERE age > $1 AND status = $2' \
604
+ --params '[30, "ACTIVE"]'
554
605
  ```
555
606
 
556
- ---
607
+ ### 2. Output to Any Rowpipe Format
608
+
609
+ Database streams flow directly through Rowpipe writers to CSV, JSONL, Parquet, or Markdown tables:
610
+
611
+ ```bash
612
+ # Stream PostgreSQL table to JSONL
613
+ rowpipe db postgres://localhost/app --table users --to jsonl > users.jsonl
614
+
615
+ # Stream MySQL query to CSV
616
+ rowpipe db mysql://localhost/app --query 'SELECT * FROM orders' --to csv > orders.csv
617
+
618
+ # Stream SQLite table to GitHub Markdown table
619
+ rowpipe db sqlite://./sales.db --table sales --limit 20 --to markdown
620
+ ```
621
+
622
+ ### 3. Pipeline Operations & Pushdown Optimizer
623
+
624
+ When querying tables with `--table`, Rowpipe's **Intelligent Pushdown Optimizer** analyzes the pipeline and pushes compatible operations directly into database SQL:
625
+
626
+ * `select` $\rightarrow$ `SELECT col1, col2`
627
+ * `filter` $\rightarrow$ `WHERE condition`
628
+ * `sort` $\rightarrow$ `ORDER BY col DESC`
629
+ * `limit` $\rightarrow$ `LIMIT N`
630
+ * `offset` $\rightarrow$ `OFFSET N`
631
+
632
+ Unsupported or complex operations safely remain in the local streaming pipeline.
633
+
634
+ ```bash
635
+ # Pushes down WHERE, SELECT, ORDER BY, and LIMIT to database SQL
636
+ rowpipe db postgres://localhost/app \
637
+ --table users \
638
+ --filter 'active == true and age > 25' \
639
+ --select id,email,created_at \
640
+ --sort created_at:desc \
641
+ --limit 100 \
642
+ --to jsonl
643
+
644
+ # Mixed execution: pushdown WHERE + local aggregations
645
+ rowpipe db sqlite://./sales.db \
646
+ --table sales \
647
+ --where 'year = 2026' \
648
+ --group-by country \
649
+ --sum revenue \
650
+ --sort revenue_sum:desc
651
+ ```
652
+
653
+ ### 4. Database Sinks & File-to-Database Loading
654
+
655
+ Load CSV, JSONL, XLSX, Parquet, or other databases directly into database tables in batched transactions:
656
+
657
+ ```bash
658
+ # Load CSV into PostgreSQL table with automatic DDL table creation
659
+ rowpipe users.csv \
660
+ --to-db postgres://localhost/app \
661
+ --to-table users \
662
+ --create-table
663
+
664
+ # Load JSONL into SQLite database
665
+ rowpipe events.jsonl \
666
+ --to-db sqlite://./app.db \
667
+ --to-table events \
668
+ --create-table
669
+
670
+ # Dialect-specific Upsert on conflict keys
671
+ rowpipe users.csv \
672
+ --to-db postgres://localhost/app \
673
+ --to-table users \
674
+ --upsert \
675
+ --conflict id
676
+
677
+ # Destructive Truncate before bulk inserting
678
+ rowpipe new_catalog.parquet \
679
+ --to-db mysql://localhost/store \
680
+ --to-table catalog \
681
+ --truncate \
682
+ --transaction
683
+ ```
684
+
685
+ ### 5. Database-to-Database Migrations (Zero Intermediate Files)
686
+
687
+ Stream data directly between different database dialects with on-the-fly transformations:
688
+
689
+ ```bash
690
+ # Migrate PostgreSQL table directly to SQLite with filtering & projection
691
+ rowpipe db postgres://production/app \
692
+ --table users \
693
+ --filter 'deleted_at == null' \
694
+ --select id,email,created_at \
695
+ --to-db sqlite://./backup.db \
696
+ --to-table active_users \
697
+ --create-table
698
+ ```
699
+
700
+ ### 6. Cross-Format Diffing with Databases
701
+
702
+ Diff a database table directly against a CSV, JSONL, or Parquet file using Rowpipe's diff engine:
703
+
704
+ ```bash
705
+ # Compare PostgreSQL table against CSV export
706
+ rowpipe diff \
707
+ 'postgres://localhost/app?table=users' \
708
+ users_backup.csv \
709
+ --key id \
710
+ --coerce
711
+ ```
712
+
713
+ ### 7. Database Introspection
714
+
715
+ Inspect tables and schema types without third-party database clients:
716
+
717
+ ```bash
718
+ # List all tables in database
719
+ rowpipe db postgres://localhost/app --tables
720
+
721
+ # Inspect column schema, data types, and nullability
722
+ rowpipe db postgres://localhost/app --schema users
723
+
724
+ # Output schema as machine-readable JSON
725
+ rowpipe db postgres://localhost/app --schema users --json
726
+ ```
727
+
728
+ ### 8. Lossless Type Mapping & Security
729
+
730
+ - **BIGINT**: Values outside JavaScript safe integer range (e.g. `9223372036854775807`) are preserved losslessly as `bigint` without silent precision loss.
731
+ - **DECIMAL / NUMERIC**: High-precision numbers survive database $\leftrightarrow$ file workflows without floating point truncation.
732
+ - **JSON / JSONB**: Native objects and arrays are preserved and parsed appropriately.
733
+ - **BYTEA / BLOB**: Binary buffers are mapped cleanly without dumping corrupted text to stdout.
734
+ - **Credential Masking**: Connection URLs containing passwords (e.g. `postgres://admin:secret@host/db`) are automatically masked (`postgres://admin:***@host/db`) across all logs, explain plans, progress outputs, and errors.
557
735
 
558
736
  ---
559
737
 
@@ -0,0 +1,56 @@
1
+ import type { Aggregator, ColumnType, Row, SemanticType } from "../core/types.js";
2
+ export interface ColumnProfileResult {
3
+ name: string;
4
+ inferredType: ColumnType;
5
+ typeConfidence: number;
6
+ typeBreakdown: Record<string, number>;
7
+ anomalies: unknown[];
8
+ totalRows: number;
9
+ nullCount: number;
10
+ nullPercentage: number;
11
+ emptyStringCount: number;
12
+ approxDistinctCount: number;
13
+ distinctPercentage: number;
14
+ semanticType?: SemanticType;
15
+ semanticConfidence?: number;
16
+ isNumeric: boolean;
17
+ min?: number;
18
+ max?: number;
19
+ sum?: number;
20
+ mean?: number;
21
+ stddev?: number;
22
+ zerosCount?: number;
23
+ negativeCount?: number;
24
+ isString: boolean;
25
+ minLength?: number;
26
+ maxLength?: number;
27
+ avgLength?: number;
28
+ topValues?: Array<{
29
+ value: string;
30
+ count: number;
31
+ percentage: number;
32
+ }>;
33
+ }
34
+ export interface DatasetProfileResult {
35
+ totalRows: number;
36
+ totalColumns: number;
37
+ columns: ColumnProfileResult[];
38
+ }
39
+ /**
40
+ * Single-pass Streaming Dataset Profiler.
41
+ */
42
+ export declare class DatasetProfiler implements Aggregator<DatasetProfileResult> {
43
+ private columnProfilers;
44
+ private totalRows;
45
+ add(row: Row): void;
46
+ result(): DatasetProfileResult;
47
+ }
48
+ /**
49
+ * Formats profile results as an aligned terminal table.
50
+ */
51
+ export declare function formatProfileTerminal(profile: DatasetProfileResult): string;
52
+ /**
53
+ * Formats profile results as a GitHub Flavored Markdown document.
54
+ */
55
+ export declare function formatProfileMarkdown(profile: DatasetProfileResult): string;
56
+ //# sourceMappingURL=profiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/analytics/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMlF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,UAAU,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AA+LD;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAK;IAEtB,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAYnB,MAAM,IAAI,oBAAoB;CAY/B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAsC3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA+B3E"}
@@ -0,0 +1,277 @@
1
+ import { classifyPrimitiveType } from "./schema-inference.js";
2
+ import { detectSemanticType } from "./semantic-types.js";
3
+ import { HyperLogLog } from "./stats.js";
4
+ import { formatNumber, formatTable } from "../utils/formatting.js";
5
+ class ColumnProfiler {
6
+ name;
7
+ totalCount = 0;
8
+ nullCount = 0;
9
+ emptyStringCount = 0;
10
+ typeCounts = {
11
+ string: 0,
12
+ integer: 0,
13
+ bigint: 0,
14
+ number: 0,
15
+ decimal: 0,
16
+ boolean: 0,
17
+ date: 0,
18
+ datetime: 0,
19
+ binary: 0,
20
+ json: 0,
21
+ null: 0,
22
+ mixed: 0,
23
+ };
24
+ semanticCounts = {};
25
+ hll = new HyperLogLog(10);
26
+ frequencies = new Map();
27
+ // Numeric tracking (Welford's algorithm)
28
+ numericCount = 0;
29
+ numMin = Number.POSITIVE_INFINITY;
30
+ numMax = Number.NEGATIVE_INFINITY;
31
+ numSum = 0;
32
+ welfordMean = 0;
33
+ welfordM2 = 0;
34
+ zerosCount = 0;
35
+ negativeCount = 0;
36
+ // String tracking
37
+ stringCount = 0;
38
+ strMinLen = Number.POSITIVE_INFINITY;
39
+ strMaxLen = 0;
40
+ strSumLen = 0;
41
+ // Anomaly tracking
42
+ anomalies = [];
43
+ constructor(name) {
44
+ this.name = name;
45
+ }
46
+ add(val) {
47
+ this.totalCount++;
48
+ if (val === null || val === undefined) {
49
+ this.nullCount++;
50
+ this.typeCounts.null++;
51
+ return;
52
+ }
53
+ if (val === "") {
54
+ this.emptyStringCount++;
55
+ this.typeCounts.null++;
56
+ return;
57
+ }
58
+ const valStr = String(val);
59
+ this.hll.add(valStr);
60
+ // Track top frequency for up to 1000 distinct items
61
+ if (this.frequencies.size < 1000 || this.frequencies.has(valStr)) {
62
+ this.frequencies.set(valStr, (this.frequencies.get(valStr) || 0) + 1);
63
+ }
64
+ const primType = classifyPrimitiveType(val);
65
+ this.typeCounts[primType] = (this.typeCounts[primType] || 0) + 1;
66
+ // Semantic type detection
67
+ if (typeof val === "string" && val.length > 2) {
68
+ const sem = detectSemanticType(val);
69
+ if (sem) {
70
+ this.semanticCounts[sem] = (this.semanticCounts[sem] || 0) + 1;
71
+ }
72
+ }
73
+ // Numeric aggregation
74
+ const numVal = typeof val === "number" ? val : (typeof val === "string" && /^-?\d+(?:\.\d+)?$/.test(val.trim()) ? Number(val) : NaN);
75
+ if (!Number.isNaN(numVal)) {
76
+ this.numericCount++;
77
+ this.numSum += numVal;
78
+ if (numVal < this.numMin)
79
+ this.numMin = numVal;
80
+ if (numVal > this.numMax)
81
+ this.numMax = numVal;
82
+ if (numVal === 0)
83
+ this.zerosCount++;
84
+ if (numVal < 0)
85
+ this.negativeCount++;
86
+ // Welford's algorithm for online variance
87
+ const delta = numVal - this.welfordMean;
88
+ this.welfordMean += delta / this.numericCount;
89
+ const delta2 = numVal - this.welfordMean;
90
+ this.welfordM2 += delta * delta2;
91
+ }
92
+ // String aggregation
93
+ if (typeof val === "string") {
94
+ this.stringCount++;
95
+ const len = val.length;
96
+ if (len < this.strMinLen)
97
+ this.strMinLen = len;
98
+ if (len > this.strMaxLen)
99
+ this.strMaxLen = len;
100
+ this.strSumLen += len;
101
+ }
102
+ }
103
+ computeResult() {
104
+ const nonNullRows = this.totalCount - this.nullCount - this.emptyStringCount;
105
+ let dominantType = "string";
106
+ let maxTypeCount = 0;
107
+ for (const [t, count] of Object.entries(this.typeCounts)) {
108
+ if (t === "null")
109
+ continue;
110
+ if (count > maxTypeCount) {
111
+ maxTypeCount = count;
112
+ dominantType = t;
113
+ }
114
+ }
115
+ const typeConfidence = nonNullRows > 0 ? maxTypeCount / nonNullRows : 1;
116
+ const isNumeric = dominantType === "integer" || dominantType === "number" || dominantType === "decimal" || dominantType === "bigint";
117
+ const isString = dominantType === "string" || dominantType === "date" || dominantType === "datetime";
118
+ // Top values calculation
119
+ const sortedFreq = Array.from(this.frequencies.entries())
120
+ .sort((a, b) => b[1] - a[1])
121
+ .slice(0, 5)
122
+ .map(([value, count]) => ({
123
+ value,
124
+ count,
125
+ percentage: this.totalCount > 0 ? Math.round((count / this.totalCount) * 1000) / 10 : 0,
126
+ }));
127
+ // Semantic type
128
+ let semanticType;
129
+ let semanticConfidence;
130
+ let maxSemCount = 0;
131
+ for (const [sem, count] of Object.entries(this.semanticCounts)) {
132
+ if (count > maxSemCount) {
133
+ maxSemCount = count;
134
+ semanticType = sem;
135
+ }
136
+ }
137
+ if (semanticType && nonNullRows > 0) {
138
+ semanticConfidence = Math.round((maxSemCount / nonNullRows) * 100) / 100;
139
+ }
140
+ const approxDistinct = this.hll.count();
141
+ const res = {
142
+ name: this.name,
143
+ inferredType: dominantType,
144
+ typeConfidence: Math.round(typeConfidence * 100) / 100,
145
+ typeBreakdown: { ...this.typeCounts },
146
+ anomalies: this.anomalies,
147
+ totalRows: this.totalCount,
148
+ nullCount: this.nullCount + this.emptyStringCount,
149
+ nullPercentage: this.totalCount > 0 ? Math.round(((this.nullCount + this.emptyStringCount) / this.totalCount) * 1000) / 10 : 0,
150
+ emptyStringCount: this.emptyStringCount,
151
+ approxDistinctCount: approxDistinct,
152
+ distinctPercentage: this.totalCount > 0 ? Math.round((approxDistinct / this.totalCount) * 1000) / 10 : 0,
153
+ semanticType,
154
+ semanticConfidence,
155
+ isNumeric,
156
+ isString,
157
+ topValues: sortedFreq,
158
+ };
159
+ if (isNumeric && this.numericCount > 0) {
160
+ res.min = this.numMin === Number.POSITIVE_INFINITY ? undefined : this.numMin;
161
+ res.max = this.numMax === Number.NEGATIVE_INFINITY ? undefined : this.numMax;
162
+ res.sum = this.numSum;
163
+ res.mean = this.welfordMean;
164
+ res.stddev = this.numericCount > 1 ? Math.sqrt(this.welfordM2 / (this.numericCount - 1)) : 0;
165
+ res.zerosCount = this.zerosCount;
166
+ res.negativeCount = this.negativeCount;
167
+ }
168
+ if (isString && this.stringCount > 0) {
169
+ res.minLength = this.strMinLen === Number.POSITIVE_INFINITY ? 0 : this.strMinLen;
170
+ res.maxLength = this.strMaxLen;
171
+ res.avgLength = Math.round((this.strSumLen / this.stringCount) * 10) / 10;
172
+ }
173
+ return res;
174
+ }
175
+ }
176
+ /**
177
+ * Single-pass Streaming Dataset Profiler.
178
+ */
179
+ export class DatasetProfiler {
180
+ columnProfilers = new Map();
181
+ totalRows = 0;
182
+ add(row) {
183
+ this.totalRows++;
184
+ for (const [col, val] of Object.entries(row)) {
185
+ let profiler = this.columnProfilers.get(col);
186
+ if (!profiler) {
187
+ profiler = new ColumnProfiler(col);
188
+ this.columnProfilers.set(col, profiler);
189
+ }
190
+ profiler.add(val);
191
+ }
192
+ }
193
+ result() {
194
+ const columns = [];
195
+ for (const profiler of this.columnProfilers.values()) {
196
+ columns.push(profiler.computeResult());
197
+ }
198
+ return {
199
+ totalRows: this.totalRows,
200
+ totalColumns: columns.length,
201
+ columns,
202
+ };
203
+ }
204
+ }
205
+ /**
206
+ * Formats profile results as an aligned terminal table.
207
+ */
208
+ export function formatProfileTerminal(profile) {
209
+ const headers = ["COLUMN", "TYPE", "DISTINCT", "NULLS (%)", "MIN / MIN-LEN", "MAX / MAX-LEN", "MEAN / TOP-VALUE"];
210
+ const rows = profile.columns.map((c) => {
211
+ const nullStr = `${formatNumber(c.nullCount)} (${c.nullPercentage}%)`;
212
+ const distinctStr = `${formatNumber(c.approxDistinctCount)} (${c.distinctPercentage}%)`;
213
+ let minStr = "-";
214
+ let maxStr = "-";
215
+ let meanStr = "-";
216
+ if (c.isNumeric && c.min !== undefined && c.max !== undefined) {
217
+ minStr = String(c.min);
218
+ maxStr = String(c.max);
219
+ meanStr = c.mean !== undefined ? (Math.round(c.mean * 100) / 100).toString() : "-";
220
+ }
221
+ else if (c.isString) {
222
+ minStr = `${c.minLength ?? 0} chars`;
223
+ maxStr = `${c.maxLength ?? 0} chars`;
224
+ if (c.topValues && c.topValues.length > 0) {
225
+ meanStr = `${c.topValues[0].value} (${c.topValues[0].count})`;
226
+ }
227
+ }
228
+ return [
229
+ c.name,
230
+ c.semanticType ? `${c.inferredType} (${c.semanticType})` : c.inferredType,
231
+ distinctStr,
232
+ nullStr,
233
+ minStr,
234
+ maxStr,
235
+ meanStr,
236
+ ];
237
+ });
238
+ let out = `\n======================================================\n`;
239
+ out += ` Rowpipe Dataset Profile (${formatNumber(profile.totalRows)} rows, ${profile.totalColumns} columns)\n`;
240
+ out += `======================================================\n\n`;
241
+ out += formatTable(headers, rows);
242
+ out += "\n";
243
+ return out;
244
+ }
245
+ /**
246
+ * Formats profile results as a GitHub Flavored Markdown document.
247
+ */
248
+ export function formatProfileMarkdown(profile) {
249
+ let md = `# Dataset Profile Report\n\n`;
250
+ md += `* **Total Rows**: ${formatNumber(profile.totalRows)}\n`;
251
+ md += `* **Total Columns**: ${profile.totalColumns}\n\n`;
252
+ md += `| Column | Type | Distinct | Nulls (%) | Min | Max | Mean / Top Value |\n`;
253
+ md += `| :--- | :--- | :--- | :--- | :--- | :--- | :--- |\n`;
254
+ for (const c of profile.columns) {
255
+ const typeStr = c.semanticType ? `${c.inferredType} (${c.semanticType})` : c.inferredType;
256
+ const nullStr = `${formatNumber(c.nullCount)} (${c.nullPercentage}%)`;
257
+ const distinctStr = `${formatNumber(c.approxDistinctCount)} (${c.distinctPercentage}%)`;
258
+ let minStr = "-";
259
+ let maxStr = "-";
260
+ let meanStr = "-";
261
+ if (c.isNumeric && c.min !== undefined && c.max !== undefined) {
262
+ minStr = String(c.min);
263
+ maxStr = String(c.max);
264
+ meanStr = c.mean !== undefined ? (Math.round(c.mean * 100) / 100).toString() : "-";
265
+ }
266
+ else if (c.isString) {
267
+ minStr = `${c.minLength ?? 0} chars`;
268
+ maxStr = `${c.maxLength ?? 0} chars`;
269
+ if (c.topValues && c.topValues.length > 0) {
270
+ meanStr = `${c.topValues[0].value} (${c.topValues[0].count})`;
271
+ }
272
+ }
273
+ md += `| **${c.name}** | \`${typeStr}\` | ${distinctStr} | ${nullStr} | ${minStr} | ${maxStr} | ${meanStr} |\n`;
274
+ }
275
+ return md;
276
+ }
277
+ //# sourceMappingURL=profiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../src/analytics/profiler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-inference.d.ts","sourceRoot":"","sources":["../../src/analytics/schema-inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGlF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAuChE;AAED,qBAAa,yBAA0B,YAAW,UAAU,CAAC,oBAAoB,CAAC;IAChF,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAQf;gBAEQ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAIzC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAuCnB,MAAM,IAAI,oBAAoB;CA6F/B"}
1
+ {"version":3,"file":"schema-inference.d.ts","sourceRoot":"","sources":["../../src/analytics/schema-inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGlF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CA+ChE;AAED,qBAAa,yBAA0B,YAAW,UAAU,CAAC,oBAAoB,CAAC;IAChF,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAQf;gBAEQ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAIzC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IA2CnB,MAAM,IAAI,oBAAoB;CA6F/B"}
@@ -10,9 +10,19 @@ export function classifyPrimitiveType(value) {
10
10
  }
11
11
  if (typeof value === "boolean")
12
12
  return "boolean";
13
+ if (typeof value === "bigint")
14
+ return "bigint";
13
15
  if (typeof value === "number") {
14
16
  return Number.isInteger(value) ? "integer" : "number";
15
17
  }
18
+ if (Buffer.isBuffer(value) || value instanceof Uint8Array) {
19
+ return "binary";
20
+ }
21
+ if (typeof value === "object") {
22
+ if (value instanceof Date)
23
+ return "datetime";
24
+ return "json";
25
+ }
16
26
  const str = String(value).trim();
17
27
  // Boolean strings
18
28
  if (["true", "false"].includes(str.toLowerCase())) {
@@ -56,10 +66,14 @@ export class SchemaInferenceAggregator {
56
66
  counts: {
57
67
  string: 0,
58
68
  integer: 0,
69
+ bigint: 0,
59
70
  number: 0,
71
+ decimal: 0,
60
72
  boolean: 0,
61
73
  date: 0,
62
74
  datetime: 0,
75
+ binary: 0,
76
+ json: 0,
63
77
  null: 0,
64
78
  mixed: 0,
65
79
  },
@@ -1 +1 @@
1
- {"version":3,"file":"schema-inference.js","sourceRoot":"","sources":["../../src/analytics/schema-inference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAmBzD,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,MAAM,cAAc,GAAG,4EAA4E,CAAC;AAEpG;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxD,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjC,kBAAkB;IAClB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,gBAAgB;IAChB,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB;IACvB,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC;IAChD,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,UAAU,CAAC;IACpD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,yBAAyB;IAC5B,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,CAAS;IAClB,WAAW,GAAG,IAAI,GAAG,EAQ1B,CAAC;IAEJ,YAAY,OAA6B;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC/D,CAAC;IAED,GAAG,CAAC,GAAQ;QACV,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;oBACxB,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,CAAC;wBACT,OAAO,EAAE,CAAC;wBACV,IAAI,EAAE,CAAC;wBACP,QAAQ,EAAE,CAAC;wBACX,IAAI,EAAE,CAAC;wBACP,KAAK,EAAE,CAAC;qBACT;oBACD,cAAc,EAAE,EAAE;oBAClB,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC;iBACd,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAA4B,EAAE,CAAC;QAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAEpC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;oBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,mCAAmC;YACnC,MAAM,SAAS,GAA2B,EAAE,CAAC;YAC7C,IAAI,YAAY,GAAe,QAAQ,CAAC;YACxC,IAAI,aAAa,GAAG,CAAC,CAAC;YAEtB,MAAM,UAAU,GAAiB;gBAC/B,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,UAAU;gBACV,MAAM;gBACN,QAAQ;aACT,CAAC;YAEF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;gBAClD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACZ,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC3C,CAAC;gBACD,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;oBACxB,aAAa,GAAG,GAAG,CAAC;oBACpB,YAAY,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,IACE,YAAY,KAAK,SAAS;gBAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,IAAI,IAAI,EACvE,CAAC;gBACD,YAAY,GAAG,QAAQ,CAAC;gBACxB,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;YAC1F,CAAC;YAED,IAAI,YAAY,GAAe,YAAY,CAAC;YAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAErD,IAAI,aAAa,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,YAAY,GAAG,OAAO,CAAC;YACzB,CAAC;YAED,0BAA0B;YAC1B,IAAI,QAAkC,CAAC;YACvC,IAAI,kBAAsC,CAAC;YAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/D,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;gBAC5C,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;oBACjB,QAAQ,GAAG,GAAmB,CAAC;oBAC/B,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;oBAClD,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,YAAY;gBAClB,QAAQ;gBACR,UAAU;gBACV,QAAQ;gBACR,kBAAkB;gBAClB,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,SAAS;YAChC,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"schema-inference.js","sourceRoot":"","sources":["../../src/analytics/schema-inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { UnifiedPipelineCliOptions } from "./pipeline.js";
2
+ export interface CleanCommandOptions extends UnifiedPipelineCliOptions {
3
+ trim?: boolean;
4
+ nullValues?: string;
5
+ fillNulls?: string | string[];
6
+ coerce?: boolean;
7
+ stripChars?: string;
8
+ case?: "lower" | "upper" | "title";
9
+ dropEmptyRows?: boolean;
10
+ }
11
+ /**
12
+ * Handles `rowpipe clean [input] [options]`
13
+ */
14
+ export declare function cleanCommand(inputPath?: string, options?: CleanCommandOptions): Promise<void>;
15
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AASA,OAAO,EAA8B,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEtF,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACpE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,SAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAqGf"}