@fragno-dev/core 0.1.7 → 0.1.9

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 (183) hide show
  1. package/.turbo/turbo-build.log +131 -64
  2. package/CHANGELOG.md +19 -0
  3. package/dist/api/api.d.ts +38 -2
  4. package/dist/api/api.d.ts.map +1 -0
  5. package/dist/api/api.js +9 -2
  6. package/dist/api/api.js.map +1 -0
  7. package/dist/api/bind-services.d.ts +6 -0
  8. package/dist/api/bind-services.d.ts.map +1 -0
  9. package/dist/api/bind-services.js +20 -0
  10. package/dist/api/bind-services.js.map +1 -0
  11. package/dist/api/error.d.ts +26 -0
  12. package/dist/api/error.d.ts.map +1 -0
  13. package/dist/{api-DngJDcmO.js → api/error.js} +2 -8
  14. package/dist/api/error.js.map +1 -0
  15. package/dist/api/fragment-definition-builder.d.ts +313 -0
  16. package/dist/api/fragment-definition-builder.d.ts.map +1 -0
  17. package/dist/api/fragment-definition-builder.js +326 -0
  18. package/dist/api/fragment-definition-builder.js.map +1 -0
  19. package/dist/api/fragment-instantiator.d.ts +216 -0
  20. package/dist/api/fragment-instantiator.d.ts.map +1 -0
  21. package/dist/api/fragment-instantiator.js +487 -0
  22. package/dist/api/fragment-instantiator.js.map +1 -0
  23. package/dist/api/fragno-response.d.ts +30 -0
  24. package/dist/api/fragno-response.d.ts.map +1 -0
  25. package/dist/api/fragno-response.js +73 -0
  26. package/dist/api/fragno-response.js.map +1 -0
  27. package/dist/api/internal/path.d.ts +50 -0
  28. package/dist/api/internal/path.d.ts.map +1 -0
  29. package/dist/api/internal/path.js +76 -0
  30. package/dist/api/internal/path.js.map +1 -0
  31. package/dist/api/internal/response-stream.d.ts +43 -0
  32. package/dist/api/internal/response-stream.d.ts.map +1 -0
  33. package/dist/api/internal/response-stream.js +81 -0
  34. package/dist/api/internal/response-stream.js.map +1 -0
  35. package/dist/api/internal/route.js +10 -0
  36. package/dist/api/internal/route.js.map +1 -0
  37. package/dist/api/mutable-request-state.d.ts +82 -0
  38. package/dist/api/mutable-request-state.d.ts.map +1 -0
  39. package/dist/api/mutable-request-state.js +97 -0
  40. package/dist/api/mutable-request-state.js.map +1 -0
  41. package/dist/api/request-context-storage.d.ts +42 -0
  42. package/dist/api/request-context-storage.d.ts.map +1 -0
  43. package/dist/api/request-context-storage.js +43 -0
  44. package/dist/api/request-context-storage.js.map +1 -0
  45. package/dist/api/request-input-context.d.ts +89 -0
  46. package/dist/api/request-input-context.d.ts.map +1 -0
  47. package/dist/api/request-input-context.js +118 -0
  48. package/dist/api/request-input-context.js.map +1 -0
  49. package/dist/api/request-middleware.d.ts +50 -0
  50. package/dist/api/request-middleware.d.ts.map +1 -0
  51. package/dist/api/request-middleware.js +83 -0
  52. package/dist/api/request-middleware.js.map +1 -0
  53. package/dist/api/request-output-context.d.ts +41 -0
  54. package/dist/api/request-output-context.d.ts.map +1 -0
  55. package/dist/api/request-output-context.js +119 -0
  56. package/dist/api/request-output-context.js.map +1 -0
  57. package/dist/api/route-handler-input-options.d.ts +21 -0
  58. package/dist/api/route-handler-input-options.d.ts.map +1 -0
  59. package/dist/api/route.d.ts +54 -3
  60. package/dist/api/route.d.ts.map +1 -0
  61. package/dist/api/route.js +29 -2
  62. package/dist/api/route.js.map +1 -0
  63. package/dist/api/shared-types.d.ts +47 -0
  64. package/dist/api/shared-types.d.ts.map +1 -0
  65. package/dist/api/shared-types.js +1 -0
  66. package/dist/client/client-error.d.ts +60 -0
  67. package/dist/client/client-error.d.ts.map +1 -0
  68. package/dist/client/client-error.js +92 -0
  69. package/dist/client/client-error.js.map +1 -0
  70. package/dist/client/client.d.ts +210 -4
  71. package/dist/client/client.d.ts.map +1 -0
  72. package/dist/client/client.js +397 -6
  73. package/dist/client/client.js.map +1 -0
  74. package/dist/client/client.svelte.d.ts +5 -3
  75. package/dist/client/client.svelte.d.ts.map +1 -1
  76. package/dist/client/client.svelte.js +1 -5
  77. package/dist/client/client.svelte.js.map +1 -1
  78. package/dist/client/internal/fetcher-merge.js +36 -0
  79. package/dist/client/internal/fetcher-merge.js.map +1 -0
  80. package/dist/client/internal/ndjson-streaming.js +139 -0
  81. package/dist/client/internal/ndjson-streaming.js.map +1 -0
  82. package/dist/client/react.d.ts +5 -3
  83. package/dist/client/react.d.ts.map +1 -1
  84. package/dist/client/react.js +3 -5
  85. package/dist/client/react.js.map +1 -1
  86. package/dist/client/solid.d.ts +5 -3
  87. package/dist/client/solid.d.ts.map +1 -1
  88. package/dist/client/solid.js +2 -5
  89. package/dist/client/solid.js.map +1 -1
  90. package/dist/client/vanilla.d.ts +5 -3
  91. package/dist/client/vanilla.d.ts.map +1 -1
  92. package/dist/client/vanilla.js +2 -43
  93. package/dist/client/vanilla.js.map +1 -1
  94. package/dist/client/vue.d.ts +5 -3
  95. package/dist/client/vue.d.ts.map +1 -1
  96. package/dist/client/vue.js +1 -5
  97. package/dist/client/vue.js.map +1 -1
  98. package/dist/http/http-status.d.ts +26 -0
  99. package/dist/http/http-status.d.ts.map +1 -0
  100. package/dist/integrations/react-ssr.js +1 -1
  101. package/dist/internal/symbols.d.ts +9 -0
  102. package/dist/internal/symbols.d.ts.map +1 -0
  103. package/dist/internal/symbols.js +10 -0
  104. package/dist/internal/symbols.js.map +1 -0
  105. package/dist/mod-client.d.ts +36 -0
  106. package/dist/mod-client.d.ts.map +1 -0
  107. package/dist/mod-client.js +21 -0
  108. package/dist/mod-client.js.map +1 -0
  109. package/dist/mod.d.ts +7 -4
  110. package/dist/mod.js +4 -6
  111. package/dist/request/request.d.ts +4 -0
  112. package/dist/request/request.js +5 -0
  113. package/dist/test/test.d.ts +62 -35
  114. package/dist/test/test.d.ts.map +1 -1
  115. package/dist/test/test.js +75 -40
  116. package/dist/test/test.js.map +1 -1
  117. package/dist/util/async.js +40 -0
  118. package/dist/util/async.js.map +1 -0
  119. package/dist/util/content-type.js +49 -0
  120. package/dist/util/content-type.js.map +1 -0
  121. package/dist/util/nanostores.js +31 -0
  122. package/dist/util/nanostores.js.map +1 -0
  123. package/dist/{ssr-BByDVfFD.js → util/ssr.js} +2 -2
  124. package/dist/util/ssr.js.map +1 -0
  125. package/dist/util/types-util.d.ts +8 -0
  126. package/dist/util/types-util.d.ts.map +1 -0
  127. package/package.json +19 -12
  128. package/src/api/api.ts +41 -6
  129. package/src/api/bind-services.ts +42 -0
  130. package/src/api/fragment-definition-builder.extend.test.ts +810 -0
  131. package/src/api/fragment-definition-builder.test.ts +499 -0
  132. package/src/api/fragment-definition-builder.ts +1088 -0
  133. package/src/api/fragment-instantiator.test.ts +1488 -0
  134. package/src/api/fragment-instantiator.ts +1053 -0
  135. package/src/api/fragment-services.test.ts +727 -0
  136. package/src/api/request-context-storage.ts +64 -0
  137. package/src/api/request-middleware.test.ts +301 -225
  138. package/src/api/route.test.ts +87 -1
  139. package/src/api/route.ts +345 -24
  140. package/src/api/shared-types.ts +43 -0
  141. package/src/client/client-builder.test.ts +23 -23
  142. package/src/client/client.ssr.test.ts +3 -3
  143. package/src/client/client.svelte.test.ts +15 -15
  144. package/src/client/client.test.ts +22 -22
  145. package/src/client/client.ts +72 -12
  146. package/src/client/internal/fetcher-merge.ts +1 -1
  147. package/src/client/react.test.ts +2 -2
  148. package/src/client/solid.test.ts +2 -2
  149. package/src/client/vanilla.test.ts +2 -2
  150. package/src/client/vue.test.ts +2 -2
  151. package/src/internal/symbols.ts +5 -0
  152. package/src/mod-client.ts +59 -0
  153. package/src/mod.ts +26 -9
  154. package/src/request/request.ts +8 -0
  155. package/src/test/test.test.ts +200 -381
  156. package/src/test/test.ts +190 -117
  157. package/tsdown.config.ts +8 -5
  158. package/dist/api/fragment-builder.d.ts +0 -4
  159. package/dist/api/fragment-builder.js +0 -3
  160. package/dist/api/fragment-instantiation.d.ts +0 -4
  161. package/dist/api/fragment-instantiation.js +0 -6
  162. package/dist/api-BWN97TOr.d.ts +0 -377
  163. package/dist/api-BWN97TOr.d.ts.map +0 -1
  164. package/dist/api-DngJDcmO.js.map +0 -1
  165. package/dist/client-C5LsYHEI.js +0 -782
  166. package/dist/client-C5LsYHEI.js.map +0 -1
  167. package/dist/fragment-builder-DOnCVBqc.js +0 -47
  168. package/dist/fragment-builder-DOnCVBqc.js.map +0 -1
  169. package/dist/fragment-builder-MGr68GNb.d.ts +0 -409
  170. package/dist/fragment-builder-MGr68GNb.d.ts.map +0 -1
  171. package/dist/fragment-instantiation-C4wvwl6V.js +0 -446
  172. package/dist/fragment-instantiation-C4wvwl6V.js.map +0 -1
  173. package/dist/request-output-context-CdIjwmEN.js +0 -320
  174. package/dist/request-output-context-CdIjwmEN.js.map +0 -1
  175. package/dist/route-Bl9Zr1Yv.d.ts +0 -26
  176. package/dist/route-Bl9Zr1Yv.d.ts.map +0 -1
  177. package/dist/route-C5Uryylh.js +0 -21
  178. package/dist/route-C5Uryylh.js.map +0 -1
  179. package/dist/ssr-BByDVfFD.js.map +0 -1
  180. package/src/api/fragment-builder.ts +0 -80
  181. package/src/api/fragment-instantiation.test.ts +0 -460
  182. package/src/api/fragment-instantiation.ts +0 -499
  183. package/src/api/fragment.test.ts +0 -537
