@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,281 @@
1
+ import { bodyLimit } from 'hono/body-limit';
2
+ import { createMiddleware } from 'hono/factory';
3
+ import { defineAppConfig, } from '../config/define-app-config.js';
4
+ import { envString } from '@nocobase/config/providers/env';
5
+ import { ApiError, apiErrorHandler, appErrorDomain } from './api-error.js';
6
+ const durationUnits = {
7
+ ms: 1,
8
+ s: 1_000,
9
+ m: 60_000,
10
+ h: 3_600_000,
11
+ };
12
+ const sizeUnits = {
13
+ b: 1,
14
+ kb: 1024,
15
+ mb: 1024 ** 2,
16
+ gb: 1024 ** 3,
17
+ };
18
+ /** Milliseconds for a duration such as `30s`; a bare number, or a string of digits, is milliseconds. */
19
+ export function parseApiDuration(value, name) {
20
+ return parseQuantity(value, name, durationUnits, 'a positive duration such as "500ms", "30s", "1m" or "1h"');
21
+ }
22
+ /** Bytes for a size such as `10mb`; a bare number, or a string of digits, is bytes. */
23
+ export function parseApiSize(value, name) {
24
+ return parseQuantity(value, name, sizeUnits, 'a positive size such as "512kb", "10mb" or "1gb"');
25
+ }
26
+ function parseQuantity(value, name, units, expected) {
27
+ let amount;
28
+ if (typeof value === 'number') {
29
+ amount = value;
30
+ }
31
+ else if (typeof value === 'string') {
32
+ const match = /^(\d+(?:\.\d+)?)\s*([a-z]*)$/i.exec(value.trim());
33
+ const multiplier = match
34
+ ? match[2]
35
+ ? units[match[2].toLowerCase()]
36
+ : 1
37
+ : undefined;
38
+ if (match && multiplier !== undefined)
39
+ amount = Number(match[1]) * multiplier;
40
+ }
41
+ if (amount === undefined || !Number.isFinite(amount) || amount <= 0) {
42
+ throw new Error(`${name} must be ${expected}.`);
43
+ }
44
+ return Math.ceil(amount);
45
+ }
46
+ const apiConfigFields = new Set([
47
+ 'bodyLimit',
48
+ 'timeout',
49
+ 'rateLimit',
50
+ ]);
51
+ const rateLimitFields = new Set(['max', 'window']);
52
+ /** Resolves the `api` section, throwing on the first malformed value. An unset or `null` value stays off. */
53
+ export function resolveApiLimits(config) {
54
+ if (config === undefined || config === null)
55
+ return {};
56
+ if (!isRecord(config))
57
+ throw new Error('api must be a mapping.');
58
+ const { bodyLimit: size, timeout, rateLimit } = config;
59
+ return {
60
+ ...(isSet(size)
61
+ ? { bodyLimitBytes: parseApiSize(size, 'api.bodyLimit') }
62
+ : {}),
63
+ ...(isSet(timeout)
64
+ ? { timeoutMs: parseApiDuration(timeout, 'api.timeout') }
65
+ : {}),
66
+ ...(isSet(rateLimit) ? { rateLimit: resolveRateLimit(rateLimit) } : {}),
67
+ };
68
+ }
69
+ function resolveRateLimit(value) {
70
+ if (!isRecord(value))
71
+ throw new Error('api.rateLimit must be a mapping with max and window.');
72
+ const { max, window } = value;
73
+ if (typeof max !== 'number' || !Number.isInteger(max) || max <= 0) {
74
+ throw new Error('api.rateLimit.max must be a positive integer.');
75
+ }
76
+ if (!isSet(window))
77
+ throw new Error('api.rateLimit.window is required.');
78
+ return { max, windowMs: parseApiDuration(window, 'api.rateLimit.window') };
79
+ }
80
+ /** The rules the `api` section is held to, run at start, on reload and by `config check`. */
81
+ export const validateApiConfig = (api, context) => {
82
+ if (!isRecord(api)) {
83
+ context.error('', 'must be a mapping.');
84
+ return;
85
+ }
86
+ for (const key of Object.keys(api)) {
87
+ if (!apiConfigFields.has(key))
88
+ context.warning(key, 'is not an api setting, so nothing reads it. Expected bodyLimit, timeout or rateLimit.');
89
+ }
90
+ const check = (path, parse) => {
91
+ try {
92
+ parse();
93
+ }
94
+ catch (error) {
95
+ context.error(path, (error instanceof Error ? error.message : String(error)).replace(`api.${path} `, ''));
96
+ }
97
+ };
98
+ if (isSet(api.bodyLimit))
99
+ check('bodyLimit', () => parseApiSize(api.bodyLimit, 'api.bodyLimit'));
100
+ if (isSet(api.timeout))
101
+ check('timeout', () => parseApiDuration(api.timeout, 'api.timeout'));
102
+ const rateLimit = api.rateLimit;
103
+ if (!isSet(rateLimit))
104
+ return;
105
+ if (!isRecord(rateLimit)) {
106
+ context.error('rateLimit', 'must be a mapping with max and window.');
107
+ return;
108
+ }
109
+ for (const key of Object.keys(rateLimit)) {
110
+ if (!rateLimitFields.has(key))
111
+ context.warning(`rateLimit.${key}`, 'is not a rateLimit setting, so nothing reads it. Expected max and window.');
112
+ }
113
+ const { max, window } = rateLimit;
114
+ if (typeof max !== 'number' || !Number.isInteger(max) || max <= 0)
115
+ context.error('rateLimit.max', 'must be a positive integer.');
116
+ if (!isSet(window))
117
+ context.error('rateLimit.window', 'is required.');
118
+ else
119
+ check('rateLimit.window', () => parseApiDuration(window, 'api.rateLimit.window'));
120
+ };
121
+ /** The environment variables that set `api` fields. */
122
+ const API_ENVIRONMENT = {
123
+ API_BODY_LIMIT: envString('bodyLimit', {
124
+ description: 'The largest request body any /api route accepts, such as 10mb; off when unset.',
125
+ required: false,
126
+ }),
127
+ API_TIMEOUT: envString('timeout', {
128
+ description: 'How long an /api request may take before it is answered 503 REQUEST_TIMEOUT, such as 30s; off when unset.',
129
+ required: false,
130
+ }),
131
+ };
132
+ /**
133
+ * Declares the `api` section with the framework's validation and environment variables, in place of
134
+ * `defineAppConfig`. Every limit defaults to off. A `validate` given here runs after the framework's own.
135
+ */
136
+ export function defineApiConfig(definition = {}) {
137
+ const extra = definition.validate === undefined
138
+ ? []
139
+ : Array.isArray(definition.validate)
140
+ ? definition.validate
141
+ : [definition.validate];
142
+ return defineAppConfig({
143
+ defaults: definition.defaults ?? {},
144
+ validate: [validateApiConfig, ...extra],
145
+ ...(definition.public ? { public: definition.public } : {}),
146
+ env: { ...API_ENVIRONMENT, ...definition.env },
147
+ });
148
+ }
149
+ /** The path no limit counts: load balancers and probes poll it, and must not be throttled or timed out. */
150
+ const exemptPaths = new Set(['/api/healthz']);
151
+ /**
152
+ * Installs the configured limits on the `/api` router, in the order a request meets them: the rate limit, before any
153
+ * work is done for a client already over it; then the deadline, which also covers reading the body; then the body
154
+ * ceiling. Nothing is installed for a limit that is not configured. Call it after the request id middleware, so every
155
+ * refusal carries the request's id, and before any route.
156
+ */
157
+ export function installApiLimits(api, config, options = {}) {
158
+ const limits = resolveApiLimits(config);
159
+ if (limits.rateLimit)
160
+ api.use('*', apiRateLimitMiddleware(limits.rateLimit, options));
161
+ if (limits.timeoutMs !== undefined)
162
+ api.use('*', apiTimeoutMiddleware(limits.timeoutMs));
163
+ if (limits.bodyLimitBytes !== undefined)
164
+ api.use('*', apiBodyLimitMiddleware(limits.bodyLimitBytes));
165
+ }
166
+ /** Refuses a body over `maxBytes` with `413 BODY_TOO_LARGE`, whether it declares its length or streams it. */
167
+ export function apiBodyLimitMiddleware(maxBytes) {
168
+ return bodyLimit({
169
+ maxSize: maxBytes,
170
+ onError: (context) => apiErrorHandler(new ApiError({
171
+ status: 'INVALID_ARGUMENT',
172
+ reason: 'BODY_TOO_LARGE',
173
+ domain: appErrorDomain,
174
+ message: `The request body exceeds the application's limit of ${maxBytes} bytes.`,
175
+ httpStatus: 413,
176
+ }), context),
177
+ });
178
+ }
179
+ /**
180
+ * Answers `503 REQUEST_TIMEOUT` when the handler has not returned its response within `timeoutMs`.
181
+ *
182
+ * The deadline covers the time until the response object exists, not the time spent sending it, so a streaming
183
+ * response that has started runs to its end. The handler itself cannot be cancelled and keeps running after the
184
+ * deadline; what it eventually returns or throws is discarded.
185
+ */
186
+ export function apiTimeoutMiddleware(timeoutMs) {
187
+ return createMiddleware(async (context, next) => {
188
+ if (exemptPaths.has(context.req.path)) {
189
+ await next();
190
+ return;
191
+ }
192
+ let timer;
193
+ const deadline = new Promise((_, reject) => {
194
+ timer = setTimeout(() => {
195
+ reject(new ApiError({
196
+ status: 'UNAVAILABLE',
197
+ reason: 'REQUEST_TIMEOUT',
198
+ domain: appErrorDomain,
199
+ message: `The request was not handled within ${timeoutMs} ms.`,
200
+ }));
201
+ }, timeoutMs);
202
+ });
203
+ const handled = next();
204
+ try {
205
+ await Promise.race([handled, deadline]);
206
+ }
207
+ finally {
208
+ clearTimeout(timer);
209
+ // A handler that loses the race may still fail later; its outcome has nowhere to go, and must not surface as an
210
+ // unhandled rejection that stops the process.
211
+ handled.catch(() => undefined);
212
+ }
213
+ });
214
+ }
215
+ /** The most clients counted at once; past it the oldest window is dropped, so memory stays bounded under a flood. */
216
+ const maxTrackedClients = 100_000;
217
+ /**
218
+ * Counts requests per client in fixed windows and answers `429 RATE_LIMITED`, with `Retry-After` in seconds, once a
219
+ * client exceeds `max` in its current window.
220
+ *
221
+ * The client is the address of the connection, read from the Node.js server bindings. The signed-in user is not known
222
+ * at this point: authentication runs inside the routes that need it. A request whose address is unknown, such as one an
223
+ * in-process Hub forwards, is not counted. Counters live in this process, so each instance of a multi-instance
224
+ * deployment counts on its own.
225
+ */
226
+ export function apiRateLimitMiddleware(limit, options = {}) {
227
+ const now = options.now ?? Date.now;
228
+ // Every window has the same length and a client's entry is re-inserted when its window restarts, so insertion
229
+ // order is expiry order: expired entries are always at the front.
230
+ const windows = new Map();
231
+ return createMiddleware(async (context, next) => {
232
+ if (exemptPaths.has(context.req.path))
233
+ return next();
234
+ const client = clientAddress(context);
235
+ if (client === undefined)
236
+ return next();
237
+ const time = now();
238
+ for (const [key, window] of windows) {
239
+ if (window.resetAt > time)
240
+ break;
241
+ windows.delete(key);
242
+ }
243
+ let window = windows.get(client);
244
+ if (!window) {
245
+ if (windows.size >= maxTrackedClients) {
246
+ const oldest = windows.keys().next();
247
+ if (!oldest.done)
248
+ windows.delete(oldest.value);
249
+ }
250
+ window = { count: 0, resetAt: time + limit.windowMs };
251
+ windows.set(client, window);
252
+ }
253
+ window.count += 1;
254
+ if (window.count <= limit.max)
255
+ return next();
256
+ const retryAfter = Math.max(1, Math.ceil((window.resetAt - time) / 1000));
257
+ const response = apiErrorHandler(new ApiError({
258
+ status: 'RESOURCE_EXHAUSTED',
259
+ reason: 'RATE_LIMITED',
260
+ domain: appErrorDomain,
261
+ message: `Too many requests: at most ${limit.max} per ${limit.windowMs} ms. Retry after ${retryAfter} s.`,
262
+ metadata: { retryAfterSeconds: retryAfter },
263
+ }), context);
264
+ response.headers.set('Retry-After', String(retryAfter));
265
+ return response;
266
+ });
267
+ }
268
+ /** The remote address of the connection, as `@hono/node-server` exposes it, or `undefined` outside a Node server. */
269
+ function clientAddress(context) {
270
+ const env = context.env;
271
+ const address = (env?.incoming ?? env?.server?.incoming)?.socket
272
+ ?.remoteAddress;
273
+ return typeof address === 'string' && address ? address : undefined;
274
+ }
275
+ function isSet(value) {
276
+ return value !== undefined && value !== null;
277
+ }
278
+ function isRecord(value) {
279
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
280
+ }
281
+ //# sourceMappingURL=api-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-limits.js","sourceRoot":"","sources":["../../src/router/api-limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ApiDocument } from '../openapi/document.js';
2
+ import { type CliCaller, type CliCommand, type CliExclusion, type CliIdentity, type CliManifest } from './types.js';
3
+ export interface DeriveCliCommandsOptions {
4
+ /**
5
+ * The security schemes that name an identity: an operation whose requirements name one is offered to that identity.
6
+ * `cookieAuth` and `apiKeyAuth` name a person by default.
7
+ */
8
+ readonly identitySchemes?: Readonly<Record<string, CliIdentity>>;
9
+ /** Operations left out, as if their `x-cli` were `false`. */
10
+ readonly exclude?: readonly CliExclusion[];
11
+ }
12
+ /** `issueId` → `issue-id`, `AiEmployee` → `ai-employee`. */
13
+ export declare function kebabCase(value: string): string;
14
+ /**
15
+ * The command words derived from an operation's tag, path and method. A `POST` to a path that ends in a literal after
16
+ * a parameter is a custom method (`POST /issues/{id}/close` → `close`), unless the path is a collection, which
17
+ * `collections` names by having a `GET` on it (`POST /issues/{id}/comments` → `comments create`).
18
+ */
19
+ export declare function deriveCommandWords(method: string, path: string, tag: string | undefined, collections?: ReadonlySet<string>): string[];
20
+ /**
21
+ * Every command the API document describes, for every caller: each documented operation that is not hidden and whose
22
+ * `x-cli` is not `false`. A derived name that two operations share falls back to the tag and the `operationId`; a name
23
+ * an `x-cli.command` gives twice keeps its first operation.
24
+ */
25
+ export declare function deriveAllCliCommands(document: ApiDocument, options?: DeriveCliCommandsOptions): CliCommand[];
26
+ /** The commands a caller may run: offered to its identity, and holding the action each one names. */
27
+ export declare function filterCliCommands(commands: readonly CliCommand[], caller: Pick<CliCaller, 'kind' | 'actions'>): CliCommand[];
28
+ /** The manifest of `caller`'s commands, and of those it is not offered, with why. */
29
+ export declare function cliManifestOf(commands: readonly CliCommand[], caller: CliCaller): CliManifest;
30
+ /** The manifest of the commands the API document describes that `caller` may run. */
31
+ export declare function deriveCliCommands(document: ApiDocument, caller: CliCaller, options?: DeriveCliCommandsOptions): CliManifest;
32
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../src/router/cli/derive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAKjB,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAoCD,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAWD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C,MAAM,EAAE,CAwCV;AAybD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,wBAA6B,GACrC,UAAU,EAAE,CA4Cd;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1C,UAAU,EAAE,CAId;AAaD,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,MAAM,EAAE,SAAS,GAChB,WAAW,CAiCb;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,wBAA6B,GACrC,WAAW,CAEb"}