@nocobase/app-server 0.11.1-alpha.5 → 2.0.0-beta.2

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 +96 -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 type { ServiceResolver } from '@nocobase/service-provider';
2
+ import type { DatabaseTaskConfig } from '@nocobase/db';
3
+ import { type ChecksumMismatch, type DatabaseManager, type MigrationRepairOptions, type MigrationHistoryRecord, type MigrationSource, type MigrationRollbackOptions, type StaleTaskLockTakeover, type TaskLockReleaseOptions, type TaskLockReleaseResult } from '@nocobase/db';
4
+ import type { AppDatabaseMigrationConfig } from './types.js';
5
+ export interface AppMigrator {
6
+ latest(): Promise<AppMigrationRunResult>;
7
+ fresh(): Promise<AppMigrationRunResult>;
8
+ /** What `latest()`, or `fresh()` with `fresh` set, would execute. Reads only. */
9
+ pending(options?: AppPendingTasksOptions): Promise<AppPendingTasksResult>;
10
+ rollback(options?: MigrationRollbackOptions): Promise<AppMigrationRollbackResult>;
11
+ repair(options?: MigrationRepairOptions): Promise<AppMigrationRepairResult>;
12
+ unlock(options?: TaskLockReleaseOptions): Promise<AppTaskLockReleaseResult>;
13
+ /** The migration history, without creating its table. */
14
+ history(): Promise<MigrationHistoryRecord[]>;
15
+ }
16
+ export interface AppPendingTasksOptions {
17
+ /** Plan a fresh run: the schema is emptied first, so every task is pending. */
18
+ readonly fresh?: boolean;
19
+ /**
20
+ * The database does not exist yet, so nothing has run and every task is
21
+ * pending. No connection is opened to find out, because opening one to
22
+ * missing storage creates it.
23
+ */
24
+ readonly withoutHistory?: boolean;
25
+ }
26
+ /**
27
+ * What a run would execute, read without running anything, taking the lock or
28
+ * writing history. It is a plan rather than a promise: a migration whose
29
+ * `shouldRun()` would decline is still listed, because that is evaluated under
30
+ * the lock against the database as the run finds it, and history the sources
31
+ * cannot explain is reported by the run rather than here.
32
+ */
33
+ export interface AppPendingTasksResult {
34
+ status: 'completed' | 'skipped';
35
+ reason?: 'missing-directory';
36
+ /** Tasks with no history record, in the order a run would execute them. */
37
+ pending?: string[];
38
+ /** Tasks already recorded, which a run would skip. */
39
+ skipped?: string[];
40
+ dryRun?: true;
41
+ }
42
+ /** A lock release, or the reason it was left alone. */
43
+ export interface AppTaskLockReleaseResult extends TaskLockReleaseResult {
44
+ status: 'completed';
45
+ }
46
+ export type AppMigrationSkippedReason = 'missing-directory';
47
+ export interface AppMigrationRunResult {
48
+ status: 'completed' | 'skipped';
49
+ reason?: AppMigrationSkippedReason;
50
+ batch?: number;
51
+ executed?: string[];
52
+ skipped?: string[];
53
+ warnings?: ChecksumMismatch[];
54
+ }
55
+ export interface AppMigrationRollbackResult {
56
+ status: 'completed' | 'skipped';
57
+ reason?: AppMigrationSkippedReason;
58
+ batch?: number;
59
+ rolledBack?: string[];
60
+ /** The batch's history records, in the order they roll back. */
61
+ records?: MigrationHistoryRecord[];
62
+ warnings?: ChecksumMismatch[];
63
+ dryRun?: boolean;
64
+ }
65
+ export interface AppMigrationRepairResult {
66
+ status: 'completed' | 'skipped';
67
+ reason?: AppMigrationSkippedReason;
68
+ repaired?: ChecksumMismatch[];
69
+ dryRun?: boolean;
70
+ }
71
+ export interface CreateAppMigratorOptions {
72
+ runtimeConfig?: DatabaseTaskConfig;
73
+ container?: ServiceResolver;
74
+ database: DatabaseManager;
75
+ config: AppDatabaseMigrationConfig;
76
+ connection?: string;
77
+ sources?: readonly MigrationSource[];
78
+ /** Reported when a lock whose holder stopped beating is taken over. */
79
+ onStaleLock?: (takeover: StaleTaskLockTakeover) => void;
80
+ }
81
+ export declare function createAppMigrator(options: CreateAppMigratorOptions): AppMigrator;
82
+ /** Splits loaded tasks into those a run would execute and those it would skip. */
83
+ export declare function pendingTasksResult(tasks: readonly {
84
+ readonly name: string;
85
+ }[], history: readonly {
86
+ readonly name: string;
87
+ }[]): AppPendingTasksResult;
88
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/database/migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { createTaskServiceResolver } from './task-container.js';
2
+ import { snapshotDatabaseTaskConfig } from './task-config.js';
3
+ import { existsSync } from 'node:fs';
4
+ import { createMigrator, loadMigrations, } from '@nocobase/db';
5
+ export function createAppMigrator(options) {
6
+ return {
7
+ async latest() {
8
+ if (!hasMigrationDirectory(options)) {
9
+ return skippedMigrationResult();
10
+ }
11
+ return completedRunResult(await createDatabaseMigrator(options).latest());
12
+ },
13
+ async fresh() {
14
+ const connection = options.database.connection(options.connection);
15
+ await connection.resetManagedSchema();
16
+ if (!hasMigrationDirectory(options)) {
17
+ return {
18
+ status: 'completed',
19
+ batch: 0,
20
+ executed: [],
21
+ skipped: [],
22
+ };
23
+ }
24
+ return completedRunResult(await createDatabaseMigrator(options).latest());
25
+ },
26
+ async pending(pendingOptions = {}) {
27
+ if (!hasMigrationDirectory(options)) {
28
+ // `fresh()` empties the schema whether or not there is anything to
29
+ // apply afterwards, so a fresh plan still has something to do.
30
+ return pendingOptions.fresh
31
+ ? { status: 'completed', pending: [], skipped: [], dryRun: true }
32
+ : { status: 'skipped', reason: 'missing-directory' };
33
+ }
34
+ const migrations = await loadMigrations(createDatabaseMigratorOptions(options));
35
+ return pendingTasksResult(migrations, pendingOptions.fresh || pendingOptions.withoutHistory
36
+ ? []
37
+ : await createDatabaseMigrator(options).history());
38
+ },
39
+ async history() {
40
+ return createDatabaseMigrator(options).history();
41
+ },
42
+ async rollback(rollbackOptions) {
43
+ if (!hasMigrationDirectory(options)) {
44
+ return skippedMigrationResult();
45
+ }
46
+ return completedRollbackResult(await createDatabaseMigrator(options).rollback(rollbackOptions));
47
+ },
48
+ // Unlocking needs no migration directory: the lock exists whether or not
49
+ // this application owns migrations, because plugins and startup share it.
50
+ async unlock(releaseOptions) {
51
+ return {
52
+ status: 'completed',
53
+ ...(await createDatabaseMigrator(options).unlock(releaseOptions)),
54
+ };
55
+ },
56
+ async repair(repairOptions) {
57
+ if (!hasMigrationDirectory(options)) {
58
+ return skippedMigrationResult();
59
+ }
60
+ return completedRepairResult(await createDatabaseMigrator(options).repair(repairOptions));
61
+ },
62
+ };
63
+ }
64
+ function createDatabaseMigrator(options) {
65
+ return createMigrator(createDatabaseMigratorOptions(options));
66
+ }
67
+ function createDatabaseMigratorOptions(options) {
68
+ const common = {
69
+ config: snapshotDatabaseTaskConfig(options.runtimeConfig),
70
+ container: createTaskServiceResolver(options.container),
71
+ database: options.database,
72
+ connection: options.connection,
73
+ tableName: options.config.tableName,
74
+ lockTableName: options.config.lockTableName,
75
+ extensions: options.config.extensions,
76
+ onChecksumMismatch: options.config.onChecksumMismatch,
77
+ onStaleLock: options.onStaleLock,
78
+ };
79
+ if (options.sources) {
80
+ return {
81
+ ...common,
82
+ sources: options.sources,
83
+ };
84
+ }
85
+ return {
86
+ ...common,
87
+ directory: options.config.directory,
88
+ packageName: options.config.packageName,
89
+ };
90
+ }
91
+ function hasMigrationDirectory(options) {
92
+ if (options.sources) {
93
+ return options.sources.some((source) => existsSync(source.directory));
94
+ }
95
+ return existsSync(options.config.directory);
96
+ }
97
+ function skippedMigrationResult() {
98
+ return {
99
+ status: 'skipped',
100
+ reason: 'missing-directory',
101
+ };
102
+ }
103
+ /** Splits loaded tasks into those a run would execute and those it would skip. */
104
+ export function pendingTasksResult(tasks, history) {
105
+ const executed = new Set(history.map((record) => record.name));
106
+ return {
107
+ status: 'completed',
108
+ pending: tasks
109
+ .filter((task) => !executed.has(task.name))
110
+ .map((task) => task.name),
111
+ skipped: tasks
112
+ .filter((task) => executed.has(task.name))
113
+ .map((task) => task.name),
114
+ dryRun: true,
115
+ };
116
+ }
117
+ function completedRunResult(result) {
118
+ return {
119
+ status: 'completed',
120
+ batch: result.batch,
121
+ executed: result.executed,
122
+ skipped: result.skipped,
123
+ warnings: result.warnings,
124
+ };
125
+ }
126
+ function completedRollbackResult(result) {
127
+ return {
128
+ status: 'completed',
129
+ batch: result.batch,
130
+ rolledBack: result.rolledBack,
131
+ records: result.records,
132
+ warnings: result.warnings,
133
+ dryRun: result.dryRun,
134
+ };
135
+ }
136
+ function completedRepairResult(result) {
137
+ return {
138
+ status: 'completed',
139
+ repaired: result.repaired,
140
+ dryRun: result.dryRun,
141
+ };
142
+ }
143
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/database/migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AppPaths } from '../config/index.js';
2
+ import type { AppDatabaseConfig } from './types.js';
3
+ import { type DatabaseDriverRegistration } from '@nocobase/db';
4
+ /** Catch identical configured targets. Network aliases still require operator validation. */
5
+ export declare function validateDatabaseOwnership(config: AppDatabaseConfig, paths?: AppPaths, drivers?: Record<string, DatabaseDriverRegistration>): void;
6
+ //# sourceMappingURL=ownership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/database/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,cAAc,CAAC;AAEtB,6FAA6F;AAC7F,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EACzB,KAAK,CAAC,EAAE,QAAQ,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACnD,IAAI,CA6BN"}
@@ -0,0 +1,50 @@
1
+ import { resolveConnections } from './manager.js';
2
+ import { resolveDatabaseDriver, } from '@nocobase/db';
3
+ /** Catch identical configured targets. Network aliases still require operator validation. */
4
+ export function validateDatabaseOwnership(config, paths, drivers) {
5
+ const owners = new Map();
6
+ for (const [name, connection] of Object.entries(resolveConnections(config.connections, paths, {
7
+ ...config.drivers,
8
+ ...drivers,
9
+ }))) {
10
+ if (connection.schemaManagement === 'external')
11
+ continue;
12
+ const driver = resolveDatabaseDriver(connection, { ...config.drivers, ...drivers }, name);
13
+ const target = driver?.resolveOwnershipTarget
14
+ ? driver.resolveOwnershipTarget(connection)
15
+ : genericOwnershipTarget(connection);
16
+ if (!target)
17
+ continue;
18
+ const key = JSON.stringify(target);
19
+ const owner = owners.get(key);
20
+ if (owner) {
21
+ throw new Error(`Managed database connections "${owner}" and "${name}" target the same database and schema. Use one managed connection per target; aliases must not own separate migration histories.`);
22
+ }
23
+ owners.set(key, name);
24
+ }
25
+ }
26
+ function genericOwnershipTarget(connection) {
27
+ const ignored = new Set([
28
+ 'capabilities',
29
+ 'databaseDriver',
30
+ 'debug',
31
+ 'driverOptions',
32
+ 'metadataStore',
33
+ 'naming',
34
+ 'onCollectionMetadataInvalidationError',
35
+ 'onRepositoryEventError',
36
+ 'onTransactionCallbackError',
37
+ 'password',
38
+ 'pool',
39
+ 'repositoryEventMaxDepth',
40
+ 'schemaManagement',
41
+ 'ssl',
42
+ ]);
43
+ return [
44
+ connection.dialect,
45
+ ...Object.entries(connection)
46
+ .filter(([key, value]) => !ignored.has(key) && value !== undefined)
47
+ .sort(([left], [right]) => left.localeCompare(right)),
48
+ ];
49
+ }
50
+ //# sourceMappingURL=ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/database/ownership.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,qBAAqB,GAEtB,MAAM,cAAc,CAAC;AAEtB,6FAA6F;AAC7F,MAAM,UAAU,yBAAyB,CACvC,MAAyB,EACzB,KAAgB,EAChB,OAAoD;IAEpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAC7C,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE;QAC5C,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,OAAO;KACX,CAAC,CACH,EAAE,CAAC;QACF,IAAI,UAAU,CAAC,gBAAgB,KAAK,UAAU;YAAE,SAAS;QACzD,MAAM,MAAM,GAAG,qBAAqB,CAClC,UAAU,EACV,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,EACjC,IAAI,CACL,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,EAAE,sBAAsB;YAC3C,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC;YAC3C,CAAC,CAAC,sBAAsB,CACpB,UAAgD,CACjD,CAAC;QACN,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,UAAU,IAAI,kIAAkI,CACvL,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,cAAc;QACd,gBAAgB;QAChB,OAAO;QACP,eAAe;QACf,eAAe;QACf,QAAQ;QACR,uCAAuC;QACvC,wBAAwB;QACxB,4BAA4B;QAC5B,UAAU;QACV,MAAM;QACN,yBAAyB;QACzB,kBAAkB;QAClB,KAAK;KACN,CAAC,CAAC;IACH,OAAO;QACL,UAAU,CAAC,OAAO;QAClB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC;aAClE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { AppPaths } from '../config/index.js';
2
+ import type { DatabaseDriverRegistration, MigrationSource } from '@nocobase/db';
3
+ import type { AppDatabaseConfig, AppDatabaseMigrationConfig, AppDatabaseTaskContributions } from './types.js';
4
+ export type AppDatabaseTaskKind = 'migrations' | 'seeds';
5
+ export interface AppDatabaseTaskSelection {
6
+ connection?: string;
7
+ all?: boolean;
8
+ autoRun?: boolean;
9
+ fresh?: boolean;
10
+ confirmFresh?: (plan: readonly AppDatabaseTask[]) => Promise<boolean>;
11
+ }
12
+ /**
13
+ * Everything planning needs beyond the configuration itself. `contributions` is
14
+ * required so that a caller which has not been updated fails to compile rather
15
+ * than silently planning without its plugins' migrations.
16
+ */
17
+ export interface AppDatabaseTaskPlanOptions extends AppDatabaseTaskSelection {
18
+ readonly migrationSources?: readonly AppDatabaseMigrationSource[];
19
+ readonly contributions: AppDatabaseTaskContributions;
20
+ readonly paths?: AppPaths;
21
+ readonly drivers?: Record<string, DatabaseDriverRegistration>;
22
+ }
23
+ export interface AppDatabaseMigrationSource {
24
+ readonly connection: string;
25
+ readonly source: MigrationSource;
26
+ }
27
+ export interface AppDatabaseTask {
28
+ connection: string;
29
+ kind: AppDatabaseTaskKind;
30
+ config: AppDatabaseMigrationConfig;
31
+ skipReason?: 'external' | 'auto-run-disabled';
32
+ }
33
+ export declare function defaultConnectionName(config: AppDatabaseConfig): string | undefined;
34
+ /** Resolve the entire plan before any database is opened or modified. */
35
+ export declare function planAppDatabaseTasks(config: AppDatabaseConfig, kinds: readonly AppDatabaseTaskKind[], planOptions: AppDatabaseTaskPlanOptions): AppDatabaseTask[];
36
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/database/plan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAClE,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,0BAA0B,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAAC;CAC/C;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,GACxB,MAAM,GAAG,SAAS,CAEpB;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,WAAW,EAAE,0BAA0B,GACtC,eAAe,EAAE,CAqJnB"}
@@ -0,0 +1,136 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { validateDatabaseOwnership } from './ownership.js';
4
+ export function defaultConnectionName(config) {
5
+ return config.default ?? Object.keys(config.connections)[0];
6
+ }
7
+ /** Resolve the entire plan before any database is opened or modified. */
8
+ export function planAppDatabaseTasks(config, kinds, planOptions) {
9
+ const { contributions, paths, drivers } = planOptions;
10
+ const selection = planOptions;
11
+ if (selection.connection !== undefined && selection.all) {
12
+ throw new Error('--connection and --all are mutually exclusive.');
13
+ }
14
+ const primary = defaultConnectionName(config);
15
+ const migrationTargets = kinds.includes('migrations')
16
+ ? (planOptions.migrationSources ?? [])
17
+ : [];
18
+ for (const target of migrationTargets) {
19
+ if (!Object.hasOwn(config.connections, target.connection)) {
20
+ throw new Error(`Unknown migration target database connection "${target.connection}".`);
21
+ }
22
+ }
23
+ if (primary === 'none' || !primary) {
24
+ if (selection.connection !== undefined)
25
+ throw new Error('Database is not configured.');
26
+ return [];
27
+ }
28
+ if (!Object.hasOwn(config.connections, primary)) {
29
+ throw new Error(`Unknown default database connection "${primary}".`);
30
+ }
31
+ validateDatabaseOwnership(config, paths, drivers);
32
+ const names = selection.all || selection.autoRun
33
+ ? Object.keys(config.connections).sort((a, b) => a === primary ? -1 : b === primary ? 1 : a < b ? -1 : a > b ? 1 : 0)
34
+ : [selection.connection ?? primary];
35
+ return names.flatMap((name) => {
36
+ if (!Object.hasOwn(config.connections, name)) {
37
+ throw new Error(`Unknown database connection "${name}".`);
38
+ }
39
+ if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
40
+ throw new Error(`Database connection "${name}" must use letters, digits, underscores or hyphens.`);
41
+ }
42
+ const connection = config.connections[name];
43
+ const external = connection.schemaManagement === 'external';
44
+ if (external && !selection.all && !selection.autoRun) {
45
+ throw new Error(`Database connection "${name}" is external; migrations and seeds are not supported.`);
46
+ }
47
+ return kinds.map((kind) => {
48
+ const local = connection[kind];
49
+ const legacy = name === primary ? config[kind] : undefined;
50
+ // Legacy values (including existing DB_* environment mappings) retain precedence.
51
+ // Source selection is exclusive: different explicit sources must never be merged.
52
+ if (legacy?.directory &&
53
+ local?.directory &&
54
+ legacy.directory !== local.directory) {
55
+ throw new Error(`Conflicting legacy and connection ${kind} directories for "${name}".`);
56
+ }
57
+ if (legacy?.sources && local?.sources) {
58
+ throw new Error(`Configure ${kind} sources only once for "${name}".`);
59
+ }
60
+ const options = { ...local, ...legacy };
61
+ if (options.directory && options.sources) {
62
+ throw new Error(`Configure either ${kind} directory or sources for "${name}", not both.`);
63
+ }
64
+ const root = paths?.database() ?? path.resolve('database');
65
+ const modern = path.join(root, name, kind);
66
+ const old = path.join(root, kind);
67
+ let directory = options.directory;
68
+ if (!directory && !options.sources && !external) {
69
+ if (name === primary && existsSync(old)) {
70
+ if (existsSync(modern)) {
71
+ throw new Error(`Both legacy and connection ${kind} directories exist for "${name}". Configure one directory explicitly.`);
72
+ }
73
+ directory = old;
74
+ }
75
+ else
76
+ directory = modern;
77
+ }
78
+ const resolvePath = (value) => path.resolve(paths?.root() ?? process.cwd(), value);
79
+ const packageName = options.packageName ?? contributions.appPackageName;
80
+ const appSources = options.sources?.map((source) => ({
81
+ ...source,
82
+ directory: resolvePath(source.directory),
83
+ })) ?? [
84
+ {
85
+ packageName,
86
+ directory: resolvePath(directory ?? modern),
87
+ extensions: options.extensions,
88
+ },
89
+ ];
90
+ // Plugins contribute to the default connection only; they cannot know
91
+ // which additional connections an application happens to define.
92
+ const sources = [
93
+ ...(kind === 'migrations'
94
+ ? migrationTargets
95
+ .filter((target) => target.connection === name)
96
+ .map((target) => target.source)
97
+ : []),
98
+ ...appSources,
99
+ ...(name === primary ? contributions[kind] : []),
100
+ ];
101
+ const autoRun = options.autoRun ?? name === primary;
102
+ if (!external && (!selection.autoRun || autoRun)) {
103
+ for (const source of sources) {
104
+ if (existsSync(source.directory) &&
105
+ !statSync(source.directory).isDirectory()) {
106
+ throw new Error(`Database ${kind} source is not a directory: ${source.directory}`);
107
+ }
108
+ }
109
+ if (options.directory || options.sources) {
110
+ for (const source of appSources) {
111
+ if (!existsSync(source.directory)) {
112
+ throw new Error(`Explicit database ${kind} source is missing for "${name}": ${source.directory}`);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ return {
118
+ connection: name,
119
+ kind,
120
+ config: {
121
+ ...options,
122
+ packageName,
123
+ directory: resolvePath(directory ?? modern),
124
+ sources,
125
+ autoRun,
126
+ },
127
+ skipReason: external
128
+ ? 'external'
129
+ : selection.autoRun && !autoRun
130
+ ? 'auto-run-disabled'
131
+ : undefined,
132
+ };
133
+ });
134
+ });
135
+ }
136
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/database/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ServiceProvider, type ServiceContainer } from '@nocobase/service-provider';
2
+ import type { AppConfigAccessor, AppPaths } from '../config/index.js';
3
+ import type { AppDatabaseTaskContributions } from './types.js';
4
+ export interface DatabaseProviderApplication {
5
+ readonly config: AppConfigAccessor;
6
+ readonly container: ServiceContainer;
7
+ readonly paths: AppPaths;
8
+ readonly databaseTaskContributions: AppDatabaseTaskContributions;
9
+ }
10
+ /**
11
+ * Set by `nocobase dev` on the server process it starts, to that
12
+ * application's root. Naming the root rather than switching the behavior on
13
+ * matters for a Hub: applications it hosts in the same process see the same
14
+ * environment, and their directories are deployed revisions a cache must not
15
+ * be written into.
16
+ */
17
+ export declare const COLLECTIONS_REFRESH_ENV = "NOCOBASE_COLLECTIONS_REFRESH";
18
+ export declare class DatabaseProvider extends ServiceProvider<DatabaseProviderApplication> {
19
+ readonly name: string;
20
+ register(): void;
21
+ boot(): Promise<void>;
22
+ /**
23
+ * Tells the sample data service where samples are recorded — the default connection's seed history — and whether
24
+ * this start installed that connection with `app.sampleData` set. Without a seeds run on the default connection,
25
+ * nothing is prepared and no sample is built or recorded.
26
+ */
27
+ private prepareSampleData;
28
+ /**
29
+ * Startup migrations make `database/<connection>/collections/` stale just
30
+ * as `db apply` does, and under `nocobase dev` they are the usual cause. So
31
+ * the development server refreshes the cache of every connection they
32
+ * changed. Nothing else does: production never sets the variable.
33
+ */
34
+ private refreshCollections;
35
+ /**
36
+ * Automatic startup tasks have no console to report to, so drift tolerated by
37
+ * the `warn` policy is only visible if it reaches the application log.
38
+ */
39
+ private reportChecksumWarnings;
40
+ shutdown(): Promise<void>;
41
+ private getDatabaseConfig;
42
+ }
43
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/database/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAuBpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;CAClE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,2BAA2B,CAAC;IAChF,SAAgB,IAAI,EAAE,MAAM,CAAmC;IAE/C,QAAQ,IAAI,IAAI;IAsBV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3C;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;;OAKG;YACW,kBAAkB;IAyBhC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAsBR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/C,OAAO,CAAC,iBAAiB;CAG1B"}