raffel 0.2.3 → 1.0.0-next.f81d4db

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 (590) hide show
  1. package/dist/adapters/grpc.d.ts.map +1 -1
  2. package/dist/adapters/grpc.js +1 -15
  3. package/dist/adapters/grpc.js.map +1 -1
  4. package/dist/adapters/http.d.ts +6 -0
  5. package/dist/adapters/http.d.ts.map +1 -1
  6. package/dist/adapters/http.js +53 -86
  7. package/dist/adapters/http.js.map +1 -1
  8. package/dist/adapters/index.d.ts +0 -2
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +0 -2
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/adapters/tcp.d.ts +16 -0
  13. package/dist/adapters/tcp.d.ts.map +1 -1
  14. package/dist/adapters/tcp.js +85 -34
  15. package/dist/adapters/tcp.js.map +1 -1
  16. package/dist/adapters/websocket.d.ts.map +1 -1
  17. package/dist/adapters/websocket.js +1 -14
  18. package/dist/adapters/websocket.js.map +1 -1
  19. package/dist/cache/drivers/index.d.ts +0 -1
  20. package/dist/cache/drivers/index.d.ts.map +1 -1
  21. package/dist/cache/drivers/index.js +0 -1
  22. package/dist/cache/drivers/index.js.map +1 -1
  23. package/dist/cache/factory.d.ts +2 -9
  24. package/dist/cache/factory.d.ts.map +1 -1
  25. package/dist/cache/factory.js +1 -19
  26. package/dist/cache/factory.js.map +1 -1
  27. package/dist/cache/index.d.ts +2 -7
  28. package/dist/cache/index.d.ts.map +1 -1
  29. package/dist/cache/index.js +1 -6
  30. package/dist/cache/index.js.map +1 -1
  31. package/dist/cache/types.d.ts +1 -32
  32. package/dist/cache/types.d.ts.map +1 -1
  33. package/dist/core/event-delivery.d.ts.map +1 -1
  34. package/dist/core/event-delivery.js +5 -3
  35. package/dist/core/event-delivery.js.map +1 -1
  36. package/dist/core/index.d.ts +1 -1
  37. package/dist/core/index.d.ts.map +1 -1
  38. package/dist/core/registry.d.ts +3 -3
  39. package/dist/core/registry.d.ts.map +1 -1
  40. package/dist/core/registry.js +30 -8
  41. package/dist/core/registry.js.map +1 -1
  42. package/dist/core/router.d.ts.map +1 -1
  43. package/dist/core/router.js +5 -4
  44. package/dist/core/router.js.map +1 -1
  45. package/dist/docs/generators/code-samples.d.ts +32 -0
  46. package/dist/docs/generators/code-samples.d.ts.map +1 -0
  47. package/dist/docs/generators/code-samples.js +322 -0
  48. package/dist/docs/generators/code-samples.js.map +1 -0
  49. package/dist/docs/generators/errors-types.d.ts +2 -2
  50. package/dist/docs/generators/errors-types.js +2 -2
  51. package/dist/docs/generators/http-generator.d.ts +10 -0
  52. package/dist/docs/generators/http-generator.d.ts.map +1 -1
  53. package/dist/docs/generators/http-generator.js +100 -3
  54. package/dist/docs/generators/http-generator.js.map +1 -1
  55. package/dist/docs/generators/usd-generator.d.ts +31 -1
  56. package/dist/docs/generators/usd-generator.d.ts.map +1 -1
  57. package/dist/docs/generators/usd-generator.js +19 -1
  58. package/dist/docs/generators/usd-generator.js.map +1 -1
  59. package/dist/docs/generators/websocket-generator.d.ts.map +1 -1
  60. package/dist/docs/generators/websocket-generator.js +6 -4
  61. package/dist/docs/generators/websocket-generator.js.map +1 -1
  62. package/dist/docs/ui/html-builder.d.ts.map +1 -1
  63. package/dist/docs/ui/html-builder.js +260 -54
  64. package/dist/docs/ui/html-builder.js.map +1 -1
  65. package/dist/docs/ui/styles.d.ts.map +1 -1
  66. package/dist/docs/ui/styles.js +240 -30
  67. package/dist/docs/ui/styles.js.map +1 -1
  68. package/dist/docs/ui/types.d.ts +15 -1
  69. package/dist/docs/ui/types.d.ts.map +1 -1
  70. package/dist/docs/usd-middleware.d.ts +32 -7
  71. package/dist/docs/usd-middleware.d.ts.map +1 -1
  72. package/dist/docs/usd-middleware.js +5 -1
  73. package/dist/docs/usd-middleware.js.map +1 -1
  74. package/dist/dx/index.d.ts +2 -0
  75. package/dist/dx/index.d.ts.map +1 -1
  76. package/dist/dx/index.js +1 -0
  77. package/dist/dx/index.js.map +1 -1
  78. package/dist/dx/logging/index.d.ts.map +1 -1
  79. package/dist/dx/logging/index.js +5 -3
  80. package/dist/dx/logging/index.js.map +1 -1
  81. package/dist/dx/scenarios.d.ts +26 -0
  82. package/dist/dx/scenarios.d.ts.map +1 -0
  83. package/dist/dx/scenarios.js +109 -0
  84. package/dist/dx/scenarios.js.map +1 -0
  85. package/dist/errors/codes.d.ts +1 -1
  86. package/dist/errors/codes.js +1 -1
  87. package/dist/graphql/adapter.js +1 -1
  88. package/dist/http/index.d.ts +2 -0
  89. package/dist/http/index.d.ts.map +1 -1
  90. package/dist/http/index.js +4 -0
  91. package/dist/http/index.js.map +1 -1
  92. package/dist/http/openapi-ui.d.ts +174 -0
  93. package/dist/http/openapi-ui.d.ts.map +1 -0
  94. package/dist/http/openapi-ui.js +221 -0
  95. package/dist/http/openapi-ui.js.map +1 -0
  96. package/dist/http/serve.d.ts +14 -0
  97. package/dist/http/serve.d.ts.map +1 -1
  98. package/dist/http/serve.js +8 -1
  99. package/dist/http/serve.js.map +1 -1
  100. package/dist/index.d.ts +17 -10
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +12 -6
  103. package/dist/index.js.map +1 -1
  104. package/dist/mcp/cli.d.ts +2 -1
  105. package/dist/mcp/cli.d.ts.map +1 -1
  106. package/dist/mcp/cli.js +30 -7
  107. package/dist/mcp/cli.js.map +1 -1
  108. package/dist/mcp/docs/adapters.d.ts.map +1 -1
  109. package/dist/mcp/docs/adapters.js +1 -117
  110. package/dist/mcp/docs/adapters.js.map +1 -1
  111. package/dist/mcp/docs/index.d.ts +0 -1
  112. package/dist/mcp/docs/index.d.ts.map +1 -1
  113. package/dist/mcp/docs/index.js +0 -1
  114. package/dist/mcp/docs/index.js.map +1 -1
  115. package/dist/mcp/docs/interceptors.d.ts.map +1 -1
  116. package/dist/mcp/docs/interceptors.js +272 -1
  117. package/dist/mcp/docs/interceptors.js.map +1 -1
  118. package/dist/mcp/docs/patterns.js +1 -1
  119. package/dist/mcp/prompts/index.d.ts.map +1 -1
  120. package/dist/mcp/prompts/index.js +147 -22
  121. package/dist/mcp/prompts/index.js.map +1 -1
  122. package/dist/mcp/resources/index.d.ts.map +1 -1
  123. package/dist/mcp/resources/index.js +508 -10
  124. package/dist/mcp/resources/index.js.map +1 -1
  125. package/dist/mcp/server.js +1 -1
  126. package/dist/mcp/server.js.map +1 -1
  127. package/dist/mcp/tools/definitions.d.ts +2 -0
  128. package/dist/mcp/tools/definitions.d.ts.map +1 -1
  129. package/dist/mcp/tools/definitions.js +149 -1
  130. package/dist/mcp/tools/definitions.js.map +1 -1
  131. package/dist/mcp/tools/handlers.d.ts.map +1 -1
  132. package/dist/mcp/tools/handlers.js +828 -44
  133. package/dist/mcp/tools/handlers.js.map +1 -1
  134. package/dist/mcp/types.d.ts +1 -1
  135. package/dist/mcp/types.d.ts.map +1 -1
  136. package/dist/metrics/interceptor.d.ts.map +1 -1
  137. package/dist/metrics/interceptor.js +10 -2
  138. package/dist/metrics/interceptor.js.map +1 -1
  139. package/dist/middleware/interceptors/cache.d.ts +1 -1
  140. package/dist/middleware/interceptors/cache.d.ts.map +1 -1
  141. package/dist/middleware/interceptors/cache.js +4 -2
  142. package/dist/middleware/interceptors/cache.js.map +1 -1
  143. package/dist/middleware/interceptors/envelope.d.ts.map +1 -1
  144. package/dist/middleware/interceptors/envelope.js +12 -14
  145. package/dist/middleware/interceptors/envelope.js.map +1 -1
  146. package/dist/middleware/interceptors/logging.d.ts.map +1 -1
  147. package/dist/middleware/interceptors/logging.js +11 -6
  148. package/dist/middleware/interceptors/logging.js.map +1 -1
  149. package/dist/middleware/session/drivers/memory.d.ts +36 -0
  150. package/dist/middleware/session/drivers/memory.d.ts.map +1 -0
  151. package/dist/middleware/session/drivers/memory.js +82 -0
  152. package/dist/middleware/session/drivers/memory.js.map +1 -0
  153. package/dist/middleware/session/drivers/redis.d.ts +58 -0
  154. package/dist/middleware/session/drivers/redis.d.ts.map +1 -0
  155. package/dist/middleware/session/drivers/redis.js +70 -0
  156. package/dist/middleware/session/drivers/redis.js.map +1 -0
  157. package/dist/middleware/session/drivers/s3db.d.ts +65 -0
  158. package/dist/middleware/session/drivers/s3db.d.ts.map +1 -0
  159. package/dist/middleware/session/drivers/s3db.js +98 -0
  160. package/dist/middleware/session/drivers/s3db.js.map +1 -0
  161. package/dist/middleware/session/index.d.ts +47 -0
  162. package/dist/middleware/session/index.d.ts.map +1 -0
  163. package/dist/middleware/session/index.js +46 -0
  164. package/dist/middleware/session/index.js.map +1 -0
  165. package/dist/middleware/session/interceptor.d.ts +42 -0
  166. package/dist/middleware/session/interceptor.d.ts.map +1 -0
  167. package/dist/middleware/session/interceptor.js +264 -0
  168. package/dist/middleware/session/interceptor.js.map +1 -0
  169. package/dist/middleware/session/types.d.ts +116 -0
  170. package/dist/middleware/session/types.d.ts.map +1 -0
  171. package/dist/middleware/session/types.js +9 -0
  172. package/dist/middleware/session/types.js.map +1 -0
  173. package/dist/proxy/connect-tunnel.d.ts +50 -0
  174. package/dist/proxy/connect-tunnel.d.ts.map +1 -0
  175. package/dist/proxy/connect-tunnel.js +163 -0
  176. package/dist/proxy/connect-tunnel.js.map +1 -0
  177. package/dist/proxy/http-forward.d.ts +48 -0
  178. package/dist/proxy/http-forward.d.ts.map +1 -0
  179. package/dist/proxy/http-forward.js +160 -0
  180. package/dist/proxy/http-forward.js.map +1 -0
  181. package/dist/proxy/index.d.ts +19 -0
  182. package/dist/proxy/index.d.ts.map +1 -0
  183. package/dist/proxy/index.js +14 -0
  184. package/dist/proxy/index.js.map +1 -0
  185. package/dist/proxy/socks5.d.ts +22 -0
  186. package/dist/proxy/socks5.d.ts.map +1 -0
  187. package/dist/proxy/socks5.js +307 -0
  188. package/dist/proxy/socks5.js.map +1 -0
  189. package/dist/proxy/transparent.d.ts +40 -0
  190. package/dist/proxy/transparent.d.ts.map +1 -0
  191. package/dist/proxy/transparent.js +144 -0
  192. package/dist/proxy/transparent.js.map +1 -0
  193. package/dist/proxy/types.d.ts +32 -0
  194. package/dist/proxy/types.d.ts.map +1 -0
  195. package/dist/proxy/types.js +5 -0
  196. package/dist/proxy/types.js.map +1 -0
  197. package/dist/proxy/utils/auth.d.ts +31 -0
  198. package/dist/proxy/utils/auth.d.ts.map +1 -0
  199. package/dist/proxy/utils/auth.js +69 -0
  200. package/dist/proxy/utils/auth.js.map +1 -0
  201. package/dist/proxy/utils/hop-headers.d.ts +13 -0
  202. package/dist/proxy/utils/hop-headers.d.ts.map +1 -0
  203. package/dist/proxy/utils/hop-headers.js +38 -0
  204. package/dist/proxy/utils/hop-headers.js.map +1 -0
  205. package/dist/proxy/utils/pipe.d.ts +22 -0
  206. package/dist/proxy/utils/pipe.d.ts.map +1 -0
  207. package/dist/proxy/utils/pipe.js +60 -0
  208. package/dist/proxy/utils/pipe.js.map +1 -0
  209. package/dist/rate-limit/factory.d.ts.map +1 -1
  210. package/dist/rate-limit/factory.js +30 -6
  211. package/dist/rate-limit/factory.js.map +1 -1
  212. package/dist/server/builder/config-preview.d.ts +34 -0
  213. package/dist/server/builder/config-preview.d.ts.map +1 -0
  214. package/dist/server/builder/config-preview.js +95 -0
  215. package/dist/server/builder/config-preview.js.map +1 -0
  216. package/dist/server/builder/lifecycle-utils.d.ts +11 -0
  217. package/dist/server/builder/lifecycle-utils.d.ts.map +1 -0
  218. package/dist/server/builder/lifecycle-utils.js +32 -0
  219. package/dist/server/builder/lifecycle-utils.js.map +1 -0
  220. package/dist/server/builder/lifecycle.d.ts +86 -0
  221. package/dist/server/builder/lifecycle.d.ts.map +1 -0
  222. package/dist/server/builder/lifecycle.js +738 -0
  223. package/dist/server/builder/lifecycle.js.map +1 -0
  224. package/dist/server/builder/single-port-utils.d.ts +27 -0
  225. package/dist/server/builder/single-port-utils.d.ts.map +1 -0
  226. package/dist/server/builder/single-port-utils.js +170 -0
  227. package/dist/server/builder/single-port-utils.js.map +1 -0
  228. package/dist/server/builder.d.ts.map +1 -1
  229. package/dist/server/builder.js +446 -601
  230. package/dist/server/builder.js.map +1 -1
  231. package/dist/server/discovery-bootstrap.d.ts +21 -0
  232. package/dist/server/discovery-bootstrap.d.ts.map +1 -0
  233. package/dist/server/discovery-bootstrap.js +39 -0
  234. package/dist/server/discovery-bootstrap.js.map +1 -0
  235. package/dist/server/errors.d.ts.map +1 -1
  236. package/dist/server/errors.js +1 -33
  237. package/dist/server/errors.js.map +1 -1
  238. package/dist/server/front-door.d.ts +34 -0
  239. package/dist/server/front-door.d.ts.map +1 -0
  240. package/dist/server/front-door.js +238 -0
  241. package/dist/server/front-door.js.map +1 -0
  242. package/dist/server/fs-routes/types.d.ts +6 -0
  243. package/dist/server/fs-routes/types.d.ts.map +1 -1
  244. package/dist/server/handler-builders.d.ts +22 -4
  245. package/dist/server/handler-builders.d.ts.map +1 -1
  246. package/dist/server/handler-builders.js +37 -14
  247. package/dist/server/handler-builders.js.map +1 -1
  248. package/dist/server/index.d.ts +4 -1
  249. package/dist/server/index.d.ts.map +1 -1
  250. package/dist/server/index.js +2 -0
  251. package/dist/server/index.js.map +1 -1
  252. package/dist/server/interceptor-utils.d.ts +8 -0
  253. package/dist/server/interceptor-utils.d.ts.map +1 -0
  254. package/dist/server/interceptor-utils.js +23 -0
  255. package/dist/server/interceptor-utils.js.map +1 -0
  256. package/dist/server/port-binding.d.ts +44 -0
  257. package/dist/server/port-binding.d.ts.map +1 -0
  258. package/dist/server/port-binding.js +94 -0
  259. package/dist/server/port-binding.js.map +1 -0
  260. package/dist/server/protocol-aliases.d.ts +56 -0
  261. package/dist/server/protocol-aliases.d.ts.map +1 -0
  262. package/dist/server/protocol-aliases.js +47 -0
  263. package/dist/server/protocol-aliases.js.map +1 -0
  264. package/dist/server/protocol-config.d.ts +17 -1
  265. package/dist/server/protocol-config.d.ts.map +1 -1
  266. package/dist/server/protocol-config.js +116 -9
  267. package/dist/server/protocol-config.js.map +1 -1
  268. package/dist/server/resource-builder.js +3 -3
  269. package/dist/server/resource-builder.js.map +1 -1
  270. package/dist/server/rest-middleware.d.ts.map +1 -1
  271. package/dist/server/rest-middleware.js +1 -15
  272. package/dist/server/rest-middleware.js.map +1 -1
  273. package/dist/server/router-module.d.ts.map +1 -1
  274. package/dist/server/router-module.js +22 -99
  275. package/dist/server/router-module.js.map +1 -1
  276. package/dist/server/shared-context.d.ts.map +1 -1
  277. package/dist/server/shared-context.js +3 -1
  278. package/dist/server/shared-context.js.map +1 -1
  279. package/dist/server/single-port/dispatcher.d.ts +10 -0
  280. package/dist/server/single-port/dispatcher.d.ts.map +1 -0
  281. package/dist/server/single-port/dispatcher.js +188 -0
  282. package/dist/server/single-port/dispatcher.js.map +1 -0
  283. package/dist/server/single-port/index.d.ts +4 -0
  284. package/dist/server/single-port/index.d.ts.map +1 -0
  285. package/dist/server/single-port/index.js +3 -0
  286. package/dist/server/single-port/index.js.map +1 -0
  287. package/dist/server/single-port/registry.d.ts +19 -0
  288. package/dist/server/single-port/registry.d.ts.map +1 -0
  289. package/dist/server/single-port/registry.js +24 -0
  290. package/dist/server/single-port/registry.js.map +1 -0
  291. package/dist/server/single-port/types.d.ts +46 -0
  292. package/dist/server/single-port/types.d.ts.map +1 -0
  293. package/dist/server/single-port/types.js +2 -0
  294. package/dist/server/single-port/types.js.map +1 -0
  295. package/dist/server/telemetry-bootstrap.d.ts +38 -0
  296. package/dist/server/telemetry-bootstrap.d.ts.map +1 -0
  297. package/dist/server/telemetry-bootstrap.js +115 -0
  298. package/dist/server/telemetry-bootstrap.js.map +1 -0
  299. package/dist/server/types.d.ts +422 -21
  300. package/dist/server/types.d.ts.map +1 -1
  301. package/dist/testing/echo-protection.d.ts +30 -0
  302. package/dist/testing/echo-protection.d.ts.map +1 -0
  303. package/dist/testing/echo-protection.js +158 -0
  304. package/dist/testing/echo-protection.js.map +1 -0
  305. package/dist/testing/index.d.ts +344 -0
  306. package/dist/testing/index.d.ts.map +1 -0
  307. package/dist/testing/index.js +1072 -0
  308. package/dist/testing/index.js.map +1 -0
  309. package/dist/testing/mock-dns-server.d.ts +31 -0
  310. package/dist/testing/mock-dns-server.d.ts.map +1 -0
  311. package/dist/testing/mock-dns-server.js +247 -0
  312. package/dist/testing/mock-dns-server.js.map +1 -0
  313. package/dist/testing/mock-hls-server.d.ts +85 -0
  314. package/dist/testing/mock-hls-server.d.ts.map +1 -0
  315. package/dist/testing/mock-hls-server.js +252 -0
  316. package/dist/testing/mock-hls-server.js.map +1 -0
  317. package/dist/testing/mock-proxy-server.d.ts +78 -0
  318. package/dist/testing/mock-proxy-server.d.ts.map +1 -0
  319. package/dist/testing/mock-proxy-server.js +277 -0
  320. package/dist/testing/mock-proxy-server.js.map +1 -0
  321. package/dist/testing/mock-sse-server.d.ts +56 -0
  322. package/dist/testing/mock-sse-server.d.ts.map +1 -0
  323. package/dist/testing/mock-sse-server.js +206 -0
  324. package/dist/testing/mock-sse-server.js.map +1 -0
  325. package/dist/testing/proxy-certs.d.ts +9 -0
  326. package/dist/testing/proxy-certs.d.ts.map +1 -0
  327. package/dist/testing/proxy-certs.js +2 -0
  328. package/dist/testing/proxy-certs.js.map +1 -0
  329. package/dist/testing/service-suite.d.ts +47 -0
  330. package/dist/testing/service-suite.d.ts.map +1 -0
  331. package/dist/testing/service-suite.js +82 -0
  332. package/dist/testing/service-suite.js.map +1 -0
  333. package/dist/testing/service-types.d.ts +32 -0
  334. package/dist/testing/service-types.d.ts.map +1 -0
  335. package/dist/testing/service-types.js +2 -0
  336. package/dist/testing/service-types.js.map +1 -0
  337. package/dist/ui/core/event-delivery.d.ts.map +1 -1
  338. package/dist/ui/core/index.d.ts +1 -1
  339. package/dist/ui/core/index.d.ts.map +1 -1
  340. package/dist/ui/core/registry.d.ts +3 -3
  341. package/dist/ui/core/registry.d.ts.map +1 -1
  342. package/dist/ui/core/router.d.ts.map +1 -1
  343. package/dist/ui/docs/generators/code-samples.d.ts +32 -0
  344. package/dist/ui/docs/generators/code-samples.d.ts.map +1 -0
  345. package/dist/ui/docs/generators/errors-types.d.ts +2 -2
  346. package/dist/ui/docs/generators/http-generator.d.ts +10 -0
  347. package/dist/ui/docs/generators/http-generator.d.ts.map +1 -1
  348. package/dist/ui/docs/generators/usd-generator.d.ts +31 -1
  349. package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -1
  350. package/dist/ui/docs/generators/websocket-generator.d.ts.map +1 -1
  351. package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
  352. package/dist/ui/docs/ui/styles.d.ts.map +1 -1
  353. package/dist/ui/docs/ui/types.d.ts +15 -1
  354. package/dist/ui/docs/ui/types.d.ts.map +1 -1
  355. package/dist/ui/docs/usd-middleware.d.ts +32 -7
  356. package/dist/ui/docs/usd-middleware.d.ts.map +1 -1
  357. package/dist/ui/errors/codes.d.ts +1 -1
  358. package/dist/ui/server/fs-routes/types.d.ts +6 -0
  359. package/dist/ui/server/fs-routes/types.d.ts.map +1 -1
  360. package/dist/ui/usd/index.d.ts +1 -1
  361. package/dist/ui/usd/index.d.ts.map +1 -1
  362. package/dist/ui/usd/spec/types.d.ts +91 -0
  363. package/dist/ui/usd/spec/types.d.ts.map +1 -1
  364. package/dist/usd/index.d.ts +1 -1
  365. package/dist/usd/index.d.ts.map +1 -1
  366. package/dist/usd/index.js.map +1 -1
  367. package/dist/usd/spec/types.d.ts +91 -0
  368. package/dist/usd/spec/types.d.ts.map +1 -1
  369. package/dist/usd/spec/types.js.map +1 -1
  370. package/dist/utils/certs.d.ts +30 -0
  371. package/dist/utils/certs.d.ts.map +1 -0
  372. package/dist/utils/certs.js +230 -0
  373. package/dist/utils/certs.js.map +1 -0
  374. package/dist/utils/context-utils.d.ts +11 -0
  375. package/dist/utils/context-utils.d.ts.map +1 -0
  376. package/dist/utils/context-utils.js +24 -0
  377. package/dist/utils/context-utils.js.map +1 -0
  378. package/package.json +11 -2
  379. package/dist/adapters/grpc.int.test.d.ts +0 -5
  380. package/dist/adapters/grpc.int.test.d.ts.map +0 -1
  381. package/dist/adapters/grpc.int.test.js +0 -168
  382. package/dist/adapters/grpc.int.test.js.map +0 -1
  383. package/dist/adapters/http.int.test.d.ts +0 -5
  384. package/dist/adapters/http.int.test.d.ts.map +0 -1
  385. package/dist/adapters/http.int.test.js +0 -396
  386. package/dist/adapters/http.int.test.js.map +0 -1
  387. package/dist/adapters/jsonrpc.int.test.d.ts +0 -5
  388. package/dist/adapters/jsonrpc.int.test.d.ts.map +0 -1
  389. package/dist/adapters/jsonrpc.int.test.js +0 -640
  390. package/dist/adapters/jsonrpc.int.test.js.map +0 -1
  391. package/dist/adapters/s3db/adapter.d.ts +0 -105
  392. package/dist/adapters/s3db/adapter.d.ts.map +0 -1
  393. package/dist/adapters/s3db/adapter.js +0 -536
  394. package/dist/adapters/s3db/adapter.js.map +0 -1
  395. package/dist/adapters/s3db/index.d.ts +0 -20
  396. package/dist/adapters/s3db/index.d.ts.map +0 -1
  397. package/dist/adapters/s3db/index.js +0 -25
  398. package/dist/adapters/s3db/index.js.map +0 -1
  399. package/dist/adapters/s3db/s3db.int.test.d.ts +0 -5
  400. package/dist/adapters/s3db/s3db.int.test.d.ts.map +0 -1
  401. package/dist/adapters/s3db/s3db.int.test.js +0 -472
  402. package/dist/adapters/s3db/s3db.int.test.js.map +0 -1
  403. package/dist/adapters/s3db/types.d.ts +0 -277
  404. package/dist/adapters/s3db/types.d.ts.map +0 -1
  405. package/dist/adapters/s3db/types.js +0 -7
  406. package/dist/adapters/s3db/types.js.map +0 -1
  407. package/dist/adapters/s3db/utils/etag.d.ts +0 -65
  408. package/dist/adapters/s3db/utils/etag.d.ts.map +0 -1
  409. package/dist/adapters/s3db/utils/etag.js +0 -99
  410. package/dist/adapters/s3db/utils/etag.js.map +0 -1
  411. package/dist/adapters/s3db/utils/guards.d.ts +0 -121
  412. package/dist/adapters/s3db/utils/guards.d.ts.map +0 -1
  413. package/dist/adapters/s3db/utils/guards.js +0 -169
  414. package/dist/adapters/s3db/utils/guards.js.map +0 -1
  415. package/dist/adapters/s3db/utils/index.d.ts +0 -9
  416. package/dist/adapters/s3db/utils/index.d.ts.map +0 -1
  417. package/dist/adapters/s3db/utils/index.js +0 -10
  418. package/dist/adapters/s3db/utils/index.js.map +0 -1
  419. package/dist/adapters/s3db/utils/populate.d.ts +0 -89
  420. package/dist/adapters/s3db/utils/populate.d.ts.map +0 -1
  421. package/dist/adapters/s3db/utils/populate.js +0 -165
  422. package/dist/adapters/s3db/utils/populate.js.map +0 -1
  423. package/dist/adapters/tcp.int.test.d.ts +0 -5
  424. package/dist/adapters/tcp.int.test.d.ts.map +0 -1
  425. package/dist/adapters/tcp.int.test.js +0 -379
  426. package/dist/adapters/tcp.int.test.js.map +0 -1
  427. package/dist/adapters/udp.int.test.d.ts +0 -5
  428. package/dist/adapters/udp.int.test.d.ts.map +0 -1
  429. package/dist/adapters/udp.int.test.js +0 -397
  430. package/dist/adapters/udp.int.test.js.map +0 -1
  431. package/dist/adapters/websocket.int.test.d.ts +0 -5
  432. package/dist/adapters/websocket.int.test.d.ts.map +0 -1
  433. package/dist/adapters/websocket.int.test.js +0 -383
  434. package/dist/adapters/websocket.int.test.js.map +0 -1
  435. package/dist/cache/drivers/memory.int.test.d.ts +0 -5
  436. package/dist/cache/drivers/memory.int.test.d.ts.map +0 -1
  437. package/dist/cache/drivers/memory.int.test.js +0 -241
  438. package/dist/cache/drivers/memory.int.test.js.map +0 -1
  439. package/dist/cache/drivers/s3db.d.ts +0 -78
  440. package/dist/cache/drivers/s3db.d.ts.map +0 -1
  441. package/dist/cache/drivers/s3db.js +0 -216
  442. package/dist/cache/drivers/s3db.js.map +0 -1
  443. package/dist/channels/channel-manager.int.test.d.ts +0 -5
  444. package/dist/channels/channel-manager.int.test.d.ts.map +0 -1
  445. package/dist/channels/channel-manager.int.test.js +0 -378
  446. package/dist/channels/channel-manager.int.test.js.map +0 -1
  447. package/dist/core/ctx-call.int.test.d.ts +0 -7
  448. package/dist/core/ctx-call.int.test.d.ts.map +0 -1
  449. package/dist/core/ctx-call.int.test.js +0 -263
  450. package/dist/core/ctx-call.int.test.js.map +0 -1
  451. package/dist/core/registry.unit.test.d.ts +0 -2
  452. package/dist/core/registry.unit.test.d.ts.map +0 -1
  453. package/dist/core/registry.unit.test.js +0 -133
  454. package/dist/core/registry.unit.test.js.map +0 -1
  455. package/dist/core/router.int.test.d.ts +0 -2
  456. package/dist/core/router.int.test.d.ts.map +0 -1
  457. package/dist/core/router.int.test.js +0 -368
  458. package/dist/core/router.int.test.js.map +0 -1
  459. package/dist/docs/generators/generators.int.test.d.ts +0 -2
  460. package/dist/docs/generators/generators.int.test.d.ts.map +0 -1
  461. package/dist/docs/generators/generators.int.test.js +0 -105
  462. package/dist/docs/generators/generators.int.test.js.map +0 -1
  463. package/dist/docs/openapi/generator.int.test.d.ts +0 -5
  464. package/dist/docs/openapi/generator.int.test.d.ts.map +0 -1
  465. package/dist/docs/openapi/generator.int.test.js +0 -260
  466. package/dist/docs/openapi/generator.int.test.js.map +0 -1
  467. package/dist/dx/health/health.int.test.d.ts +0 -5
  468. package/dist/dx/health/health.int.test.d.ts.map +0 -1
  469. package/dist/dx/health/health.int.test.js +0 -249
  470. package/dist/dx/health/health.int.test.js.map +0 -1
  471. package/dist/dx/logging/http-logging.int.test.d.ts +0 -5
  472. package/dist/dx/logging/http-logging.int.test.d.ts.map +0 -1
  473. package/dist/dx/logging/http-logging.int.test.js +0 -319
  474. package/dist/dx/logging/http-logging.int.test.js.map +0 -1
  475. package/dist/errors/factories.unit.test.d.ts +0 -7
  476. package/dist/errors/factories.unit.test.d.ts.map +0 -1
  477. package/dist/errors/factories.unit.test.js +0 -358
  478. package/dist/errors/factories.unit.test.js.map +0 -1
  479. package/dist/graphql/graphql.int.test.d.ts +0 -10
  480. package/dist/graphql/graphql.int.test.d.ts.map +0 -1
  481. package/dist/graphql/graphql.int.test.js +0 -698
  482. package/dist/graphql/graphql.int.test.js.map +0 -1
  483. package/dist/graphql/schema-generator.int.test.d.ts +0 -5
  484. package/dist/graphql/schema-generator.int.test.d.ts.map +0 -1
  485. package/dist/graphql/schema-generator.int.test.js +0 -51
  486. package/dist/graphql/schema-generator.int.test.js.map +0 -1
  487. package/dist/http/http.int.test.d.ts +0 -7
  488. package/dist/http/http.int.test.d.ts.map +0 -1
  489. package/dist/http/http.int.test.js +0 -605
  490. package/dist/http/http.int.test.js.map +0 -1
  491. package/dist/http/session-redis.int.test.d.ts +0 -8
  492. package/dist/http/session-redis.int.test.d.ts.map +0 -1
  493. package/dist/http/session-redis.int.test.js +0 -492
  494. package/dist/http/session-redis.int.test.js.map +0 -1
  495. package/dist/metrics/metrics.int.test.d.ts +0 -5
  496. package/dist/metrics/metrics.int.test.d.ts.map +0 -1
  497. package/dist/metrics/metrics.int.test.js +0 -288
  498. package/dist/metrics/metrics.int.test.js.map +0 -1
  499. package/dist/middleware/auth/oauth2.int.test.d.ts +0 -2
  500. package/dist/middleware/auth/oauth2.int.test.d.ts.map +0 -1
  501. package/dist/middleware/auth/oauth2.int.test.js +0 -714
  502. package/dist/middleware/auth/oauth2.int.test.js.map +0 -1
  503. package/dist/middleware/auth.int.test.d.ts +0 -5
  504. package/dist/middleware/auth.int.test.d.ts.map +0 -1
  505. package/dist/middleware/auth.int.test.js +0 -366
  506. package/dist/middleware/auth.int.test.js.map +0 -1
  507. package/dist/middleware/compose.int.test.d.ts +0 -7
  508. package/dist/middleware/compose.int.test.d.ts.map +0 -1
  509. package/dist/middleware/compose.int.test.js +0 -238
  510. package/dist/middleware/compose.int.test.js.map +0 -1
  511. package/dist/middleware/interceptors/bulkhead.int.test.d.ts +0 -5
  512. package/dist/middleware/interceptors/bulkhead.int.test.d.ts.map +0 -1
  513. package/dist/middleware/interceptors/bulkhead.int.test.js +0 -263
  514. package/dist/middleware/interceptors/bulkhead.int.test.js.map +0 -1
  515. package/dist/middleware/interceptors/cache.int.test.d.ts +0 -5
  516. package/dist/middleware/interceptors/cache.int.test.d.ts.map +0 -1
  517. package/dist/middleware/interceptors/cache.int.test.js +0 -470
  518. package/dist/middleware/interceptors/cache.int.test.js.map +0 -1
  519. package/dist/middleware/interceptors/circuit-breaker.int.test.d.ts +0 -5
  520. package/dist/middleware/interceptors/circuit-breaker.int.test.d.ts.map +0 -1
  521. package/dist/middleware/interceptors/circuit-breaker.int.test.js +0 -253
  522. package/dist/middleware/interceptors/circuit-breaker.int.test.js.map +0 -1
  523. package/dist/middleware/interceptors/envelope.int.test.d.ts +0 -5
  524. package/dist/middleware/interceptors/envelope.int.test.d.ts.map +0 -1
  525. package/dist/middleware/interceptors/envelope.int.test.js +0 -409
  526. package/dist/middleware/interceptors/envelope.int.test.js.map +0 -1
  527. package/dist/middleware/interceptors/fallback.int.test.d.ts +0 -5
  528. package/dist/middleware/interceptors/fallback.int.test.d.ts.map +0 -1
  529. package/dist/middleware/interceptors/fallback.int.test.js +0 -211
  530. package/dist/middleware/interceptors/fallback.int.test.js.map +0 -1
  531. package/dist/middleware/interceptors/logging.int.test.d.ts +0 -5
  532. package/dist/middleware/interceptors/logging.int.test.d.ts.map +0 -1
  533. package/dist/middleware/interceptors/logging.int.test.js +0 -144
  534. package/dist/middleware/interceptors/logging.int.test.js.map +0 -1
  535. package/dist/middleware/interceptors/rate-limit.int.test.d.ts +0 -5
  536. package/dist/middleware/interceptors/rate-limit.int.test.d.ts.map +0 -1
  537. package/dist/middleware/interceptors/rate-limit.int.test.js +0 -221
  538. package/dist/middleware/interceptors/rate-limit.int.test.js.map +0 -1
  539. package/dist/middleware/interceptors/request-id.int.test.d.ts +0 -5
  540. package/dist/middleware/interceptors/request-id.int.test.d.ts.map +0 -1
  541. package/dist/middleware/interceptors/request-id.int.test.js +0 -136
  542. package/dist/middleware/interceptors/request-id.int.test.js.map +0 -1
  543. package/dist/middleware/interceptors/retry.int.test.d.ts +0 -5
  544. package/dist/middleware/interceptors/retry.int.test.d.ts.map +0 -1
  545. package/dist/middleware/interceptors/retry.int.test.js +0 -534
  546. package/dist/middleware/interceptors/retry.int.test.js.map +0 -1
  547. package/dist/middleware/interceptors/timeout.int.test.d.ts +0 -5
  548. package/dist/middleware/interceptors/timeout.int.test.d.ts.map +0 -1
  549. package/dist/middleware/interceptors/timeout.int.test.js +0 -228
  550. package/dist/middleware/interceptors/timeout.int.test.js.map +0 -1
  551. package/dist/rate-limit/drivers/drivers.int.test.d.ts +0 -7
  552. package/dist/rate-limit/drivers/drivers.int.test.d.ts.map +0 -1
  553. package/dist/rate-limit/drivers/drivers.int.test.js +0 -466
  554. package/dist/rate-limit/drivers/drivers.int.test.js.map +0 -1
  555. package/dist/server/builder.int.test.d.ts +0 -7
  556. package/dist/server/builder.int.test.d.ts.map +0 -1
  557. package/dist/server/builder.int.test.js +0 -455
  558. package/dist/server/builder.int.test.js.map +0 -1
  559. package/dist/server/fs-routes/loader.int.test.d.ts +0 -5
  560. package/dist/server/fs-routes/loader.int.test.d.ts.map +0 -1
  561. package/dist/server/fs-routes/loader.int.test.js +0 -48
  562. package/dist/server/fs-routes/loader.int.test.js.map +0 -1
  563. package/dist/server/hooks.int.test.d.ts +0 -7
  564. package/dist/server/hooks.int.test.d.ts.map +0 -1
  565. package/dist/server/hooks.int.test.js +0 -564
  566. package/dist/server/hooks.int.test.js.map +0 -1
  567. package/dist/server/route-discovery.int.test.d.ts +0 -5
  568. package/dist/server/route-discovery.int.test.d.ts.map +0 -1
  569. package/dist/server/route-discovery.int.test.js +0 -49
  570. package/dist/server/route-discovery.int.test.js.map +0 -1
  571. package/dist/stream/raffel-stream.int.test.d.ts +0 -2
  572. package/dist/stream/raffel-stream.int.test.d.ts.map +0 -1
  573. package/dist/stream/raffel-stream.int.test.js +0 -265
  574. package/dist/stream/raffel-stream.int.test.js.map +0 -1
  575. package/dist/tracing/tracing.int.test.d.ts +0 -5
  576. package/dist/tracing/tracing.int.test.d.ts.map +0 -1
  577. package/dist/tracing/tracing.int.test.js +0 -412
  578. package/dist/tracing/tracing.int.test.js.map +0 -1
  579. package/dist/usd/usd.int.test.d.ts +0 -10
  580. package/dist/usd/usd.int.test.d.ts.map +0 -1
  581. package/dist/usd/usd.int.test.js +0 -719
  582. package/dist/usd/usd.int.test.js.map +0 -1
  583. package/dist/validation/multi-validator.int.test.d.ts +0 -7
  584. package/dist/validation/multi-validator.int.test.d.ts.map +0 -1
  585. package/dist/validation/multi-validator.int.test.js +0 -808
  586. package/dist/validation/multi-validator.int.test.js.map +0 -1
  587. package/dist/validation/schema.int.test.d.ts +0 -5
  588. package/dist/validation/schema.int.test.d.ts.map +0 -1
  589. package/dist/validation/schema.int.test.js +0 -340
  590. package/dist/validation/schema.int.test.js.map +0 -1
