@pikku/cli 0.9.16-next.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/.pikku/channel/pikku-channel-types.gen.ts +28 -29
  2. package/.pikku/channel/pikku-channels-map.gen.d.ts +44 -0
  3. package/.pikku/channel/pikku-channels-meta.gen.ts +5 -0
  4. package/.pikku/channel/pikku-channels.gen.ts +4 -0
  5. package/.pikku/cli/pikku-cli-channel.gen.ts +34 -0
  6. package/.pikku/cli/pikku-cli-client.gen.ts +43 -0
  7. package/.pikku/cli/pikku-cli-types.gen.ts +14 -15
  8. package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +142 -2
  9. package/.pikku/cli/pikku-cli-wirings.gen.ts +4 -2
  10. package/.pikku/cli/pikku-cli.gen.ts +41 -0
  11. package/.pikku/function/pikku-function-types.gen.ts +167 -19
  12. package/.pikku/function/pikku-functions-meta.gen.ts +220 -192
  13. package/.pikku/function/pikku-functions-meta.min.gen.ts +61 -56
  14. package/.pikku/function/pikku-functions.gen.ts +3 -1
  15. package/.pikku/http/pikku-http-types.gen.ts +28 -3
  16. package/.pikku/http/pikku-http-wirings-map.gen.d.ts +43 -0
  17. package/.pikku/http/pikku-http-wirings-meta.gen.ts +13 -0
  18. package/.pikku/http/pikku-http-wirings.gen.ts +4 -0
  19. package/.pikku/mcp/pikku-mcp-types.gen.ts +15 -13
  20. package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +7 -0
  21. package/.pikku/mcp/pikku-mcp-wirings.gen.ts +4 -0
  22. package/.pikku/mcp/pikku-mcp.gen.json +5 -0
  23. package/.pikku/pikku-bootstrap.gen.ts +11 -1
  24. package/.pikku/pikku-services.gen.ts +1 -5
  25. package/.pikku/pikku-types.gen.ts +1 -2
  26. package/.pikku/pikku-websocket.gen.ts +76 -0
  27. package/.pikku/queue/pikku-queue-types.gen.ts +1 -2
  28. package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +57 -0
  29. package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +5 -0
  30. package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +4 -0
  31. package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +5 -4
  32. package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +19 -17
  33. package/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts +15 -14
  34. package/.pikku/scheduler/pikku-scheduler-types.gen.ts +1 -2
  35. package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +5 -0
  36. package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +4 -0
  37. package/.pikku/schemas/register.gen.ts +15 -11
  38. package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  39. package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  40. package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  41. package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  42. package/CHANGELOG.md +15 -0
  43. package/bin/pikku.ts +63 -11
  44. package/build.sh +1 -1
  45. package/cli.schema.json +1 -1
  46. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +11 -20
  47. package/dist/.pikku/channel/pikku-channel-types.gen.js +9 -11
  48. package/dist/.pikku/channel/pikku-channels-meta.gen.d.ts +1 -0
  49. package/dist/.pikku/channel/pikku-channels-meta.gen.js +5 -0
  50. package/dist/.pikku/channel/pikku-channels.gen.d.ts +4 -0
  51. package/dist/.pikku/channel/pikku-channels.gen.js +5 -0
  52. package/dist/.pikku/cli/pikku-cli-channel.gen.d.ts +1 -0
  53. package/dist/.pikku/cli/pikku-cli-channel.gen.js +33 -0
  54. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +10 -0
  55. package/dist/.pikku/cli/pikku-cli-client.gen.js +34 -0
  56. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +9 -12
  57. package/dist/.pikku/cli/pikku-cli-types.gen.js +5 -4
  58. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +142 -2
  59. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +3 -2
  60. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +4 -3
  61. package/dist/.pikku/cli/pikku-cli.gen.d.ts +10 -0
  62. package/dist/.pikku/cli/pikku-cli.gen.js +38 -0
  63. package/dist/.pikku/function/pikku-function-types.gen.d.ts +141 -20
  64. package/dist/.pikku/function/pikku-function-types.gen.js +108 -12
  65. package/dist/.pikku/function/pikku-functions-meta.gen.js +220 -192
  66. package/dist/.pikku/function/pikku-functions-meta.min.gen.js +61 -56
  67. package/dist/.pikku/function/pikku-functions.gen.js +3 -1
  68. package/dist/.pikku/http/pikku-http-types.gen.d.ts +21 -2
  69. package/dist/.pikku/http/pikku-http-types.gen.js +24 -3
  70. package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +1 -0
  71. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +13 -0
  72. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +4 -0
  73. package/dist/.pikku/http/pikku-http-wirings.gen.js +5 -0
  74. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +11 -8
  75. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +6 -6
  76. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.d.ts +1 -0
  77. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +7 -0
  78. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +4 -0
  79. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +5 -0
  80. package/dist/.pikku/pikku-bootstrap.gen.d.ts +11 -1
  81. package/dist/.pikku/pikku-bootstrap.gen.js +11 -1
  82. package/dist/.pikku/pikku-services.gen.d.ts +1 -4
  83. package/dist/.pikku/pikku-services.gen.js +0 -6
  84. package/dist/.pikku/pikku-types.gen.d.ts +1 -2
  85. package/dist/.pikku/pikku-types.gen.js +1 -2
  86. package/dist/.pikku/pikku-websocket.gen.d.ts +31 -0
  87. package/dist/.pikku/pikku-websocket.gen.js +49 -0
  88. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -2
  89. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -2
  90. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +1 -0
  91. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +5 -0
  92. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +4 -0
  93. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +5 -0
  94. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +15 -14
  95. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -2
  96. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -2
  97. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.d.ts +1 -0
  98. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +5 -0
  99. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +4 -0
  100. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +5 -0
  101. package/dist/.pikku/schemas/register.gen.js +9 -7
  102. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  103. package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
  104. package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -0
  105. package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
  106. package/dist/bin/pikku.d.ts +1 -1
  107. package/dist/bin/pikku.js +37 -6
  108. package/dist/src/cli.wiring.js +99 -75
  109. package/dist/src/functions/commands/all.js +10 -0
  110. package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +10 -8
  111. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
  112. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +2 -2
  113. package/dist/src/functions/wirings/channels/pikku-channels.js +0 -5
  114. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +0 -2
  115. package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +0 -5
  116. package/dist/src/functions/wirings/channels/pikku-command-channels.js +0 -5
  117. package/dist/src/functions/wirings/channels/pikku-command-websocket-typed.js +6 -3
  118. package/dist/src/functions/wirings/channels/serialize-channel-types.js +27 -28
  119. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +4 -1
  120. package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +31 -8
  121. package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +0 -2
  122. package/dist/src/functions/wirings/cli/pikku-command-cli.js +0 -2
  123. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +6 -2
  124. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.js +88 -11
  125. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +1 -1
  126. package/dist/src/functions/wirings/cli/serialize-channel-cli.js +1 -18
  127. package/dist/src/functions/wirings/cli/serialize-cli-types.js +13 -14
  128. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +19 -14
  129. package/dist/src/functions/wirings/fetch/index.js +6 -3
  130. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +6 -5
  131. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +0 -2
  132. package/dist/src/functions/wirings/functions/pikku-command-functions.js +0 -2
  133. package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
  134. package/dist/src/functions/wirings/functions/pikku-command-services.js +11 -21
  135. package/dist/src/functions/wirings/functions/pikku-function-types.js +0 -2
  136. package/dist/src/functions/wirings/functions/schemas.js +0 -2
  137. package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
  138. package/dist/src/functions/wirings/functions/serialize-function-types.js +167 -19
  139. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +0 -1
  140. package/dist/src/functions/wirings/http/openapi-spec-generator.d.ts +2 -1
  141. package/dist/src/functions/wirings/http/pikku-command-http-map.js +0 -5
  142. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +0 -5
  143. package/dist/src/functions/wirings/http/pikku-command-http-types.js +0 -2
  144. package/dist/src/functions/wirings/http/pikku-command-openapi.js +7 -4
  145. package/dist/src/functions/wirings/http/pikku-http-routes.js +0 -5
  146. package/dist/src/functions/wirings/http/serialize-http-types.js +27 -2
  147. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +0 -5
  148. package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +0 -2
  149. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +0 -5
  150. package/dist/src/functions/wirings/mcp/serialize-mcp-json.d.ts +1 -1
  151. package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +14 -12
  152. package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +0 -2
  153. package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +1 -7
  154. package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -0
  155. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +28 -0
  156. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.d.ts +2 -0
  157. package/dist/src/functions/wirings/permissions/serialize-permissions-imports.js +43 -0
  158. package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +0 -5
  159. package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +6 -3
  160. package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +0 -2
  161. package/dist/src/functions/wirings/queue/pikku-command-queue.js +0 -5
  162. package/dist/src/functions/wirings/queue/pikku-queue-map.js +0 -5
  163. package/dist/src/functions/wirings/queue/pikku-queue.js +1 -5
  164. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +1 -1
  165. package/dist/src/functions/wirings/queue/serialize-queue-types.js +0 -1
  166. package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +5 -3
  167. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +0 -4
  168. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +0 -2
  169. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +0 -2
  170. package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +0 -5
  171. package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +0 -1
  172. package/dist/src/middleware/log-command-info-and-time.d.ts +2 -8
  173. package/dist/src/middleware/log-command-info-and-time.js +2 -14
  174. package/dist/src/services/cli-logger-forwarder.service.d.ts +6 -2
  175. package/dist/src/services/cli-logger-forwarder.service.js +9 -0
  176. package/dist/src/services/cli-logger.service.d.ts +4 -0
  177. package/dist/src/services/cli-logger.service.js +11 -0
  178. package/dist/src/services.d.ts +5 -0
  179. package/dist/src/services.js +111 -13
  180. package/dist/src/utils/check-required-types.js +11 -1
  181. package/dist/src/utils/custom-types-generator.js +8 -2
  182. package/dist/src/utils/file-writer.d.ts +4 -1
  183. package/dist/src/utils/file-writer.js +13 -3
  184. package/dist/src/utils/get-cli-version.d.ts +5 -0
  185. package/dist/src/utils/get-cli-version.js +27 -0
  186. package/dist/src/utils/pikku-cli-config.d.ts +1 -2
  187. package/dist/src/utils/pikku-cli-config.js +9 -28
  188. package/dist/src/utils/schema-generator.js +3 -2
  189. package/dist/src/utils/serialize-import-map.js +0 -3
  190. package/dist/tsconfig.tsbuildinfo +1 -1
  191. package/package.json +10 -8
  192. package/pikku.config.json +4 -2
  193. package/src/cli.wiring.ts +101 -74
  194. package/src/functions/commands/all.ts +12 -0
  195. package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +12 -12
  196. package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +2 -2
  197. package/src/functions/wirings/channels/pikku-channels.ts +0 -5
  198. package/src/functions/wirings/channels/pikku-command-channel-types.ts +0 -2
  199. package/src/functions/wirings/channels/pikku-command-channels-map.ts +0 -5
  200. package/src/functions/wirings/channels/pikku-command-channels.ts +0 -5
  201. package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +7 -3
  202. package/src/functions/wirings/channels/serialize-channel-types.ts +27 -28
  203. package/src/functions/wirings/channels/serialize-typed-channel-map.ts +4 -1
  204. package/src/functions/wirings/cli/pikku-command-cli-entry.ts +52 -9
  205. package/src/functions/wirings/cli/pikku-command-cli-types.ts +0 -2
  206. package/src/functions/wirings/cli/pikku-command-cli.ts +0 -2
  207. package/src/functions/wirings/cli/serialize-channel-cli-client.ts +111 -12
  208. package/src/functions/wirings/cli/serialize-channel-cli.ts +2 -23
  209. package/src/functions/wirings/cli/serialize-cli-types.ts +13 -14
  210. package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +19 -14
  211. package/src/functions/wirings/fetch/index.ts +7 -3
  212. package/src/functions/wirings/functions/pikku-command-function-types-split.ts +14 -5
  213. package/src/functions/wirings/functions/pikku-command-function-types.ts +0 -2
  214. package/src/functions/wirings/functions/pikku-command-functions.ts +0 -2
  215. package/src/functions/wirings/functions/pikku-command-services.ts +13 -24
  216. package/src/functions/wirings/functions/pikku-function-types.ts +0 -2
  217. package/src/functions/wirings/functions/schemas.ts +0 -2
  218. package/src/functions/wirings/functions/serialize-function-types.ts +169 -19
  219. package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +0 -1
  220. package/src/functions/wirings/http/openapi-spec-generator.ts +2 -1
  221. package/src/functions/wirings/http/pikku-command-http-map.ts +0 -5
  222. package/src/functions/wirings/http/pikku-command-http-routes.ts +0 -5
  223. package/src/functions/wirings/http/pikku-command-http-types.ts +0 -2
  224. package/src/functions/wirings/http/pikku-command-openapi.ts +9 -4
  225. package/src/functions/wirings/http/pikku-http-routes.ts +0 -5
  226. package/src/functions/wirings/http/serialize-http-types.ts +27 -2
  227. package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +0 -5
  228. package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +0 -2
  229. package/src/functions/wirings/mcp/pikku-command-mcp.ts +0 -5
  230. package/src/functions/wirings/mcp/serialize-mcp-json.ts +1 -1
  231. package/src/functions/wirings/mcp/serialize-mcp-types.ts +14 -12
  232. package/src/functions/wirings/middleware/pikku-command-middleware.ts +0 -2
  233. package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +1 -7
  234. package/src/functions/wirings/permissions/pikku-command-permissions.ts +49 -0
  235. package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +274 -0
  236. package/src/functions/wirings/permissions/serialize-permissions-imports.ts +78 -0
  237. package/src/functions/wirings/queue/pikku-command-queue-map.ts +0 -5
  238. package/src/functions/wirings/queue/pikku-command-queue-service.ts +7 -3
  239. package/src/functions/wirings/queue/pikku-command-queue-types.ts +0 -2
  240. package/src/functions/wirings/queue/pikku-command-queue.ts +0 -5
  241. package/src/functions/wirings/queue/pikku-queue-map.ts +0 -5
  242. package/src/functions/wirings/queue/pikku-queue.ts +3 -6
  243. package/src/functions/wirings/queue/serialize-queue-meta.ts +1 -1
  244. package/src/functions/wirings/queue/serialize-queue-types.ts +0 -1
  245. package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +6 -3
  246. package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +0 -4
  247. package/src/functions/wirings/rpc/pikku-command-rpc.ts +0 -2
  248. package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +0 -2
  249. package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +0 -5
  250. package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +0 -1
  251. package/src/middleware/log-command-info-and-time.ts +2 -28
  252. package/src/services/cli-logger-forwarder.service.ts +15 -2
  253. package/src/services/cli-logger.service.ts +15 -0
  254. package/src/services.ts +148 -19
  255. package/src/utils/check-required-types.ts +16 -1
  256. package/src/utils/custom-types-generator.ts +8 -2
  257. package/src/utils/file-writer.ts +19 -3
  258. package/src/utils/get-cli-version.ts +28 -0
  259. package/src/utils/pikku-cli-config.ts +6 -35
  260. package/src/utils/schema-generator.ts +7 -3
  261. package/src/utils/serialize-import-map.ts +0 -4
  262. package/types/application-types.d.ts +4 -1
  263. package/types/config.d.ts +15 -3
  264. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.d.ts +0 -6
  265. package/dist/.pikku/rpc/pikku-bootstrap-rpc.gen.js +0 -6
  266. package/dist/src/serialize-pikku-types.d.ts +0 -4
  267. package/dist/src/serialize-pikku-types.js +0 -605
  268. package/src/serialize-pikku-types.ts +0 -613
