@gettersethya/mira 0.1.0-alpha.10

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 (399) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/src/app/app.d.ts +100 -0
  4. package/dist/src/app/app.d.ts.map +1 -0
  5. package/dist/src/app/app.js +176 -0
  6. package/dist/src/app/app.js.map +1 -0
  7. package/dist/src/app/builder.d.ts +106 -0
  8. package/dist/src/app/builder.d.ts.map +1 -0
  9. package/dist/src/app/builder.js +122 -0
  10. package/dist/src/app/builder.js.map +1 -0
  11. package/dist/src/app/index.d.ts +33 -0
  12. package/dist/src/app/index.d.ts.map +1 -0
  13. package/dist/src/app/index.js +30 -0
  14. package/dist/src/app/index.js.map +1 -0
  15. package/dist/src/app/plugin.d.ts +60 -0
  16. package/dist/src/app/plugin.d.ts.map +1 -0
  17. package/dist/src/app/plugin.js +20 -0
  18. package/dist/src/app/plugin.js.map +1 -0
  19. package/dist/src/app/types.d.ts +55 -0
  20. package/dist/src/app/types.d.ts.map +1 -0
  21. package/dist/src/app/types.js +2 -0
  22. package/dist/src/app/types.js.map +1 -0
  23. package/dist/src/cache/cached-collection.d.ts +30 -0
  24. package/dist/src/cache/cached-collection.d.ts.map +1 -0
  25. package/dist/src/cache/cached-collection.js +107 -0
  26. package/dist/src/cache/cached-collection.js.map +1 -0
  27. package/dist/src/cache/collection-cache.d.ts +17 -0
  28. package/dist/src/cache/collection-cache.d.ts.map +1 -0
  29. package/dist/src/cache/collection-cache.js +37 -0
  30. package/dist/src/cache/collection-cache.js.map +1 -0
  31. package/dist/src/cache/index.d.ts +4 -0
  32. package/dist/src/cache/index.d.ts.map +1 -0
  33. package/dist/src/cache/index.js +3 -0
  34. package/dist/src/cache/index.js.map +1 -0
  35. package/dist/src/cache/types.d.ts +12 -0
  36. package/dist/src/cache/types.d.ts.map +1 -0
  37. package/dist/src/cache/types.js +2 -0
  38. package/dist/src/cache/types.js.map +1 -0
  39. package/dist/src/collection-service/collection-service.d.ts +62 -0
  40. package/dist/src/collection-service/collection-service.d.ts.map +1 -0
  41. package/dist/src/collection-service/collection-service.js +289 -0
  42. package/dist/src/collection-service/collection-service.js.map +1 -0
  43. package/dist/src/collection-service/context.d.ts +19 -0
  44. package/dist/src/collection-service/context.d.ts.map +1 -0
  45. package/dist/src/collection-service/context.js +2 -0
  46. package/dist/src/collection-service/context.js.map +1 -0
  47. package/dist/src/collection-service/decode.d.ts +6 -0
  48. package/dist/src/collection-service/decode.d.ts.map +1 -0
  49. package/dist/src/collection-service/decode.js +26 -0
  50. package/dist/src/collection-service/decode.js.map +1 -0
  51. package/dist/src/collection-service/errors.d.ts +67 -0
  52. package/dist/src/collection-service/errors.d.ts.map +1 -0
  53. package/dist/src/collection-service/errors.js +43 -0
  54. package/dist/src/collection-service/errors.js.map +1 -0
  55. package/dist/src/collection-service/index.d.ts +5 -0
  56. package/dist/src/collection-service/index.d.ts.map +1 -0
  57. package/dist/src/collection-service/index.js +3 -0
  58. package/dist/src/collection-service/index.js.map +1 -0
  59. package/dist/src/collection-service/input-schema.d.ts +10 -0
  60. package/dist/src/collection-service/input-schema.d.ts.map +1 -0
  61. package/dist/src/collection-service/input-schema.js +123 -0
  62. package/dist/src/collection-service/input-schema.js.map +1 -0
  63. package/dist/src/collection-service/where.d.ts +35 -0
  64. package/dist/src/collection-service/where.d.ts.map +1 -0
  65. package/dist/src/collection-service/where.js +91 -0
  66. package/dist/src/collection-service/where.js.map +1 -0
  67. package/dist/src/config/config.d.ts +44 -0
  68. package/dist/src/config/config.d.ts.map +1 -0
  69. package/dist/src/config/config.js +89 -0
  70. package/dist/src/config/config.js.map +1 -0
  71. package/dist/src/config/index.d.ts +3 -0
  72. package/dist/src/config/index.d.ts.map +1 -0
  73. package/dist/src/config/index.js +2 -0
  74. package/dist/src/config/index.js.map +1 -0
  75. package/dist/src/config/types.d.ts +29 -0
  76. package/dist/src/config/types.d.ts.map +1 -0
  77. package/dist/src/config/types.js +2 -0
  78. package/dist/src/config/types.js.map +1 -0
  79. package/dist/src/crypto/crypto.d.ts +11 -0
  80. package/dist/src/crypto/crypto.d.ts.map +1 -0
  81. package/dist/src/crypto/crypto.js +4 -0
  82. package/dist/src/crypto/crypto.js.map +1 -0
  83. package/dist/src/crypto/index.d.ts +3 -0
  84. package/dist/src/crypto/index.d.ts.map +1 -0
  85. package/dist/src/crypto/index.js +3 -0
  86. package/dist/src/crypto/index.js.map +1 -0
  87. package/dist/src/crypto/node.d.ts +4 -0
  88. package/dist/src/crypto/node.d.ts.map +1 -0
  89. package/dist/src/crypto/node.js +9 -0
  90. package/dist/src/crypto/node.js.map +1 -0
  91. package/dist/src/databases/index.d.ts +2 -0
  92. package/dist/src/databases/index.d.ts.map +1 -0
  93. package/dist/src/databases/index.js +2 -0
  94. package/dist/src/databases/index.js.map +1 -0
  95. package/dist/src/databases/sqlite.d.ts +24 -0
  96. package/dist/src/databases/sqlite.d.ts.map +1 -0
  97. package/dist/src/databases/sqlite.js +27 -0
  98. package/dist/src/databases/sqlite.js.map +1 -0
  99. package/dist/src/hooks/hook-collection.d.ts +5 -0
  100. package/dist/src/hooks/hook-collection.d.ts.map +1 -0
  101. package/dist/src/hooks/hook-collection.js +77 -0
  102. package/dist/src/hooks/hook-collection.js.map +1 -0
  103. package/dist/src/hooks/hook-service.d.ts +33 -0
  104. package/dist/src/hooks/hook-service.d.ts.map +1 -0
  105. package/dist/src/hooks/hook-service.js +118 -0
  106. package/dist/src/hooks/hook-service.js.map +1 -0
  107. package/dist/src/hooks/index.d.ts +4 -0
  108. package/dist/src/hooks/index.d.ts.map +1 -0
  109. package/dist/src/hooks/index.js +3 -0
  110. package/dist/src/hooks/index.js.map +1 -0
  111. package/dist/src/hooks/types.d.ts +52 -0
  112. package/dist/src/hooks/types.d.ts.map +1 -0
  113. package/dist/src/hooks/types.js +2 -0
  114. package/dist/src/hooks/types.js.map +1 -0
  115. package/dist/src/http/auth-node.d.ts +4 -0
  116. package/dist/src/http/auth-node.d.ts.map +1 -0
  117. package/dist/src/http/auth-node.js +34 -0
  118. package/dist/src/http/auth-node.js.map +1 -0
  119. package/dist/src/http/auth.d.ts +40 -0
  120. package/dist/src/http/auth.d.ts.map +1 -0
  121. package/dist/src/http/auth.js +76 -0
  122. package/dist/src/http/auth.js.map +1 -0
  123. package/dist/src/http/errors.d.ts +31 -0
  124. package/dist/src/http/errors.d.ts.map +1 -0
  125. package/dist/src/http/errors.js +36 -0
  126. package/dist/src/http/errors.js.map +1 -0
  127. package/dist/src/http/file-serve.d.ts +10 -0
  128. package/dist/src/http/file-serve.d.ts.map +1 -0
  129. package/dist/src/http/file-serve.js +159 -0
  130. package/dist/src/http/file-serve.js.map +1 -0
  131. package/dist/src/http/file-token.d.ts +7 -0
  132. package/dist/src/http/file-token.d.ts.map +1 -0
  133. package/dist/src/http/file-token.js +57 -0
  134. package/dist/src/http/file-token.js.map +1 -0
  135. package/dist/src/http/files.d.ts +11 -0
  136. package/dist/src/http/files.d.ts.map +1 -0
  137. package/dist/src/http/files.js +85 -0
  138. package/dist/src/http/files.js.map +1 -0
  139. package/dist/src/http/index.d.ts +11 -0
  140. package/dist/src/http/index.d.ts.map +1 -0
  141. package/dist/src/http/index.js +9 -0
  142. package/dist/src/http/index.js.map +1 -0
  143. package/dist/src/http/ip-middleware.d.ts +4 -0
  144. package/dist/src/http/ip-middleware.d.ts.map +1 -0
  145. package/dist/src/http/ip-middleware.js +24 -0
  146. package/dist/src/http/ip-middleware.js.map +1 -0
  147. package/dist/src/http/params.d.ts +15 -0
  148. package/dist/src/http/params.d.ts.map +1 -0
  149. package/dist/src/http/params.js +48 -0
  150. package/dist/src/http/params.js.map +1 -0
  151. package/dist/src/http/router.d.ts +11 -0
  152. package/dist/src/http/router.d.ts.map +1 -0
  153. package/dist/src/http/router.js +300 -0
  154. package/dist/src/http/router.js.map +1 -0
  155. package/dist/src/http/schema.d.ts +5 -0
  156. package/dist/src/http/schema.d.ts.map +1 -0
  157. package/dist/src/http/schema.js +17 -0
  158. package/dist/src/http/schema.js.map +1 -0
  159. package/dist/src/http/server-factory-node.d.ts +4 -0
  160. package/dist/src/http/server-factory-node.d.ts.map +1 -0
  161. package/dist/src/http/server-factory-node.js +8 -0
  162. package/dist/src/http/server-factory-node.js.map +1 -0
  163. package/dist/src/http/server-factory.d.ts +11 -0
  164. package/dist/src/http/server-factory.d.ts.map +1 -0
  165. package/dist/src/http/server-factory.js +4 -0
  166. package/dist/src/http/server-factory.js.map +1 -0
  167. package/dist/src/http/telemetry-routes.d.ts +5 -0
  168. package/dist/src/http/telemetry-routes.d.ts.map +1 -0
  169. package/dist/src/http/telemetry-routes.js +156 -0
  170. package/dist/src/http/telemetry-routes.js.map +1 -0
  171. package/dist/src/index.d.ts +19 -0
  172. package/dist/src/index.d.ts.map +1 -0
  173. package/dist/src/index.js +22 -0
  174. package/dist/src/index.js.map +1 -0
  175. package/dist/src/migrator/dialect-sqlite.d.ts +9 -0
  176. package/dist/src/migrator/dialect-sqlite.d.ts.map +1 -0
  177. package/dist/src/migrator/dialect-sqlite.js +102 -0
  178. package/dist/src/migrator/dialect-sqlite.js.map +1 -0
  179. package/dist/src/migrator/dialect.d.ts +24 -0
  180. package/dist/src/migrator/dialect.d.ts.map +1 -0
  181. package/dist/src/migrator/dialect.js +5 -0
  182. package/dist/src/migrator/dialect.js.map +1 -0
  183. package/dist/src/migrator/index.d.ts +8 -0
  184. package/dist/src/migrator/index.d.ts.map +1 -0
  185. package/dist/src/migrator/index.js +6 -0
  186. package/dist/src/migrator/index.js.map +1 -0
  187. package/dist/src/migrator/migrator.d.ts +36 -0
  188. package/dist/src/migrator/migrator.d.ts.map +1 -0
  189. package/dist/src/migrator/migrator.js +200 -0
  190. package/dist/src/migrator/migrator.js.map +1 -0
  191. package/dist/src/migrator/schema-diff.d.ts +25 -0
  192. package/dist/src/migrator/schema-diff.d.ts.map +1 -0
  193. package/dist/src/migrator/schema-diff.js +157 -0
  194. package/dist/src/migrator/schema-diff.js.map +1 -0
  195. package/dist/src/migrator/types.d.ts +91 -0
  196. package/dist/src/migrator/types.d.ts.map +1 -0
  197. package/dist/src/migrator/types.js +13 -0
  198. package/dist/src/migrator/types.js.map +1 -0
  199. package/dist/src/platforms/node.d.ts +40 -0
  200. package/dist/src/platforms/node.d.ts.map +1 -0
  201. package/dist/src/platforms/node.js +45 -0
  202. package/dist/src/platforms/node.js.map +1 -0
  203. package/dist/src/repository/id.d.ts +5 -0
  204. package/dist/src/repository/id.d.ts.map +1 -0
  205. package/dist/src/repository/id.js +9 -0
  206. package/dist/src/repository/id.js.map +1 -0
  207. package/dist/src/repository/index.d.ts +3 -0
  208. package/dist/src/repository/index.d.ts.map +1 -0
  209. package/dist/src/repository/index.js +2 -0
  210. package/dist/src/repository/index.js.map +1 -0
  211. package/dist/src/repository/repository.d.ts +53 -0
  212. package/dist/src/repository/repository.d.ts.map +1 -0
  213. package/dist/src/repository/repository.js +150 -0
  214. package/dist/src/repository/repository.js.map +1 -0
  215. package/dist/src/repository/types.d.ts +42 -0
  216. package/dist/src/repository/types.d.ts.map +1 -0
  217. package/dist/src/repository/types.js +2 -0
  218. package/dist/src/repository/types.js.map +1 -0
  219. package/dist/src/rule/compiler.d.ts +52 -0
  220. package/dist/src/rule/compiler.d.ts.map +1 -0
  221. package/dist/src/rule/compiler.js +115 -0
  222. package/dist/src/rule/compiler.js.map +1 -0
  223. package/dist/src/rule/enforcer.d.ts +47 -0
  224. package/dist/src/rule/enforcer.d.ts.map +1 -0
  225. package/dist/src/rule/enforcer.js +60 -0
  226. package/dist/src/rule/enforcer.js.map +1 -0
  227. package/dist/src/rule/index.d.ts +3 -0
  228. package/dist/src/rule/index.d.ts.map +1 -0
  229. package/dist/src/rule/index.js +3 -0
  230. package/dist/src/rule/index.js.map +1 -0
  231. package/dist/src/storage/index.d.ts +3 -0
  232. package/dist/src/storage/index.d.ts.map +1 -0
  233. package/dist/src/storage/index.js +3 -0
  234. package/dist/src/storage/index.js.map +1 -0
  235. package/dist/src/storage/local-preset.d.ts +21 -0
  236. package/dist/src/storage/local-preset.d.ts.map +1 -0
  237. package/dist/src/storage/local-preset.js +21 -0
  238. package/dist/src/storage/local-preset.js.map +1 -0
  239. package/dist/src/storage/storage.d.ts +83 -0
  240. package/dist/src/storage/storage.d.ts.map +1 -0
  241. package/dist/src/storage/storage.js +120 -0
  242. package/dist/src/storage/storage.js.map +1 -0
  243. package/dist/src/telemetry/collections.d.ts +4 -0
  244. package/dist/src/telemetry/collections.d.ts.map +1 -0
  245. package/dist/src/telemetry/collections.js +19 -0
  246. package/dist/src/telemetry/collections.js.map +1 -0
  247. package/dist/src/telemetry/index.d.ts +9 -0
  248. package/dist/src/telemetry/index.d.ts.map +1 -0
  249. package/dist/src/telemetry/index.js +9 -0
  250. package/dist/src/telemetry/index.js.map +1 -0
  251. package/dist/src/telemetry/logger.d.ts +4 -0
  252. package/dist/src/telemetry/logger.d.ts.map +1 -0
  253. package/dist/src/telemetry/logger.js +27 -0
  254. package/dist/src/telemetry/logger.js.map +1 -0
  255. package/dist/src/telemetry/sqlite-logger.d.ts +24 -0
  256. package/dist/src/telemetry/sqlite-logger.d.ts.map +1 -0
  257. package/dist/src/telemetry/sqlite-logger.js +152 -0
  258. package/dist/src/telemetry/sqlite-logger.js.map +1 -0
  259. package/dist/src/telemetry/telemetry-sql-client.d.ts +11 -0
  260. package/dist/src/telemetry/telemetry-sql-client.d.ts.map +1 -0
  261. package/dist/src/telemetry/telemetry-sql-client.js +8 -0
  262. package/dist/src/telemetry/telemetry-sql-client.js.map +1 -0
  263. package/dist/src/telemetry/tracer.d.ts +16 -0
  264. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  265. package/dist/src/telemetry/tracer.js +106 -0
  266. package/dist/src/telemetry/tracer.js.map +1 -0
  267. package/dist/src/thumbnail/index.d.ts +4 -0
  268. package/dist/src/thumbnail/index.d.ts.map +1 -0
  269. package/dist/src/thumbnail/index.js +3 -0
  270. package/dist/src/thumbnail/index.js.map +1 -0
  271. package/dist/src/thumbnail/photon.d.ts +9 -0
  272. package/dist/src/thumbnail/photon.d.ts.map +1 -0
  273. package/dist/src/thumbnail/photon.js +73 -0
  274. package/dist/src/thumbnail/photon.js.map +1 -0
  275. package/dist/src/thumbnail/types.d.ts +23 -0
  276. package/dist/src/thumbnail/types.d.ts.map +1 -0
  277. package/dist/src/thumbnail/types.js +22 -0
  278. package/dist/src/thumbnail/types.js.map +1 -0
  279. package/dist/tests/app/app.test.d.ts +2 -0
  280. package/dist/tests/app/app.test.d.ts.map +1 -0
  281. package/dist/tests/app/app.test.js +125 -0
  282. package/dist/tests/app/app.test.js.map +1 -0
  283. package/dist/tests/app/builder.test.d.ts +2 -0
  284. package/dist/tests/app/builder.test.d.ts.map +1 -0
  285. package/dist/tests/app/builder.test.js +70 -0
  286. package/dist/tests/app/builder.test.js.map +1 -0
  287. package/dist/tests/cache/cached-collection.test.d.ts +2 -0
  288. package/dist/tests/cache/cached-collection.test.d.ts.map +1 -0
  289. package/dist/tests/cache/cached-collection.test.js +244 -0
  290. package/dist/tests/cache/cached-collection.test.js.map +1 -0
  291. package/dist/tests/cache/collection-cache.test.d.ts +2 -0
  292. package/dist/tests/cache/collection-cache.test.d.ts.map +1 -0
  293. package/dist/tests/cache/collection-cache.test.js +73 -0
  294. package/dist/tests/cache/collection-cache.test.js.map +1 -0
  295. package/dist/tests/collection-service/collection-service.test.d.ts +2 -0
  296. package/dist/tests/collection-service/collection-service.test.d.ts.map +1 -0
  297. package/dist/tests/collection-service/collection-service.test.js +938 -0
  298. package/dist/tests/collection-service/collection-service.test.js.map +1 -0
  299. package/dist/tests/collection-service/input-schema.test.d.ts +2 -0
  300. package/dist/tests/collection-service/input-schema.test.d.ts.map +1 -0
  301. package/dist/tests/collection-service/input-schema.test.js +327 -0
  302. package/dist/tests/collection-service/input-schema.test.js.map +1 -0
  303. package/dist/tests/config/config.test.d.ts +2 -0
  304. package/dist/tests/config/config.test.d.ts.map +1 -0
  305. package/dist/tests/config/config.test.js +84 -0
  306. package/dist/tests/config/config.test.js.map +1 -0
  307. package/dist/tests/crypto/crypto.test.d.ts +2 -0
  308. package/dist/tests/crypto/crypto.test.d.ts.map +1 -0
  309. package/dist/tests/crypto/crypto.test.js +56 -0
  310. package/dist/tests/crypto/crypto.test.js.map +1 -0
  311. package/dist/tests/hooks/hook-collection.test.d.ts +2 -0
  312. package/dist/tests/hooks/hook-collection.test.d.ts.map +1 -0
  313. package/dist/tests/hooks/hook-collection.test.js +103 -0
  314. package/dist/tests/hooks/hook-collection.test.js.map +1 -0
  315. package/dist/tests/hooks/hook-service.test.d.ts +2 -0
  316. package/dist/tests/hooks/hook-service.test.d.ts.map +1 -0
  317. package/dist/tests/hooks/hook-service.test.js +216 -0
  318. package/dist/tests/hooks/hook-service.test.js.map +1 -0
  319. package/dist/tests/http/file-serve.test.d.ts +2 -0
  320. package/dist/tests/http/file-serve.test.d.ts.map +1 -0
  321. package/dist/tests/http/file-serve.test.js +210 -0
  322. package/dist/tests/http/file-serve.test.js.map +1 -0
  323. package/dist/tests/http/file-token.test.d.ts +2 -0
  324. package/dist/tests/http/file-token.test.d.ts.map +1 -0
  325. package/dist/tests/http/file-token.test.js +165 -0
  326. package/dist/tests/http/file-token.test.js.map +1 -0
  327. package/dist/tests/http/ip-middleware.test.d.ts +2 -0
  328. package/dist/tests/http/ip-middleware.test.d.ts.map +1 -0
  329. package/dist/tests/http/ip-middleware.test.js +58 -0
  330. package/dist/tests/http/ip-middleware.test.js.map +1 -0
  331. package/dist/tests/http/router.test.d.ts +2 -0
  332. package/dist/tests/http/router.test.d.ts.map +1 -0
  333. package/dist/tests/http/router.test.js +312 -0
  334. package/dist/tests/http/router.test.js.map +1 -0
  335. package/dist/tests/migrator/dialect-sqlite.test.d.ts +2 -0
  336. package/dist/tests/migrator/dialect-sqlite.test.d.ts.map +1 -0
  337. package/dist/tests/migrator/dialect-sqlite.test.js +90 -0
  338. package/dist/tests/migrator/dialect-sqlite.test.js.map +1 -0
  339. package/dist/tests/migrator/integration.test.d.ts +2 -0
  340. package/dist/tests/migrator/integration.test.d.ts.map +1 -0
  341. package/dist/tests/migrator/integration.test.js +180 -0
  342. package/dist/tests/migrator/integration.test.js.map +1 -0
  343. package/dist/tests/migrator/migrator.test.d.ts +2 -0
  344. package/dist/tests/migrator/migrator.test.d.ts.map +1 -0
  345. package/dist/tests/migrator/migrator.test.js +225 -0
  346. package/dist/tests/migrator/migrator.test.js.map +1 -0
  347. package/dist/tests/migrator/schema-diff.test.d.ts +2 -0
  348. package/dist/tests/migrator/schema-diff.test.d.ts.map +1 -0
  349. package/dist/tests/migrator/schema-diff.test.js +323 -0
  350. package/dist/tests/migrator/schema-diff.test.js.map +1 -0
  351. package/dist/tests/repository/repository.test.d.ts +2 -0
  352. package/dist/tests/repository/repository.test.d.ts.map +1 -0
  353. package/dist/tests/repository/repository.test.js +255 -0
  354. package/dist/tests/repository/repository.test.js.map +1 -0
  355. package/dist/tests/rule/compiler.test.d.ts +2 -0
  356. package/dist/tests/rule/compiler.test.d.ts.map +1 -0
  357. package/dist/tests/rule/compiler.test.js +226 -0
  358. package/dist/tests/rule/compiler.test.js.map +1 -0
  359. package/dist/tests/rule/enforcer.test.d.ts +2 -0
  360. package/dist/tests/rule/enforcer.test.d.ts.map +1 -0
  361. package/dist/tests/rule/enforcer.test.js +190 -0
  362. package/dist/tests/rule/enforcer.test.js.map +1 -0
  363. package/dist/tests/storage/storage.test.d.ts +2 -0
  364. package/dist/tests/storage/storage.test.d.ts.map +1 -0
  365. package/dist/tests/storage/storage.test.js +76 -0
  366. package/dist/tests/storage/storage.test.js.map +1 -0
  367. package/dist/tests/telemetry/collections.test.d.ts +2 -0
  368. package/dist/tests/telemetry/collections.test.d.ts.map +1 -0
  369. package/dist/tests/telemetry/collections.test.js +67 -0
  370. package/dist/tests/telemetry/collections.test.js.map +1 -0
  371. package/dist/tests/telemetry/instrumentation.test.d.ts +2 -0
  372. package/dist/tests/telemetry/instrumentation.test.d.ts.map +1 -0
  373. package/dist/tests/telemetry/instrumentation.test.js +226 -0
  374. package/dist/tests/telemetry/instrumentation.test.js.map +1 -0
  375. package/dist/tests/telemetry/logger.test.d.ts +2 -0
  376. package/dist/tests/telemetry/logger.test.d.ts.map +1 -0
  377. package/dist/tests/telemetry/logger.test.js +56 -0
  378. package/dist/tests/telemetry/logger.test.js.map +1 -0
  379. package/dist/tests/telemetry/sqlite-logger.test.d.ts +2 -0
  380. package/dist/tests/telemetry/sqlite-logger.test.d.ts.map +1 -0
  381. package/dist/tests/telemetry/sqlite-logger.test.js +218 -0
  382. package/dist/tests/telemetry/sqlite-logger.test.js.map +1 -0
  383. package/dist/tests/telemetry/telemetry-routes.test.d.ts +2 -0
  384. package/dist/tests/telemetry/telemetry-routes.test.d.ts.map +1 -0
  385. package/dist/tests/telemetry/telemetry-routes.test.js +133 -0
  386. package/dist/tests/telemetry/telemetry-routes.test.js.map +1 -0
  387. package/dist/tests/telemetry/tracer.test.d.ts +2 -0
  388. package/dist/tests/telemetry/tracer.test.d.ts.map +1 -0
  389. package/dist/tests/telemetry/tracer.test.js +63 -0
  390. package/dist/tests/telemetry/tracer.test.js.map +1 -0
  391. package/dist/tests/thumbnail/photon.test.d.ts +2 -0
  392. package/dist/tests/thumbnail/photon.test.d.ts.map +1 -0
  393. package/dist/tests/thumbnail/photon.test.js +478 -0
  394. package/dist/tests/thumbnail/photon.test.js.map +1 -0
  395. package/dist/tests/thumbnail/thumbnail.test.d.ts +2 -0
  396. package/dist/tests/thumbnail/thumbnail.test.d.ts.map +1 -0
  397. package/dist/tests/thumbnail/thumbnail.test.js +35 -0
  398. package/dist/tests/thumbnail/thumbnail.test.js.map +1 -0
  399. package/package.json +46 -0
