@zyno-io/ts-server-foundation 26.712.36

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 (771) hide show
  1. package/README.md +31 -0
  2. package/dist/devconsole/assets/index-BlWLbczn.css +1 -0
  3. package/dist/devconsole/assets/index-lSF6DUY3.js +3 -0
  4. package/dist/devconsole/index.html +13 -0
  5. package/dist/src/app/base.d.ts +66 -0
  6. package/dist/src/app/base.d.ts.map +1 -0
  7. package/dist/src/app/base.js +577 -0
  8. package/dist/src/app/base.js.map +1 -0
  9. package/dist/src/app/commands.d.ts +20 -0
  10. package/dist/src/app/commands.d.ts.map +1 -0
  11. package/dist/src/app/commands.js +17 -0
  12. package/dist/src/app/commands.js.map +1 -0
  13. package/dist/src/app/config-loader.d.ts +9 -0
  14. package/dist/src/app/config-loader.d.ts.map +1 -0
  15. package/dist/src/app/config-loader.js +91 -0
  16. package/dist/src/app/config-loader.js.map +1 -0
  17. package/dist/src/app/config.d.ts +96 -0
  18. package/dist/src/app/config.d.ts.map +1 -0
  19. package/dist/src/app/config.js +114 -0
  20. package/dist/src/app/config.js.map +1 -0
  21. package/dist/src/app/const.d.ts +5 -0
  22. package/dist/src/app/const.d.ts.map +1 -0
  23. package/dist/src/app/const.js +17 -0
  24. package/dist/src/app/const.js.map +1 -0
  25. package/dist/src/app/current.d.ts +5 -0
  26. package/dist/src/app/current.d.ts.map +1 -0
  27. package/dist/src/app/current.js +14 -0
  28. package/dist/src/app/current.js.map +1 -0
  29. package/dist/src/app/index.d.ts +8 -0
  30. package/dist/src/app/index.d.ts.map +1 -0
  31. package/dist/src/app/index.js +13 -0
  32. package/dist/src/app/index.js.map +1 -0
  33. package/dist/src/app/lifecycle.d.ts +9 -0
  34. package/dist/src/app/lifecycle.d.ts.map +1 -0
  35. package/dist/src/app/lifecycle.js +21 -0
  36. package/dist/src/app/lifecycle.js.map +1 -0
  37. package/dist/src/app/migrations-entrypoint.d.ts +3 -0
  38. package/dist/src/app/migrations-entrypoint.d.ts.map +1 -0
  39. package/dist/src/app/migrations-entrypoint.js +35 -0
  40. package/dist/src/app/migrations-entrypoint.js.map +1 -0
  41. package/dist/src/app/resolver.d.ts +6 -0
  42. package/dist/src/app/resolver.d.ts.map +1 -0
  43. package/dist/src/app/resolver.js +15 -0
  44. package/dist/src/app/resolver.js.map +1 -0
  45. package/dist/src/auth/index.d.ts +3 -0
  46. package/dist/src/auth/index.d.ts.map +1 -0
  47. package/dist/src/auth/index.js +15 -0
  48. package/dist/src/auth/index.js.map +1 -0
  49. package/dist/src/auth/jwt.d.ts +61 -0
  50. package/dist/src/auth/jwt.d.ts.map +1 -0
  51. package/dist/src/auth/jwt.js +379 -0
  52. package/dist/src/auth/jwt.js.map +1 -0
  53. package/dist/src/auth/provider.d.ts +21 -0
  54. package/dist/src/auth/provider.d.ts.map +1 -0
  55. package/dist/src/auth/provider.js +148 -0
  56. package/dist/src/auth/provider.js.map +1 -0
  57. package/dist/src/cli/common.d.ts +13 -0
  58. package/dist/src/cli/common.d.ts.map +1 -0
  59. package/dist/src/cli/common.js +99 -0
  60. package/dist/src/cli/common.js.map +1 -0
  61. package/dist/src/cli/tsf-create-app.d.ts +3 -0
  62. package/dist/src/cli/tsf-create-app.d.ts.map +1 -0
  63. package/dist/src/cli/tsf-create-app.js +89 -0
  64. package/dist/src/cli/tsf-create-app.js.map +1 -0
  65. package/dist/src/cli/tsf-dev.d.ts +3 -0
  66. package/dist/src/cli/tsf-dev.d.ts.map +1 -0
  67. package/dist/src/cli/tsf-dev.js +753 -0
  68. package/dist/src/cli/tsf-dev.js.map +1 -0
  69. package/dist/src/cli/tsf-gen-proto.d.ts +3 -0
  70. package/dist/src/cli/tsf-gen-proto.d.ts.map +1 -0
  71. package/dist/src/cli/tsf-gen-proto.js +134 -0
  72. package/dist/src/cli/tsf-gen-proto.js.map +1 -0
  73. package/dist/src/cli/tsf-install.d.ts +8 -0
  74. package/dist/src/cli/tsf-install.d.ts.map +1 -0
  75. package/dist/src/cli/tsf-install.js +424 -0
  76. package/dist/src/cli/tsf-install.js.map +1 -0
  77. package/dist/src/cli/tsf-migrate.d.ts +3 -0
  78. package/dist/src/cli/tsf-migrate.d.ts.map +1 -0
  79. package/dist/src/cli/tsf-migrate.js +271 -0
  80. package/dist/src/cli/tsf-migrate.js.map +1 -0
  81. package/dist/src/cli/tsf-test.d.ts +4 -0
  82. package/dist/src/cli/tsf-test.d.ts.map +1 -0
  83. package/dist/src/cli/tsf-test.js +350 -0
  84. package/dist/src/cli/tsf-test.js.map +1 -0
  85. package/dist/src/cli/tsf-update.d.ts +3 -0
  86. package/dist/src/cli/tsf-update.d.ts.map +1 -0
  87. package/dist/src/cli/tsf-update.js +12 -0
  88. package/dist/src/cli/tsf-update.js.map +1 -0
  89. package/dist/src/cli/tsf.d.ts +3 -0
  90. package/dist/src/cli/tsf.d.ts.map +1 -0
  91. package/dist/src/cli/tsf.js +29 -0
  92. package/dist/src/cli/tsf.js.map +1 -0
  93. package/dist/src/database/database.d.ts +54 -0
  94. package/dist/src/database/database.d.ts.map +1 -0
  95. package/dist/src/database/database.js +695 -0
  96. package/dist/src/database/database.js.map +1 -0
  97. package/dist/src/database/driver.d.ts +28 -0
  98. package/dist/src/database/driver.d.ts.map +1 -0
  99. package/dist/src/database/driver.js +5 -0
  100. package/dist/src/database/driver.js.map +1 -0
  101. package/dist/src/database/drivers/index.d.ts +4 -0
  102. package/dist/src/database/drivers/index.d.ts.map +1 -0
  103. package/dist/src/database/drivers/index.js +9 -0
  104. package/dist/src/database/drivers/index.js.map +1 -0
  105. package/dist/src/database/drivers/mysql-session-rpc.d.ts +40 -0
  106. package/dist/src/database/drivers/mysql-session-rpc.d.ts.map +1 -0
  107. package/dist/src/database/drivers/mysql-session-rpc.js +180 -0
  108. package/dist/src/database/drivers/mysql-session-rpc.js.map +1 -0
  109. package/dist/src/database/drivers/mysql-session.d.ts +25 -0
  110. package/dist/src/database/drivers/mysql-session.d.ts.map +1 -0
  111. package/dist/src/database/drivers/mysql-session.js +124 -0
  112. package/dist/src/database/drivers/mysql-session.js.map +1 -0
  113. package/dist/src/database/drivers/mysql.d.ts +20 -0
  114. package/dist/src/database/drivers/mysql.d.ts.map +1 -0
  115. package/dist/src/database/drivers/mysql.js +84 -0
  116. package/dist/src/database/drivers/mysql.js.map +1 -0
  117. package/dist/src/database/drivers/postgres.d.ts +22 -0
  118. package/dist/src/database/drivers/postgres.d.ts.map +1 -0
  119. package/dist/src/database/drivers/postgres.js +80 -0
  120. package/dist/src/database/drivers/postgres.js.map +1 -0
  121. package/dist/src/database/entity.d.ts +112 -0
  122. package/dist/src/database/entity.d.ts.map +1 -0
  123. package/dist/src/database/entity.js +333 -0
  124. package/dist/src/database/entity.js.map +1 -0
  125. package/dist/src/database/errors.d.ts +7 -0
  126. package/dist/src/database/errors.d.ts.map +1 -0
  127. package/dist/src/database/errors.js +34 -0
  128. package/dist/src/database/errors.js.map +1 -0
  129. package/dist/src/database/factory.d.ts +48 -0
  130. package/dist/src/database/factory.d.ts.map +1 -0
  131. package/dist/src/database/factory.js +139 -0
  132. package/dist/src/database/factory.js.map +1 -0
  133. package/dist/src/database/identifiers.d.ts +8 -0
  134. package/dist/src/database/identifiers.d.ts.map +1 -0
  135. package/dist/src/database/identifiers.js +46 -0
  136. package/dist/src/database/identifiers.js.map +1 -0
  137. package/dist/src/database/index.d.ts +14 -0
  138. package/dist/src/database/index.d.ts.map +1 -0
  139. package/dist/src/database/index.js +33 -0
  140. package/dist/src/database/index.js.map +1 -0
  141. package/dist/src/database/metadata.d.ts +27 -0
  142. package/dist/src/database/metadata.d.ts.map +1 -0
  143. package/dist/src/database/metadata.js +70 -0
  144. package/dist/src/database/metadata.js.map +1 -0
  145. package/dist/src/database/migration/create/comparator.d.ts +3 -0
  146. package/dist/src/database/migration/create/comparator.d.ts.map +1 -0
  147. package/dist/src/database/migration/create/comparator.js +302 -0
  148. package/dist/src/database/migration/create/comparator.js.map +1 -0
  149. package/dist/src/database/migration/create/db-reader.d.ts +9 -0
  150. package/dist/src/database/migration/create/db-reader.d.ts.map +1 -0
  151. package/dist/src/database/migration/create/db-reader.js +478 -0
  152. package/dist/src/database/migration/create/db-reader.js.map +1 -0
  153. package/dist/src/database/migration/create/ddl-generator.d.ts +4 -0
  154. package/dist/src/database/migration/create/ddl-generator.d.ts.map +1 -0
  155. package/dist/src/database/migration/create/ddl-generator.js +431 -0
  156. package/dist/src/database/migration/create/ddl-generator.js.map +1 -0
  157. package/dist/src/database/migration/create/entity-reader.d.ts +7 -0
  158. package/dist/src/database/migration/create/entity-reader.d.ts.map +1 -0
  159. package/dist/src/database/migration/create/entity-reader.js +169 -0
  160. package/dist/src/database/migration/create/entity-reader.js.map +1 -0
  161. package/dist/src/database/migration/create/file-generator.d.ts +7 -0
  162. package/dist/src/database/migration/create/file-generator.d.ts.map +1 -0
  163. package/dist/src/database/migration/create/file-generator.js +60 -0
  164. package/dist/src/database/migration/create/file-generator.js.map +1 -0
  165. package/dist/src/database/migration/create/index.d.ts +19 -0
  166. package/dist/src/database/migration/create/index.d.ts.map +1 -0
  167. package/dist/src/database/migration/create/index.js +102 -0
  168. package/dist/src/database/migration/create/index.js.map +1 -0
  169. package/dist/src/database/migration/create/schema-model.d.ts +99 -0
  170. package/dist/src/database/migration/create/schema-model.d.ts.map +1 -0
  171. package/dist/src/database/migration/create/schema-model.js +24 -0
  172. package/dist/src/database/migration/create/schema-model.js.map +1 -0
  173. package/dist/src/database/migration/create/type-mapper.d.ts +13 -0
  174. package/dist/src/database/migration/create/type-mapper.d.ts.map +1 -0
  175. package/dist/src/database/migration/create/type-mapper.js +293 -0
  176. package/dist/src/database/migration/create/type-mapper.js.map +1 -0
  177. package/dist/src/database/migration/index.d.ts +33 -0
  178. package/dist/src/database/migration/index.d.ts.map +1 -0
  179. package/dist/src/database/migration/index.js +165 -0
  180. package/dist/src/database/migration/index.js.map +1 -0
  181. package/dist/src/database/migration/maintenance.d.ts +26 -0
  182. package/dist/src/database/migration/maintenance.d.ts.map +1 -0
  183. package/dist/src/database/migration/maintenance.js +65 -0
  184. package/dist/src/database/migration/maintenance.js.map +1 -0
  185. package/dist/src/database/query.d.ts +79 -0
  186. package/dist/src/database/query.d.ts.map +1 -0
  187. package/dist/src/database/query.js +435 -0
  188. package/dist/src/database/query.js.map +1 -0
  189. package/dist/src/database/schema.d.ts +147 -0
  190. package/dist/src/database/schema.d.ts.map +1 -0
  191. package/dist/src/database/schema.js +709 -0
  192. package/dist/src/database/schema.js.map +1 -0
  193. package/dist/src/database/session.d.ts +63 -0
  194. package/dist/src/database/session.d.ts.map +1 -0
  195. package/dist/src/database/session.js +226 -0
  196. package/dist/src/database/session.js.map +1 -0
  197. package/dist/src/database/sql.d.ts +37 -0
  198. package/dist/src/database/sql.d.ts.map +1 -0
  199. package/dist/src/database/sql.js +143 -0
  200. package/dist/src/database/sql.js.map +1 -0
  201. package/dist/src/database/values.d.ts +6 -0
  202. package/dist/src/database/values.d.ts.map +1 -0
  203. package/dist/src/database/values.js +237 -0
  204. package/dist/src/database/values.js.map +1 -0
  205. package/dist/src/devconsole/controller.d.ts +11 -0
  206. package/dist/src/devconsole/controller.d.ts.map +1 -0
  207. package/dist/src/devconsole/controller.js +78 -0
  208. package/dist/src/devconsole/controller.js.map +1 -0
  209. package/dist/src/devconsole/generated/devconsole.d.ts +306 -0
  210. package/dist/src/devconsole/generated/devconsole.d.ts.map +1 -0
  211. package/dist/src/devconsole/generated/devconsole.js +4029 -0
  212. package/dist/src/devconsole/generated/devconsole.js.map +1 -0
  213. package/dist/src/devconsole/index.d.ts +10 -0
  214. package/dist/src/devconsole/index.d.ts.map +1 -0
  215. package/dist/src/devconsole/index.js +26 -0
  216. package/dist/src/devconsole/index.js.map +1 -0
  217. package/dist/src/devconsole/observers.d.ts +4 -0
  218. package/dist/src/devconsole/observers.d.ts.map +1 -0
  219. package/dist/src/devconsole/observers.js +170 -0
  220. package/dist/src/devconsole/observers.js.map +1 -0
  221. package/dist/src/devconsole/runtime.d.ts +16 -0
  222. package/dist/src/devconsole/runtime.d.ts.map +1 -0
  223. package/dist/src/devconsole/runtime.js +48 -0
  224. package/dist/src/devconsole/runtime.js.map +1 -0
  225. package/dist/src/devconsole/security.d.ts +8 -0
  226. package/dist/src/devconsole/security.d.ts.map +1 -0
  227. package/dist/src/devconsole/security.js +33 -0
  228. package/dist/src/devconsole/security.js.map +1 -0
  229. package/dist/src/devconsole/server.d.ts +25 -0
  230. package/dist/src/devconsole/server.d.ts.map +1 -0
  231. package/dist/src/devconsole/server.js +452 -0
  232. package/dist/src/devconsole/server.js.map +1 -0
  233. package/dist/src/devconsole/store.d.ts +111 -0
  234. package/dist/src/devconsole/store.d.ts.map +1 -0
  235. package/dist/src/devconsole/store.js +177 -0
  236. package/dist/src/devconsole/store.js.map +1 -0
  237. package/dist/src/di/container.d.ts +38 -0
  238. package/dist/src/di/container.d.ts.map +1 -0
  239. package/dist/src/di/container.js +252 -0
  240. package/dist/src/di/container.js.map +1 -0
  241. package/dist/src/di/errors.d.ts +18 -0
  242. package/dist/src/di/errors.d.ts.map +1 -0
  243. package/dist/src/di/errors.js +71 -0
  244. package/dist/src/di/errors.js.map +1 -0
  245. package/dist/src/di/index.d.ts +5 -0
  246. package/dist/src/di/index.d.ts.map +1 -0
  247. package/dist/src/di/index.js +10 -0
  248. package/dist/src/di/index.js.map +1 -0
  249. package/dist/src/di/module.d.ts +29 -0
  250. package/dist/src/di/module.d.ts.map +1 -0
  251. package/dist/src/di/module.js +42 -0
  252. package/dist/src/di/module.js.map +1 -0
  253. package/dist/src/di/provider.d.ts +34 -0
  254. package/dist/src/di/provider.d.ts.map +1 -0
  255. package/dist/src/di/provider.js +24 -0
  256. package/dist/src/di/provider.js.map +1 -0
  257. package/dist/src/env.d.ts +122 -0
  258. package/dist/src/env.d.ts.map +1 -0
  259. package/dist/src/env.js +61 -0
  260. package/dist/src/env.js.map +1 -0
  261. package/dist/src/events/event-bus.d.ts +26 -0
  262. package/dist/src/events/event-bus.d.ts.map +1 -0
  263. package/dist/src/events/event-bus.js +67 -0
  264. package/dist/src/events/event-bus.js.map +1 -0
  265. package/dist/src/events/index.d.ts +2 -0
  266. package/dist/src/events/index.d.ts.map +1 -0
  267. package/dist/src/events/index.js +7 -0
  268. package/dist/src/events/index.js.map +1 -0
  269. package/dist/src/health/healthcheck.controller.d.ts +9 -0
  270. package/dist/src/health/healthcheck.controller.d.ts.map +1 -0
  271. package/dist/src/health/healthcheck.controller.js +33 -0
  272. package/dist/src/health/healthcheck.controller.js.map +1 -0
  273. package/dist/src/health/healthcheck.service.d.ts +13 -0
  274. package/dist/src/health/healthcheck.service.d.ts.map +1 -0
  275. package/dist/src/health/healthcheck.service.js +37 -0
  276. package/dist/src/health/healthcheck.service.js.map +1 -0
  277. package/dist/src/health/index.d.ts +3 -0
  278. package/dist/src/health/index.d.ts.map +1 -0
  279. package/dist/src/health/index.js +8 -0
  280. package/dist/src/health/index.js.map +1 -0
  281. package/dist/src/helpers/async/context.d.ts +10 -0
  282. package/dist/src/helpers/async/context.d.ts.map +1 -0
  283. package/dist/src/helpers/async/context.js +52 -0
  284. package/dist/src/helpers/async/context.js.map +1 -0
  285. package/dist/src/helpers/async/process.d.ts +16 -0
  286. package/dist/src/helpers/async/process.d.ts.map +1 -0
  287. package/dist/src/helpers/async/process.js +62 -0
  288. package/dist/src/helpers/async/process.js.map +1 -0
  289. package/dist/src/helpers/async/promise.d.ts +11 -0
  290. package/dist/src/helpers/async/promise.d.ts.map +1 -0
  291. package/dist/src/helpers/async/promise.js +32 -0
  292. package/dist/src/helpers/async/promise.js.map +1 -0
  293. package/dist/src/helpers/data/array.d.ts +5 -0
  294. package/dist/src/helpers/data/array.d.ts.map +1 -0
  295. package/dist/src/helpers/data/array.js +27 -0
  296. package/dist/src/helpers/data/array.js.map +1 -0
  297. package/dist/src/helpers/data/objects.d.ts +13 -0
  298. package/dist/src/helpers/data/objects.d.ts.map +1 -0
  299. package/dist/src/helpers/data/objects.js +55 -0
  300. package/dist/src/helpers/data/objects.js.map +1 -0
  301. package/dist/src/helpers/data/serialization.d.ts +5 -0
  302. package/dist/src/helpers/data/serialization.d.ts.map +1 -0
  303. package/dist/src/helpers/data/serialization.js +25 -0
  304. package/dist/src/helpers/data/serialization.js.map +1 -0
  305. package/dist/src/helpers/data/transformer.d.ts +13 -0
  306. package/dist/src/helpers/data/transformer.d.ts.map +1 -0
  307. package/dist/src/helpers/data/transformer.js +50 -0
  308. package/dist/src/helpers/data/transformer.js.map +1 -0
  309. package/dist/src/helpers/index.d.ts +19 -0
  310. package/dist/src/helpers/index.d.ts.map +1 -0
  311. package/dist/src/helpers/index.js +30 -0
  312. package/dist/src/helpers/index.js.map +1 -0
  313. package/dist/src/helpers/io/package.d.ts +10 -0
  314. package/dist/src/helpers/io/package.d.ts.map +1 -0
  315. package/dist/src/helpers/io/package.js +35 -0
  316. package/dist/src/helpers/io/package.js.map +1 -0
  317. package/dist/src/helpers/io/stream.d.ts +18 -0
  318. package/dist/src/helpers/io/stream.d.ts.map +1 -0
  319. package/dist/src/helpers/io/stream.js +131 -0
  320. package/dist/src/helpers/io/stream.js.map +1 -0
  321. package/dist/src/helpers/redis/broadcast.d.ts +15 -0
  322. package/dist/src/helpers/redis/broadcast.d.ts.map +1 -0
  323. package/dist/src/helpers/redis/broadcast.js +93 -0
  324. package/dist/src/helpers/redis/broadcast.js.map +1 -0
  325. package/dist/src/helpers/redis/cache.d.ts +20 -0
  326. package/dist/src/helpers/redis/cache.d.ts.map +1 -0
  327. package/dist/src/helpers/redis/cache.js +57 -0
  328. package/dist/src/helpers/redis/cache.js.map +1 -0
  329. package/dist/src/helpers/redis/mutex.d.ts +45 -0
  330. package/dist/src/helpers/redis/mutex.d.ts.map +1 -0
  331. package/dist/src/helpers/redis/mutex.js +446 -0
  332. package/dist/src/helpers/redis/mutex.js.map +1 -0
  333. package/dist/src/helpers/redis/redis.d.ts +12 -0
  334. package/dist/src/helpers/redis/redis.d.ts.map +1 -0
  335. package/dist/src/helpers/redis/redis.js +62 -0
  336. package/dist/src/helpers/redis/redis.js.map +1 -0
  337. package/dist/src/helpers/security/crypto.d.ts +31 -0
  338. package/dist/src/helpers/security/crypto.d.ts.map +1 -0
  339. package/dist/src/helpers/security/crypto.js +108 -0
  340. package/dist/src/helpers/security/crypto.js.map +1 -0
  341. package/dist/src/helpers/security/validation.d.ts +3 -0
  342. package/dist/src/helpers/security/validation.d.ts.map +1 -0
  343. package/dist/src/helpers/security/validation.js +14 -0
  344. package/dist/src/helpers/security/validation.js.map +1 -0
  345. package/dist/src/helpers/utils/date.d.ts +4 -0
  346. package/dist/src/helpers/utils/date.d.ts.map +1 -0
  347. package/dist/src/helpers/utils/date.js +16 -0
  348. package/dist/src/helpers/utils/date.js.map +1 -0
  349. package/dist/src/helpers/utils/error.d.ts +20 -0
  350. package/dist/src/helpers/utils/error.d.ts.map +1 -0
  351. package/dist/src/helpers/utils/error.js +164 -0
  352. package/dist/src/helpers/utils/error.js.map +1 -0
  353. package/dist/src/helpers/utils/uuid.d.ts +5 -0
  354. package/dist/src/helpers/utils/uuid.d.ts.map +1 -0
  355. package/dist/src/helpers/utils/uuid.js +13 -0
  356. package/dist/src/helpers/utils/uuid.js.map +1 -0
  357. package/dist/src/http/auth.d.ts +20 -0
  358. package/dist/src/http/auth.d.ts.map +1 -0
  359. package/dist/src/http/auth.js +68 -0
  360. package/dist/src/http/auth.js.map +1 -0
  361. package/dist/src/http/base.d.ts +57 -0
  362. package/dist/src/http/base.d.ts.map +1 -0
  363. package/dist/src/http/base.js +331 -0
  364. package/dist/src/http/base.js.map +1 -0
  365. package/dist/src/http/context.d.ts +6 -0
  366. package/dist/src/http/context.d.ts.map +1 -0
  367. package/dist/src/http/context.js +26 -0
  368. package/dist/src/http/context.js.map +1 -0
  369. package/dist/src/http/cors.d.ts +25 -0
  370. package/dist/src/http/cors.d.ts.map +1 -0
  371. package/dist/src/http/cors.js +124 -0
  372. package/dist/src/http/cors.js.map +1 -0
  373. package/dist/src/http/decorators.d.ts +64 -0
  374. package/dist/src/http/decorators.d.ts.map +1 -0
  375. package/dist/src/http/decorators.js +102 -0
  376. package/dist/src/http/decorators.js.map +1 -0
  377. package/dist/src/http/errors.d.ts +50 -0
  378. package/dist/src/http/errors.d.ts.map +1 -0
  379. package/dist/src/http/errors.js +158 -0
  380. package/dist/src/http/errors.js.map +1 -0
  381. package/dist/src/http/index.d.ts +31 -0
  382. package/dist/src/http/index.d.ts.map +1 -0
  383. package/dist/src/http/index.js +33 -0
  384. package/dist/src/http/index.js.map +1 -0
  385. package/dist/src/http/middleware.d.ts +12 -0
  386. package/dist/src/http/middleware.d.ts.map +1 -0
  387. package/dist/src/http/middleware.js +31 -0
  388. package/dist/src/http/middleware.js.map +1 -0
  389. package/dist/src/http/parameter-resolvers.d.ts +3 -0
  390. package/dist/src/http/parameter-resolvers.d.ts.map +1 -0
  391. package/dist/src/http/parameter-resolvers.js +8 -0
  392. package/dist/src/http/parameter-resolvers.js.map +1 -0
  393. package/dist/src/http/request-logging.d.ts +34 -0
  394. package/dist/src/http/request-logging.d.ts.map +1 -0
  395. package/dist/src/http/request-logging.js +130 -0
  396. package/dist/src/http/request-logging.js.map +1 -0
  397. package/dist/src/http/request.d.ts +69 -0
  398. package/dist/src/http/request.d.ts.map +1 -0
  399. package/dist/src/http/request.js +366 -0
  400. package/dist/src/http/request.js.map +1 -0
  401. package/dist/src/http/response.d.ts +98 -0
  402. package/dist/src/http/response.d.ts.map +1 -0
  403. package/dist/src/http/response.js +292 -0
  404. package/dist/src/http/response.js.map +1 -0
  405. package/dist/src/http/router.d.ts +100 -0
  406. package/dist/src/http/router.d.ts.map +1 -0
  407. package/dist/src/http/router.js +1085 -0
  408. package/dist/src/http/router.js.map +1 -0
  409. package/dist/src/http/startup-logging.d.ts +8 -0
  410. package/dist/src/http/startup-logging.d.ts.map +1 -0
  411. package/dist/src/http/startup-logging.js +55 -0
  412. package/dist/src/http/startup-logging.js.map +1 -0
  413. package/dist/src/http/static-files.d.ts +15 -0
  414. package/dist/src/http/static-files.d.ts.map +1 -0
  415. package/dist/src/http/static-files.js +110 -0
  416. package/dist/src/http/static-files.js.map +1 -0
  417. package/dist/src/http/store.d.ts +8 -0
  418. package/dist/src/http/store.d.ts.map +1 -0
  419. package/dist/src/http/store.js +47 -0
  420. package/dist/src/http/store.js.map +1 -0
  421. package/dist/src/http/types.d.ts +23 -0
  422. package/dist/src/http/types.d.ts.map +1 -0
  423. package/dist/src/http/types.js +3 -0
  424. package/dist/src/http/types.js.map +1 -0
  425. package/dist/src/http/upgrade.d.ts +22 -0
  426. package/dist/src/http/upgrade.d.ts.map +1 -0
  427. package/dist/src/http/upgrade.js +164 -0
  428. package/dist/src/http/upgrade.js.map +1 -0
  429. package/dist/src/http/uploads.d.ts +36 -0
  430. package/dist/src/http/uploads.d.ts.map +1 -0
  431. package/dist/src/http/uploads.js +287 -0
  432. package/dist/src/http/uploads.js.map +1 -0
  433. package/dist/src/http/workflow.d.ts +34 -0
  434. package/dist/src/http/workflow.d.ts.map +1 -0
  435. package/dist/src/http/workflow.js +40 -0
  436. package/dist/src/http/workflow.js.map +1 -0
  437. package/dist/src/index.d.ts +21 -0
  438. package/dist/src/index.d.ts.map +1 -0
  439. package/dist/src/index.js +88 -0
  440. package/dist/src/index.js.map +1 -0
  441. package/dist/src/openapi/controller.d.ts +9 -0
  442. package/dist/src/openapi/controller.d.ts.map +1 -0
  443. package/dist/src/openapi/controller.js +45 -0
  444. package/dist/src/openapi/controller.js.map +1 -0
  445. package/dist/src/openapi/index.d.ts +5 -0
  446. package/dist/src/openapi/index.d.ts.map +1 -0
  447. package/dist/src/openapi/index.js +21 -0
  448. package/dist/src/openapi/index.js.map +1 -0
  449. package/dist/src/openapi/schema.d.ts +26 -0
  450. package/dist/src/openapi/schema.d.ts.map +1 -0
  451. package/dist/src/openapi/schema.js +1128 -0
  452. package/dist/src/openapi/schema.js.map +1 -0
  453. package/dist/src/openapi/serializer.d.ts +16 -0
  454. package/dist/src/openapi/serializer.d.ts.map +1 -0
  455. package/dist/src/openapi/serializer.js +506 -0
  456. package/dist/src/openapi/serializer.js.map +1 -0
  457. package/dist/src/openapi/types.d.ts +84 -0
  458. package/dist/src/openapi/types.d.ts.map +1 -0
  459. package/dist/src/openapi/types.js +5 -0
  460. package/dist/src/openapi/types.js.map +1 -0
  461. package/dist/src/reflection/annotations.d.ts +15 -0
  462. package/dist/src/reflection/annotations.d.ts.map +1 -0
  463. package/dist/src/reflection/annotations.js +228 -0
  464. package/dist/src/reflection/annotations.js.map +1 -0
  465. package/dist/src/reflection/conversion.d.ts +15 -0
  466. package/dist/src/reflection/conversion.d.ts.map +1 -0
  467. package/dist/src/reflection/conversion.js +360 -0
  468. package/dist/src/reflection/conversion.js.map +1 -0
  469. package/dist/src/reflection/deserializer.d.ts +15 -0
  470. package/dist/src/reflection/deserializer.d.ts.map +1 -0
  471. package/dist/src/reflection/deserializer.js +42 -0
  472. package/dist/src/reflection/deserializer.js.map +1 -0
  473. package/dist/src/reflection/entity.d.ts +9 -0
  474. package/dist/src/reflection/entity.d.ts.map +1 -0
  475. package/dist/src/reflection/entity.js +74 -0
  476. package/dist/src/reflection/entity.js.map +1 -0
  477. package/dist/src/reflection/errors.d.ts +8 -0
  478. package/dist/src/reflection/errors.d.ts.map +1 -0
  479. package/dist/src/reflection/errors.js +21 -0
  480. package/dist/src/reflection/errors.js.map +1 -0
  481. package/dist/src/reflection/index.d.ts +8 -0
  482. package/dist/src/reflection/index.d.ts.map +1 -0
  483. package/dist/src/reflection/index.js +13 -0
  484. package/dist/src/reflection/index.js.map +1 -0
  485. package/dist/src/reflection/metadata-store.d.ts +14 -0
  486. package/dist/src/reflection/metadata-store.d.ts.map +1 -0
  487. package/dist/src/reflection/metadata-store.js +18 -0
  488. package/dist/src/reflection/metadata-store.js.map +1 -0
  489. package/dist/src/reflection/model.d.ts +271 -0
  490. package/dist/src/reflection/model.d.ts.map +1 -0
  491. package/dist/src/reflection/model.js +36 -0
  492. package/dist/src/reflection/model.js.map +1 -0
  493. package/dist/src/reflection/reflection-class.d.ts +60 -0
  494. package/dist/src/reflection/reflection-class.d.ts.map +1 -0
  495. package/dist/src/reflection/reflection-class.js +263 -0
  496. package/dist/src/reflection/reflection-class.js.map +1 -0
  497. package/dist/src/reflection/type-utils.d.ts +34 -0
  498. package/dist/src/reflection/type-utils.d.ts.map +1 -0
  499. package/dist/src/reflection/type-utils.js +485 -0
  500. package/dist/src/reflection/type-utils.js.map +1 -0
  501. package/dist/src/reflection.d.ts +2 -0
  502. package/dist/src/reflection.d.ts.map +1 -0
  503. package/dist/src/reflection.js +5 -0
  504. package/dist/src/reflection.js.map +1 -0
  505. package/dist/src/services/cli.d.ts +9 -0
  506. package/dist/src/services/cli.d.ts.map +1 -0
  507. package/dist/src/services/cli.js +47 -0
  508. package/dist/src/services/cli.js.map +1 -0
  509. package/dist/src/services/index.d.ts +8 -0
  510. package/dist/src/services/index.d.ts.map +1 -0
  511. package/dist/src/services/index.js +13 -0
  512. package/dist/src/services/index.js.map +1 -0
  513. package/dist/src/services/leader.d.ts +31 -0
  514. package/dist/src/services/leader.d.ts.map +1 -0
  515. package/dist/src/services/leader.js +176 -0
  516. package/dist/src/services/leader.js.map +1 -0
  517. package/dist/src/services/logger.d.ts +60 -0
  518. package/dist/src/services/logger.d.ts.map +1 -0
  519. package/dist/src/services/logger.js +349 -0
  520. package/dist/src/services/logger.js.map +1 -0
  521. package/dist/src/services/mail/index.d.ts +57 -0
  522. package/dist/src/services/mail/index.d.ts.map +1 -0
  523. package/dist/src/services/mail/index.js +89 -0
  524. package/dist/src/services/mail/index.js.map +1 -0
  525. package/dist/src/services/mail/postmark.d.ts +11 -0
  526. package/dist/src/services/mail/postmark.d.ts.map +1 -0
  527. package/dist/src/services/mail/postmark.js +41 -0
  528. package/dist/src/services/mail/postmark.js.map +1 -0
  529. package/dist/src/services/mail/smtp.d.ts +11 -0
  530. package/dist/src/services/mail/smtp.d.ts.map +1 -0
  531. package/dist/src/services/mail/smtp.js +50 -0
  532. package/dist/src/services/mail/smtp.js.map +1 -0
  533. package/dist/src/services/mesh-client/index.d.ts +9 -0
  534. package/dist/src/services/mesh-client/index.d.ts.map +1 -0
  535. package/dist/src/services/mesh-client/index.js +18 -0
  536. package/dist/src/services/mesh-client/index.js.map +1 -0
  537. package/dist/src/services/mesh-client/mesh-client-redis-registry.d.ts +23 -0
  538. package/dist/src/services/mesh-client/mesh-client-redis-registry.d.ts.map +1 -0
  539. package/dist/src/services/mesh-client/mesh-client-redis-registry.js +360 -0
  540. package/dist/src/services/mesh-client/mesh-client-redis-registry.js.map +1 -0
  541. package/dist/src/services/mesh-client/mesh-client-registry.d.ts +16 -0
  542. package/dist/src/services/mesh-client/mesh-client-registry.d.ts.map +1 -0
  543. package/dist/src/services/mesh-client/mesh-client-registry.js +44 -0
  544. package/dist/src/services/mesh-client/mesh-client-registry.js.map +1 -0
  545. package/dist/src/services/mesh-client/mesh-client-service.d.ts +88 -0
  546. package/dist/src/services/mesh-client/mesh-client-service.d.ts.map +1 -0
  547. package/dist/src/services/mesh-client/mesh-client-service.js +222 -0
  548. package/dist/src/services/mesh-client/mesh-client-service.js.map +1 -0
  549. package/dist/src/services/mesh-client/mesh-srpc-server.d.ts +95 -0
  550. package/dist/src/services/mesh-client/mesh-srpc-server.d.ts.map +1 -0
  551. package/dist/src/services/mesh-client/mesh-srpc-server.js +475 -0
  552. package/dist/src/services/mesh-client/mesh-srpc-server.js.map +1 -0
  553. package/dist/src/services/mesh-client/types.d.ts +36 -0
  554. package/dist/src/services/mesh-client/types.d.ts.map +1 -0
  555. package/dist/src/services/mesh-client/types.js +38 -0
  556. package/dist/src/services/mesh-client/types.js.map +1 -0
  557. package/dist/src/services/mesh.d.ts +73 -0
  558. package/dist/src/services/mesh.d.ts.map +1 -0
  559. package/dist/src/services/mesh.js +511 -0
  560. package/dist/src/services/mesh.js.map +1 -0
  561. package/dist/src/services/worker/entity.d.ts +26 -0
  562. package/dist/src/services/worker/entity.d.ts.map +1 -0
  563. package/dist/src/services/worker/entity.js +30 -0
  564. package/dist/src/services/worker/entity.js.map +1 -0
  565. package/dist/src/services/worker/index.d.ts +25 -0
  566. package/dist/src/services/worker/index.d.ts.map +1 -0
  567. package/dist/src/services/worker/index.js +52 -0
  568. package/dist/src/services/worker/index.js.map +1 -0
  569. package/dist/src/services/worker/observer.d.ts +13 -0
  570. package/dist/src/services/worker/observer.d.ts.map +1 -0
  571. package/dist/src/services/worker/observer.js +22 -0
  572. package/dist/src/services/worker/observer.js.map +1 -0
  573. package/dist/src/services/worker/queue.d.ts +38 -0
  574. package/dist/src/services/worker/queue.d.ts.map +1 -0
  575. package/dist/src/services/worker/queue.js +227 -0
  576. package/dist/src/services/worker/queue.js.map +1 -0
  577. package/dist/src/services/worker/recorder.d.ts +17 -0
  578. package/dist/src/services/worker/recorder.d.ts.map +1 -0
  579. package/dist/src/services/worker/recorder.js +88 -0
  580. package/dist/src/services/worker/recorder.js.map +1 -0
  581. package/dist/src/services/worker/runner.d.ts +37 -0
  582. package/dist/src/services/worker/runner.d.ts.map +1 -0
  583. package/dist/src/services/worker/runner.js +319 -0
  584. package/dist/src/services/worker/runner.js.map +1 -0
  585. package/dist/src/services/worker/types.d.ts +63 -0
  586. package/dist/src/services/worker/types.d.ts.map +1 -0
  587. package/dist/src/services/worker/types.js +38 -0
  588. package/dist/src/services/worker/types.js.map +1 -0
  589. package/dist/src/srpc/SrpcByteStream.d.ts +60 -0
  590. package/dist/src/srpc/SrpcByteStream.d.ts.map +1 -0
  591. package/dist/src/srpc/SrpcByteStream.js +237 -0
  592. package/dist/src/srpc/SrpcByteStream.js.map +1 -0
  593. package/dist/src/srpc/SrpcClient.d.ts +67 -0
  594. package/dist/src/srpc/SrpcClient.d.ts.map +1 -0
  595. package/dist/src/srpc/SrpcClient.js +406 -0
  596. package/dist/src/srpc/SrpcClient.js.map +1 -0
  597. package/dist/src/srpc/SrpcServer.d.ts +56 -0
  598. package/dist/src/srpc/SrpcServer.d.ts.map +1 -0
  599. package/dist/src/srpc/SrpcServer.js +519 -0
  600. package/dist/src/srpc/SrpcServer.js.map +1 -0
  601. package/dist/src/srpc/index.d.ts +9 -0
  602. package/dist/src/srpc/index.d.ts.map +1 -0
  603. package/dist/src/srpc/index.js +17 -0
  604. package/dist/src/srpc/index.js.map +1 -0
  605. package/dist/src/srpc/observer.d.ts +21 -0
  606. package/dist/src/srpc/observer.d.ts.map +1 -0
  607. package/dist/src/srpc/observer.js +22 -0
  608. package/dist/src/srpc/observer.js.map +1 -0
  609. package/dist/src/srpc/types.d.ts +92 -0
  610. package/dist/src/srpc/types.d.ts.map +1 -0
  611. package/dist/src/srpc/types.js +28 -0
  612. package/dist/src/srpc/types.js.map +1 -0
  613. package/dist/src/telemetry/index.d.ts +3 -0
  614. package/dist/src/telemetry/index.d.ts.map +1 -0
  615. package/dist/src/telemetry/index.js +22 -0
  616. package/dist/src/telemetry/index.js.map +1 -0
  617. package/dist/src/telemetry/otel/helpers.d.ts +45 -0
  618. package/dist/src/telemetry/otel/helpers.d.ts.map +1 -0
  619. package/dist/src/telemetry/otel/helpers.js +142 -0
  620. package/dist/src/telemetry/otel/helpers.js.map +1 -0
  621. package/dist/src/telemetry/otel/index.d.ts +22 -0
  622. package/dist/src/telemetry/otel/index.d.ts.map +1 -0
  623. package/dist/src/telemetry/otel/index.js +268 -0
  624. package/dist/src/telemetry/otel/index.js.map +1 -0
  625. package/dist/src/telemetry/otel/metrics.controller.d.ts +5 -0
  626. package/dist/src/telemetry/otel/metrics.controller.d.ts.map +1 -0
  627. package/dist/src/telemetry/otel/metrics.controller.js +82 -0
  628. package/dist/src/telemetry/otel/metrics.controller.js.map +1 -0
  629. package/dist/src/telemetry/otel/metrics.d.ts +2 -0
  630. package/dist/src/telemetry/otel/metrics.d.ts.map +1 -0
  631. package/dist/src/telemetry/otel/metrics.js +16 -0
  632. package/dist/src/telemetry/otel/metrics.js.map +1 -0
  633. package/dist/src/telemetry/sentry.d.ts +9 -0
  634. package/dist/src/telemetry/sentry.d.ts.map +1 -0
  635. package/dist/src/telemetry/sentry.js +63 -0
  636. package/dist/src/telemetry/sentry.js.map +1 -0
  637. package/dist/src/testing/database-readiness.d.ts +11 -0
  638. package/dist/src/testing/database-readiness.d.ts.map +1 -0
  639. package/dist/src/testing/database-readiness.js +102 -0
  640. package/dist/src/testing/database-readiness.js.map +1 -0
  641. package/dist/src/testing/expect.d.ts +21 -0
  642. package/dist/src/testing/expect.d.ts.map +1 -0
  643. package/dist/src/testing/expect.js +110 -0
  644. package/dist/src/testing/expect.js.map +1 -0
  645. package/dist/src/testing/fixtures.d.ts +18 -0
  646. package/dist/src/testing/fixtures.d.ts.map +1 -0
  647. package/dist/src/testing/fixtures.js +46 -0
  648. package/dist/src/testing/fixtures.js.map +1 -0
  649. package/dist/src/testing/index.d.ts +143 -0
  650. package/dist/src/testing/index.d.ts.map +1 -0
  651. package/dist/src/testing/index.js +993 -0
  652. package/dist/src/testing/index.js.map +1 -0
  653. package/dist/src/testing/mysql-session-manager-process.d.ts +3 -0
  654. package/dist/src/testing/mysql-session-manager-process.d.ts.map +1 -0
  655. package/dist/src/testing/mysql-session-manager-process.js +77 -0
  656. package/dist/src/testing/mysql-session-manager-process.js.map +1 -0
  657. package/dist/src/testing/mysql-session-manager.d.ts +59 -0
  658. package/dist/src/testing/mysql-session-manager.d.ts.map +1 -0
  659. package/dist/src/testing/mysql-session-manager.js +910 -0
  660. package/dist/src/testing/mysql-session-manager.js.map +1 -0
  661. package/dist/src/testing/sql.d.ts +47 -0
  662. package/dist/src/testing/sql.d.ts.map +1 -0
  663. package/dist/src/testing/sql.js +313 -0
  664. package/dist/src/testing/sql.js.map +1 -0
  665. package/dist/src/type-compiler/go/ast_expression.go +161 -0
  666. package/dist/src/type-compiler/go/ast_metadata.go +355 -0
  667. package/dist/src/type-compiler/go/collect.go +806 -0
  668. package/dist/src/type-compiler/go/emission_plan.go +205 -0
  669. package/dist/src/type-compiler/go/emit_ast.go +406 -0
  670. package/dist/src/type-compiler/go/emit_ast_test.go +248 -0
  671. package/dist/src/type-compiler/go/go.mod +10 -0
  672. package/dist/src/type-compiler/go/plugin.go +308 -0
  673. package/dist/src/type-compiler/go/plugin_test.go +752 -0
  674. package/dist/src/type-compiler/go/precompute.go +86 -0
  675. package/dist/src/type-compiler/go/receive_type.go +837 -0
  676. package/dist/src/type-compiler/go/resolve.go +265 -0
  677. package/dist/src/type-compiler/go/source_scan.go +51 -0
  678. package/dist/src/type-compiler/go/text_parse.go +671 -0
  679. package/dist/src/type-compiler/go/type_expr.go +1227 -0
  680. package/dist/src/type-compiler/go/typia_expr.go +2119 -0
  681. package/dist/src/type-compiler/index.cjs +6 -0
  682. package/dist/src/types/index.d.ts +7 -0
  683. package/dist/src/types/index.d.ts.map +1 -0
  684. package/dist/src/types/index.js +14 -0
  685. package/dist/src/types/index.js.map +1 -0
  686. package/dist/src/types/phone.d.ts +6 -0
  687. package/dist/src/types/phone.d.ts.map +1 -0
  688. package/dist/src/types/phone.js +64 -0
  689. package/dist/src/types/phone.js.map +1 -0
  690. package/dist/src/types/primitives.d.ts +33 -0
  691. package/dist/src/types/primitives.d.ts.map +1 -0
  692. package/dist/src/types/primitives.js +5 -0
  693. package/dist/src/types/primitives.js.map +1 -0
  694. package/dist/src/types/runtime.d.ts +5 -0
  695. package/dist/src/types/runtime.d.ts.map +1 -0
  696. package/dist/src/types/runtime.js +20 -0
  697. package/dist/src/types/runtime.js.map +1 -0
  698. package/dist/src/types/type-annotations.d.ts +28 -0
  699. package/dist/src/types/type-annotations.d.ts.map +1 -0
  700. package/dist/src/types/type-annotations.js +33 -0
  701. package/dist/src/types/type-annotations.js.map +1 -0
  702. package/dist/src/types.d.ts +2 -0
  703. package/dist/src/types.d.ts.map +1 -0
  704. package/dist/src/types.js +7 -0
  705. package/dist/src/types.js.map +1 -0
  706. package/docs/.vitepress/config.mts +85 -0
  707. package/docs/content/CONTRIBUTING.md +53 -0
  708. package/docs/content/README-DEV.md +59 -0
  709. package/docs/content/README.md +52 -0
  710. package/docs/content/authentication.md +213 -0
  711. package/docs/content/cli.md +214 -0
  712. package/docs/content/configuration.md +191 -0
  713. package/docs/content/database.md +476 -0
  714. package/docs/content/devconsole.md +148 -0
  715. package/docs/content/di.md +212 -0
  716. package/docs/content/documentation-plan.md +182 -0
  717. package/docs/content/env.md +120 -0
  718. package/docs/content/getting-started.md +324 -0
  719. package/docs/content/health.md +64 -0
  720. package/docs/content/helpers.md +294 -0
  721. package/docs/content/http.md +402 -0
  722. package/docs/content/index.md +109 -0
  723. package/docs/content/leader-service.md +98 -0
  724. package/docs/content/logging.md +225 -0
  725. package/docs/content/mail.md +171 -0
  726. package/docs/content/mesh-client.md +333 -0
  727. package/docs/content/mesh-service.md +255 -0
  728. package/docs/content/migrations.md +190 -0
  729. package/docs/content/openapi.md +134 -0
  730. package/docs/content/overview.md +98 -0
  731. package/docs/content/public/images/devconsole/01-dashboard.png +0 -0
  732. package/docs/content/public/images/devconsole/02-routes.png +0 -0
  733. package/docs/content/public/images/devconsole/03-openapi.png +0 -0
  734. package/docs/content/public/images/devconsole/04-requests.png +0 -0
  735. package/docs/content/public/images/devconsole/05-srpc.png +0 -0
  736. package/docs/content/public/images/devconsole/06-database.png +0 -0
  737. package/docs/content/public/images/devconsole/06b-database-log.png +0 -0
  738. package/docs/content/public/images/devconsole/07-health.png +0 -0
  739. package/docs/content/public/images/devconsole/08-mutex.png +0 -0
  740. package/docs/content/public/images/devconsole/09-repl.png +0 -0
  741. package/docs/content/public/images/devconsole/10-workers.png +0 -0
  742. package/docs/content/public-api.md +84 -0
  743. package/docs/content/redis.md +174 -0
  744. package/docs/content/reflection.md +180 -0
  745. package/docs/content/release.md +100 -0
  746. package/docs/content/sql.md +121 -0
  747. package/docs/content/srpc.md +292 -0
  748. package/docs/content/telemetry.md +173 -0
  749. package/docs/content/testing.md +327 -0
  750. package/docs/content/type-reflection-architecture.md +149 -0
  751. package/docs/content/types.md +286 -0
  752. package/docs/content/uploads.md +145 -0
  753. package/docs/content/worker.md +182 -0
  754. package/docs/openapi.md +3 -0
  755. package/package.json +124 -0
  756. package/resources/proto/devconsole.proto +286 -0
  757. package/template-app/.env.development +10 -0
  758. package/template-app/gitignore.tmpl +11 -0
  759. package/template-app/package.json.tmpl +25 -0
  760. package/template-app/src/app.ts +13 -0
  761. package/template-app/src/config.ts +5 -0
  762. package/template-app/src/controllers/Example.controller.ts +19 -0
  763. package/template-app/src/database.ts +5 -0
  764. package/template-app/src/entities/Example.entity.ts +9 -0
  765. package/template-app/src/index.ts +7 -0
  766. package/template-app/src/migrations/.gitkeep +2 -0
  767. package/template-app/src/services/Example.service.ts +20 -0
  768. package/template-app/tests/app.spec.ts +8 -0
  769. package/template-app/tsconfig.json +26 -0
  770. package/template-app/tsconfig.test.json +5 -0
  771. package/types.d.ts +4 -0