@@ -1,39 +1,59 @@
1
1
  /**
2
- * This file was generated by the @pikku/cli
2
+ * This file was generated by @pikku/cli@0.10.1
3
3
  */
4
4
  /**
5
- * This file was generated by the @pikku/cli
6
5
  * Core function, middleware, and permission types for all wirings
7
6
  */
8
7
  import { addMiddleware as addMiddlewareCore, addPermission as addPermissionCore } from '@pikku/core';
9
8
  /**
10
9
  * Factory function for creating permissions with tree-shaking support.
11
- * This enables the bundler to detect which services your permission actually uses.
10
+ * Supports both direct function and configuration object syntax.
12
11
  *
13
12
  * @example
14
13
  * ```typescript
14
+ * // Direct function syntax
15
15
  * const permission = pikkuPermission(({ logger }, data, session) => {
16
- * return session?.isAdmin || false
16
+ * return session?.role === 'admin'
17
+ * })
18
+ *
19
+ * // Configuration object syntax with metadata
20
+ * const adminPermission = pikkuPermission({
21
+ * name: 'Admin Permission',
22
+ * description: 'Checks if user has admin role',
23
+ * func: async ({ logger }, data, session) => {
24
+ * return session?.role === 'admin'
25
+ * }
17
26
  * })
18
27
  * ```
19
28
  */
