@crypto512/jicon-mcp 1.3.0 → 2.0.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 +68 -85
- package/TOOL_LIST.md +704 -87
- package/dist/config/constants.d.ts +18 -7
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +21 -8
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts +11 -11
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +53 -93
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +3 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -4
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/formatters.js +1 -1
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +4 -0
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +180 -125
- package/dist/confluence/tools.js.map +1 -1
- package/dist/index.js +17 -26
- package/dist/index.js.map +1 -1
- package/dist/jira/formatters.d.ts +1 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +13 -12
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +4 -0
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +189 -50
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +2 -2
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +4 -2
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/permissions/write-home-validator.d.ts.map +1 -1
- package/dist/permissions/write-home-validator.js +13 -3
- package/dist/permissions/write-home-validator.js.map +1 -1
- package/dist/tempo/defaults.d.ts +17 -0
- package/dist/tempo/defaults.d.ts.map +1 -0
- package/dist/tempo/defaults.js +26 -0
- package/dist/tempo/defaults.js.map +1 -0
- package/dist/tempo/tools.d.ts +5 -0
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +108 -34
- package/dist/tempo/tools.js.map +1 -1
- package/dist/utils/buffer-pipeline/index.d.ts +30 -0
- package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/index.js +317 -0
- package/dist/utils/buffer-pipeline/index.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.js +117 -0
- package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.js +48 -0
- package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
- package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
- package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
- package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/schema.js +168 -0
- package/dist/utils/buffer-pipeline/schema.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
- package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.js +160 -0
- package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.js +228 -0
- package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
- package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
- package/dist/utils/buffer-pipeline/types.d.ts +277 -0
- package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/types.js +8 -0
- package/dist/utils/buffer-pipeline/types.js.map +1 -0
- package/dist/utils/buffer-tools.d.ts +749 -19
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +738 -491
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +55 -4
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +107 -9
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +1 -1
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +253 -28
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/json-structure.d.ts +121 -0
- package/dist/utils/json-structure.d.ts.map +1 -0
- package/dist/utils/json-structure.js +637 -0
- package/dist/utils/json-structure.js.map +1 -0
- package/dist/utils/plantuml/include-expander.d.ts +31 -30
- package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
- package/dist/utils/plantuml/include-expander.js +167 -133
- package/dist/utils/plantuml/include-expander.js.map +1 -1
- package/dist/utils/plantuml/index.d.ts +3 -3
- package/dist/utils/plantuml/index.d.ts.map +1 -1
- package/dist/utils/plantuml/index.js +4 -4
- package/dist/utils/plantuml/index.js.map +1 -1
- package/dist/utils/plantuml/service.d.ts +13 -24
- package/dist/utils/plantuml/service.d.ts.map +1 -1
- package/dist/utils/plantuml/service.js +49 -99
- package/dist/utils/plantuml/service.js.map +1 -1
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +33 -72
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/plantuml/types.d.ts +1 -35
- package/dist/utils/plantuml/types.d.ts.map +1 -1
- package/dist/utils/plantuml/types.js +1 -11
- package/dist/utils/plantuml/types.js.map +1 -1
- package/dist/utils/plantuml/validation-helper.d.ts +1 -1
- package/dist/utils/plantuml/validation-helper.js +12 -12
- package/dist/utils/plantuml/validation-helper.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +61 -6
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +174 -91
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/url-tools.d.ts.map +1 -1
- package/dist/utils/url-tools.js +22 -0
- package/dist/utils/url-tools.js.map +1 -1
- package/dist/utils/xhtml/error-locator.js +2 -2
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- package/dist/utils/xhtml/index.d.ts +1 -1
- package/dist/utils/xhtml/index.d.ts.map +1 -1
- package/dist/utils/xhtml/index.js +1 -1
- package/dist/utils/xhtml/index.js.map +1 -1
- package/dist/utils/xhtml/parser.d.ts +34 -5
- package/dist/utils/xhtml/parser.d.ts.map +1 -1
- package/dist/utils/xhtml/parser.js +66 -11
- package/dist/utils/xhtml/parser.js.map +1 -1
- package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
- package/dist/utils/xhtml/plantuml.js +5 -3
- package/dist/utils/xhtml/plantuml.js.map +1 -1
- package/dist/utils/xhtml/serializer.d.ts.map +1 -1
- package/dist/utils/xhtml/serializer.js +12 -15
- package/dist/utils/xhtml/serializer.js.map +1 -1
- package/package.json +12 -4
- package/crypto512-jicon-mcp-1.3.0.tgz +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Buffer Pipeline Executor
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for executing data transformation pipelines.
|
|
5
|
+
* Orchestrates all stages: select → filter → groupBy → sort → limit → format → output
|
|
6
|
+
*/
|
|
7
|
+
// Stage imports
|
|
8
|
+
import { executeSelect, extractFieldPaths, validateSelectConfig } from "./stages/select.js";
|
|
9
|
+
import { executeFilter, validateFilterConditions } from "./stages/filter.js";
|
|
10
|
+
import { executeGroupBy, validateGroupByConfig } from "./stages/group-by.js";
|
|
11
|
+
import { executeSort, validateSortConfig } from "./stages/sort.js";
|
|
12
|
+
import { executeFormat } from "./stages/format.js";
|
|
13
|
+
// Output imports
|
|
14
|
+
import { generateXhtmlTable, generateTablePreview } from "./output/xhtml-table.js";
|
|
15
|
+
import { generateXhtmlList, generateListPreview } from "./output/xhtml-list.js";
|
|
16
|
+
import { generateJson, generateJsonPreview } from "./output/json.js";
|
|
17
|
+
import { generateCsv, generateCsvPreview, inferColumnsFromData } from "./output/csv.js";
|
|
18
|
+
import { generateMarkdown, generateMarkdownPreview } from "./output/markdown.js";
|
|
19
|
+
// Re-export schemas
|
|
20
|
+
export { BufferPipelineInputSchema, PipelineSchema } from "./schema.js";
|
|
21
|
+
/**
|
|
22
|
+
* Create a pipeline error with context
|
|
23
|
+
*/
|
|
24
|
+
function createError(message, statusCode, stage, details) {
|
|
25
|
+
return {
|
|
26
|
+
error: true,
|
|
27
|
+
message,
|
|
28
|
+
statusCode,
|
|
29
|
+
stage,
|
|
30
|
+
details,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Execute pipeline and return raw output string
|
|
35
|
+
* Used by the tool handler to get content for buffer storage
|
|
36
|
+
*/
|
|
37
|
+
export function executePipelineWithOutput(data, pipeline, context) {
|
|
38
|
+
const executedStages = [];
|
|
39
|
+
const inputCount = data.length;
|
|
40
|
+
// Track current data through stages
|
|
41
|
+
let items = [];
|
|
42
|
+
// Stage 1: Select (field extraction)
|
|
43
|
+
if (pipeline.select) {
|
|
44
|
+
const validation = validateSelectConfig(data, pipeline.select);
|
|
45
|
+
if (!validation.valid) {
|
|
46
|
+
const suggestions = [];
|
|
47
|
+
validation.suggestions.forEach((suggs, field) => {
|
|
48
|
+
suggestions.push(`${field} -> maybe: ${suggs.join(", ")}`);
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
error: createError(`Select validation failed: ${validation.errors.join("; ")}`, 400, "select", {
|
|
52
|
+
availableFields: data.length > 0 ? extractFieldPaths(data[0]) : [],
|
|
53
|
+
suggestion: suggestions.length > 0 ? suggestions.join("; ") : undefined,
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
items = executeSelect(data, pipeline.select);
|
|
58
|
+
executedStages.push("select");
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
items = executeSelect(data);
|
|
62
|
+
executedStages.push("select (passthrough)");
|
|
63
|
+
}
|
|
64
|
+
// Stage 2: Filter
|
|
65
|
+
if (pipeline.filter && pipeline.filter.length > 0) {
|
|
66
|
+
const validation = validateFilterConditions(items, pipeline.filter);
|
|
67
|
+
if (!validation.valid) {
|
|
68
|
+
return {
|
|
69
|
+
error: createError(`Filter validation failed: ${validation.errors.join("; ")}`, 400, "filter", {
|
|
70
|
+
availableFields: items.length > 0 ? Object.keys(items[0]) : [],
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
items = executeFilter(items, pipeline.filter);
|
|
75
|
+
executedStages.push("filter");
|
|
76
|
+
}
|
|
77
|
+
// Stage 3: Group By
|
|
78
|
+
if (pipeline.groupBy) {
|
|
79
|
+
const validation = validateGroupByConfig(items, pipeline.groupBy);
|
|
80
|
+
if (!validation.valid) {
|
|
81
|
+
return {
|
|
82
|
+
error: createError(`GroupBy validation failed: ${validation.errors.join("; ")}`, 400, "groupBy", {
|
|
83
|
+
availableFields: items.length > 0 ? Object.keys(items[0]) : [],
|
|
84
|
+
}),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
items = executeGroupBy(items, pipeline.groupBy);
|
|
88
|
+
executedStages.push("groupBy");
|
|
89
|
+
}
|
|
90
|
+
// Stage 4: Sort
|
|
91
|
+
if (pipeline.sort && pipeline.sort.length > 0) {
|
|
92
|
+
items = executeSort(items, pipeline.sort);
|
|
93
|
+
executedStages.push("sort");
|
|
94
|
+
}
|
|
95
|
+
// Stage 5: Limit
|
|
96
|
+
const outputCount = items.length;
|
|
97
|
+
if (pipeline.limit && pipeline.limit > 0 && items.length > pipeline.limit) {
|
|
98
|
+
items = items.slice(0, pipeline.limit);
|
|
99
|
+
executedStages.push(`limit(${pipeline.limit})`);
|
|
100
|
+
}
|
|
101
|
+
// Stage 6: Format
|
|
102
|
+
let formattedItems;
|
|
103
|
+
if (pipeline.format && pipeline.format.length > 0) {
|
|
104
|
+
formattedItems = executeFormat(items, pipeline.format);
|
|
105
|
+
executedStages.push("format");
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
formattedItems = executeFormat(items);
|
|
109
|
+
}
|
|
110
|
+
// Stage 7: Output
|
|
111
|
+
const outputType = pipeline.output.type;
|
|
112
|
+
let output;
|
|
113
|
+
let preview;
|
|
114
|
+
// Helper: validate table column fields exist in post-select data
|
|
115
|
+
const validateTableColumns = (columns) => {
|
|
116
|
+
if (items.length === 0)
|
|
117
|
+
return null; // No data to validate against
|
|
118
|
+
const availableFields = Object.keys(items[0]);
|
|
119
|
+
const missingFields = [];
|
|
120
|
+
const suggestions = [];
|
|
121
|
+
for (const col of columns) {
|
|
122
|
+
// Check if field exists (support dot notation for nested access)
|
|
123
|
+
const topLevelField = col.field.split(".")[0];
|
|
124
|
+
if (!availableFields.includes(topLevelField) && !availableFields.includes(col.field)) {
|
|
125
|
+
missingFields.push(col.field);
|
|
126
|
+
// Find similar fields for suggestion
|
|
127
|
+
const similar = availableFields.filter(f => f.toLowerCase().includes(topLevelField.toLowerCase()) ||
|
|
128
|
+
topLevelField.toLowerCase().includes(f.toLowerCase()));
|
|
129
|
+
if (similar.length > 0) {
|
|
130
|
+
suggestions.push(`"${col.field}" → maybe "${similar[0]}"`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (missingFields.length > 0) {
|
|
135
|
+
const hint = pipeline.select
|
|
136
|
+
? "After select stage renames fields, use the NEW names (the 'as' values) in table columns."
|
|
137
|
+
: undefined;
|
|
138
|
+
return createError(`Table column fields not found: ${missingFields.join(", ")}`, 400, "output", {
|
|
139
|
+
missingFields,
|
|
140
|
+
availableFields,
|
|
141
|
+
suggestions: suggestions.length > 0 ? suggestions : undefined,
|
|
142
|
+
hint,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
};
|
|
147
|
+
switch (outputType) {
|
|
148
|
+
case "xhtml_table": {
|
|
149
|
+
if (!pipeline.output.table) {
|
|
150
|
+
return {
|
|
151
|
+
error: createError("Table configuration required for xhtml_table output", 400, "output"),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// Validate column fields exist in data
|
|
155
|
+
const columnError = validateTableColumns(pipeline.output.table.columns);
|
|
156
|
+
if (columnError) {
|
|
157
|
+
return { error: columnError };
|
|
158
|
+
}
|
|
159
|
+
output = generateXhtmlTable(formattedItems, pipeline.output.table, context);
|
|
160
|
+
preview = generateTablePreview(formattedItems, pipeline.output.table, context);
|
|
161
|
+
executedStages.push("output(xhtml_table)");
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
case "xhtml_list": {
|
|
165
|
+
if (!pipeline.output.list) {
|
|
166
|
+
return {
|
|
167
|
+
error: createError("List configuration required for xhtml_list output", 400, "output"),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
output = generateXhtmlList(formattedItems, pipeline.output.list, context);
|
|
171
|
+
preview = generateListPreview(formattedItems, pipeline.output.list, context);
|
|
172
|
+
executedStages.push("output(xhtml_list)");
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
case "json": {
|
|
176
|
+
output = generateJson(formattedItems, pipeline.output);
|
|
177
|
+
preview = generateJsonPreview(formattedItems, pipeline.output);
|
|
178
|
+
executedStages.push("output(json)");
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case "csv": {
|
|
182
|
+
const columns = pipeline.output.table?.columns ?? inferColumnsFromData(formattedItems);
|
|
183
|
+
if (columns.length === 0) {
|
|
184
|
+
return {
|
|
185
|
+
error: createError("No columns for CSV output", 400, "output"),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// Validate column fields if explicitly provided
|
|
189
|
+
if (pipeline.output.table?.columns) {
|
|
190
|
+
const columnError = validateTableColumns(columns);
|
|
191
|
+
if (columnError) {
|
|
192
|
+
return { error: columnError };
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const csvConfig = { columns, ...pipeline.output.table };
|
|
196
|
+
output = generateCsv(formattedItems, csvConfig);
|
|
197
|
+
preview = generateCsvPreview(formattedItems, csvConfig);
|
|
198
|
+
executedStages.push("output(csv)");
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case "markdown": {
|
|
202
|
+
const mdColumns = pipeline.output.table?.columns ?? inferColumnsFromData(formattedItems);
|
|
203
|
+
if (mdColumns.length === 0) {
|
|
204
|
+
return {
|
|
205
|
+
error: createError("No columns for Markdown output", 400, "output"),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// Validate column fields if explicitly provided
|
|
209
|
+
if (pipeline.output.table?.columns) {
|
|
210
|
+
const columnError = validateTableColumns(mdColumns);
|
|
211
|
+
if (columnError) {
|
|
212
|
+
return { error: columnError };
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const mdConfig = { columns: mdColumns, ...pipeline.output.table };
|
|
216
|
+
output = generateMarkdown(formattedItems, mdConfig);
|
|
217
|
+
preview = generateMarkdownPreview(formattedItems, mdConfig);
|
|
218
|
+
executedStages.push("output(markdown)");
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
default:
|
|
222
|
+
return {
|
|
223
|
+
error: createError(`Unknown output type: ${outputType}`, 400, "output"),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
result: {
|
|
228
|
+
bufferId: "", // Set by caller
|
|
229
|
+
inputItems: inputCount,
|
|
230
|
+
outputItems: outputCount,
|
|
231
|
+
pipelineStages: executedStages,
|
|
232
|
+
outputType,
|
|
233
|
+
preview,
|
|
234
|
+
bufferSizeBytes: output.length,
|
|
235
|
+
hint: getHint(outputType),
|
|
236
|
+
},
|
|
237
|
+
output,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get contextual hint based on output type
|
|
242
|
+
*/
|
|
243
|
+
function getHint(outputType) {
|
|
244
|
+
switch (outputType) {
|
|
245
|
+
case "xhtml_table":
|
|
246
|
+
case "xhtml_list":
|
|
247
|
+
return "Use confluence_draft_create(bufferId) to publish to Confluence, or buffer_edit to modify";
|
|
248
|
+
case "json":
|
|
249
|
+
return "Use buffer_pipeline again with this buffer as source, or buffer_get_chunk to view";
|
|
250
|
+
case "csv":
|
|
251
|
+
case "markdown":
|
|
252
|
+
return "Use buffer_get_chunk to view content";
|
|
253
|
+
default:
|
|
254
|
+
return "";
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Validate a pipeline definition without executing it
|
|
259
|
+
* Returns validation errors and available fields
|
|
260
|
+
*/
|
|
261
|
+
export function validatePipeline(data, pipeline) {
|
|
262
|
+
const errors = [];
|
|
263
|
+
const warnings = [];
|
|
264
|
+
const availableFields = data.length > 0 ? extractFieldPaths(data[0]) : [];
|
|
265
|
+
// Validate select
|
|
266
|
+
if (pipeline.select) {
|
|
267
|
+
const validation = validateSelectConfig(data, pipeline.select);
|
|
268
|
+
if (!validation.valid) {
|
|
269
|
+
errors.push(...validation.errors);
|
|
270
|
+
}
|
|
271
|
+
// Warn about field renames if subsequent stages exist
|
|
272
|
+
if (pipeline.groupBy || pipeline.sort || pipeline.filter) {
|
|
273
|
+
const renamedFields = pipeline.select.fields
|
|
274
|
+
.filter((f) => {
|
|
275
|
+
const originalName = f.from.split(".").pop() || "";
|
|
276
|
+
return f.as && f.as !== originalName;
|
|
277
|
+
})
|
|
278
|
+
.map((f) => `"${f.from}" → "${f.as}"`);
|
|
279
|
+
if (renamedFields.length > 0) {
|
|
280
|
+
warnings.push(`Fields renamed by select: ${renamedFields.join(", ")}. Use NEW names (after "→") in subsequent stages (groupBy, sort, filter).`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Validate filter
|
|
285
|
+
if (pipeline.filter && pipeline.filter.length > 0) {
|
|
286
|
+
const validation = validateFilterConditions(data, pipeline.filter);
|
|
287
|
+
if (!validation.valid) {
|
|
288
|
+
errors.push(...validation.errors);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Validate groupBy
|
|
292
|
+
if (pipeline.groupBy) {
|
|
293
|
+
const validation = validateGroupByConfig(data, pipeline.groupBy);
|
|
294
|
+
if (!validation.valid) {
|
|
295
|
+
errors.push(...validation.errors);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// Validate sort
|
|
299
|
+
if (pipeline.sort && pipeline.sort.length > 0) {
|
|
300
|
+
const validation = validateSortConfig(data, pipeline.sort);
|
|
301
|
+
warnings.push(...validation.warnings);
|
|
302
|
+
}
|
|
303
|
+
// Validate output
|
|
304
|
+
if (pipeline.output.type === "xhtml_table" && !pipeline.output.table) {
|
|
305
|
+
errors.push("Table configuration required for xhtml_table output");
|
|
306
|
+
}
|
|
307
|
+
if (pipeline.output.type === "xhtml_list" && !pipeline.output.list) {
|
|
308
|
+
errors.push("List configuration required for xhtml_list output");
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
valid: errors.length === 0,
|
|
312
|
+
errors,
|
|
313
|
+
warnings,
|
|
314
|
+
availableFields,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/buffer-pipeline/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV Output Generator
|
|
3
|
+
*
|
|
4
|
+
* Outputs pipeline results as CSV with proper escaping.
|
|
5
|
+
*/
|
|
6
|
+
import type { FormattedItem, TableColumn, TableOutputConfig } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Generate CSV output
|
|
9
|
+
* Requires table configuration for column definitions
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateCsv(items: FormattedItem[], config: TableOutputConfig): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate a preview of the CSV output
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateCsvPreview(items: FormattedItem[], config: TableOutputConfig, maxRows?: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Infer column definitions from data if not provided
|
|
18
|
+
*/
|
|
19
|
+
export declare function inferColumnsFromData(items: FormattedItem[]): TableColumn[];
|
|
20
|
+
//# sourceMappingURL=csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/output/csv.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAuDjF;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,MAAU,GAClB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EAAE,GACrB,WAAW,EAAE,CAmBf"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV Output Generator
|
|
3
|
+
*
|
|
4
|
+
* Outputs pipeline results as CSV with proper escaping.
|
|
5
|
+
*/
|
|
6
|
+
import { getFieldValue } from "../stages/select.js";
|
|
7
|
+
/**
|
|
8
|
+
* Escape a value for CSV
|
|
9
|
+
* Handles quotes, commas, and newlines
|
|
10
|
+
*/
|
|
11
|
+
function escapeCsvValue(value) {
|
|
12
|
+
if (value === null || value === undefined) {
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
let strValue;
|
|
16
|
+
if (Array.isArray(value)) {
|
|
17
|
+
strValue = value.join("; ");
|
|
18
|
+
}
|
|
19
|
+
else if (typeof value === "object") {
|
|
20
|
+
strValue = JSON.stringify(value);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
strValue = String(value);
|
|
24
|
+
}
|
|
25
|
+
// Check if escaping is needed
|
|
26
|
+
const needsQuotes = strValue.includes(",") ||
|
|
27
|
+
strValue.includes('"') ||
|
|
28
|
+
strValue.includes("\n") ||
|
|
29
|
+
strValue.includes("\r");
|
|
30
|
+
if (needsQuotes) {
|
|
31
|
+
// Escape quotes by doubling them
|
|
32
|
+
return `"${strValue.replace(/"/g, '""')}"`;
|
|
33
|
+
}
|
|
34
|
+
return strValue;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate CSV header row
|
|
38
|
+
*/
|
|
39
|
+
function generateHeader(columns) {
|
|
40
|
+
return columns.map((col) => escapeCsvValue(col.header)).join(",");
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate CSV data row
|
|
44
|
+
*/
|
|
45
|
+
function generateRow(item, columns) {
|
|
46
|
+
return columns
|
|
47
|
+
.map((col) => {
|
|
48
|
+
const value = getFieldValue(item.data, col.field);
|
|
49
|
+
return escapeCsvValue(value);
|
|
50
|
+
})
|
|
51
|
+
.join(",");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate CSV output
|
|
55
|
+
* Requires table configuration for column definitions
|
|
56
|
+
*/
|
|
57
|
+
export function generateCsv(items, config) {
|
|
58
|
+
const lines = [];
|
|
59
|
+
// Header row
|
|
60
|
+
lines.push(generateHeader(config.columns));
|
|
61
|
+
// Data rows
|
|
62
|
+
for (const item of items) {
|
|
63
|
+
lines.push(generateRow(item, config.columns));
|
|
64
|
+
}
|
|
65
|
+
return lines.join("\n");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Generate a preview of the CSV output
|
|
69
|
+
*/
|
|
70
|
+
export function generateCsvPreview(items, config, maxRows = 3) {
|
|
71
|
+
const previewItems = items.slice(0, maxRows);
|
|
72
|
+
const lines = [];
|
|
73
|
+
// Header row
|
|
74
|
+
lines.push(generateHeader(config.columns));
|
|
75
|
+
// Data rows
|
|
76
|
+
for (const item of previewItems) {
|
|
77
|
+
lines.push(generateRow(item, config.columns));
|
|
78
|
+
}
|
|
79
|
+
if (items.length > maxRows) {
|
|
80
|
+
lines.push(`... ${items.length - maxRows} more rows`);
|
|
81
|
+
}
|
|
82
|
+
return lines.join("\n");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Infer column definitions from data if not provided
|
|
86
|
+
*/
|
|
87
|
+
export function inferColumnsFromData(items) {
|
|
88
|
+
if (items.length === 0) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
const firstItem = items[0].data;
|
|
92
|
+
const columns = [];
|
|
93
|
+
for (const key of Object.keys(firstItem)) {
|
|
94
|
+
// Skip internal fields
|
|
95
|
+
if (key.startsWith("__"))
|
|
96
|
+
continue;
|
|
97
|
+
columns.push({
|
|
98
|
+
field: key,
|
|
99
|
+
header: formatColumnHeader(key),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return columns;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Format a field name as a column header
|
|
106
|
+
* Converts camelCase/snake_case to Title Case
|
|
107
|
+
*/
|
|
108
|
+
function formatColumnHeader(fieldName) {
|
|
109
|
+
return fieldName
|
|
110
|
+
.replace(/([a-z])([A-Z])/g, "$1 $2") // camelCase -> camel Case
|
|
111
|
+
.replace(/_/g, " ") // snake_case -> snake case
|
|
112
|
+
.replace(/\./g, " ") // dot.notation -> dot notation
|
|
113
|
+
.split(" ")
|
|
114
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
115
|
+
.join(" ");
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/output/csv.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Output Generator
|
|
3
|
+
*
|
|
4
|
+
* Outputs pipeline results as clean JSON.
|
|
5
|
+
* Strips internal fields and optionally includes metadata.
|
|
6
|
+
*/
|
|
7
|
+
import type { FormattedItem, OutputConfig } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Generate JSON output
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateJson(items: FormattedItem[], config: OutputConfig): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate a preview of the JSON output
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateJsonPreview(items: FormattedItem[], _config: OutputConfig, maxItems?: number): string;
|
|
16
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/output/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkB/D;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,YAAY,GACnB,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,EAAE,YAAY,EACrB,QAAQ,GAAE,MAAU,GACnB,MAAM,CAWR"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Output Generator
|
|
3
|
+
*
|
|
4
|
+
* Outputs pipeline results as clean JSON.
|
|
5
|
+
* Strips internal fields and optionally includes metadata.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Clean an item by removing internal fields
|
|
9
|
+
*/
|
|
10
|
+
function cleanItem(item) {
|
|
11
|
+
const cleaned = {};
|
|
12
|
+
for (const [key, value] of Object.entries(item)) {
|
|
13
|
+
// Skip internal fields
|
|
14
|
+
if (key.startsWith("__"))
|
|
15
|
+
continue;
|
|
16
|
+
cleaned[key] = value;
|
|
17
|
+
}
|
|
18
|
+
return cleaned;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate JSON output
|
|
22
|
+
*/
|
|
23
|
+
export function generateJson(items, config) {
|
|
24
|
+
const cleanedItems = items.map((item) => cleanItem(item.data));
|
|
25
|
+
if (config.includeMetadata) {
|
|
26
|
+
return JSON.stringify({
|
|
27
|
+
metadata: {
|
|
28
|
+
itemCount: cleanedItems.length,
|
|
29
|
+
generatedAt: new Date().toISOString(),
|
|
30
|
+
},
|
|
31
|
+
items: cleanedItems,
|
|
32
|
+
}, null, 2);
|
|
33
|
+
}
|
|
34
|
+
return JSON.stringify(cleanedItems, null, 2);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate a preview of the JSON output
|
|
38
|
+
*/
|
|
39
|
+
export function generateJsonPreview(items, _config, maxItems = 3) {
|
|
40
|
+
const previewItems = items.slice(0, maxItems);
|
|
41
|
+
const cleanedItems = previewItems.map((item) => cleanItem(item.data));
|
|
42
|
+
const preview = JSON.stringify(cleanedItems, null, 2);
|
|
43
|
+
if (items.length > maxItems) {
|
|
44
|
+
return `${preview}\n// ... ${items.length - maxItems} more items`;
|
|
45
|
+
}
|
|
46
|
+
return preview;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/output/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,uBAAuB;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAEnC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAsB,EACtB,MAAoB;IAEpB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,QAAQ,EAAE;gBACR,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC;YACD,KAAK,EAAE,YAAY;SACpB,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAsB,EACtB,OAAqB,EACrB,WAAmB,CAAC;IAEpB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,OAAO,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ,aAAa,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Output Generator
|
|
3
|
+
*
|
|
4
|
+
* Outputs pipeline results as Markdown tables.
|
|
5
|
+
*/
|
|
6
|
+
import type { FormattedItem, TableOutputConfig } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Generate Markdown table output
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateMarkdown(items: FormattedItem[], config: TableOutputConfig): string;
|
|
11
|
+
/**
|
|
12
|
+
* Generate a preview of the Markdown output
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateMarkdownPreview(items: FormattedItem[], config: TableOutputConfig, maxRows?: number): string;
|
|
15
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/output/markdown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAe,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkEjF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,MAAU,GAClB,MAAM,CAwBR"}
|