@@ -0,0 +1,22 @@
1
+ // Re-export everything from the client package so server users only need @gettersethya/mira
2
+ export * from "@gettersethya/mira-client";
3
+ // App builder
4
+ export * from "./app/index.js";
5
+ export * from "./platforms/node.js";
6
+ export * from "./databases/index.js";
7
+ export * from "./storage/index.js";
8
+ // Server errors
9
+ export * from "./collection-service/errors.js";
10
+ // Plugin system
11
+ export * from "./hooks/index.js";
12
+ // Server services (for plugins and advanced usage)
13
+ export { Repository, RepositoryLive } from "./repository/index.js";
14
+ export { CollectionService, makeCollectionServiceLayer } from "./collection-service/index.js";
15
+ export { AuthService, hashPassword, verifyPassword, verifyJwt } from "./http/auth.js";
16
+ export { AppConfig, AppConfigLive } from "./config/index.js";
17
+ export { CryptoService } from "./crypto/index.js";
18
+ export { catchCollectionErrors } from "./http/errors.js";
19
+ // Telemetry (sqlite logger)
20
+ export { makeSqliteTelemetryLayer } from "./telemetry/sqlite-logger.js";
21
+ export { TelemetrySqlClient } from "./telemetry/telemetry-sql-client.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,cAAc,2BAA2B,CAAA;AAEzC,cAAc;AACd,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAElC,gBAAgB;AAChB,cAAc,gCAAgC,CAAA;AAK9C,gBAAgB;AAChB,cAAc,kBAAkB,CAAA;AAEhC,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAE7F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,4BAA4B;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { DialectType } from "./dialect.js";
2
+ /**
3
+ * SQLite dialect implementation.
4
+ * - Identifiers are double-quoted.
5
+ * - Booleans are stored as INTEGER (0/1).
6
+ * - `dropColumn` and `alterColumn` emit comment stubs — SQLite requires table recreation for these.
7
+ */
8
+ export declare const sqliteDialect: DialectType;
9
+ //# sourceMappingURL=dialect-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect-sqlite.d.ts","sourceRoot":"","sources":["../../../src/migrator/dialect-sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,WAkG3B,CAAA"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * SQLite dialect implementation.
3
+ * - Identifiers are double-quoted.
4
+ * - Booleans are stored as INTEGER (0/1).
5
+ * - `dropColumn` and `alterColumn` emit comment stubs — SQLite requires table recreation for these.
6
+ */
7
+ export const sqliteDialect = {
8
+ quoteIdentifier: (name) => `"${name}"`,
9
+ quoteLiteral: (value) => {
10
+ if (value === null)
11
+ return "NULL";
12
+ if (typeof value === "boolean")
13
+ return value ? "1" : "0";
14
+ if (typeof value === "number")
15
+ return String(value);
16
+ return `'${String(value).replace(/'/g, "''")}'`;
17
+ },
18
+ nativeType: (col) => {
19
+ switch (col.type) {
20
+ case "boolean":
21
+ return "INTEGER";
22
+ case "integer":
23
+ return "INTEGER";
24
+ case "real":
25
+ return "REAL";
26
+ case "text":
27
+ return "TEXT";
28
+ }
29
+ },
30
+ indexName: (table, fields) => `idx_${table}_${fields.join("_")}`,
31
+ translate: (step) => {
32
+ switch (step.kind) {
33
+ case "createTable": {
34
+ const cols = step.columns.map((col) => {
35
+ if (col.autoIncrement) {
36
+ return `${sqliteDialect.quoteIdentifier(col.name)} INTEGER PRIMARY KEY AUTOINCREMENT`;
37
+ }
38
+ const parts = [sqliteDialect.quoteIdentifier(col.name), sqliteDialect.nativeType(col)];
39
+ if (!col.nullable)
40
+ parts.push("NOT NULL");
41
+ if (col.unique)
42
+ parts.push("UNIQUE");
43
+ if (col.default !== undefined)
44
+ parts.push(`DEFAULT ${sqliteDialect.quoteLiteral(col.default)}`);
45
+ if (col.primaryKey)
46
+ parts.push("PRIMARY KEY");
47
+ return parts.join(" ");
48
+ });
49
+ return [`CREATE TABLE ${sqliteDialect.quoteIdentifier(step.table)} (\n ${cols.join(",\n ")}\n)`];
50
+ }
51
+ case "dropTable":
52
+ return [`DROP TABLE IF EXISTS ${sqliteDialect.quoteIdentifier(step.table)}`];
53
+ case "renameTable":
54
+ return [
55
+ `ALTER TABLE ${sqliteDialect.quoteIdentifier(step.from)} RENAME TO ${sqliteDialect.quoteIdentifier(step.to)}`
56
+ ];
57
+ case "addColumn": {
58
+ const c = step.column;
59
+ const parts = [sqliteDialect.quoteIdentifier(c.name), sqliteDialect.nativeType(c)];
60
+ if (!c.nullable)
61
+ parts.push("NOT NULL");
62
+ if (c.default !== undefined)
63
+ parts.push(`DEFAULT ${sqliteDialect.quoteLiteral(c.default)}`);
64
+ return [`ALTER TABLE ${sqliteDialect.quoteIdentifier(step.table)} ADD COLUMN ${parts.join(" ")}`];
65
+ }
66
+ case "dropColumn":
67
+ return [`-- dropColumn for ${step.column} requires table recreation`];
68
+ case "renameColumn":
69
+ return [
70
+ `ALTER TABLE ${sqliteDialect.quoteIdentifier(step.table)} RENAME COLUMN ${sqliteDialect.quoteIdentifier(step.from)} TO ${sqliteDialect.quoteIdentifier(step.to)}`
71
+ ];
72
+ case "alterColumn":
73
+ return [`-- alterColumn for ${step.column.name} requires table recreation`];
74
+ case "createIndex": {
75
+ const name = sqliteDialect.indexName(step.table, step.fields);
76
+ const unique = step.unique ? "UNIQUE " : "";
77
+ const cols = step.fields.map((f) => sqliteDialect.quoteIdentifier(f)).join(", ");
78
+ return [
79
+ `CREATE ${unique}INDEX ${sqliteDialect.quoteIdentifier(name)} ON ${sqliteDialect.quoteIdentifier(step.table)} (${cols})`
80
+ ];
81
+ }
82
+ case "dropIndex":
83
+ return [`DROP INDEX IF EXISTS ${sqliteDialect.quoteIdentifier(step.indexName)}`];
84
+ case "createSystemTable": {
85
+ const cols = step.columns.map((col) => {
86
+ const parts = [sqliteDialect.quoteIdentifier(col.name), sqliteDialect.nativeType(col)];
87
+ if (!col.nullable)
88
+ parts.push("NOT NULL");
89
+ if (col.primaryKey)
90
+ parts.push("PRIMARY KEY");
91
+ return parts.join(" ");
92
+ });
93
+ return [`CREATE TABLE IF NOT EXISTS ${sqliteDialect.quoteIdentifier(step.table)} (\n ${cols.join(",\n ")}\n)`];
94
+ }
95
+ case "createView":
96
+ return [`CREATE VIEW IF NOT EXISTS ${sqliteDialect.quoteIdentifier(step.view)} AS ${step.query}`];
97
+ case "dropView":
98
+ return [`DROP VIEW IF EXISTS ${sqliteDialect.quoteIdentifier(step.view)}`];
99
+ }
100
+ }
101
+ };
102
+ //# sourceMappingURL=dialect-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect-sqlite.js","sourceRoot":"","sources":["../../../src/migrator/dialect-sqlite.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG;IAEtC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAA;QACjC,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACnD,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;IACjD,CAAC;IAED,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;QAClB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAA;YAClB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAA;YAClB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAA;YACf,KAAK,MAAM;gBACT,OAAO,MAAM,CAAA;QACjB,CAAC;IACH,CAAC;IAED,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAEhE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACpC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAA;oBACvF,CAAC;oBACD,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBACtF,IAAI,CAAC,GAAG,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBACzC,IAAI,GAAG,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACpC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;wBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBAC/F,IAAI,GAAG,CAAC,UAAU;wBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;gBACF,OAAO,CAAC,gBAAgB,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACpG,CAAC;YAED,KAAK,WAAW;gBACd,OAAO,CAAC,wBAAwB,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAE9E,KAAK,aAAa;gBAChB,OAAO;oBACL,eAAe,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;iBAC9G,CAAA;YAEH,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;gBACrB,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClF,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACvC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;oBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;gBAC3F,OAAO,CAAC,eAAe,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACnG,CAAC;YAED,KAAK,YAAY;gBACf,OAAO,CAAC,qBAAqB,IAAI,CAAC,MAAM,4BAA4B,CAAC,CAAA;YAEvE,KAAK,cAAc;gBACjB,OAAO;oBACL,eAAe,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;iBAClK,CAAA;YAEH,KAAK,aAAa;gBAChB,OAAO,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,CAAA;YAE7E,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChF,OAAO;oBACL,UAAU,MAAM,SAAS,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG;iBACzH,CAAA;YACH,CAAC;YAED,KAAK,WAAW;gBACd,OAAO,CAAC,wBAAwB,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAElF,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACpC,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBACtF,IAAI,CAAC,GAAG,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBACzC,IAAI,GAAG,CAAC,UAAU;wBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;gBACF,OAAO,CAAC,8BAA8B,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAClH,CAAC;YAED,KAAK,YAAY;gBACf,OAAO,CAAC,6BAA6B,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YAEnG,KAAK,UAAU;gBACb,OAAO,CAAC,uBAAuB,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { Context } from "effect";
2
+ import type { ColumnDef, MigrationStep } from "./types.js";
3
+ /**
4
+ * Interface a SQL dialect must implement to translate abstract `MigrationStep` values
5
+ * into executable SQL strings and to handle quoting/naming conventions.
6
+ */
7
+ export type DialectType = {
8
+ /** Translates a single `MigrationStep` into one or more SQL statements. */
9
+ translate: (step: MigrationStep) => string[];
10
+ /** Returns the dialect's native SQL type keyword for a given `ColumnDef`. */
11
+ nativeType: (col: ColumnDef) => string;
12
+ /** Wraps an identifier (table or column name) in dialect-appropriate quotes. */
13
+ quoteIdentifier: (name: string) => string;
14
+ /** Serializes a literal value to a SQL-safe string. */
15
+ quoteLiteral: (value: unknown) => string;
16
+ /** Produces a deterministic index name from a table name and field list. */
17
+ indexName: (table: string, fields: string[]) => string;
18
+ };
19
+ declare const Dialect_base: Context.TagClass<Dialect, "Dialect", DialectType>;
20
+ /** Effect `Context.Tag` for the active SQL dialect. Inject via `Layer.succeed(Dialect, sqliteDialect)`. */
21
+ export declare class Dialect extends Dialect_base {
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../../src/migrator/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1D;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,2EAA2E;IAC3E,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,MAAM,EAAE,CAAA;IAC5C,6EAA6E;IAC7E,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,MAAM,CAAA;IACtC,gFAAgF;IAChF,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,uDAAuD;IACvD,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;IACxC,4EAA4E;IAC5E,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CACvD,CAAA;;AAED,2GAA2G;AAC3G,qBAAa,OAAQ,SAAQ,YAA8C;CAAG"}
@@ -0,0 +1,5 @@
1
+ import { Context } from "effect";
2
+ /** Effect `Context.Tag` for the active SQL dialect. Inject via `Layer.succeed(Dialect, sqliteDialect)`. */
3
+ export class Dialect extends Context.Tag("Dialect")() {
4
+ }
5
+ //# sourceMappingURL=dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../../src/migrator/dialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAqBhC,2GAA2G;AAC3G,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAwB;CAAG"}
@@ -0,0 +1,8 @@
1
+ export { sqliteDialect } from "./dialect-sqlite.js";
2
+ export { Dialect } from "./dialect.js";
3
+ export type { DialectType } from "./dialect.js";
4
+ export { Migrator, MigratorLive, SYSTEM_TABLE_STEPS } from "./migrator.js";
5
+ export { computePlan, diffSchemas, propertyToColumnType, schemaToColumns } from "./schema-diff.js";
6
+ export type { ColumnDef, ColumnType, MigrationPlan, MigrationStep, MigrateOptions, NamedSchema } from "./types.js";
7
+ export { toEffectLogLevel } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClG,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { sqliteDialect } from "./dialect-sqlite.js";
2
+ export { Dialect } from "./dialect.js";
3
+ export { Migrator, MigratorLive, SYSTEM_TABLE_STEPS } from "./migrator.js";
4
+ export { computePlan, diffSchemas, propertyToColumnType, schemaToColumns } from "./schema-diff.js";
5
+ export { toEffectLogLevel } from "./types.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { SqlClient, SqlError } from "@effect/sql";
2
+ import { Context, Effect, Layer } from "effect";
3
+ import { Dialect } from "./dialect.js";
4
+ import type { MigrationPlan, MigrationStep, MigrateOptions, NamedSchema } from "./types.js";
5
+ /** DDL steps to bootstrap the `_collections` and `_migrations` system tables on first run. */
6
+ export declare const SYSTEM_TABLE_STEPS: MigrationStep[];
7
+ declare const Migrator_base: Context.TagClass<Migrator, "Migrator", {
8
+ readonly migrate: (schemas: NamedSchema[], options?: MigrateOptions) => Effect.Effect<void, SqlError.SqlError>;
9
+ readonly plan: (schemas: NamedSchema[], options?: MigrateOptions) => Effect.Effect<MigrationPlan, SqlError.SqlError>;
10
+ readonly status: (schemas: NamedSchema[]) => Effect.Effect<Array<{
11
+ name: string;
12
+ status: "current" | "ahead" | "behind";
13
+ }>, SqlError.SqlError>;
14
+ }>;
15
+ /**
16
+ * Effect `Context.Tag` for the migration service.
17
+ * Provides three operations:
18
+ * - `migrate` — apply all pending DDL steps inside a transaction.
19
+ * - `plan` — dry-run diff returning the `MigrationPlan` without executing anything.
20
+ * - `status` — per-collection status report (`"current"` | `"behind"` | `"ahead"`).
21
+ *
22
+ * Inject via `MigratorLive` layer.
23
+ */
24
+ export declare class Migrator extends Migrator_base {
25
+ }
26
+ /**
27
+ * Live `Layer` for `Migrator`. Requires `SqlClient.SqlClient` and `Dialect` in the environment.
28
+ *
29
+ * @example
30
+ * const appLayer = MigratorLive.pipe(
31
+ * Layer.provideMerge(Layer.mergeAll(Layer.succeed(Dialect, sqliteDialect), SqliteClient.layer({ filename: "app.db" })))
32
+ * )
33
+ */
34
+ export declare const MigratorLive: Layer.Layer<Migrator, never, SqlClient.SqlClient | Dialect>;
35
+ export {};
36
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../../src/migrator/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA+B,MAAM,QAAQ,CAAA;AAI5E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAa,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmCtG,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAW7C,CAAA;;sBAcqB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;mBAC/F,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC;qBACnG,CACf,OAAO,EAAE,WAAW,EAAE,KACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;KAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;;AAhB1G;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,aAS3B;CAAG;AA0KN;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,6DAiBxB,CAAA"}
@@ -0,0 +1,200 @@
1
+ import { SqlClient, SqlError } from "@effect/sql";
2
+ import { Context, Effect, Layer, Logger, Schema } from "effect";
3
+ import { computePlan, diffSchemas } from "./schema-diff.js";
4
+ import { Dialect } from "./dialect.js";
5
+ import { toEffectLogLevel } from "./types.js";
6
+ const parseJsonSchema = Schema.parseJson();
7
+ function decodeStoredSchema(json) {
8
+ return Schema.decodeUnknown(parseJsonSchema)(json).pipe(Effect.mapError((e) => new SqlError.SqlError({ message: `Invalid stored schema: ${e.message}` })), Effect.map((v) => v));
9
+ }
10
+ function encodeStoredSchema(schema) {
11
+ return Schema.encode(parseJsonSchema)(schema).pipe(Effect.mapError((e) => new SqlError.SqlError({ message: `Failed to serialize schema: ${e.message}` })));
12
+ }
13
+ const collectionsColumns = [
14
+ { name: "name", type: "text", nullable: false, primaryKey: true },
15
+ { name: "schema", type: "text", nullable: false },
16
+ { name: "updated_at", type: "text", nullable: false }
17
+ ];
18
+ const migrationsColumns = [
19
+ { name: "id", type: "text", nullable: false, primaryKey: true },
20
+ { name: "name", type: "text", nullable: false },
21
+ { name: "steps", type: "text", nullable: false },
22
+ { name: "applied_at", type: "text", nullable: false }
23
+ ];
24
+ /** DDL steps to bootstrap the `_collections` and `_migrations` system tables on first run. */
25
+ export const SYSTEM_TABLE_STEPS = [
26
+ {
27
+ kind: "createSystemTable",
28
+ table: "_collections",
29
+ columns: collectionsColumns
30
+ },
31
+ {
32
+ kind: "createSystemTable",
33
+ table: "_migrations",
34
+ columns: migrationsColumns
35
+ }
36
+ ];
37
+ /**
38
+ * Effect `Context.Tag` for the migration service.
39
+ * Provides three operations:
40
+ * - `migrate` — apply all pending DDL steps inside a transaction.
41
+ * - `plan` — dry-run diff returning the `MigrationPlan` without executing anything.
42
+ * - `status` — per-collection status report (`"current"` | `"behind"` | `"ahead"`).
43
+ *
44
+ * Inject via `MigratorLive` layer.
45
+ */
46
+ export class Migrator extends Context.Tag("Migrator")() {
47
+ }
48
+ function migrateImplWith(sql, dialect, schemas, options) {
49
+ return Effect.gen(function* () {
50
+ yield* Effect.logDebug("Creating system tables if not exist");
51
+ for (const step of SYSTEM_TABLE_STEPS) {
52
+ for (const stmt of dialect.translate(step)) {
53
+ yield* Effect.logDebug(`SQL: ${stmt}`);
54
+ yield* sql.unsafe(stmt);
55
+ }
56
+ }
57
+ yield* Effect.logInfo(`Migrating ${schemas.length} collections...`);
58
+ const storedRows = yield* sql `SELECT name, schema FROM _collections`;
59
+ const storedRecord = {};
60
+ for (const row of storedRows) {
61
+ storedRecord[row.name] = yield* decodeStoredSchema(row.schema);
62
+ }
63
+ yield* Effect.logDebug(`Stored schemas: ${Object.keys(storedRecord).length} found`);
64
+ const plan = computePlan(schemas, storedRecord, options);
65
+ yield* Effect.logDebug(`Diff: ${plan.steps.length} steps computed`);
66
+ if (plan.steps.length === 0) {
67
+ yield* Effect.logInfo("All collections up to date — nothing to migrate");
68
+ return;
69
+ }
70
+ yield* Effect.logInfo(`Migration plan: ${plan.steps.length} steps (destructive: ${plan.destructive})`);
71
+ if (plan.destructive && !options?.allowDestructive) {
72
+ yield* Effect.logWarning("Destructive steps detected but allowDestructive is false — skipping. Re-run with allowDestructive: true to proceed.");
73
+ for (const step of plan.steps) {
74
+ if (step.kind === "dropTable" || step.kind === "dropColumn" || step.kind === "alterColumn") {
75
+ const tableLabel = "table" in step ? step.table : "unknown";
76
+ yield* Effect.logWarning(` Destructive step: ${step.kind} on ${tableLabel}`);
77
+ }
78
+ }
79
+ return;
80
+ }
81
+ yield* Effect.logDebug("Starting transaction");
82
+ yield* sql `BEGIN TRANSACTION`;
83
+ yield* Effect.catchAll(Effect.gen(function* () {
84
+ for (let i = 0; i < plan.steps.length; i++) {
85
+ const step = plan.steps[i];
86
+ yield* Effect.logInfo(`Step [${i + 1}/${plan.steps.length}]: ${step.kind} on ${"table" in step ? step.table : ""}`);
87
+ const stepJson = yield* Schema.encode(parseJsonSchema)(step).pipe(Effect.mapError((e) => new SqlError.SqlError({ message: String(e) })));
88
+ yield* Effect.logDebug(`Step details: ${stepJson}`);
89
+ for (const stmt of dialect.translate(step)) {
90
+ yield* Effect.logDebug(`SQL: ${stmt}`);
91
+ yield* sql.unsafe(stmt);
92
+ }
93
+ yield* Effect.logDebug(`Step ${i + 1} applied successfully`);
94
+ }
95
+ const stepsJson = yield* Schema.encode(parseJsonSchema)(plan.steps).pipe(Effect.mapError((e) => new SqlError.SqlError({ message: String(e) })));
96
+ const migrationId = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
97
+ const migrationName = schemas.map((s) => s.name).join(", ");
98
+ yield* sql `INSERT INTO ${sql("_migrations")} ${sql.insert({ id: migrationId, name: migrationName, steps: stepsJson, applied_at: new Date().toJSON() })}`;
99
+ yield* sql `COMMIT`;
100
+ }), (e) => Effect.gen(function* () {
101
+ yield* sql `ROLLBACK`;
102
+ yield* Effect.logError(`Migration failed at step: ${String(e)}`);
103
+ return yield* e;
104
+ }));
105
+ for (const { name, schema } of schemas) {
106
+ yield* Effect.logDebug(`Writing schema for ${name}`);
107
+ const schemaJson = yield* encodeStoredSchema(schema);
108
+ yield* sql `INSERT OR REPLACE INTO ${sql("_collections")} ${sql.insert({ name, schema: schemaJson, updated_at: new Date().toJSON() })}`;
109
+ }
110
+ yield* Effect.logInfo(`Migration complete — ${schemas.length} collections migrated`);
111
+ });
112
+ }
113
+ function planImplWith(sql, dialect, schemas, options) {
114
+ return Effect.gen(function* () {
115
+ yield* Effect.logDebug("Computing migration plan (dry run)");
116
+ for (const step of SYSTEM_TABLE_STEPS) {
117
+ for (const stmt of dialect.translate(step)) {
118
+ yield* sql.unsafe(stmt);
119
+ }
120
+ }
121
+ const storedRows = yield* sql `SELECT name, schema FROM _collections`;
122
+ const storedRecord = {};
123
+ for (const row of storedRows) {
124
+ storedRecord[row.name] = yield* decodeStoredSchema(row.schema);
125
+ }
126
+ const plan = computePlan(schemas, storedRecord, options);
127
+ yield* Effect.logInfo(`Plan: ${plan.steps.length} steps`);
128
+ const planJson = yield* Schema.encode(parseJsonSchema)(plan.steps).pipe(Effect.mapError((e) => new SqlError.SqlError({ message: String(e) })));
129
+ yield* Effect.logDebug(`Steps: ${planJson}`);
130
+ return plan;
131
+ });
132
+ }
133
+ function statusImplWith(sql, dialect, schemas) {
134
+ return Effect.gen(function* () {
135
+ yield* Effect.logDebug("Checking migration status");
136
+ for (const step of SYSTEM_TABLE_STEPS) {
137
+ for (const stmt of dialect.translate(step)) {
138
+ yield* sql.unsafe(stmt);
139
+ }
140
+ }
141
+ const storedRows = yield* sql `SELECT name, schema FROM _collections`;
142
+ const parsedEntries = [];
143
+ for (const r of storedRows) {
144
+ parsedEntries.push([r.name, yield* decodeStoredSchema(r.schema)]);
145
+ }
146
+ const stored = new Map(parsedEntries);
147
+ const result = [];
148
+ for (const { name, schema: desired } of schemas) {
149
+ const storedSchema = stored.get(name);
150
+ if (!storedSchema) {
151
+ result.push({ name, status: "behind" });
152
+ yield* Effect.logDebug(`${name}: behind (not in stored)`);
153
+ }
154
+ else {
155
+ const steps = diffSchemas(name, storedSchema, desired);
156
+ if (steps.length === 0) {
157
+ result.push({ name, status: "current" });
158
+ }
159
+ else {
160
+ const hasNew = steps.some((s) => s.kind === "addColumn" || s.kind === "createIndex" || s.kind === "createTable" || s.kind === "createView");
161
+ const hasRemoved = steps.some((s) => s.kind === "dropColumn" || s.kind === "dropIndex" || s.kind === "dropTable" || s.kind === "dropView");
162
+ if (hasNew && hasRemoved) {
163
+ result.push({ name, status: "behind" });
164
+ }
165
+ else if (hasNew) {
166
+ result.push({ name, status: "behind" });
167
+ }
168
+ else {
169
+ result.push({ name, status: "ahead" });
170
+ }
171
+ }
172
+ }
173
+ }
174
+ return result;
175
+ });
176
+ }
177
+ /**
178
+ * Live `Layer` for `Migrator`. Requires `SqlClient.SqlClient` and `Dialect` in the environment.
179
+ *
180
+ * @example
181
+ * const appLayer = MigratorLive.pipe(
182
+ * Layer.provideMerge(Layer.mergeAll(Layer.succeed(Dialect, sqliteDialect), SqliteClient.layer({ filename: "app.db" })))
183
+ * )
184
+ */
185
+ export const MigratorLive = Layer.effect(Migrator, Effect.gen(function* () {
186
+ const sql = yield* SqlClient.SqlClient;
187
+ const dialect = yield* Dialect;
188
+ return {
189
+ migrate: (schemas, options) => {
190
+ const level = toEffectLogLevel(options?.logLevel);
191
+ return migrateImplWith(sql, dialect, schemas, options).pipe(Logger.withMinimumLogLevel(level));
192
+ },
193
+ plan: (schemas, options) => {
194
+ const level = toEffectLogLevel(options?.logLevel);
195
+ return planImplWith(sql, dialect, schemas, options).pipe(Logger.withMinimumLogLevel(level));
196
+ },
197
+ status: (schemas) => statusImplWith(sql, dialect, schemas)
198
+ };
199
+ }));
200
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../src/migrator/migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { CollectionSchema, JsonSchemaProperty } from "@gettersethya/mira-client";
2
+ import type { ColumnDef, MigrationPlan, MigrationStep, NamedSchema } from "./types.js";
3
+ /** Maps a JSON Schema property to the appropriate SQL column type. */
4
+ export declare function propertyToColumnType(prop: JsonSchemaProperty): "boolean" | "text" | "integer" | "real";
5
+ /** Converts a `CollectionSchema` to the flat list of `ColumnDef`s that the dialect will render as DDL. */
6
+ export declare function schemaToColumns(schema: CollectionSchema): ColumnDef[];
7
+ /** Extracts index entries from a schema's `x-indexes`, adding a deterministic name to each. */
8
+ export declare function schemaToIndexEntries(schema: CollectionSchema): {
9
+ name: string;
10
+ fields: Array<string>;
11
+ unique: boolean;
12
+ }[];
13
+ /**
14
+ * Computes the `MigrationStep`s needed to bring `stored` up to `desired` for a single collection.
15
+ * Pass `null` for `stored` to generate a full `createTable`.
16
+ */
17
+ export declare function diffSchemas(name: string, stored: CollectionSchema | null, desired: CollectionSchema): MigrationStep[];
18
+ /**
19
+ * Builds a full `MigrationPlan` for a set of desired schemas against the currently stored schemas.
20
+ * When `allowDestructive` is true, tables absent from `schemas` are dropped.
21
+ */
22
+ export declare function computePlan(schemas: NamedSchema[], stored: Record<string, CollectionSchema>, options?: {
23
+ allowDestructive?: boolean;
24
+ }): MigrationPlan;
25
+ //# sourceMappingURL=schema-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-diff.d.ts","sourceRoot":"","sources":["../../../src/migrator/schema-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAOtF,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,2CAM5D;AAED,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,eA+BvD;AAED,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB;;;;IAK5D;AAwBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAgB,mBAmDnG;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,aAAa,CA8Bf"}