20
- export const pikkuPermission = (func) => {
21
- return func;
29
+ export const pikkuPermission = (permission) => {
30
+ return typeof permission === 'function' ? permission : permission.func;
22
31
  };
23
32
  /**
24
33
  * Factory function for creating middleware with tree-shaking support.
25
- * This enables the bundler to detect which services your middleware actually uses.
34
+ * Supports both direct function and configuration object syntax.
26
35
  *
27
36
  * @example
28
37
  * ```typescript
38
+ * // Direct function syntax
29
39
  * const middleware = pikkuMiddleware(({ logger }, interactions, next) => {
30
40
  * logger.info('Middleware executed')
31
41
  * await next()
32
42
  * })
43
+ *
44
+ * // Configuration object syntax with metadata
45
+ * const logMiddleware = pikkuMiddleware({
46
+ * name: 'Request Logger',
47
+ * description: 'Logs all incoming requests',
48
+ * func: async ({ logger }, interactions, next) => {
49
+ * logger.info('Request started')
50
+ * await next()
51
+ * }
52
+ * })
33
53
  * ```
34
54
  */
35
- export const pikkuMiddleware = (func) => {
36
- return func;
55
+ export const pikkuMiddleware = (middleware) => {
56
+ return typeof middleware === 'function' ? middleware : middleware.func;
37
57
  };
38
58
  /**
39
59
  * Factory function for creating middleware factories
@@ -55,6 +75,28 @@ export const pikkuMiddleware = (func) => {
55
75
  export const pikkuMiddlewareFactory = (factory) => {
56
76
  return factory;
57
77
  };
78
+ /**
79
+ * Factory function for creating permission factories
80
+ * Use this when your permission needs configuration/input parameters
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * export const requireRole = pikkuPermissionFactory<{ role: string }>(({
85
+ * role
86
+ * }) => {
87
+ * return pikkuPermission(async ({ logger }, data, session) => {
88
+ * if (!session || session.role !== role) {
89
+ * logger.warn(`Permission denied: required role '${role}'`)
90
+ * return false
91
+ * }
92
+ * return true
93
+ * })
94
+ * })
95
+ * ```
96
+ */
97
+ export const pikkuPermissionFactory = (factory) => {
98
+ return factory;
99
+ };
58
100
  /**
59
101
  * Creates a Pikku function that can be either session-aware or sessionless.
60
102
  * This is the main function wrapper for creating API endpoints.
@@ -121,6 +163,60 @@ export const pikkuSessionlessFunc = (func) => {
121
163
  export const pikkuVoidFunc = (func) => {
122
164
  return typeof func === 'function' ? { func } : func;
123
165
  };
166
+ /**
167
+ * Creates a Pikku config factory.
168
+ * Use this to define your application's configuration factory.
169
+ *
170
+ * @param func - Config factory function that returns your application's config
171
+ * @returns The config factory function
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * export const createConfig = pikkuConfig(async () => {
176
+ * return {
177
+ * apiUrl: process.env.API_URL || 'http://localhost:3000',
178
+ * dbUrl: process.env.DATABASE_URL
179
+ * }
180
+ * })
181
+ * ```
182
+ */
183
+ export const pikkuConfig = (func) => func;
184
+ /**
185
+ * Creates a Pikku singleton services factory.
186
+ * Use this to define services that are created once and shared across all requests.
187
+ *
188
+ * @param func - Singleton services factory function
189
+ * @returns The singleton services factory function
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * export const createSingletonServices = pikkuServices(async (config, existingServices) => {
194
+ * return {
195
+ * config,
196
+ * logger: new CustomLogger(),
197
+ * db: await createDatabaseConnection(config.dbUrl)
198
+ * }
199
+ * })
200
+ * ```
201
+ */
202
+ export const pikkuServices = (func) => func;
203
+ /**
204
+ * Creates a Pikku session services factory.
205
+ * Use this to define services that are created per-request/session.
206
+ *
207
+ * @param func - Session services factory function
208
+ * @returns The session services factory function
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * export const createSessionServices = pikkuSessionServices(async (services, interaction, session) => {
213
+ * return {
214
+ * userCache: new UserCache(session?.userId)
215
+ * }
216
+ * })
217
+ * ```
218
+ */
219
+ export const pikkuSessionServices = (func) => func;
124
220
  /**
125
221
  * Adds global middleware for a specific tag.
126
222
  *
@@ -154,7 +250,7 @@ export const addMiddleware = (tag, middleware) => {
154
250
  * any wiring (HTTP, Channel, Queue, Scheduler, MCP) that includes the matching tag.
155
251
  *
156
252
  * @param tag - The tag that the permissions should apply to.
157
- * @param permissions - The permissions array to apply for the specified tag.
253
+ * @param permissions - The permissions array or object to apply for the specified tag.
158
254
  *
159
255
  * @throws Error if permissions for the tag already exist.
160
256
  *
@@ -166,8 +262,8 @@ export const addMiddleware = (tag, middleware) => {
166
262
  * // Add authentication permissions for auth endpoints
167
263
  * addPermission('auth', [authPermission])
168
264
  *
169
- * // Add read permissions for all API endpoints
170
- * addPermission('api', [readPermission])
265
+ * // Add read permissions for all API endpoints (as object)
266
+ * addPermission('api', { read: readPermission })
171
267
  * ```
172
268
  */
173
269
  export const addPermission = (tag, permissions) => {