@@ -1,536 +0,0 @@
1
- /**
2
- * S3DB Resource Adapter
3
- *
4
- * Converts s3db.js resources into Raffel procedures with full RESTful support.
5
- *
6
- * Features:
7
- * - RESTful CRUD operations (list, get, create, update, patch, delete)
8
- * - ETag support for caching and optimistic concurrency
9
- * - Flexible guards system for authorization (roles, scopes, custom functions)
10
- * - Relations/populate for expanding related records
11
- * - Event callbacks (onCreated, onUpdated, onDeleted)
12
- * - Prefer header support (return=minimal)
13
- * - HEAD endpoints for metadata
14
- * - Enhanced OPTIONS with full resource metadata
15
- *
16
- * @example
17
- * ```typescript
18
- * import { createServer } from 'raffel'
19
- * import { createS3DBAdapter } from 'raffel/adapters/s3db'
20
- * import { Database } from 's3db.js'
21
- *
22
- * const db = new Database({ bucket: 'my-bucket' })
23
- * const users = db.createResource('users', { ... })
24
- *
25
- * const server = createServer({ port: 3000 })
26
- * .enableHttp()
27
- * .mount('api/v1', createS3DBAdapter(users, {
28
- * guards: {
29
- * read: true, // Allow all reads
30
- * write: { role: 'admin' }, // Only admins can write
31
- * },
32
- * onCreated: (event) => console.log('Created:', event.id),
33
- * }))
34
- * ```
35
- */
36
- import { Errors } from '../../errors/index.js';
37
- import { createRouterModule } from '../../server/router-module.js';
38
- import { generateETag, validateIfMatch, validateIfNoneMatch, checkGuard, getOperationGuard, parsePopulate, resolvePopulate, hasRelations, getRelationNames, } from './utils/index.js';
39
- /**
40
- * Filter protected fields from a record
41
- */
42
- function filterProtectedFields(data, protectedFields) {
43
- if (protectedFields.length === 0)
44
- return data;
45
- const filter = (record) => {
46
- const filtered = {};
47
- for (const [key, value] of Object.entries(record)) {
48
- if (!protectedFields.includes(key)) {
49
- filtered[key] = value;
50
- }
51
- }
52
- return filtered;
53
- };
54
- if (Array.isArray(data)) {
55
- return data.map(filter);
56
- }
57
- return filter(data);
58
- }
59
- /**
60
- * Check authorization for an operation using guards
61
- */
62
- async function checkAuthorization(operation, resourceName, ctx, options, record) {
63
- if (options.guards) {
64
- const guard = getOperationGuard(options.guards, operation);
65
- const allowed = await checkGuard(guard, ctx, record);
66
- if (!allowed) {
67
- throw Errors.forbidden(`Not authorized to ${operation} ${resourceName}`);
68
- }
69
- }
70
- }
71
- /**
72
- * Emit an event callback if configured
73
- */
74
- async function emitEvent(type, options, resourceName, id, data, previous, user) {
75
- const callback = type === 'created'
76
- ? options.onCreated
77
- : type === 'updated'
78
- ? options.onUpdated
79
- : options.onDeleted;
80
- if (!callback)
81
- return;
82
- const event = {
83
- resource: resourceName,
84
- operation: type,
85
- id,
86
- data,
87
- previous,
88
- user,
89
- timestamp: Date.now(),
90
- };
91
- try {
92
- await callback(event);
93
- }
94
- catch {
95
- // Event callbacks should not break the main flow
96
- // In production, this would be logged
97
- }
98
- }
99
- /**
100
- * Create procedures for a single s3db resource
101
- */
102
- function registerResourceProcedures(module, resource, options) {
103
- const { methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD'], contextToUser = (ctx) => ctx.auth, protectedFields = [], enableETag = true, enablePaginationHeaders = true, getResource, } = options;
104
- const resourceName = resource.name;
105
- // Merge protected fields from resource schema
106
- const schemaProtected = resource.$schema?.api?.protected || [];
107
- const allProtectedFields = [...new Set([...protectedFields, ...schemaProtected])];
108
- // Create resource group
109
- const group = module.group(resourceName);
110
- // === LIST ===
111
- if (methods.includes('GET')) {
112
- group
113
- .procedure('list')
114
- .handler(async (rawInput, ctx) => {
115
- const input = rawInput;
116
- // Authorization check using guards
117
- await checkAuthorization('list', resourceName, ctx, options);
118
- const { limit = 100, offset = 0, filters, partition, partitionValues, populate } = input;
119
- // Validate populate paths if provided
120
- const populatePaths = parsePopulate(populate);
121
- if (populatePaths.length > 0) {
122
- const populateResult = resolvePopulate(resource, populatePaths, getResource);
123
- if (populateResult.errors?.length) {
124
- throw Errors.badRequest(populateResult.errors.join('; '));
125
- }
126
- }
127
- let items;
128
- let total;
129
- if (partition && partitionValues) {
130
- // Partition-based query
131
- items = await resource.listPartition({
132
- partition,
133
- partitionValues,
134
- limit,
135
- offset,
136
- });
137
- total = items.length;
138
- }
139
- else if (filters && Object.keys(filters).length > 0) {
140
- // Filtered query
141
- items = await resource.query(filters, { limit, offset });
142
- total = items.length;
143
- }
144
- else {
145
- // Full list
146
- items = await resource.list({ limit, offset });
147
- total = items.length;
148
- }
149
- const filteredItems = filterProtectedFields(items, allProtectedFields);
150
- return {
151
- data: filteredItems,
152
- pagination: {
153
- total,
154
- page: Math.floor(offset / limit) + 1,
155
- pageSize: limit,
156
- pageCount: Math.ceil(total / limit),
157
- },
158
- };
159
- });
160
- // === GET by ID ===
161
- group
162
- .procedure('get')
163
- .handler(async (rawInput, ctx) => {
164
- const input = rawInput;
165
- // Authorization check using guards
166
- await checkAuthorization('get', resourceName, ctx, options);
167
- const { id, include, partition, partitionValues, populate, ifNoneMatch } = input;
168
- // Build include options from populate or direct include
169
- const populatePaths = parsePopulate(populate);
170
- let includeOpts;
171
- if (populatePaths.length > 0) {
172
- const populateResult = resolvePopulate(resource, populatePaths, getResource);
173
- if (populateResult.errors?.length) {
174
- throw Errors.badRequest(populateResult.errors.join('; '));
175
- }
176
- includeOpts = { include: populatePaths };
177
- }
178
- else if (include) {
179
- includeOpts = { include };
180
- }
181
- let item;
182
- if (partition && partitionValues) {
183
- item = await resource.getFromPartition({
184
- id,
185
- partitionName: partition,
186
- partitionValues,
187
- });
188
- }
189
- else {
190
- item = await resource.get(id, includeOpts);
191
- }
192
- if (!item) {
193
- throw Errors.notFound(resourceName, id);
194
- }
195
- const filteredItem = filterProtectedFields(item, allProtectedFields);
196
- // Generate ETag if enabled
197
- const etag = enableETag ? generateETag(filteredItem) : undefined;
198
- // Check If-None-Match for cache validation (304 Not Modified)
199
- if (enableETag && ifNoneMatch && etag) {
200
- const needsFreshResponse = validateIfNoneMatch(ifNoneMatch, etag);
201
- if (!needsFreshResponse) {
202
- // Return 304 - client's cache is still valid
203
- // In HTTP this would be a 304 response; in RPC we return minimal data
204
- return { data: {}, etag, preferenceApplied: 'return=minimal' };
205
- }
206
- }
207
- return { data: filteredItem, etag };
208
- });
209
- // === COUNT ===
210
- group
211
- .procedure('count')
212
- .handler(async (_input, ctx) => {
213
- // Authorization check using guards (count uses 'count' operation)
214
- await checkAuthorization('count', resourceName, ctx, options);
215
- const count = await resource.count();
216
- return { count };
217
- });
218
- // === HEAD (collection metadata) ===
219
- if (methods.includes('HEAD')) {
220
- group
221
- .procedure('head')
222
- .handler(async (rawInput, ctx) => {
223
- const input = rawInput;
224
- // Authorization check using guards
225
- await checkAuthorization('head', resourceName, ctx, options);
226
- const { limit = 100, offset = 0 } = input;
227
- const total = await resource.count();
228
- return {
229
- total,
230
- page: Math.floor(offset / limit) + 1,
231
- pageSize: limit,
232
- pageCount: Math.ceil(total / limit) || 1,
233
- };
234
- });
235
- // === HEAD Item (single record metadata with ETag) ===
236
- group
237
- .procedure('headItem')
238
- .handler(async (rawInput, ctx) => {
239
- const input = rawInput;
240
- // Authorization check using guards
241
- await checkAuthorization('head', resourceName, ctx, options);
242
- const { id, ifNoneMatch } = input;
243
- const item = await resource.get(id);
244
- if (!item) {
245
- return { exists: false };
246
- }
247
- const filteredItem = filterProtectedFields(item, allProtectedFields);
248
- // Generate ETag if enabled
249
- const etag = enableETag ? generateETag(filteredItem) : undefined;
250
- // Check If-None-Match for cache validation
251
- if (enableETag && ifNoneMatch && etag) {
252
- const needsFreshResponse = validateIfNoneMatch(ifNoneMatch, etag);
253
- if (!needsFreshResponse) {
254
- // Cache is still valid
255
- return { etag, exists: true };
256
- }
257
- }
258
- return { etag, exists: true };
259
- });
260
- }
261
- }
262
- // === OPTIONS ===
263
- if (methods.includes('OPTIONS')) {
264
- group
265
- .procedure('options')
266
- .handler(async (_input, ctx) => {
267
- // Authorization check using guards
268
- await checkAuthorization('options', resourceName, ctx, options);
269
- // Determine which operations are available based on methods config
270
- const availableMethods = [];
271
- if (methods.includes('GET'))
272
- availableMethods.push('GET');
273
- if (methods.includes('POST'))
274
- availableMethods.push('POST');
275
- if (methods.includes('PUT'))
276
- availableMethods.push('PUT');
277
- if (methods.includes('PATCH'))
278
- availableMethods.push('PATCH');
279
- if (methods.includes('DELETE'))
280
- availableMethods.push('DELETE');
281
- if (methods.includes('HEAD'))
282
- availableMethods.push('HEAD');
283
- if (methods.includes('OPTIONS'))
284
- availableMethods.push('OPTIONS');
285
- // Get relation names if resource has relations
286
- const relations = hasRelations(resource) ? getRelationNames(resource) : undefined;
287
- // Build enhanced response
288
- return {
289
- resource: resourceName,
290
- version: resource.version,
291
- methods: availableMethods,
292
- operations: {
293
- list: methods.includes('GET'),
294
- get: methods.includes('GET'),
295
- count: methods.includes('GET'),
296
- create: methods.includes('POST'),
297
- update: methods.includes('PUT'),
298
- patch: methods.includes('PATCH'),
299
- delete: methods.includes('DELETE'),
300
- head: methods.includes('HEAD'),
301
- options: methods.includes('OPTIONS'),
302
- },
303
- features: {
304
- etag: enableETag,
305
- pagination: enablePaginationHeaders,
306
- populate: hasRelations(resource),
307
- guards: !!options.guards,
308
- events: !!(options.onCreated || options.onUpdated || options.onDeleted),
309
- },
310
- relations,
311
- schema: resource.schema?.attributes,
312
- };
313
- });
314
- }
315
- // === CREATE ===
316
- if (methods.includes('POST')) {
317
- group
318
- .procedure('create')
319
- .handler(async (rawInput, ctx) => {
320
- const input = rawInput;
321
- // Authorization check using guards
322
- await checkAuthorization('create', resourceName, ctx, options);
323
- const user = contextToUser(ctx);
324
- const item = await resource.insert(input.data, { user });
325
- const filteredItem = filterProtectedFields(item, allProtectedFields);
326
- // Generate ETag if enabled
327
- const etag = enableETag ? generateETag(filteredItem) : undefined;
328
- // Emit created event
329
- const itemId = String(item.id ?? item._id ?? '');
330
- await emitEvent('created', options, resourceName, itemId, filteredItem, undefined, user);
331
- // Handle Prefer: return=minimal
332
- if (input.preferMinimal) {
333
- return { data: { id: itemId }, etag, preferenceApplied: 'return=minimal' };
334
- }
335
- return { data: filteredItem, etag };
336
- });
337
- }
338
- // === UPDATE (PUT - full replacement) ===
339
- if (methods.includes('PUT')) {
340
- group
341
- .procedure('update')
342
- .handler(async (rawInput, ctx) => {
343
- const input = rawInput;
344
- // Authorization check using guards
345
- await checkAuthorization('update', resourceName, ctx, options);
346
- const { id, data, ifMatch, preferMinimal } = input;
347
- // Check existence
348
- const existing = await resource.get(id);
349
- if (!existing) {
350
- throw Errors.notFound(resourceName, id);
351
- }
352
- const existingFiltered = filterProtectedFields(existing, allProtectedFields);
353
- // Validate If-Match for optimistic concurrency
354
- if (enableETag && ifMatch) {
355
- const currentETag = generateETag(existingFiltered);
356
- if (!validateIfMatch(ifMatch, currentETag)) {
357
- throw Errors.preconditionFailed(`ETag mismatch - record has been modified`);
358
- }
359
- }
360
- const user = contextToUser(ctx);
361
- const updated = await resource.update(id, data, { user });
362
- const filteredItem = filterProtectedFields(updated, allProtectedFields);
363
- // Generate new ETag
364
- const etag = enableETag ? generateETag(filteredItem) : undefined;
365
- // Emit updated event with previous state
366
- await emitEvent('updated', options, resourceName, id, filteredItem, existingFiltered, user);
367
- // Handle Prefer: return=minimal
368
- if (preferMinimal) {
369
- return { data: { id }, etag, preferenceApplied: 'return=minimal' };
370
- }
371
- return { data: filteredItem, etag };
372
- });
373
- }
374
- // === PATCH (partial update) ===
375
- if (methods.includes('PATCH')) {
376
- group
377
- .procedure('patch')
378
- .handler(async (rawInput, ctx) => {
379
- const input = rawInput;
380
- // Authorization check using guards (patch has its own operation)
381
- await checkAuthorization('patch', resourceName, ctx, options);
382
- const { id, data, ifMatch, preferMinimal } = input;
383
- // Check existence and merge
384
- const existing = await resource.get(id);
385
- if (!existing) {
386
- throw Errors.notFound(resourceName, id);
387
- }
388
- const existingFiltered = filterProtectedFields(existing, allProtectedFields);
389
- // Validate If-Match for optimistic concurrency
390
- if (enableETag && ifMatch) {
391
- const currentETag = generateETag(existingFiltered);
392
- if (!validateIfMatch(ifMatch, currentETag)) {
393
- throw Errors.preconditionFailed(`ETag mismatch - record has been modified`);
394
- }
395
- }
396
- const merged = { ...existing, ...data, id };
397
- const user = contextToUser(ctx);
398
- const updated = await resource.update(id, merged, { user });
399
- const filteredItem = filterProtectedFields(updated, allProtectedFields);
400
- // Generate new ETag
401
- const etag = enableETag ? generateETag(filteredItem) : undefined;
402
- // Emit updated event with previous state
403
- await emitEvent('updated', options, resourceName, id, filteredItem, existingFiltered, user);
404
- // Handle Prefer: return=minimal
405
- if (preferMinimal) {
406
- return { data: { id }, etag, preferenceApplied: 'return=minimal' };
407
- }
408
- return { data: filteredItem, etag };
409
- });
410
- }
411
- // === DELETE ===
412
- if (methods.includes('DELETE')) {
413
- group
414
- .procedure('delete')
415
- .handler(async (rawInput, ctx) => {
416
- const input = rawInput;
417
- // Authorization check using guards
418
- await checkAuthorization('delete', resourceName, ctx, options);
419
- const { id, ifMatch } = input;
420
- // Check existence
421
- const existing = await resource.get(id);
422
- if (!existing) {
423
- throw Errors.notFound(resourceName, id);
424
- }
425
- const existingFiltered = filterProtectedFields(existing, allProtectedFields);
426
- // Validate If-Match for optimistic concurrency
427
- if (enableETag && ifMatch) {
428
- const currentETag = generateETag(existingFiltered);
429
- if (!validateIfMatch(ifMatch, currentETag)) {
430
- throw Errors.preconditionFailed(`ETag mismatch - record has been modified`);
431
- }
432
- }
433
- const user = contextToUser(ctx);
434
- await resource.delete(id);
435
- // Emit deleted event with the deleted record
436
- await emitEvent('deleted', options, resourceName, id, undefined, existingFiltered, user);
437
- return { success: true };
438
- });
439
- }
440
- }
441
- /**
442
- * Create a Raffel adapter for s3db.js resources.
443
- *
444
- * This generates RESTful procedures from s3db resources that can be mounted
445
- * on a Raffel server.
446
- *
447
- * @example
448
- * ```typescript
449
- * // Single resource
450
- * const userRoutes = createS3DBAdapter(usersResource, {
451
- * authorize: (op, resource, ctx) => ctx.auth?.authenticated
452
- * })
453
- *
454
- * // Multiple resources
455
- * const routes = createS3DBAdapter([users, posts, comments])
456
- *
457
- * // Use with server
458
- * server.mount('api/v1', userRoutes)
459
- * // Or inline
460
- * const server = createServer({ port: 3000 })
461
- * .enableHttp()
462
- * .mount('api', createS3DBAdapter(users))
463
- * ```
464
- */
465
- export function createS3DBAdapter(resources, options = {}) {
466
- const resourceArray = Array.isArray(resources) ? resources : [resources];
467
- const module = createRouterModule();
468
- for (const resource of resourceArray) {
469
- registerResourceProcedures(module, resource, options);
470
- }
471
- return module;
472
- }
473
- /**
474
- * Create an interceptor that adds s3db resources to the context.
475
- *
476
- * This allows handlers to access resources via `ctx.extensions.s3db`.
477
- *
478
- * @example
479
- * ```typescript
480
- * server.use(createS3DBContextInterceptor({ users, posts }))
481
- *
482
- * // In handler:
483
- * const users = ctx.extensions.s3db.users
484
- * const user = await users.get(input.userId)
485
- * ```
486
- */
487
- export function createS3DBContextInterceptor(resources) {
488
- return async (envelope, _ctx, next) => {
489
- // Add resources to context extensions
490
- const ctx = envelope.context;
491
- const extensions = ctx.extensions;
492
- // Create a symbol key for s3db
493
- const s3dbKey = Symbol.for('raffel.s3db');
494
- extensions.set(s3dbKey, resources);
495
- return next();
496
- };
497
- }
498
- /**
499
- * Helper to generate HTTP path mapping for s3db procedures.
500
- *
501
- * Maps procedure names to RESTful HTTP routes.
502
- *
503
- * @example
504
- * ```typescript
505
- * const paths = generateS3DBHttpPaths('users', '/api/v1')
506
- * // Returns:
507
- * // {
508
- * // '/api/v1/users.list': { method: 'GET', path: '/api/v1/users' },
509
- * // '/api/v1/users.get': { method: 'GET', path: '/api/v1/users/:id' },
510
- * // '/api/v1/users.create': { method: 'POST', path: '/api/v1/users' },
511
- * // '/api/v1/users.update': { method: 'PUT', path: '/api/v1/users/:id' },
512
- * // '/api/v1/users.patch': { method: 'PATCH', path: '/api/v1/users/:id' },
513
- * // '/api/v1/users.delete': { method: 'DELETE', path: '/api/v1/users/:id' },
514
- * // '/api/v1/users.options': { method: 'OPTIONS', path: '/api/v1/users' },
515
- * // '/api/v1/users.head': { method: 'HEAD', path: '/api/v1/users' },
516
- * // '/api/v1/users.headItem': { method: 'HEAD', path: '/api/v1/users/:id' },
517
- * // }
518
- * ```
519
- */
520
- export function generateS3DBHttpPaths(resourceName, basePath = '') {
521
- const prefix = basePath ? `${basePath}.${resourceName}` : resourceName;
522
- const httpPath = basePath ? `${basePath}/${resourceName}` : `/${resourceName}`;
523
- return {
524
- [`${prefix}.list`]: { method: 'GET', path: httpPath },
525
- [`${prefix}.get`]: { method: 'GET', path: `${httpPath}/:id` },
526
- [`${prefix}.count`]: { method: 'GET', path: `${httpPath}/count` },
527
- [`${prefix}.create`]: { method: 'POST', path: httpPath },
528
- [`${prefix}.update`]: { method: 'PUT', path: `${httpPath}/:id` },
529
- [`${prefix}.patch`]: { method: 'PATCH', path: `${httpPath}/:id` },
530
- [`${prefix}.delete`]: { method: 'DELETE', path: `${httpPath}/:id` },
531
- [`${prefix}.options`]: { method: 'OPTIONS', path: httpPath },
532
- [`${prefix}.head`]: { method: 'HEAD', path: httpPath },
533
- [`${prefix}.headItem`]: { method: 'HEAD', path: `${httpPath}/:id` },
534
- };
535
- }
536
- //# sourceMappingURL=adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/s3db/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * S3DB Resource Adapter
3
- *
4
- * Provides integration between s3db.js resources and Raffel's RESTful system.
5
- *
6
- * Features:
7
- * - RESTful CRUD operations (list, get, create, update, patch, delete)
8
- * - ETag support for caching and optimistic concurrency
9
- * - Flexible guards system for authorization (roles, scopes, custom functions)
10
- * - Relations/populate for expanding related records
11
- * - Event callbacks (onCreated, onUpdated, onDeleted)
12
- * - Prefer header support (return=minimal)
13
- * - HEAD endpoints for metadata
14
- * - Enhanced OPTIONS with full resource metadata
15
- */
16
- export { createS3DBAdapter, createS3DBContextInterceptor, generateS3DBHttpPaths, } from './adapter.js';
17
- export type { S3DBResourceLike, S3DBDatabaseLike, S3DBRelationDefinition, S3DBGuardsConfig, S3DBGuardDefinition, S3DBGuardsOptions, Guard, S3DBResourceEvent, S3DBEventCallback, S3DBAdapterOptions, S3DBListInput, S3DBGetInput, S3DBHeadItemInput, S3DBCreateInput, S3DBUpdateInput, S3DBDeleteInput, S3DBListResponse, S3DBSingleResponse, S3DBDeleteResponse, S3DBOptionsResponse, S3DBHeadResponse, } from './types.js';
18
- export { generateETag, validateIfMatch, validateIfNoneMatch, formatLastModified, hasScope, hasRole, hasAnyRole, checkGuard, getOperationGuard, parsePopulate, buildIncludesTree, resolvePopulate, hasRelations, getRelationNames, } from './utils/index.js';
19
- export type { GuardUser, GuardFunction, GuardObject, GuardsConfig, S3DBOperation, PopulateResult, IncludesTree, IncludesNode, } from './utils/index.js';
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAGrB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAEL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAElB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AAEzB,YAAY,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAA"}
@@ -1,25 +0,0 @@
1
- /**
2
- * S3DB Resource Adapter
3
- *
4
- * Provides integration between s3db.js resources and Raffel's RESTful system.
5
- *
6
- * Features:
7
- * - RESTful CRUD operations (list, get, create, update, patch, delete)
8
- * - ETag support for caching and optimistic concurrency
9
- * - Flexible guards system for authorization (roles, scopes, custom functions)
10
- * - Relations/populate for expanding related records
11
- * - Event callbacks (onCreated, onUpdated, onDeleted)
12
- * - Prefer header support (return=minimal)
13
- * - HEAD endpoints for metadata
14
- * - Enhanced OPTIONS with full resource metadata
15
- */
16
- export { createS3DBAdapter, createS3DBContextInterceptor, generateS3DBHttpPaths, } from './adapter.js';
17
- // Utilities (for advanced usage)
18
- export {
19
- // ETag utilities
20
- generateETag, validateIfMatch, validateIfNoneMatch, formatLastModified,
21
- // Guards utilities
22
- hasScope, hasRole, hasAnyRole, checkGuard, getOperationGuard,
23
- // Populate utilities
24
- parsePopulate, buildIncludesTree, resolvePopulate, hasRelations, getRelationNames, } from './utils/index.js';
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/s3db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,cAAc,CAAA;AA2BrB,iCAAiC;AACjC,OAAO;AACL,iBAAiB;AACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,kBAAkB;AAClB,mBAAmB;AACnB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB;AACjB,qBAAqB;AACrB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * S3DB Adapter Tests
3
- */
4
- export {};
5
- //# sourceMappingURL=s3db.int.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"s3db.int.test.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3db/s3db.int.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}