@@ -1,71 +1,138 @@
1
1
 
2
- > @fragno-dev/core@0.1.7 build /home/runner/work/fragno/fragno/packages/fragno
2
+ > @fragno-dev/core@0.1.9 build /home/runner/work/fragno/fragno/packages/fragno
3
3
  > tsdown
4
4
 
5
5
  ℹ tsdown v0.15.12 powered by rolldown v1.0.0-beta.45
6
6
  ℹ Using tsdown config: /home/runner/work/fragno/fragno/packages/fragno/tsdown.config.ts
7
- ℹ entry: src/mod.ts, src/api/api.ts, src/api/fragment-builder.ts, src/api/fragment-instantiation.ts, src/api/route.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/solid.ts, src/client/vanilla.ts, src/client/vue.ts, src/integrations/react-ssr.ts, src/test/test.ts
7
+ ℹ entry: src/mod-client.ts, src/mod.ts, src/api/api.ts, src/api/fragment-definition-builder.ts, src/api/fragment-instantiator.ts, src/api/request-context-storage.ts, src/api/route.ts, src/api/shared-types.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/solid.ts, src/client/vanilla.ts, src/client/vue.ts, src/integrations/react-ssr.ts, src/internal/symbols.ts, src/request/request.ts, src/test/test.ts
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
- ℹ dist/client/client.svelte.js  3.36 kB │ gzip: 1.00 kB
11
- ℹ dist/client/vanilla.js  3.35 kB │ gzip: 1.14 kB
12
- ℹ dist/client/solid.js  3.08 kB │ gzip: 0.99 kB
13
- ℹ dist/client/vue.js  2.92 kB │ gzip: 1.03 kB
14
- ℹ dist/client/react.js  2.53 kB │ gzip: 0.96 kB
15
- ℹ dist/test/test.js  2.15 kB │ gzip: 0.89 kB
16
- ℹ dist/integrations/react-ssr.js  1.27 kB │ gzip: 0.65 kB
17
- ℹ dist/client/client.js  0.75 kB │ gzip: 0.31 kB
18
- ℹ dist/mod.js  0.41 kB │ gzip: 0.22 kB
19
- ℹ dist/api/fragment-instantiation.js  0.28 kB │ gzip: 0.18 kB
20
- ℹ dist/api/api.js  0.17 kB │ gzip: 0.12 kB
21
- ℹ dist/api/route.js  0.17 kB │ gzip: 0.12 kB
22
- ℹ dist/api/fragment-builder.js  0.14 kB │ gzip: 0.11 kB
23
- ℹ dist/client-C5LsYHEI.js.map 79.23 kB │ gzip: 17.92 kB
24
- ℹ dist/fragment-instantiation-C4wvwl6V.js.map 34.58 kB │ gzip: 8.72 kB
25
- ℹ dist/client-C5LsYHEI.js 27.59 kB │ gzip: 7.01 kB
26
- ℹ dist/request-output-context-CdIjwmEN.js.map 20.33 kB │ gzip: 5.85 kB
27
- ℹ dist/fragment-builder-MGr68GNb.d.ts.map 17.88 kB │ gzip: 6.82 kB
28
- ℹ dist/client/vanilla.js.map 12.96 kB │ gzip: 3.58 kB
29
- ℹ dist/fragment-instantiation-C4wvwl6V.js 12.96 kB │ gzip: 3.69 kB
30
- ℹ dist/client/client.svelte.js.map 11.35 kB │ gzip: 2.76 kB
31
- ℹ dist/client/solid.js.map 11.01 kB │ gzip: 2.79 kB
32
- ℹ dist/client/vue.js.map 10.13 kB │ gzip: 2.79 kB
33
- ℹ dist/api-BWN97TOr.d.ts.map  9.70 kB │ gzip: 3.73 kB
34
- ℹ dist/client/react.js.map  9.54 kB │ gzip: 3.03 kB
35
- ℹ dist/request-output-context-CdIjwmEN.js  8.57 kB │ gzip: 2.53 kB
36
- ℹ dist/test/test.js.map  5.97 kB │ gzip: 1.90 kB
37
- ℹ dist/api-DngJDcmO.js.map  5.62 kB │ gzip: 1.59 kB
38
- ℹ dist/route-C5Uryylh.js.map  4.94 kB │ gzip: 1.31 kB
39
- ℹ dist/fragment-builder-DOnCVBqc.js.map  3.50 kB │ gzip: 1.03 kB
40
- ℹ dist/ssr-BByDVfFD.js.map  2.96 kB │ gzip: 1.25 kB
41
- ℹ dist/client/vanilla.d.ts.map  2.90 kB │ gzip: 1.07 kB
42
- ℹ dist/client/react.d.ts.map  2.81 kB │ gzip: 1.20 kB
43
- ℹ dist/client/solid.d.ts.map  2.62 kB │ gzip: 1.09 kB
44
- ℹ dist/client/client.svelte.d.ts.map  2.52 kB │ gzip: 1.02 kB
45
- ℹ dist/route-Bl9Zr1Yv.d.ts.map  2.32 kB │ gzip: 1.02 kB
46
- ℹ dist/client/vue.d.ts.map  2.30 kB │ gzip: 0.97 kB
47
- ℹ dist/test/test.d.ts.map  1.67 kB │ gzip: 0.74 kB
48
- ℹ dist/integrations/react-ssr.js.map  1.65 kB │ gzip: 0.84 kB
49
- ℹ dist/ssr-BByDVfFD.js  1.38 kB │ gzip: 0.61 kB
50
- ℹ dist/fragment-builder-DOnCVBqc.js  1.09 kB │ gzip: 0.42 kB
51
- ℹ dist/api-DngJDcmO.js  1.08 kB │ gzip: 0.43 kB
52
- ℹ dist/route-C5Uryylh.js  0.55 kB │ gzip: 0.30 kB
53
- ℹ dist/integrations/react-ssr.d.ts.map  0.23 kB │ gzip: 0.17 kB
54
- ℹ dist/client/vanilla.d.ts  3.67 kB │ gzip: 1.07 kB
55
- ℹ dist/client/react.d.ts  3.47 kB │ gzip: 1.22 kB
56
- ℹ dist/test/test.d.ts  3.46 kB │ gzip: 1.23 kB
57
- ℹ dist/client/solid.d.ts  3.12 kB │ gzip: 0.99 kB
58
- ℹ dist/client/client.svelte.d.ts  2.86 kB │ gzip: 0.86 kB
59
- ℹ dist/client/vue.d.ts  2.79 kB │ gzip: 0.94 kB
60
- ℹ dist/client/client.d.ts  1.46 kB │ gzip: 0.50 kB
61
- ℹ dist/mod.d.ts  0.85 kB │ gzip: 0.32 kB
62
- ℹ dist/integrations/react-ssr.d.ts  0.78 kB │ gzip: 0.38 kB
63
- ℹ dist/api/fragment-instantiation.d.ts  0.55 kB │ gzip: 0.24 kB
64
- ℹ dist/api/route.d.ts  0.42 kB │ gzip: 0.20 kB
65
- ℹ dist/api/api.d.ts  0.36 kB │ gzip: 0.20 kB
66
- ℹ dist/api/fragment-builder.d.ts  0.24 kB │ gzip: 0.16 kB
67
- ℹ dist/fragment-builder-MGr68GNb.d.ts 23.32 kB │ gzip: 5.18 kB
68
- ℹ dist/api-BWN97TOr.d.ts 15.22 kB │ gzip: 4.27 kB
69
- ℹ dist/route-Bl9Zr1Yv.d.ts  2.90 kB │ gzip: 0.73 kB
70
- ℹ 60 files, total: 397.99 kB
71
- ✔ Build complete in 9800ms
10
+ ℹ dist/api/fragment-instantiator.js 15.40 kB │ gzip: 3.87 kB
11
+ ℹ dist/client/client.js 14.56 kB │ gzip: 3.65 kB
12
+ ℹ dist/api/fragment-definition-builder.js 11.14 kB │ gzip: 2.26 kB
13
+ ℹ dist/test/test.js  3.67 kB │ gzip: 1.31 kB
14
+ ℹ dist/client/client.svelte.js  3.20 kB │ gzip: 0.91 kB
15
+ ℹ dist/client/solid.js  2.95 kB │ gzip: 0.91 kB
16
+ ℹ dist/client/vue.js  2.77 kB │ gzip: 0.95 kB
17
+ ℹ dist/client/react.js  2.43 kB │ gzip: 0.89 kB
18
+ ℹ dist/client/vanilla.js  2.15 kB │ gzip: 0.66 kB
19
+ ℹ dist/api/request-context-storage.js  1.49 kB │ gzip: 0.75 kB
20
+ ℹ dist/integrations/react-ssr.js  1.26 kB │ gzip: 0.64 kB
21
+ ℹ dist/mod-client.js  0.93 kB │ gzip: 0.35 kB
22
+ ℹ dist/api/route.js  0.67 kB │ gzip: 0.34 kB
23
+ ℹ dist/request/request.js  0.37 kB │ gzip: 0.13 kB
24
+ ℹ dist/mod.js  0.31 kB │ gzip: 0.15 kB
25
+ ℹ dist/internal/symbols.js  0.31 kB │ gzip: 0.22 kB
26
+ ℹ dist/api/api.js  0.25 kB │ gzip: 0.17 kB
27
+ ℹ dist/api/shared-types.js  0.01 kB │ gzip: 0.03 kB
28
+ ℹ dist/client/client.js.map 43.95 kB │ gzip: 9.78 kB
29
+ ℹ dist/api/fragment-instantiator.js.map 42.32 kB │ gzip: 9.96 kB
30
+ ℹ dist/api/fragment-definition-builder.js.map 36.28 kB │ gzip: 5.69 kB
31
+ ℹ dist/api/route.js.map 14.01 kB │ gzip: 2.38 kB
32
+ ℹ dist/api/internal/path.js.map 11.83 kB │ gzip: 3.06 kB
33
+ ℹ dist/client/client.svelte.js.map 11.35 kB │ gzip: 2.76 kB
34
+ ℹ dist/client/solid.js.map 11.00 kB │ gzip: 2.79 kB
35
+ ℹ dist/client/internal/ndjson-streaming.js.map 10.96 kB │ gzip: 3.00 kB
36
+ ℹ dist/client/vue.js.map 10.13 kB │ gzip: 2.78 kB
37
+ ℹ dist/client/client.d.ts.map 10.13 kB │ gzip: 3.72 kB
38
+ ℹ dist/client/react.js.map  9.54 kB │ gzip: 3.03 kB
39
+ ℹ dist/client/vanilla.js.map  9.20 kB │ gzip: 2.32 kB
40
+ ℹ dist/api/fragment-definition-builder.d.ts.map  8.65 kB │ gzip: 3.40 kB
41
+ ℹ dist/test/test.js.map  8.55 kB │ gzip: 2.44 kB
42
+ ℹ dist/api/request-input-context.js.map  8.29 kB │ gzip: 2.40 kB
43
+ ℹ dist/api/request-output-context.js.map  7.53 kB │ gzip: 2.29 kB
44
+ ℹ dist/api/fragment-instantiator.d.ts.map  7.27 kB │ gzip: 2.77 kB
45
+ ℹ dist/client/client-error.js.map  5.88 kB │ gzip: 1.70 kB
46
+ ℹ dist/api/route.d.ts.map  5.72 kB │ gzip: 2.19 kB
47
+ ℹ dist/api/request-middleware.js.map  5.67 kB │ gzip: 1.97 kB
48
+ ℹ dist/client/internal/ndjson-streaming.js  4.96 kB │ gzip: 1.46 kB
49
+ ℹ dist/api/api.js.map  4.30 kB │ gzip: 1.08 kB
50
+ ℹ dist/api/internal/response-stream.js.map  4.28 kB │ gzip: 1.80 kB
51
+ ℹ dist/api/fragno-response.js.map  4.18 kB │ gzip: 1.47 kB
52
+ ℹ dist/util/async.js.map  3.84 kB │ gzip: 1.53 kB
53
+ ℹ dist/api/mutable-request-state.js.map  3.76 kB │ gzip: 1.34 kB
54
+ ℹ dist/api/request-output-context.js  3.38 kB │ gzip: 1.02 kB
55
+ ℹ dist/api/request-input-context.js  3.34 kB │ gzip: 1.10 kB
56
+ ℹ dist/util/content-type.js.map  3.24 kB │ gzip: 1.23 kB
57
+ ℹ dist/client/client-error.js  3.17 kB │ gzip: 0.91 kB
58
+ ℹ dist/util/ssr.js.map  2.95 kB │ gzip: 1.24 kB
59
+ ℹ dist/api/request-context-storage.js.map  2.94 kB │ gzip: 1.21 kB
60
+ ℹ dist/client/vanilla.d.ts.map  2.89 kB │ gzip: 1.10 kB
61
+ ℹ dist/mod-client.js.map  2.80 kB │ gzip: 0.83 kB
62
+ ℹ dist/client/react.d.ts.map  2.64 kB │ gzip: 1.17 kB
63
+ ℹ dist/client/solid.d.ts.map  2.44 kB │ gzip: 1.06 kB
64
+ ℹ dist/client/internal/fetcher-merge.js.map  2.44 kB │ gzip: 0.96 kB
65
+ ℹ dist/util/nanostores.js.map  2.43 kB │ gzip: 0.87 kB
66
+ ℹ dist/api/mutable-request-state.js  2.40 kB │ gzip: 0.91 kB
67
+ ℹ dist/client/client.svelte.d.ts.map  2.32 kB │ gzip: 0.97 kB
68
+ ℹ dist/api/internal/path.js  2.23 kB │ gzip: 0.79 kB
69
+ ℹ dist/api/request-middleware.js  2.17 kB │ gzip: 0.79 kB
70
+ ℹ dist/client/vue.d.ts.map  2.14 kB │ gzip: 0.94 kB
71
+ ℹ dist/api/api.d.ts.map  1.96 kB │ gzip: 0.88 kB
72
+ ℹ dist/api/error.js.map  1.96 kB │ gzip: 0.76 kB
73
+ ℹ dist/api/bind-services.js.map  1.96 kB │ gzip: 0.85 kB
74
+ ℹ dist/api/internal/response-stream.js  1.76 kB │ gzip: 0.73 kB
75
+ ℹ dist/integrations/react-ssr.js.map  1.65 kB │ gzip: 0.84 kB
76
+ ℹ dist/api/fragno-response.js  1.65 kB │ gzip: 0.69 kB
77
+ ℹ dist/util/content-type.js  1.61 kB │ gzip: 0.69 kB
78
+ ℹ dist/api/internal/path.d.ts.map  1.58 kB │ gzip: 0.72 kB
79
+ ℹ dist/api/request-input-context.d.ts.map  1.55 kB │ gzip: 0.69 kB
80
+ ℹ dist/api/request-middleware.d.ts.map  1.51 kB │ gzip: 0.70 kB
81
+ ℹ dist/util/ssr.js  1.34 kB │ gzip: 0.59 kB
82
+ ℹ dist/api/request-output-context.d.ts.map  1.29 kB │ gzip: 0.60 kB
83
+ ℹ dist/client/client-error.d.ts.map  1.26 kB │ gzip: 0.55 kB
84
+ ℹ dist/util/nanostores.js  1.25 kB │ gzip: 0.47 kB
85
+ ℹ dist/client/internal/fetcher-merge.js  1.23 kB │ gzip: 0.55 kB
86
+ ℹ dist/util/async.js  1.19 kB │ gzip: 0.57 kB
87
+ ℹ dist/test/test.d.ts.map  1.07 kB │ gzip: 0.55 kB
88
+ ℹ dist/api/error.js  0.96 kB │ gzip: 0.38 kB
89
+ ℹ dist/api/bind-services.js  0.79 kB │ gzip: 0.40 kB
90
+ ℹ dist/api/error.d.ts.map  0.58 kB │ gzip: 0.29 kB
91
+ ℹ dist/http/http-status.d.ts.map  0.56 kB │ gzip: 0.25 kB
92
+ ℹ dist/api/request-context-storage.d.ts.map  0.56 kB │ gzip: 0.31 kB
93
+ ℹ dist/api/route-handler-input-options.d.ts.map  0.54 kB │ gzip: 0.29 kB
94
+ ℹ dist/api/internal/route.js.map  0.50 kB │ gzip: 0.32 kB
95
+ ℹ dist/api/bind-services.d.ts.map  0.47 kB │ gzip: 0.28 kB
96
+ ℹ dist/api/internal/response-stream.d.ts.map  0.37 kB │ gzip: 0.26 kB
97
+ ℹ dist/api/fragno-response.d.ts.map  0.37 kB │ gzip: 0.23 kB
98
+ ℹ dist/internal/symbols.js.map  0.35 kB │ gzip: 0.26 kB
99
+ ℹ dist/api/shared-types.d.ts.map  0.31 kB │ gzip: 0.23 kB
100
+ ℹ dist/api/internal/route.js  0.28 kB │ gzip: 0.20 kB
101
+ ℹ dist/api/mutable-request-state.d.ts.map  0.28 kB │ gzip: 0.19 kB
102
+ ℹ dist/integrations/react-ssr.d.ts.map  0.23 kB │ gzip: 0.17 kB
103
+ ℹ dist/util/types-util.d.ts.map  0.21 kB │ gzip: 0.17 kB
104
+ ℹ dist/mod-client.d.ts.map  0.17 kB │ gzip: 0.14 kB
105
+ ℹ dist/internal/symbols.d.ts.map  0.14 kB │ gzip: 0.13 kB
106
+ ℹ dist/api/fragment-definition-builder.d.ts 16.64 kB │ gzip: 3.28 kB
107
+ ℹ dist/client/client.d.ts 13.77 kB │ gzip: 3.10 kB
108
+ ℹ dist/api/fragment-instantiator.d.ts 11.30 kB │ gzip: 2.63 kB
109
+ ℹ dist/api/route.d.ts  7.03 kB │ gzip: 1.09 kB
110
+ ℹ dist/test/test.d.ts  5.09 kB │ gzip: 1.52 kB
111
+ ℹ dist/client/vanilla.d.ts  3.70 kB │ gzip: 1.04 kB
112
+ ℹ dist/client/react.d.ts  3.48 kB │ gzip: 1.17 kB
113
+ ℹ dist/client/solid.d.ts  3.14 kB │ gzip: 0.95 kB
114
+ ℹ dist/api/api.d.ts  3.08 kB │ gzip: 0.86 kB
115
+ ℹ dist/client/client.svelte.d.ts  2.88 kB │ gzip: 0.81 kB
116
+ ℹ dist/client/vue.d.ts  2.82 kB │ gzip: 0.91 kB
117
+ ℹ dist/api/request-context-storage.d.ts  1.79 kB │ gzip: 0.80 kB
118
+ ℹ dist/mod-client.d.ts  1.62 kB │ gzip: 0.51 kB
119
+ ℹ dist/api/shared-types.d.ts  1.21 kB │ gzip: 0.51 kB
120
+ ℹ dist/mod.d.ts  1.10 kB │ gzip: 0.34 kB
121
+ ℹ dist/integrations/react-ssr.d.ts  0.78 kB │ gzip: 0.38 kB
122
+ ℹ dist/request/request.d.ts  0.48 kB │ gzip: 0.17 kB
123
+ ℹ dist/internal/symbols.d.ts  0.32 kB │ gzip: 0.22 kB
124
+ ℹ dist/api/request-input-context.d.ts  3.08 kB │ gzip: 0.98 kB
125
+ ℹ dist/api/internal/path.d.ts  2.91 kB │ gzip: 0.97 kB
126
+ ℹ dist/api/request-middleware.d.ts  2.54 kB │ gzip: 0.90 kB
127
+ ℹ dist/client/client-error.d.ts  2.45 kB │ gzip: 0.81 kB
128
+ ℹ dist/api/mutable-request-state.d.ts  2.29 kB │ gzip: 0.90 kB
129
+ ℹ dist/api/request-output-context.d.ts  1.64 kB │ gzip: 0.64 kB
130
+ ℹ dist/api/internal/response-stream.d.ts  1.33 kB │ gzip: 0.71 kB
131
+ ℹ dist/http/http-status.d.ts  1.26 kB │ gzip: 0.60 kB
132
+ ℹ dist/api/route-handler-input-options.d.ts  0.72 kB │ gzip: 0.38 kB
133
+ ℹ dist/api/error.d.ts  0.72 kB │ gzip: 0.33 kB
134
+ ℹ dist/api/fragno-response.d.ts  0.60 kB │ gzip: 0.30 kB
135
+ ℹ dist/api/bind-services.d.ts  0.42 kB │ gzip: 0.25 kB
136
+ ℹ dist/util/types-util.d.ts  0.35 kB │ gzip: 0.23 kB
137
+ ℹ 127 files, total: 547.44 kB
138
+ ✔ Build complete in 12289ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @fragno-dev/core
2
2
 
