@shivaedev/platform 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +371 -112
  3. package/dist/errors/rejectedField.d.ts +7 -0
  4. package/dist/errors/rejectedField.d.ts.map +1 -0
  5. package/dist/errors/{rejected-field.js → rejectedField.js} +4 -2
  6. package/dist/errors/rejectedField.js.map +1 -0
  7. package/dist/errors/taxonomy.d.ts +10 -0
  8. package/dist/errors/taxonomy.d.ts.map +1 -1
  9. package/dist/errors/taxonomy.js +4 -0
  10. package/dist/errors/taxonomy.js.map +1 -1
  11. package/dist/rpc/identity.d.ts.map +1 -1
  12. package/dist/rpc/identity.js.map +1 -1
  13. package/dist/rpc/middleware.d.ts +1 -1
  14. package/dist/rpc/middleware.d.ts.map +1 -1
  15. package/dist/rpc/middleware.js +1 -1
  16. package/dist/rpc/middleware.js.map +1 -1
  17. package/dist/server/appHost.d.ts +61 -0
  18. package/dist/server/appHost.d.ts.map +1 -0
  19. package/dist/server/appHost.js +14 -0
  20. package/dist/server/appHost.js.map +1 -0
  21. package/dist/server/appHostHttp.d.ts +11 -0
  22. package/dist/server/appHostHttp.d.ts.map +1 -0
  23. package/dist/server/appHostHttp.js +51 -0
  24. package/dist/server/appHostHttp.js.map +1 -0
  25. package/dist/{better-auth → server/better-auth}/adapter.d.ts +1 -1
  26. package/dist/server/better-auth/adapter.d.ts.map +1 -0
  27. package/dist/{better-auth → server/better-auth}/adapter.js +26 -14
  28. package/dist/server/better-auth/adapter.js.map +1 -0
  29. package/dist/{better-auth → server/better-auth}/relation.d.ts +15 -15
  30. package/dist/server/better-auth/relation.d.ts.map +1 -0
  31. package/dist/{better-auth → server/better-auth}/relation.js +2 -2
  32. package/dist/server/better-auth/relation.js.map +1 -0
  33. package/dist/server/better-auth/rowAdapter.d.ts +8 -0
  34. package/dist/server/better-auth/rowAdapter.d.ts.map +1 -0
  35. package/dist/server/better-auth/rowAdapter.js +52 -0
  36. package/dist/server/better-auth/rowAdapter.js.map +1 -0
  37. package/dist/{better-auth → server/better-auth}/where.d.ts +1 -1
  38. package/dist/server/better-auth/where.d.ts.map +1 -0
  39. package/dist/{better-auth → server/better-auth}/where.js +22 -18
  40. package/dist/server/better-auth/where.js.map +1 -0
  41. package/dist/server/boundedRpcRequest.d.ts +3 -0
  42. package/dist/server/boundedRpcRequest.d.ts.map +1 -0
  43. package/dist/server/boundedRpcRequest.js +41 -0
  44. package/dist/server/boundedRpcRequest.js.map +1 -0
  45. package/dist/server/databaseLayer.d.ts +6 -0
  46. package/dist/server/databaseLayer.d.ts.map +1 -0
  47. package/dist/server/databaseLayer.js +29 -0
  48. package/dist/server/databaseLayer.js.map +1 -0
  49. package/dist/server/hostOptions.d.ts +28 -0
  50. package/dist/server/hostOptions.d.ts.map +1 -0
  51. package/dist/server/hostOptions.js +2 -0
  52. package/dist/server/hostOptions.js.map +1 -0
  53. package/dist/{node-http/subscription-signal.d.ts → server/node-http/subscriptionSignal.d.ts} +2 -2
  54. package/dist/server/node-http/subscriptionSignal.d.ts.map +1 -0
  55. package/dist/{node-http/subscription-signal.js → server/node-http/subscriptionSignal.js} +20 -13
  56. package/dist/server/node-http/subscriptionSignal.js.map +1 -0
  57. package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts +4 -0
  58. package/dist/server/rpc-server/adapters/betterAuthSessions.d.ts.map +1 -0
  59. package/dist/server/rpc-server/adapters/betterAuthSessions.js +14 -0
  60. package/dist/server/rpc-server/adapters/betterAuthSessions.js.map +1 -0
  61. package/dist/server/rpc-server/boundary.d.ts +9 -0
  62. package/dist/server/rpc-server/boundary.d.ts.map +1 -0
  63. package/dist/server/rpc-server/boundary.js +18 -0
  64. package/dist/server/rpc-server/boundary.js.map +1 -0
  65. package/dist/server/rpc-server/local.d.ts +7 -0
  66. package/dist/server/rpc-server/local.d.ts.map +1 -0
  67. package/dist/server/rpc-server/local.js +70 -0
  68. package/dist/server/rpc-server/local.js.map +1 -0
  69. package/dist/{rpc-server → server/rpc-server}/origin.d.ts +3 -3
  70. package/dist/server/rpc-server/origin.d.ts.map +1 -0
  71. package/dist/server/rpc-server/origin.js +16 -0
  72. package/dist/server/rpc-server/origin.js.map +1 -0
  73. package/dist/server/rpc-server/redact.d.ts +3 -0
  74. package/dist/server/rpc-server/redact.d.ts.map +1 -0
  75. package/dist/{rpc-server → server/rpc-server}/redact.js +9 -7
  76. package/dist/server/rpc-server/redact.js.map +1 -0
  77. package/dist/server/rpc-server/redactCause.d.ts +6 -0
  78. package/dist/server/rpc-server/redactCause.d.ts.map +1 -0
  79. package/dist/server/rpc-server/redactCause.js +36 -0
  80. package/dist/server/rpc-server/redactCause.js.map +1 -0
  81. package/dist/server/rpc-server/sensitive.d.ts +5 -0
  82. package/dist/server/rpc-server/sensitive.d.ts.map +1 -0
  83. package/dist/{rpc-server → server/rpc-server}/sensitive.js +21 -17
  84. package/dist/server/rpc-server/sensitive.js.map +1 -0
  85. package/dist/server/rpc-server/session.d.ts +21 -0
  86. package/dist/server/rpc-server/session.d.ts.map +1 -0
  87. package/dist/server/rpc-server/session.js +37 -0
  88. package/dist/server/rpc-server/session.js.map +1 -0
  89. package/dist/{rpc-server → server/rpc-server}/tracing.d.ts +1 -1
  90. package/dist/server/rpc-server/tracing.d.ts.map +1 -0
  91. package/dist/server/rpc-server/tracing.js +42 -0
  92. package/dist/server/rpc-server/tracing.js.map +1 -0
  93. package/dist/server/rpc-server/transportHeaders.d.ts +4 -0
  94. package/dist/server/rpc-server/transportHeaders.d.ts.map +1 -0
  95. package/dist/server/rpc-server/transportHeaders.js +6 -0
  96. package/dist/server/rpc-server/transportHeaders.js.map +1 -0
  97. package/dist/server/rpc-server/trustedProxy.d.ts +6 -0
  98. package/dist/server/rpc-server/trustedProxy.d.ts.map +1 -0
  99. package/dist/server/rpc-server/trustedProxy.js +35 -0
  100. package/dist/server/rpc-server/trustedProxy.js.map +1 -0
  101. package/dist/server/runtime/makePlatform.d.ts +4 -0
  102. package/dist/server/runtime/makePlatform.d.ts.map +1 -0
  103. package/dist/{runtime/make.js → server/runtime/makePlatform.js} +11 -9
  104. package/dist/server/runtime/makePlatform.js.map +1 -0
  105. package/dist/server/runtime/types.d.ts +19 -0
  106. package/dist/server/runtime/types.d.ts.map +1 -0
  107. package/dist/{runtime → server/runtime}/types.js.map +1 -1
  108. package/dist/server/testing/makePlatformIt.d.ts +8 -0
  109. package/dist/server/testing/makePlatformIt.d.ts.map +1 -0
  110. package/dist/{testing/vitest.js → server/testing/makePlatformIt.js} +7 -3
  111. package/dist/server/testing/makePlatformIt.js.map +1 -0
  112. package/dist/server/testing/types.d.ts +28 -0
  113. package/dist/server/testing/types.d.ts.map +1 -0
  114. package/dist/{testing → server/testing}/types.js.map +1 -1
  115. package/docs/north-star.md +36 -0
  116. package/docs/roadmap.md +30 -0
  117. package/package.json +333 -32
  118. package/src/errors/{rejected-field.ts → rejectedField.ts} +3 -6
  119. package/src/errors/taxonomy.ts +2 -8
  120. package/src/rpc/identity.ts +0 -4
  121. package/src/rpc/middleware.ts +19 -10
  122. package/src/server/appHost.ts +130 -0
  123. package/src/server/appHostHttp.ts +101 -0
  124. package/src/{better-auth → server/better-auth}/adapter.ts +26 -30
  125. package/src/{better-auth → server/better-auth}/relation.ts +17 -19
  126. package/src/{better-auth/row-adapter.ts → server/better-auth/rowAdapter.ts} +19 -21
  127. package/src/{better-auth → server/better-auth}/where.ts +22 -32
  128. package/src/server/boundedRpcRequest.ts +47 -0
  129. package/src/server/databaseLayer.ts +36 -0
  130. package/src/server/hostOptions.ts +25 -0
  131. package/src/{node-http/subscription-signal.ts → server/node-http/subscriptionSignal.ts} +19 -22
  132. package/src/{rpc-server/adapters/better-auth-sessions.ts → server/rpc-server/adapters/betterAuthSessions.ts} +10 -11
  133. package/src/server/rpc-server/boundary.ts +26 -0
  134. package/src/server/rpc-server/local.ts +72 -0
  135. package/src/{rpc-server → server/rpc-server}/origin.ts +11 -14
  136. package/src/{rpc-server → server/rpc-server}/redact.ts +9 -11
  137. package/src/server/rpc-server/redactCause.ts +40 -0
  138. package/src/{rpc-server → server/rpc-server}/sensitive.ts +17 -22
  139. package/src/{rpc-server → server/rpc-server}/session.ts +23 -24
  140. package/src/{rpc-server → server/rpc-server}/tracing.ts +16 -19
  141. package/src/{rpc-server/transport.ts → server/rpc-server/transportHeaders.ts} +4 -4
  142. package/src/server/rpc-server/trustedProxy.ts +36 -0
  143. package/src/{runtime/make.ts → server/runtime/makePlatform.ts} +19 -27
  144. package/src/server/runtime/types.ts +24 -0
  145. package/src/{testing/vitest.ts → server/testing/makePlatformIt.ts} +27 -23
  146. package/src/server/testing/types.ts +38 -0
  147. package/dist/better-auth/adapter.d.ts.map +0 -1
  148. package/dist/better-auth/adapter.js.map +0 -1
  149. package/dist/better-auth/relation.d.ts.map +0 -1
  150. package/dist/better-auth/relation.js.map +0 -1
  151. package/dist/better-auth/row-adapter.d.ts +0 -8
  152. package/dist/better-auth/row-adapter.d.ts.map +0 -1
  153. package/dist/better-auth/row-adapter.js +0 -46
  154. package/dist/better-auth/row-adapter.js.map +0 -1
  155. package/dist/better-auth/where.d.ts.map +0 -1
  156. package/dist/better-auth/where.js.map +0 -1
  157. package/dist/errors/rejected-field.d.ts +0 -7
  158. package/dist/errors/rejected-field.d.ts.map +0 -1
  159. package/dist/errors/rejected-field.js.map +0 -1
  160. package/dist/node-http/subscription-signal.d.ts.map +0 -1
  161. package/dist/node-http/subscription-signal.js.map +0 -1
  162. package/dist/rpc-server/adapters/better-auth-sessions.d.ts +0 -4
  163. package/dist/rpc-server/adapters/better-auth-sessions.d.ts.map +0 -1
  164. package/dist/rpc-server/adapters/better-auth-sessions.js +0 -11
  165. package/dist/rpc-server/adapters/better-auth-sessions.js.map +0 -1
  166. package/dist/rpc-server/origin.d.ts.map +0 -1
  167. package/dist/rpc-server/origin.js +0 -12
  168. package/dist/rpc-server/origin.js.map +0 -1
  169. package/dist/rpc-server/redact-cause.d.ts +0 -6
  170. package/dist/rpc-server/redact-cause.d.ts.map +0 -1
  171. package/dist/rpc-server/redact-cause.js +0 -28
  172. package/dist/rpc-server/redact-cause.js.map +0 -1
  173. package/dist/rpc-server/redact.d.ts +0 -3
  174. package/dist/rpc-server/redact.d.ts.map +0 -1
  175. package/dist/rpc-server/redact.js.map +0 -1
  176. package/dist/rpc-server/sensitive.d.ts +0 -5
  177. package/dist/rpc-server/sensitive.d.ts.map +0 -1
  178. package/dist/rpc-server/sensitive.js.map +0 -1
  179. package/dist/rpc-server/session.d.ts +0 -21
  180. package/dist/rpc-server/session.d.ts.map +0 -1
  181. package/dist/rpc-server/session.js +0 -31
  182. package/dist/rpc-server/session.js.map +0 -1
  183. package/dist/rpc-server/tracing.d.ts.map +0 -1
  184. package/dist/rpc-server/tracing.js +0 -34
  185. package/dist/rpc-server/tracing.js.map +0 -1
  186. package/dist/rpc-server/transport.d.ts +0 -4
  187. package/dist/rpc-server/transport.d.ts.map +0 -1
  188. package/dist/rpc-server/transport.js +0 -4
  189. package/dist/rpc-server/transport.js.map +0 -1
  190. package/dist/runtime/make.d.ts +0 -4
  191. package/dist/runtime/make.d.ts.map +0 -1
  192. package/dist/runtime/make.js.map +0 -1
  193. package/dist/runtime/types.d.ts +0 -19
  194. package/dist/runtime/types.d.ts.map +0 -1
  195. package/dist/testing/types.d.ts +0 -28
  196. package/dist/testing/types.d.ts.map +0 -1
  197. package/dist/testing/vitest.d.ts +0 -8
  198. package/dist/testing/vitest.d.ts.map +0 -1
  199. package/dist/testing/vitest.js.map +0 -1
  200. package/src/rpc-server/redact-cause.ts +0 -41
  201. package/src/runtime/types.ts +0 -24
  202. package/src/testing/types.ts +0 -43
  203. /package/dist/{runtime → server/runtime}/types.js +0 -0
  204. /package/dist/{testing → server/testing}/types.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shivaedev/platform",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Opinionated Effect application infrastructure for ShivaeDev services",
