@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.
Files changed (160) hide show
  1. package/README.md +68 -85
  2. package/TOOL_LIST.md +704 -87
  3. package/dist/config/constants.d.ts +18 -7
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +21 -8
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/loader.d.ts +11 -11
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +53 -93
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +3 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +2 -4
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/formatters.js +1 -1
  16. package/dist/confluence/formatters.js.map +1 -1
  17. package/dist/confluence/tools.d.ts +4 -0
  18. package/dist/confluence/tools.d.ts.map +1 -1
  19. package/dist/confluence/tools.js +180 -125
  20. package/dist/confluence/tools.js.map +1 -1
  21. package/dist/index.js +17 -26
  22. package/dist/index.js.map +1 -1
  23. package/dist/jira/formatters.d.ts +1 -0
  24. package/dist/jira/formatters.d.ts.map +1 -1
  25. package/dist/jira/formatters.js +13 -12
  26. package/dist/jira/formatters.js.map +1 -1
  27. package/dist/jira/tools.d.ts +4 -0
  28. package/dist/jira/tools.d.ts.map +1 -1
  29. package/dist/jira/tools.js +189 -50
  30. package/dist/jira/tools.js.map +1 -1
  31. package/dist/permissions/tool-registry.d.ts +2 -2
  32. package/dist/permissions/tool-registry.d.ts.map +1 -1
  33. package/dist/permissions/tool-registry.js +4 -2
  34. package/dist/permissions/tool-registry.js.map +1 -1
  35. package/dist/permissions/write-home-validator.d.ts.map +1 -1
  36. package/dist/permissions/write-home-validator.js +13 -3
  37. package/dist/permissions/write-home-validator.js.map +1 -1
  38. package/dist/tempo/defaults.d.ts +17 -0
  39. package/dist/tempo/defaults.d.ts.map +1 -0
  40. package/dist/tempo/defaults.js +26 -0
  41. package/dist/tempo/defaults.js.map +1 -0
  42. package/dist/tempo/tools.d.ts +5 -0
  43. package/dist/tempo/tools.d.ts.map +1 -1
  44. package/dist/tempo/tools.js +108 -34
  45. package/dist/tempo/tools.js.map +1 -1
  46. package/dist/utils/buffer-pipeline/index.d.ts +30 -0
  47. package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
  48. package/dist/utils/buffer-pipeline/index.js +317 -0
  49. package/dist/utils/buffer-pipeline/index.js.map +1 -0
  50. package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
  51. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
  52. package/dist/utils/buffer-pipeline/output/csv.js +117 -0
  53. package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
  54. package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
  55. package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
  56. package/dist/utils/buffer-pipeline/output/json.js +48 -0
  57. package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
  58. package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
  59. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
  60. package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
  61. package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
  62. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
  63. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
  64. package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
  65. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
  66. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
  67. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
  68. package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
  69. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
  70. package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
  71. package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
  72. package/dist/utils/buffer-pipeline/schema.js +168 -0
  73. package/dist/utils/buffer-pipeline/schema.js.map +1 -0
  74. package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
  75. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
  76. package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
  77. package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
  78. package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
  79. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
  80. package/dist/utils/buffer-pipeline/stages/format.js +160 -0
  81. package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
  82. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
  83. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
  84. package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
  85. package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
  86. package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
  87. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
  88. package/dist/utils/buffer-pipeline/stages/select.js +228 -0
  89. package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
  90. package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
  91. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
  92. package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
  93. package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
  94. package/dist/utils/buffer-pipeline/types.d.ts +277 -0
  95. package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
  96. package/dist/utils/buffer-pipeline/types.js +8 -0
  97. package/dist/utils/buffer-pipeline/types.js.map +1 -0
  98. package/dist/utils/buffer-tools.d.ts +749 -19
  99. package/dist/utils/buffer-tools.d.ts.map +1 -1
  100. package/dist/utils/buffer-tools.js +738 -491
  101. package/dist/utils/buffer-tools.js.map +1 -1
  102. package/dist/utils/content-buffer.d.ts +55 -4
  103. package/dist/utils/content-buffer.d.ts.map +1 -1
  104. package/dist/utils/content-buffer.js +107 -9
  105. package/dist/utils/content-buffer.js.map +1 -1
  106. package/dist/utils/jicon-help.d.ts +1 -1
  107. package/dist/utils/jicon-help.d.ts.map +1 -1
  108. package/dist/utils/jicon-help.js +253 -28
  109. package/dist/utils/jicon-help.js.map +1 -1
  110. package/dist/utils/json-structure.d.ts +121 -0
  111. package/dist/utils/json-structure.d.ts.map +1 -0
  112. package/dist/utils/json-structure.js +637 -0
  113. package/dist/utils/json-structure.js.map +1 -0
  114. package/dist/utils/plantuml/include-expander.d.ts +31 -30
  115. package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
  116. package/dist/utils/plantuml/include-expander.js +167 -133
  117. package/dist/utils/plantuml/include-expander.js.map +1 -1
  118. package/dist/utils/plantuml/index.d.ts +3 -3
  119. package/dist/utils/plantuml/index.d.ts.map +1 -1
  120. package/dist/utils/plantuml/index.js +4 -4
  121. package/dist/utils/plantuml/index.js.map +1 -1
  122. package/dist/utils/plantuml/service.d.ts +13 -24
  123. package/dist/utils/plantuml/service.d.ts.map +1 -1
  124. package/dist/utils/plantuml/service.js +49 -99
  125. package/dist/utils/plantuml/service.js.map +1 -1
  126. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  127. package/dist/utils/plantuml/tools.js +33 -72
  128. package/dist/utils/plantuml/tools.js.map +1 -1
  129. package/dist/utils/plantuml/types.d.ts +1 -35
  130. package/dist/utils/plantuml/types.d.ts.map +1 -1
  131. package/dist/utils/plantuml/types.js +1 -11
  132. package/dist/utils/plantuml/types.js.map +1 -1
  133. package/dist/utils/plantuml/validation-helper.d.ts +1 -1
  134. package/dist/utils/plantuml/validation-helper.js +12 -12
  135. package/dist/utils/plantuml/validation-helper.js.map +1 -1
  136. package/dist/utils/response-formatter.d.ts +61 -6
  137. package/dist/utils/response-formatter.d.ts.map +1 -1
  138. package/dist/utils/response-formatter.js +174 -91
  139. package/dist/utils/response-formatter.js.map +1 -1
  140. package/dist/utils/url-tools.d.ts.map +1 -1
  141. package/dist/utils/url-tools.js +22 -0
  142. package/dist/utils/url-tools.js.map +1 -1
  143. package/dist/utils/xhtml/error-locator.js +2 -2
  144. package/dist/utils/xhtml/error-locator.js.map +1 -1
  145. package/dist/utils/xhtml/index.d.ts +1 -1
  146. package/dist/utils/xhtml/index.d.ts.map +1 -1
  147. package/dist/utils/xhtml/index.js +1 -1
  148. package/dist/utils/xhtml/index.js.map +1 -1
  149. package/dist/utils/xhtml/parser.d.ts +34 -5
  150. package/dist/utils/xhtml/parser.d.ts.map +1 -1
  151. package/dist/utils/xhtml/parser.js +66 -11
  152. package/dist/utils/xhtml/parser.js.map +1 -1
  153. package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
  154. package/dist/utils/xhtml/plantuml.js +5 -3
  155. package/dist/utils/xhtml/plantuml.js.map +1 -1
  156. package/dist/utils/xhtml/serializer.d.ts.map +1 -1
  157. package/dist/utils/xhtml/serializer.js +12 -15
  158. package/dist/utils/xhtml/serializer.js.map +1 -1
  159. package/package.json +12 -4
  160. package/crypto512-jicon-mcp-1.3.0.tgz +0 -0
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Format Stage
3
+ *
4
+ * Applies conditional formatting rules to items.
5
+ * Used by output generators to style cells/elements based on conditions.
6
+ */
7
+ import { evaluateCondition } from "./filter.js";
8
+ /**
9
+ * Evaluate format rules against an item and return applicable styles
10
+ */
11
+ export function evaluateFormats(item, formats) {
12
+ const fieldStyles = new Map();
13
+ let rowStyle = {};
14
+ for (const format of formats) {
15
+ if (evaluateCondition(item, format.condition)) {
16
+ if (format.fields && format.fields.length > 0) {
17
+ // Apply to specific fields
18
+ for (const field of format.fields) {
19
+ const existing = fieldStyles.get(field) || {};
20
+ fieldStyles.set(field, mergeStyles(existing, format.style));
21
+ }
22
+ }
23
+ else {
24
+ // Apply to entire row
25
+ rowStyle = mergeStyles(rowStyle, format.style);
26
+ }
27
+ }
28
+ }
29
+ return { fieldStyles, rowStyle };
30
+ }
31
+ /**
32
+ * Merge two styles, with later style taking precedence
33
+ */
34
+ export function mergeStyles(base, override) {
35
+ return {
36
+ ...base,
37
+ ...override,
38
+ };
39
+ }
40
+ /**
41
+ * Execute format stage - annotates items with formatting info
42
+ */
43
+ export function executeFormat(items, formats) {
44
+ if (!formats || formats.length === 0) {
45
+ // No formatting - wrap items without styles
46
+ return items.map((data) => ({
47
+ data,
48
+ styles: new Map(),
49
+ }));
50
+ }
51
+ return items.map((data) => {
52
+ const { fieldStyles, rowStyle } = evaluateFormats(data, formats);
53
+ return {
54
+ data,
55
+ styles: fieldStyles,
56
+ rowStyle: Object.keys(rowStyle).length > 0 ? rowStyle : undefined,
57
+ };
58
+ });
59
+ }
60
+ /**
61
+ * Convert style to inline CSS string
62
+ */
63
+ export function styleToInlineCss(style) {
64
+ const parts = [];
65
+ if (style.color) {
66
+ parts.push(`color: ${style.color}`);
67
+ }
68
+ if (style.backgroundColor) {
69
+ parts.push(`background-color: ${style.backgroundColor}`);
70
+ }
71
+ if (style.bold) {
72
+ parts.push("font-weight: bold");
73
+ }
74
+ if (style.italic) {
75
+ parts.push("font-style: italic");
76
+ }
77
+ return parts.join("; ");
78
+ }
79
+ /**
80
+ * Apply text decorations (prefix, suffix, icon) to a value
81
+ */
82
+ export function applyTextDecorations(value, style) {
83
+ let result = value;
84
+ if (style.icon) {
85
+ result = `${style.icon} ${result}`;
86
+ }
87
+ if (style.prefix) {
88
+ result = `${style.prefix}${result}`;
89
+ }
90
+ if (style.suffix) {
91
+ result = `${result}${style.suffix}`;
92
+ }
93
+ return result;
94
+ }
95
+ /**
96
+ * Get the effective style for a field, merging row style and field-specific style
97
+ */
98
+ export function getEffectiveStyle(item, field) {
99
+ const fieldStyle = item.styles.get(field);
100
+ const rowStyle = item.rowStyle;
101
+ if (!fieldStyle && !rowStyle) {
102
+ return {};
103
+ }
104
+ if (!fieldStyle) {
105
+ return rowStyle || {};
106
+ }
107
+ if (!rowStyle) {
108
+ return fieldStyle;
109
+ }
110
+ // Merge row style (base) with field style (override)
111
+ return mergeStyles(rowStyle, fieldStyle);
112
+ }
113
+ /**
114
+ * Format a cell value with styling for XHTML output
115
+ */
116
+ export function formatCellXhtml(value, style) {
117
+ // Convert value to string
118
+ let strValue;
119
+ if (value === null || value === undefined) {
120
+ strValue = "";
121
+ }
122
+ else if (Array.isArray(value)) {
123
+ strValue = value.join(", ");
124
+ }
125
+ else if (typeof value === "object") {
126
+ strValue = JSON.stringify(value);
127
+ }
128
+ else {
129
+ strValue = String(value);
130
+ }
131
+ // Escape HTML entities
132
+ strValue = escapeXml(strValue);
133
+ // Apply text decorations
134
+ strValue = applyTextDecorations(strValue, style);
135
+ // Wrap in styled span if needed
136
+ const inlineCss = styleToInlineCss(style);
137
+ if (inlineCss || style.cssClass) {
138
+ const attrs = [];
139
+ if (style.cssClass) {
140
+ attrs.push(`class="${escapeXml(style.cssClass)}"`);
141
+ }
142
+ if (inlineCss) {
143
+ attrs.push(`style="${escapeXml(inlineCss)}"`);
144
+ }
145
+ return `<span ${attrs.join(" ")}>${strValue}</span>`;
146
+ }
147
+ return strValue;
148
+ }
149
+ /**
150
+ * Escape XML special characters
151
+ */
152
+ export function escapeXml(str) {
153
+ return str
154
+ .replace(/&/g, "&amp;")
155
+ .replace(/</g, "&lt;")
156
+ .replace(/>/g, "&gt;")
157
+ .replace(/"/g, "&quot;")
158
+ .replace(/'/g, "&apos;");
159
+ }
160
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/stages/format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA6B,EAC7B,OAA4B;IAO5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,IAAI,QAAQ,GAAgB,EAAE,CAAC;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,2BAA2B;gBAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC9C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sBAAsB;gBACtB,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,QAAqB;IAClE,OAAO;QACL,GAAG,IAAI;QACP,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAgC,EAChC,OAA6B;IAE7B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,4CAA4C;QAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI;YACJ,MAAM,EAAE,IAAI,GAAG,EAAE;SAClB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,KAAkB;IAElB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAmB,EACnB,KAAa;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,qDAAqD;IACrD,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAc,EACd,KAAkB;IAElB,0BAA0B;IAC1B,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE/B,yBAAyB;IACzB,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEjD,gCAAgC;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,SAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,SAAS,CAAC;IACvD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Group By Stage
3
+ *
4
+ * Groups items by a field and computes aggregations.
5
+ * Similar to SQL GROUP BY with aggregate functions.
6
+ */
7
+ import type { GroupByConfig } from "../types.js";
8
+ /**
9
+ * Execute group by stage
10
+ * Returns aggregated results, one row per group
11
+ */
12
+ export declare function executeGroupBy(items: Record<string, unknown>[], config: GroupByConfig): Record<string, unknown>[];
13
+ /**
14
+ * Validate aggregation config
15
+ */
16
+ export declare function validateGroupByConfig(items: unknown[], config: GroupByConfig): {
17
+ valid: boolean;
18
+ errors: string[];
19
+ };
20
+ /**
21
+ * Format aggregation results for display
22
+ * Converts arrays to readable strings, rounds numbers
23
+ */
24
+ export declare function formatAggregationValue(value: unknown): string;
25
+ //# sourceMappingURL=group-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by.d.ts","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/stages/group-by.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,aAAa,CAAC;AA+FtE;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAChC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkD3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EAAE,EAChB,MAAM,EAAE,aAAa,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA4CtC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB7D"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Group By Stage
3
+ *
4
+ * Groups items by a field and computes aggregations.
5
+ * Similar to SQL GROUP BY with aggregate functions.
6
+ */
7
+ import { getFieldValue } from "./select.js";
8
+ /**
9
+ * Compute an aggregation over a list of values
10
+ */
11
+ function computeAggregation(values, func) {
12
+ switch (func) {
13
+ case "count":
14
+ return values.length;
15
+ case "sum": {
16
+ let sum = 0;
17
+ for (const v of values) {
18
+ const num = typeof v === "number" ? v : parseFloat(String(v));
19
+ if (!isNaN(num)) {
20
+ sum += num;
21
+ }
22
+ }
23
+ return sum;
24
+ }
25
+ case "avg": {
26
+ if (values.length === 0)
27
+ return 0;
28
+ let sum = 0;
29
+ let count = 0;
30
+ for (const v of values) {
31
+ const num = typeof v === "number" ? v : parseFloat(String(v));
32
+ if (!isNaN(num)) {
33
+ sum += num;
34
+ count++;
35
+ }
36
+ }
37
+ return count > 0 ? sum / count : 0;
38
+ }
39
+ case "min": {
40
+ let min;
41
+ for (const v of values) {
42
+ const num = typeof v === "number" ? v : parseFloat(String(v));
43
+ if (!isNaN(num)) {
44
+ if (min === undefined || num < min) {
45
+ min = num;
46
+ }
47
+ }
48
+ }
49
+ return min ?? null;
50
+ }
51
+ case "max": {
52
+ let max;
53
+ for (const v of values) {
54
+ const num = typeof v === "number" ? v : parseFloat(String(v));
55
+ if (!isNaN(num)) {
56
+ if (max === undefined || num > max) {
57
+ max = num;
58
+ }
59
+ }
60
+ }
61
+ return max ?? null;
62
+ }
63
+ case "first":
64
+ return values.length > 0 ? values[0] : null;
65
+ case "last":
66
+ return values.length > 0 ? values[values.length - 1] : null;
67
+ case "list":
68
+ return values;
69
+ case "unique":
70
+ return [...new Set(values.map((v) => (v === null || v === undefined ? "" : String(v))))];
71
+ default:
72
+ return null;
73
+ }
74
+ }
75
+ /**
76
+ * Get a stable string key for grouping
77
+ */
78
+ function getGroupKey(value) {
79
+ if (value === null || value === undefined) {
80
+ return "__null__";
81
+ }
82
+ if (typeof value === "object") {
83
+ return JSON.stringify(value);
84
+ }
85
+ return String(value);
86
+ }
87
+ /**
88
+ * Execute group by stage
89
+ * Returns aggregated results, one row per group
90
+ */
91
+ export function executeGroupBy(items, config) {
92
+ // Group items by the specified field
93
+ const groups = new Map();
94
+ for (const item of items) {
95
+ const groupValue = getFieldValue(item, config.field);
96
+ const groupKey = getGroupKey(groupValue);
97
+ if (!groups.has(groupKey)) {
98
+ groups.set(groupKey, {
99
+ groupValue,
100
+ items: [],
101
+ });
102
+ }
103
+ groups.get(groupKey).items.push(item);
104
+ }
105
+ // Compute aggregations for each group
106
+ const results = [];
107
+ for (const { groupValue, items: groupItems } of groups.values()) {
108
+ const row = {};
109
+ // Add the group field
110
+ const groupFieldName = config.field.split(".").pop() || config.field;
111
+ row[groupFieldName] = groupValue;
112
+ // Compute each aggregation
113
+ for (const agg of config.aggregations) {
114
+ if (agg.function === "count" && !agg.field) {
115
+ // Count all items in group
116
+ row[agg.as] = groupItems.length;
117
+ }
118
+ else {
119
+ // Extract values for the specified field
120
+ const values = agg.field
121
+ ? groupItems.map((item) => getFieldValue(item, agg.field))
122
+ : groupItems;
123
+ row[agg.as] = computeAggregation(values, agg.function);
124
+ }
125
+ }
126
+ results.push(row);
127
+ }
128
+ return results;
129
+ }
130
+ /**
131
+ * Validate aggregation config
132
+ */
133
+ export function validateGroupByConfig(items, config) {
134
+ const errors = [];
135
+ if (items.length === 0) {
136
+ return { valid: true, errors: [] };
137
+ }
138
+ const sampleItem = items[0];
139
+ // Check group field exists
140
+ const groupValue = getFieldValue(sampleItem, config.field);
141
+ if (groupValue === undefined) {
142
+ errors.push(`Group field '${config.field}' not found`);
143
+ }
144
+ // Check aggregation fields exist (for non-count operations)
145
+ for (const agg of config.aggregations) {
146
+ if (agg.field) {
147
+ const aggValue = getFieldValue(sampleItem, agg.field);
148
+ if (aggValue === undefined) {
149
+ errors.push(`Aggregation field '${agg.field}' not found`);
150
+ }
151
+ // Check numeric fields for numeric aggregations
152
+ if (["sum", "avg", "min", "max"].includes(agg.function)) {
153
+ if (aggValue !== undefined &&
154
+ typeof aggValue !== "number" &&
155
+ isNaN(parseFloat(String(aggValue)))) {
156
+ errors.push(`Field '${agg.field}' is not numeric, but used with ${agg.function}()`);
157
+ }
158
+ }
159
+ }
160
+ else if (agg.function !== "count") {
161
+ errors.push(`Aggregation '${agg.as}' requires a field for ${agg.function}()`);
162
+ }
163
+ }
164
+ return {
165
+ valid: errors.length === 0,
166
+ errors,
167
+ };
168
+ }
169
+ /**
170
+ * Format aggregation results for display
171
+ * Converts arrays to readable strings, rounds numbers
172
+ */
173
+ export function formatAggregationValue(value) {
174
+ if (value === null || value === undefined) {
175
+ return "-";
176
+ }
177
+ if (Array.isArray(value)) {
178
+ if (value.length === 0)
179
+ return "-";
180
+ if (value.length <= 3)
181
+ return value.join(", ");
182
+ return `${value.slice(0, 3).join(", ")} (+${value.length - 3} more)`;
183
+ }
184
+ if (typeof value === "number") {
185
+ // Round to 2 decimal places
186
+ return Number.isInteger(value) ? String(value) : value.toFixed(2);
187
+ }
188
+ return String(value);
189
+ }
190
+ //# sourceMappingURL=group-by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by.js","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/stages/group-by.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Select Stage
3
+ *
4
+ * Extracts and transforms fields from input items.
5
+ * Supports dot-notation for nested fields, renaming, and value transformations.
6
+ */
7
+ import type { FieldMapping, SelectConfig } from "../types.js";
8
+ /**
9
+ * Get a value from an object using dot notation path
10
+ * Handles nested objects and arrays
11
+ *
12
+ * @example
13
+ * getFieldValue({ priority: { name: "High" } }, "priority.name") // "High"
14
+ * getFieldValue({ labels: ["bug", "ui"] }, "labels") // ["bug", "ui"]
15
+ * getFieldValue({ fields: { customfield_10001: "value" } }, "fields.customfield_10001") // "value"
16
+ */
17
+ export declare function getFieldValue(item: unknown, path: string): unknown;
18
+ /**
19
+ * Get the output field name from a field mapping
20
+ */
21
+ export declare function getOutputFieldName(mapping: FieldMapping): string;
22
+ /**
23
+ * Transform a value according to the specified transformation
24
+ */
25
+ export declare function transformValue(value: unknown, transform: FieldMapping["transform"]): unknown;
26
+ /**
27
+ * Apply select stage to a single item
28
+ * Returns a new object with only the selected fields
29
+ */
30
+ export declare function selectItem(item: unknown, config: SelectConfig): Record<string, unknown>;
31
+ /**
32
+ * Apply select stage to all items
33
+ * If no select config is provided, passes items through unchanged
34
+ */
35
+ export declare function executeSelect(items: unknown[], config?: SelectConfig): Record<string, unknown>[];
36
+ /**
37
+ * Extract all available field paths from an item (for error suggestions)
38
+ * Limited to first 2 levels to avoid overwhelming output
39
+ */
40
+ export declare function extractFieldPaths(item: unknown, prefix?: string, depth?: number, maxDepth?: number): string[];
41
+ /**
42
+ * Validate select config and return errors if any fields don't exist
43
+ */
44
+ export declare function validateSelectConfig(items: unknown[], config: SelectConfig): {
45
+ valid: boolean;
46
+ errors: string[];
47
+ suggestions: Map<string, string[]>;
48
+ };
49
+ /**
50
+ * Get the field names that will be available after executing a select stage.
51
+ * If no select config, returns the original field names from the data.
52
+ */
53
+ export declare function getPostSelectFieldNames(items: unknown[], config?: SelectConfig): string[];
54
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../src/utils/buffer-pipeline/stages/select.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA8BlE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAOhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,GACnC,OAAO,CAmDT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,YAAY,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EAAE,EAChB,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAc3B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAU,GACnB,MAAM,EAAE,CAkCV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EAAE,EAChB,MAAM,EAAE,YAAY,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAiC1E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EAAE,EAChB,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,EAAE,CAaV"}