@effect-app/infra 0.198.2 → 0.199.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 (360) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/_cjs/RequestContext.cjs +14 -9
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/_ext/Array.cjs +3 -7
  5. package/_cjs/_ext/Array.cjs.map +1 -1
  6. package/_cjs/api/reportError.cjs +3 -6
  7. package/_cjs/api/reportError.cjs.map +1 -1
  8. package/_cjs/api/routing/base.cjs +27 -61
  9. package/_cjs/api/routing/base.cjs.map +1 -1
  10. package/_cjs/api/routing/defaultErrorHandler.cjs +14 -21
  11. package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
  12. package/_cjs/api/routing/makeRequestHandler.cjs +44 -51
  13. package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
  14. package/_cjs/api/routing/match.cjs +6 -13
  15. package/_cjs/api/routing/match.cjs.map +1 -1
  16. package/_cjs/api/{express → routing}/schema/jwt.cjs +3 -4
  17. package/_cjs/api/routing/schema/jwt.cjs.map +1 -0
  18. package/_cjs/api/routing/schema/routing.cjs +136 -0
  19. package/_cjs/api/routing/schema/routing.cjs.map +1 -0
  20. package/_cjs/api/setupRequest.cjs +16 -22
  21. package/_cjs/api/setupRequest.cjs.map +1 -1
  22. package/_cjs/errorReporter.cjs +16 -17
  23. package/_cjs/errorReporter.cjs.map +1 -1
  24. package/_cjs/errors.cjs +2 -4
  25. package/_cjs/errors.cjs.map +1 -1
  26. package/_cjs/filter/types/path/index.cjs +0 -2
  27. package/_cjs/filter/types/path/index.cjs.map +1 -1
  28. package/_cjs/filter.cjs +35 -0
  29. package/_cjs/filter.cjs.map +1 -1
  30. package/_cjs/logger/jsonLogger.cjs +9 -15
  31. package/_cjs/logger/jsonLogger.cjs.map +1 -1
  32. package/_cjs/logger/logFmtLogger.cjs +7 -11
  33. package/_cjs/logger/logFmtLogger.cjs.map +1 -1
  34. package/_cjs/logger/shared.cjs +6 -8
  35. package/_cjs/logger/shared.cjs.map +1 -1
  36. package/_cjs/rateLimit.cjs +9 -12
  37. package/_cjs/rateLimit.cjs.map +1 -1
  38. package/_cjs/services/Emailer/Sendgrid.cjs +9 -16
  39. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
  40. package/_cjs/services/Emailer/fake.cjs +5 -8
  41. package/_cjs/services/Emailer/fake.cjs.map +1 -1
  42. package/_cjs/services/Emailer/service.cjs +2 -4
  43. package/_cjs/services/Emailer/service.cjs.map +1 -1
  44. package/_cjs/services/Operations/live.cjs +29 -42
  45. package/_cjs/services/Operations/live.cjs.map +1 -1
  46. package/_cjs/services/Operations/service.cjs +15 -15
  47. package/_cjs/services/Operations/service.cjs.map +1 -1
  48. package/_cjs/services/QueueMaker/errors.cjs +8 -12
  49. package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
  50. package/_cjs/services/QueueMaker/memQueue.cjs +27 -33
  51. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  52. package/_cjs/services/QueueMaker/sbqueue.cjs +31 -40
  53. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  54. package/_cjs/services/QueueMaker/service.cjs +7 -9
  55. package/_cjs/services/QueueMaker/service.cjs.map +1 -1
  56. package/_cjs/services/Repository/dsl.cjs +11 -14
  57. package/_cjs/services/Repository/dsl.cjs.map +1 -1
  58. package/_cjs/services/Repository/ext.cjs +62 -71
  59. package/_cjs/services/Repository/ext.cjs.map +1 -1
  60. package/_cjs/services/RepositoryBase.cjs +171 -169
  61. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  62. package/_cjs/services/RequestContextContainer.cjs +17 -23
  63. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  64. package/_cjs/services/Store/ContextMapContainer.cjs +10 -16
  65. package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
  66. package/_cjs/services/Store/Cosmos/query.cjs +5 -9
  67. package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
  68. package/_cjs/services/Store/Cosmos.cjs +58 -68
  69. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  70. package/_cjs/services/Store/Disk.cjs +34 -36
  71. package/_cjs/services/Store/Disk.cjs.map +1 -1
  72. package/_cjs/services/Store/Memory.cjs +55 -65
  73. package/_cjs/services/Store/Memory.cjs.map +1 -1
  74. package/_cjs/services/Store/codeFilter.cjs +2 -4
  75. package/_cjs/services/Store/codeFilter.cjs.map +1 -1
  76. package/_cjs/services/Store/codeFilter.test.cjs +13 -12
  77. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
  78. package/_cjs/services/Store/filterApi/query.cjs +2 -4
  79. package/_cjs/services/Store/filterApi/query.cjs.map +1 -1
  80. package/_cjs/services/Store/index.cjs +6 -9
  81. package/_cjs/services/Store/index.cjs.map +1 -1
  82. package/_cjs/services/Store/service.cjs +5 -7
  83. package/_cjs/services/Store/service.cjs.map +1 -1
  84. package/_cjs/services/Store/utils.cjs +16 -20
  85. package/_cjs/services/Store/utils.cjs.map +1 -1
  86. package/_cjs/services/query.cjs +4 -1
  87. package/_cjs/services/query.cjs.map +1 -1
  88. package/_cjs/test.arbs.cjs +3 -4
  89. package/_cjs/test.arbs.cjs.map +1 -1
  90. package/dist/RequestContext.d.ts +20 -20
  91. package/dist/RequestContext.d.ts.map +1 -1
  92. package/dist/RequestContext.js +15 -8
  93. package/dist/_ext/Array.d.ts +2 -3
  94. package/dist/_ext/Array.d.ts.map +1 -1
  95. package/dist/_ext/Array.js +5 -5
  96. package/dist/api/reportError.d.ts +5 -5
  97. package/dist/api/reportError.d.ts.map +1 -1
  98. package/dist/api/reportError.js +6 -6
  99. package/dist/api/routing/base.d.ts +11 -15
  100. package/dist/api/routing/base.d.ts.map +1 -1
  101. package/dist/api/routing/base.js +48 -67
  102. package/dist/api/routing/defaultErrorHandler.d.ts +4 -6
  103. package/dist/api/routing/defaultErrorHandler.d.ts.map +1 -1
  104. package/dist/api/routing/defaultErrorHandler.js +26 -28
  105. package/dist/api/routing/makeRequestHandler.d.ts +6 -7
  106. package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
  107. package/dist/api/routing/makeRequestHandler.js +69 -59
  108. package/dist/api/routing/match.d.ts +7 -8
  109. package/dist/api/routing/match.d.ts.map +1 -1
  110. package/dist/api/routing/match.js +7 -11
  111. package/dist/api/routing/schema/jwt.d.ts +4 -0
  112. package/dist/api/routing/schema/jwt.d.ts.map +1 -0
  113. package/dist/api/routing/schema/jwt.js +11 -0
  114. package/dist/api/{express → routing}/schema/routing.d.ts +2 -2
  115. package/dist/api/routing/schema/routing.d.ts.map +1 -0
  116. package/dist/api/routing/schema/routing.js +123 -0
  117. package/dist/api/routing.js +3 -1
  118. package/dist/api/setupRequest.d.ts +3 -5
  119. package/dist/api/setupRequest.d.ts.map +1 -1
  120. package/dist/api/setupRequest.js +20 -24
  121. package/dist/errorReporter.d.ts +4 -4
  122. package/dist/errorReporter.d.ts.map +1 -1
  123. package/dist/errorReporter.js +20 -17
  124. package/dist/errors.d.ts +1 -1
  125. package/dist/errors.d.ts.map +1 -1
  126. package/dist/errors.js +3 -3
  127. package/dist/filter/types/path/index.d.ts +2 -2
  128. package/dist/filter/types/path/index.d.ts.map +1 -1
  129. package/dist/filter/types/path/index.js +2 -3
  130. package/dist/filter/types.js +2 -1
  131. package/dist/filter.d.ts.map +1 -1
  132. package/dist/filter.js +36 -1
  133. package/dist/logger/jsonLogger.d.ts +2 -1
  134. package/dist/logger/jsonLogger.d.ts.map +1 -1
  135. package/dist/logger/jsonLogger.js +9 -13
  136. package/dist/logger/logFmtLogger.d.ts +2 -1
  137. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  138. package/dist/logger/logFmtLogger.js +9 -11
  139. package/dist/logger/shared.d.ts +2 -1
  140. package/dist/logger/shared.d.ts.map +1 -1
  141. package/dist/logger/shared.js +7 -9
  142. package/dist/rateLimit.d.ts +7 -10
  143. package/dist/rateLimit.d.ts.map +1 -1
  144. package/dist/rateLimit.js +17 -16
  145. package/dist/services/Emailer/Sendgrid.d.ts +1 -2
  146. package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
  147. package/dist/services/Emailer/Sendgrid.js +16 -20
  148. package/dist/services/Emailer/fake.d.ts +2 -2
  149. package/dist/services/Emailer/fake.d.ts.map +1 -1
  150. package/dist/services/Emailer/fake.js +10 -8
  151. package/dist/services/Emailer/service.d.ts +7 -10
  152. package/dist/services/Emailer/service.d.ts.map +1 -1
  153. package/dist/services/Emailer/service.js +3 -3
  154. package/dist/services/Operations/live.d.ts +2 -3
  155. package/dist/services/Operations/live.d.ts.map +1 -1
  156. package/dist/services/Operations/live.js +44 -51
  157. package/dist/services/Operations/service.d.ts +14 -19
  158. package/dist/services/Operations/service.d.ts.map +1 -1
  159. package/dist/services/Operations/service.js +23 -28
  160. package/dist/services/QueueMaker/errors.d.ts +5 -7
  161. package/dist/services/QueueMaker/errors.d.ts.map +1 -1
  162. package/dist/services/QueueMaker/errors.js +11 -11
  163. package/dist/services/QueueMaker/memQueue.d.ts +6 -9
  164. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  165. package/dist/services/QueueMaker/memQueue.js +37 -39
  166. package/dist/services/QueueMaker/sbqueue.d.ts +6 -9
  167. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  168. package/dist/services/QueueMaker/sbqueue.js +41 -39
  169. package/dist/services/QueueMaker/service.d.ts +2 -4
  170. package/dist/services/QueueMaker/service.d.ts.map +1 -1
  171. package/dist/services/QueueMaker/service.js +8 -8
  172. package/dist/services/Repository/dsl.d.ts +8 -10
  173. package/dist/services/Repository/dsl.d.ts.map +1 -1
  174. package/dist/services/Repository/dsl.js +12 -13
  175. package/dist/services/Repository/ext.d.ts +34 -62
  176. package/dist/services/Repository/ext.d.ts.map +1 -1
  177. package/dist/services/Repository/ext.js +59 -70
  178. package/dist/services/RepositoryBase.d.ts +41 -47
  179. package/dist/services/RepositoryBase.d.ts.map +1 -1
  180. package/dist/services/RepositoryBase.js +182 -194
  181. package/dist/services/RequestContextContainer.d.ts +13 -21
  182. package/dist/services/RequestContextContainer.d.ts.map +1 -1
  183. package/dist/services/RequestContextContainer.js +21 -25
  184. package/dist/services/Store/ContextMapContainer.d.ts +11 -18
  185. package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
  186. package/dist/services/Store/ContextMapContainer.js +17 -18
  187. package/dist/services/Store/Cosmos/query.d.ts +3 -2
  188. package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
  189. package/dist/services/Store/Cosmos/query.js +10 -11
  190. package/dist/services/Store/Cosmos.d.ts +2 -3
  191. package/dist/services/Store/Cosmos.d.ts.map +1 -1
  192. package/dist/services/Store/Cosmos.js +107 -90
  193. package/dist/services/Store/Disk.d.ts +4 -4
  194. package/dist/services/Store/Disk.d.ts.map +1 -1
  195. package/dist/services/Store/Disk.js +54 -50
  196. package/dist/services/Store/Memory.d.ts +6 -8
  197. package/dist/services/Store/Memory.d.ts.map +1 -1
  198. package/dist/services/Store/Memory.js +93 -89
  199. package/dist/services/Store/codeFilter.d.ts.map +1 -1
  200. package/dist/services/Store/codeFilter.js +3 -3
  201. package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
  202. package/dist/services/Store/filterApi/query.d.ts +1 -1
  203. package/dist/services/Store/filterApi/query.d.ts.map +1 -1
  204. package/dist/services/Store/filterApi/query.js +3 -3
  205. package/dist/services/Store/index.d.ts +1 -2
  206. package/dist/services/Store/index.d.ts.map +1 -1
  207. package/dist/services/Store/index.js +7 -8
  208. package/dist/services/Store/service.d.ts +20 -23
  209. package/dist/services/Store/service.d.ts.map +1 -1
  210. package/dist/services/Store/service.js +6 -6
  211. package/dist/services/Store/utils.d.ts +3 -3
  212. package/dist/services/Store/utils.d.ts.map +1 -1
  213. package/dist/services/Store/utils.js +26 -28
  214. package/dist/services/query.d.ts +6 -6
  215. package/dist/services/query.d.ts.map +1 -1
  216. package/dist/services/query.js +5 -3
  217. package/dist/test.arbs.d.ts +0 -2
  218. package/dist/test.arbs.d.ts.map +1 -1
  219. package/dist/test.arbs.js +3 -4
  220. package/package.json +28 -168
  221. package/src/RequestContext.ts +1 -0
  222. package/src/_ext/Array.ts +5 -2
  223. package/src/api/reportError.ts +14 -10
  224. package/src/api/routing/base.ts +77 -110
  225. package/src/api/routing/defaultErrorHandler.ts +64 -54
  226. package/src/api/routing/makeRequestHandler.ts +165 -135
  227. package/src/api/routing/match.ts +14 -8
  228. package/src/api/{express → routing}/schema/jwt.ts +6 -5
  229. package/src/api/{express → routing}/schema/routing.ts +2 -1
  230. package/src/api/setupRequest.ts +30 -24
  231. package/src/errorReporter.ts +12 -11
  232. package/src/errors.ts +1 -0
  233. package/src/filter/types/path/index.ts +2 -2
  234. package/src/logger/jsonLogger.ts +6 -5
  235. package/src/logger/logFmtLogger.ts +4 -5
  236. package/src/logger/shared.ts +4 -3
  237. package/src/rateLimit.ts +37 -34
  238. package/src/services/Emailer/Sendgrid.ts +12 -10
  239. package/src/services/Emailer/fake.ts +7 -4
  240. package/src/services/Emailer/service.ts +4 -1
  241. package/src/services/Operations/live.ts +66 -59
  242. package/src/services/Operations/service.ts +41 -34
  243. package/src/services/QueueMaker/errors.ts +15 -11
  244. package/src/services/QueueMaker/memQueue.ts +59 -40
  245. package/src/services/QueueMaker/sbqueue.ts +54 -33
  246. package/src/services/QueueMaker/service.ts +7 -6
  247. package/src/services/Repository/dsl.ts +12 -8
  248. package/src/services/Repository/ext.ts +52 -44
  249. package/src/services/RepositoryBase.ts +278 -240
  250. package/src/services/RequestContextContainer.ts +30 -18
  251. package/src/services/Store/ContextMapContainer.ts +26 -13
  252. package/src/services/Store/Cosmos/query.ts +17 -11
  253. package/src/services/Store/Cosmos.ts +209 -168
  254. package/src/services/Store/Disk.ts +69 -53
  255. package/src/services/Store/Memory.ts +138 -97
  256. package/src/services/Store/{Redis.ts → Redis.ts.bak} +7 -5
  257. package/src/services/Store/codeFilter.test.ts +61 -36
  258. package/src/services/Store/codeFilter.ts +1 -0
  259. package/src/services/Store/filterApi/query.ts +1 -0
  260. package/src/services/Store/index.ts +7 -6
  261. package/src/services/Store/service.ts +4 -1
  262. package/src/services/Store/utils.ts +25 -23
  263. package/src/services/query.ts +3 -2
  264. package/src/services/simpledb/{cosmosdb.ts → cosmosdb.ts.bak} +1 -0
  265. package/src/services/simpledb/{diskdb.ts → diskdb.ts.bak} +2 -1
  266. package/src/services/simpledb/{memdb.ts → memdb.ts.bak} +3 -2
  267. package/src/services/simpledb/{mongodb.ts → mongodb.ts.bak} +1 -0
  268. package/src/services/simpledb/{redisdb.ts → redisdb.ts.bak} +17 -14
  269. package/src/services/simpledb/{shared.ts → shared.ts.bak} +2 -1
  270. package/src/services/simpledb/{simpledb.ts → simpledb.ts.bak} +6 -2
  271. package/tsconfig.json +4 -21
  272. package/tsconfig.json.bak +0 -4
  273. package/_cjs/_global.cjs +0 -6
  274. package/_cjs/_global.cjs.map +0 -1
  275. package/_cjs/_global.ext.cjs +0 -5
  276. package/_cjs/_global.ext.cjs.map +0 -1
  277. package/_cjs/_global.schema.cjs +0 -5
  278. package/_cjs/_global.schema.cjs.map +0 -1
  279. package/_cjs/api/defaultErrorHandler.cjs +0 -37
  280. package/_cjs/api/defaultErrorHandler.cjs.map +0 -1
  281. package/_cjs/api/express/schema/jwt.cjs.map +0 -1
  282. package/_cjs/api/express/schema/routing.cjs +0 -23
  283. package/_cjs/api/express/schema/routing.cjs.map +0 -1
  284. package/_cjs/api/http.cjs +0 -42
  285. package/_cjs/api/http.cjs.map +0 -1
  286. package/_cjs/services/Store/Redis.cjs +0 -73
  287. package/_cjs/services/Store/Redis.cjs.map +0 -1
  288. package/_cjs/services/simpledb/cosmosdb.cjs +0 -109
  289. package/_cjs/services/simpledb/cosmosdb.cjs.map +0 -1
  290. package/_cjs/services/simpledb/diskdb.cjs +0 -125
  291. package/_cjs/services/simpledb/diskdb.cjs.map +0 -1
  292. package/_cjs/services/simpledb/index.cjs +0 -38
  293. package/_cjs/services/simpledb/index.cjs.map +0 -1
  294. package/_cjs/services/simpledb/memdb.cjs +0 -72
  295. package/_cjs/services/simpledb/memdb.cjs.map +0 -1
  296. package/_cjs/services/simpledb/mongodb.cjs +0 -99
  297. package/_cjs/services/simpledb/mongodb.cjs.map +0 -1
  298. package/_cjs/services/simpledb/redisdb.cjs +0 -135
  299. package/_cjs/services/simpledb/redisdb.cjs.map +0 -1
  300. package/_cjs/services/simpledb/shared.cjs +0 -79
  301. package/_cjs/services/simpledb/shared.cjs.map +0 -1
  302. package/_cjs/services/simpledb/simpledb.cjs +0 -85
  303. package/_cjs/services/simpledb/simpledb.cjs.map +0 -1
  304. package/dist/_global.d.ts +0 -10
  305. package/dist/_global.d.ts.map +0 -1
  306. package/dist/_global.ext.d.ts +0 -34
  307. package/dist/_global.ext.d.ts.map +0 -1
  308. package/dist/_global.ext.js +0 -6
  309. package/dist/_global.js +0 -12
  310. package/dist/_global.schema.d.ts +0 -6
  311. package/dist/_global.schema.d.ts.map +0 -1
  312. package/dist/_global.schema.js +0 -9
  313. package/dist/api/defaultErrorHandler.d.ts +0 -6
  314. package/dist/api/defaultErrorHandler.d.ts.map +0 -1
  315. package/dist/api/defaultErrorHandler.js +0 -34
  316. package/dist/api/express/schema/jwt.d.ts +0 -6
  317. package/dist/api/express/schema/jwt.d.ts.map +0 -1
  318. package/dist/api/express/schema/jwt.js +0 -11
  319. package/dist/api/express/schema/routing.d.ts.map +0 -1
  320. package/dist/api/express/schema/routing.js +0 -10
  321. package/dist/api/http.d.ts +0 -16
  322. package/dist/api/http.d.ts.map +0 -1
  323. package/dist/api/http.js +0 -12
  324. package/dist/services/Store/Redis.d.ts +0 -6
  325. package/dist/services/Store/Redis.d.ts.map +0 -1
  326. package/dist/services/Store/Redis.js +0 -76
  327. package/dist/services/simpledb/cosmosdb.d.ts +0 -14
  328. package/dist/services/simpledb/cosmosdb.d.ts.map +0 -1
  329. package/dist/services/simpledb/cosmosdb.js +0 -103
  330. package/dist/services/simpledb/diskdb.d.ts +0 -12
  331. package/dist/services/simpledb/diskdb.d.ts.map +0 -1
  332. package/dist/services/simpledb/diskdb.js +0 -109
  333. package/dist/services/simpledb/index.d.ts +0 -7
  334. package/dist/services/simpledb/index.d.ts.map +0 -1
  335. package/dist/services/simpledb/index.js +0 -7
  336. package/dist/services/simpledb/memdb.d.ts +0 -11
  337. package/dist/services/simpledb/memdb.d.ts.map +0 -1
  338. package/dist/services/simpledb/memdb.js +0 -58
  339. package/dist/services/simpledb/mongodb.d.ts +0 -13
  340. package/dist/services/simpledb/mongodb.d.ts.map +0 -1
  341. package/dist/services/simpledb/mongodb.js +0 -68
  342. package/dist/services/simpledb/redisdb.d.ts +0 -35
  343. package/dist/services/simpledb/redisdb.d.ts.map +0 -1
  344. package/dist/services/simpledb/redisdb.js +0 -126
  345. package/dist/services/simpledb/shared.d.ts +0 -87
  346. package/dist/services/simpledb/shared.d.ts.map +0 -1
  347. package/dist/services/simpledb/shared.js +0 -52
  348. package/dist/services/simpledb/simpledb.d.ts +0 -23
  349. package/dist/services/simpledb/simpledb.d.ts.map +0 -1
  350. package/dist/services/simpledb/simpledb.js +0 -69
  351. package/src/_global.ext.ts +0 -36
  352. package/src/_global.schema.ts +0 -10
  353. package/src/_global.ts +0 -14
  354. package/src/api/defaultErrorHandler.ts +0 -59
  355. package/src/api/express/makeJsonSchema.test.ts.bak +0 -76
  356. package/src/api/express/makeJsonSchema.ts.bak +0 -166
  357. package/src/api/express/makeOpenApiSpecs.ts.bak +0 -62
  358. package/src/api/http.ts +0 -26
  359. package/tsplus.config.json +0 -9
  360. /package/src/services/simpledb/{index.ts → index.ts.bak} +0 -0
