@pikku/addon-graph 0.12.5 → 0.12.7

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 (245) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  4. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  5. package/dist/.pikku/addon/pikku-package.gen.js +1 -1
  6. package/dist/.pikku/agent/pikku-agent-map.gen.d.ts +1 -1
  7. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +4 -2
  8. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts.map +1 -1
  9. package/dist/.pikku/agent/pikku-agent-types.gen.js.map +1 -1
  10. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  11. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  12. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  13. package/dist/.pikku/function/pikku-function-types.gen.d.ts +30 -26
  14. package/dist/.pikku/function/pikku-function-types.gen.d.ts.map +1 -1
  15. package/dist/.pikku/function/pikku-function-types.gen.js +3 -12
  16. package/dist/.pikku/function/pikku-function-types.gen.js.map +1 -1
  17. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  18. package/dist/.pikku/function/pikku-functions-meta.gen.json +350 -33
  19. package/dist/.pikku/function/pikku-functions.gen.js +19 -1
  20. package/dist/.pikku/function/pikku-functions.gen.js.map +1 -1
  21. package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -24
  22. package/dist/.pikku/http/pikku-http-types.gen.d.ts.map +1 -1
  23. package/dist/.pikku/http/pikku-http-types.gen.js +2 -24
  24. package/dist/.pikku/http/pikku-http-types.gen.js.map +1 -1
  25. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  26. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  27. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +10 -0
  28. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts.map +1 -0
  29. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +10 -0
  30. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js.map +1 -0
  31. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  32. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  33. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  34. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  35. package/dist/.pikku/pikku-services.gen.d.ts +6 -1
  36. package/dist/.pikku/pikku-services.gen.d.ts.map +1 -1
  37. package/dist/.pikku/pikku-services.gen.js +5 -0
  38. package/dist/.pikku/pikku-services.gen.js.map +1 -1
  39. package/dist/.pikku/pikku-types.gen.d.ts +2 -1
  40. package/dist/.pikku/pikku-types.gen.d.ts.map +1 -1
  41. package/dist/.pikku/pikku-types.gen.js +3 -1
  42. package/dist/.pikku/pikku-types.gen.js.map +1 -1
  43. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  44. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  45. package/dist/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +163 -7
  46. package/dist/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +172 -7
  47. package/dist/.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +652 -0
  48. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  49. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +10 -1
  50. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.d.ts +2 -0
  51. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.d.ts.map +1 -0
  52. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +11 -0
  53. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js.map +1 -0
  54. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.json +1 -0
  55. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +5 -0
  56. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts.map +1 -0
  57. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.js +2 -0
  58. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.js.map +1 -0
  59. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.d.ts +2 -0
  60. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.d.ts.map +1 -0
  61. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +11 -0
  62. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js.map +1 -0
  63. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +5 -0
  64. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts.map +1 -0
  65. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.js +2 -0
  66. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.js.map +1 -0
  67. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +5 -0
  68. package/dist/.pikku/scenarios/schemas/register.gen.d.ts.map +1 -0
  69. package/dist/.pikku/scenarios/schemas/register.gen.js +5 -0
  70. package/dist/.pikku/scenarios/schemas/register.gen.js.map +1 -0
  71. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  72. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  73. package/dist/.pikku/schemas/register.gen.js +37 -1
  74. package/dist/.pikku/schemas/register.gen.js.map +1 -1
  75. package/dist/.pikku/schemas/schemas/AggregateInput.schema.json +1 -1
  76. package/dist/.pikku/schemas/schemas/BranchInput.schema.json +1 -0
  77. package/dist/.pikku/schemas/schemas/BranchOutput.schema.json +1 -0
  78. package/dist/.pikku/schemas/schemas/ConcatInput.schema.json +1 -0
  79. package/dist/.pikku/schemas/schemas/ConcatOutput.schema.json +1 -0
  80. package/dist/.pikku/schemas/schemas/DateTimeInput.schema.json +1 -1
  81. package/dist/.pikku/schemas/schemas/EditFieldsOutput.schema.json +1 -1
  82. package/dist/.pikku/schemas/schemas/FanoutInput.schema.json +1 -0
  83. package/dist/.pikku/schemas/schemas/FanoutOutput.schema.json +1 -0
  84. package/dist/.pikku/schemas/schemas/HttpRequestInput.schema.json +1 -0
  85. package/dist/.pikku/schemas/schemas/HttpRequestOutput.schema.json +1 -0
  86. package/dist/.pikku/schemas/schemas/ReadFileInput.schema.json +1 -0
  87. package/dist/.pikku/schemas/schemas/ReadFileOutput.schema.json +1 -0
  88. package/dist/.pikku/schemas/schemas/SplitTextInput.schema.json +1 -0
  89. package/dist/.pikku/schemas/schemas/SplitTextOutput.schema.json +1 -0
  90. package/dist/.pikku/schemas/schemas/StopAndErrorInput.schema.json +1 -0
  91. package/dist/.pikku/schemas/schemas/StopAndErrorOutput.schema.json +1 -0
  92. package/dist/.pikku/schemas/schemas/WaitInput.schema.json +1 -0
  93. package/dist/.pikku/schemas/schemas/WaitOutput.schema.json +1 -0
  94. package/dist/.pikku/schemas/schemas/WriteFileInput.schema.json +1 -0
  95. package/dist/.pikku/schemas/schemas/WriteFileOutput.schema.json +1 -0
  96. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +6 -0
  97. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts.map +1 -0
  98. package/dist/.pikku/scopes/pikku-scope-types.gen.js +5 -0
  99. package/dist/.pikku/scopes/pikku-scope-types.gen.js.map +1 -0
  100. package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +1 -0
  101. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +36 -0
  102. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts.map +1 -0
  103. package/dist/.pikku/scopes/pikku-scopes.gen.js +28 -0
  104. package/dist/.pikku/scopes/pikku-scopes.gen.js.map +1 -0
  105. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  106. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  107. package/dist/.pikku/secrets/pikku-secrets-meta.gen.json +1 -0
  108. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -1
  109. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts.map +1 -1
  110. package/dist/.pikku/secrets/pikku-secrets.gen.js +11 -1
  111. package/dist/.pikku/secrets/pikku-secrets.gen.js.map +1 -1
  112. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  113. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  114. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  115. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  116. package/dist/.pikku/variables/pikku-variables-meta.gen.json +1 -0
  117. package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -1
  118. package/dist/.pikku/variables/pikku-variables.gen.d.ts.map +1 -1
  119. package/dist/.pikku/variables/pikku-variables.gen.js +13 -3
  120. package/dist/.pikku/variables/pikku-variables.gen.js.map +1 -1
  121. package/dist/.pikku/workflow/pikku-scenario-actors.gen.d.ts +20 -0
  122. package/dist/.pikku/workflow/pikku-scenario-actors.gen.d.ts.map +1 -0
  123. package/dist/.pikku/workflow/pikku-scenario-actors.gen.js +18 -0
  124. package/dist/.pikku/workflow/pikku-scenario-actors.gen.js.map +1 -0
  125. package/dist/.pikku/workflow/pikku-scenario-step-map.gen.d.ts +18 -0
  126. package/dist/.pikku/workflow/pikku-workflow-map.gen.d.ts +1 -1
  127. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +177 -5
  128. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts.map +1 -1
  129. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +42 -1
  130. package/dist/.pikku/workflow/pikku-workflow-types.gen.js.map +1 -1
  131. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  132. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js.map +1 -1
  133. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
  134. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  135. package/dist/src/functions/array/aggregate.function.d.ts +35 -6
  136. package/dist/src/functions/array/aggregate.function.d.ts.map +1 -1
  137. package/dist/src/functions/array/aggregate.function.js +47 -14
  138. package/dist/src/functions/array/aggregate.function.js.map +1 -1
  139. package/dist/src/functions/array/aggregate.function.test.d.ts +2 -0
  140. package/dist/src/functions/array/aggregate.function.test.d.ts.map +1 -0
  141. package/dist/src/functions/array/aggregate.function.test.js +42 -0
  142. package/dist/src/functions/array/aggregate.function.test.js.map +1 -0
  143. package/dist/src/functions/array/chunk.function.d.ts +2 -2
  144. package/dist/src/functions/array/chunk.function.d.ts.map +1 -1
  145. package/dist/src/functions/array/fanout.function.d.ts +32 -0
  146. package/dist/src/functions/array/fanout.function.d.ts.map +1 -0
  147. package/dist/src/functions/array/fanout.function.js +80 -0
  148. package/dist/src/functions/array/fanout.function.js.map +1 -0
  149. package/dist/src/functions/array/fanout.function.test.d.ts +2 -0
  150. package/dist/src/functions/array/fanout.function.test.d.ts.map +1 -0
  151. package/dist/src/functions/array/fanout.function.test.js +66 -0
  152. package/dist/src/functions/array/fanout.function.test.js.map +1 -0
  153. package/dist/src/functions/array/find.function.d.ts +2 -2
  154. package/dist/src/functions/array/find.function.d.ts.map +1 -1
  155. package/dist/src/functions/array/group-by.function.d.ts +2 -2
  156. package/dist/src/functions/array/group-by.function.d.ts.map +1 -1
  157. package/dist/src/functions/array/limit.function.d.ts +2 -2
  158. package/dist/src/functions/array/limit.function.d.ts.map +1 -1
  159. package/dist/src/functions/array/remove-duplicates.function.d.ts +2 -2
  160. package/dist/src/functions/array/remove-duplicates.function.d.ts.map +1 -1
  161. package/dist/src/functions/array/reverse.function.d.ts +2 -2
  162. package/dist/src/functions/array/reverse.function.d.ts.map +1 -1
  163. package/dist/src/functions/array/sort.function.d.ts +2 -2
  164. package/dist/src/functions/array/sort.function.d.ts.map +1 -1
  165. package/dist/src/functions/array/split-out.function.d.ts +2 -2
  166. package/dist/src/functions/array/split-out.function.d.ts.map +1 -1
  167. package/dist/src/functions/array/summarize.function.d.ts +6 -6
  168. package/dist/src/functions/array/summarize.function.d.ts.map +1 -1
  169. package/dist/src/functions/array/unique.function.d.ts +2 -2
  170. package/dist/src/functions/array/unique.function.d.ts.map +1 -1
  171. package/dist/src/functions/data/coalesce.function.d.ts +2 -2
  172. package/dist/src/functions/data/coalesce.function.d.ts.map +1 -1
  173. package/dist/src/functions/data/crypto.function.d.ts +2 -2
  174. package/dist/src/functions/data/crypto.function.d.ts.map +1 -1
  175. package/dist/src/functions/data/date-time.function.d.ts +19 -5
  176. package/dist/src/functions/data/date-time.function.d.ts.map +1 -1
  177. package/dist/src/functions/data/date-time.function.js +46 -0
  178. package/dist/src/functions/data/date-time.function.js.map +1 -1
  179. package/dist/src/functions/data/jwt.function.d.ts +8 -8
  180. package/dist/src/functions/data/jwt.function.d.ts.map +1 -1
  181. package/dist/src/functions/data/math.function.d.ts +2 -2
  182. package/dist/src/functions/data/math.function.d.ts.map +1 -1
  183. package/dist/src/functions/data/read-file.function.d.ts +40 -0
  184. package/dist/src/functions/data/read-file.function.d.ts.map +1 -0
  185. package/dist/src/functions/data/read-file.function.js +39 -0
  186. package/dist/src/functions/data/read-file.function.js.map +1 -0
  187. package/dist/src/functions/data/sleep.function.d.ts +2 -2
  188. package/dist/src/functions/data/sleep.function.d.ts.map +1 -1
  189. package/dist/src/functions/data/string-transform.function.d.ts +2 -2
  190. package/dist/src/functions/data/string-transform.function.d.ts.map +1 -1
  191. package/dist/src/functions/data/type-convert.function.d.ts +6 -6
  192. package/dist/src/functions/data/type-convert.function.d.ts.map +1 -1
  193. package/dist/src/functions/data/wait.function.d.ts +26 -0
  194. package/dist/src/functions/data/wait.function.d.ts.map +1 -0
  195. package/dist/src/functions/data/wait.function.js +29 -0
  196. package/dist/src/functions/data/wait.function.js.map +1 -0
  197. package/dist/src/functions/data/write-file.function.d.ts +40 -0
  198. package/dist/src/functions/data/write-file.function.d.ts.map +1 -0
  199. package/dist/src/functions/data/write-file.function.js +37 -0
  200. package/dist/src/functions/data/write-file.function.js.map +1 -0
  201. package/dist/src/functions/logic/branch.function.d.ts +71 -0
  202. package/dist/src/functions/logic/branch.function.d.ts.map +1 -0
  203. package/dist/src/functions/logic/branch.function.js +213 -0
  204. package/dist/src/functions/logic/branch.function.js.map +1 -0
  205. package/dist/src/functions/logic/stop-and-error.function.d.ts +13 -0
  206. package/dist/src/functions/logic/stop-and-error.function.d.ts.map +1 -0
  207. package/dist/src/functions/logic/stop-and-error.function.js +18 -0
  208. package/dist/src/functions/logic/stop-and-error.function.js.map +1 -0
  209. package/dist/src/functions/network/http-request.function.d.ts +105 -0
  210. package/dist/src/functions/network/http-request.function.d.ts.map +1 -0
  211. package/dist/src/functions/network/http-request.function.js +142 -0
  212. package/dist/src/functions/network/http-request.function.js.map +1 -0
  213. package/dist/src/functions/network/http-request.function.test.d.ts +2 -0
  214. package/dist/src/functions/network/http-request.function.test.d.ts.map +1 -0
  215. package/dist/src/functions/network/http-request.function.test.js +119 -0
  216. package/dist/src/functions/network/http-request.function.test.js.map +1 -0
  217. package/dist/src/functions/transform/concat.function.d.ts +21 -0
  218. package/dist/src/functions/transform/concat.function.d.ts.map +1 -0
  219. package/dist/src/functions/transform/concat.function.js +22 -0
  220. package/dist/src/functions/transform/concat.function.js.map +1 -0
  221. package/dist/src/functions/transform/concat.function.test.d.ts +2 -0
  222. package/dist/src/functions/transform/concat.function.test.d.ts.map +1 -0
  223. package/dist/src/functions/transform/concat.function.test.js +23 -0
  224. package/dist/src/functions/transform/concat.function.test.js.map +1 -0
  225. package/dist/src/functions/transform/edit-fields.function.d.ts +9 -12
  226. package/dist/src/functions/transform/edit-fields.function.d.ts.map +1 -1
  227. package/dist/src/functions/transform/edit-fields.function.js +9 -4
  228. package/dist/src/functions/transform/edit-fields.function.js.map +1 -1
  229. package/dist/src/functions/transform/merge.function.d.ts +2 -2
  230. package/dist/src/functions/transform/merge.function.d.ts.map +1 -1
  231. package/dist/src/functions/transform/omit.function.d.ts +2 -2
  232. package/dist/src/functions/transform/omit.function.d.ts.map +1 -1
  233. package/dist/src/functions/transform/pick.function.d.ts +2 -2
  234. package/dist/src/functions/transform/pick.function.d.ts.map +1 -1
  235. package/dist/src/functions/transform/rename-keys.function.d.ts +2 -2
  236. package/dist/src/functions/transform/rename-keys.function.d.ts.map +1 -1
  237. package/dist/src/functions/transform/split-text.function.d.ts +41 -0
  238. package/dist/src/functions/transform/split-text.function.d.ts.map +1 -0
  239. package/dist/src/functions/transform/split-text.function.js +116 -0
  240. package/dist/src/functions/transform/split-text.function.js.map +1 -0
  241. package/dist/src/functions/transform/split-text.function.test.d.ts +2 -0
  242. package/dist/src/functions/transform/split-text.function.test.d.ts.map +1 -0
  243. package/dist/src/functions/transform/split-text.function.test.js +66 -0
  244. package/dist/src/functions/transform/split-text.function.test.js.map +1 -0
  245. package/package.json +5 -3
