@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,212 @@
1
+ # Dependency Injection
2
+
3
+ TSF has a dependency injection container that uses reflected type metadata for constructor parameter types. It supports class providers, structured providers, scopes, modules, request contexts, and globally injectable exports from imported modules.
4
+
5
+ ## Basic Providers
6
+
7
+ Register providers through `createApp()` or `createContainer()`:
8
+
9
+ ```ts
10
+ import { createApp } from '@zyno-io/ts-server-foundation';
11
+
12
+ class UserRepository {}
13
+
14
+ class UserService {
15
+ constructor(readonly users: UserRepository) {}
16
+ }
17
+
18
+ const app = createApp({
19
+ providers: [UserRepository, UserService]
20
+ });
21
+
22
+ const service = app.get(UserService);
23
+ ```
24
+
25
+ Constructor dependencies are inferred from reflected class types. Optional constructor parameters are injected only when a matching provider is registered.
26
+
27
+ ## Structured Providers
28
+
29
+ ```ts
30
+ const TOKEN = Symbol('token');
31
+
32
+ const app = createApp({
33
+ providers: [
34
+ { provide: TOKEN, useValue: 7 },
35
+ { provide: BaseUserService, useClass: UserService },
36
+ { provide: CurrentUserService, useExisting: BaseUserService },
37
+ {
38
+ provide: UserPresenter,
39
+ useFactory: (users: UserService) => new UserPresenter(users),
40
+ deps: [UserService]
41
+ }
42
+ ]
43
+ });
44
+ ```
45
+
46
+ Supported provider forms:
47
+
48
+ | Provider | Behavior |
49
+ | ------------------ | ----------------------------------------------------------------------------------------------- |
50
+ | Class | Singleton class provider by default. |
51
+ | `useValue` | Static singleton value. |
52
+ | `useClass` | Instantiate a concrete class for a token. |
53
+ | `useExisting` | Alias another provider token and preserve the target provider's scope. |
54
+ | `useFactory` | Call a factory with explicit `deps`. |
55
+ | `useTargetFactory` | Call a factory with the consuming class target plus explicit `deps`. Useful for scoped loggers. |
56
+
57
+ ## Scopes
58
+
59
+ Provider scopes are:
60
+
61
+ | Scope | Behavior |
62
+ | ----------- | -------------------------------------------------------------------------------------- |
63
+ | `singleton` | One instance per container. Default for class, `useClass`, and `useFactory` providers. |
64
+ | `transient` | New instance per resolution. Default for `useExisting` and `useTargetFactory`. |
65
+ | `request` | One instance per request context. Requires a request context. |
66
+ | `http` | Legacy alias for `request`; normalized to request scope. |
67
+
68
+ ```ts
69
+ const app = createApp({
70
+ providers: [{ provide: RequestState, useClass: RequestState, scope: 'request' }]
71
+ });
72
+ ```
73
+
74
+ Request-scoped providers cannot be captured by singletons. The container throws `ScopeMismatchError` instead of letting a singleton hold request-local state forever.
75
+
76
+ The same rule applies to request-local values placed directly in `RequestContext.instances`: resolving them through a singleton factory is rejected. Request-scoped and transient consumers may depend on request-scoped providers when they are resolved with a context. A transient consumer is rebuilt on every resolution, while its request-scoped dependency is reused within that context. The legacy `scope: 'http'` spelling is normalized to `request` and has identical caching and error behavior.
77
+
78
+ ## Modules And Global Exports
79
+
80
+ Modules are plain definitions created with `createModule()` or `new AppModule()`.
81
+
82
+ ```ts
83
+ import { createApp, createModule } from '@zyno-io/ts-server-foundation';
84
+
85
+ class ExportedService {}
86
+ class HiddenService {}
87
+
88
+ const featureModule = createModule({
89
+ providers: [ExportedService, HiddenService],
90
+ exports: [ExportedService]
91
+ });
92
+
93
+ class Consumer {
94
+ constructor(readonly service: ExportedService) {}
95
+ }
96
+
97
+ const app = createApp({
98
+ imports: [featureModule],
99
+ providers: [Consumer]
100
+ });
101
+ ```
102
+
103
+ An exported provider from a module imported by the root app is globally injectable. Consumers do not need to explicitly import the feature module at their own declaration site.
104
+
105
+ Non-exported providers stay local to their module. Transitive exports do not leak unless the intermediate module re-exports them.
106
+
107
+ Duplicate global exports are rejected with `DuplicateProviderError`.
108
+
109
+ Module definitions can also declare `controllers`, `listeners`, and `commands`. `createApp()` walks imported modules recursively, registers their controllers as request-scoped providers, wires decorated listeners, and makes decorated commands available to app command dispatch. Controllers must use `@http.controller()`; commands must use `@cli.command()` or `@cli.controller()`.
110
+
111
+ ## Request Context
112
+
113
+ The HTTP router creates a request context for controller and middleware resolution. Request-scoped providers resolve from that context.
114
+
115
+ For manual container usage:
116
+
117
+ ```ts
118
+ import { createContainer } from '@zyno-io/ts-server-foundation';
119
+
120
+ const container = createContainer({
121
+ providers: [{ provide: RequestState, useClass: RequestState, scope: 'request' }]
122
+ });
123
+
124
+ const context = container.createRequestContext();
125
+ const state = container.get(RequestState, context);
126
+ ```
127
+
128
+ Resolving a request-scoped provider without a request context throws `RequestScopeError`.
129
+
130
+ ## Controller Lifecycle
131
+
132
+ HTTP controllers are registered as request-scoped providers by `createApp()`. A matched route creates a request context, resolves the controller inside that context, invokes the route method, and then lets the context go.
133
+
134
+ Normal injected services are singletons by default. This means a controller instance is per request, but a constructor-injected repository/service stays shared unless its provider is explicitly registered with `scope: 'request'` or `scope: 'transient'`.
135
+
136
+ ## Application Lifecycle
137
+
138
+ `App` exposes five lifecycle tokens:
139
+
140
+ | Token | Dispatch point |
141
+ | --------------------------- | -------------------------------------------------------------------------------------------------------------------- |
142
+ | `onAppBootstrap` | At the start of `app.start()`, before database construction, `AutoConstruct` providers, and the worker runner. |
143
+ | `onServerBootstrap` | After the Node HTTP server has successfully bound and after signal handlers/DevConsole startup. |
144
+ | `onServerMainBootstrapDone` | Immediately after all `onServerBootstrap` handlers complete. |
145
+ | `onServerShutdownRequested` | First step of a started app's `stop()` sequence, before framework-owned resources are closed. |
146
+ | `onServerShutdown` | After worker services, signal handlers, DevConsole, and the owned HTTP server are closed; before telemetry shutdown. |
147
+
148
+ `app.start()` dispatches only application bootstrap. `app.http.listen()` calls `start()` automatically and then dispatches the two server-bootstrap tokens after binding. Calling `start()` concurrently shares the in-flight startup work; calling it again after startup is a no-op. After a completed `stop()`, a later `start()` is a new lifecycle and dispatches bootstrap again.
149
+
150
+ Register a direct handler with `app.on()`:
151
+
152
+ ```ts
153
+ import { onAppBootstrap } from '@zyno-io/ts-server-foundation';
154
+
155
+ const unsubscribe = app.on(
156
+ onAppBootstrap,
157
+ async () => {
158
+ await warmCache();
159
+ },
160
+ 10
161
+ );
162
+ ```
163
+
164
+ Or register a DI-backed listener class:
165
+
166
+ ```ts
167
+ import { createApp, event, onAppBootstrap } from '@zyno-io/ts-server-foundation';
168
+
169
+ class LifecycleListener {
170
+ constructor(private readonly service: UserService) {}
171
+
172
+ @event.listen(onAppBootstrap, 10)
173
+ async warm() {
174
+ await this.service.warmCache();
175
+ }
176
+ }
177
+
178
+ const app = createApp({ listeners: [LifecycleListener] });
179
+ ```
180
+
181
+ Handlers run sequentially in descending numeric `order`; handlers with the same order retain registration order. `app.on()` registers the callback directly and returns an unsubscribe function. Decorated methods are discovered only on classes listed in `listeners` (including imported-module listeners); those classes are registered with DI and resolved when the event dispatches.
182
+
183
+ `@AutoConstruct()` follows the provider graph rather than scanning every decorated class in the program. During startup, TSF instantiates only decorated classes already registered as class or `useClass` providers, including registered providers in imported modules. The decorator does not register a class. A configured database is constructed before these providers so entity metadata is ready for startup services.
184
+
185
+ If worker-runner startup fails, the app attempts both runner and queue-registry rollback. A rollback failure is attached as the startup error's cause when possible; otherwise startup and rollback failures are combined in an `AggregateError`.
186
+
187
+ `app.stop()` is idempotent after shutdown and does nothing before startup. For a started app it dispatches `onServerShutdownRequested`, closes enabled worker runner/queue resources, removes installed signal handlers, closes DevConsole and the owned HTTP listener, dispatches `onServerShutdown`, then shuts down installed TSF telemetry. A failed listener or framework cleanup step does not prevent later steps from running; after cleanup, `stop()` rethrows the single failure or an `AggregateError` containing multiple failures. It does not infer teardown methods on arbitrary DI providers and does not close a configured database driver; use a shutdown listener for application-owned database clients, Redis clients, or other resources. SIGINT/SIGTERM handlers are installed only after an HTTP listener binds and call `app.stop()` before exiting.
188
+
189
+ ## App-Level Resolution
190
+
191
+ Use constructor injection first. When you need to resolve from the current app outside constructor injection, use `resolve()` or `r()`:
192
+
193
+ ```ts
194
+ import { BaseAppConfig, r, resolve } from '@zyno-io/ts-server-foundation';
195
+
196
+ const config = resolve(BaseAppConfig);
197
+ const sameConfig = r(BaseAppConfig);
198
+ ```
199
+
200
+ `resolve()` uses the current app created by `createApp()`.
201
+
202
+ ## Errors
203
+
204
+ Common DI errors:
205
+
206
+ | Error | Meaning |
207
+ | ------------------------ | ----------------------------------------------------------------- |
208
+ | `ProviderNotFoundError` | No provider is visible for the requested token. |
209
+ | `DuplicateProviderError` | Two imported modules expose the same token as a global export. |
210
+ | `CyclicDependencyError` | Constructor/factory dependency graph contains a cycle. |
211
+ | `RequestScopeError` | A request-scoped provider was resolved without a request context. |
212
+ | `ScopeMismatchError` | A singleton attempted to capture request-scoped state. |
@@ -0,0 +1,182 @@
1
+ # Documentation Maintenance
2
+
3
+ This page defines how TSF documentation is kept current as implementation changes.
4
+
5
+ ## Update Rules
6
+
7
+ - Prefer examples that compile against `@zyno-io/ts-server-foundation`.
8
+ - Import application APIs from the package root unless a page documents the sole supported subpath, `/otel`.
9
+ - Keep HTTP parameter examples explicit: `HttpBody`, `HttpQueries`, `HttpQuery`, `HttpPath`, `HttpHeader`, `FileUpload`, and `HttpRequest`.
10
+ - Keep database examples focused on `BaseDatabase`, sessions, active-record helpers, migrations, and SQL fragments.
11
+ - Document environment keys through `Env` and config classes instead of direct `process.env` access.
12
+ - Run `corepack yarn docs:build` after sidebar, link, frontmatter, or VitePress config changes.
13
+
14
+ ## Content Map
15
+
16
+ Core application pages:
17
+
18
+ - `getting-started.md`
19
+ - `public-api.md`
20
+ - `di.md`
21
+ - `configuration.md`
22
+ - `env.md`
23
+ - `http.md`
24
+ - `uploads.md`
25
+ - `openapi.md`
26
+ - `authentication.md`
27
+ - `health.md`
28
+ - `logging.md`
29
+ - `reflection.md`
30
+ - `type-reflection-architecture.md`
31
+ - `types.md`
32
+
33
+ Database pages:
34
+
35
+ - `database.md`
36
+ - `sql.md`
37
+ - `migrations.md`
38
+
39
+ Services and runtime pages:
40
+
41
+ - `worker.md`
42
+ - `redis.md`
43
+ - `srpc.md`
44
+ - `devconsole.md`
45
+ - `leader-service.md`
46
+ - `mail.md`
47
+ - `mesh-service.md`
48
+ - `mesh-client.md`
49
+
50
+ Utilities and operations pages:
51
+
52
+ - `helpers.md`
53
+ - `telemetry.md`
54
+ - `testing.md`
55
+ - `cli.md`
56
+ - `release.md`
57
+ - `documentation-plan.md`
58
+
59
+ ## Change Checklist
60
+
61
+ When an API changes:
62
+
63
+ 1. Update the feature page that owns the API.
64
+ 2. Update [Public API](./public-api.md) if exports or supported import paths change.
65
+ 3. Update [Configuration](./configuration.md) and [Environment](./env.md) if environment keys or config defaults change.
66
+ 4. Update [OpenAPI](./openapi.md) if route metadata, response typing, or schema output changes.
67
+ 5. Update [Testing](./testing.md) when testing helpers or required local services change.
68
+ 6. Rebuild the docs with `corepack yarn docs:build`.
69
+
70
+ ## Optional Improvements
71
+
72
+ - Add deployment examples once a standard TSF app deployment shape is finalized.
73
+ - Add generated API reference pages if the package adopts a docs extractor.
74
+ - Extract and compile every TypeScript documentation fence if the representative package-import smoke test is expanded into executable documentation.
75
+ - Add an isolated publish/install fixture for shared-package `__tsfTypeAliases` metadata.
76
+ - Extend conditional live MySQL and PostgreSQL coverage to exercise every schema-builder operation in addition to the fake-driver SQL checks.
77
+ - Automate DevConsole screenshot capture if screenshots need regular refreshes.
78
+
79
+ ## Audit Progress Record
80
+
81
+ The main code-to-docs audit was implemented in three phases. A second-pass review found additional operational and adversarial cases, recorded below rather than treating the audit as fully closed. Service-backed integration suites skip when their required Redis, MySQL, or PostgreSQL environment is not configured.
82
+
83
+ ### Legacy Coverage Baseline
84
+
85
+ The July 2026 documentation pass compared the full `dk-server-foundation` README and every page in its documentation directory against TSF. Each durable feature area has a current TSF destination: application/lifecycle/DI, configuration, database and migrations, HTTP/CORS/uploads, authentication, workers, SRPC, Redis/leader/mesh, mail, telemetry, health, helpers, testing, types, logging, DevConsole, and CLI operations are linked from [Feature Overview](./overview.md).
86
+
87
+ The comparison does not copy Deepkit-specific classes, decorators, ORM connection types, Jest behavior, or removed commands into TSF docs. Where TSF kept or replaced the capability, the current API is documented instead. The pass added explicit coverage for the process model and operational defaults; the complete CLI; trusted proxy addresses and request caching; test facade lifecycle, global setup, and module reset; telemetry resources and remote span inputs; worker metadata and observers; SRPC codec/stream types, pending byte-stream limits, and the current telemetry boundary; calendar-version generation; and GitHub Pages deployment.
88
+
89
+ TSF-only material remains separately documented for its native DI and reflection pipeline, environment snapshots, PostgreSQL, SQL fragments, schema diffs and migrations, multipart/raw uploads, OpenAPI generation, public export policy, mesh client tracking, and reflection architecture. The root README intentionally stays short and points to the overview and full documentation index instead of duplicating these guides.
90
+
91
+ ### Phase 1: Settled Contracts
92
+
93
+ Completed in the first implementation pass:
94
+
95
+ 1. A missing non-optional standalone `FileUpload` returns `400`; optional uploads receive `undefined`. Runtime and OpenAPI tests cover non-multipart, text-only multipart, wrong-field, required, and optional cases.
96
+ 2. Routes with multiple `HttpBody` parameters fail registration. This avoids the previous runtime/OpenAPI shape conflict.
97
+ 3. An optional `HttpQueries<T>` receives `undefined` when no query is present, and its expanded OpenAPI query parameters are non-required.
98
+ 4. Collision-prone `cast<T>()`, `assert<T>()`, and `is<T>()` are compiler-recognized only when import identity proves that they come from the foundation package. They fail closed when metadata is absent, with focused runtime and compiler-policy tests.
99
+ 5. Relation lookup/grouping helpers preserve numeric ID `0`, with direct, keyed, grouped, and pivot-relation coverage.
100
+
101
+ ### Phase 2: Core Guides
102
+
103
+ Completed coverage includes project setup and scaffold anatomy; routing, middleware, request scope, and lifecycle order; HTTP headers, queries, bodies, encodings, streams, responses, observers, and port `0`; upload selection, MIME policies, and temporary-file lifetime; logger levels, contexts, sinks, and alerting; JWT configuration, token precedence, entity validation, and verification warnings; application lifecycle and DI; and the OpenAPI configuration and runtime/schema parity rules.
104
+
105
+ Typed multi-file parameter arrays are not supported. A direct `FileUpload` selects one file, while handlers that need every file read `HttpRequest.uploadedFiles`.
106
+
107
+ ### Phase 3: Feature References
108
+
109
+ Completed coverage includes the public reflection API and shared-package metadata; database sessions, relations, SQL, schema building, and migrations; exported helpers and supported package entry points; SRPC handshakes, handlers, reconnect behavior, and errors; mesh-client reservations, activation, delivery, and metadata synchronization; worker execution modes; telemetry; and DevConsole operation. Type Reflection Architecture and this maintenance page are included in navigation.
110
+
111
+ Among the implementation defects fixed by the audit are required-upload enforcement, optional aggregate-query parity, relation ID `0` preservation, malformed-path and request-encoding handling, HEAD response parity, upload cleanup/order, remote mesh-client metadata persistence, and JSDoc-derived OpenAPI operation summaries.
112
+
113
+ ### Verification Coverage
114
+
115
+ The audit added focused checks for:
116
+
117
+ - documentation links, headings, navigation coverage, representative root and `/otel` imports, and the VitePress production build in CI;
118
+ - HTTP routing, middleware, headers, bodies, encodings, streams, uploads, cleanup, response behavior, and Node/in-memory parity;
119
+ - OpenAPI environment and route-flag precedence, internal routes, security, summaries, and nested body-file schemas;
120
+ - JWTs, authentication entities, logging, lifecycle, DI, reflection, SQL guards, sessions, schema building, and migration failure ordering;
121
+ - selected DevConsole, worker, SRPC, mesh, leader-service, and telemetry success and failure paths.
122
+
123
+ Redis-, MySQL-, and PostgreSQL-backed cases are conditional integration tests. Configure the service-specific environment described in [Testing](./testing.md) to run them; an absent service skips those cases rather than changing the package contract.
124
+
125
+ ### Confirmed Corrections Awaiting Focused Coverage
126
+
127
+ The second and third review passes found objective defects and documentation errors that have been corrected. The following regression cases are still planned; they are not behavior decisions:
128
+
129
+ 1. HTTP and application lifecycle:
130
+ - make worker startup and both worker rollback steps fail independently, verifying that every cleanup is attempted without losing the startup error;
131
+ - exercise a post-bind bootstrap failure and verify that the listener and app-owned resources roll back;
132
+ - make both composed rollback hooks fail and prove that each is attempted and their failures are preserved;
133
+ - make multiple `App.stop()` steps fail and verify later cleanup plus single/aggregate rethrow behavior;
134
+ - cover `onResponse` failure before and after Node headers commit;
135
+ - cover `flushHeaders(); end(body)` and prove that the Node response completes with the body.
136
+ 2. Data, types, and reflection:
137
+ - cover present hostile keys (`__proto__`, `constructor`, `toString`) in public keyed results, absent hostile keys during relation resolution, same-key additional filters, and number/bigint ID `0`;
138
+ - cover explicit-secret `Crypto` construction before app creation, with both default and explicit IV lengths;
139
+ - reject a non-NANP international number through `PhoneNumberNANP` while retaining valid country-code-1 inputs;
140
+ - load the built health controller from compiled package output and verify working-directory package-version resolution.
141
+ 3. Runtime services and observability:
142
+ - cover sequential partial mesh-start rollback and instance deregistration;
143
+ - prove that DevConsole broadcasts target only active SRPC streams, falsy secret values are masked, and the database-query index evicts with its ring entry;
144
+ - cover metrics option/environment precedence, socket-peer authorization with spoofed forwarding headers, synchronous and asynchronous provider shutdown failures, reset failures, and state clearing;
145
+ - cover a throwing global error reporter without suppressing later reporting, and assert that `Logger.data()` preserves the parent scope.
146
+
147
+ ### Decision Register
148
+
149
+ These items intentionally remain unchanged until the project chooses a contract:
150
+
151
+ 1. Authentication and network policy:
152
+ - Should generated OpenAPI advertise configured JWT-cookie authentication in addition to Bearer authentication? Runtime accepts both, while the current document intentionally describes only Bearer.
153
+ - Is a private transport peer sufficient authorization for `/metrics`, or should it be localhost-only, authenticated, or controlled by an explicit allowlist? A public client behind a private reverse proxy appears as that private peer.
154
+ 2. Concurrent lifecycle behavior:
155
+ - Should concurrent `HttpServerRuntime.listen()` and `App.stop()` calls coalesce, reject, or follow another contract?
156
+ - Should concurrent `MeshService.start()` calls reject or coalesce, and should `stop()` during startup wait, cancel startup, or reject?
157
+ 3. Data and reflection semantics:
158
+ - Should migration tracking-write failure after a successful `up()` be reconciled, retried, or transactionally coupled where the dialect permits?
159
+ - Should tuples reject trailing input at direct validation and deserializing/HTTP boundaries, or should deserialization continue to project only declared positions?
160
+ - Should public keyed database helpers retain ordinary object prototypes for compatibility or return null-prototype dictionaries so every absent hostile key reads as `undefined`?
161
+ 4. Mesh and SRPC semantics:
162
+ - Should the Redis client-registry safety TTL be refreshed from mesh liveness, replaced with per-client leases, or removed?
163
+ - Should explicit MeshSrpc metadata updates merge, replace, or support explicit deletion, and how should live and registry state resolve races?
164
+ - Should both SRPC invocation directions preserve/expose `SrpcError.userError`, and should malformed established server frames be ignored or close the client?
165
+ 5. Worker and DevConsole policy:
166
+ - Is recorder persistence part of successful job execution, and how should recorder failure combine with an original handler failure?
167
+ - What timeout/cancellation contract should runner shutdown use for hanging handlers?
168
+ - Should `WorkerRecorderService` be bounded, and if so independently of the DevConsole's 200-entry view?
169
+ - Should process-global database, SRPC, worker, and mutex observers gain per-app ownership filtering?
170
+ 6. Compatibility and release operations:
171
+ - Should removed legacy telemetry subpaths, the `serializer` name, deleted conversion tooling, and removed standalone OpenAPI options retain deprecated compatibility aliases for a transition release?
172
+ - Confirm whether main-branch CI should publish to public npm and force-push the GitHub `main` mirror.
173
+
174
+ ### Planned Fixtures And Quality Gates
175
+
176
+ These gaps do not require a product behavior choice, but do require broader fixtures or test infrastructure:
177
+
178
+ 1. Extend live schema-builder coverage across both supported database engines and add a real migrated `_jobs` table fixture once recorder failure semantics are settled.
179
+ 2. Cover pending versus active SRPC maps, rejected-conflict callbacks, metadata races under the chosen semantics, and quiet-client Redis expiry under the chosen registry policy.
180
+ 3. Scan root and nested Markdown, reverse-check sidebar/navigation targets, and either adopt a Markdown parser or define the regex gate's supported Markdown subset.
181
+ 4. Add dynamic ESM import and packed-install checks, plus assertions that `/otel` exposes only its intended bootstrap surface.
182
+ 5. Compile documentation fences selectively, starting with setup, middleware, uploads, authentication, logging, and mail examples.
@@ -0,0 +1,120 @@
1
+ # Environment
2
+
3
+ TSF centralizes environment access through the exported `Env` object and config loader. Application code should prefer `Env` and reflected config classes over direct `process.env` reads.
4
+
5
+ ## `Env`
6
+
7
+ `Env` is preloaded with `process.env` and typed as optional strings.
8
+
9
+ ```ts
10
+ import { Env } from '@zyno-io/ts-server-foundation';
11
+
12
+ const adapter = Env.DB_ADAPTER; // string | undefined
13
+ Env.APP_ENV = 'development';
14
+ delete Env.PORT;
15
+ ```
16
+
17
+ Reading or writing `Env` reads or writes `process.env` at runtime. This keeps all known keys discoverable in one interface while preserving Node environment behavior.
18
+
19
+ ## Snapshots
20
+
21
+ Tests can snapshot and restore the full environment.
22
+
23
+ ```ts
24
+ import { applyEnv, envSnapshot } from '@zyno-io/ts-server-foundation';
25
+
26
+ const before = envSnapshot();
27
+
28
+ try {
29
+ applyEnv({ APP_ENV: 'test', DB_ADAPTER: 'postgres' });
30
+ // run isolated logic
31
+ } finally {
32
+ applyEnv(before);
33
+ }
34
+ ```
35
+
36
+ Helpers:
37
+
38
+ | Helper | Description |
39
+ | -------------------- | -------------------------------------------------------------------- |
40
+ | `envSnapshot()` | Returns a shallow copy of the current `Env`. |
41
+ | `applyEnv(env)` | Clears `process.env` and replaces it with defined values from `env`. |
42
+ | `toProcessEnv(env?)` | Converts an `EnvObject` to a plain `NodeJS.ProcessEnv`. |
43
+
44
+ ## Config Loading
45
+
46
+ `ConfigLoader` loads a reflected config class from dotenv files and `Env` using `@zyno-io/config`.
47
+
48
+ ```ts
49
+ import { BaseAppConfig, ConfigLoader } from '@zyno-io/ts-server-foundation';
50
+
51
+ class AppConfig extends BaseAppConfig {
52
+ FEATURE_ENABLED = false;
53
+ API_TIMEOUT_MS = 5000;
54
+ }
55
+
56
+ const config = new ConfigLoader(AppConfig).load();
57
+ ```
58
+
59
+ File load order from the current working directory:
60
+
61
+ 1. `.env`
62
+ 2. `.env.local`
63
+ 3. `.env.development` and `.env.development.local` when running tests
64
+ 4. `.env.${APP_ENV}`
65
+ 5. `.env.${APP_ENV}.local`
66
+ 6. Values already present in `Env`
67
+
68
+ Later values override earlier values. Config loading does not delete consumed keys from `process.env`, so loaded values remain available to later code and child processes. `_SECRET` keys are decrypted by `@zyno-io/config` when `CONFIG_DECRYPTION_SECRET` or the legacy `CONFIG_DECRYPTION_KEY` is present.
69
+
70
+ ## Defaults
71
+
72
+ `APP_ENV` is required in production. Outside production, it defaults automatically:
73
+
74
+ | Condition | Default |
75
+ | -------------------------------------------- | ------------- |
76
+ | Node test context is active | `test` |
77
+ | `NODE_ENV !== 'production'` | `development` |
78
+ | `NODE_ENV === 'production'` and no `APP_ENV` | Error |
79
+
80
+ ## Type Coercion
81
+
82
+ Config values are strings when read from files or environment. The loader coerces reflected number and boolean fields.
83
+
84
+ ```ts
85
+ class AppConfig extends BaseAppConfig {
86
+ PORT = 3000; // "8080" becomes 8080
87
+ ENABLE_CACHE = false; // "true" or "1" becomes true
88
+ }
89
+ ```
90
+
91
+ Literal boolean and number types are also coerced.
92
+
93
+ ## Loaded Environment Keys
94
+
95
+ When a config property is loaded from `Env`, the loader leaves that key in `Env` after loading. This keeps Node's process environment intact for later code and child processes.
96
+
97
+ ```ts
98
+ Env.PORT = '8080';
99
+ const config = new ConfigLoader(BaseAppConfig).load();
100
+
101
+ config.PORT; // 8080
102
+ Env.PORT; // "8080"
103
+ ```
104
+
105
+ ## Common Keys
106
+
107
+ The runtime recognizes these built-in config and environment keys. Most are reflected `BaseAppConfig` properties; early telemetry bootstrap also reads its `OTEL_*` controls directly from `Env`:
108
+
109
+ - application and HTTP: `APP_ENV`, `DEVCONSOLE_ENABLED`, `PORT`, `USE_REAL_IP_HEADER`, `HTTP_MAX_REQUEST_BODY_BYTES`, `HTTP_MAX_REQUEST_COMPRESSED_BODY_BYTES`
110
+ - database: `DB_ADAPTER`, `MYSQL_*`, `PG_*`
111
+ - auth: `AUTH_JWT_*`, `AUTH_BASIC_SECRET`
112
+ - Redis and workers: `REDIS_*`, `CACHE_REDIS_*`, `MUTEX_REDIS_*`, `BROADCAST_REDIS_*`, `MESH_REDIS_*`, `BULL_REDIS_*`, `BULL_QUEUE`, `MUTEX_MODE`, `ENABLE_JOB_RUNNER`
113
+ - OpenAPI: `ENABLE_OPENAPI_ROUTE`, `ENABLE_OPENAPI_SCHEMA`
114
+ - logging: `HTTP_REQUEST_LOGGING_MODE`, `HEALTHZ_ENABLE_REQUEST_LOGGING`, `ENABLE_PINO_PRETTY`, `ENABLE_PINO_SINGLE_LINE`, `LOG_LEVEL`
115
+ - telemetry: `SENTRY_DSN`, `OTEL_*`, `ALERTS_SLACK_WEBHOOK_URL`
116
+ - SRPC: `SRPC_AUTH_SECRET`, `SRPC_AUTH_CLOCK_DRIFT_MS`
117
+ - mail: `MAIL_*`, `SMTP_*`, `POSTMARK_SECRET`
118
+ - tests and tooling: `TEST_KEEP_DB`, `TEST_RUN_TS`, `TSF_TEST_*`, `PROTOC`
119
+
120
+ See [Configuration](./configuration.md) for the value-level config reference.