@robinpath/table 0.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 ADDED
@@ -0,0 +1,107 @@
1
+ # @robinpath/table
2
+
3
+ > Tabular data operations: filter, sort, join, group, aggregate, pivot — like a lightweight DataFrame
4
+
5
+ ![Category](https://img.shields.io/badge/category-Analytics-blue) ![Functions](https://img.shields.io/badge/functions-24-green) ![Auth](https://img.shields.io/badge/auth-none-lightgrey) ![License](https://img.shields.io/badge/license-MIT-brightgreen)
6
+
7
+ ## Why use this module?
8
+
9
+ The `table` module lets you:
10
+
11
+ - Create a table from array of objects or columns+rows
12
+ - Select specific columns
13
+ - Filter rows by condition
14
+ - Sort rows by a field
15
+ - Group rows by a field
16
+
17
+ All functions are callable directly from RobinPath scripts with a simple, consistent API.
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @robinpath/table
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ No credentials needed — start using it right away:
28
+
29
+ ```robinpath
30
+ table.select $data ["name", "age"]
31
+ ```
32
+
33
+ ## Available Functions
34
+
35
+ | Function | Description |
36
+ |----------|-------------|
37
+ | `table.create` | Create a table from array of objects or columns+rows |
38
+ | `table.select` | Select specific columns |
39
+ | `table.where` | Filter rows by condition |
40
+ | `table.orderBy` | Sort rows by a field |
41
+ | `table.groupBy` | Group rows by a field |
42
+ | `table.aggregate` | Aggregate grouped data |
43
+ | `table.join` | Join two tables |
44
+ | `table.distinct` | Remove duplicate rows |
45
+ | `table.limit` | Take first N rows |
46
+ | `table.offset` | Skip first N rows |
47
+ | `table.addColumn` | Add a column with a default value |
48
+ | `table.removeColumn` | Remove column(s) |
49
+ | `table.renameColumn` | Rename a column |
50
+ | `table.pivot` | Pivot table |
51
+ | `table.unpivot` | Unpivot/melt table |
52
+ | `table.count` | Count rows |
53
+ | `table.sum` | Sum a numeric column |
54
+ | `table.avg` | Average a numeric column |
55
+ | `table.min` | Minimum of a column |
56
+ | `table.max` | Maximum of a column |
57
+ | `table.head` | First N rows |
58
+ | `table.tail` | Last N rows |
59
+ | `table.columns` | Get column names |
60
+ | `table.shape` | Get row and column counts |
61
+
62
+ ## Examples
63
+
64
+ ### Select specific columns
65
+
66
+ ```robinpath
67
+ table.select $data ["name", "age"]
68
+ ```
69
+
70
+ ### Filter rows by condition
71
+
72
+ ```robinpath
73
+ table.where $data "age" "gt" 25
74
+ ```
75
+
76
+ ### Sort rows by a field
77
+
78
+ ```robinpath
79
+ table.orderBy $data "age" "desc"
80
+ ```
81
+
82
+ ## Integration with RobinPath
83
+
84
+ ```typescript
85
+ import { RobinPath } from "@wiredwp/robinpath";
86
+ import Module from "@robinpath/table";
87
+
88
+ const rp = new RobinPath();
89
+ rp.registerModule(Module.name, Module.functions);
90
+ rp.registerModuleMeta(Module.name, Module.functionMetadata);
91
+
92
+ const result = await rp.executeScript(`
93
+ table.select $data ["name", "age"]
94
+ `);
95
+ ```
96
+
97
+ ## Full API Reference
98
+
99
+ See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
100
+
101
+ ## Related Modules
102
+
103
+ - [`@robinpath/json`](../json) — JSON module for complementary functionality
104
+
105
+ ## License
106
+
107
+ MIT
@@ -0,0 +1,6 @@
1
+ import type { ModuleAdapter } from "@wiredwp/robinpath";
2
+ declare const TableModule: ModuleAdapter;
3
+ export default TableModule;
4
+ export { TableModule };
5
+ export { TableFunctions, TableFunctionMetadata, TableModuleMetadata } from "./table.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,QAAA,MAAM,WAAW,EAAE,aAAuK,CAAC;AAC3L,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import { TableFunctions, TableFunctionMetadata, TableModuleMetadata } from "./table.js";
2
+ const TableModule = { name: "table", functions: TableFunctions, functionMetadata: TableFunctionMetadata, moduleMetadata: TableModuleMetadata, global: false };
3
+ export default TableModule;
4
+ export { TableModule };
5
+ export { TableFunctions, TableFunctionMetadata, TableModuleMetadata } from "./table.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACxF,MAAM,WAAW,GAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAA4B,EAAE,cAAc,EAAE,mBAA0B,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3L,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,321 @@
1
+ import type { BuiltinHandler } from "@wiredwp/robinpath";
2
+ export declare const TableFunctions: Record<string, BuiltinHandler>;
3
+ export declare const TableFunctionMetadata: {
4
+ create: {
5
+ description: string;
6
+ parameters: {
7
+ name: string;
8
+ dataType: string;
9
+ description: string;
10
+ formInputType: string;
11
+ required: boolean;
12
+ }[];
13
+ returnType: string;
14
+ returnDescription: string;
15
+ example: string;
16
+ };
17
+ select: {
18
+ description: string;
19
+ parameters: {
20
+ name: string;
21
+ dataType: string;
22
+ description: string;
23
+ formInputType: string;
24
+ required: boolean;
25
+ }[];
26
+ returnType: string;
27
+ returnDescription: string;
28
+ example: string;
29
+ };
30
+ where: {
31
+ description: string;
32
+ parameters: {
33
+ name: string;
34
+ dataType: string;
35
+ description: string;
36
+ formInputType: string;
37
+ required: boolean;
38
+ }[];
39
+ returnType: string;
40
+ returnDescription: string;
41
+ example: string;
42
+ };
43
+ orderBy: {
44
+ description: string;
45
+ parameters: {
46
+ name: string;
47
+ dataType: string;
48
+ description: string;
49
+ formInputType: string;
50
+ required: boolean;
51
+ }[];
52
+ returnType: string;
53
+ returnDescription: string;
54
+ example: string;
55
+ };
56
+ groupBy: {
57
+ description: string;
58
+ parameters: {
59
+ name: string;
60
+ dataType: string;
61
+ description: string;
62
+ formInputType: string;
63
+ required: boolean;
64
+ }[];
65
+ returnType: string;
66
+ returnDescription: string;
67
+ example: string;
68
+ };
69
+ aggregate: {
70
+ description: string;
71
+ parameters: {
72
+ name: string;
73
+ dataType: string;
74
+ description: string;
75
+ formInputType: string;
76
+ required: boolean;
77
+ }[];
78
+ returnType: string;
79
+ returnDescription: string;
80
+ example: string;
81
+ };
82
+ join: {
83
+ description: string;
84
+ parameters: {
85
+ name: string;
86
+ dataType: string;
87
+ description: string;
88
+ formInputType: string;
89
+ required: boolean;
90
+ }[];
91
+ returnType: string;
92
+ returnDescription: string;
93
+ example: string;
94
+ };
95
+ distinct: {
96
+ description: string;
97
+ parameters: {
98
+ name: string;
99
+ dataType: string;
100
+ description: string;
101
+ formInputType: string;
102
+ required: boolean;
103
+ }[];
104
+ returnType: string;
105
+ returnDescription: string;
106
+ example: string;
107
+ };
108
+ limit: {
109
+ description: string;
110
+ parameters: {
111
+ name: string;
112
+ dataType: string;
113
+ description: string;
114
+ formInputType: string;
115
+ required: boolean;
116
+ }[];
117
+ returnType: string;
118
+ returnDescription: string;
119
+ example: string;
120
+ };
121
+ offset: {
122
+ description: string;
123
+ parameters: {
124
+ name: string;
125
+ dataType: string;
126
+ description: string;
127
+ formInputType: string;
128
+ required: boolean;
129
+ }[];
130
+ returnType: string;
131
+ returnDescription: string;
132
+ example: string;
133
+ };
134
+ addColumn: {
135
+ description: string;
136
+ parameters: {
137
+ name: string;
138
+ dataType: string;
139
+ description: string;
140
+ formInputType: string;
141
+ required: boolean;
142
+ }[];
143
+ returnType: string;
144
+ returnDescription: string;
145
+ example: string;
146
+ };
147
+ removeColumn: {
148
+ description: string;
149
+ parameters: {
150
+ name: string;
151
+ dataType: string;
152
+ description: string;
153
+ formInputType: string;
154
+ required: boolean;
155
+ }[];
156
+ returnType: string;
157
+ returnDescription: string;
158
+ example: string;
159
+ };
160
+ renameColumn: {
161
+ description: string;
162
+ parameters: {
163
+ name: string;
164
+ dataType: string;
165
+ description: string;
166
+ formInputType: string;
167
+ required: boolean;
168
+ }[];
169
+ returnType: string;
170
+ returnDescription: string;
171
+ example: string;
172
+ };
173
+ pivot: {
174
+ description: string;
175
+ parameters: {
176
+ name: string;
177
+ dataType: string;
178
+ description: string;
179
+ formInputType: string;
180
+ required: boolean;
181
+ }[];
182
+ returnType: string;
183
+ returnDescription: string;
184
+ example: string;
185
+ };
186
+ unpivot: {
187
+ description: string;
188
+ parameters: {
189
+ name: string;
190
+ dataType: string;
191
+ description: string;
192
+ formInputType: string;
193
+ required: boolean;
194
+ }[];
195
+ returnType: string;
196
+ returnDescription: string;
197
+ example: string;
198
+ };
199
+ count: {
200
+ description: string;
201
+ parameters: {
202
+ name: string;
203
+ dataType: string;
204
+ description: string;
205
+ formInputType: string;
206
+ required: boolean;
207
+ }[];
208
+ returnType: string;
209
+ returnDescription: string;
210
+ example: string;
211
+ };
212
+ sum: {
213
+ description: string;
214
+ parameters: {
215
+ name: string;
216
+ dataType: string;
217
+ description: string;
218
+ formInputType: string;
219
+ required: boolean;
220
+ }[];
221
+ returnType: string;
222
+ returnDescription: string;
223
+ example: string;
224
+ };
225
+ avg: {
226
+ description: string;
227
+ parameters: {
228
+ name: string;
229
+ dataType: string;
230
+ description: string;
231
+ formInputType: string;
232
+ required: boolean;
233
+ }[];
234
+ returnType: string;
235
+ returnDescription: string;
236
+ example: string;
237
+ };
238
+ min: {
239
+ description: string;
240
+ parameters: {
241
+ name: string;
242
+ dataType: string;
243
+ description: string;
244
+ formInputType: string;
245
+ required: boolean;
246
+ }[];
247
+ returnType: string;
248
+ returnDescription: string;
249
+ example: string;
250
+ };
251
+ max: {
252
+ description: string;
253
+ parameters: {
254
+ name: string;
255
+ dataType: string;
256
+ description: string;
257
+ formInputType: string;
258
+ required: boolean;
259
+ }[];
260
+ returnType: string;
261
+ returnDescription: string;
262
+ example: string;
263
+ };
264
+ head: {
265
+ description: string;
266
+ parameters: {
267
+ name: string;
268
+ dataType: string;
269
+ description: string;
270
+ formInputType: string;
271
+ required: boolean;
272
+ }[];
273
+ returnType: string;
274
+ returnDescription: string;
275
+ example: string;
276
+ };
277
+ tail: {
278
+ description: string;
279
+ parameters: {
280
+ name: string;
281
+ dataType: string;
282
+ description: string;
283
+ formInputType: string;
284
+ required: boolean;
285
+ }[];
286
+ returnType: string;
287
+ returnDescription: string;
288
+ example: string;
289
+ };
290
+ columns: {
291
+ description: string;
292
+ parameters: {
293
+ name: string;
294
+ dataType: string;
295
+ description: string;
296
+ formInputType: string;
297
+ required: boolean;
298
+ }[];
299
+ returnType: string;
300
+ returnDescription: string;
301
+ example: string;
302
+ };
303
+ shape: {
304
+ description: string;
305
+ parameters: {
306
+ name: string;
307
+ dataType: string;
308
+ description: string;
309
+ formInputType: string;
310
+ required: boolean;
311
+ }[];
312
+ returnType: string;
313
+ returnDescription: string;
314
+ example: string;
315
+ };
316
+ };
317
+ export declare const TableModuleMetadata: {
318
+ description: string;
319
+ methods: string[];
320
+ };
321
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAC;AA6S3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAIzD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC"}
package/dist/table.js ADDED
@@ -0,0 +1,338 @@
1
+ const create = (args) => {
2
+ const input = args[0];
3
+ if (Array.isArray(input))
4
+ return [...input];
5
+ if (typeof input === "object" && input !== null) {
6
+ const obj = input;
7
+ if (obj.columns && obj.rows) {
8
+ return obj.rows.map((row) => {
9
+ const r = {};
10
+ obj.columns.forEach((col, i) => { r[col] = row[i]; });
11
+ return r;
12
+ });
13
+ }
14
+ }
15
+ return [];
16
+ };
17
+ const select = (args) => {
18
+ const table = (args[0] ?? []);
19
+ const columns = (args[1] ?? []);
20
+ return table.map((row) => {
21
+ const r = {};
22
+ for (const col of columns)
23
+ r[col] = row[col];
24
+ return r;
25
+ });
26
+ };
27
+ const where = (args) => {
28
+ const table = (args[0] ?? []);
29
+ const field = String(args[1] ?? "");
30
+ const operator = String(args[2] ?? "eq");
31
+ const value = args[3];
32
+ return table.filter((row) => {
33
+ const v = row[field];
34
+ switch (operator) {
35
+ case "eq": return v === value;
36
+ case "neq": return v !== value;
37
+ case "gt": return Number(v) > Number(value);
38
+ case "lt": return Number(v) < Number(value);
39
+ case "gte": return Number(v) >= Number(value);
40
+ case "lte": return Number(v) <= Number(value);
41
+ case "contains": return String(v).includes(String(value));
42
+ case "startsWith": return String(v).startsWith(String(value));
43
+ case "endsWith": return String(v).endsWith(String(value));
44
+ case "in": return Array.isArray(value) && value.includes(v);
45
+ case "notIn": return Array.isArray(value) && !value.includes(v);
46
+ case "isNull": return v === null || v === undefined;
47
+ case "notNull": return v !== null && v !== undefined;
48
+ default: return true;
49
+ }
50
+ });
51
+ };
52
+ const orderBy = (args) => {
53
+ const table = [...(args[0] ?? [])];
54
+ const field = String(args[1] ?? "");
55
+ const direction = String(args[2] ?? "asc").toLowerCase();
56
+ const mult = direction === "desc" ? -1 : 1;
57
+ return table.sort((a, b) => {
58
+ const va = a[field], vb = b[field];
59
+ if (va === vb)
60
+ return 0;
61
+ if (va === null || va === undefined)
62
+ return 1;
63
+ if (vb === null || vb === undefined)
64
+ return -1;
65
+ if (typeof va === "number" && typeof vb === "number")
66
+ return (va - vb) * mult;
67
+ return String(va).localeCompare(String(vb)) * mult;
68
+ });
69
+ };
70
+ const groupBy = (args) => {
71
+ const table = (args[0] ?? []);
72
+ const field = String(args[1] ?? "");
73
+ const groups = {};
74
+ for (const row of table) {
75
+ const key = String(row[field] ?? "");
76
+ (groups[key] ??= []).push(row);
77
+ }
78
+ return groups;
79
+ };
80
+ const aggregate = (args) => {
81
+ const table = (args[0] ?? []);
82
+ const groupField = String(args[1] ?? "");
83
+ const aggregations = (args[2] ?? []);
84
+ const groups = {};
85
+ for (const row of table) {
86
+ const key = String(row[groupField] ?? "");
87
+ (groups[key] ??= []).push(row);
88
+ }
89
+ return Object.entries(groups).map(([key, rows]) => {
90
+ const result = { [groupField]: key };
91
+ for (const agg of aggregations) {
92
+ const vals = rows.map((r) => r[agg.field]).filter((v) => v !== null && v !== undefined);
93
+ const nums = vals.map(Number).filter((n) => !isNaN(n));
94
+ switch (agg.op) {
95
+ case "sum":
96
+ result[`${agg.field}_sum`] = nums.reduce((a, b) => a + b, 0);
97
+ break;
98
+ case "avg":
99
+ result[`${agg.field}_avg`] = nums.length ? nums.reduce((a, b) => a + b, 0) / nums.length : 0;
100
+ break;
101
+ case "min":
102
+ result[`${agg.field}_min`] = nums.length ? Math.min(...nums) : null;
103
+ break;
104
+ case "max":
105
+ result[`${agg.field}_max`] = nums.length ? Math.max(...nums) : null;
106
+ break;
107
+ case "count":
108
+ result[`${agg.field}_count`] = vals.length;
109
+ break;
110
+ case "first":
111
+ result[`${agg.field}_first`] = vals[0] ?? null;
112
+ break;
113
+ case "last":
114
+ result[`${agg.field}_last`] = vals[vals.length - 1] ?? null;
115
+ break;
116
+ }
117
+ }
118
+ return result;
119
+ });
120
+ };
121
+ const join = (args) => {
122
+ const left = (args[0] ?? []);
123
+ const right = (args[1] ?? []);
124
+ const leftKey = String(args[2] ?? "");
125
+ const rightKey = String(args[3] ?? "");
126
+ const type = String(args[4] ?? "inner");
127
+ const rightIndex = new Map();
128
+ for (const r of right) {
129
+ const k = String(r[rightKey] ?? "");
130
+ (rightIndex.get(k) ?? (rightIndex.set(k, []), rightIndex.get(k))).push(r);
131
+ }
132
+ const results = [];
133
+ const matchedRight = new Set();
134
+ for (const l of left) {
135
+ const k = String(l[leftKey] ?? "");
136
+ const matches = rightIndex.get(k);
137
+ if (matches) {
138
+ matchedRight.add(k);
139
+ for (const r of matches)
140
+ results.push({ ...l, ...r });
141
+ }
142
+ else if (type === "left" || type === "full") {
143
+ results.push({ ...l });
144
+ }
145
+ }
146
+ if (type === "right" || type === "full") {
147
+ for (const r of right) {
148
+ const k = String(r[rightKey] ?? "");
149
+ if (!matchedRight.has(k))
150
+ results.push({ ...r });
151
+ }
152
+ }
153
+ return results;
154
+ };
155
+ const distinct = (args) => {
156
+ const table = (args[0] ?? []);
157
+ const columns = args[1];
158
+ const seen = new Set();
159
+ return table.filter((row) => {
160
+ const key = columns ? columns.map((c) => JSON.stringify(row[c])).join("|") : JSON.stringify(row);
161
+ if (seen.has(key))
162
+ return false;
163
+ seen.add(key);
164
+ return true;
165
+ });
166
+ };
167
+ const limit = (args) => {
168
+ const table = (args[0] ?? []);
169
+ return table.slice(0, Number(args[1] ?? 10));
170
+ };
171
+ const offset = (args) => {
172
+ const table = (args[0] ?? []);
173
+ return table.slice(Number(args[1] ?? 0));
174
+ };
175
+ const addColumn = (args) => {
176
+ const table = (args[0] ?? []);
177
+ const colName = String(args[1] ?? "");
178
+ const defaultValue = args[2];
179
+ return table.map((row) => ({ ...row, [colName]: defaultValue }));
180
+ };
181
+ const removeColumn = (args) => {
182
+ const table = (args[0] ?? []);
183
+ const cols = Array.isArray(args[1]) ? args[1].map(String) : [String(args[1] ?? "")];
184
+ return table.map((row) => {
185
+ const r = { ...row };
186
+ for (const c of cols)
187
+ delete r[c];
188
+ return r;
189
+ });
190
+ };
191
+ const renameColumn = (args) => {
192
+ const table = (args[0] ?? []);
193
+ const oldName = String(args[1] ?? "");
194
+ const newName = String(args[2] ?? "");
195
+ return table.map((row) => {
196
+ const r = {};
197
+ for (const [k, v] of Object.entries(row))
198
+ r[k === oldName ? newName : k] = v;
199
+ return r;
200
+ });
201
+ };
202
+ const pivot = (args) => {
203
+ const table = (args[0] ?? []);
204
+ const rowField = String(args[1] ?? "");
205
+ const columnField = String(args[2] ?? "");
206
+ const valueField = String(args[3] ?? "");
207
+ const aggOp = String(args[4] ?? "first");
208
+ const groups = new Map();
209
+ for (const row of table) {
210
+ const rk = String(row[rowField] ?? "");
211
+ const ck = String(row[columnField] ?? "");
212
+ if (!groups.has(rk))
213
+ groups.set(rk, new Map());
214
+ const cols = groups.get(rk);
215
+ if (!cols.has(ck))
216
+ cols.set(ck, []);
217
+ cols.get(ck).push(row[valueField]);
218
+ }
219
+ return [...groups.entries()].map(([rk, cols]) => {
220
+ const r = { [rowField]: rk };
221
+ for (const [ck, vals] of cols) {
222
+ const nums = vals.map(Number).filter((n) => !isNaN(n));
223
+ switch (aggOp) {
224
+ case "sum":
225
+ r[ck] = nums.reduce((a, b) => a + b, 0);
226
+ break;
227
+ case "count":
228
+ r[ck] = vals.length;
229
+ break;
230
+ case "avg":
231
+ r[ck] = nums.length ? nums.reduce((a, b) => a + b, 0) / nums.length : 0;
232
+ break;
233
+ case "first":
234
+ r[ck] = vals[0];
235
+ break;
236
+ default: r[ck] = vals[0];
237
+ }
238
+ }
239
+ return r;
240
+ });
241
+ };
242
+ const unpivot = (args) => {
243
+ const table = (args[0] ?? []);
244
+ const idColumns = (args[1] ?? []);
245
+ const valueColumns = (args[2] ?? []);
246
+ const results = [];
247
+ for (const row of table) {
248
+ for (const vc of valueColumns) {
249
+ const r = {};
250
+ for (const ic of idColumns)
251
+ r[ic] = row[ic];
252
+ r.key = vc;
253
+ r.value = row[vc];
254
+ results.push(r);
255
+ }
256
+ }
257
+ return results;
258
+ };
259
+ const count = (args) => (args[0] ?? []).length;
260
+ const sum = (args) => {
261
+ const table = (args[0] ?? []);
262
+ const field = String(args[1] ?? "");
263
+ return table.reduce((acc, row) => acc + Number(row[field] ?? 0), 0);
264
+ };
265
+ const avg = (args) => {
266
+ const table = (args[0] ?? []);
267
+ const field = String(args[1] ?? "");
268
+ if (!table.length)
269
+ return 0;
270
+ return table.reduce((acc, row) => acc + Number(row[field] ?? 0), 0) / table.length;
271
+ };
272
+ const min = (args) => {
273
+ const table = (args[0] ?? []);
274
+ const field = String(args[1] ?? "");
275
+ const vals = table.map((r) => Number(r[field])).filter((n) => !isNaN(n));
276
+ return vals.length ? Math.min(...vals) : null;
277
+ };
278
+ const max = (args) => {
279
+ const table = (args[0] ?? []);
280
+ const field = String(args[1] ?? "");
281
+ const vals = table.map((r) => Number(r[field])).filter((n) => !isNaN(n));
282
+ return vals.length ? Math.max(...vals) : null;
283
+ };
284
+ const head = (args) => {
285
+ const table = (args[0] ?? []);
286
+ return table.slice(0, Number(args[1] ?? 5));
287
+ };
288
+ const tail = (args) => {
289
+ const table = (args[0] ?? []);
290
+ const n = Number(args[1] ?? 5);
291
+ return table.slice(-n);
292
+ };
293
+ const columns = (args) => {
294
+ const table = (args[0] ?? []);
295
+ if (!table.length)
296
+ return [];
297
+ return Object.keys(table[0]);
298
+ };
299
+ const shape = (args) => {
300
+ const table = (args[0] ?? []);
301
+ return { rows: table.length, columns: table.length ? Object.keys(table[0]).length : 0 };
302
+ };
303
+ export const TableFunctions = {
304
+ create, select, where, orderBy, groupBy, aggregate, join, distinct, limit, offset,
305
+ addColumn, removeColumn, renameColumn, pivot, unpivot,
306
+ count, sum, avg, min, max, head, tail, columns, shape,
307
+ };
308
+ export const TableFunctionMetadata = {
309
+ create: { description: "Create a table from array of objects or columns+rows", parameters: [{ name: "data", dataType: "object", description: "Array of objects or {columns, rows}", formInputType: "text", required: true }], returnType: "array", returnDescription: "Array of row objects", example: 'table.create [{"name": "Alice", "age": 30}]' },
310
+ select: { description: "Select specific columns", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "columns", dataType: "array", description: "Column names to keep", formInputType: "text", required: true }], returnType: "array", returnDescription: "Table with selected columns", example: 'table.select $data ["name", "age"]' },
311
+ where: { description: "Filter rows by condition", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column name", formInputType: "text", required: true }, { name: "operator", dataType: "string", description: "eq|neq|gt|lt|gte|lte|contains|startsWith|endsWith|in|notIn|isNull|notNull", formInputType: "text", required: true }, { name: "value", dataType: "any", description: "Comparison value", formInputType: "text", required: false }], returnType: "array", returnDescription: "Filtered rows", example: 'table.where $data "age" "gt" 25' },
312
+ orderBy: { description: "Sort rows by a field", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column to sort by", formInputType: "text", required: true }, { name: "direction", dataType: "string", description: "asc or desc", formInputType: "text", required: false }], returnType: "array", returnDescription: "Sorted table", example: 'table.orderBy $data "age" "desc"' },
313
+ groupBy: { description: "Group rows by a field", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column to group by", formInputType: "text", required: true }], returnType: "object", returnDescription: "Grouped rows keyed by field value", example: 'table.groupBy $data "department"' },
314
+ aggregate: { description: "Aggregate grouped data", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "groupField", dataType: "string", description: "Column to group by", formInputType: "text", required: true }, { name: "aggregations", dataType: "array", description: "Array of {field, op: sum|avg|min|max|count|first|last}", formInputType: "text", required: true }], returnType: "array", returnDescription: "Aggregated results", example: 'table.aggregate $data "dept" [{"field": "salary", "op": "avg"}]' },
315
+ join: { description: "Join two tables", parameters: [{ name: "left", dataType: "array", description: "Left table", formInputType: "text", required: true }, { name: "right", dataType: "array", description: "Right table", formInputType: "text", required: true }, { name: "leftKey", dataType: "string", description: "Left join key", formInputType: "text", required: true }, { name: "rightKey", dataType: "string", description: "Right join key", formInputType: "text", required: true }, { name: "type", dataType: "string", description: "inner|left|right|full", formInputType: "text", required: false }], returnType: "array", returnDescription: "Joined table", example: 'table.join $users $orders "id" "userId" "left"' },
316
+ distinct: { description: "Remove duplicate rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "columns", dataType: "array", description: "Columns for uniqueness check", formInputType: "text", required: false }], returnType: "array", returnDescription: "Deduplicated table", example: 'table.distinct $data ["name"]' },
317
+ limit: { description: "Take first N rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "n", dataType: "number", description: "Number of rows", formInputType: "text", required: true }], returnType: "array", returnDescription: "First N rows", example: 'table.limit $data 10' },
318
+ offset: { description: "Skip first N rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "n", dataType: "number", description: "Rows to skip", formInputType: "text", required: true }], returnType: "array", returnDescription: "Remaining rows", example: 'table.offset $data 5' },
319
+ addColumn: { description: "Add a column with a default value", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "columnName", dataType: "string", description: "New column name", formInputType: "text", required: true }, { name: "value", dataType: "any", description: "Default value", formInputType: "text", required: true }], returnType: "array", returnDescription: "Table with new column", example: 'table.addColumn $data "status" "active"' },
320
+ removeColumn: { description: "Remove column(s)", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "columns", dataType: "any", description: "Column name or array of names", formInputType: "text", required: true }], returnType: "array", returnDescription: "Table without specified columns", example: 'table.removeColumn $data "temp"' },
321
+ renameColumn: { description: "Rename a column", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "oldName", dataType: "string", description: "Current name", formInputType: "text", required: true }, { name: "newName", dataType: "string", description: "New name", formInputType: "text", required: true }], returnType: "array", returnDescription: "Table with renamed column", example: 'table.renameColumn $data "fname" "firstName"' },
322
+ pivot: { description: "Pivot table", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "rowField", dataType: "string", description: "Row grouping field", formInputType: "text", required: true }, { name: "columnField", dataType: "string", description: "Column pivot field", formInputType: "text", required: true }, { name: "valueField", dataType: "string", description: "Value field", formInputType: "text", required: true }, { name: "aggOp", dataType: "string", description: "sum|count|avg|first", formInputType: "text", required: false }], returnType: "array", returnDescription: "Pivoted table", example: 'table.pivot $data "product" "month" "sales" "sum"' },
323
+ unpivot: { description: "Unpivot/melt table", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "idColumns", dataType: "array", description: "Columns to keep", formInputType: "text", required: true }, { name: "valueColumns", dataType: "array", description: "Columns to melt", formInputType: "text", required: true }], returnType: "array", returnDescription: "Unpivoted table with key/value columns", example: 'table.unpivot $data ["name"] ["jan", "feb", "mar"]' },
324
+ count: { description: "Count rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }], returnType: "number", returnDescription: "Row count", example: 'table.count $data' },
325
+ sum: { description: "Sum a numeric column", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column name", formInputType: "text", required: true }], returnType: "number", returnDescription: "Sum", example: 'table.sum $data "amount"' },
326
+ avg: { description: "Average a numeric column", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column name", formInputType: "text", required: true }], returnType: "number", returnDescription: "Average", example: 'table.avg $data "score"' },
327
+ min: { description: "Minimum of a column", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column name", formInputType: "text", required: true }], returnType: "number", returnDescription: "Minimum value", example: 'table.min $data "price"' },
328
+ max: { description: "Maximum of a column", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "field", dataType: "string", description: "Column name", formInputType: "text", required: true }], returnType: "number", returnDescription: "Maximum value", example: 'table.max $data "price"' },
329
+ head: { description: "First N rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "n", dataType: "number", description: "Number of rows (default 5)", formInputType: "text", required: false }], returnType: "array", returnDescription: "First N rows", example: 'table.head $data 5' },
330
+ tail: { description: "Last N rows", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }, { name: "n", dataType: "number", description: "Number of rows (default 5)", formInputType: "text", required: false }], returnType: "array", returnDescription: "Last N rows", example: 'table.tail $data 5' },
331
+ columns: { description: "Get column names", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }], returnType: "array", returnDescription: "Column name strings", example: 'table.columns $data' },
332
+ shape: { description: "Get row and column counts", parameters: [{ name: "table", dataType: "array", description: "Table data", formInputType: "text", required: true }], returnType: "object", returnDescription: "{rows, columns}", example: 'table.shape $data' },
333
+ };
334
+ export const TableModuleMetadata = {
335
+ description: "Tabular data operations: filter, sort, join, group, aggregate, pivot — like a lightweight DataFrame",
336
+ methods: ["create", "select", "where", "orderBy", "groupBy", "aggregate", "join", "distinct", "limit", "offset", "addColumn", "removeColumn", "renameColumn", "pivot", "unpivot", "count", "sum", "avg", "min", "max", "head", "tail", "columns", "shape"],
337
+ };
338
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "@robinpath/table",
3
+ "version": "0.1.0",
4
+ "publishConfig": { "access": "public" },
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
9
+ "files": ["dist"],
10
+ "scripts": { "build": "tsc", "test": "node --import tsx --test tests/*.test.ts" },
11
+ "peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
12
+ "devDependencies": { "@wiredwp/robinpath": "^0.30.1", "tsx": "^4.19.0", "typescript": "^5.6.0" }
13
+ }