@@ -1,15 +1,34 @@
1
1
  import { z } from 'zod';
2
2
  import { pikkuSessionlessFunc } from '#pikku';
3
+ export const AggregateFieldInput = z.object({
4
+ field: z.string().describe('The field path to collect values from'),
5
+ outputField: z
6
+ .string()
7
+ .optional()
8
+ .describe('The output field name (defaults to the source field path)'),
9
+ unique: z.boolean().optional().describe('Only include unique values'),
10
+ });
3
11
  export const AggregateInput = z.object({
4
12
  items: z
5
13
  .array(z.record(z.string(), z.unknown()))
6
14
  .describe('The array of items to aggregate'),
7
- field: z.string().describe('The field path to collect values from'),
15
+ field: z
16
+ .string()
17
+ .optional()
18
+ .describe('The field path to collect values from (single-field mode)'),
8
19
  outputField: z
9
20
  .string()
10
21
  .optional()
11
22
  .describe('The name of the output field containing the list'),
12
23
  unique: z.boolean().optional().describe('Only include unique values'),
24
+ fields: z
25
+ .array(AggregateFieldInput)
26
+ .optional()
27
+ .describe('Collect several fields at once into one output item'),
28
+ includeAllItems: z
29
+ .boolean()
30
+ .optional()
31
+ .describe('Collect the entire items into a single list field (n8n aggregateAllItemData)'),
13
32
  });