@@ -1,76 +0,0 @@
1
- import { InvalidStateError } from "../../errors.js"
2
- import { checkPaths } from "./makeJsonSchema.js"
3
-
4
- const path = { path: "/securities/:id/search/:id2", method: "get" }
5
-
6
- const equalPaths = [
7
- "/securities/:idt/search/:id2",
8
- "/securities/:id/search/:id2t",
9
- "/securities/:idt/search/:id2t"
10
- ]
11
- .map((path) => ({ path, method: "get" }))
12
-
13
- const differentPaths: {
14
- path: string
15
- method: string
16
- }[] = [
17
- "/securities/search/:id2",
18
- "/securities/:id/search/",
19
- "/securities/:id/search/:id2",
20
- "/securities/:id/:id2/search/:id3"
21
- ]
22
- .map((path) => ({ path, method: "get" }))
23
- .concat([
24
- "/securities/:idt/search/:id2"
25
- ]
26
- .map((path) => ({ path, method: "post" })))
27
-
28
- test("works", async () => {
29
- expect(await (checkPaths(differentPaths)).runPromise).toStrictEqual(differentPaths)
30
-
31
- for (const p of equalPaths) {
32
- expect(await checkPaths([path, p]).runPromiseExit).toStrictEqual(
33
- Exit.fail(new InvalidStateError(`Duplicate method ${p.method} for path ${p.path}`))
34
- )
35
- }
36
-
37
- // should it error out? I think not
38
- // expect(await checkPaths(["a/:p1/c/:p2", "a/b"].map((path) => ({ path, method: "get" }))).runPromiseEither)
39
- // .toStrictEqual(
40
- // Either.left(new InvalidStateError(`Path /a/b/ is shadowed by /a/:p1/`))
41
- // )
42
-
43
- // should not error out
44
- // expect(await checkPaths([{ path: "a/:p1/c/:p2", method: "post" }, { path: "a/b", method: "get" }]).runPromiseEither)
45
- // .toStrictEqual(
46
- // Either.left(new InvalidStateError(`Path /a/b/ is shadowed by /a/:p1/`))
47
- // )
48
-
49
- // should not error out
50
- // expect(await checkPaths([{ path: "a/:param/c/d", method: "get" }, { path: "a/b/c/e", method: "get" }]).runPromiseEither)
51
- // .toStrictEqual(
52
- // Either.left(new InvalidStateError(`Path /a/b/ is shadowed by /a/:p1/`))
53
- // )
54
-
55
- // it should error out
56
- // expect(await checkPaths(["a/:p1/c/:p2", "a/:p111/c/d"].map((path) => ({ path, method: "get" }))).runPromiseEither)
57
- // .toStrictEqual(
58
- // Either.left(new InvalidStateError(`Path /a/:p1/c/d/ is shadowed by /a/:p1/c/:p2/`))
59
- // )
60
- })
61
-
62
- // it should log
63
- // test("log shadowing", async () => {
64
- // const arr: string[] = []
65
- // const paths = ["a/b", "a/:p"].map((path) => ({ path, method: "get" }))
66
-
67
- // const CustomLogger = Logger.make<string, void>((_, __, message) => {
68
- // arr.push(message)
69
- // })
70
-
71
- // await checkPaths(paths)
72
- // .provideLayer(Logger.replace(Logger.defaultLogger, CustomLogger))
73
- // .runPromise
74
-
75
- // expect(arr).toStrictEqual([`Path /a/:p/ is partially shadowed by /a/b/`])
76
- // })
@@ -1,166 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import { InvalidStateError } from "../../errors.js"
4
- import * as RS from "./schema/routing.js"
5
-
6
- type Methods = "GET" | "PUT" | "POST" | "PATCH" | "DELETE"
7
-
8
- const rx = /:(\w+)/g
9
-
10
- type _A<C> = C extends ReadonlyArray<infer A> ? A : never
11
-
12
- class PathsTree {
13
- public readonly methods: string[]
14
- public readonly params: { [key: number]: PathsTree | undefined }
15
- public readonly subpaths: { [key: string]: PathsTree | undefined }
16
- public readonly path: string
17
-
18
- constructor(path: string) {
19
- this.methods = []
20
- this.params = {}
21
- this.subpaths = {}
22
- this.path = path
23
- }
24
- }
25
-
26
- // interface Match {
27
- // _tag: "resource" | "param"
28
- // value: string
29
- // }
30
-
31
- // function checkShadowing(
32
- // pathNavigator: PathsTree,
33
- // match: Match
34
- // ) {
35
- // return Effect.gen(function*($) {
36
- // switch (match._tag) {
37
- // case "resource": {
38
- // // check shadowing: if 'a/:param' comes before 'a/b', then 'a/b' is shadowed
39
- // if (pathNavigator.params[1]) {
40
- // return yield* $(
41
- // new InvalidStateError(
42
- // `Path ${pathNavigator.path}${match.value}/ is shadowed by ${pathNavigator.params[1].path}`
43
- // )
44
- // )
45
- // }
46
- // break
47
- // }
48
- // case "param": {
49
- // // check shadowing: if 'a/b' comes before 'a/:param', then 'a/"param' is partially shadowed
50
- // const subpaths = Object.getOwnPropertyNames(pathNavigator.subpaths)
51
- // if (subpaths.length > 0) {
52
- // yield* $(subpaths.forEachEffect((s) =>
53
- // Effect.logInfo(
54
- // `Path ${pathNavigator.path}:${match.value}/ is partially shadowed by ${pathNavigator.subpaths[s]!.path}`
55
- // )
56
- // ))
57
- // }
58
- // break
59
- // }
60
- // }
61
- // })
62
- // }
63
-
64
- export function checkPaths<T extends { path: string; method: string }>(
65
- paths: readonly T[]
66
- ) {
67
- return Effect.gen(function*($) {
68
- const pathMethods: PathsTree = new PathsTree("/")
69
- const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g
70
- for (const path of paths) {
71
- const matches = [...path.path.matchAll(regex)]
72
- .map((match) =>
73
- match[1]
74
- ? { _tag: "resource", value: match[1] } as const
75
- : { _tag: "param", value: match[2]! } as const
76
- )
77
-
78
- let pathNavigator = pathMethods
79
- for (let i = 0; i < matches.length;) {
80
- const match = matches[i]!
81
-
82
- // yield* $(checkShadowing(pathNavigator, match))
83
-
84
- switch (match._tag) {
85
- case "resource": {
86
- if (!(match.value in pathNavigator.subpaths)) {
87
- pathNavigator.subpaths[match.value] = new PathsTree(`${pathNavigator.path}${match.value}/`)
88
- }
89
-
90
- pathNavigator = pathNavigator.subpaths[match.value]!
91
- i++
92
- break
93
- }
94
- case "param": {
95
- const paramsNames = [match.value]
96
- let numberOfParams = 1
97
- while (i < matches.length && matches[i + 1]?._tag === "param") {
98
- numberOfParams++
99
- i++
100
- paramsNames.push(matches[i]!.value)
101
- }
102
-
103
- if (!(numberOfParams in pathNavigator.params)) {
104
- pathNavigator.params[numberOfParams] = new PathsTree(
105
- `${pathNavigator.path}:${paramsNames.join("/:")}/`
106
- )
107
- }
108
- pathNavigator = pathNavigator.params[numberOfParams]!
109
- i++
110
- break
111
- }
112
- }
113
- }
114
-
115
- if (pathNavigator.methods.includes(path.method)) {
116
- // throw duplicate path-method error
117
- return yield* $(new InvalidStateError(`Duplicate method ${path.method} for path ${path.path}`))
118
- }
119
- pathNavigator.methods.push(path.method)
120
- }
121
-
122
- return paths
123
- })
124
- }
125
-
126
- /**
127
- * Work in progress JSONSchema generator.
128
- */
129
- export function makeJsonSchema(r: Iterable<RS.RouteDescriptorAny>) {
130
- return Chunk
131
- .fromIterable(r)
132
- .forEachEffect(RS.makeFromSchema)
133
- .flatMap(checkPaths)
134
- .map((e) => {
135
- const map = ({ method, path, responses, ...rest }: _A<typeof e>) => ({
136
- [method]: {
137
- ...rest,
138
- responses: (responses as Array<any>).reduce(
139
- (prev, cur) => {
140
- prev[cur.statusCode] = cur.type
141
- return prev
142
- },
143
- {} as Record<Response["statusCode"], Response["type"]>
144
- )
145
- }
146
- })
147
- return e.reduce(
148
- (prev, e) => {
149
- const path = e.path.split("?")[0].replace(rx, (_a, b) => `{${b}}`)
150
- prev[path] = {
151
- ...prev[path],
152
- ...map(e) as any
153
- }
154
- return prev
155
- },
156
- {} as Record<string, Record<Methods, ReturnType<typeof map>>>
157
- )
158
- })
159
- }
160
-
161
- class Response {
162
- constructor(
163
- public readonly statusCode: number,
164
- public readonly type: any // string | JSONSchema | SubSchema
165
- ) {}
166
- }
@@ -1,62 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type * as Plutus from "@effect-app/infra-adapters/Openapi/atlas-plutus"
3
- import type { JSONSchema, SubSchema } from "@effect-app/infra-adapters/Openapi/atlas-plutus/JsonSchema/index"
4
- import { References } from "@effect-app/infra-adapters/Openapi/atlas-plutus/Schema/index"
5
- import { makeJsonSchema } from "./makeJsonSchema.js"
6
- import type { RouteDescriptorAny } from "./schema/routing.js"
7
-
8
- export function makeOpenApiSpecs(
9
- rdescs: Iterable<RouteDescriptorAny>,
10
- info: Plutus.Info
11
- ) {
12
- return Effect.gen(function*($) {
13
- const ref = yield* $(Ref.make<Map<string, JSONSchema | SubSchema>>(new Map()))
14
- const paths = yield* $(makeJsonSchema(rdescs).provideService(References, { ref }))
15
- const refs = yield* $(ref.get)
16
- const parameterRefs: Record<string, any> = {} // todos
17
- const schemas: Record<string, any> = {}
18
- const securitySchemes = {
19
- bearerAuth: {
20
- type: "http",
21
- scheme: "bearer",
22
- bearerFormat: "JWT"
23
- }
24
- } // { basicAuth: { type: "http", scheme: "basic" } }
25
- const components = { securitySchemes, schemas, parameters: parameterRefs }
26
-
27
- for (const entry of refs.entries()) {
28
- // eslint-disable-next-line prefer-destructuring
29
- schemas[entry[0]] = entry[1]
30
- }
31
-
32
- return {
33
- openapi: "3.0.0",
34
- info: {
35
- title: info.title,
36
- description: info.description,
37
- termsOfService: info.tos,
38
- contact: info.contact
39
- ? {
40
- name: info.contact.name,
41
- email: info.contact.email,
42
- url: info.contact.url
43
- }
44
- : undefined,
45
- license: info.license
46
- ? {
47
- name: info.license.name,
48
- url: info.license.url
49
- }
50
- : undefined,
51
- version: info.version
52
- },
53
- tags: [],
54
- paths,
55
- components,
56
- security: [
57
- { bearerAuth: [] }
58
- ]
59
- // test,
60
- }
61
- })
62
- }
package/src/api/http.ts DELETED
@@ -1,26 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import type { Route as HttpRoute, Router as HttpRouter } from "@effect/platform/Http/Router"
4
-
5
- export type { HttpApp } from "@effect/platform/Http/App"
6
- export type { Body as HttpBody } from "@effect/platform/Http/Body"
7
- export * as HttpHeaders from "@effect/platform/Http/Headers"
8
- export type { Middleware as HttpMiddleware } from "@effect/platform/Http/Middleware"
9
- export { RouteContext as HttpRouteContext } from "@effect/platform/Http/Router"
10
- export { RequestError as HttpRequestError } from "@effect/platform/Http/ServerError"
11
- export { ServerRequest as HttpServerRequest } from "@effect/platform/Http/ServerRequest"
12
- export type { ServerResponse as HttpServerResponse } from "@effect/platform/Http/ServerResponse"
13
- export type { HttpRoute, HttpRouter }
14
- export * as HttpServer from "@effect/platform/Http/Server"
15
-
16
- /**
17
- * @tsplus unify effect/platform/Http/Router/Route
18
- */
19
- export function unifyRoute<X extends HttpRoute<any, any>>(
20
- self: X
21
- ): HttpRoute<
22
- X extends HttpRoute<infer EX, any> ? EX : never,
23
- X extends HttpRoute<any, infer AX> ? AX : never
24
- > {
25
- return self
26
- }
@@ -1,9 +0,0 @@
1
- {
2
- "importMap": {
3
- "^(.*)/packages/prelude/src/(.*)\\.[cm]?[tj]s$": "effect-app/$2",
4
- "^(.*)/packages/(.*)/src/(.*)\\.[cm]?[tj]s$": "@effect-app/$2/$3",
5
- "^(.*)/node_modules/@effect-app/prelude/src/(.*)\\.[cm]?[tj]s$": "effect-app/$2",
6
- "^(.*)/node_modules/@effect-app/(.*)/src/(.*)\\.[cm]?[tj]s$": "@effect-app/$2/$3",
7
- ".pnpm/[^\/]*/node_modules/(.*)": "$1"
8
- }
9
- }