@nocobase/app-server 0.11.1-alpha.4 → 2.0.0-beta.1

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 (579) hide show
  1. package/README.md +295 -0
  2. package/dist/application/index.d.ts +128 -0
  3. package/dist/application/index.d.ts.map +1 -0
  4. package/dist/application/index.js +386 -0
  5. package/dist/application/index.js.map +1 -0
  6. package/dist/caching/config.d.ts +2 -0
  7. package/dist/caching/config.d.ts.map +1 -0
  8. package/dist/caching/config.js +2 -0
  9. package/dist/caching/config.js.map +1 -0
  10. package/dist/caching/index.d.ts +5 -0
  11. package/dist/caching/index.d.ts.map +1 -0
  12. package/dist/caching/index.js +4 -0
  13. package/dist/caching/index.js.map +1 -0
  14. package/dist/caching/provider.d.ts +8 -0
  15. package/dist/caching/provider.d.ts.map +1 -0
  16. package/dist/caching/provider.js +14 -0
  17. package/dist/caching/provider.js.map +1 -0
  18. package/dist/caching/token.d.ts +4 -0
  19. package/dist/caching/token.d.ts.map +1 -0
  20. package/dist/caching/token.js +3 -0
  21. package/dist/caching/token.js.map +1 -0
  22. package/dist/config/app-config-types.d.ts +44 -0
  23. package/dist/config/app-config-types.d.ts.map +1 -0
  24. package/dist/config/app-config-types.js +2 -0
  25. package/dist/config/app-config-types.js.map +1 -0
  26. package/dist/config/app-config.d.ts +60 -0
  27. package/dist/config/app-config.d.ts.map +1 -0
  28. package/dist/config/app-config.js +247 -0
  29. package/dist/config/app-config.js.map +1 -0
  30. package/dist/config/context.d.ts +3 -0
  31. package/dist/config/context.d.ts.map +1 -0
  32. package/dist/config/context.js +7 -0
  33. package/dist/config/context.js.map +1 -0
  34. package/dist/config/define-app-config.d.ts +71 -0
  35. package/dist/config/define-app-config.d.ts.map +1 -0
  36. package/dist/config/define-app-config.js +48 -0
  37. package/dist/config/define-app-config.js.map +1 -0
  38. package/dist/config/index.d.ts +13 -0
  39. package/dist/config/index.d.ts.map +1 -0
  40. package/dist/config/index.js +11 -0
  41. package/dist/config/index.js.map +1 -0
  42. package/dist/config/not-configured.d.ts +23 -0
  43. package/dist/config/not-configured.d.ts.map +1 -0
  44. package/dist/config/not-configured.js +31 -0
  45. package/dist/config/not-configured.js.map +1 -0
  46. package/dist/config/paths.d.ts +27 -0
  47. package/dist/config/paths.d.ts.map +1 -0
  48. package/dist/config/paths.js +27 -0
  49. package/dist/config/paths.js.map +1 -0
  50. package/dist/config/placeholder-secret.d.ts +19 -0
  51. package/dist/config/placeholder-secret.d.ts.map +1 -0
  52. package/dist/config/placeholder-secret.js +26 -0
  53. package/dist/config/placeholder-secret.js.map +1 -0
  54. package/dist/config/runtime-environment.d.ts +11 -0
  55. package/dist/config/runtime-environment.d.ts.map +1 -0
  56. package/dist/config/runtime-environment.js +20 -0
  57. package/dist/config/runtime-environment.js.map +1 -0
  58. package/dist/config/types.d.ts +12 -0
  59. package/dist/config/types.d.ts.map +1 -0
  60. package/dist/config/types.js +2 -0
  61. package/dist/config/types.js.map +1 -0
  62. package/dist/config/validation.d.ts +36 -0
  63. package/dist/config/validation.d.ts.map +1 -0
  64. package/dist/config/validation.js +186 -0
  65. package/dist/config/validation.js.map +1 -0
  66. package/dist/config/variables.d.ts +57 -0
  67. package/dist/config/variables.d.ts.map +1 -0
  68. package/dist/config/variables.js +89 -0
  69. package/dist/config/variables.js.map +1 -0
  70. package/dist/database/collections-artifact.d.ts +99 -0
  71. package/dist/database/collections-artifact.d.ts.map +1 -0
  72. package/dist/database/collections-artifact.js +397 -0
  73. package/dist/database/collections-artifact.js.map +1 -0
  74. package/dist/database/collections-directory.d.ts +36 -0
  75. package/dist/database/collections-directory.d.ts.map +1 -0
  76. package/dist/database/collections-directory.js +115 -0
  77. package/dist/database/collections-directory.js.map +1 -0
  78. package/dist/database/collections-doctor.d.ts +43 -0
  79. package/dist/database/collections-doctor.d.ts.map +1 -0
  80. package/dist/database/collections-doctor.js +88 -0
  81. package/dist/database/collections-doctor.js.map +1 -0
  82. package/dist/database/connection-check.d.ts +25 -0
  83. package/dist/database/connection-check.d.ts.map +1 -0
  84. package/dist/database/connection-check.js +65 -0
  85. package/dist/database/connection-check.js.map +1 -0
  86. package/dist/database/connection-selection.d.ts +16 -0
  87. package/dist/database/connection-selection.d.ts.map +1 -0
  88. package/dist/database/connection-selection.js +30 -0
  89. package/dist/database/connection-selection.js.map +1 -0
  90. package/dist/database/define-app-database-config.d.ts +49 -0
  91. package/dist/database/define-app-database-config.d.ts.map +1 -0
  92. package/dist/database/define-app-database-config.js +73 -0
  93. package/dist/database/define-app-database-config.js.map +1 -0
  94. package/dist/database/environment.d.ts +11 -0
  95. package/dist/database/environment.d.ts.map +1 -0
  96. package/dist/database/environment.js +49 -0
  97. package/dist/database/environment.js.map +1 -0
  98. package/dist/database/index.d.ts +17 -0
  99. package/dist/database/index.d.ts.map +1 -0
  100. package/dist/database/index.js +16 -0
  101. package/dist/database/index.js.map +1 -0
  102. package/dist/database/manager.d.ts +16 -0
  103. package/dist/database/manager.d.ts.map +1 -0
  104. package/dist/database/manager.js +83 -0
  105. package/dist/database/manager.js.map +1 -0
  106. package/dist/database/migrator.d.ts +88 -0
  107. package/dist/database/migrator.d.ts.map +1 -0
  108. package/dist/database/migrator.js +143 -0
  109. package/dist/database/migrator.js.map +1 -0
  110. package/dist/database/ownership.d.ts +6 -0
  111. package/dist/database/ownership.d.ts.map +1 -0
  112. package/dist/database/ownership.js +50 -0
  113. package/dist/database/ownership.js.map +1 -0
  114. package/dist/database/plan.d.ts +36 -0
  115. package/dist/database/plan.d.ts.map +1 -0
  116. package/dist/database/plan.js +136 -0
  117. package/dist/database/plan.js.map +1 -0
  118. package/dist/database/provider.d.ts +43 -0
  119. package/dist/database/provider.d.ts.map +1 -0
  120. package/dist/database/provider.js +171 -0
  121. package/dist/database/provider.js.map +1 -0
  122. package/dist/database/resolve-config.d.ts +42 -0
  123. package/dist/database/resolve-config.d.ts.map +1 -0
  124. package/dist/database/resolve-config.js +118 -0
  125. package/dist/database/resolve-config.js.map +1 -0
  126. package/dist/database/seeder.d.ts +50 -0
  127. package/dist/database/seeder.d.ts.map +1 -0
  128. package/dist/database/seeder.js +117 -0
  129. package/dist/database/seeder.js.map +1 -0
  130. package/dist/database/storage.d.ts +10 -0
  131. package/dist/database/storage.d.ts.map +1 -0
  132. package/dist/database/storage.js +37 -0
  133. package/dist/database/storage.js.map +1 -0
  134. package/dist/database/task-config.d.ts +7 -0
  135. package/dist/database/task-config.d.ts.map +1 -0
  136. package/dist/database/task-config.js +19 -0
  137. package/dist/database/task-config.js.map +1 -0
  138. package/dist/database/task-container.d.ts +3 -0
  139. package/dist/database/task-container.d.ts.map +1 -0
  140. package/dist/database/task-container.js +34 -0
  141. package/dist/database/task-container.js.map +1 -0
  142. package/dist/database/tasks.d.ts +104 -0
  143. package/dist/database/tasks.d.ts.map +1 -0
  144. package/dist/database/tasks.js +350 -0
  145. package/dist/database/tasks.js.map +1 -0
  146. package/dist/database/types.d.ts +92 -0
  147. package/dist/database/types.d.ts.map +1 -0
  148. package/dist/database/types.js +2 -0
  149. package/dist/database/types.js.map +1 -0
  150. package/dist/drive/config.d.ts +2 -0
  151. package/dist/drive/config.d.ts.map +1 -0
  152. package/dist/drive/config.js +2 -0
  153. package/dist/drive/config.js.map +1 -0
  154. package/dist/drive/index.d.ts +5 -0
  155. package/dist/drive/index.d.ts.map +1 -0
  156. package/dist/drive/index.js +4 -0
  157. package/dist/drive/index.js.map +1 -0
  158. package/dist/drive/provider.d.ts +9 -0
  159. package/dist/drive/provider.d.ts.map +1 -0
  160. package/dist/drive/provider.js +22 -0
  161. package/dist/drive/provider.js.map +1 -0
  162. package/dist/drive/token.d.ts +4 -0
  163. package/dist/drive/token.d.ts.map +1 -0
  164. package/dist/drive/token.js +3 -0
  165. package/dist/drive/token.js.map +1 -0
  166. package/dist/i18n/index.d.ts +37 -0
  167. package/dist/i18n/index.d.ts.map +1 -0
  168. package/dist/i18n/index.js +44 -0
  169. package/dist/i18n/index.js.map +1 -0
  170. package/dist/id-generator/config.d.ts +2 -0
  171. package/dist/id-generator/config.d.ts.map +1 -0
  172. package/dist/id-generator/config.js +2 -0
  173. package/dist/id-generator/config.js.map +1 -0
  174. package/dist/id-generator/index.d.ts +5 -0
  175. package/dist/id-generator/index.d.ts.map +1 -0
  176. package/dist/id-generator/index.js +4 -0
  177. package/dist/id-generator/index.js.map +1 -0
  178. package/dist/id-generator/provider.d.ts +7 -0
  179. package/dist/id-generator/provider.d.ts.map +1 -0
  180. package/dist/id-generator/provider.js +11 -0
  181. package/dist/id-generator/provider.js.map +1 -0
  182. package/dist/id-generator/token.d.ts +4 -0
  183. package/dist/id-generator/token.d.ts.map +1 -0
  184. package/dist/id-generator/token.js +3 -0
  185. package/dist/id-generator/token.js.map +1 -0
  186. package/dist/index.d.ts +20 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +20 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/jobs/config.d.ts +2 -0
  191. package/dist/jobs/config.d.ts.map +1 -0
  192. package/dist/jobs/config.js +2 -0
  193. package/dist/jobs/config.js.map +1 -0
  194. package/dist/jobs/index.d.ts +4 -0
  195. package/dist/jobs/index.d.ts.map +1 -0
  196. package/dist/jobs/index.js +4 -0
  197. package/dist/jobs/index.js.map +1 -0
  198. package/dist/jobs/provider.d.ts +23 -0
  199. package/dist/jobs/provider.d.ts.map +1 -0
  200. package/dist/jobs/provider.js +55 -0
  201. package/dist/jobs/provider.js.map +1 -0
  202. package/dist/jobs/token.d.ts +8 -0
  203. package/dist/jobs/token.d.ts.map +1 -0
  204. package/dist/jobs/token.js +7 -0
  205. package/dist/jobs/token.js.map +1 -0
  206. package/dist/logging/config.d.ts +16 -0
  207. package/dist/logging/config.d.ts.map +1 -0
  208. package/dist/logging/config.js +26 -0
  209. package/dist/logging/config.js.map +1 -0
  210. package/dist/logging/index.d.ts +5 -0
  211. package/dist/logging/index.d.ts.map +1 -0
  212. package/dist/logging/index.js +5 -0
  213. package/dist/logging/index.js.map +1 -0
  214. package/dist/logging/middleware.d.ts +13 -0
  215. package/dist/logging/middleware.d.ts.map +1 -0
  216. package/dist/logging/middleware.js +128 -0
  217. package/dist/logging/middleware.js.map +1 -0
  218. package/dist/logging/provider.d.ts +9 -0
  219. package/dist/logging/provider.d.ts.map +1 -0
  220. package/dist/logging/provider.js +95 -0
  221. package/dist/logging/provider.js.map +1 -0
  222. package/dist/logging/token.d.ts +4 -0
  223. package/dist/logging/token.d.ts.map +1 -0
  224. package/dist/logging/token.js +3 -0
  225. package/dist/logging/token.js.map +1 -0
  226. package/dist/node/config.d.ts +6 -0
  227. package/dist/node/config.d.ts.map +1 -0
  228. package/dist/node/config.js +2 -0
  229. package/dist/node/config.js.map +1 -0
  230. package/dist/node/index.d.ts +6 -0
  231. package/dist/node/index.d.ts.map +1 -0
  232. package/dist/node/index.js +6 -0
  233. package/dist/node/index.js.map +1 -0
  234. package/dist/node/not-configured-message.d.ts +10 -0
  235. package/dist/node/not-configured-message.d.ts.map +1 -0
  236. package/dist/node/not-configured-message.js +24 -0
  237. package/dist/node/not-configured-message.js.map +1 -0
  238. package/dist/node/proxy.d.ts +25 -0
  239. package/dist/node/proxy.d.ts.map +1 -0
  240. package/dist/node/proxy.js +229 -0
  241. package/dist/node/proxy.js.map +1 -0
  242. package/dist/node/runtime.d.ts +45 -0
  243. package/dist/node/runtime.d.ts.map +1 -0
  244. package/dist/node/runtime.js +176 -0
  245. package/dist/node/runtime.js.map +1 -0
  246. package/dist/node/scope.d.ts +55 -0
  247. package/dist/node/scope.d.ts.map +1 -0
  248. package/dist/node/scope.js +115 -0
  249. package/dist/node/scope.js.map +1 -0
  250. package/dist/node/server.d.ts +80 -0
  251. package/dist/node/server.d.ts.map +1 -0
  252. package/dist/node/server.js +283 -0
  253. package/dist/node/server.js.map +1 -0
  254. package/dist/plugins/define.d.ts +4 -0
  255. package/dist/plugins/define.d.ts.map +1 -0
  256. package/dist/plugins/define.js +45 -0
  257. package/dist/plugins/define.js.map +1 -0
  258. package/dist/plugins/index.d.ts +27 -0
  259. package/dist/plugins/index.d.ts.map +1 -0
  260. package/dist/plugins/index.js +4 -0
  261. package/dist/plugins/index.js.map +1 -0
  262. package/dist/plugins/inspect.d.ts +79 -0
  263. package/dist/plugins/inspect.d.ts.map +1 -0
  264. package/dist/plugins/inspect.js +142 -0
  265. package/dist/plugins/inspect.js.map +1 -0
  266. package/dist/plugins/resolve.d.ts +14 -0
  267. package/dist/plugins/resolve.d.ts.map +1 -0
  268. package/dist/plugins/resolve.js +101 -0
  269. package/dist/plugins/resolve.js.map +1 -0
  270. package/dist/plugins/types.d.ts +91 -0
  271. package/dist/plugins/types.d.ts.map +1 -0
  272. package/dist/plugins/types.js +2 -0
  273. package/dist/plugins/types.js.map +1 -0
  274. package/dist/proxy/http-proxy.d.ts +8 -0
  275. package/dist/proxy/http-proxy.d.ts.map +1 -0
  276. package/dist/proxy/http-proxy.js +59 -0
  277. package/dist/proxy/http-proxy.js.map +1 -0
  278. package/dist/proxy/index.d.ts +3 -0
  279. package/dist/proxy/index.d.ts.map +1 -0
  280. package/dist/proxy/index.js +3 -0
  281. package/dist/proxy/index.js.map +1 -0
  282. package/dist/proxy/origin.d.ts +12 -0
  283. package/dist/proxy/origin.d.ts.map +1 -0
  284. package/dist/proxy/origin.js +61 -0
  285. package/dist/proxy/origin.js.map +1 -0
  286. package/dist/queue/config.d.ts +4 -0
  287. package/dist/queue/config.d.ts.map +1 -0
  288. package/dist/queue/config.js +2 -0
  289. package/dist/queue/config.js.map +1 -0
  290. package/dist/queue/index.d.ts +4 -0
  291. package/dist/queue/index.d.ts.map +1 -0
  292. package/dist/queue/index.js +4 -0
  293. package/dist/queue/index.js.map +1 -0
  294. package/dist/queue/provider.d.ts +24 -0
  295. package/dist/queue/provider.d.ts.map +1 -0
  296. package/dist/queue/provider.js +57 -0
  297. package/dist/queue/provider.js.map +1 -0
  298. package/dist/queue/token.d.ts +9 -0
  299. package/dist/queue/token.d.ts.map +1 -0
  300. package/dist/queue/token.js +8 -0
  301. package/dist/queue/token.js.map +1 -0
  302. package/dist/realtime/index.d.ts +6 -0
  303. package/dist/realtime/index.d.ts.map +1 -0
  304. package/dist/realtime/index.js +6 -0
  305. package/dist/realtime/index.js.map +1 -0
  306. package/dist/realtime/provider.d.ts +10 -0
  307. package/dist/realtime/provider.d.ts.map +1 -0
  308. package/dist/realtime/provider.js +19 -0
  309. package/dist/realtime/provider.js.map +1 -0
  310. package/dist/realtime/service.d.ts +9 -0
  311. package/dist/realtime/service.d.ts.map +1 -0
  312. package/dist/realtime/service.js +347 -0
  313. package/dist/realtime/service.js.map +1 -0
  314. package/dist/realtime/types.d.ts +74 -0
  315. package/dist/realtime/types.d.ts.map +1 -0
  316. package/dist/realtime/types.js +4 -0
  317. package/dist/realtime/types.js.map +1 -0
  318. package/dist/realtime/websocket.d.ts +7 -0
  319. package/dist/realtime/websocket.d.ts.map +1 -0
  320. package/dist/realtime/websocket.js +57 -0
  321. package/dist/realtime/websocket.js.map +1 -0
  322. package/dist/router/api-error.d.ts +171 -0
  323. package/dist/router/api-error.d.ts.map +1 -0
  324. package/dist/router/api-error.js +291 -0
  325. package/dist/router/api-error.js.map +1 -0
  326. package/dist/router/api-limits.d.ts +80 -0
  327. package/dist/router/api-limits.d.ts.map +1 -0
  328. package/dist/router/api-limits.js +281 -0
  329. package/dist/router/api-limits.js.map +1 -0
  330. package/dist/router/cli/derive.d.ts +32 -0
  331. package/dist/router/cli/derive.d.ts.map +1 -0
  332. package/dist/router/cli/derive.js +548 -0
  333. package/dist/router/cli/derive.js.map +1 -0
  334. package/dist/router/cli/index.d.ts +6 -0
  335. package/dist/router/cli/index.d.ts.map +1 -0
  336. package/dist/router/cli/index.js +6 -0
  337. package/dist/router/cli/index.js.map +1 -0
  338. package/dist/router/cli/reference.d.ts +9 -0
  339. package/dist/router/cli/reference.d.ts.map +1 -0
  340. package/dist/router/cli/reference.js +64 -0
  341. package/dist/router/cli/reference.js.map +1 -0
  342. package/dist/router/cli/routes.d.ts +9 -0
  343. package/dist/router/cli/routes.d.ts.map +1 -0
  344. package/dist/router/cli/routes.js +228 -0
  345. package/dist/router/cli/routes.js.map +1 -0
  346. package/dist/router/cli/service.d.ts +50 -0
  347. package/dist/router/cli/service.d.ts.map +1 -0
  348. package/dist/router/cli/service.js +104 -0
  349. package/dist/router/cli/service.js.map +1 -0
  350. package/dist/router/cli/types.d.ts +278 -0
  351. package/dist/router/cli/types.d.ts.map +1 -0
  352. package/dist/router/cli/types.js +18 -0
  353. package/dist/router/cli/types.js.map +1 -0
  354. package/dist/router/duplicate-routes.d.ts +25 -0
  355. package/dist/router/duplicate-routes.d.ts.map +1 -0
  356. package/dist/router/duplicate-routes.js +51 -0
  357. package/dist/router/duplicate-routes.js.map +1 -0
  358. package/dist/router/health.d.ts +7 -0
  359. package/dist/router/health.d.ts.map +1 -0
  360. package/dist/router/health.js +48 -0
  361. package/dist/router/health.js.map +1 -0
  362. package/dist/router/index.d.ts +26 -0
  363. package/dist/router/index.d.ts.map +1 -0
  364. package/dist/router/index.js +29 -0
  365. package/dist/router/index.js.map +1 -0
  366. package/dist/router/openapi/components.d.ts +24 -0
  367. package/dist/router/openapi/components.d.ts.map +1 -0
  368. package/dist/router/openapi/components.js +128 -0
  369. package/dist/router/openapi/components.js.map +1 -0
  370. package/dist/router/openapi/declared.d.ts +19 -0
  371. package/dist/router/openapi/declared.d.ts.map +1 -0
  372. package/dist/router/openapi/declared.js +46 -0
  373. package/dist/router/openapi/declared.js.map +1 -0
  374. package/dist/router/openapi/describe.d.ts +82 -0
  375. package/dist/router/openapi/describe.d.ts.map +1 -0
  376. package/dist/router/openapi/describe.js +207 -0
  377. package/dist/router/openapi/describe.js.map +1 -0
  378. package/dist/router/openapi/docs-routes.d.ts +10 -0
  379. package/dist/router/openapi/docs-routes.d.ts.map +1 -0
  380. package/dist/router/openapi/docs-routes.js +157 -0
  381. package/dist/router/openapi/docs-routes.js.map +1 -0
  382. package/dist/router/openapi/document.d.ts +151 -0
  383. package/dist/router/openapi/document.d.ts.map +1 -0
  384. package/dist/router/openapi/document.js +471 -0
  385. package/dist/router/openapi/document.js.map +1 -0
  386. package/dist/router/openapi/index.d.ts +7 -0
  387. package/dist/router/openapi/index.d.ts.map +1 -0
  388. package/dist/router/openapi/index.js +7 -0
  389. package/dist/router/openapi/index.js.map +1 -0
  390. package/dist/router/openapi/repository-document.d.ts +30 -0
  391. package/dist/router/openapi/repository-document.d.ts.map +1 -0
  392. package/dist/router/openapi/repository-document.js +812 -0
  393. package/dist/router/openapi/repository-document.js.map +1 -0
  394. package/dist/router/openapi/schema.d.ts +30 -0
  395. package/dist/router/openapi/schema.d.ts.map +1 -0
  396. package/dist/router/openapi/schema.js +301 -0
  397. package/dist/router/openapi/schema.js.map +1 -0
  398. package/dist/router/openapi/service.d.ts +101 -0
  399. package/dist/router/openapi/service.d.ts.map +1 -0
  400. package/dist/router/openapi/service.js +162 -0
  401. package/dist/router/openapi/service.js.map +1 -0
  402. package/dist/router/repository-constraints.d.ts +15 -0
  403. package/dist/router/repository-constraints.d.ts.map +1 -0
  404. package/dist/router/repository-constraints.js +14 -0
  405. package/dist/router/repository-constraints.js.map +1 -0
  406. package/dist/router/repository-routes.d.ts +90 -0
  407. package/dist/router/repository-routes.d.ts.map +1 -0
  408. package/dist/router/repository-routes.js +452 -0
  409. package/dist/router/repository-routes.js.map +1 -0
  410. package/dist/router/routes.d.ts +24 -0
  411. package/dist/router/routes.d.ts.map +1 -0
  412. package/dist/router/routes.js +19 -0
  413. package/dist/router/routes.js.map +1 -0
  414. package/dist/runtime/application.d.ts +8 -0
  415. package/dist/runtime/application.d.ts.map +1 -0
  416. package/dist/runtime/application.js +22 -0
  417. package/dist/runtime/application.js.map +1 -0
  418. package/dist/runtime/definition.d.ts +50 -0
  419. package/dist/runtime/definition.d.ts.map +1 -0
  420. package/dist/runtime/definition.js +82 -0
  421. package/dist/runtime/definition.js.map +1 -0
  422. package/dist/runtime/index.d.ts +8 -0
  423. package/dist/runtime/index.d.ts.map +1 -0
  424. package/dist/runtime/index.js +7 -0
  425. package/dist/runtime/index.js.map +1 -0
  426. package/dist/runtime/lifecycle.d.ts +29 -0
  427. package/dist/runtime/lifecycle.d.ts.map +1 -0
  428. package/dist/runtime/lifecycle.js +104 -0
  429. package/dist/runtime/lifecycle.js.map +1 -0
  430. package/dist/runtime/mount.d.ts +4 -0
  431. package/dist/runtime/mount.d.ts.map +1 -0
  432. package/dist/runtime/mount.js +47 -0
  433. package/dist/runtime/mount.js.map +1 -0
  434. package/dist/runtime/scope.d.ts +29 -0
  435. package/dist/runtime/scope.d.ts.map +1 -0
  436. package/dist/runtime/scope.js +48 -0
  437. package/dist/runtime/scope.js.map +1 -0
  438. package/dist/runtime/types.d.ts +55 -0
  439. package/dist/runtime/types.d.ts.map +1 -0
  440. package/dist/runtime/types.js +2 -0
  441. package/dist/runtime/types.js.map +1 -0
  442. package/dist/sample-data/index.d.ts +3 -0
  443. package/dist/sample-data/index.d.ts.map +1 -0
  444. package/dist/sample-data/index.js +3 -0
  445. package/dist/sample-data/index.js.map +1 -0
  446. package/dist/sample-data/registry.d.ts +4 -0
  447. package/dist/sample-data/registry.d.ts.map +1 -0
  448. package/dist/sample-data/registry.js +74 -0
  449. package/dist/sample-data/registry.js.map +1 -0
  450. package/dist/sample-data/token.d.ts +64 -0
  451. package/dist/sample-data/token.d.ts.map +1 -0
  452. package/dist/sample-data/token.js +7 -0
  453. package/dist/sample-data/token.js.map +1 -0
  454. package/dist/secrets/config.d.ts +15 -0
  455. package/dist/secrets/config.d.ts.map +1 -0
  456. package/dist/secrets/config.js +43 -0
  457. package/dist/secrets/config.js.map +1 -0
  458. package/dist/secrets/index.d.ts +6 -0
  459. package/dist/secrets/index.d.ts.map +1 -0
  460. package/dist/secrets/index.js +6 -0
  461. package/dist/secrets/index.js.map +1 -0
  462. package/dist/secrets/provider.d.ts +7 -0
  463. package/dist/secrets/provider.d.ts.map +1 -0
  464. package/dist/secrets/provider.js +10 -0
  465. package/dist/secrets/provider.js.map +1 -0
  466. package/dist/secrets/service.d.ts +64 -0
  467. package/dist/secrets/service.d.ts.map +1 -0
  468. package/dist/secrets/service.js +47 -0
  469. package/dist/secrets/service.js.map +1 -0
  470. package/dist/secrets/table-store.d.ts +34 -0
  471. package/dist/secrets/table-store.d.ts.map +1 -0
  472. package/dist/secrets/table-store.js +118 -0
  473. package/dist/secrets/table-store.js.map +1 -0
  474. package/dist/secrets/token.d.ts +4 -0
  475. package/dist/secrets/token.d.ts.map +1 -0
  476. package/dist/secrets/token.js +3 -0
  477. package/dist/secrets/token.js.map +1 -0
  478. package/dist/session/config.d.ts +10 -0
  479. package/dist/session/config.d.ts.map +1 -0
  480. package/dist/session/config.js +2 -0
  481. package/dist/session/config.js.map +1 -0
  482. package/dist/session/index.d.ts +4 -0
  483. package/dist/session/index.d.ts.map +1 -0
  484. package/dist/session/index.js +4 -0
  485. package/dist/session/index.js.map +1 -0
  486. package/dist/session/provider.d.ts +26 -0
  487. package/dist/session/provider.d.ts.map +1 -0
  488. package/dist/session/provider.js +69 -0
  489. package/dist/session/provider.js.map +1 -0
  490. package/dist/session/token.d.ts +4 -0
  491. package/dist/session/token.d.ts.map +1 -0
  492. package/dist/session/token.js +3 -0
  493. package/dist/session/token.js.map +1 -0
  494. package/dist/spa/config.d.ts +5 -0
  495. package/dist/spa/config.d.ts.map +1 -0
  496. package/dist/spa/config.js +2 -0
  497. package/dist/spa/config.js.map +1 -0
  498. package/dist/spa/content-types.d.ts +2 -0
  499. package/dist/spa/content-types.d.ts.map +1 -0
  500. package/dist/spa/content-types.js +25 -0
  501. package/dist/spa/content-types.js.map +1 -0
  502. package/dist/spa/index.d.ts +9 -0
  503. package/dist/spa/index.d.ts.map +1 -0
  504. package/dist/spa/index.js +9 -0
  505. package/dist/spa/index.js.map +1 -0
  506. package/dist/spa/provider.d.ts +13 -0
  507. package/dist/spa/provider.d.ts.map +1 -0
  508. package/dist/spa/provider.js +90 -0
  509. package/dist/spa/provider.js.map +1 -0
  510. package/dist/spa/routes.d.ts +4 -0
  511. package/dist/spa/routes.d.ts.map +1 -0
  512. package/dist/spa/routes.js +58 -0
  513. package/dist/spa/routes.js.map +1 -0
  514. package/dist/spa/runtime-html.d.ts +14 -0
  515. package/dist/spa/runtime-html.d.ts.map +1 -0
  516. package/dist/spa/runtime-html.js +85 -0
  517. package/dist/spa/runtime-html.js.map +1 -0
  518. package/dist/spa/serve-index.d.ts +9 -0
  519. package/dist/spa/serve-index.d.ts.map +1 -0
  520. package/dist/spa/serve-index.js +12 -0
  521. package/dist/spa/serve-index.js.map +1 -0
  522. package/dist/spa/static-assets.d.ts +7 -0
  523. package/dist/spa/static-assets.d.ts.map +1 -0
  524. package/dist/spa/static-assets.js +90 -0
  525. package/dist/spa/static-assets.js.map +1 -0
  526. package/dist/spa/types.d.ts +23 -0
  527. package/dist/spa/types.d.ts.map +1 -0
  528. package/dist/spa/types.js +2 -0
  529. package/dist/spa/types.js.map +1 -0
  530. package/dist/support/index.d.ts +4 -0
  531. package/dist/support/index.d.ts.map +1 -0
  532. package/dist/support/index.js +4 -0
  533. package/dist/support/index.js.map +1 -0
  534. package/dist/support/paths.d.ts +10 -0
  535. package/dist/support/paths.d.ts.map +1 -0
  536. package/dist/support/paths.js +25 -0
  537. package/dist/support/paths.js.map +1 -0
  538. package/dist/support/redirects.d.ts +3 -0
  539. package/dist/support/redirects.d.ts.map +1 -0
  540. package/dist/support/redirects.js +48 -0
  541. package/dist/support/redirects.js.map +1 -0
  542. package/dist/support/requests.d.ts +2 -0
  543. package/dist/support/requests.d.ts.map +1 -0
  544. package/dist/support/requests.js +13 -0
  545. package/dist/support/requests.js.map +1 -0
  546. package/dist/swagger-ui/LICENSE +202 -0
  547. package/dist/swagger-ui/NOTICE +2 -0
  548. package/dist/swagger-ui/favicon-16x16.png +0 -0
  549. package/dist/swagger-ui/favicon-32x32.png +0 -0
  550. package/dist/swagger-ui/swagger-ui-bundle.js +2 -0
  551. package/dist/swagger-ui/swagger-ui-bundle.js.LICENSE.txt +129 -0
  552. package/dist/swagger-ui/swagger-ui.css +3 -0
  553. package/dist/websocket.d.ts +61 -0
  554. package/dist/websocket.d.ts.map +1 -0
  555. package/dist/websocket.js +371 -0
  556. package/dist/websocket.js.map +1 -0
  557. package/package.json +193 -12
  558. package/LICENSE +0 -661
  559. package/lib/config/cache.d.ts +0 -2
  560. package/lib/config/cache.js +0 -16
  561. package/lib/config/database.d.ts +0 -3
  562. package/lib/config/database.js +0 -25
  563. package/lib/config/index.d.ts +0 -10
  564. package/lib/config/index.js +0 -20
  565. package/lib/config/logger.d.ts +0 -3
  566. package/lib/config/logger.js +0 -11
  567. package/lib/config/plugins.d.ts +0 -3
  568. package/lib/config/plugins.js +0 -8
  569. package/lib/config/resourcer.d.ts +0 -4
  570. package/lib/config/resourcer.js +0 -10
  571. package/lib/index.d.ts +0 -3
  572. package/lib/index.js +0 -21
  573. package/src/config/cache.ts +0 -5
  574. package/src/config/database.ts +0 -21
  575. package/src/config/index.ts +0 -13
  576. package/src/config/logger.ts +0 -6
  577. package/src/config/plugins.ts +0 -3
  578. package/src/config/resourcer.ts +0 -3
  579. package/src/index.ts +0 -10