14
33
  export const AggregateOutput = z.object({
15
34
  item: z
@@ -32,20 +51,34 @@ export const aggregate = pikkuSessionlessFunc({
32
51
  input: AggregateInput,
33
52
  output: AggregateOutput,
34
53
  func: async (_services, data) => {
35
- const outputField = data.outputField ?? 'aggregated';
36
- const unique = data.unique ?? false;
37
- let values = data.items.map((item) => getNestedValue(item, data.field));
38
- if (unique) {
39
- const seen = new Set();
40
- values = values.filter((v) => {
41
- const key = JSON.stringify(v);
42
- if (seen.has(key))
43
- return false;
44
- seen.add(key);
45
- return true;
46
- });
54
+ const collect = (field, unique) => {
55
+ let values = data.items.map((item) => getNestedValue(item, field));
56
+ if (unique) {
57
+ const seen = new Set();
58
+ values = values.filter((v) => {
59
+ const key = JSON.stringify(v);
60
+ if (seen.has(key))
61
+ return false;
62
+ seen.add(key);
63
+ return true;
64
+ });
65
+ }
66
+ return values;
67
+ };
68
+ if (data.includeAllItems) {
69
+ return { item: { [data.outputField ?? 'data']: data.items } };
70
+ }
71
+ if (data.fields && data.fields.length > 0) {
72
+ const item = {};
73
+ for (const f of data.fields) {
74
+ item[f.outputField ?? f.field] = collect(f.field, f.unique ?? false);
75
+ }
76
+ return { item };
47
77
  }
48
- return { item: { [outputField]: values } };
78
+ const outputField = data.outputField ?? 'aggregated';
79
+ return {
80
+ item: { [outputField]: collect(data.field ?? '', data.unique ?? false) },
81
+ };
49
82
  },
50
83
  });
51
84
  //# sourceMappingURL=aggregate.function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.function.js","sourceRoot":"","sources":["../../../../src/functions/array/aggregate.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACxC,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACnE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACtE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC,CAAA;AAIF,MAAM,cAAc,GAAG,CACrB,GAA4B,EAC5B,IAAY,EACH,EAAE;IACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,OAAO,GAAY,GAAG,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACrE,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC;IAC5C,WAAW,EAAE,8DAA8D;IAC3E,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrE,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,eAAe;IACvB,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,YAAY,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;QACnC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAEvE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;YAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAA;gBAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;IAC5C,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"aggregate.function.js","sourceRoot":"","sources":["../../../../src/functions/array/aggregate.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aggregate.function.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.function.test.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/aggregate.function.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import { describe, test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { aggregate } from './aggregate.function.js';
4
+ const call = (data) => aggregate.func({}, data);
5
+ describe('graph:aggregate', () => {
6
+ test('single-field mode collects one field into a list', async () => {
7
+ const out = await call({
8
+ items: [{ name: 'a' }, { name: 'b' }],
9
+ field: 'name',
10
+ outputField: 'names',
11
+ });
12
+ assert.deepEqual(out, { item: { names: ['a', 'b'] } });
13
+ });
14
+ test('multi-field mode collects several fields at once', async () => {
15
+ const out = await call({
16
+ items: [
17
+ { a: 1, b: 2 },
18
+ { a: 3, b: 4 },
19
+ ],
20
+ fields: [{ field: 'a' }, { field: 'b', outputField: 'bs' }],
21
+ });
22
+ assert.deepEqual(out, { item: { a: [1, 3], bs: [2, 4] } });
23
+ });
24
+ test('whole-item mode collects the entire items into one field (n8n aggregateAllItemData)', async () => {
25
+ const items = [
26
+ { id: 1, name: 'a' },
27
+ { id: 2, name: 'b' },
28
+ ];
29
+ const out = await call({
30
+ items,
31
+ includeAllItems: true,
32
+ outputField: 'data',
33
+ });
34
+ assert.deepEqual(out, { item: { data: items } });
35
+ });
36
+ test('whole-item mode defaults the output field to "data"', async () => {
37
+ const items = [{ x: 1 }];
38
+ const out = await call({ items, includeAllItems: true });
39
+ assert.deepEqual(out, { item: { data: items } });
40
+ });
41
+ });
42
+ //# sourceMappingURL=aggregate.function.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.function.test.js","sourceRoot":"","sources":["../../../../src/functions/array/aggregate.function.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,EAAE,CAAE,SAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AAE7D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;YACrB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACrC,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,OAAO;SACrB,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;YACrB,KAAK,EAAE;gBACL,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACf;YACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;SAC5D,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACrG,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;YACpB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;SACrB,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;YACrB,KAAK;YACL,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,MAAM;SACpB,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -16,10 +16,10 @@ export declare const chunk: import("#pikku").PikkuFunctionConfig<{
16
16
  size: number;
17
17
  }, {
18
18
  chunks: unknown[][];
19
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
19
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
20
20
  items: unknown[];
21
21
  size: number;
22
22
  }, {
23
23
  chunks: unknown[][];
24
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
24
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
25
25
  //# sourceMappingURL=chunk.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/chunk.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,WAAW;;iBAEtB,CAAA;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;uEAchB,CAAA"}
1
+ {"version":3,"file":"chunk.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/chunk.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,WAAW;;iBAEtB,CAAA;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;4EAchB,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ export declare const FanoutInput: z.ZodObject<{
3
+ items: z.ZodArray<z.ZodUnknown>;
4
+ child: z.ZodString;
5
+ childInput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6
+ mode: z.ZodDefault<z.ZodEnum<{
7
+ parallel: "parallel";
8
+ sequential: "sequential";
9
+ }>>;
10
+ stepPrefix: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ export declare const FanoutOutput: z.ZodArray<z.ZodUnknown>;
13
+ export declare const fanout: import("#pikku").PikkuFunctionConfig<{
14
+ items: unknown[];
15
+ child: string;
16
+ mode: "parallel" | "sequential";
17
+ childInput?: Record<string, unknown> | undefined;
18
+ stepPrefix?: string | undefined;
19
+ }, unknown[], "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
20
+ items: unknown[];
21
+ child: string;
22
+ mode: "parallel" | "sequential";
23
+ childInput?: Record<string, unknown> | undefined;
24
+ stepPrefix?: string | undefined;
25
+ }, unknown[], "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
26
+ items: unknown[];
27
+ child: string;
28
+ mode: "parallel" | "sequential";
29
+ childInput?: Record<string, unknown> | undefined;
30
+ stepPrefix?: string | undefined;
31
+ }, unknown[], "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
32
+ //# sourceMappingURL=fanout.function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/fanout.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;;;iBAuBtB,CAAA;AAEF,eAAO,MAAM,YAAY,0BAEwC,CAAA;AA6BjE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;uFAqCjB,CAAA"}
@@ -0,0 +1,80 @@
1
+ import { z } from 'zod';
2
+ import { pikkuSessionlessFunc } from '#pikku';
3
+ export const FanoutInput = z.object({
4
+ items: z
5
+ .array(z.unknown())
6
+ .describe('The array to fan out over — one child invocation per element'),
7
+ child: z
8
+ .string()
9
+ .describe('RPC name invoked once per item as a durable child step'),
10
+ childInput: z
11
+ .record(z.string(), z.unknown())
12
+ .optional()
13
+ .describe('Per-item input template; `$item` references resolve against the current element'),
14
+ mode: z
15
+ .enum(['parallel', 'sequential'])
16
+ .default('parallel')
17
+ .describe('Run child invocations concurrently or one after another'),
18
+ stepPrefix: z
19
+ .string()
20
+ .optional()
21
+ .describe('Stable prefix for the per-item durable step names (`<prefix>#<index>`); defaults to `child`'),
22
+ });
23
+ export const FanoutOutput = z
24
+ .array(z.unknown())
25
+ .describe('Child results in the same order as the input items');
26
+ function getValueAtPath(obj, path) {
27
+ if (!path)
28
+ return obj;
29
+ let current = obj;
30
+ for (const part of path.split('.')) {
31
+ if (current == null)
32
+ return undefined;
33
+ current = current[part];
34
+ }
35
+ return current;
36
+ }
37
+ function resolveItemTemplate(value, item) {
38
+ if (Array.isArray(value)) {
39
+ return value.map((v) => resolveItemTemplate(v, item));
40
+ }
41
+ if (value && typeof value === 'object') {
42
+ if (value.$ref === '$item') {
43
+ return value.path ? getValueAtPath(item, value.path) : item;
44
+ }
45
+ const out = {};
46
+ for (const [k, v] of Object.entries(value)) {
47
+ out[k] = resolveItemTemplate(v, item);
48
+ }
49
+ return out;
50
+ }
51
+ return value;
52
+ }
53
+ export const fanout = pikkuSessionlessFunc({
54
+ description: 'Fan out over an array, invoking a child RPC once per element and collecting the ordered results',
55
+ node: { displayName: 'Fan Out', category: 'Array', type: 'action' },
56
+ input: FanoutInput,
57
+ output: FanoutOutput,
58
+ func: async (_services, data, { workflow }) => {
59
+ if (!workflow) {
60
+ throw new Error('graph:fanout can only be called from within a workflow');
61
+ }
62
+ if (!Array.isArray(data.items)) {
63
+ throw new Error(`graph:fanout expected an array to fan out over but received ${typeof data.items}`);
64
+ }
65
+ const prefix = data.stepPrefix ?? data.child;
66
+ // `child` is a runtime-resolved RPC name (often another addon's, never in
67
+ // this package's RPCMap), so use the dynamic-name RPC form of do().
68
+ const doRpc = workflow.do;
69
+ const runChild = (item, index) => doRpc(`${prefix}#${index}`, data.child, resolveItemTemplate(data.childInput ?? {}, item));
70
+ if (data.mode === 'sequential') {
71
+ const results = [];
72
+ for (let i = 0; i < data.items.length; i++) {
73
+ results.push(await runChild(data.items[i], i));
74
+ }
75
+ return results;
76
+ }
77
+ return await Promise.all(data.items.map((item, i) => runChild(item, i)));
78
+ },
79
+ });
80
+ //# sourceMappingURL=fanout.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout.function.js","sourceRoot":"","sources":["../../../../src/functions/array/fanout.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fanout.function.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout.function.test.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/fanout.function.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { describe, test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { fanout } from './fanout.function.js';
4
+ const call = (data, wire) => fanout.func({}, data, wire);
5
+ describe('graph:fanout fan out', () => {
6
+ test('invokes the child once per item, binding $item refs per element, ordered results', async () => {
7
+ const calls = [];
8
+ const workflow = {
9
+ do: async (step, rpc, data) => {
10
+ calls.push({ step, rpc, data });
11
+ return { posted: data.url };
12
+ },
13
+ };
14
+ const items = [
15
+ { 'URL VIDEO': 'a.mp4', DESCRIPTION: 'first' },
16
+ { 'URL VIDEO': 'b.mp4', DESCRIPTION: 'second' },
17
+ ];
18
+ const results = await call({
19
+ items,
20
+ child: 'postVideo',
21
+ stepPrefix: 'postAll',
22
+ mode: 'parallel',
23
+ childInput: {
24
+ url: { $ref: '$item', path: 'URL VIDEO' },
25
+ text: { $ref: '$item', path: 'DESCRIPTION' },
26
+ campaign: 'launch',
27
+ },
28
+ }, { workflow });
29
+ assert.deepEqual(results, [{ posted: 'a.mp4' }, { posted: 'b.mp4' }]);
30
+ assert.deepEqual(calls.map((c) => c.step), ['postAll#0', 'postAll#1']);
31
+ assert.deepEqual(calls[0].data, {
32
+ url: 'a.mp4',
33
+ text: 'first',
34
+ campaign: 'launch',
35
+ });
36
+ assert.deepEqual(calls[1].data, {
37
+ url: 'b.mp4',
38
+ text: 'second',
39
+ campaign: 'launch',
40
+ });
41
+ });
42
+ test('sequential mode preserves order and defaults stepPrefix to child', async () => {
43
+ const order = [];
44
+ const workflow = {
45
+ do: async (_step, _rpc, data) => {
46
+ order.push(data.n);
47
+ return data.n * 2;
48
+ },
49
+ };
50
+ const results = await call({
51
+ items: [{ n: 1 }, { n: 2 }, { n: 3 }],
52
+ child: 'double',
53
+ mode: 'sequential',
54
+ childInput: { n: { $ref: '$item', path: 'n' } },
55
+ }, { workflow });
56
+ assert.deepEqual(results, [2, 4, 6]);
57
+ assert.deepEqual(order, [1, 2, 3]);
58
+ });
59
+ test('throws when items is not an array', async () => {
60
+ await assert.rejects(() => call({ items: 'not-an-array', child: 'x' }, { workflow: { do: async () => ({}) } }), /expected an array to fan out over/);
61
+ });
62
+ test('throws when called outside a workflow', async () => {
63
+ await assert.rejects(() => call({ items: [], child: 'x' }, {}), /can only be called from within a workflow/);
64
+ });
65
+ });
66
+ //# sourceMappingURL=fanout.function.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout.function.test.js","sourceRoot":"","sources":["../../../../src/functions/array/fanout.function.test.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export declare const find: import("#pikku").PikkuFunctionConfig<{
28
28
  item: Record<string, unknown> | null;
29
29
  index: number;
30
30
  found: boolean;
31
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
31
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
32
32
  items: Record<string, unknown>[];
33
33
  field: string;
34
34
  value: unknown;
@@ -37,5 +37,5 @@ export declare const find: import("#pikku").PikkuFunctionConfig<{
37
37
  item: Record<string, unknown> | null;
38
38
  index: number;
39
39
  found: boolean;
40
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
40
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
41
41
  //# sourceMappingURL=find.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"find.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/find.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,SAAS;;;;;iBAUpB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;iBAOrB,CAAA;AAiBF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAyBf,CAAA"}
1
+ {"version":3,"file":"find.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/find.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,SAAS;;;;;iBAUpB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;iBAOrB,CAAA;AAiBF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAyBf,CAAA"}
@@ -16,10 +16,10 @@ export declare const groupBy: import("#pikku").PikkuFunctionConfig<{
16
16
  field: string;
17
17
  }, {
18
18
  groups: Record<string, Record<string, unknown>[]>;
19
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
19
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
20
20
  items: Record<string, unknown>[];
21
21
  field: string;
22
22
  }, {
23
23
  groups: Record<string, Record<string, unknown>[]>;
24
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
24
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
25
25
  //# sourceMappingURL=group-by.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-by.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/group-by.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,YAAY;;;iBAKvB,CAAA;AAEF,eAAO,MAAM,aAAa;;iBAIxB,CAAA;AAiBF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;uEAoBlB,CAAA"}
1
+ {"version":3,"file":"group-by.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/group-by.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,YAAY;;;iBAKvB,CAAA;AAEF,eAAO,MAAM,aAAa;;iBAIxB,CAAA;AAiBF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;4EAoBlB,CAAA"}
@@ -22,12 +22,12 @@ export declare const limit: import("#pikku").PikkuFunctionConfig<{
22
22
  }, {
23
23
  items: unknown[];
24
24
  totalCount: number;
25
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
25
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
26
26
  items: unknown[];
27
27
  limit: number;
28
28
  offset?: number | undefined;
29
29
  }, {
30
30
  items: unknown[];
31
31
  totalCount: number;
32
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
32
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
33
33
  //# sourceMappingURL=limit.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"limit.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/limit.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,UAAU;;;;iBAQrB,CAAA;AAEF,eAAO,MAAM,WAAW;;;iBAGtB,CAAA;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;uEAWhB,CAAA"}
1
+ {"version":3,"file":"limit.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/limit.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,UAAU;;;;iBAQrB,CAAA;AAEF,eAAO,MAAM,WAAW;;;iBAGtB,CAAA;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;4EAWhB,CAAA"}
@@ -22,12 +22,12 @@ export declare const removeDuplicates: import("#pikku").PikkuFunctionConfig<{
22
22
  }, {
23
23
  items: Record<string, unknown>[];
24
24
  removedCount: number;
25
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
25
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
26
26
  items: Record<string, unknown>[];
27
27
  fields: string[];
28
28
  keepFirst?: boolean | undefined;
29
29
  }, {
30
30
  items: Record<string, unknown>[];
31
31
  removedCount: number;
32
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
32
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
33
33
  //# sourceMappingURL=remove-duplicates.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove-duplicates.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/remove-duplicates.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,qBAAqB;;;;iBAahC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;iBAKjC,CAAA;AA4BF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;uEAwB3B,CAAA"}
1
+ {"version":3,"file":"remove-duplicates.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/remove-duplicates.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,qBAAqB;;;;iBAahC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;iBAKjC,CAAA;AA4BF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;4EAwB3B,CAAA"}
@@ -13,9 +13,9 @@ export declare const reverse: import("#pikku").PikkuFunctionConfig<{
13
13
  items: unknown[];
14
14
  }, {
15
15
  items: unknown[];
16
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
16
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
17
17
  items: unknown[];
18
18
  }, {
19
19
  items: unknown[];
20
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
20
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
21
21
  //# sourceMappingURL=reverse.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reverse.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/reverse.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,YAAY;;iBAEvB,CAAA;AAEF,eAAO,MAAM,aAAa;;iBAExB,CAAA;AAIF,eAAO,MAAM,OAAO;;;;;;;;;;;;uEAQlB,CAAA"}
1
+ {"version":3,"file":"reverse.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/reverse.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,YAAY;;iBAEvB,CAAA;AAEF,eAAO,MAAM,aAAa;;iBAExB,CAAA;AAIF,eAAO,MAAM,OAAO;;;;;;;;;;;;4EAQlB,CAAA"}
@@ -28,7 +28,7 @@ export declare const sort: import("#pikku").PikkuFunctionConfig<{
28
28
  }[];
29
29
  }, {
30
30
  items: Record<string, unknown>[];
31
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
31
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
32
32
  items: Record<string, unknown>[];
33
33
  sortBy: {
34
34
  field: string;
@@ -36,5 +36,5 @@ export declare const sort: import("#pikku").PikkuFunctionConfig<{
36
36
  }[];
37
37
  }, {
38
38
  items: Record<string, unknown>[];
39
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
39
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
40
40
  //# sourceMappingURL=sort.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/sort.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;iBAOpB,CAAA;AAEF,eAAO,MAAM,UAAU;;iBAIrB,CAAA;AAoCF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;uEAmBf,CAAA"}
1
+ {"version":3,"file":"sort.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/sort.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;iBAOpB,CAAA;AAEF,eAAO,MAAM,UAAU;;iBAIrB,CAAA;AAoCF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;4EAmBf,CAAA"}
@@ -19,11 +19,11 @@ export declare const splitOut: import("#pikku").PikkuFunctionConfig<{
19
19
  includeParent?: boolean | undefined;
20
20
  }, {
21
21
  items: Record<string, unknown>[];
22
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
22
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
23
23
  item: Record<string, unknown>;
24
24
  field: string;
25
25
  includeParent?: boolean | undefined;
26
26
  }, {
27
27
  items: Record<string, unknown>[];
28
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
28
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
29
29
  //# sourceMappingURL=split-out.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-out.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/split-out.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,aAAa;;;;iBAaxB,CAAA;AAEF,eAAO,MAAM,cAAc;;iBAIzB,CAAA;AAuCF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;uEAiCnB,CAAA"}
1
+ {"version":3,"file":"split-out.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/split-out.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,aAAa;;;;iBAaxB,CAAA;AAEF,eAAO,MAAM,cAAc;;iBAIzB,CAAA;AAuCF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;4EAiCnB,CAAA"}
@@ -4,13 +4,13 @@ export declare const SummarizeInput: z.ZodObject<{
4
4
  aggregations: z.ZodArray<z.ZodObject<{
5
5
  field: z.ZodString;
6
6
  operation: z.ZodEnum<{
7
+ first: "first";
7
8
  sum: "sum";
8
9
  avg: "avg";
9
10
  min: "min";
10
11
  max: "max";
11
12
  count: "count";
12
13
  countDistinct: "countDistinct";
13
- first: "first";
14
14
  last: "last";
15
15
  }>;
16
16
  outputField: z.ZodString;
@@ -24,7 +24,7 @@ export declare const summarize: import("#pikku").PikkuFunctionConfig<{
24
24
  items: Record<string, unknown>[];
25
25
  aggregations: {
26
26
  field: string;
27
- operation: "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "first" | "last";
27
+ operation: "first" | "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "last";
28
28
  outputField: string;
29
29
  }[];
30
30
  groupBy?: string[] | undefined;
@@ -34,21 +34,21 @@ export declare const summarize: import("#pikku").PikkuFunctionConfig<{
34
34
  items: Record<string, unknown>[];
35
35
  aggregations: {
36
36
  field: string;
37
- operation: "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "first" | "last";
37
+ operation: "first" | "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "last";
38
38
  outputField: string;
39
39
  }[];
40
40
  groupBy?: string[] | undefined;
41
41
  }, {
42
42
  items: Record<string, unknown>[];
43
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
43
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
44
44
  items: Record<string, unknown>[];
45
45
  aggregations: {
46
46
  field: string;
47
- operation: "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "first" | "last";
47
+ operation: "first" | "sum" | "avg" | "min" | "max" | "count" | "countDistinct" | "last";
48
48
  outputField: string;
49
49
  }[];
50
50
  groupBy?: string[] | undefined;
51
51
  }, {
52
52
  items: Record<string, unknown>[];
53
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
53
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
54
54
  //# sourceMappingURL=summarize.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/summarize.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoBvB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBAQzB,CAAA;AAEF,eAAO,MAAM,eAAe;;iBAI1B,CAAA;AA4CF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEA8CpB,CAAA"}
1
+ {"version":3,"file":"summarize.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/summarize.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoBvB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBAQzB,CAAA;AAEF,eAAO,MAAM,eAAe;;iBAI1B,CAAA;AA4CF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA8CpB,CAAA"}
@@ -16,10 +16,10 @@ export declare const unique: import("#pikku").PikkuFunctionConfig<{
16
16
  field?: string | undefined;
17
17
  }, {
18
18
  items: unknown[];
19
- }, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
19
+ }, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
20
20
  items: unknown[];
21
21
  field?: string | undefined;
22
22
  }, {
23
23
  items: unknown[];
24
- }, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
24
+ }, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
25
25
  //# sourceMappingURL=unique.function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/unique.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,WAAW;;;iBAMtB,CAAA;AAEF,eAAO,MAAM,YAAY;;iBAEvB,CAAA;AAeF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;uEAqBjB,CAAA"}
1
+ {"version":3,"file":"unique.function.d.ts","sourceRoot":"","sources":["../../../../src/functions/array/unique.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,WAAW;;;iBAMtB,CAAA;AAEF,eAAO,MAAM,YAAY;;iBAEvB,CAAA;AAeF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;4EAqBjB,CAAA"}