@@ -0,0 +1,190 @@
1
+ # Migrations
2
+
3
+ TSF migrations are TypeScript files that compile to JavaScript and run against a `BaseDatabase`. The tooling can generate migrations from entity/schema differences, run pending migrations, reset source migrations to a base migration, and standardize MySQL charset/collation.
4
+
5
+ ## Migration Files
6
+
7
+ Migration files export a function or a `Migration` object.
8
+
9
+ ```ts
10
+ import { createMigration, sql } from '@zyno-io/ts-server-foundation';
11
+ import type { BaseDatabase } from '@zyno-io/ts-server-foundation';
12
+
13
+ export default createMigration(async (db: BaseDatabase) => {
14
+ await db.rawExecute(sql`
15
+ ALTER TABLE ${sql.identifier('users')}
16
+ ADD ${sql.identifier('archivedAt')} datetime NULL
17
+ `);
18
+ });
19
+ ```
20
+
21
+ You can also name a migration explicitly:
22
+
23
+ ```ts
24
+ import { defineMigration } from '@zyno-io/ts-server-foundation';
25
+
26
+ export const migration = defineMigration('20260630_120000_add_users', async db => {
27
+ await db.schema.create('users', table => {
28
+ table.integer('id').primary().autoIncrement();
29
+ table.string('email', 255);
30
+ });
31
+ });
32
+ ```
33
+
34
+ ## Running Migrations In Code
35
+
36
+ ```ts
37
+ import { loadMigrationsFromDirectory, MigrationRunner } from '@zyno-io/ts-server-foundation';
38
+
39
+ const migrations = await loadMigrationsFromDirectory('dist/src/migrations');
40
+ const executions = await new MigrationRunner(db).run(migrations);
41
+ ```
42
+
43
+ `MigrationRunner` sorts migrations lexicographically by name, records completed migrations in `_migrations` by default, and skips recorded names on later runs. Each record contains `name`, `executedAt`, and `durationMs`; the returned `MigrationExecution[]` contains the migrations completed by that call.
44
+
45
+ The constructor accepts a custom tracking-table name and logger. `run()` accepts a `beforeRun` callback:
46
+
47
+ ```ts
48
+ import { MigrationRunner } from '@zyno-io/ts-server-foundation';
49
+
50
+ const runner = new MigrationRunner(db, 'service_migrations');
51
+ await runner.run(migrations, {
52
+ beforeRun: async migrationDb => {
53
+ await migrationDb.rawExecute('SET lock_timeout = 5000');
54
+ }
55
+ });
56
+ ```
57
+
58
+ `beforeRun` runs on the scoped migration connection before the tracking table is created or read. The runner then creates the tracking table if necessary, reads completed names, and executes pending migrations one at a time. A migration is recorded only after its `up` function succeeds.
59
+
60
+ The runner scopes a connection but does not automatically wrap each migration in a transaction. If an `up` function fails, it logs the failure, stops immediately, does not record that migration, and does not run later migrations. Use `db.transaction()` inside a migration when the dialect and migration operations support transactional DDL and atomicity is required.
61
+
62
+ Convenience functions:
63
+
64
+ - `runMigrations(db, migrations, options?)` creates a default runner.
65
+ - `runMigrationsFromDirectory(db, directory)` loads compiled files and runs them.
66
+ - `loadMigrationsFromDirectory(directory)` only loads and normalizes migration exports.
67
+
68
+ ## CLI
69
+
70
+ The `tsf-migrate` binary loads a compiled app module, resolves `BaseDatabase` from the app, and runs the selected command.
71
+
72
+ ```bash
73
+ corepack yarn build
74
+ corepack yarn tsf-migrate create --app dist/src/app.js --description add_users
75
+ corepack yarn tsf-migrate run --app dist/src/app.js
76
+ ```
77
+
78
+ Commands:
79
+
80
+ | Command | Description |
81
+ | ------------ | -------------------------------------------------------------------------- |
82
+ | `create` | Creates a raw SQL migration from entity/database diff. |
83
+ | `create:raw` | Alias for `create`. |
84
+ | `run` | Runs compiled migrations from the dist migrations directory. |
85
+ | `reset` | Removes source migration files and creates a base migration from entities. |
86
+ | `charset` | Standardizes MySQL database/table charset and collation. |
87
+
88
+ Options:
89
+
90
+ | Option | Description |
91
+ | ------------------------------------ | ------------------------------------------------------ |
92
+ | `--app <path>` | Compiled app module. Default `dist/src/app.js`. |
93
+ | `--description <text>` / `-d <text>` | Migration file description. Default `auto_migration`. |
94
+ | `--migrations-dir <path>` | Source migration directory. Default `src/migrations`. |
95
+ | `--pg-schema <schema>` | PostgreSQL schema for introspection. |
96
+ | `--table <name>` | Limit diff generation to one table. Repeatable. |
97
+ | `--tables <a,b>` | Limit diff generation to a comma-separated table list. |
98
+
99
+ ## Diff Generation
100
+
101
+ `createMigrationPlan(db, options)` compares entity metadata to the live database.
102
+
103
+ ```ts
104
+ import { createMigrationPlan, writeMigrationFile } from '@zyno-io/ts-server-foundation';
105
+
106
+ const plan = await createMigrationPlan(db, { tableNames: ['users'] });
107
+
108
+ if (plan.hasChanges) {
109
+ writeMigrationFile(plan.statements, 'update_users');
110
+ }
111
+ ```
112
+
113
+ The generated plan includes:
114
+
115
+ - added and removed tables
116
+ - added, removed, modified, and renamed columns
117
+ - primary key changes
118
+ - indexes and unique indexes
119
+ - foreign keys
120
+ - MySQL enum definitions
121
+ - PostgreSQL enum type changes
122
+ - external foreign key drops/adds needed for scoped table changes
123
+
124
+ Generated statements are dependency ordered. Existing inbound, removed, modified, or temporarily preserved foreign keys are dropped first. Table/column/index/primary-key work follows, and new or restored foreign keys are added after referenced structures exist.
125
+
126
+ ::: warning Review destructive changes
127
+ Diff generation can emit `DROP TABLE`, `DROP COLUMN`, index/constraint drops, enum rewrites, type changes, and nullability changes. Renames are inferred only where the comparator has enough evidence; an intended rename can otherwise appear as a drop plus add. Read every generated migration, verify its table scope and PostgreSQL schema, and add any required data backfill or explicit rename before running it.
128
+ :::
129
+
130
+ `tableNames`/`--table` narrows entity and database comparison, but changes to referenced tables can still require temporary drops and restores of inbound foreign keys owned by tables outside that scope.
131
+
132
+ ## Schema Builder In Migrations
133
+
134
+ Use `db.schema.create()` for hand-written table creation.
135
+
136
+ ```ts
137
+ await db.schema.create('api_tokens', table => {
138
+ table.uuidString('id').primary();
139
+ table.string('name', 120);
140
+ table.string('tokenHash', 255).unique();
141
+ table.time('expiresAfterLocalTime').nullable();
142
+ table.dateTime('createdAt').defaultRaw('CURRENT_TIMESTAMP');
143
+ });
144
+ ```
145
+
146
+ Available column builders:
147
+
148
+ `id`, `uuidString`, `uuid`, `string`, `char`, `text`, `tinyText`, `mediumText`, `longText`, `integer`, `tinyint`, `smallint`, `bigint`, `bigInteger`, `float`, `double`, `decimal`, `boolean`, `dateTime`, `timestamp`, `timestamptz`, `time`, `date`, `json`, `jsonb`, `binary`, `blob`, `enum`, and MySQL-only `point`.
149
+
150
+ MySQL booleans are emitted as `tinyint(1) unsigned`; PostgreSQL booleans are emitted as `boolean`. Generated schema and entity index/foreign-key names are shortened with a stable hash when they exceed the active dialect identifier limit.
151
+
152
+ Column modifiers include `primary`, `nullable`, `notNull`, `unsigned`, `autoIncrement`, `default`, `defaultRaw`, `onUpdate`, `index`, `unique`, `references`, `change`, `after`, and `first`. Table builders support primary, ordinary/unique/spatial indexes, and single/composite foreign keys. Alter builders also support column, index, foreign-key, and primary-key drops and renames.
153
+
154
+ See [Database: Schema Builder](./database.md#schema-builder) for the complete database-level and builder API.
155
+
156
+ ## Reset
157
+
158
+ `resetMigrations(db, options)` removes every `.ts` file from the source migration directory and writes `00000000_000000_base.ts` containing table creation DDL for all registered entities. Non-`.ts` files are left in place. If there are no registered entity tables, it creates the directory if needed but does not write a base migration.
159
+
160
+ ```ts
161
+ import { resetMigrations } from '@zyno-io/ts-server-foundation';
162
+
163
+ await resetMigrations(db, { migrationsDir: 'src/migrations' });
164
+ ```
165
+
166
+ CLI:
167
+
168
+ ```bash
169
+ corepack yarn tsf-migrate reset --app dist/src/app.js
170
+ ```
171
+
172
+ ::: warning
173
+ `reset` permanently deletes the source `.ts` migration files in the selected directory before writing the base file. Commit or back up migrations first, and verify `--migrations-dir` before running it.
174
+ :::
175
+
176
+ ## MySQL Charset
177
+
178
+ ```bash
179
+ corepack yarn tsf-migrate charset utf8mb4 utf8mb4_0900_ai_ci --app dist/src/app.js
180
+ ```
181
+
182
+ The charset command is MySQL/MariaDB-only. PostgreSQL databases are skipped.
183
+
184
+ ## Loading Directories
185
+
186
+ `loadMigrationsFromDirectory()` accepts a source or dist directory. When a source path under `src/` is passed and compiled files exist under `dist/src/`, it resolves the dist path automatically.
187
+
188
+ Supported compiled file extensions are `.js`, `.cjs`, and `.mjs`.
189
+
190
+ A module may export a migration function or `Migration` object as either `default` or `migration`. Function exports use the compiled filename without its extension as the migration name. An invalid module stops directory loading with an error.
@@ -0,0 +1,134 @@
1
+ # OpenAPI
2
+
3
+ OpenAPI generation is built from registered HTTP routes and reflected type metadata. The generator reads the same route parameter plan used by the HTTP router, so explicit controller annotations matter.
4
+
5
+ ## Document Identity And Operations
6
+
7
+ `serializeOpenApiSchema()` defaults `info.title` and `info.version` to the cached package metadata first read from `process.cwd()/package.json`, falling back to `API` and `0.0.0`. Call `resetPackageJsonCache()` after changing the working directory, or override either value explicitly:
8
+
9
+ ```ts
10
+ const document = serializeOpenApiSchema(app, {
11
+ title: 'Users API',
12
+ version: '2.1.0'
13
+ });
14
+ ```
15
+
16
+ Every operation receives a tag derived from its controller class name: the `Controller` suffix is removed and the remainder is camel-cased.
17
+
18
+ ## Controller Parameters
19
+
20
+ Controller parameters are explicit, except path parameters whose parameter name matches a URL token.
21
+
22
+ ```ts
23
+ import { ApiResponse, HttpBody, HttpPath, HttpQueries, HttpQuery, http } from '@zyno-io/ts-server-foundation';
24
+
25
+ class ListUsersQuery {
26
+ includePosts?: boolean;
27
+ limit!: number;
28
+ }
29
+
30
+ class CreateUserBody {
31
+ name!: string;
32
+ }
33
+
34
+ class UserDto {
35
+ id!: number;
36
+ name!: string;
37
+ }
38
+
39
+ @http.controller('/users')
40
+ class UserController {
41
+ @http.GET()
42
+ async list(query: HttpQueries<ListUsersQuery>): Promise<UserDto[]> {
43
+ return [];
44
+ }
45
+
46
+ @http.GET('/:id')
47
+ async get(id: HttpPath<number>, search?: HttpQuery<string, { name: 'q' }>): Promise<UserDto> {
48
+ return { id, name: search ?? '' };
49
+ }
50
+
51
+ @http.POST()
52
+ async create(body: HttpBody<CreateUserBody>): ApiResponse<UserDto, 201> {
53
+ return { id: 1, name: body.name };
54
+ }
55
+ }
56
+ ```
57
+
58
+ `HttpQueries<T>` expands class or object properties into query parameters. Required properties of `T` are required query parameters only when the aggregate controller parameter is required. For `query?: HttpQueries<T>`, OpenAPI marks every expanded parameter optional because the whole aggregate may be omitted; at runtime, supplying any query value still validates the resulting object as `T`, including its required properties. `HttpQuery<T>` documents one query parameter. `HttpBody<T>` becomes a JSON request body unless the reflected body contains file uploads. A route may declare only one `HttpBody<T>` parameter; multiple body parameters fail route registration.
59
+
60
+ The first paragraph of a route method's JSDoc becomes the OpenAPI operation `summary`. Later paragraphs and JSDoc tags are not included.
61
+
62
+ Bodies with a required `FileUpload` are documented only as `multipart/form-data`. If every file in the body is optional or nullable, the same schema is exposed for both `application/json` and `multipart/form-data`, allowing requests that omit the files to remain ordinary JSON. A standalone `FileUpload` controller parameter always makes the operation multipart; required and optional standalone parameters are reflected in the multipart schema and request-body requiredness. File constraints are emitted as `x-maxSizeBytes`, `x-allowedTypes`, and multipart encoding content types.
63
+
64
+ File requiredness is discovered recursively for OpenAPI media-type selection. A required nested object containing a required file therefore makes the body multipart-only, while an optional nested object permits both JSON and multipart schemas. This is schema behavior only: the runtime multipart parser assigns file parts to top-level fields, so flatten upload DTO properties instead of relying on automatic population of `nested.file`.
65
+
66
+ ## Responses
67
+
68
+ `ApiResponse<T, Status>` documents and emits a JSON response with the given status. The status defaults to `200`, so `ApiResponse<UserDto>` is equivalent to `ApiResponse<UserDto, 200>`.
69
+
70
+ Plain `Promise<T>` return types document and emit a `200` JSON response. `OkResponse`, `AnyResponse`, `JsonResponseResult`, `RawResponseResult`, `RedirectResponseResult`, and `EmptyResponseResult` keep their existing OpenAPI behavior.
71
+
72
+ An operation with a required `ParsedJwt` parameter receives `security: [{ bearerAuth: [] }]`, and the document gains an HTTP bearer security scheme with JWT format. An optional `ParsedJwt` does not mark the operation as requiring bearer authentication. Runtime authentication may also read the configured JWT cookie, but the generated document currently advertises only the Bearer mechanism.
73
+
74
+ ## Operation IDs
75
+
76
+ Operation IDs are camel-cased from the lowercase HTTP method, the controller class name without its `Controller` suffix, and the handler method name. Keep all three stable when generated clients depend on operation IDs.
77
+
78
+ ## Internal Routes
79
+
80
+ Generated documents exclude internal routes by default:
81
+
82
+ - `/openapi.json`
83
+ - `/openapi.yaml`
84
+ - `/_devconsole`
85
+ - `/healthz`
86
+ - `/metrics`
87
+
88
+ Call `serializeOpenApiSchema(app, { includeInternal: true })` if a tool needs the full internal route list.
89
+
90
+ ## Runtime Routes
91
+
92
+ In development and test mode, the app serves:
93
+
94
+ - `/openapi.json`
95
+ - `/openapi.yaml`
96
+
97
+ Route exposure follows this precedence:
98
+
99
+ | Configuration | Result |
100
+ | ------------------------------------------- | --------------------------------------------------- |
101
+ | `ENABLE_OPENAPI_ROUTE=1` | Routes enabled in every environment. |
102
+ | `ENABLE_OPENAPI_ROUTE=0` | Routes disabled in every environment. |
103
+ | Route flag unset, `ENABLE_OPENAPI_SCHEMA=1` | Legacy fallback enables routes. |
104
+ | Route flag unset, `ENABLE_OPENAPI_SCHEMA=0` | Legacy fallback disables routes. |
105
+ | Both unset | Enabled in development/test and disabled elsewhere. |
106
+
107
+ The explicit route flag always wins when it conflicts with the legacy schema flag. Both `/openapi.json` and `/openapi.yaml` use the same decision.
108
+
109
+ ## Startup YAML Dump
110
+
111
+ In development, TSF writes `openapi.yaml` to the current working directory after startup unless `NODE_TEST_CONTEXT` identifies a Node test process. Test and production environments do not dump by default.
112
+
113
+ `ENABLE_OPENAPI_SCHEMA=1` explicitly enables the dump in any environment, including a Node test context; `ENABLE_OPENAPI_SCHEMA=0` explicitly suppresses it. This flag directly controls writing the file and acts as the legacy route-exposure fallback only when `ENABLE_OPENAPI_ROUTE` is unset.
114
+
115
+ ## Explicit Generation
116
+
117
+ Generate the schema without starting a long-running server:
118
+
119
+ ```bash
120
+ tsf-dev openapi:generate
121
+ tsf-dev openapi:generate -p tsconfig.json
122
+ ```
123
+
124
+ The command builds the project and runs its package `main` as `node . openapi:generate`. The built-in `App.run()` command writes `openapi.yaml` in the project working directory without starting a long-running server. It uses the same registered route graph as the application; no separate app-module or export selection is needed.
125
+
126
+ Programmatic generation is also available:
127
+
128
+ ```ts
129
+ import { dumpOpenApiSchema, serializeOpenApiSchema, serializeOpenApiYaml } from '@zyno-io/ts-server-foundation';
130
+
131
+ const document = serializeOpenApiSchema(app, { includeInternal: false });
132
+ const yaml = serializeOpenApiYaml(app);
133
+ await dumpOpenApiSchema(app, { path: 'openapi.yaml' });
134
+ ```
@@ -0,0 +1,98 @@
1
+ # Feature Overview
2
+
3
+ TS Server Foundation is an application runtime and toolkit for TypeScript services. It combines its own reflected type metadata, dependency injection, HTTP runtime, database layer, operational services, and development tools behind one package. The detailed guides are the source of truth; this page is the map of what the package provides and how the pieces fit together.
4
+
5
+ The project is built and maintained primarily for Zyno Consulting's own production systems. We publish it openly in the hope that it is useful to others, while its roadmap and maintenance priorities remain guided by the needs of those systems rather than a promise of general-purpose framework support.
6
+
7
+ ## Application Foundation
8
+
9
+ `createApp()` assembles a service from explicit configuration, controllers, providers, listeners, modules, and an optional database. It owns application startup, HTTP startup, signal handling, workers, DevConsole, health checks, and orderly shutdown.
10
+
11
+ | Area | Included behavior | Detailed guide |
12
+ | --- | --- | --- |
13
+ | Application lifecycle | Bootstrap and shutdown events, signal handling, idempotent start/stop, and rollback after failed startup | [Dependency Injection](./di.md#application-lifecycle) |
14
+ | Dependency injection | Constructor injection, value/class/factory providers, singleton/request/transient scopes, modules, and global exports | [Dependency Injection](./di.md) |
15
+ | Configuration | Reflected config classes, env-file loading, typed coercion, encrypted `_SECRET` values, and environment snapshots | [Configuration](./configuration.md), [Environment](./env.md) |
16
+ | Type reflection | Runtime type metadata, annotations, custom validators, custom deserializers, aliases, and compiler boundaries | [Type Reflection](./reflection.md), [Architecture](./type-reflection-architecture.md) |
17
+ | CLI and scaffolding | App creation, TypeScript 7 compiler setup, build/watch/run workflows, tests, migrations, OpenAPI, and proto generation | [CLI Tools](./cli.md) |
18
+
19
+ Use constructor injection inside application code. `resolve()` and its `r()` alias are available for app-level code that cannot receive a constructor dependency. Register `@AutoConstruct()` classes as providers when they must be created during startup.
20
+
21
+ ## HTTP And API Contracts
22
+
23
+ TSF owns its HTTP router and request pipeline. Controllers use decorators for routing and explicit reflected annotations for wire inputs.
24
+
25
+ | Area | Included behavior | Detailed guide |
26
+ | --- | --- | --- |
27
+ | HTTP routing | Controllers, exact methods, path parameters, middleware, CORS, workflows, static files, upgrades, and in-memory requests | [HTTP](./http.md) |
28
+ | Inputs | Body/query/path/header annotations, reflected coercion and validation, custom parameter resolvers, and request-scoped caching | [HTTP](./http.md#parameter-injection) |
29
+ | Uploads and streams | Guarded multipart files, size/MIME constraints, temporary-file cleanup, compressed bodies, and raw request streams | [Uploads](./uploads.md) |
30
+ | Responses and errors | JSON/raw/redirect/empty results, response annotations, normalized HTTP errors, and streaming responses | [HTTP](./http.md#responses) |
31
+ | OpenAPI | Schemas generated from the same reflected metadata used by validation, explicit response status types, runtime routes, and YAML generation | [OpenAPI](./openapi.md) |
32
+ | Authentication | HS256/EdDSA JWTs, entity auth middleware, custom resolvers, Basic auth, password hashing, and reset tokens | [Authentication](./authentication.md) |
33
+
34
+ The HTTP input pipeline deserializes and validates reflected values before controller invocation. Controller outputs use ordinary JSON serialization; OpenAPI response types describe the contract but do not add runtime output validation.
35
+
36
+ ## Database And Persistence
37
+
38
+ The database layer is a thin active-record and query system over `mysql2` and `pg`, with dialect-aware schema and migration tooling.
39
+
40
+ | Area | Included behavior | Detailed guide |
41
+ | --- | --- | --- |
42
+ | Databases and entities | MySQL/PostgreSQL adapters, reflected entity schemas, column conversion, active-record helpers, and retrieval APIs | [Database](./database.md) |
43
+ | Queries | Typed filters, joins, selection, paging, patch/delete operations, relations, batched loading, and query observation | [Database](./database.md#query-builder) |
44
+ | Sessions | Transactions, nested savepoints, post-commit/post-rollback hooks, and dialect-specific session locks | [Database](./database.md#sessions-and-transactions) |
45
+ | SQL | Safe values and identifiers, composable fragments, raw database methods, and explicit unsafe escape hatches | [SQL](./sql.md) |
46
+ | Schema and migrations | Multi-dialect schema builder, live-schema diffs, generated migration files, runners, reset, charset, and PostgreSQL schemas | [Migrations](./migrations.md) |
47
+ | Storage annotations | UUIDs, defaults, update expressions, unsigned values, lengths, dates, coordinates, indexes, and references | [Types](./types.md) |
48
+
49
+ Database I/O performs column-aware storage conversion rather than the HTTP input validation pipeline. Database constraints enforce storage rules; call the reflected validation helpers explicitly when application code needs API-style validation outside HTTP.
50
+
51
+ ## Background And Distributed Services
52
+
53
+ | Area | Included behavior | Detailed guide |
54
+ | --- | --- | --- |
55
+ | Workers | BullMQ queues, in-process tests, inline execution, cron jobs, dedicated runners, execution records, observers, and DevConsole inspection | [Workers](./worker.md) |
56
+ | Redis | Client configuration, cache helpers, distributed mutexes, broadcasts, and distributed methods | [Redis](./redis.md) |
57
+ | Leader election | Redis-backed ownership with renewal, loss callbacks, and failover | [Leader Service](./leader-service.md) |
58
+ | Mesh | Typed cross-node requests, responses, broadcasts, membership, heartbeats, and leader-backed cleanup | [Mesh Service](./mesh-service.md) |
59
+ | Client tracking | Cross-node client reservation, activation, metadata, lookup, targeted calls, broadcasts, and SRPC integration | [Mesh Client Tracking](./mesh-client.md) |
60
+ | SRPC | HMAC-authenticated bidirectional WebSocket RPC, protobuf codecs, duplicate-client policy, reconnects, observers, and byte streams | [SRPC](./srpc.md) |
61
+ | Mail | SMTP/Postmark providers, direct and template messages, prepared messages, and typed templates | [Mail](./mail.md) |
62
+
63
+ Redis is feature-dependent, not a requirement for the base HTTP application. Configure it when enabling BullMQ workers, mutexes, caches, broadcasts, leader election, or mesh services.
64
+
65
+ ## Operations And Development
66
+
67
+ | Area | Included behavior | Detailed guide |
68
+ | --- | --- | --- |
69
+ | Health | `/healthz`, application version, built-in database checks, custom checks, and individual results | [Health Checks](./health.md) |
70
+ | Logging | Scoped Pino loggers, async context, structured errors, custom sinks, HTTP request modes, and Sentry forwarding | [Logging](./logging.md) |
71
+ | Telemetry | OpenTelemetry HTTP/Undici/DNS/Redis/MySQL/PostgreSQL instrumentation, OTLP export, Prometheus metrics, spans, and Sentry | [Telemetry](./telemetry.md) |
72
+ | DevConsole | Local-only routes, OpenAPI, requests, SRPC, database queries/entities, health, mutex, worker, environment, and REPL views | [DevConsole](./devconsole.md) |
73
+ | Testing | Node test runner, app facades, in-memory HTTP, MySQL/PostgreSQL isolation, savepoints, migrations, fixtures, mocks, and assertions | [Testing](./testing.md) |
74
+ | Helpers | Async/process tools, data transforms, JSON, streams, resource cleanup, crypto, validation, dates, UUIDs, errors, and Redis helpers | [Helpers](./helpers.md) |
75
+
76
+ ## Process Model
77
+
78
+ The generated application exports an `App` through its package entrypoint and accepts explicit runtime commands:
79
+
80
+ ```bash
81
+ node . server:start # HTTP/API process
82
+ node . worker:start # dedicated worker process, with health listener
83
+ node . migrate:run # release-time migrations
84
+ node . openapi:generate # write openapi.yaml without starting HTTP
85
+ ```
86
+
87
+ Production deployments should build once, run migrations as a release step, and separate API and worker processes when workers are enabled. Normal production server processes do not start the worker runner unless `ENABLE_JOB_RUNNER=true`; `worker:start` forces runner ownership.
88
+
89
+ `APP_ENV` is required when `NODE_ENV=production`. Tests run with `APP_ENV=test` and `TZ=UTC`. Database date and timestamp formatting uses UTC, but TSF does not force the timezone of an arbitrary server process; set `TZ=UTC` in the deployment environment when the whole application must run in UTC.
90
+
91
+ In development, DevConsole is available at `/_devconsole/` after the app listens. Its localhost socket check is the security boundary, so do not expose or proxy it to untrusted clients.
92
+
93
+ ## Start Here
94
+
95
+ - Follow [Getting Started](./getting-started.md) to scaffold or configure an application.
96
+ - Use the [Documentation Index](./README.md) for the complete page list.
97
+ - Check [Public API](./public-api.md) before adding imports from internal paths.
98
+ - Use [Release](./release.md) for build, docs, package, and versioning checks.
@@ -0,0 +1,84 @@
1
+ # Public API
2
+
3
+ The package intentionally exposes a small package-level import surface:
4
+
5
+ - `@zyno-io/ts-server-foundation` for application APIs
6
+ - `@zyno-io/ts-server-foundation/otel` for OpenTelemetry bootstrap
7
+
8
+ Feature-folder subpaths such as `/http`, `/database/sql`, `/testing`, `/services/logger`, and `/telemetry/sentry` are not exported. Import application APIs from the package root:
9
+
10
+ ```ts
11
+ import { App, BaseDatabase, HttpBody, HttpRequest, TestingHelpers, createApp, http, sql } from '@zyno-io/ts-server-foundation';
12
+ ```
13
+
14
+ The root export is the supported application surface. Internal file layout can change without becoming a package-level breaking contract.
15
+
16
+ ## Root Export Reference
17
+
18
+ The root barrel groups the supported APIs below. The examples are representative named exports, not separate import paths.
19
+
20
+ | Area | Representative root exports | Guide |
21
+ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------- |
22
+ | Application and commands | `App`, `createApp`, `BaseAppConfig`, `AppModule`, `createModule`, `AutoConstruct`, lifecycle tokens, `cli` | [Getting Started](./getting-started.md) |
23
+ | Dependency injection/events | `Container`, provider types, `resolve`, `EventBus`, `EventToken`, `event` | [Dependency Injection](./di.md) |
24
+ | HTTP and uploads | `http`, `HttpRequest`, `HttpResponse`, `HttpMiddleware`, `FileUpload`, HTTP errors, request/response workflow tokens | [HTTP](./http.md) |
25
+ | Authentication and health | `JWT`, `ParsedJwt`, `Auth`, auth middleware helpers, `HealthcheckService`, `HealthcheckController` | [Authentication](./authentication.md) |
26
+ | Reflection and validation | `typeOf`, `ReflectionClass`, `ReflectionKind`, annotation readers, `deserialize`, `validate`, `validatedDeserialize`, registries | [Type Reflection](./reflection.md) |
27
+ | Shared types | HTTP wrapper types, database markers, validation tags, `DateString`, `UuidString`, `PhoneNumber`, `TrimmedString`, utility types | [Types](./types.md) |
28
+ | Database, SQL, migrations | `BaseDatabase`, `BaseEntity`, `DatabaseSession`, query/relation helpers, `sql`, schema builders, migration runner/diff/maintenance helpers | [Database](./database.md) |
29
+ | General and Redis helpers | Async context, process/promise/data/stream/security/date/error/UUID helpers, `Cache`, Redis/broadcast/mutex helpers | [Helpers](./helpers.md) |
30
+ | Logging and services | Logger APIs, workers, leader election, mail, mesh, and mesh-client tracking | [Logging](./logging.md) |
31
+ | SRPC | `SrpcClient`, `SrpcServer`, `SrpcByteStream`, handlers, errors, and observers | [SRPC](./srpc.md) |
32
+ | OpenAPI | `serializeOpenApiSchema`, `serializeOpenApiYaml`, `dumpOpenApiSchema`, schema inspection helpers and document types | [OpenAPI](./openapi.md) |
33
+ | Telemetry and Sentry | Span/context helpers plus `installSentry`, `flushSentry`, and related state helpers | [Telemetry](./telemetry.md) |
34
+ | DevConsole | Controller/runtime/store, local-only middleware, observers, and inspection helpers | [DevConsole](./devconsole.md) |
35
+ | Testing | `TestingFacade`, facade builders, mock-request helpers, fixtures, expectations, and `TestingHelpers` | [Testing](./testing.md) |
36
+
37
+ The emitted `.d.ts` file is the authoritative symbol-level reference. Package tests compile representative imports from every group and verify that the package export map exposes only `.` and `./otel`.
38
+
39
+ ## OpenTelemetry Bootstrap
40
+
41
+ OpenTelemetry instrumentation must be initialized before most other imports. Use the dedicated subpath for that early import:
42
+
43
+ ```ts
44
+ import { init } from '@zyno-io/ts-server-foundation/otel';
45
+
46
+ init();
47
+
48
+ const { createApp } = await import('@zyno-io/ts-server-foundation');
49
+ ```
50
+
51
+ Sentry helpers, span helpers, HTTP helpers, database helpers, testing helpers, and service classes are exported from the root package.
52
+
53
+ The `/otel` subpath exports `init`, `shutdownTelemetry`, `resetTelemetryForTests`, `TelemetryInitOptions`/`IOtelOptions`, the HTTP attribute-hook type, and the OTel state/span helpers. `init` is intentionally absent from the root so a bootstrap import does not first load the rest of the application package. Conversely, service/database/HTTP APIs are not exported from `/otel`.
54
+
55
+ ## Application Boundary
56
+
57
+ `App` owns application lifecycle, DI, config, and command entrypoints. HTTP server APIs live under `app.http`:
58
+
59
+ ```ts
60
+ const app = createApp({ controllers: [UsersController] });
61
+
62
+ await app.http.listen(3000, '127.0.0.1');
63
+ app.http.registerUpgradeHandler(handler);
64
+ app.http.registerObserver(entry => {
65
+ // observe completed HTTP requests
66
+ });
67
+
68
+ await app.stop();
69
+ ```
70
+
71
+ Application entrypoints should normally call `app.run()`, which requires an explicit built-in or registered command such as `server:start` or `openapi:generate`:
72
+
73
+ ```ts
74
+ if (require.main === module) {
75
+ void app.run();
76
+ }
77
+ ```
78
+
79
+ ```bash
80
+ node . server:start
81
+ node . openapi:generate
82
+ ```
83
+
84
+ HTTP server APIs live under `app.http` so the base application class remains focused on lifecycle, DI, config, and command dispatch.