5
5
  "homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/platform#readme",
6
6
  "bugs": {
@@ -15,60 +15,361 @@
15
15
  "sideEffects": false,
16
16
  "type": "module",
17
17
  "imports": {
18
- "#test/*": "./test/*",
18
+ "#test/*": "./src/test-support/*",
19
19
  "#*.ts": {
20
20
  "source": "./src/*.ts",
21
21
  "types": "./dist/*.d.ts",
22
22
  "default": "./dist/*.js"
23
+ },
24
+ "#errors/*.ts": {
25
+ "source": "./src/errors/*.ts",
26
+ "types": "./dist/errors/*.d.ts",
27
+ "default": "./dist/errors/*.js"
28
+ },
29
+ "#node-http/*.ts": {
30
+ "source": "./src/server/node-http/*.ts",
31
+ "types": "./dist/server/node-http/*.d.ts",
32
+ "default": "./dist/server/node-http/*.js"
33
+ },
34
+ "#rpc/*.ts": {
35
+ "source": "./src/rpc/*.ts",
36
+ "types": "./dist/rpc/*.d.ts",
37
+ "default": "./dist/rpc/*.js"
38
+ },
39
+ "#rpc-server/*.ts": {
40
+ "source": "./src/server/rpc-server/*.ts",
41
+ "types": "./dist/server/rpc-server/*.d.ts",
42
+ "default": "./dist/server/rpc-server/*.js"
43
+ },
44
+ "#runtime/*.ts": {
45
+ "source": "./src/server/runtime/*.ts",
46
+ "types": "./dist/server/runtime/*.d.ts",
47
+ "default": "./dist/server/runtime/*.js"
48
+ },
49
+ "#appHost.ts": {
50
+ "source": "./src/server/appHost.ts",
51
+ "types": "./dist/server/appHost.d.ts",
52
+ "default": "./dist/server/appHost.js"
53
+ },
54
+ "#better-auth/adapter.ts": {
55
+ "source": "./src/server/better-auth/adapter.ts",
56
+ "types": "./dist/server/better-auth/adapter.d.ts",
57
+ "default": "./dist/server/better-auth/adapter.js"
58
+ },
59
+ "#better-auth/relation.ts": {
60
+ "source": "./src/server/better-auth/relation.ts",
61
+ "types": "./dist/server/better-auth/relation.d.ts",
62
+ "default": "./dist/server/better-auth/relation.js"
63
+ },
64
+ "#better-auth/row-adapter.ts": {
65
+ "source": "./src/server/better-auth/rowAdapter.ts",
66
+ "types": "./dist/server/better-auth/rowAdapter.d.ts",
67
+ "default": "./dist/server/better-auth/rowAdapter.js"
68
+ },
69
+ "#better-auth/where.ts": {
70
+ "source": "./src/server/better-auth/where.ts",
71
+ "types": "./dist/server/better-auth/where.d.ts",
72
+ "default": "./dist/server/better-auth/where.js"
73
+ },
74
+ "#errors/rejected-field.ts": {
75
+ "source": "./src/errors/rejectedField.ts",
76
+ "types": "./dist/errors/rejectedField.d.ts",
77
+ "default": "./dist/errors/rejectedField.js"
78
+ },
79
+ "#errors/taxonomy.ts": {
80
+ "source": "./src/errors/taxonomy.ts",
81
+ "types": "./dist/errors/taxonomy.d.ts",
82
+ "default": "./dist/errors/taxonomy.js"
83
+ },
84
+ "#node-http/subscription-signal.ts": {
85
+ "source": "./src/server/node-http/subscriptionSignal.ts",
86
+ "types": "./dist/server/node-http/subscriptionSignal.d.ts",
87
+ "default": "./dist/server/node-http/subscriptionSignal.js"
88
+ },
89
+ "#rpc-server/adapters/better-auth-sessions.ts": {
90
+ "source": "./src/server/rpc-server/adapters/betterAuthSessions.ts",
91
+ "types": "./dist/server/rpc-server/adapters/betterAuthSessions.d.ts",
92
+ "default": "./dist/server/rpc-server/adapters/betterAuthSessions.js"
93
+ },
94
+ "#rpc-server/boundary.ts": {
95
+ "source": "./src/server/rpc-server/boundary.ts",
96
+ "types": "./dist/server/rpc-server/boundary.d.ts",
97
+ "default": "./dist/server/rpc-server/boundary.js"
98
+ },
99
+ "#rpc-server/local.ts": {
100
+ "source": "./src/server/rpc-server/local.ts",
101
+ "types": "./dist/server/rpc-server/local.d.ts",
102
+ "default": "./dist/server/rpc-server/local.js"
103
+ },
104
+ "#rpc-server/origin.ts": {
105
+ "source": "./src/server/rpc-server/origin.ts",
106
+ "types": "./dist/server/rpc-server/origin.d.ts",
107
+ "default": "./dist/server/rpc-server/origin.js"
108
+ },
109
+ "#rpc-server/redact-cause.ts": {
110
+ "source": "./src/server/rpc-server/redactCause.ts",
111
+ "types": "./dist/server/rpc-server/redactCause.d.ts",
112
+ "default": "./dist/server/rpc-server/redactCause.js"
113
+ },
114
+ "#rpc-server/redact.ts": {
115
+ "source": "./src/server/rpc-server/redact.ts",
116
+ "types": "./dist/server/rpc-server/redact.d.ts",
117
+ "default": "./dist/server/rpc-server/redact.js"
118
+ },
119
+ "#rpc-server/sensitive.ts": {
120
+ "source": "./src/server/rpc-server/sensitive.ts",
121
+ "types": "./dist/server/rpc-server/sensitive.d.ts",
122
+ "default": "./dist/server/rpc-server/sensitive.js"
123
+ },
124
+ "#rpc-server/session.ts": {
125
+ "source": "./src/server/rpc-server/session.ts",
126
+ "types": "./dist/server/rpc-server/session.d.ts",
127
+ "default": "./dist/server/rpc-server/session.js"
128
+ },
129
+ "#rpc-server/tracing.ts": {
130
+ "source": "./src/server/rpc-server/tracing.ts",
131
+ "types": "./dist/server/rpc-server/tracing.d.ts",
132
+ "default": "./dist/server/rpc-server/tracing.js"
133
+ },
134
+ "#rpc-server/transport.ts": {
135
+ "source": "./src/server/rpc-server/transportHeaders.ts",
136
+ "types": "./dist/server/rpc-server/transportHeaders.d.ts",
137
+ "default": "./dist/server/rpc-server/transportHeaders.js"
138
+ },
139
+ "#rpc/identity.ts": {
140
+ "source": "./src/rpc/identity.ts",
141
+ "types": "./dist/rpc/identity.d.ts",
142
+ "default": "./dist/rpc/identity.js"
143
+ },
144
+ "#rpc/middleware.ts": {
145
+ "source": "./src/rpc/middleware.ts",
146
+ "types": "./dist/rpc/middleware.d.ts",
147
+ "default": "./dist/rpc/middleware.js"
148
+ },
149
+ "#runtime/make.ts": {
150
+ "source": "./src/server/runtime/makePlatform.ts",
151
+ "types": "./dist/server/runtime/makePlatform.d.ts",
152
+ "default": "./dist/server/runtime/makePlatform.js"
153
+ },
154
+ "#runtime/types.ts": {
155
+ "source": "./src/server/runtime/types.ts",
156
+ "types": "./dist/server/runtime/types.d.ts",
157
+ "default": "./dist/server/runtime/types.js"
158
+ },
159
+ "#testing/types.ts": {
160
+ "source": "./src/server/testing/types.ts",
161
+ "types": "./dist/server/testing/types.d.ts",
162
+ "default": "./dist/server/testing/types.js"
163
+ },
164
+ "#testing/vitest.ts": {
165
+ "source": "./src/server/testing/makePlatformIt.ts",
166
+ "types": "./dist/server/testing/makePlatformIt.d.ts",
167
+ "default": "./dist/server/testing/makePlatformIt.js"
23
168
  }
24
169
  },
25
170
  "exports": {
26
- "./*.ts": {
27
- "types": "./dist/*.d.ts",
28
- "source": "./src/*.ts",
29
- "import": "./dist/*.js",
30
- "default": "./dist/*.js"
171
+ "./appHost.ts": {
172
+ "types": "./dist/server/appHost.d.ts",
173
+ "source": "./src/server/appHost.ts",
174
+ "import": "./dist/server/appHost.js",
175
+ "default": "./dist/server/appHost.js"
176
+ },
177
+ "./better-auth/adapter.ts": {
178
+ "types": "./dist/server/better-auth/adapter.d.ts",
179
+ "source": "./src/server/better-auth/adapter.ts",
180
+ "import": "./dist/server/better-auth/adapter.js",
181
+ "default": "./dist/server/better-auth/adapter.js"
182
+ },
183
+ "./better-auth/relation.ts": {
184
+ "types": "./dist/server/better-auth/relation.d.ts",
185
+ "source": "./src/server/better-auth/relation.ts",
186
+ "import": "./dist/server/better-auth/relation.js",
187
+ "default": "./dist/server/better-auth/relation.js"
188
+ },
189
+ "./better-auth/row-adapter.ts": {
190
+ "types": "./dist/server/better-auth/rowAdapter.d.ts",
191
+ "source": "./src/server/better-auth/rowAdapter.ts",
192
+ "import": "./dist/server/better-auth/rowAdapter.js",
193
+ "default": "./dist/server/better-auth/rowAdapter.js"
194
+ },
195
+ "./better-auth/where.ts": {
196
+ "types": "./dist/server/better-auth/where.d.ts",
197
+ "source": "./src/server/better-auth/where.ts",
198
+ "import": "./dist/server/better-auth/where.js",
199
+ "default": "./dist/server/better-auth/where.js"
200
+ },
201
+ "./errors/rejected-field.ts": {
202
+ "types": "./dist/errors/rejectedField.d.ts",
203
+ "source": "./src/errors/rejectedField.ts",
204
+ "import": "./dist/errors/rejectedField.js",
205
+ "default": "./dist/errors/rejectedField.js"
206
+ },
207
+ "./errors/taxonomy.ts": {
208
+ "types": "./dist/errors/taxonomy.d.ts",
209
+ "source": "./src/errors/taxonomy.ts",
210
+ "import": "./dist/errors/taxonomy.js",
211
+ "default": "./dist/errors/taxonomy.js"
212
+ },
213
+ "./node-http/subscription-signal.ts": {
214
+ "types": "./dist/server/node-http/subscriptionSignal.d.ts",
215
+ "source": "./src/server/node-http/subscriptionSignal.ts",
216
+ "import": "./dist/server/node-http/subscriptionSignal.js",
217
+ "default": "./dist/server/node-http/subscriptionSignal.js"
218
+ },
219
+ "./rpc/identity.ts": {
220
+ "types": "./dist/rpc/identity.d.ts",
221
+ "source": "./src/rpc/identity.ts",
222
+ "import": "./dist/rpc/identity.js",
223
+ "default": "./dist/rpc/identity.js"
224
+ },
225
+ "./rpc/middleware.ts": {
226
+ "types": "./dist/rpc/middleware.d.ts",
227
+ "source": "./src/rpc/middleware.ts",
228
+ "import": "./dist/rpc/middleware.js",
229
+ "default": "./dist/rpc/middleware.js"
230
+ },
231
+ "./rpc-server/adapters/better-auth-sessions.ts": {
232
+ "types": "./dist/server/rpc-server/adapters/betterAuthSessions.d.ts",
233
+ "source": "./src/server/rpc-server/adapters/betterAuthSessions.ts",
234
+ "import": "./dist/server/rpc-server/adapters/betterAuthSessions.js",
235
+ "default": "./dist/server/rpc-server/adapters/betterAuthSessions.js"
236
+ },
237
+ "./rpc-server/boundary.ts": {
238
+ "types": "./dist/server/rpc-server/boundary.d.ts",
239
+ "source": "./src/server/rpc-server/boundary.ts",
240
+ "import": "./dist/server/rpc-server/boundary.js",
241
+ "default": "./dist/server/rpc-server/boundary.js"
242
+ },
243
+ "./rpc-server/local.ts": {
244
+ "types": "./dist/server/rpc-server/local.d.ts",
245
+ "source": "./src/server/rpc-server/local.ts",
246
+ "import": "./dist/server/rpc-server/local.js",
247
+ "default": "./dist/server/rpc-server/local.js"
248
+ },
249
+ "./rpc-server/origin.ts": {
250
+ "types": "./dist/server/rpc-server/origin.d.ts",
251
+ "source": "./src/server/rpc-server/origin.ts",
252
+ "import": "./dist/server/rpc-server/origin.js",
253
+ "default": "./dist/server/rpc-server/origin.js"
254
+ },
255
+ "./rpc-server/redact-cause.ts": {
256
+ "types": "./dist/server/rpc-server/redactCause.d.ts",
257
+ "source": "./src/server/rpc-server/redactCause.ts",
258
+ "import": "./dist/server/rpc-server/redactCause.js",
259
+ "default": "./dist/server/rpc-server/redactCause.js"
260
+ },
261
+ "./rpc-server/redact.ts": {
262
+ "types": "./dist/server/rpc-server/redact.d.ts",
263
+ "source": "./src/server/rpc-server/redact.ts",
264
+ "import": "./dist/server/rpc-server/redact.js",
265
+ "default": "./dist/server/rpc-server/redact.js"
266
+ },
267
+ "./rpc-server/sensitive.ts": {
268
+ "types": "./dist/server/rpc-server/sensitive.d.ts",
269
+ "source": "./src/server/rpc-server/sensitive.ts",
270
+ "import": "./dist/server/rpc-server/sensitive.js",
271
+ "default": "./dist/server/rpc-server/sensitive.js"
272
+ },
273
+ "./rpc-server/session.ts": {
274
+ "types": "./dist/server/rpc-server/session.d.ts",
275
+ "source": "./src/server/rpc-server/session.ts",
276
+ "import": "./dist/server/rpc-server/session.js",
277
+ "default": "./dist/server/rpc-server/session.js"
278
+ },
279
+ "./rpc-server/tracing.ts": {
280
+ "types": "./dist/server/rpc-server/tracing.d.ts",
281
+ "source": "./src/server/rpc-server/tracing.ts",
282
+ "import": "./dist/server/rpc-server/tracing.js",
283
+ "default": "./dist/server/rpc-server/tracing.js"
284
+ },
285
+ "./rpc-server/transport.ts": {
286
+ "types": "./dist/server/rpc-server/transportHeaders.d.ts",
287
+ "source": "./src/server/rpc-server/transportHeaders.ts",
288
+ "import": "./dist/server/rpc-server/transportHeaders.js",
289
+ "default": "./dist/server/rpc-server/transportHeaders.js"
290
+ },
291
+ "./runtime/make.ts": {
292
+ "types": "./dist/server/runtime/makePlatform.d.ts",
293
+ "source": "./src/server/runtime/makePlatform.ts",
294
+ "import": "./dist/server/runtime/makePlatform.js",
295
+ "default": "./dist/server/runtime/makePlatform.js"
296
+ },
297
+ "./runtime/types.ts": {
298
+ "types": "./dist/server/runtime/types.d.ts",
299
+ "source": "./src/server/runtime/types.ts",
300
+ "import": "./dist/server/runtime/types.js",
301
+ "default": "./dist/server/runtime/types.js"
302
+ },
303
+ "./testing/types.ts": {
304
+ "types": "./dist/server/testing/types.d.ts",
305
+ "source": "./src/server/testing/types.ts",
306
+ "import": "./dist/server/testing/types.js",
307
+ "default": "./dist/server/testing/types.js"
308
+ },
309
+ "./testing/vitest.ts": {
310
+ "types": "./dist/server/testing/makePlatformIt.d.ts",
311
+ "source": "./src/server/testing/makePlatformIt.ts",
312
+ "import": "./dist/server/testing/makePlatformIt.js",
313
+ "default": "./dist/server/testing/makePlatformIt.js"
31
314
  },
32
315
  "./package.json": "./package.json"
33
316
  },
34
317
  "files": [
35
318
  "dist",
36
319
  "src",
320
+ "!src/**/*.test.ts",
321
+ "!src/**/*.spec.ts",
322
+ "!src/**/test-support",
323
+ "docs",
37
324
  "CHANGELOG.md",
38
325
  "README.md"
39
326
  ],
327
+ "dependencies": {
328
+ "@shivaedev/effect-contract": "0.5.0",
329
+ "@shivaedev/effect-sql": "0.3.0",
330
+ "@shivaedev/types": "0.2.0"
331
+ },
40
332
  "devDependencies": {
41
- "@effect/vitest": "4.0.0-rc.112",
42
- "@prisma-next/adapter-postgres": "0.15.0",
43
- "@prisma-next/contract": "0.15.0",
44
- "@prisma-next/postgres": "0.15.0",
45
- "@prisma-next/sql-contract": "0.15.0",
46
- "@prisma-next/sql-orm-client": "0.15.0",
47
- "@prisma-next/target-postgres": "0.15.0",
48
- "@shivaedev/effect-prisma": "0.8.0",
49
- "@shivaedev/effect-trpc": "0.6.0",
50
- "@shivaedev/quality": "0.9.0",
51
- "@shivaedev/types": "0.2.0",
52
- "@trpc/client": "11.18.0",
53
- "@trpc/server": "11.18.0",
54
- "@types/node": "24.10.1",
333
+ "@effect/platform-node": "4.0.4",
334
+ "@effect/sql-pg": "4.0.4",
335
+ "@effect/vitest": "4.0.4",
336
+ "@prisma-next/adapter-postgres": "0.16.0",
337
+ "@prisma-next/contract": "0.16.0",
338
+ "@prisma-next/postgres": "0.16.0",
339
+ "@prisma-next/sql-contract": "0.16.0",
340
+ "@prisma-next/sql-orm-client": "0.16.0",
341
+ "@prisma-next/target-postgres": "0.16.0",
342
+ "@shivaedev/effect-prisma": "0.9.0",
343
+ "@shivaedev/effect-trpc": "0.7.0",
344
+ "@shivaedev/quality": "0.20.0",
345
+ "@trpc/client": "11.19.0",
346
+ "@trpc/server": "11.19.0",
347
+ "@types/node": "24.19.1",
55
348
  "@typescript/native": "npm:typescript@7.0.2",
56
- "better-auth": "1.6.30",
57
- "effect": "4.0.0-rc.112",
349
+ "better-auth": "1.6.33",
350
+ "effect": "4.0.4",
58
351
  "superjson": "2.2.6",
59
352
  "typescript": "npm:@typescript/typescript6@6.0.2",
60
- "vitest": "4.1.9"
353
+ "vitest": "5.0.3"
61
354
  },
62
355
  "peerDependencies": {
63
- "@effect/vitest": "4.0.0-rc.112",
64
- "@prisma-next/sql-orm-client": "0.15.0",
65
- "@shivaedev/effect-prisma": "0.8.0",
66
- "@shivaedev/effect-trpc": "0.6.0",
67
- "@trpc/server": "11.18.0",
68
- "better-auth": "1.6.30",
69
- "effect": "4.0.0-rc.112"
356
+ "@effect/platform-node": "4.0.4",
357
+ "@effect/sql-pg": "4.0.4",
358
+ "@effect/vitest": "4.0.4",
359
+ "@prisma-next/sql-orm-client": "0.16.0",
360
+ "@shivaedev/effect-prisma": "0.9.0",
361
+ "@shivaedev/effect-trpc": "0.7.0",
362
+ "@trpc/server": "11.19.0",
363
+ "better-auth": "1.6.33",
364
+ "effect": "4.0.4"
70
365
  },
71
366
  "peerDependenciesMeta": {
367
+ "@effect/platform-node": {
368
+ "optional": true
369
+ },
370
+ "@effect/sql-pg": {
371
+ "optional": true
372
+ },
72
373
  "@effect/vitest": {
73
374
  "optional": true
74
375
  },
@@ -96,7 +397,7 @@
96
397
  "provenance": true
97
398
  },
98
399
  "scripts": {
99
- "build": "node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { force: true, recursive: true }))\" && tsc6 --project tsconfig.build.json",
400
+ "build": "node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { force: true, recursive: true }))\" && tsc --project tsconfig.build.json",
100
401
  "ready": "pnpm typecheck && pnpm test && pnpm build",
101
402
  "test": "vitest run",
102
403
  "typecheck": "tsc --noEmit"
@@ -1,13 +1,10 @@
1
1
  import { Option, Schema } from "effect";
2
-
3
2
  export interface RejectedField {
4
3
  readonly field: string;
5
4
  readonly message: string;
6
5
  }
7
-
8
6
  const Rejected = Schema.Struct({ _tag: Schema.String, field: Schema.String, message: Schema.String });
9
-
10
7
  const decode = Schema.decodeUnknownOption(Rejected);
11
-
12
- export const rejectedField = (error: unknown): Option.Option<RejectedField> =>
13
- Option.map(decode(error), ({ field, message }) => ({ field, message }));
8
+ export function rejectedField(error: unknown): Option.Option<RejectedField> {
9
+ return Option.map(decode(error), ({ field, message }) => ({ field, message }));
10
+ }
@@ -2,19 +2,13 @@ import { Schema } from "effect";
2
2
 
3
3
  const described = { message: Schema.String };
4
4
  const perField = { field: Schema.optionalKey(Schema.String), message: Schema.String };
5
-
6
5
  export class NotFound extends Schema.TaggedError<NotFound>()("NotFound", described) {}
7
-
8
6
  export class Unauthorized extends Schema.TaggedError<Unauthorized>()("Unauthorized", described) {}
9
-
10
7
  export class Forbidden extends Schema.TaggedError<Forbidden>()("Forbidden", described) {}
11
-
12
8
  export class BadRequest extends Schema.TaggedError<BadRequest>()("BadRequest", perField) {}
13
-
14
9
  export class Conflict extends Schema.TaggedError<Conflict>()("Conflict", perField) {}
15
-
16
10
  export class PreconditionFailed extends Schema.TaggedError<PreconditionFailed>()("PreconditionFailed", described) {}
17
-
18
11
  export class TooManyRequests extends Schema.TaggedError<TooManyRequests>()("TooManyRequests", described) {}
19
-
20
12
  export class AuthUnavailable extends Schema.TaggedError<AuthUnavailable>()("AuthUnavailable", described) {}
13
+ export class InternalServerError extends Schema.TaggedError<InternalServerError>()("InternalServerError", described) {}
14
+ export class ServiceUnavailable extends Schema.TaggedError<ServiceUnavailable>()("ServiceUnavailable", described) {}
@@ -1,11 +1,7 @@
1
1
  import { Context, type Option } from "effect";
2
-
3
2
  export class RequestId extends Context.Service<RequestId, string>()("@shivaedev/platform/rpc/RequestId") {}
4
-
5
3
  export interface IdentityValue {
6
4
  readonly id: string;
7
5
  }
8
-
9
6
  export class Identity extends Context.Service<Identity, IdentityValue>()("@shivaedev/platform/rpc/Identity") {}
10
-
11
7
  export class OptionalIdentity extends Context.Service<OptionalIdentity, Option.Option<IdentityValue>>()("@shivaedev/platform/rpc/OptionalIdentity") {}
@@ -1,15 +1,24 @@
1
1
  import { Schema } from "effect";
2
- import { RpcMiddleware } from "effect/unstable/rpc";
2
+ import { RpcMiddleware } from "effect/rpc";
3
3
  import { AuthUnavailable, Forbidden, Unauthorized } from "#errors/taxonomy.ts";
4
4
  import type { Identity, OptionalIdentity, RequestId } from "./identity.ts";
5
-
6
- export class RequestTracing extends RpcMiddleware.Service<RequestTracing, { provides: RequestId }>()("@shivaedev/platform/rpc/RequestTracing") {}
7
-
8
- export class Authenticated extends RpcMiddleware.Service<Authenticated, { provides: Identity }>()("@shivaedev/platform/rpc/Authenticated", {
5
+ export class RequestTracing extends RpcMiddleware.Service<
6
+ RequestTracing,
7
+ {
8
+ provides: RequestId;
9
+ }
10
+ >()("@shivaedev/platform/rpc/RequestTracing") {}
11
+ export class Authenticated extends RpcMiddleware.Service<
12
+ Authenticated,
13
+ {
14
+ provides: Identity;
15
+ }
16
+ >()("@shivaedev/platform/rpc/Authenticated", {
9
17
  error: Schema.Union([Unauthorized, AuthUnavailable, Forbidden]),
10
18
  }) {}
11
-
12
- export class MaybeAuthenticated extends RpcMiddleware.Service<MaybeAuthenticated, { provides: OptionalIdentity }>()(
13
- "@shivaedev/platform/rpc/MaybeAuthenticated",
14
- { error: Schema.Union([AuthUnavailable, Forbidden]) },
15
- ) {}
19
+ export class MaybeAuthenticated extends RpcMiddleware.Service<
20
+ MaybeAuthenticated,
21
+ {
22
+ provides: OptionalIdentity;
23
+ }
24
+ >()("@shivaedev/platform/rpc/MaybeAuthenticated", { error: Schema.Union([AuthUnavailable, Forbidden]) }) {}
@@ -0,0 +1,130 @@
1
+ import { Context, type Duration, type Effect, type Redacted } from "effect";
2
+ import type { Rpc } from "effect/rpc";
3
+ import type { Migrator } from "effect/sql";
4
+ import type { makeLiveServer } from "@shivaedev/effect-contract/makeLiveServer.ts";
5
+ import type { PostgresChangesOptions } from "@shivaedev/effect-sql/postgresChanges.ts";
6
+ import type { SessionPolicy, SessionShape } from "#rpc-server/session.ts";
7
+ import { appHostHttp, migratedHost } from "./appHostHttp.ts";
8
+ import { databaseLayer } from "./databaseLayer.ts";
9
+ import type { HostOptions, HostPolicy } from "./hostOptions.ts";
10
+
11
+ export class AppChanges extends Context.Service<AppChanges, Effect.Success<typeof makeLiveServer>>()("@shivaedev/platform/AppChanges") {}
12
+ export interface AppDatabaseOptions<R = never> {
13
+ readonly config?: {
14
+ readonly databaseUrl?: Redacted.Redacted<string>;
15
+ readonly applicationName?: string;
16
+ readonly maxConnections?: number;
17
+ readonly changes?: Omit<PostgresChangesOptions, "client" | "resync">;
18
+ };
19
+ readonly migrations: {
20
+ readonly loader: Migrator.Loader<R>;
21
+ readonly table?: string;
22
+ readonly lockTimeout?: Duration.Input;
23
+ };
24
+ }
25
+
26
+ export function appDatabase<R>(options: AppDatabaseOptions<R>) {
27
+ return databaseLayer(options, AppChanges);
28
+ }
29
+
30
+ export interface AppHostOptions<
31
+ TRpcs extends Rpc.Any,
32
+ THandlers,
33
+ THandlerError,
34
+ THandlerRequirements,
35
+ TServices,
36
+ TServiceError,
37
+ TServiceRequirements,
38
+ TMigrations,
39
+ TSession extends SessionShape,
40
+ > extends HostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements> {
41
+ readonly migrations: AppDatabaseOptions<TMigrations>["migrations"];
42
+ readonly policy?: undefined;
43
+ readonly sessions: SessionPolicy<TSession>;
44
+ }
45
+
46
+ export type AppLocalHostOptions<
47
+ TRpcs extends Rpc.Any,
48
+ THandlers,
49
+ THandlerError,
50
+ THandlerRequirements,
51
+ TServices,
52
+ TServiceError,
53
+ TServiceRequirements,
54
+ TMigrations,
55
+ > = HostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements> & {
56
+ readonly migrations: AppDatabaseOptions<TMigrations>["migrations"];
57
+ readonly policy: "loopback";
58
+ readonly sessions?: never;
59
+ };
60
+
61
+ export type AppHttpHostOptions<
62
+ TRpcs extends Rpc.Any,
63
+ THandlers,
64
+ THandlerError,
65
+ THandlerRequirements,
66
+ TServices,
67
+ TServiceError,
68
+ TServiceRequirements,
69
+ TSession extends SessionShape,
70
+ > = HostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements> &
71
+ HostPolicy<TSession> & { readonly migrations?: undefined };
72
+
73
+ export function appHost<
74
+ TRpcs extends Rpc.Any,
75
+ THandlers,
76
+ THandlerError,
77
+ THandlerRequirements,
78
+ TServices,
79
+ TServiceError,
80
+ TServiceRequirements,
81
+ TMigrations,
82
+ TSession extends SessionShape,
83
+ >(
84
+ options:
85
+ | AppHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession>
86
+ | AppLocalHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations>,
87
+ ): ReturnType<
88
+ typeof migratedHost<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession>
89
+ >;
90
+ export function appHost<TRpcs extends Rpc.Any, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements>(
91
+ options: HostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements> & {
92
+ readonly policy: "loopback";
93
+ readonly sessions?: never;
94
+ readonly migrations?: undefined;
95
+ },
96
+ ): ReturnType<
97
+ typeof appHostHttp<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, SessionShape>
98
+ >;
99
+ export function appHost<
100
+ TRpcs extends Rpc.Any,
101
+ THandlers,
102
+ THandlerError,
103
+ THandlerRequirements,
104
+ TServices,
105
+ TServiceError,
106
+ TServiceRequirements,
107
+ TSession extends SessionShape,
108
+ >(
109
+ options: AppHttpHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TSession>,
110
+ ): ReturnType<typeof appHostHttp<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TSession>>;
111
+ export function appHost<
112
+ TRpcs extends Rpc.Any,
113
+ THandlers,
114
+ THandlerError,
115
+ THandlerRequirements,
116
+ TServices,
117
+ TServiceError,
118
+ TServiceRequirements,
119
+ TMigrations,
120
+ TSession extends SessionShape,
121
+ >(
122
+ options:
123
+ | AppHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations, TSession>
124
+ | AppLocalHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TMigrations>
125
+ | AppHttpHostOptions<TRpcs, THandlers, THandlerError, THandlerRequirements, TServices, TServiceError, TServiceRequirements, TSession>,
126
+ ) {
127
+ return options.migrations === undefined
128
+ ? appHostHttp(options)
129
+ : migratedHost({ ...options, migrations: options.migrations }, appDatabase({ ...options, migrations: options.migrations }));
130
+ }