3
+ ## 0.1.9
4
+
5
+ ### Patch Changes
6
+
7
+ - e848208: feat: restrict Unit of Work in service contexts
8
+ - 7276378: feat: add providesPrivateService method to Fragment definition
9
+
10
+ This allows the Fragment author to define private services that are only accessible within the
11
+ Fragment's own code.
12
+
13
+ - 5ea24d2: refactor: improve Fragment builder and instatiator
14
+ - f22c503: fix: make unit of work available in middleware
15
+
16
+ ## 0.1.8
17
+
18
+ ### Patch Changes
19
+
20
+ - acb0877: feat: add instantiateFragment helper function
21
+
3
22
  ## 0.1.7
4
23
 
5
24
  ### Patch Changes
package/dist/api/api.d.ts CHANGED
@@ -1,2 +1,38 @@
1
- import { a as addRoute, c as FragnoApiValidationError, i as ValidPath, n as HTTPMethod, o as RouteHandlerInputOptions, r as NonGetHTTPMethod, s as FragnoApiError, t as FragnoRouteConfig } from "../api-BWN97TOr.js";
2
- export { FragnoApiError, FragnoApiValidationError, FragnoRouteConfig, HTTPMethod, NonGetHTTPMethod, RouteHandlerInputOptions, ValidPath, addRoute };
1
+ import { RequestInputContext } from "./request-input-context.js";
2
+ import { RequestOutputContext } from "./request-output-context.js";
3
+ import { FragnoApiError, FragnoApiValidationError } from "./error.js";
4
+ import { RouteHandlerInputOptions } from "./route-handler-input-options.js";
5
+ import { FragnoPublicConfig } from "./shared-types.js";
6
+ import { StandardSchemaV1 } from "@standard-schema/spec";
7
+
8
+ //#region src/api/api.d.ts
9
+ type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
10
+ type NonGetHTTPMethod = Exclude<HTTPMethod, "GET">;
11
+ type PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];
12
+ /**
13
+ * A valid path string that:
14
+ * - Is non-empty
15
+ * - Starts with "/"
16
+ * - Is not just "/"
17
+ * - Does not end with "/"
18
+ */
19
+ type ValidPath<T extends string = string> = T extends `/${infer Rest}` ? Rest extends "" ? PathError<T, "Path cannot be just '/'."> : T extends `${string}/` ? PathError<T, "Path cannot end with '/'."> : T : PathError<T, "Path must start with '/'.">;
20
+ interface RequestThisContext {}
21
+ interface FragnoRouteConfig<TMethod extends HTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string, TThisContext extends RequestThisContext = RequestThisContext> {
22
+ method: TMethod;
23
+ path: TPath;
24
+ inputSchema?: TInputSchema;
25
+ outputSchema?: TOutputSchema;
26
+ errorCodes?: readonly TErrorCode[];
27
+ queryParameters?: readonly TQueryParameters[];
28
+ handler(this: TThisContext, inputCtx: RequestInputContext<TPath, TInputSchema>, outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>): Promise<Response>;
29
+ }
30
+ declare function addRoute<TMethod extends HTTPMethod, TPath extends string, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string, TThisContext extends RequestThisContext = RequestThisContext>(route: FragnoRouteConfig<TMethod, ValidPath<TPath>, undefined, TOutputSchema, TErrorCode, TQueryParameters, TThisContext> & {
31
+ inputSchema?: undefined;
32
+ }): FragnoRouteConfig<TMethod, TPath, undefined, TOutputSchema, TErrorCode, TQueryParameters, TThisContext>;
33
+ declare function addRoute<TMethod extends HTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string, TThisContext extends RequestThisContext = RequestThisContext>(route: FragnoRouteConfig<TMethod, ValidPath<TPath>, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters, TThisContext> & {
34
+ inputSchema: TInputSchema;
35
+ }): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters, TThisContext>;
36
+ //#endregion
37
+ export { FragnoApiError, FragnoApiValidationError, type FragnoPublicConfig, FragnoRouteConfig, HTTPMethod, NonGetHTTPMethod, RequestThisContext, type RouteHandlerInputOptions, ValidPath, addRoute };
38
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAIY,UAAA;KACA,gBAAA,GAAmB,QAAQ;KAGlC,uDAAuD,eAAe;;;AAJ3E;AACA;AAA0D;AAY1D;;AACI,KADQ,SACR,CAAA,UAAA,MAAA,GAAA,MAAA,CAAA,GAD+C,CAC/C,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,IAAA,SAAA,EAAA,GACE,SADF,CACY,CADZ,EAAA,0BAAA,CAAA,GAEE,CAFF,SAAA,GAAA,MAAA,GAAA,GAGI,SAHJ,CAGc,CAHd,EAAA,2BAAA,CAAA,GAII,CAJJ,GAKA,SALA,CAKU,CALV,EAAA,2BAAA,CAAA;AACY,UAMC,kBAAA,CAND;AACV,UAOW,iBAPX,CAAA,gBAQY,UARZ,EAAA,cAAA,MAAA,EAAA,qBAUiB,gBAVjB,GAAA,SAAA,EAAA,sBAWkB,gBAXlB,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBAciB,kBAdjB,GAcsC,kBAdtC,CAAA,CAAA;EACY,MAAA,EAeR,OAfQ;EAAV,IAAA,EAgBA,KAhBA;EACA,WAAA,CAAA,EAgBQ,YAhBR;EACM,YAAA,CAAA,EAgBG,aAhBH;EAAV,UAAA,CAAA,EAAA,SAiBoB,UAjBpB,EAAA;EAAS,eAAA,CAAA,EAAA,SAkBgB,gBAlBhB,EAAA;EAEI,OAAA,CAAA,IAAA,EAkBP,YAlByB,EAAA,QAAA,EAmBrB,mBAnBqB,CAmBD,KAnBC,EAmBM,YAnBN,CAAA,EAAA,SAAA,EAoBpB,oBApBoB,CAoBC,aApBD,EAoBgB,UApBhB,CAAA,CAAA,EAqB9B,OArB8B,CAqBtB,QArBsB,CAAA;AAEnC;AACkB,iBAsBF,QAtBE,CAAA,gBAuBA,UAvBA,EAAA,cAAA,MAAA,EAAA,sBAyBM,gBAzBN,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBA4BK,kBA5BL,GA4B0B,kBA5B1B,CAAA,CAAA,KAAA,EA8BT,iBA9BS,CA+Bd,OA/Bc,EAgCd,SAhCc,CAgCJ,KAhCI,CAAA,EAAA,SAAA,EAkCd,aAlCc,EAmCd,UAnCc,EAoCd,gBApCc,EAqCd,YArCc,CAAA,GAAA;EAEK,WAAA,CAAA,EAAA,SAAA;CACC,CAAA,EAoCrB,iBApCqB,CAqCtB,OArCsB,EAsCtB,KAtCsB,EAAA,SAAA,EAwCtB,aAxCsB,EAyCtB,UAzCsB,EA0CtB,gBA1CsB,EA2CtB,YA3CsB,CAAA;AAGD,iBA4CP,QA5CO,CAAA,gBA6CL,UA7CK,EAAA,cAAA,MAAA,EAAA,qBA+CA,gBA/CA,EAAA,sBAgDC,gBAhDD,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBAmDA,kBAnDA,GAmDqB,kBAnDrB,CAAA,CAAA,KAAA,EAqDd,iBArDc,CAsDnB,OAtDmB,EAuDnB,SAvDmB,CAuDT,KAvDS,CAAA,EAwDnB,YAxDmB,EAyDnB,aAzDmB,EA0DnB,UA1DmB,EA2DnB,gBA3DmB,EA4DnB,YA5DmB,CAAA,GAAA;EAAqB,WAAA,EA8D3B,YA9D2B;CAElC,CAAA,EA8DP,iBA9DO,CA+DR,OA/DQ,EAgER,KAhEQ,EAiER,YAjEQ,EAkER,aAlEQ,EAmER,UAnEQ,EAoER,gBApEQ,EAqER,YArEQ,CAAA"}
package/dist/api/api.js CHANGED
@@ -1,3 +1,10 @@
1
- import { n as FragnoApiError, r as FragnoApiValidationError, t as addRoute } from "../api-DngJDcmO.js";
1
+ import { FragnoApiError, FragnoApiValidationError } from "./error.js";
2
2
 