@@ -0,0 +1,88 @@
1
+ import { resolveDatabaseConfig } from './resolve-config.js';
2
+ import { createAppDatabaseManager } from './manager.js';
3
+ import { selectAppDatabaseConnections } from './connection-selection.js';
4
+ /**
5
+ * Compares each connection's stored Collection metadata with the physical
6
+ * schema behind it, and optionally deletes the records whose tables are gone.
7
+ *
8
+ * The two are separate records of what exists. A table dropped outside a
9
+ * migration leaves its metadata record behind, and from then on resolving that
10
+ * Collection fails — including inside the migration that would recreate it.
11
+ * That state is reachable by hand, so there has to be a way out of it that is
12
+ * not "edit the internal table yourself".
13
+ */
14
+ export async function runAppCollectionsDoctor(config, options = {}) {
15
+ const fix = options.fix ?? false;
16
+ const names = selectAppDatabaseConnections(config, options);
17
+ if (names === undefined) {
18
+ return { ok: true, status: 'not-configured', fix, results: [] };
19
+ }
20
+ if (!options.database) {
21
+ config = await resolveDatabaseConfig({
22
+ ...config,
23
+ drivers: { ...config.drivers, ...options.drivers },
24
+ });
25
+ }
26
+ const database = options.database ??
27
+ createAppDatabaseManager(config, options.paths, options.drivers);
28
+ if (!database) {
29
+ return { ok: true, status: 'not-configured', fix, results: [] };
30
+ }
31
+ const results = [];
32
+ try {
33
+ for (const name of names) {
34
+ try {
35
+ results.push(await diagnoseConnection(database, name, fix));
36
+ }
37
+ catch (error) {
38
+ results.push({
39
+ connection: name,
40
+ status: 'failed',
41
+ error: error instanceof Error ? error.message : String(error),
42
+ });
43
+ }
44
+ }
45
+ }
46
+ finally {
47
+ if (!options.database)
48
+ await database.destroy();
49
+ }
50
+ const ok = results.every((result) => result.status === 'completed');
51
+ return {
52
+ ok,
53
+ status: ok ? 'completed' : 'failed',
54
+ fix,
55
+ results,
56
+ };
57
+ }
58
+ async function diagnoseConnection(database, name, fix) {
59
+ const connection = database.connection(name);
60
+ const diagnosis = await connection.collections.diagnose();
61
+ if (!fix) {
62
+ return {
63
+ connection: name,
64
+ status: 'completed',
65
+ checked: diagnosis.checked,
66
+ issues: diagnosis.issues,
67
+ };
68
+ }
69
+ // Only the orphaned ones: the rest describe a table that exists and
70
+ // disagrees, which a migration has to reconcile.
71
+ const repaired = [];
72
+ for (const issue of diagnosis.issues) {
73
+ if (!issue.orphaned)
74
+ continue;
75
+ await connection.collectionMetadata.removeDocument(issue.name);
76
+ repaired.push(issue.name);
77
+ }
78
+ if (repaired.length)
79
+ connection.collections.invalidate();
80
+ return {
81
+ connection: name,
82
+ status: 'completed',
83
+ checked: diagnosis.checked,
84
+ issues: diagnosis.issues,
85
+ repaired,
86
+ };
87
+ }
88
+ //# sourceMappingURL=collections-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections-doctor.js","sourceRoot":"","sources":["../../src/database/collections-doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AppPaths } from '../config/index.js';
2
+ import type { AppDatabaseConfig } from './types.js';
3
+ export type ConnectionCheckStatus = 'ok' | 'failed' | 'skipped';
4
+ export interface ConnectionCheckResult {
5
+ readonly name: string;
6
+ readonly dialect: string;
7
+ readonly status: ConnectionCheckStatus;
8
+ /** Why the connection failed, or why it was not tried. Never carries credentials. */
9
+ readonly reason?: string;
10
+ }
11
+ export interface CheckConnectionsOptions {
12
+ /** Connections to try; the rest are reported as skipped. Defaults to every configured connection. */
13
+ readonly include?: (name: string, dialect: string) => boolean;
14
+ readonly timeoutMs?: number;
15
+ }
16
+ /**
17
+ * Opens one connection per configured database and hands it straight back.
18
+ *
19
+ * Taking a connection from the pool is what proves the address, port, credentials and database name are right, and it
20
+ * needs no SQL — a probe query would have to be spelled differently for Oracle and Dameng than for everything else.
21
+ * `DatabaseConnection.connect()` is deliberately not used: it also loads the collection registry, which reads metadata
22
+ * tables and so reports a fresh database that has not been migrated yet as broken.
23
+ */
24
+ export declare function checkConnections(database: AppDatabaseConfig, paths: AppPaths, options?: CheckConnectionsOptions): Promise<readonly ConnectionCheckResult[]>;
25
+ //# sourceMappingURL=connection-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-check.d.ts","sourceRoot":"","sources":["../../src/database/connection-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,qGAAqG;IACrG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAYD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,QAAQ,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAoC3C"}
@@ -0,0 +1,65 @@
1
+ import { createAppDatabaseManager } from './manager.js';
2
+ const DEFAULT_TIMEOUT_MS = 10_000;
3
+ /**
4
+ * Opens one connection per configured database and hands it straight back.
5
+ *
6
+ * Taking a connection from the pool is what proves the address, port, credentials and database name are right, and it
7
+ * needs no SQL — a probe query would have to be spelled differently for Oracle and Dameng than for everything else.
8
+ * `DatabaseConnection.connect()` is deliberately not used: it also loads the collection registry, which reads metadata
9
+ * tables and so reports a fresh database that has not been migrated yet as broken.
10
+ */
11
+ export async function checkConnections(database, paths, options = {}) {
12
+ const entries = Object.entries(database.connections ?? {});
13
+ const manager = createAppDatabaseManager(database, paths);
14
+ if (manager === undefined)
15
+ return [];
16
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
17
+ const results = [];
18
+ try {
19
+ for (const [name, connection] of entries) {
20
+ const dialect = String(connection.dialect);
21
+ if (options.include && !options.include(name, dialect)) {
22
+ results.push({ name, dialect, status: 'skipped' });
23
+ continue;
24
+ }
25
+ try {
26
+ const knex = await manager.connection(name).client();
27
+ const acquired = await withTimeout(knex.client.acquireConnection(), timeoutMs, `No connection within ${timeoutMs / 1000}s.`);
28
+ await knex.client.releaseConnection(acquired);
29
+ results.push({ name, dialect, status: 'ok' });
30
+ }
31
+ catch (error) {
32
+ results.push({
33
+ name,
34
+ dialect,
35
+ status: 'failed',
36
+ reason: describe(error),
37
+ });
38
+ }
39
+ }
40
+ }
41
+ finally {
42
+ await manager.destroy();
43
+ }
44
+ return results;
45
+ }
46
+ function withTimeout(promise, timeoutMs, message) {
47
+ let timer;
48
+ const timeout = new Promise((_resolve, reject) => {
49
+ timer = setTimeout(() => reject(new Error(message)), timeoutMs);
50
+ });
51
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
52
+ }
53
+ /**
54
+ * The driver's own message is the useful part — "password authentication failed", "ECONNREFUSED" — and drivers do not
55
+ * put the password in it. A pool timeout wraps the real cause, so that is unwrapped when present.
56
+ */
57
+ function describe(error) {
58
+ if (!(error instanceof Error))
59
+ return String(error);
60
+ const cause = error.cause;
61
+ return cause instanceof Error && cause.message !== ''
62
+ ? `${error.message} ${cause.message}`
63
+ : error.message;
64
+ }
65
+ //# sourceMappingURL=connection-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-check.js","sourceRoot":"","sources":["../../src/database/connection-check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AA2BxD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA2B,EAC3B,KAAe,EACf,UAAmC,EAAE;IAErC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAgB,CAAC;gBACnE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAC/B,SAAS,EACT,wBAAwB,SAAS,GAAG,IAAI,IAAI,CAC7C,CAAC;gBACF,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,OAAO;oBACP,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAClB,OAAmB,EACnB,SAAiB,EACjB,OAAe;IAEf,IAAI,KAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QACtD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAI,KAAqC,CAAC,KAAK,CAAC;IAC3D,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;QACnD,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACrC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACpB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AppDatabaseConfig } from './types.js';
2
+ export interface AppDatabaseConnectionSelection {
3
+ /** One connection; defaults to the default connection. Exclusive with `all`. */
4
+ readonly connection?: string;
5
+ /** Every configured connection, external ones included. */
6
+ readonly all?: boolean;
7
+ }
8
+ /**
9
+ * Resolves which connections a command runs against, default connection first.
10
+ *
11
+ * Returns undefined when no database is configured, which callers report as
12
+ * `not-configured` rather than as a failure — except when a connection was
13
+ * named explicitly, since that cannot be satisfied.
14
+ */
15
+ export declare function selectAppDatabaseConnections(config: AppDatabaseConfig, options: AppDatabaseConnectionSelection): string[] | undefined;
16
+ //# sourceMappingURL=connection-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-selection.d.ts","sourceRoot":"","sources":["../../src/database/connection-selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,8BAA8B;IAC7C,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,8BAA8B,GACtC,MAAM,EAAE,GAAG,SAAS,CAsBtB"}
@@ -0,0 +1,30 @@
1
+ import { defaultConnectionName } from './plan.js';
2
+ /**
3
+ * Resolves which connections a command runs against, default connection first.
4
+ *
5
+ * Returns undefined when no database is configured, which callers report as
6
+ * `not-configured` rather than as a failure — except when a connection was
7
+ * named explicitly, since that cannot be satisfied.
8
+ */
9
+ export function selectAppDatabaseConnections(config, options) {
10
+ if (options.connection !== undefined && options.all) {
11
+ throw new Error('--connection and --all are mutually exclusive.');
12
+ }
13
+ const primary = defaultConnectionName(config);
14
+ if (primary === 'none' || !primary) {
15
+ if (options.connection !== undefined) {
16
+ throw new Error('Database is not configured.');
17
+ }
18
+ return undefined;
19
+ }
20
+ const names = options.all
21
+ ? Object.keys(config.connections).sort((a, b) => a === primary ? -1 : b === primary ? 1 : a < b ? -1 : a > b ? 1 : 0)
22
+ : [options.connection ?? primary];
23
+ for (const name of names) {
24
+ if (!Object.hasOwn(config.connections, name)) {
25
+ throw new Error(`Unknown database connection "${name}".`);
26
+ }
27
+ }
28
+ return names;
29
+ }
30
+ //# sourceMappingURL=connection-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-selection.js","sourceRoot":"","sources":["../../src/database/connection-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAUlD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAyB,EACzB,OAAuC;IAEvC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG;QACvB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5C,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE;QACH,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,IAAI,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type DatabaseDriverRegistration } from '@nocobase/db';
2
+ import type { EnvironmentMapping } from '@nocobase/config/providers/env';
3
+ import type { AppConfigFactory, ConfigValidator } from '../config/define-app-config.js';
4
+ import type { AppDatabaseConfig, AppDatabaseConfigFromDrivers } from './types.js';
5
+ type Drivers = Record<string, DatabaseDriverRegistration>;
6
+ type KeysOfUnion<T> = T extends unknown ? keyof T : never;
7
+ /** Keep each connection's contextual union separate from its siblings. */
8
+ type InferredConfig<TConfig extends AppDatabaseConfig, TDrivers extends Drivers> = TConfig & Omit<AppDatabaseConfigFromDrivers<TDrivers>, 'connections'> & {
9
+ connections: {
10
+ [K in keyof TConfig['connections']]: AppDatabaseConfigFromDrivers<TDrivers>['connections'][string];
11
+ };
12
+ };
13
+ /** Check inferred return fields without changing the callback's contextual type. */
14
+ type UnknownFields<TConfig extends AppDatabaseConfig, TDrivers extends Drivers> = Exclude<keyof TConfig, keyof AppDatabaseConfig> | {
15
+ [K in keyof TConfig['connections']]: Exclude<keyof TConfig['connections'][K], KeysOfUnion<Extract<AppDatabaseConfigFromDrivers<TDrivers>['connections'][string], {
16
+ dialect: TConfig['connections'][K]['dialect'];
17
+ }>>>;
18
+ }[keyof TConfig['connections']];
19
+ type CheckedFactory<TConfig extends AppDatabaseConfig, TDrivers extends Drivers> = [UnknownFields<TConfig, TDrivers>] extends [never] ? unknown : {
20
+ unknownDatabaseConfigFields: UnknownFields<TConfig, TDrivers>;
21
+ };
22
+ /**
23
+ * What the `database` section declares beyond its defaults. `env` maps environment variables to paths relative to the
24
+ * section, usually `connectionEnvironment('main')`.
25
+ */
26
+ export interface AppDatabaseConfigOptions {
27
+ readonly env?: Readonly<Record<string, EnvironmentMapping>>;
28
+ readonly validate?: ConfigValidator<AppDatabaseConfig> | readonly ConfigValidator<AppDatabaseConfig>[];
29
+ }
30
+ /**
31
+ * Declare database defaults; explicit drivers provide dialect-specific inference.
32
+ * The factory runs when application configuration is resolved, not on import.
33
+ * Export the common runtime contract so declarations do not expose native drivers.
34
+ */
35
+ export declare function defineAppDatabaseConfig<const TConfig extends AppDatabaseConfig>(factory: AppConfigFactory<TConfig & {
36
+ drivers?: never;
37
+ }> & (Exclude<keyof TConfig, keyof AppDatabaseConfig> extends never ? unknown : {
38
+ unknownDatabaseConfigFields: Exclude<keyof TConfig, keyof AppDatabaseConfig>;
39
+ }), options?: AppDatabaseConfigOptions): AppConfigFactory<AppDatabaseConfig>;
40
+ export declare function defineAppDatabaseConfig<const TDrivers extends Drivers, const TConfig extends AppDatabaseConfig & {
41
+ drivers: TDrivers;
42
+ }>(factory: AppConfigFactory<InferredConfig<TConfig, TDrivers>> & CheckedFactory<NoInfer<TConfig>, NoInfer<TDrivers>>, options?: AppDatabaseConfigOptions): AppConfigFactory<AppDatabaseConfig>;
43
+ /**
44
+ * What can be said about the `database` section from its value alone. Whether each database can be reached is left to
45
+ * `config check`, which connects; a start connects anyway and reports the driver's own error.
46
+ */
47
+ export declare const validateAppDatabaseConfig: ConfigValidator<AppDatabaseConfig>;
48
+ export {};
49
+ //# sourceMappingURL=define-app-database-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-app-database-config.d.ts","sourceRoot":"","sources":["../../src/database/define-app-database-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { resolveDatabaseDriver, } from '@nocobase/db';
2
+ export function defineAppDatabaseConfig(factory, options = {}) {
3
+ const configure = (runtime) => factory(runtime);
4
+ return Object.assign(configure, {
5
+ rules: {
6
+ validators: [
7
+ ...(factory.rules?.validators ?? []),
8
+ validateAppDatabaseConfig,
9
+ ...toArray(options.validate),
10
+ ],
11
+ public: factory.rules?.public ?? [],
12
+ env: { ...factory.rules?.env, ...options.env },
13
+ },
14
+ });
15
+ }
16
+ /**
17
+ * What can be said about the `database` section from its value alone. Whether each database can be reached is left to
18
+ * `config check`, which connects; a start connects anyway and reports the driver's own error.
19
+ */
20
+ export const validateAppDatabaseConfig = (database, context) => {
21
+ const connections = isRecord(database.connections)
22
+ ? database.connections
23
+ : {};
24
+ const names = Object.keys(connections);
25
+ if (database.default !== undefined &&
26
+ database.default !== 'none' &&
27
+ !Object.hasOwn(connections, database.default)) {
28
+ context.error('default', names.length > 0
29
+ ? `names the connection "${database.default}", which is not configured. Configured connections: ${names.join(', ')}.`
30
+ : `names the connection "${database.default}", but no connection is configured.`);
31
+ }
32
+ for (const [name, connection] of Object.entries(connections)) {
33
+ const dialect = isRecord(connection) ? connection.dialect : undefined;
34
+ if (typeof dialect !== 'string' || dialect.trim() === '') {
35
+ context.error(`connections.${name}.dialect`, 'is not set.');
36
+ continue;
37
+ }
38
+ const message = connectionOptionsProblem(name, connection, database.drivers);
39
+ if (message)
40
+ context.error(`connections.${name}`, message);
41
+ }
42
+ };
43
+ /**
44
+ * Asks the connection's own dialect driver whether it accepts the options, the way a start would when it opens the
45
+ * connection. Both steps are pure — `normalizeConnection` fills in defaults and `resolveConnection` builds the native
46
+ * driver's options, rejecting what that driver cannot take — so the question is answered without connecting.
47
+ *
48
+ * A dialect whose driver is not installed is skipped here; loading the configuration already reports it.
49
+ */
50
+ function connectionOptionsProblem(name, connection, drivers) {
51
+ try {
52
+ const driver = resolveDatabaseDriver(connection, drivers, name);
53
+ if (!driver?.resolveConnection)
54
+ return undefined;
55
+ const normalized = driver.normalizeConnection
56
+ ? driver.normalizeConnection(connection, {})
57
+ : connection;
58
+ driver.resolveConnection(normalized);
59
+ return undefined;
60
+ }
61
+ catch (error) {
62
+ return error instanceof Error ? error.message : String(error);
63
+ }
64
+ }
65
+ function toArray(value) {
66
+ if (value === undefined)
67
+ return [];
68
+ return Array.isArray(value) ? [...value] : [value];
69
+ }
70
+ function isRecord(value) {
71
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
72
+ }
73
+ //# sourceMappingURL=define-app-database-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-app-database-config.js","sourceRoot":"","sources":["../../src/database/define-app-database-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type EnvironmentMapping } from '@nocobase/config/providers/env';
2
+ /**
3
+ * The environment variables that set one connection of the `database` section, with paths relative to it:
4
+ * `<prefix>_DIALECT`, `_HOST`, `_PORT`, `_DATABASE`, `_USERNAME`, `_PASSWORD`, `_SSL` and, for SQLite, `_FILENAME`.
5
+ *
6
+ * The templates declare `DB_*` for `main` alone. An application that adds a connection declares its own with a
7
+ * prefix naming it, such as `connectionEnvironment('analytics', 'DB_ANALYTICS')`. None is required: the connection's
8
+ * code defaults or the configuration file supply whatever the environment leaves out.
9
+ */
10
+ export declare function connectionEnvironment(connection: string, prefix?: string): Readonly<Record<string, EnvironmentMapping>>;
11
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/database/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAa,GACpB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAuC9C"}
@@ -0,0 +1,49 @@
1
+ import { envBoolean, envInteger, envString, } from '@nocobase/config/providers/env';
2
+ /**
3
+ * The environment variables that set one connection of the `database` section, with paths relative to it:
4
+ * `<prefix>_DIALECT`, `_HOST`, `_PORT`, `_DATABASE`, `_USERNAME`, `_PASSWORD`, `_SSL` and, for SQLite, `_FILENAME`.
5
+ *
6
+ * The templates declare `DB_*` for `main` alone. An application that adds a connection declares its own with a
7
+ * prefix naming it, such as `connectionEnvironment('analytics', 'DB_ANALYTICS')`. None is required: the connection's
8
+ * code defaults or the configuration file supply whatever the environment leaves out.
9
+ */
10
+ export function connectionEnvironment(connection, prefix = 'DB') {
11
+ const path = (field) => `connections.${connection}.${field}`;
12
+ const about = (what) => `${what} of the ${connection} database connection.`;
13
+ return {
14
+ [`${prefix}_DIALECT`]: envString(path('dialect'), {
15
+ description: `The dialect of the ${connection} database connection, such as sqlite, postgres or mysql; its driver must be installed.`,
16
+ required: false,
17
+ }),
18
+ [`${prefix}_HOST`]: envString(path('host'), {
19
+ description: about('The host'),
20
+ required: false,
21
+ }),
22
+ [`${prefix}_PORT`]: envInteger(path('port'), {
23
+ description: about('The port'),
24
+ required: false,
25
+ }),
26
+ [`${prefix}_DATABASE`]: envString(path('database'), {
27
+ description: about('The database name'),
28
+ required: false,
29
+ }),
30
+ [`${prefix}_USERNAME`]: envString(path('username'), {
31
+ description: about('The user name'),
32
+ required: false,
33
+ }),
34
+ [`${prefix}_PASSWORD`]: envString(path('password'), {
35
+ description: about('The password'),
36
+ secret: true,
37
+ required: false,
38
+ }),
39
+ [`${prefix}_SSL`]: envBoolean(path('ssl'), {
40
+ description: `Whether the ${connection} database connection uses TLS.`,
41
+ required: false,
42
+ }),
43
+ [`${prefix}_FILENAME`]: envString(path('filename'), {
44
+ description: about('The SQLite file'),
45
+ required: false,
46
+ }),
47
+ };
48
+ }
49
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/database/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,GAEV,MAAM,gCAAgC,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,SAAiB,IAAI;IAErB,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,eAAe,UAAU,IAAI,KAAK,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CACrC,GAAG,IAAI,WAAW,UAAU,uBAAuB,CAAC;IACtD,OAAO;QACL,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAChD,WAAW,EAAE,sBAAsB,UAAU,wFAAwF;YACrI,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1C,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;YAC9B,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3C,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;YAC9B,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC;YACvC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC;YACnC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;YAClC,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACzC,WAAW,EAAE,eAAe,UAAU,gCAAgC;YACtE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACrC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ export { MissingDatabaseDriversError, OFFICIAL_DIALECTS, resolveDatabaseConfig, type DatabaseConfigInput, type MissingDatabaseDriver, type OfficialDialect, type ResolvedDatabaseConfig, } from './resolve-config.js';
2
+ export { defineAppDatabaseConfig, validateAppDatabaseConfig, type AppDatabaseConfigOptions, } from './define-app-database-config.js';
3
+ export { connectionEnvironment } from './environment.js';
4
+ export { checkConnections, type CheckConnectionsOptions, type ConnectionCheckResult, type ConnectionCheckStatus, } from './connection-check.js';
5
+ export { createAppDatabaseManager, resolveAppDatabaseDriver, } from './manager.js';
6
+ export { DatabaseProvider, type DatabaseProviderApplication, } from './provider.js';
7
+ export { createAppMigrator, type AppPendingTasksOptions, type AppPendingTasksResult, type AppMigrationRepairResult, type AppMigrationRollbackResult, type AppMigrationRunResult, type AppMigrationSkippedReason, type AppMigrator, } from './migrator.js';
8
+ export { createAppSeeder, type AppSeeder, type AppSeedRepairResult, type AppSeedRunResult, type AppSeedSkippedReason, type CreateAppSeederOptions, } from './seeder.js';
9
+ export { prepareAppDatabaseStorage } from './storage.js';
10
+ export { isCollectionMetadataStoreInstance, resolveAppCollectionsDirectory, resolveAppMetadataDirectory, resolveAppMetadataStore, type ResolveAppMetadataStoreOptions, } from './collections-directory.js';
11
+ export { generateAppCollectionsArtifact, refreshAppCollectionsArtifact, type AppCollectionsRefreshResult, type RefreshAppCollectionsArtifactOptions, type AppCollectionsArtifactConnectionResult, type AppCollectionsArtifactDifference, type AppCollectionsArtifactDifferenceKind, type AppCollectionsArtifactManifestSummary, type AppCollectionsArtifactOptions, type AppCollectionsArtifactResult, } from './collections-artifact.js';
12
+ export { runAppCollectionsDoctor, type AppCollectionsDoctorConnectionResult, type AppCollectionsDoctorOptions, type AppCollectionsDoctorResult, } from './collections-doctor.js';
13
+ export { selectAppDatabaseConnections, type AppDatabaseConnectionSelection, } from './connection-selection.js';
14
+ export { runAppMigrations, runAppSeeds, runAppDatabaseTasks, AppDatabaseTaskError, type AppDatabaseTaskOperation, type AppDatabaseTaskResult, type AppDatabaseTaskRunOptions, type AppDatabaseTasksResult, } from './tasks.js';
15
+ export { planAppDatabaseTasks, type AppDatabaseMigrationSource, type AppDatabaseTask, type AppDatabaseTaskKind, type AppDatabaseTaskPlanOptions, type AppDatabaseTaskSelection, } from './plan.js';
16
+ export type { AppDatabaseConfig, AppDatabaseConfigFromDrivers, AppDatabaseConnectionConfig, AppMetadataStoreConfig, AppDatabaseMigrationConfig, AppDatabaseSeedConfig, AppDatabaseTaskContributions, } from './types.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,KAAK,2BAA2B,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,8BAA8B,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,sCAAsC,EAC3C,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,EAC1C,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,oCAAoC,EACzC,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,KAAK,8BAA8B,GACpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,GAC9B,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ export { MissingDatabaseDriversError, OFFICIAL_DIALECTS, resolveDatabaseConfig, } from './resolve-config.js';
2
+ export { defineAppDatabaseConfig, validateAppDatabaseConfig, } from './define-app-database-config.js';
3
+ export { connectionEnvironment } from './environment.js';
4
+ export { checkConnections, } from './connection-check.js';
5
+ export { createAppDatabaseManager, resolveAppDatabaseDriver, } from './manager.js';
6
+ export { DatabaseProvider, } from './provider.js';
7
+ export { createAppMigrator, } from './migrator.js';
8
+ export { createAppSeeder, } from './seeder.js';
9
+ export { prepareAppDatabaseStorage } from './storage.js';
10
+ export { isCollectionMetadataStoreInstance, resolveAppCollectionsDirectory, resolveAppMetadataDirectory, resolveAppMetadataStore, } from './collections-directory.js';
11
+ export { generateAppCollectionsArtifact, refreshAppCollectionsArtifact, } from './collections-artifact.js';
12
+ export { runAppCollectionsDoctor, } from './collections-doctor.js';
13
+ export { selectAppDatabaseConnections, } from './connection-selection.js';
14
+ export { runAppMigrations, runAppSeeds, runAppDatabaseTasks, AppDatabaseTaskError, } from './tasks.js';
15
+ export { planAppDatabaseTasks, } from './plan.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,GAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,GAEjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,GAQlB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,GAMhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,2BAA2B,EAC3B,uBAAuB,GAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAS9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAIxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,GAMrB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type ConnectionConfig, type DatabaseDriverDefinition, type DatabaseDriverRegistration, type DatabaseManager } from '@nocobase/db';
2
+ import type { AppPaths } from '../config/index.js';
3
+ import type { AppDatabaseConfig } from './types.js';
4
+ /**
5
+ * Builds the manager from the application's own database config.
6
+ *
7
+ * Call resolveDatabaseConfig before this synchronous factory when using official
8
+ * drivers without explicit registrations. Application runtime preparation and
9
+ * standalone database tasks perform that asynchronous step.
10
+ */
11
+ export declare function createAppDatabaseManager<TConfig extends AppDatabaseConfig>(config: TConfig, paths?: AppPaths, drivers?: Record<string, DatabaseDriverRegistration>): DatabaseManager | undefined;
12
+ export declare function resolveConnections(connections: AppDatabaseConfig['connections'], paths: AppPaths | undefined, drivers?: Record<string, DatabaseDriverRegistration>, sharedMetadataStore?: AppDatabaseConfig['metadataStore'],
13
+ /** The top-level task configuration, whose legacy `migrations`/`seeds` apply to the default connection. */
14
+ tasks?: Pick<AppDatabaseConfig, 'default' | 'migrations' | 'seeds'>): Record<string, ConnectionConfig>;
15
+ export declare function resolveAppDatabaseDriver(dialect: string, drivers?: Record<string, DatabaseDriverRegistration>): DatabaseDriverDefinition | undefined;
16
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/database/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,SAAS,iBAAiB,EACxE,MAAM,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,QAAQ,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACnD,eAAe,GAAG,SAAS,CA6B7B;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAC7C,KAAK,EAAE,QAAQ,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,EACpD,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC;AACxD,2GAA2G;AAC3G,KAAK,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC,GAClE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA+BlC;AA4CD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACnD,wBAAwB,GAAG,SAAS,CAEtC"}
@@ -0,0 +1,83 @@
1
+ import { createDatabaseManager, resolveDatabaseDriver, defineDatabase, } from '@nocobase/db';
2
+ import { resolveAppMetadataStore } from './collections-directory.js';
3
+ /**
4
+ * Builds the manager from the application's own database config.
5
+ *
6
+ * Call resolveDatabaseConfig before this synchronous factory when using official
7
+ * drivers without explicit registrations. Application runtime preparation and
8
+ * standalone database tasks perform that asynchronous step.
9
+ */
10
+ export function createAppDatabaseManager(config, paths, drivers) {
11
+ if (config.default === 'none') {
12
+ return undefined;
13
+ }
14
+ return createDatabaseManager(defineDatabase({
15
+ default: config.default,
16
+ drivers: {
17
+ ...config.drivers,
18
+ ...drivers,
19
+ },
20
+ connections: resolveConnections(config.connections, paths, {
21
+ ...config.drivers,
22
+ ...drivers,
23
+ }, config.metadataStore, config),
24
+ metadataStore: resolveAppMetadataStore(config.metadataStore, {
25
+ name: '',
26
+ external: false,
27
+ paths,
28
+ }),
29
+ }));
30
+ }
31
+ export function resolveConnections(connections, paths, drivers, sharedMetadataStore,
32
+ /** The top-level task configuration, whose legacy `migrations`/`seeds` apply to the default connection. */
33
+ tasks) {
34
+ const primary = tasks?.default ?? Object.keys(connections)[0];
35
+ return Object.fromEntries(Object.entries(connections).map(([name, config]) => {
36
+ const { migrations, seeds, metadataStore, ...connection } = config;
37
+ const resolved = resolveAppMetadataStore(metadataStore, {
38
+ name,
39
+ external: connection.schemaManagement === 'external',
40
+ shared: sharedMetadataStore,
41
+ paths,
42
+ });
43
+ const internalTables = bookkeepingTables([migrations, seeds], name === primary ? [tasks?.migrations, tasks?.seeds] : [], connection.internalTables);
44
+ return [
45
+ name,
46
+ normalizeConnection({
47
+ ...connection,
48
+ ...(resolved === undefined ? {} : { metadataStore: resolved }),
49
+ ...(internalTables.length > 0 ? { internalTables } : {}),
50
+ }, paths, drivers, name),
51
+ ];
52
+ }));
53
+ }
54
+ /**
55
+ * A migration or seed history or lock table given a custom name is still
56
+ * bookkeeping, not a Collection, but only this layer knows the name: the
57
+ * connection is told so `collections.list()` and `scan()` skip it. Default
58
+ * names carry the `__nocobase_` prefix and need no declaration.
59
+ */
60
+ function bookkeepingTables(local, legacy, declared) {
61
+ const names = new Set(declared ?? []);
62
+ for (const task of [...local, ...legacy]) {
63
+ if (task?.tableName)
64
+ names.add(task.tableName);
65
+ if (task?.lockTableName)
66
+ names.add(task.lockTableName);
67
+ }
68
+ return [...names].sort();
69
+ }
70
+ function normalizeConnection(connection, paths, drivers, name) {
71
+ const driver = resolveDatabaseDriver(connection, drivers, name);
72
+ if (!driver?.normalizeConnection)
73
+ return connection;
74
+ return driver.normalizeConnection(connection, {
75
+ resolveStoragePath: paths
76
+ ? (filename) => paths.storage(filename)
77
+ : undefined,
78
+ });
79
+ }
80
+ export function resolveAppDatabaseDriver(dialect, drivers) {
81
+ return resolveDatabaseDriver({ dialect }, drivers);
82
+ }
83
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/database/manager.ts"],"names":[],"mappings":"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"}