3
- export { FragnoApiError, FragnoApiValidationError, addRoute };
3
+ //#region src/api/api.ts
4
+ function addRoute(route) {
5
+ return route;
6
+ }
7
+
8
+ //#endregion
9
+ export { FragnoApiError, FragnoApiValidationError, addRoute };
10
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { RequestInputContext } from \"./request-input-context\";\nimport type { RequestOutputContext } from \"./request-output-context\";\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\" | \"OPTIONS\";\nexport type NonGetHTTPMethod = Exclude<HTTPMethod, \"GET\">;\n\n// Helper type to create branded error messages that are still assignable to string\ntype PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];\n\n/**\n * A valid path string that:\n * - Is non-empty\n * - Starts with \"/\"\n * - Is not just \"/\"\n * - Does not end with \"/\"\n */\nexport type ValidPath<T extends string = string> = T extends `/${infer Rest}`\n ? Rest extends \"\"\n ? PathError<T, \"Path cannot be just '/'.\"> // Excludes \"/\"\n : T extends `${string}/`\n ? PathError<T, \"Path cannot end with '/'.\"> // Excludes paths ending with \"/\"\n : T\n : PathError<T, \"Path must start with '/'.\">; // Excludes paths not starting with \"/\"\n\nexport interface RequestThisContext {}\n\nexport interface FragnoRouteConfig<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n> {\n method: TMethod;\n path: TPath;\n inputSchema?: TInputSchema;\n outputSchema?: TOutputSchema;\n errorCodes?: readonly TErrorCode[];\n queryParameters?: readonly TQueryParameters[];\n handler(\n this: TThisContext,\n inputCtx: RequestInputContext<TPath, TInputSchema>,\n outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>,\n ): Promise<Response>;\n}\n\n// Overload for routes without inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & { inputSchema?: undefined },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Overload for routes with inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & {\n inputSchema: TInputSchema;\n },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Implementation\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n >,\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n> {\n return route;\n}\n\nexport { FragnoApiError, FragnoApiValidationError } from \"./error\";\nexport type { RouteHandlerInputOptions } from \"./route-handler-input-options\";\nexport type { FragnoPublicConfig } from \"./shared-types\";\n"],"mappings":";;;AA6GA,SAAgB,SASd,OAiBA;AACA,QAAO"}
@@ -0,0 +1,6 @@
1
+ //#region src/api/bind-services.d.ts
2
+ type OmitThisParameter<T> = T extends ((this: infer _This, ...args: infer A) => infer R) ? (...args: A) => R : T;
3
+ type BoundServices<T> = { [K in keyof T]: T[K] extends ((...args: never[]) => unknown) ? OmitThisParameter<T[K]> : T[K] extends Record<string, unknown> ? BoundServices<T[K]> : T[K] };
4
+ //#endregion
5
+ export { BoundServices };
6
+ //# sourceMappingURL=bind-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bind-services.d.ts","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":[],"mappings":";KACK,uBAAuB,yEACd,MAAM,IAChB;AAFC,KAKO,aALU,CAAA,CAAA,CAAA,GAAA,QAAM,MAMd,CANc,GAMV,CANU,CAMR,CANQ,CAAA,UAAA,CAAA,GAAA,IAAA,EAAA,KAAA,EAAA,EAAA,GAAA,OAAA,IAOtB,iBAPsB,CAOJ,CAPI,CAOF,CAPE,CAAA,CAAA,GAQtB,CARsB,CAQpB,CARoB,CAAA,SAQT,MARS,CAAA,MAAA,EAAA,OAAA,CAAA,GASpB,aAToB,CASN,CATM,CASJ,CATI,CAAA,CAAA,GAUpB,CAVoB,CAUlB,CAVkB,CAAA,EACd"}
@@ -0,0 +1,20 @@
1
+ //#region src/api/bind-services.ts
2
+ /**
3
+ * Bind all functions in a service object to a specific context.
4
+ * This allows services to use `this` to access the context.
5
+ *
6
+ * @param services - The service object to bind
7
+ * @param context - The context to bind to (e.g., { getUnitOfWork })
8
+ * @returns A new object with all functions bound to the context
9
+ */
10
+ function bindServicesToContext(services, context) {
11
+ const bound = {};
12
+ for (const [key, value] of Object.entries(services)) if (typeof value === "function") bound[key] = value.bind(context);
13
+ else if (value && typeof value === "object" && !Array.isArray(value)) bound[key] = bindServicesToContext(value, context);
14
+ else bound[key] = value;
15
+ return bound;
16
+ }
17
+
18
+ //#endregion
19
+ export { bindServicesToContext };
20
+ //# sourceMappingURL=bind-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bind-services.js","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":["// Type helper to remove 'this' parameter from functions\ntype OmitThisParameter<T> = T extends (this: infer _This, ...args: infer A) => infer R\n ? (...args: A) => R\n : T;\n\n// Recursively remove 'this' parameter from all functions in an object\nexport type BoundServices<T> = {\n [K in keyof T]: T[K] extends (...args: never[]) => unknown\n ? OmitThisParameter<T[K]>\n : T[K] extends Record<string, unknown>\n ? BoundServices<T[K]>\n : T[K];\n};\n\n/**\n * Bind all functions in a service object to a specific context.\n * This allows services to use `this` to access the context.\n *\n * @param services - The service object to bind\n * @param context - The context to bind to (e.g., { getUnitOfWork })\n * @returns A new object with all functions bound to the context\n */\nexport function bindServicesToContext<T extends object, TContext extends object>(\n services: T,\n context: TContext,\n): BoundServices<T> {\n const bound = {} as BoundServices<T>;\n\n for (const [key, value] of Object.entries(services)) {\n if (typeof value === \"function\") {\n // Bind function to the provided context\n bound[key as keyof T] = value.bind(context) as BoundServices<T>[keyof T];\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n // Recursively bind nested service objects\n bound[key as keyof T] = bindServicesToContext(value, context) as BoundServices<T>[keyof T];\n } else {\n bound[key as keyof T] = value as BoundServices<T>[keyof T];\n }\n }\n\n return bound;\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAgB,sBACd,UACA,SACkB;CAClB,MAAM,QAAQ,EAAE;AAEhB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,CACjD,KAAI,OAAO,UAAU,WAEnB,OAAM,OAAkB,MAAM,KAAK,QAAQ;UAClC,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,CAEpE,OAAM,OAAkB,sBAAsB,OAAO,QAAQ;KAE7D,OAAM,OAAkB;AAI5B,QAAO"}
@@ -0,0 +1,26 @@
1
+ import { StatusCode } from "../http/http-status.js";
2
+ import { StandardSchemaV1 } from "@standard-schema/spec";
3
+
4
+ //#region src/api/error.d.ts
5
+ declare class FragnoApiError extends Error {
6
+ #private;
7
+ constructor({
8
+ message,
9
+ code
10
+ }: {
11
+ message: string;
12
+ code: string;
13
+ }, status: StatusCode);
14
+ get status(): StatusCode;
15
+ get code(): string;
16
+ toResponse(): Response;
17
+ }
18
+ declare class FragnoApiValidationError extends FragnoApiError {
19
+ #private;
20
+ constructor(message: string, issues: readonly StandardSchemaV1.Issue[]);
21
+ get issues(): readonly StandardSchemaV1.Issue[];
22
+ toResponse(): Response;
23
+ }
24
+ //#endregion
25
+ export { FragnoApiError, FragnoApiValidationError };
26
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","names":[],"sources":["../../src/api/error.ts"],"sourcesContent":[],"mappings":";;;;cAGa,cAAA,SAAuB,KAAA;;EAAvB,WAAA,CAAA;IAAA,OAAe;IAAA;EAIgD,CAJhD,EAAA;IAIZ,OAAA,EAAA,MAAA;IAAS,IAAA,EAAA,MAAA;EAAmD,CAAA,EAAA,MAAA,EAAA,UAAA;EAOhE,IAAA,MAAA,CAAA,CAAA,EAAA,UAAA;EAQA,IAAA,IAAA,CAAA,CAAA,EAAA,MAAA;EAnBwB,UAAA,CAAA,CAAA,EAmBxB,QAnBwB;;AAwBvB,cAAA,wBAAA,SAAiC,cAAA,CAAR;EAGU,CAAA,OAAA;EAMpC,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SANoC,gBAAA,CAAiB,KAMrD,EAAA;EAIS,IAAA,MAAA,CAAA,CAAA,EAAA,SAJT,gBAAA,CAAA,KAIS,EAAA;EAbyB,UAAA,CAAA,CAAA,EAazB,QAbyB"}
@@ -44,11 +44,5 @@ var FragnoApiValidationError = class extends FragnoApiError {
44
44
  };
45
45
 
46
46
  //#endregion
47
- //#region src/api/api.ts
48
- function addRoute(route) {
49
- return route;
50
- }
51
-
52
- //#endregion
53
- export { FragnoApiError as n, FragnoApiValidationError as r, addRoute as t };
54
- //# sourceMappingURL=api-DngJDcmO.js.map
47
+ export { FragnoApiError, FragnoApiValidationError };
48
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","names":["#status","#code","#issues"],"sources":["../../src/api/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { StatusCode } from \"../http/http-status\";\n\nexport class FragnoApiError extends Error {\n readonly #status: StatusCode;\n readonly #code: string;\n\n constructor({ message, code }: { message: string; code: string }, status: StatusCode) {\n super(message);\n this.name = \"FragnoApiError\";\n this.#status = status;\n this.#code = code;\n }\n\n get status() {\n return this.#status;\n }\n\n get code() {\n return this.#code;\n }\n\n toResponse() {\n return Response.json({ message: this.message, code: this.code }, { status: this.status });\n }\n}\n\nexport class FragnoApiValidationError extends FragnoApiError {\n #issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super({ message, code: \"FRAGNO_VALIDATION_ERROR\" }, 400);\n this.name = \"FragnoApiValidationError\";\n this.#issues = issues;\n }\n\n get issues() {\n return this.#issues;\n }\n\n override toResponse() {\n return Response.json(\n { message: this.message, issues: this.#issues, code: this.code },\n { status: this.status },\n );\n }\n}\n"],"mappings":";AAGA,IAAa,iBAAb,cAAoC,MAAM;CACxC,CAASA;CACT,CAASC;CAET,YAAY,EAAE,SAAS,QAA2C,QAAoB;AACpF,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,QAAKD,SAAU;AACf,QAAKC,OAAQ;;CAGf,IAAI,SAAS;AACX,SAAO,MAAKD;;CAGd,IAAI,OAAO;AACT,SAAO,MAAKC;;CAGd,aAAa;AACX,SAAO,SAAS,KAAK;GAAE,SAAS,KAAK;GAAS,MAAM,KAAK;GAAM,EAAE,EAAE,QAAQ,KAAK,QAAQ,CAAC;;;AAI7F,IAAa,2BAAb,cAA8C,eAAe;CAC3D;CAEA,YAAY,SAAiB,QAA2C;AACtE,QAAM;GAAE;GAAS,MAAM;GAA2B,EAAE,IAAI;AACxD,OAAK,OAAO;AACZ,QAAKC,SAAU;;CAGjB,IAAI,SAAS;AACX,SAAO,MAAKA;;CAGd,AAAS,aAAa;AACpB,SAAO,SAAS,KACd;GAAE,SAAS,KAAK;GAAS,QAAQ,MAAKA;GAAS,MAAM,KAAK;GAAM,EAChE,EAAE,QAAQ,KAAK,QAAQ,CACxB"}