@alepha/devtools 0.15.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/assets/devtools/actions.html +2 -20
  2. package/assets/devtools/actions.html.br +0 -0
  3. package/assets/devtools/actions.html.gz +0 -0
  4. package/assets/devtools/atoms.html +2 -20
  5. package/assets/devtools/atoms.html.br +0 -0
  6. package/assets/devtools/atoms.html.gz +0 -0
  7. package/assets/devtools/caches.html +2 -20
  8. package/assets/devtools/caches.html.br +0 -0
  9. package/assets/devtools/caches.html.gz +0 -0
  10. package/assets/devtools/chunk.9K7EO5hq.js +1 -0
  11. package/assets/devtools/chunk.9K7EO5hq.js.br +0 -0
  12. package/assets/devtools/chunk.9K7EO5hq.js.gz +0 -0
  13. package/assets/devtools/{chunk.BD3_boSH.js → chunk.B4porofG.js} +1 -1
  14. package/assets/devtools/chunk.B4porofG.js.br +0 -0
  15. package/assets/devtools/chunk.B4porofG.js.gz +0 -0
  16. package/assets/devtools/{chunk.jP0GrcaU.js → chunk.BIGcMrv-.js} +1 -1
  17. package/assets/devtools/chunk.BIGcMrv-.js.br +0 -0
  18. package/assets/devtools/chunk.BIGcMrv-.js.gz +0 -0
  19. package/assets/devtools/chunk.BP23bv4G.js +1 -0
  20. package/assets/devtools/chunk.BP23bv4G.js.br +0 -0
  21. package/assets/devtools/chunk.BP23bv4G.js.gz +0 -0
  22. package/assets/devtools/{chunk.D_B99PWK.js → chunk.BWdBHr2F.js} +1 -1
  23. package/assets/devtools/chunk.BWdBHr2F.js.br +0 -0
  24. package/assets/devtools/chunk.BWdBHr2F.js.gz +0 -0
  25. package/assets/devtools/{chunk.DyNVihb8.js → chunk.BfFwPQgv.js} +2 -2
  26. package/assets/devtools/chunk.BfFwPQgv.js.br +0 -0
  27. package/assets/devtools/chunk.BfFwPQgv.js.gz +0 -0
  28. package/assets/devtools/{chunk.UjSU-RcH.js → chunk.BiIrl-Hq.js} +1 -1
  29. package/assets/devtools/chunk.BiIrl-Hq.js.br +0 -0
  30. package/assets/devtools/chunk.BiIrl-Hq.js.gz +0 -0
  31. package/assets/devtools/chunk.C8JxGZtc.js +1 -0
  32. package/assets/devtools/chunk.C8JxGZtc.js.br +0 -0
  33. package/assets/devtools/chunk.C8JxGZtc.js.gz +0 -0
  34. package/assets/devtools/{chunk.6zj3eUIy.js → chunk.CFLl96SC.js} +1 -1
  35. package/assets/devtools/chunk.CFLl96SC.js.br +0 -0
  36. package/assets/devtools/chunk.CFLl96SC.js.gz +0 -0
  37. package/assets/devtools/{chunk.D8mKET3e.js → chunk.CMTEfKUa.js} +1 -1
  38. package/assets/devtools/chunk.CMTEfKUa.js.br +0 -0
  39. package/assets/devtools/chunk.CMTEfKUa.js.gz +0 -0
  40. package/assets/devtools/{chunk.Vm7uQYEE.js → chunk.CN7ovTep.js} +1 -1
  41. package/assets/devtools/chunk.CN7ovTep.js.br +0 -0
  42. package/assets/devtools/chunk.CN7ovTep.js.gz +0 -0
  43. package/assets/devtools/chunk.CUs8lFwI.js +1 -0
  44. package/assets/devtools/chunk.CUs8lFwI.js.br +0 -0
  45. package/assets/devtools/chunk.CUs8lFwI.js.gz +0 -0
  46. package/assets/devtools/{chunk.01h1zGjv.js → chunk.CUw48lF5.js} +1 -1
  47. package/assets/devtools/chunk.CUw48lF5.js.br +0 -0
  48. package/assets/devtools/chunk.CUw48lF5.js.gz +0 -0
  49. package/assets/devtools/{chunk.ovzUqJjU.js → chunk.CdkqxSCz.js} +1 -1
  50. package/assets/devtools/chunk.CdkqxSCz.js.br +0 -0
  51. package/assets/devtools/chunk.CdkqxSCz.js.gz +0 -0
  52. package/assets/devtools/{chunk.B6bX0XQI.js → chunk.CgxElNrD.js} +1 -1
  53. package/assets/devtools/chunk.CgxElNrD.js.br +2 -0
  54. package/assets/devtools/chunk.CgxElNrD.js.gz +0 -0
  55. package/assets/devtools/{chunk.C_WwXcGr.js → chunk.CoH_IYrv.js} +1 -1
  56. package/assets/devtools/chunk.CoH_IYrv.js.br +0 -0
  57. package/assets/devtools/chunk.CoH_IYrv.js.gz +0 -0
  58. package/assets/devtools/chunk.D0butndH.js +1 -0
  59. package/assets/devtools/chunk.D0butndH.js.br +0 -0
  60. package/assets/devtools/chunk.D0butndH.js.gz +0 -0
  61. package/assets/devtools/{chunk.-1T4AUjH.js → chunk.DGI4-Nej.js} +1 -1
  62. package/assets/devtools/chunk.DGI4-Nej.js.br +0 -0
  63. package/assets/devtools/chunk.DGI4-Nej.js.gz +0 -0
  64. package/assets/devtools/{chunk.CQFdZ3hg.js → chunk.DOiJ5r3P.js} +1 -1
  65. package/assets/devtools/chunk.DOiJ5r3P.js.br +0 -0
  66. package/assets/devtools/chunk.DOiJ5r3P.js.gz +0 -0
  67. package/assets/devtools/{chunk.B1BX4OlP.js → chunk.DZFiDTv5.js} +1 -1
  68. package/assets/devtools/chunk.DZFiDTv5.js.br +0 -0
  69. package/assets/devtools/chunk.DZFiDTv5.js.gz +0 -0
  70. package/assets/devtools/{chunk.MMyHzoxt.js → chunk.Dbm9E6HI.js} +1 -1
  71. package/assets/devtools/chunk.Dbm9E6HI.js.br +0 -0
  72. package/assets/devtools/chunk.Dbm9E6HI.js.gz +0 -0
  73. package/assets/devtools/{chunk.Chph6jJx.js → chunk.DdgmE5g8.js} +1 -1
  74. package/assets/devtools/chunk.DdgmE5g8.js.br +0 -0
  75. package/assets/devtools/chunk.DdgmE5g8.js.gz +0 -0
  76. package/assets/devtools/{chunk.uK7gG_4K.js → chunk.DeN6s4_I.js} +1 -1
  77. package/assets/devtools/chunk.DeN6s4_I.js.br +0 -0
  78. package/assets/devtools/chunk.DeN6s4_I.js.gz +0 -0
  79. package/assets/devtools/{chunk.B_arS3yh.js → chunk.DpW9QoyF.js} +1 -1
  80. package/assets/devtools/chunk.DpW9QoyF.js.br +0 -0
  81. package/assets/devtools/chunk.DpW9QoyF.js.gz +0 -0
  82. package/assets/devtools/{chunk.1JiUrdgo.js → chunk.PcVF_qXP.js} +1 -1
  83. package/assets/devtools/chunk.PcVF_qXP.js.br +0 -0
  84. package/assets/devtools/chunk.PcVF_qXP.js.gz +0 -0
  85. package/assets/devtools/{chunk.Yc53VNO7.js → chunk.Q6_b9IUt.js} +1 -1
  86. package/assets/devtools/chunk.Q6_b9IUt.js.br +0 -0
  87. package/assets/devtools/chunk.Q6_b9IUt.js.gz +0 -0
  88. package/assets/devtools/{chunk.BZZjyIAY.js → chunk.YqHRwxdc.js} +1 -1
  89. package/assets/devtools/chunk.YqHRwxdc.js.br +0 -0
  90. package/assets/devtools/chunk.YqHRwxdc.js.gz +0 -0
  91. package/assets/devtools/{chunk.NIj8k4HU.js → chunk._D_TfCmJ.js} +1 -1
  92. package/assets/devtools/chunk._D_TfCmJ.js.br +0 -0
  93. package/assets/devtools/chunk._D_TfCmJ.js.gz +0 -0
  94. package/assets/devtools/{chunk.42CgRmmy.js → chunk.l66LreXu.js} +1 -1
  95. package/assets/devtools/chunk.l66LreXu.js.br +0 -0
  96. package/assets/devtools/chunk.l66LreXu.js.gz +0 -0
  97. package/assets/devtools/{chunk.X37zJjnv.js → chunk.lvb4PIb4.js} +1 -1
  98. package/assets/devtools/chunk.lvb4PIb4.js.br +0 -0
  99. package/assets/devtools/chunk.lvb4PIb4.js.gz +0 -0
  100. package/assets/devtools/{chunk.xP6lcP0O.js → chunk.rvqQkpV6.js} +1 -1
  101. package/assets/devtools/chunk.rvqQkpV6.js.br +0 -0
  102. package/assets/devtools/chunk.rvqQkpV6.js.gz +0 -0
  103. package/assets/devtools/{chunk.WpBi-27p.js → chunk.s1U1MhH3.js} +1 -1
  104. package/assets/devtools/chunk.s1U1MhH3.js.br +0 -0
  105. package/assets/devtools/chunk.s1U1MhH3.js.gz +0 -0
  106. package/assets/devtools/{chunk.CXR8SXil.js → chunk.wg5XuK3_.js} +1 -1
  107. package/assets/devtools/chunk.wg5XuK3_.js.br +0 -0
  108. package/assets/devtools/chunk.wg5XuK3_.js.gz +0 -0
  109. package/assets/devtools/db.html +2 -17
  110. package/assets/devtools/db.html.br +0 -0
  111. package/assets/devtools/db.html.gz +0 -0
  112. package/assets/devtools/entry.Cgjh-xX-.js +79 -0
  113. package/assets/devtools/entry.Cgjh-xX-.js.br +0 -0
  114. package/assets/devtools/entry.Cgjh-xX-.js.gz +0 -0
  115. package/assets/devtools/env.html +2 -18
  116. package/assets/devtools/env.html.br +0 -0
  117. package/assets/devtools/env.html.gz +0 -0
  118. package/assets/devtools/graph.html +2 -20
  119. package/assets/devtools/graph.html.br +0 -0
  120. package/assets/devtools/graph.html.gz +0 -0
  121. package/assets/devtools/index.html +2 -14
  122. package/assets/devtools/index.html.br +0 -0
  123. package/assets/devtools/index.html.gz +0 -0
  124. package/assets/devtools/logs.html +3 -22
  125. package/assets/devtools/logs.html.br +0 -0
  126. package/assets/devtools/logs.html.gz +0 -0
  127. package/assets/devtools/queues.html +2 -13
  128. package/assets/devtools/queues.html.br +0 -0
  129. package/assets/devtools/queues.html.gz +0 -0
  130. package/assets/devtools/topics.html +2 -21
  131. package/assets/devtools/topics.html.br +0 -0
  132. package/assets/devtools/topics.html.gz +0 -0
  133. package/dist/index.d.ts +18 -18
  134. package/dist/index.js +1 -5
  135. package/dist/index.js.map +1 -1
  136. package/package.json +10 -10
  137. package/src/api/repositories/LogRepository.ts +4 -5
  138. package/assets/devtools/chunk.-1T4AUjH.js.br +0 -0
  139. package/assets/devtools/chunk.-1T4AUjH.js.gz +0 -0
  140. package/assets/devtools/chunk.01h1zGjv.js.br +0 -0
  141. package/assets/devtools/chunk.01h1zGjv.js.gz +0 -0
  142. package/assets/devtools/chunk.1JiUrdgo.js.br +0 -1
  143. package/assets/devtools/chunk.1JiUrdgo.js.gz +0 -0
  144. package/assets/devtools/chunk.42CgRmmy.js.br +0 -0
  145. package/assets/devtools/chunk.42CgRmmy.js.gz +0 -0
  146. package/assets/devtools/chunk.6zj3eUIy.js.br +0 -0
  147. package/assets/devtools/chunk.6zj3eUIy.js.gz +0 -0
  148. package/assets/devtools/chunk.B1BX4OlP.js.br +0 -0
  149. package/assets/devtools/chunk.B1BX4OlP.js.gz +0 -0
  150. package/assets/devtools/chunk.B6bX0XQI.js.br +0 -0
  151. package/assets/devtools/chunk.B6bX0XQI.js.gz +0 -0
  152. package/assets/devtools/chunk.BD3_boSH.js.br +0 -0
  153. package/assets/devtools/chunk.BD3_boSH.js.gz +0 -0
  154. package/assets/devtools/chunk.BZZjyIAY.js.br +0 -0
  155. package/assets/devtools/chunk.BZZjyIAY.js.gz +0 -0
  156. package/assets/devtools/chunk.B_arS3yh.js.br +0 -0
  157. package/assets/devtools/chunk.B_arS3yh.js.gz +0 -0
  158. package/assets/devtools/chunk.CC4zyxCR.js +0 -1
  159. package/assets/devtools/chunk.CC4zyxCR.js.br +0 -0
  160. package/assets/devtools/chunk.CC4zyxCR.js.gz +0 -0
  161. package/assets/devtools/chunk.CQFdZ3hg.js.br +0 -0
  162. package/assets/devtools/chunk.CQFdZ3hg.js.gz +0 -0
  163. package/assets/devtools/chunk.CXR8SXil.js.br +0 -0
  164. package/assets/devtools/chunk.CXR8SXil.js.gz +0 -0
  165. package/assets/devtools/chunk.C_WwXcGr.js.br +0 -0
  166. package/assets/devtools/chunk.C_WwXcGr.js.gz +0 -0
  167. package/assets/devtools/chunk.Chph6jJx.js.br +0 -0
  168. package/assets/devtools/chunk.Chph6jJx.js.gz +0 -0
  169. package/assets/devtools/chunk.D8mKET3e.js.br +0 -0
  170. package/assets/devtools/chunk.D8mKET3e.js.gz +0 -0
  171. package/assets/devtools/chunk.DP_hRYka.js +0 -1
  172. package/assets/devtools/chunk.DP_hRYka.js.br +0 -0
  173. package/assets/devtools/chunk.DP_hRYka.js.gz +0 -0
  174. package/assets/devtools/chunk.D_B99PWK.js.br +0 -0
  175. package/assets/devtools/chunk.D_B99PWK.js.gz +0 -0
  176. package/assets/devtools/chunk.Dwq9t2Dl.js +0 -1
  177. package/assets/devtools/chunk.Dwq9t2Dl.js.br +0 -0
  178. package/assets/devtools/chunk.Dwq9t2Dl.js.gz +0 -0
  179. package/assets/devtools/chunk.DyNVihb8.js.br +0 -0
  180. package/assets/devtools/chunk.DyNVihb8.js.gz +0 -0
  181. package/assets/devtools/chunk.KNtbB1xL.js +0 -1
  182. package/assets/devtools/chunk.KNtbB1xL.js.br +0 -0
  183. package/assets/devtools/chunk.KNtbB1xL.js.gz +0 -0
  184. package/assets/devtools/chunk.MMyHzoxt.js.br +0 -0
  185. package/assets/devtools/chunk.MMyHzoxt.js.gz +0 -0
  186. package/assets/devtools/chunk.NIj8k4HU.js.br +0 -0
  187. package/assets/devtools/chunk.NIj8k4HU.js.gz +0 -0
  188. package/assets/devtools/chunk.UjSU-RcH.js.br +0 -0
  189. package/assets/devtools/chunk.UjSU-RcH.js.gz +0 -0
  190. package/assets/devtools/chunk.Vm7uQYEE.js.br +0 -0
  191. package/assets/devtools/chunk.Vm7uQYEE.js.gz +0 -0
  192. package/assets/devtools/chunk.WpBi-27p.js.br +0 -0
  193. package/assets/devtools/chunk.WpBi-27p.js.gz +0 -0
  194. package/assets/devtools/chunk.X37zJjnv.js.br +0 -0
  195. package/assets/devtools/chunk.X37zJjnv.js.gz +0 -0
  196. package/assets/devtools/chunk.Yc53VNO7.js.br +0 -0
  197. package/assets/devtools/chunk.Yc53VNO7.js.gz +0 -0
  198. package/assets/devtools/chunk.jP0GrcaU.js.br +0 -0
  199. package/assets/devtools/chunk.jP0GrcaU.js.gz +0 -0
  200. package/assets/devtools/chunk.ovzUqJjU.js.br +0 -0
  201. package/assets/devtools/chunk.ovzUqJjU.js.gz +0 -0
  202. package/assets/devtools/chunk.uK7gG_4K.js.br +0 -0
  203. package/assets/devtools/chunk.uK7gG_4K.js.gz +0 -0
  204. package/assets/devtools/chunk.xP6lcP0O.js.br +0 -0
  205. package/assets/devtools/chunk.xP6lcP0O.js.gz +0 -0
  206. package/assets/devtools/chunk.yhAz0qwe.js +0 -1
  207. package/assets/devtools/chunk.yhAz0qwe.js.br +0 -0
  208. package/assets/devtools/chunk.yhAz0qwe.js.gz +0 -0
  209. package/assets/devtools/entry.BdraBs_7.js +0 -79
  210. package/assets/devtools/entry.BdraBs_7.js.br +0 -0
  211. package/assets/devtools/entry.BdraBs_7.js.gz +0 -0
package/dist/index.js CHANGED
@@ -316,11 +316,7 @@ var DevToolsDatabaseProvider = class extends NodeSqliteProvider {
316
316
 
317
317
  //#endregion
318
318
  //#region src/api/repositories/LogRepository.ts
319
- var LogRepository = class extends Repository {
320
- constructor() {
321
- super(logs, DevToolsDatabaseProvider);
322
- }
323
- };
319
+ var LogRepository = class extends Repository.of(logs, DevToolsDatabaseProvider) {};
324
320
 
325
321
  //#endregion
326
322
  //#region src/api/schemas/DevActionMetadata.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/api/entities/logs.ts","../src/api/providers/DevToolsMetadataProvider.ts","../src/api/providers/DevToolsDatabaseProvider.ts","../src/api/repositories/LogRepository.ts","../src/api/schemas/DevActionMetadata.ts","../src/api/schemas/DevAtomMetadata.ts","../src/api/schemas/DevBucketMetadata.ts","../src/api/schemas/DevCacheMetadata.ts","../src/api/schemas/DevCommandMetadata.ts","../src/api/schemas/DevEntityMetadata.ts","../src/api/schemas/DevEnvMetadata.ts","../src/api/schemas/DevModuleMetadata.ts","../src/api/schemas/DevPageMetadata.ts","../src/api/schemas/DevProviderMetadata.ts","../src/api/schemas/DevQueueMetadata.ts","../src/api/schemas/DevRealmMetadata.ts","../src/api/schemas/DevRouteMetadata.ts","../src/api/schemas/DevSchedulerMetadata.ts","../src/api/schemas/DevTopicMetadata.ts","../src/api/schemas/DevMetadata.ts","../src/api/DevToolsProvider.ts","../src/index.ts"],"sourcesContent":["import { type Static, t } from \"alepha\";\nimport { $entity, pg } from \"alepha/orm\";\n\nexport const logs = $entity({\n name: \"logs\",\n schema: t.object({\n id: pg.primaryKey(),\n level: t.enum([\"TRACE\", \"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: t.text({\n size: \"rich\",\n }),\n service: t.text(),\n module: t.text(),\n context: t.optional(t.text()),\n app: t.optional(t.text()),\n data: t.optional(t.json()),\n timestamp: t.integer(),\n }),\n});\n\nexport type DevLogEntry = Static<typeof logs.schema>;\n","import { $inject, Alepha, type TObject, type TSchema, t } from \"alepha\";\nimport { $bucket } from \"alepha/bucket\";\nimport { $cache } from \"alepha/cache\";\nimport { $command } from \"alepha/command\";\nimport { $logger } from \"alepha/logger\";\nimport {\n PG_CREATED_AT,\n PG_DEFAULT,\n PG_DELETED_AT,\n PG_IDENTITY,\n PG_PRIMARY_KEY,\n PG_REF,\n PG_SERIAL,\n PG_UPDATED_AT,\n PG_VERSION,\n RepositoryProvider,\n} from \"alepha/orm\";\nimport { $queue } from \"alepha/queue\";\nimport { $scheduler } from \"alepha/scheduler\";\nimport { $issuer } from \"alepha/security\";\nimport { $action } from \"alepha/server\";\nimport { $topic } from \"alepha/topic\";\nimport type { DevActionMetadata } from \"../schemas/DevActionMetadata.ts\";\nimport type { DevAtomMetadata } from \"../schemas/DevAtomMetadata.ts\";\nimport type { DevBucketMetadata } from \"../schemas/DevBucketMetadata.ts\";\nimport type { DevCacheMetadata } from \"../schemas/DevCacheMetadata.ts\";\nimport type { DevCommandMetadata } from \"../schemas/DevCommandMetadata.ts\";\nimport type {\n DevEntityColumn,\n DevEntityConstraint,\n DevEntityForeignKey,\n DevEntityIndex,\n DevEntityMetadata,\n} from \"../schemas/DevEntityMetadata.ts\";\nimport type { DevEnvMetadata } from \"../schemas/DevEnvMetadata.ts\";\nimport type { DevMetadata } from \"../schemas/DevMetadata.ts\";\nimport type { DevModuleMetadata } from \"../schemas/DevModuleMetadata.ts\";\nimport type { DevPageMetadata } from \"../schemas/DevPageMetadata.ts\";\nimport type { DevProviderMetadata } from \"../schemas/DevProviderMetadata.ts\";\nimport type { DevQueueMetadata } from \"../schemas/DevQueueMetadata.ts\";\nimport type { DevRealmMetadata } from \"../schemas/DevRealmMetadata.ts\";\nimport type { DevRouteMetadata } from \"../schemas/DevRouteMetadata.ts\";\nimport type { DevSchedulerMetadata } from \"../schemas/DevSchedulerMetadata.ts\";\nimport type { DevTopicMetadata } from \"../schemas/DevTopicMetadata.ts\";\n\nexport class DevToolsMetadataProvider {\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n\n public getActions(): DevActionMetadata[] {\n const actionPrimitives = this.alepha.primitives($action);\n\n return actionPrimitives.map((action) => {\n const schema = action.schema;\n const options = action.options as any; // Allow accessing augmented properties\n\n return {\n name: action.name,\n group: action.group,\n method: action.method,\n path: action.path,\n prefix: action.prefix,\n fullPath: action.route.path,\n description: action.options.description,\n summary: options.summary,\n disabled: action.options.disabled,\n secure: options.secure,\n hide: options.hide,\n body: schema?.body,\n params: schema?.params,\n query: schema?.query,\n response: schema?.response,\n bodyContentType: action.getBodyContentType(),\n };\n });\n }\n\n public getQueues(): DevQueueMetadata[] {\n const queuePrimitives = this.alepha.primitives($queue);\n\n return queuePrimitives.map((queue) => ({\n name: queue.name,\n description: queue.options.description,\n schema: queue.options.schema,\n provider: this.getProviderName(queue.options.provider),\n }));\n }\n\n public getSchedulers(): DevSchedulerMetadata[] {\n const schedulerPrimitives = this.alepha.primitives($scheduler);\n\n return schedulerPrimitives.map((scheduler) => ({\n name: scheduler.name,\n description: scheduler.options.description,\n cron: scheduler.options.cron,\n interval: scheduler.options.interval,\n lock: scheduler.options.lock,\n }));\n }\n\n public getTopics(): DevTopicMetadata[] {\n const topicPrimitives = this.alepha.primitives($topic);\n\n return topicPrimitives.map((topic) => ({\n name: topic.name,\n description: topic.options.description,\n schema: topic.options.schema,\n provider: this.getProviderName(topic.options.provider),\n }));\n }\n\n public getBuckets(): DevBucketMetadata[] {\n const bucketPrimitives = this.alepha.primitives($bucket);\n\n return bucketPrimitives.map((bucket) => ({\n name: bucket.name,\n description: bucket.options.description,\n mimeTypes: bucket.options.mimeTypes,\n maxSize: bucket.options.maxSize,\n provider: this.getProviderName(bucket.options.provider),\n }));\n }\n\n public getRealms(): DevRealmMetadata[] {\n const realmPrimitives = this.alepha.primitives($issuer);\n\n return realmPrimitives.map((realm) => ({\n name: realm.name,\n description: realm.options.description,\n roles: realm.options.roles,\n type: \"secret\" in realm.options ? \"internal\" : \"external\",\n settings: {\n accessTokenExpiration: realm.options.settings?.accessToken?.expiration,\n refreshTokenExpiration:\n realm.options.settings?.refreshToken?.expiration,\n hasOnCreateSession: !!realm.options.settings?.onCreateSession,\n hasOnRefreshSession: !!realm.options.settings?.onRefreshSession,\n hasOnDeleteSession: !!realm.options.settings?.onDeleteSession,\n },\n }));\n }\n\n public getCaches(): DevCacheMetadata[] {\n const cachePrimitives = this.alepha.primitives($cache);\n\n return cachePrimitives.map((cache) => ({\n name: cache.container,\n ttl: cache.options.ttl,\n disabled: cache.options.disabled,\n provider: this.getProviderName(cache.options.provider),\n }));\n }\n\n public getPages(): DevPageMetadata[] {\n // const pagePrimitives = this.alepha.primitives($page);\n //\n // return pagePrimitives.map((page) => ({\n // name: page.name,\n // description: page.options.description,\n // path: page.options.path,\n // params: page.options.schema?.params,\n // query: page.options.schema?.query,\n // hasComponent: !!page.options.component,\n // hasLazy: !!page.options.lazy,\n // hasResolve: !!page.options.resolve,\n // hasChildren: !!page.options.children,\n // hasParent: !!page.options.parent,\n // hasErrorHandler: !!page.options.errorHandler,\n // static:\n // typeof page.options.static === \"boolean\"\n // ? page.options.static\n // : !!page.options.static,\n // cache: page.options.cache,\n // client: page.options.client,\n // animation: page.options.animation,\n // }));\n\n return [];\n }\n\n public getProviders(): DevProviderMetadata[] {\n const graph = this.alepha.graph();\n\n return Object.entries(graph).map(([name, info]) => ({\n name,\n module: info.module ?? name,\n dependencies: info.from,\n aliases: info.as,\n }));\n }\n\n public getModules(): DevModuleMetadata[] {\n const graph = this.alepha.graph();\n const moduleMap = new Map<string, Set<string>>();\n\n // Group providers by module\n for (const [providerName, info] of Object.entries(graph)) {\n if (info.module) {\n if (!moduleMap.has(info.module)) {\n moduleMap.set(info.module, new Set());\n }\n moduleMap.get(info.module)!.add(providerName);\n }\n }\n\n return Array.from(moduleMap.entries()).map(([name, providers]) => ({\n name,\n providers: Array.from(providers),\n }));\n }\n\n public getEntities(): DevEntityMetadata[] {\n try {\n const repositoryProvider = this.alepha.inject(RepositoryProvider);\n const repositories = repositoryProvider.getRepositories();\n\n return repositories.map((repo) => {\n const entity = repo.entity;\n const schema = entity.schema as TObject;\n const options = entity.options;\n\n // Extract columns from schema\n const columns: DevEntityColumn[] = Object.entries(\n schema.properties,\n ).map(([name, field]) => {\n const fieldSchema = field as TSchema & Record<symbol, any>;\n const refData = fieldSchema[PG_REF];\n\n return {\n name,\n type: this.getColumnType(fieldSchema),\n nullable: this.isNullable(fieldSchema),\n primaryKey: PG_PRIMARY_KEY in fieldSchema,\n identity: PG_IDENTITY in fieldSchema || PG_SERIAL in fieldSchema,\n createdAt: PG_CREATED_AT in fieldSchema,\n updatedAt: PG_UPDATED_AT in fieldSchema,\n deletedAt: PG_DELETED_AT in fieldSchema,\n version: PG_VERSION in fieldSchema,\n hasDefault: PG_DEFAULT in fieldSchema,\n ref: refData\n ? {\n entity: refData.ref?.()?.entity?.name ?? \"unknown\",\n column: refData.ref?.()?.name ?? \"unknown\",\n onUpdate: refData.actions?.onUpdate,\n onDelete: refData.actions?.onDelete,\n }\n : undefined,\n };\n });\n\n // Extract indexes\n const indexes: DevEntityIndex[] = (options.indexes ?? []).map(\n (idx: any) => {\n if (typeof idx === \"string\") {\n return { columns: [idx], unique: false };\n }\n return {\n name: idx.name,\n columns: idx.column ? [idx.column] : (idx.columns ?? []),\n unique: idx.unique ?? false,\n };\n },\n );\n\n // Extract foreign keys\n const foreignKeys: DevEntityForeignKey[] = (\n options.foreignKeys ?? []\n ).map((fk: any) => ({\n name: fk.name,\n columns: fk.columns.map(String),\n foreignEntity: fk.foreignColumns?.[0]?.()?.entity?.name ?? \"unknown\",\n foreignColumns: fk.foreignColumns?.map(\n (fc: any) => fc?.()?.name ?? \"unknown\",\n ),\n }));\n\n // Extract constraints\n const constraints: DevEntityConstraint[] = (\n options.constraints ?? []\n ).map((c: any) => ({\n name: c.name,\n columns: c.columns.map(String),\n unique: !!c.unique,\n hasCheck: !!c.check,\n }));\n\n return {\n name: entity.name,\n provider: repo.provider.constructor.name,\n columns,\n indexes,\n foreignKeys,\n constraints,\n };\n });\n } catch {\n // RepositoryProvider not available (ORM not used)\n return [];\n }\n }\n\n protected getColumnType(field: TSchema): string {\n // Handle optional/nullable wrappers (unions with null)\n if (t.schema.isUnion(field) && (field as any).anyOf) {\n const types = (field as any).anyOf as TSchema[];\n const nonNull = types.find((type) => !t.schema.isNull(type));\n if (nonNull) {\n return this.getColumnType(nonNull);\n }\n }\n\n const f = field as any;\n\n // Check for enum (t.enum wraps in Unsafe with type=string and enum array)\n if (\n t.schema.isUnsafe(field) &&\n f.type === \"string\" &&\n Array.isArray(f.enum)\n ) {\n return \"enum\";\n }\n\n // Use TypeBox's type guards\n if (t.schema.isString(field)) {\n if (f.enum) return \"enum\";\n if (f.format === \"uuid\") return \"uuid\";\n if (f.format === \"date-time\") return \"datetime\";\n if (f.format === \"date\") return \"date\";\n if (f.format === \"bigint\") return \"bigint\";\n return \"text\";\n }\n if (t.schema.isInteger(field)) return \"integer\";\n if (t.schema.isNumber(field)) return \"number\";\n if (t.schema.isBoolean(field)) return \"boolean\";\n if (t.schema.isArray(field)) return \"array\";\n if (t.schema.isObject(field)) return \"json\";\n if (t.schema.isLiteral(field)) return \"literal\";\n\n return \"unknown\";\n }\n\n protected isNullable(field: TSchema): boolean {\n if (t.schema.isUnion(field) && (field as any).anyOf) {\n const types = (field as any).anyOf as TSchema[];\n return types.some((type) => t.schema.isNull(type));\n }\n return false;\n }\n\n public getCommands(): DevCommandMetadata[] {\n const commandPrimitives = this.alepha.primitives($command);\n\n return commandPrimitives\n .filter((cmd) => !cmd.options.hide)\n .map((command) => ({\n name: command.name,\n description: command.options.description,\n hidden: command.options.hide,\n }));\n }\n\n public getRoutes(): DevRouteMetadata[] {\n // Routes are the base primitive - actions and pages are routes\n // Showing them separately would be redundant with actions\n return [];\n }\n\n public getEnvs(): DevEnvMetadata[] {\n const envSchemas = this.alepha.getEnvSchemas();\n\n return envSchemas.map((item, index) => ({\n propertyKey: `env_${index}`,\n schema: item.schema,\n values: item.values,\n serviceName: undefined,\n }));\n }\n\n public getAtoms(): DevAtomMetadata[] {\n const atomsWithValues = this.alepha.store.getAtoms(false);\n\n return atomsWithValues.map(({ atom, value }) => ({\n name: atom.key,\n description: atom.options.description,\n schema: atom.schema,\n defaultValue: atom.options.default,\n currentValue: value,\n }));\n }\n\n public getMetadata(): DevMetadata {\n return {\n actions: this.getActions(),\n queues: this.getQueues(),\n schedulers: this.getSchedulers(),\n topics: this.getTopics(),\n buckets: this.getBuckets(),\n realms: this.getRealms(),\n caches: this.getCaches(),\n pages: this.getPages(),\n providers: this.getProviders(),\n modules: this.getModules(),\n entities: this.getEntities(),\n commands: this.getCommands(),\n routes: this.getRoutes(),\n envs: this.getEnvs(),\n atoms: this.getAtoms(),\n };\n }\n\n // -------------------------------------------------------------------------------------------------------------------\n\n protected getProviderName(provider?: \"memory\" | any): string {\n if (!provider) {\n return \"default\";\n }\n if (provider === \"memory\") {\n return \"memory\";\n }\n return provider.name || \"custom\";\n }\n}\n","import { NodeSqliteProvider } from \"alepha/orm\";\n\nexport class DevToolsDatabaseProvider extends NodeSqliteProvider {\n public get name() {\n return \"\";\n }\n\n protected readonly options = {\n path: \":memory:\",\n };\n\n public override async migrate(): Promise<void> {\n this.sqlite.exec(`\n CREATE TABLE IF NOT EXISTS logs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n level TEXT NOT NULL,\n message TEXT,\n service TEXT,\n module TEXT,\n context TEXT,\n app TEXT,\n data TEXT,\n timestamp INTEGER NOT NULL\n )\n `);\n }\n}\n","import { Repository } from \"alepha/orm\";\nimport { logs } from \"../entities/logs.ts\";\nimport { DevToolsDatabaseProvider } from \"../providers/DevToolsDatabaseProvider.ts\";\n\nexport class LogRepository extends Repository<typeof logs.schema> {\n constructor() {\n super(logs, DevToolsDatabaseProvider);\n }\n}\n","import { type Static, t } from \"alepha\";\n\nexport const devActionMetadataSchema = t.object({\n name: t.text(),\n group: t.text(),\n method: t.text(),\n path: t.text(),\n prefix: t.text(),\n fullPath: t.text(),\n description: t.optional(t.text()),\n summary: t.optional(t.text()),\n disabled: t.optional(t.boolean()),\n secure: t.optional(t.boolean()),\n hide: t.optional(t.boolean()),\n body: t.optional(t.any()),\n params: t.optional(t.any()),\n query: t.optional(t.any()),\n response: t.optional(t.any()),\n bodyContentType: t.optional(t.text()),\n});\n\nexport type DevActionMetadata = Static<typeof devActionMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devAtomMetadataSchema = t.object({\n /**\n * The unique name/key of the atom\n */\n name: t.text(),\n /**\n * Optional description of the atom\n */\n description: t.optional(t.text()),\n /**\n * The schema for the atom value (TypeBox/JSON Schema)\n */\n schema: t.any(),\n /**\n * The default value defined for the atom\n */\n defaultValue: t.optional(t.any()),\n /**\n * The current value of the atom\n */\n currentValue: t.optional(t.any()),\n});\n\nexport type DevAtomMetadata = Static<typeof devAtomMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devBucketMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n mimeTypes: t.optional(t.array(t.text())),\n maxSize: t.optional(t.number()),\n provider: t.text(),\n});\n\nexport type DevBucketMetadata = Static<typeof devBucketMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devCacheMetadataSchema = t.object({\n name: t.text(),\n ttl: t.optional(t.any()),\n disabled: t.optional(t.boolean()),\n provider: t.text(),\n});\n\nexport type DevCacheMetadata = Static<typeof devCacheMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devCommandMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n hidden: t.optional(t.boolean()),\n});\n\nexport type DevCommandMetadata = Static<typeof devCommandMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devEntityColumnSchema = t.object({\n name: t.text(),\n type: t.text(),\n nullable: t.boolean(),\n primaryKey: t.boolean(),\n identity: t.boolean(),\n createdAt: t.boolean(),\n updatedAt: t.boolean(),\n deletedAt: t.boolean(),\n version: t.boolean(),\n hasDefault: t.boolean(),\n ref: t.optional(\n t.object({\n entity: t.text(),\n column: t.text(),\n onUpdate: t.optional(t.text()),\n onDelete: t.optional(t.text()),\n }),\n ),\n});\n\nexport const devEntityIndexSchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n unique: t.boolean(),\n});\n\nexport const devEntityForeignKeySchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n foreignEntity: t.text(),\n foreignColumns: t.array(t.text()),\n});\n\nexport const devEntityConstraintSchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n unique: t.boolean(),\n hasCheck: t.boolean(),\n});\n\nexport const devEntityMetadataSchema = t.object({\n name: t.text(),\n provider: t.text(),\n columns: t.array(devEntityColumnSchema),\n indexes: t.array(devEntityIndexSchema),\n foreignKeys: t.array(devEntityForeignKeySchema),\n constraints: t.array(devEntityConstraintSchema),\n});\n\nexport type DevEntityColumn = Static<typeof devEntityColumnSchema>;\nexport type DevEntityIndex = Static<typeof devEntityIndexSchema>;\nexport type DevEntityForeignKey = Static<typeof devEntityForeignKeySchema>;\nexport type DevEntityConstraint = Static<typeof devEntityConstraintSchema>;\nexport type DevEntityMetadata = Static<typeof devEntityMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devEnvMetadataSchema = t.object({\n /**\n * The property name in the service where $env is defined\n */\n propertyKey: t.text(),\n /**\n * The schema for the environment variables (TypeBox/JSON Schema)\n */\n schema: t.any(),\n /**\n * The parsed values from the environment\n */\n values: t.record(t.text(), t.any()),\n /**\n * The service class name where this $env is defined\n */\n serviceName: t.optional(t.text()),\n});\n\nexport type DevEnvMetadata = Static<typeof devEnvMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devModuleMetadataSchema = t.object({\n name: t.text(),\n providers: t.array(t.text()),\n});\n\nexport type DevModuleMetadata = Static<typeof devModuleMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devPageMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n path: t.optional(t.text()),\n params: t.optional(t.any()),\n query: t.optional(t.any()),\n hasComponent: t.boolean(),\n hasLazy: t.boolean(),\n hasResolve: t.boolean(),\n hasChildren: t.boolean(),\n hasParent: t.boolean(),\n hasErrorHandler: t.boolean(),\n static: t.optional(t.boolean()),\n cache: t.optional(t.any()),\n client: t.optional(t.any()),\n animation: t.optional(t.any()),\n});\n\nexport type DevPageMetadata = Static<typeof devPageMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devProviderMetadataSchema = t.object({\n name: t.text(),\n module: t.optional(t.text()),\n dependencies: t.array(t.text()),\n aliases: t.optional(t.array(t.text())),\n});\n\nexport type DevProviderMetadata = Static<typeof devProviderMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devQueueMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n schema: t.optional(t.any()),\n provider: t.text(),\n});\n\nexport type DevQueueMetadata = Static<typeof devQueueMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devRealmMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n roles: t.optional(t.array(t.any())),\n type: t.enum([\"internal\", \"external\"]),\n settings: t.optional(\n t.object({\n accessTokenExpiration: t.optional(t.any()),\n refreshTokenExpiration: t.optional(t.any()),\n hasOnCreateSession: t.boolean(),\n hasOnRefreshSession: t.boolean(),\n hasOnDeleteSession: t.boolean(),\n }),\n ),\n});\n\nexport type DevRealmMetadata = Static<typeof devRealmMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devRouteMetadataSchema = t.object({\n method: t.text(),\n path: t.text(),\n});\n\nexport type DevRouteMetadata = Static<typeof devRouteMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devSchedulerMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n cron: t.optional(t.text()),\n interval: t.optional(t.any()),\n lock: t.optional(t.boolean()),\n});\n\nexport type DevSchedulerMetadata = Static<typeof devSchedulerMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devTopicMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n schema: t.optional(t.any()),\n provider: t.text(),\n});\n\nexport type DevTopicMetadata = Static<typeof devTopicMetadataSchema>;\n","import { type Static, t } from \"alepha\";\nimport { devActionMetadataSchema } from \"./DevActionMetadata.ts\";\nimport { devAtomMetadataSchema } from \"./DevAtomMetadata.ts\";\nimport { devBucketMetadataSchema } from \"./DevBucketMetadata.ts\";\nimport { devCacheMetadataSchema } from \"./DevCacheMetadata.ts\";\nimport { devCommandMetadataSchema } from \"./DevCommandMetadata.ts\";\nimport { devEntityMetadataSchema } from \"./DevEntityMetadata.ts\";\nimport { devEnvMetadataSchema } from \"./DevEnvMetadata.ts\";\nimport { devModuleMetadataSchema } from \"./DevModuleMetadata.ts\";\nimport { devPageMetadataSchema } from \"./DevPageMetadata.ts\";\nimport { devProviderMetadataSchema } from \"./DevProviderMetadata.ts\";\nimport { devQueueMetadataSchema } from \"./DevQueueMetadata.ts\";\nimport { devRealmMetadataSchema } from \"./DevRealmMetadata.ts\";\nimport { devRouteMetadataSchema } from \"./DevRouteMetadata.ts\";\nimport { devSchedulerMetadataSchema } from \"./DevSchedulerMetadata.ts\";\nimport { devTopicMetadataSchema } from \"./DevTopicMetadata.ts\";\n\nexport const devMetadataSchema = t.object({\n actions: t.array(devActionMetadataSchema),\n queues: t.array(devQueueMetadataSchema),\n schedulers: t.array(devSchedulerMetadataSchema),\n topics: t.array(devTopicMetadataSchema),\n buckets: t.array(devBucketMetadataSchema),\n realms: t.array(devRealmMetadataSchema),\n caches: t.array(devCacheMetadataSchema),\n pages: t.array(devPageMetadataSchema),\n providers: t.array(devProviderMetadataSchema),\n modules: t.array(devModuleMetadataSchema),\n entities: t.array(devEntityMetadataSchema),\n commands: t.array(devCommandMetadataSchema),\n routes: t.array(devRouteMetadataSchema),\n envs: t.array(devEnvMetadataSchema),\n atoms: t.array(devAtomMetadataSchema),\n});\n\nexport type DevMetadata = Static<typeof devMetadataSchema>;\n","import { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { $hook, $inject, Alepha, pageQuerySchema, t } from \"alepha\";\nimport { $batch } from \"alepha/batch\";\nimport { $logger, JsonFormatterProvider, type LogEntry } from \"alepha/logger\";\nimport { parseQueryString } from \"alepha/orm\";\nimport { $route, ServerProvider } from \"alepha/server\";\nimport { $serve } from \"alepha/server/static\";\nimport { type DevLogEntry, logs } from \"./entities/logs.ts\";\nimport { DevToolsMetadataProvider } from \"./providers/DevToolsMetadataProvider.ts\";\nimport { LogRepository } from \"./repositories/LogRepository.ts\";\nimport { devMetadataSchema } from \"./schemas/DevMetadata.ts\";\n\nexport class DevToolsProvider {\n protected readonly log = $logger();\n protected readonly alepha = $inject(Alepha);\n protected readonly serverProvider = $inject(ServerProvider);\n protected readonly jsonFormatter = $inject(JsonFormatterProvider);\n protected readonly logs = $inject(LogRepository);\n protected readonly devCollectorProvider = $inject(DevToolsMetadataProvider);\n\n protected readonly onStart = $hook({\n on: \"start\",\n handler: () => {\n this.log.info(\"Devtools OK\", {\n url: `${this.serverProvider.hostname}/devtools/`,\n });\n },\n });\n\n protected batchLogs = $batch({\n maxSize: 50,\n maxDuration: [10, \"seconds\"],\n schema: logs.insertSchema,\n handler: async (entries) => {\n await this.logs.createMany(entries);\n },\n });\n\n protected readonly onLog = $hook({\n on: \"log\",\n handler: async (ev: { message?: string; entry: LogEntry }) => {\n // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n // CAUTION: It's very easy to create an infinite loop here.\n // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n try {\n if (!this.alepha.isStarted()) {\n return;\n }\n\n ev.entry.message = ev.entry.message?.slice(0, 2000); // limit message size\n\n if (ev.entry.module === \"alepha.devtools\") {\n // skip devtools logs to avoid infinite loop\n return;\n }\n\n if (ev.entry.level === \"TRACE\" && ev.entry.module === \"alepha.batch\") {\n // skip batch trace logs to avoid infinite loop\n return;\n }\n\n if (this.alepha.isProduction() && ev.entry.level === \"TRACE\") {\n // skip trace logs in production\n return;\n }\n\n const entry = {\n ...ev.entry,\n data:\n ev.entry.data instanceof Error\n ? this.jsonFormatter.formatJsonError(ev.entry.data)\n : typeof ev.entry.data === \"object\" &&\n !Array.isArray(ev.entry.data)\n ? ev.entry.data\n : { data: ev.entry.data },\n };\n\n await this.batchLogs.push(entry as DevLogEntry);\n } catch (error) {\n // DO TO NOT WITH THE LOGGER HERE TO AVOID INFINITE LOOP\n console.error(error, ev);\n }\n },\n });\n\n protected readonly uiRoute = $serve({\n path: \"/devtools\",\n root: join(fileURLToPath(import.meta.url), \"../../../assets/devtools\"),\n historyApiFallback: true,\n });\n\n protected readonly metadataRoute = $route({\n method: \"GET\",\n path: \"/devtools/api/metadata\",\n silent: true,\n schema: {\n response: devMetadataSchema,\n },\n handler: () => {\n return this.devCollectorProvider.getMetadata();\n },\n });\n\n protected readonly logsRoute = $route({\n method: \"GET\",\n path: \"/devtools/api/logs\",\n silent: true,\n schema: {\n query: t.extend(pageQuerySchema, {\n search: t.optional(t.string()),\n }),\n response: t.page(logs.schema),\n },\n handler: ({ query }) => {\n query.sort ??= \"-timestamp\";\n return this.logs.paginate(\n query,\n query.search\n ? {\n where: parseQueryString(query.search),\n }\n : {},\n {\n count: true,\n },\n );\n },\n });\n\n protected readonly updateAtomRoute = $route({\n method: \"POST\",\n path: \"/devtools/api/atoms\",\n silent: true,\n schema: {\n body: t.object({\n name: t.text(),\n value: t.any(),\n }),\n response: t.object({\n success: t.boolean(),\n }),\n },\n handler: ({ body }) => {\n const atoms = this.alepha.store.getAtoms(false);\n const atomEntry = atoms.find((a) => a.atom.key === body.name);\n\n if (atomEntry) {\n this.alepha.store.set(atomEntry.atom, body.value);\n return { success: true };\n }\n\n return { success: false };\n },\n });\n}\n","import { $module } from \"alepha\";\nimport { DevToolsProvider } from \"./api/DevToolsProvider.ts\";\nimport { DevToolsDatabaseProvider } from \"./api/providers/DevToolsDatabaseProvider.ts\";\nimport { DevToolsMetadataProvider } from \"./api/providers/DevToolsMetadataProvider.ts\";\nimport { LogRepository } from \"./api/repositories/LogRepository.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./api/providers/DevToolsMetadataProvider.ts\";\nexport * from \"./api/schemas/DevActionMetadata.ts\";\nexport * from \"./api/schemas/DevBucketMetadata.ts\";\nexport * from \"./api/schemas/DevCacheMetadata.ts\";\nexport * from \"./api/schemas/DevCommandMetadata.ts\";\nexport * from \"./api/schemas/DevEntityMetadata.ts\";\nexport * from \"./api/schemas/DevMetadata.ts\";\nexport * from \"./api/schemas/DevModuleMetadata.ts\";\nexport * from \"./api/schemas/DevPageMetadata.ts\";\nexport * from \"./api/schemas/DevProviderMetadata.ts\";\nexport * from \"./api/schemas/DevQueueMetadata.ts\";\nexport * from \"./api/schemas/DevRealmMetadata.ts\";\nexport * from \"./api/schemas/DevRouteMetadata.ts\";\nexport * from \"./api/schemas/DevSchedulerMetadata.ts\";\nexport * from \"./api/schemas/DevTopicMetadata.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Developer tools module for monitoring and debugging Alepha applications.\n *\n * This module provides comprehensive data collection capabilities for tracking application behavior,\n * performance metrics, and debugging information in real-time.\n *\n * @see {@link DevToolsMetadataProvider}\n * @module alepha.devtools\n */\nexport const AlephaDevtools = $module({\n name: \"alepha.devtools\",\n primitives: [],\n services: [\n DevToolsMetadataProvider,\n DevToolsProvider,\n DevToolsDatabaseProvider,\n LogRepository,\n ],\n register: (alepha) => {\n alepha.with(DevToolsProvider);\n alepha.with(DevToolsDatabaseProvider);\n alepha.with(DevToolsMetadataProvider);\n alepha.store.push(\"alepha.build.assets\", \"@alepha/devtools\");\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/api/entities/logs.ts","../src/api/providers/DevToolsMetadataProvider.ts","../src/api/providers/DevToolsDatabaseProvider.ts","../src/api/repositories/LogRepository.ts","../src/api/schemas/DevActionMetadata.ts","../src/api/schemas/DevAtomMetadata.ts","../src/api/schemas/DevBucketMetadata.ts","../src/api/schemas/DevCacheMetadata.ts","../src/api/schemas/DevCommandMetadata.ts","../src/api/schemas/DevEntityMetadata.ts","../src/api/schemas/DevEnvMetadata.ts","../src/api/schemas/DevModuleMetadata.ts","../src/api/schemas/DevPageMetadata.ts","../src/api/schemas/DevProviderMetadata.ts","../src/api/schemas/DevQueueMetadata.ts","../src/api/schemas/DevRealmMetadata.ts","../src/api/schemas/DevRouteMetadata.ts","../src/api/schemas/DevSchedulerMetadata.ts","../src/api/schemas/DevTopicMetadata.ts","../src/api/schemas/DevMetadata.ts","../src/api/DevToolsProvider.ts","../src/index.ts"],"sourcesContent":["import { type Static, t } from \"alepha\";\nimport { $entity, pg } from \"alepha/orm\";\n\nexport const logs = $entity({\n name: \"logs\",\n schema: t.object({\n id: pg.primaryKey(),\n level: t.enum([\"TRACE\", \"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: t.text({\n size: \"rich\",\n }),\n service: t.text(),\n module: t.text(),\n context: t.optional(t.text()),\n app: t.optional(t.text()),\n data: t.optional(t.json()),\n timestamp: t.integer(),\n }),\n});\n\nexport type DevLogEntry = Static<typeof logs.schema>;\n","import { $inject, Alepha, type TObject, type TSchema, t } from \"alepha\";\nimport { $bucket } from \"alepha/bucket\";\nimport { $cache } from \"alepha/cache\";\nimport { $command } from \"alepha/command\";\nimport { $logger } from \"alepha/logger\";\nimport {\n PG_CREATED_AT,\n PG_DEFAULT,\n PG_DELETED_AT,\n PG_IDENTITY,\n PG_PRIMARY_KEY,\n PG_REF,\n PG_SERIAL,\n PG_UPDATED_AT,\n PG_VERSION,\n RepositoryProvider,\n} from \"alepha/orm\";\nimport { $queue } from \"alepha/queue\";\nimport { $scheduler } from \"alepha/scheduler\";\nimport { $issuer } from \"alepha/security\";\nimport { $action } from \"alepha/server\";\nimport { $topic } from \"alepha/topic\";\nimport type { DevActionMetadata } from \"../schemas/DevActionMetadata.ts\";\nimport type { DevAtomMetadata } from \"../schemas/DevAtomMetadata.ts\";\nimport type { DevBucketMetadata } from \"../schemas/DevBucketMetadata.ts\";\nimport type { DevCacheMetadata } from \"../schemas/DevCacheMetadata.ts\";\nimport type { DevCommandMetadata } from \"../schemas/DevCommandMetadata.ts\";\nimport type {\n DevEntityColumn,\n DevEntityConstraint,\n DevEntityForeignKey,\n DevEntityIndex,\n DevEntityMetadata,\n} from \"../schemas/DevEntityMetadata.ts\";\nimport type { DevEnvMetadata } from \"../schemas/DevEnvMetadata.ts\";\nimport type { DevMetadata } from \"../schemas/DevMetadata.ts\";\nimport type { DevModuleMetadata } from \"../schemas/DevModuleMetadata.ts\";\nimport type { DevPageMetadata } from \"../schemas/DevPageMetadata.ts\";\nimport type { DevProviderMetadata } from \"../schemas/DevProviderMetadata.ts\";\nimport type { DevQueueMetadata } from \"../schemas/DevQueueMetadata.ts\";\nimport type { DevRealmMetadata } from \"../schemas/DevRealmMetadata.ts\";\nimport type { DevRouteMetadata } from \"../schemas/DevRouteMetadata.ts\";\nimport type { DevSchedulerMetadata } from \"../schemas/DevSchedulerMetadata.ts\";\nimport type { DevTopicMetadata } from \"../schemas/DevTopicMetadata.ts\";\n\nexport class DevToolsMetadataProvider {\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n\n public getActions(): DevActionMetadata[] {\n const actionPrimitives = this.alepha.primitives($action);\n\n return actionPrimitives.map((action) => {\n const schema = action.schema;\n const options = action.options as any; // Allow accessing augmented properties\n\n return {\n name: action.name,\n group: action.group,\n method: action.method,\n path: action.path,\n prefix: action.prefix,\n fullPath: action.route.path,\n description: action.options.description,\n summary: options.summary,\n disabled: action.options.disabled,\n secure: options.secure,\n hide: options.hide,\n body: schema?.body,\n params: schema?.params,\n query: schema?.query,\n response: schema?.response,\n bodyContentType: action.getBodyContentType(),\n };\n });\n }\n\n public getQueues(): DevQueueMetadata[] {\n const queuePrimitives = this.alepha.primitives($queue);\n\n return queuePrimitives.map((queue) => ({\n name: queue.name,\n description: queue.options.description,\n schema: queue.options.schema,\n provider: this.getProviderName(queue.options.provider),\n }));\n }\n\n public getSchedulers(): DevSchedulerMetadata[] {\n const schedulerPrimitives = this.alepha.primitives($scheduler);\n\n return schedulerPrimitives.map((scheduler) => ({\n name: scheduler.name,\n description: scheduler.options.description,\n cron: scheduler.options.cron,\n interval: scheduler.options.interval,\n lock: scheduler.options.lock,\n }));\n }\n\n public getTopics(): DevTopicMetadata[] {\n const topicPrimitives = this.alepha.primitives($topic);\n\n return topicPrimitives.map((topic) => ({\n name: topic.name,\n description: topic.options.description,\n schema: topic.options.schema,\n provider: this.getProviderName(topic.options.provider),\n }));\n }\n\n public getBuckets(): DevBucketMetadata[] {\n const bucketPrimitives = this.alepha.primitives($bucket);\n\n return bucketPrimitives.map((bucket) => ({\n name: bucket.name,\n description: bucket.options.description,\n mimeTypes: bucket.options.mimeTypes,\n maxSize: bucket.options.maxSize,\n provider: this.getProviderName(bucket.options.provider),\n }));\n }\n\n public getRealms(): DevRealmMetadata[] {\n const realmPrimitives = this.alepha.primitives($issuer);\n\n return realmPrimitives.map((realm) => ({\n name: realm.name,\n description: realm.options.description,\n roles: realm.options.roles,\n type: \"secret\" in realm.options ? \"internal\" : \"external\",\n settings: {\n accessTokenExpiration: realm.options.settings?.accessToken?.expiration,\n refreshTokenExpiration:\n realm.options.settings?.refreshToken?.expiration,\n hasOnCreateSession: !!realm.options.settings?.onCreateSession,\n hasOnRefreshSession: !!realm.options.settings?.onRefreshSession,\n hasOnDeleteSession: !!realm.options.settings?.onDeleteSession,\n },\n }));\n }\n\n public getCaches(): DevCacheMetadata[] {\n const cachePrimitives = this.alepha.primitives($cache);\n\n return cachePrimitives.map((cache) => ({\n name: cache.container,\n ttl: cache.options.ttl,\n disabled: cache.options.disabled,\n provider: this.getProviderName(cache.options.provider),\n }));\n }\n\n public getPages(): DevPageMetadata[] {\n // const pagePrimitives = this.alepha.primitives($page);\n //\n // return pagePrimitives.map((page) => ({\n // name: page.name,\n // description: page.options.description,\n // path: page.options.path,\n // params: page.options.schema?.params,\n // query: page.options.schema?.query,\n // hasComponent: !!page.options.component,\n // hasLazy: !!page.options.lazy,\n // hasResolve: !!page.options.resolve,\n // hasChildren: !!page.options.children,\n // hasParent: !!page.options.parent,\n // hasErrorHandler: !!page.options.errorHandler,\n // static:\n // typeof page.options.static === \"boolean\"\n // ? page.options.static\n // : !!page.options.static,\n // cache: page.options.cache,\n // client: page.options.client,\n // animation: page.options.animation,\n // }));\n\n return [];\n }\n\n public getProviders(): DevProviderMetadata[] {\n const graph = this.alepha.graph();\n\n return Object.entries(graph).map(([name, info]) => ({\n name,\n module: info.module ?? name,\n dependencies: info.from,\n aliases: info.as,\n }));\n }\n\n public getModules(): DevModuleMetadata[] {\n const graph = this.alepha.graph();\n const moduleMap = new Map<string, Set<string>>();\n\n // Group providers by module\n for (const [providerName, info] of Object.entries(graph)) {\n if (info.module) {\n if (!moduleMap.has(info.module)) {\n moduleMap.set(info.module, new Set());\n }\n moduleMap.get(info.module)!.add(providerName);\n }\n }\n\n return Array.from(moduleMap.entries()).map(([name, providers]) => ({\n name,\n providers: Array.from(providers),\n }));\n }\n\n public getEntities(): DevEntityMetadata[] {\n try {\n const repositoryProvider = this.alepha.inject(RepositoryProvider);\n const repositories = repositoryProvider.getRepositories();\n\n return repositories.map((repo) => {\n const entity = repo.entity;\n const schema = entity.schema as TObject;\n const options = entity.options;\n\n // Extract columns from schema\n const columns: DevEntityColumn[] = Object.entries(\n schema.properties,\n ).map(([name, field]) => {\n const fieldSchema = field as TSchema & Record<symbol, any>;\n const refData = fieldSchema[PG_REF];\n\n return {\n name,\n type: this.getColumnType(fieldSchema),\n nullable: this.isNullable(fieldSchema),\n primaryKey: PG_PRIMARY_KEY in fieldSchema,\n identity: PG_IDENTITY in fieldSchema || PG_SERIAL in fieldSchema,\n createdAt: PG_CREATED_AT in fieldSchema,\n updatedAt: PG_UPDATED_AT in fieldSchema,\n deletedAt: PG_DELETED_AT in fieldSchema,\n version: PG_VERSION in fieldSchema,\n hasDefault: PG_DEFAULT in fieldSchema,\n ref: refData\n ? {\n entity: refData.ref?.()?.entity?.name ?? \"unknown\",\n column: refData.ref?.()?.name ?? \"unknown\",\n onUpdate: refData.actions?.onUpdate,\n onDelete: refData.actions?.onDelete,\n }\n : undefined,\n };\n });\n\n // Extract indexes\n const indexes: DevEntityIndex[] = (options.indexes ?? []).map(\n (idx: any) => {\n if (typeof idx === \"string\") {\n return { columns: [idx], unique: false };\n }\n return {\n name: idx.name,\n columns: idx.column ? [idx.column] : (idx.columns ?? []),\n unique: idx.unique ?? false,\n };\n },\n );\n\n // Extract foreign keys\n const foreignKeys: DevEntityForeignKey[] = (\n options.foreignKeys ?? []\n ).map((fk: any) => ({\n name: fk.name,\n columns: fk.columns.map(String),\n foreignEntity: fk.foreignColumns?.[0]?.()?.entity?.name ?? \"unknown\",\n foreignColumns: fk.foreignColumns?.map(\n (fc: any) => fc?.()?.name ?? \"unknown\",\n ),\n }));\n\n // Extract constraints\n const constraints: DevEntityConstraint[] = (\n options.constraints ?? []\n ).map((c: any) => ({\n name: c.name,\n columns: c.columns.map(String),\n unique: !!c.unique,\n hasCheck: !!c.check,\n }));\n\n return {\n name: entity.name,\n provider: repo.provider.constructor.name,\n columns,\n indexes,\n foreignKeys,\n constraints,\n };\n });\n } catch {\n // RepositoryProvider not available (ORM not used)\n return [];\n }\n }\n\n protected getColumnType(field: TSchema): string {\n // Handle optional/nullable wrappers (unions with null)\n if (t.schema.isUnion(field) && (field as any).anyOf) {\n const types = (field as any).anyOf as TSchema[];\n const nonNull = types.find((type) => !t.schema.isNull(type));\n if (nonNull) {\n return this.getColumnType(nonNull);\n }\n }\n\n const f = field as any;\n\n // Check for enum (t.enum wraps in Unsafe with type=string and enum array)\n if (\n t.schema.isUnsafe(field) &&\n f.type === \"string\" &&\n Array.isArray(f.enum)\n ) {\n return \"enum\";\n }\n\n // Use TypeBox's type guards\n if (t.schema.isString(field)) {\n if (f.enum) return \"enum\";\n if (f.format === \"uuid\") return \"uuid\";\n if (f.format === \"date-time\") return \"datetime\";\n if (f.format === \"date\") return \"date\";\n if (f.format === \"bigint\") return \"bigint\";\n return \"text\";\n }\n if (t.schema.isInteger(field)) return \"integer\";\n if (t.schema.isNumber(field)) return \"number\";\n if (t.schema.isBoolean(field)) return \"boolean\";\n if (t.schema.isArray(field)) return \"array\";\n if (t.schema.isObject(field)) return \"json\";\n if (t.schema.isLiteral(field)) return \"literal\";\n\n return \"unknown\";\n }\n\n protected isNullable(field: TSchema): boolean {\n if (t.schema.isUnion(field) && (field as any).anyOf) {\n const types = (field as any).anyOf as TSchema[];\n return types.some((type) => t.schema.isNull(type));\n }\n return false;\n }\n\n public getCommands(): DevCommandMetadata[] {\n const commandPrimitives = this.alepha.primitives($command);\n\n return commandPrimitives\n .filter((cmd) => !cmd.options.hide)\n .map((command) => ({\n name: command.name,\n description: command.options.description,\n hidden: command.options.hide,\n }));\n }\n\n public getRoutes(): DevRouteMetadata[] {\n // Routes are the base primitive - actions and pages are routes\n // Showing them separately would be redundant with actions\n return [];\n }\n\n public getEnvs(): DevEnvMetadata[] {\n const envSchemas = this.alepha.getEnvSchemas();\n\n return envSchemas.map((item, index) => ({\n propertyKey: `env_${index}`,\n schema: item.schema,\n values: item.values,\n serviceName: undefined,\n }));\n }\n\n public getAtoms(): DevAtomMetadata[] {\n const atomsWithValues = this.alepha.store.getAtoms(false);\n\n return atomsWithValues.map(({ atom, value }) => ({\n name: atom.key,\n description: atom.options.description,\n schema: atom.schema,\n defaultValue: atom.options.default,\n currentValue: value,\n }));\n }\n\n public getMetadata(): DevMetadata {\n return {\n actions: this.getActions(),\n queues: this.getQueues(),\n schedulers: this.getSchedulers(),\n topics: this.getTopics(),\n buckets: this.getBuckets(),\n realms: this.getRealms(),\n caches: this.getCaches(),\n pages: this.getPages(),\n providers: this.getProviders(),\n modules: this.getModules(),\n entities: this.getEntities(),\n commands: this.getCommands(),\n routes: this.getRoutes(),\n envs: this.getEnvs(),\n atoms: this.getAtoms(),\n };\n }\n\n // -------------------------------------------------------------------------------------------------------------------\n\n protected getProviderName(provider?: \"memory\" | any): string {\n if (!provider) {\n return \"default\";\n }\n if (provider === \"memory\") {\n return \"memory\";\n }\n return provider.name || \"custom\";\n }\n}\n","import { NodeSqliteProvider } from \"alepha/orm\";\n\nexport class DevToolsDatabaseProvider extends NodeSqliteProvider {\n public get name() {\n return \"\";\n }\n\n protected readonly options = {\n path: \":memory:\",\n };\n\n public override async migrate(): Promise<void> {\n this.sqlite.exec(`\n CREATE TABLE IF NOT EXISTS logs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n level TEXT NOT NULL,\n message TEXT,\n service TEXT,\n module TEXT,\n context TEXT,\n app TEXT,\n data TEXT,\n timestamp INTEGER NOT NULL\n )\n `);\n }\n}\n","import { Repository } from \"alepha/orm\";\nimport { logs } from \"../entities/logs.ts\";\nimport { DevToolsDatabaseProvider } from \"../providers/DevToolsDatabaseProvider.ts\";\n\nexport class LogRepository extends Repository.of(\n logs,\n DevToolsDatabaseProvider,\n) {}\n","import { type Static, t } from \"alepha\";\n\nexport const devActionMetadataSchema = t.object({\n name: t.text(),\n group: t.text(),\n method: t.text(),\n path: t.text(),\n prefix: t.text(),\n fullPath: t.text(),\n description: t.optional(t.text()),\n summary: t.optional(t.text()),\n disabled: t.optional(t.boolean()),\n secure: t.optional(t.boolean()),\n hide: t.optional(t.boolean()),\n body: t.optional(t.any()),\n params: t.optional(t.any()),\n query: t.optional(t.any()),\n response: t.optional(t.any()),\n bodyContentType: t.optional(t.text()),\n});\n\nexport type DevActionMetadata = Static<typeof devActionMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devAtomMetadataSchema = t.object({\n /**\n * The unique name/key of the atom\n */\n name: t.text(),\n /**\n * Optional description of the atom\n */\n description: t.optional(t.text()),\n /**\n * The schema for the atom value (TypeBox/JSON Schema)\n */\n schema: t.any(),\n /**\n * The default value defined for the atom\n */\n defaultValue: t.optional(t.any()),\n /**\n * The current value of the atom\n */\n currentValue: t.optional(t.any()),\n});\n\nexport type DevAtomMetadata = Static<typeof devAtomMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devBucketMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n mimeTypes: t.optional(t.array(t.text())),\n maxSize: t.optional(t.number()),\n provider: t.text(),\n});\n\nexport type DevBucketMetadata = Static<typeof devBucketMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devCacheMetadataSchema = t.object({\n name: t.text(),\n ttl: t.optional(t.any()),\n disabled: t.optional(t.boolean()),\n provider: t.text(),\n});\n\nexport type DevCacheMetadata = Static<typeof devCacheMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devCommandMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n hidden: t.optional(t.boolean()),\n});\n\nexport type DevCommandMetadata = Static<typeof devCommandMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devEntityColumnSchema = t.object({\n name: t.text(),\n type: t.text(),\n nullable: t.boolean(),\n primaryKey: t.boolean(),\n identity: t.boolean(),\n createdAt: t.boolean(),\n updatedAt: t.boolean(),\n deletedAt: t.boolean(),\n version: t.boolean(),\n hasDefault: t.boolean(),\n ref: t.optional(\n t.object({\n entity: t.text(),\n column: t.text(),\n onUpdate: t.optional(t.text()),\n onDelete: t.optional(t.text()),\n }),\n ),\n});\n\nexport const devEntityIndexSchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n unique: t.boolean(),\n});\n\nexport const devEntityForeignKeySchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n foreignEntity: t.text(),\n foreignColumns: t.array(t.text()),\n});\n\nexport const devEntityConstraintSchema = t.object({\n name: t.optional(t.text()),\n columns: t.array(t.text()),\n unique: t.boolean(),\n hasCheck: t.boolean(),\n});\n\nexport const devEntityMetadataSchema = t.object({\n name: t.text(),\n provider: t.text(),\n columns: t.array(devEntityColumnSchema),\n indexes: t.array(devEntityIndexSchema),\n foreignKeys: t.array(devEntityForeignKeySchema),\n constraints: t.array(devEntityConstraintSchema),\n});\n\nexport type DevEntityColumn = Static<typeof devEntityColumnSchema>;\nexport type DevEntityIndex = Static<typeof devEntityIndexSchema>;\nexport type DevEntityForeignKey = Static<typeof devEntityForeignKeySchema>;\nexport type DevEntityConstraint = Static<typeof devEntityConstraintSchema>;\nexport type DevEntityMetadata = Static<typeof devEntityMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devEnvMetadataSchema = t.object({\n /**\n * The property name in the service where $env is defined\n */\n propertyKey: t.text(),\n /**\n * The schema for the environment variables (TypeBox/JSON Schema)\n */\n schema: t.any(),\n /**\n * The parsed values from the environment\n */\n values: t.record(t.text(), t.any()),\n /**\n * The service class name where this $env is defined\n */\n serviceName: t.optional(t.text()),\n});\n\nexport type DevEnvMetadata = Static<typeof devEnvMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devModuleMetadataSchema = t.object({\n name: t.text(),\n providers: t.array(t.text()),\n});\n\nexport type DevModuleMetadata = Static<typeof devModuleMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devPageMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n path: t.optional(t.text()),\n params: t.optional(t.any()),\n query: t.optional(t.any()),\n hasComponent: t.boolean(),\n hasLazy: t.boolean(),\n hasResolve: t.boolean(),\n hasChildren: t.boolean(),\n hasParent: t.boolean(),\n hasErrorHandler: t.boolean(),\n static: t.optional(t.boolean()),\n cache: t.optional(t.any()),\n client: t.optional(t.any()),\n animation: t.optional(t.any()),\n});\n\nexport type DevPageMetadata = Static<typeof devPageMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devProviderMetadataSchema = t.object({\n name: t.text(),\n module: t.optional(t.text()),\n dependencies: t.array(t.text()),\n aliases: t.optional(t.array(t.text())),\n});\n\nexport type DevProviderMetadata = Static<typeof devProviderMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devQueueMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n schema: t.optional(t.any()),\n provider: t.text(),\n});\n\nexport type DevQueueMetadata = Static<typeof devQueueMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devRealmMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n roles: t.optional(t.array(t.any())),\n type: t.enum([\"internal\", \"external\"]),\n settings: t.optional(\n t.object({\n accessTokenExpiration: t.optional(t.any()),\n refreshTokenExpiration: t.optional(t.any()),\n hasOnCreateSession: t.boolean(),\n hasOnRefreshSession: t.boolean(),\n hasOnDeleteSession: t.boolean(),\n }),\n ),\n});\n\nexport type DevRealmMetadata = Static<typeof devRealmMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devRouteMetadataSchema = t.object({\n method: t.text(),\n path: t.text(),\n});\n\nexport type DevRouteMetadata = Static<typeof devRouteMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devSchedulerMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n cron: t.optional(t.text()),\n interval: t.optional(t.any()),\n lock: t.optional(t.boolean()),\n});\n\nexport type DevSchedulerMetadata = Static<typeof devSchedulerMetadataSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const devTopicMetadataSchema = t.object({\n name: t.text(),\n description: t.optional(t.text()),\n schema: t.optional(t.any()),\n provider: t.text(),\n});\n\nexport type DevTopicMetadata = Static<typeof devTopicMetadataSchema>;\n","import { type Static, t } from \"alepha\";\nimport { devActionMetadataSchema } from \"./DevActionMetadata.ts\";\nimport { devAtomMetadataSchema } from \"./DevAtomMetadata.ts\";\nimport { devBucketMetadataSchema } from \"./DevBucketMetadata.ts\";\nimport { devCacheMetadataSchema } from \"./DevCacheMetadata.ts\";\nimport { devCommandMetadataSchema } from \"./DevCommandMetadata.ts\";\nimport { devEntityMetadataSchema } from \"./DevEntityMetadata.ts\";\nimport { devEnvMetadataSchema } from \"./DevEnvMetadata.ts\";\nimport { devModuleMetadataSchema } from \"./DevModuleMetadata.ts\";\nimport { devPageMetadataSchema } from \"./DevPageMetadata.ts\";\nimport { devProviderMetadataSchema } from \"./DevProviderMetadata.ts\";\nimport { devQueueMetadataSchema } from \"./DevQueueMetadata.ts\";\nimport { devRealmMetadataSchema } from \"./DevRealmMetadata.ts\";\nimport { devRouteMetadataSchema } from \"./DevRouteMetadata.ts\";\nimport { devSchedulerMetadataSchema } from \"./DevSchedulerMetadata.ts\";\nimport { devTopicMetadataSchema } from \"./DevTopicMetadata.ts\";\n\nexport const devMetadataSchema = t.object({\n actions: t.array(devActionMetadataSchema),\n queues: t.array(devQueueMetadataSchema),\n schedulers: t.array(devSchedulerMetadataSchema),\n topics: t.array(devTopicMetadataSchema),\n buckets: t.array(devBucketMetadataSchema),\n realms: t.array(devRealmMetadataSchema),\n caches: t.array(devCacheMetadataSchema),\n pages: t.array(devPageMetadataSchema),\n providers: t.array(devProviderMetadataSchema),\n modules: t.array(devModuleMetadataSchema),\n entities: t.array(devEntityMetadataSchema),\n commands: t.array(devCommandMetadataSchema),\n routes: t.array(devRouteMetadataSchema),\n envs: t.array(devEnvMetadataSchema),\n atoms: t.array(devAtomMetadataSchema),\n});\n\nexport type DevMetadata = Static<typeof devMetadataSchema>;\n","import { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { $hook, $inject, Alepha, pageQuerySchema, t } from \"alepha\";\nimport { $batch } from \"alepha/batch\";\nimport { $logger, JsonFormatterProvider, type LogEntry } from \"alepha/logger\";\nimport { parseQueryString } from \"alepha/orm\";\nimport { $route, ServerProvider } from \"alepha/server\";\nimport { $serve } from \"alepha/server/static\";\nimport { type DevLogEntry, logs } from \"./entities/logs.ts\";\nimport { DevToolsMetadataProvider } from \"./providers/DevToolsMetadataProvider.ts\";\nimport { LogRepository } from \"./repositories/LogRepository.ts\";\nimport { devMetadataSchema } from \"./schemas/DevMetadata.ts\";\n\nexport class DevToolsProvider {\n protected readonly log = $logger();\n protected readonly alepha = $inject(Alepha);\n protected readonly serverProvider = $inject(ServerProvider);\n protected readonly jsonFormatter = $inject(JsonFormatterProvider);\n protected readonly logs = $inject(LogRepository);\n protected readonly devCollectorProvider = $inject(DevToolsMetadataProvider);\n\n protected readonly onStart = $hook({\n on: \"start\",\n handler: () => {\n this.log.info(\"Devtools OK\", {\n url: `${this.serverProvider.hostname}/devtools/`,\n });\n },\n });\n\n protected batchLogs = $batch({\n maxSize: 50,\n maxDuration: [10, \"seconds\"],\n schema: logs.insertSchema,\n handler: async (entries) => {\n await this.logs.createMany(entries);\n },\n });\n\n protected readonly onLog = $hook({\n on: \"log\",\n handler: async (ev: { message?: string; entry: LogEntry }) => {\n // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n // CAUTION: It's very easy to create an infinite loop here.\n // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n try {\n if (!this.alepha.isStarted()) {\n return;\n }\n\n ev.entry.message = ev.entry.message?.slice(0, 2000); // limit message size\n\n if (ev.entry.module === \"alepha.devtools\") {\n // skip devtools logs to avoid infinite loop\n return;\n }\n\n if (ev.entry.level === \"TRACE\" && ev.entry.module === \"alepha.batch\") {\n // skip batch trace logs to avoid infinite loop\n return;\n }\n\n if (this.alepha.isProduction() && ev.entry.level === \"TRACE\") {\n // skip trace logs in production\n return;\n }\n\n const entry = {\n ...ev.entry,\n data:\n ev.entry.data instanceof Error\n ? this.jsonFormatter.formatJsonError(ev.entry.data)\n : typeof ev.entry.data === \"object\" &&\n !Array.isArray(ev.entry.data)\n ? ev.entry.data\n : { data: ev.entry.data },\n };\n\n await this.batchLogs.push(entry as DevLogEntry);\n } catch (error) {\n // DO TO NOT WITH THE LOGGER HERE TO AVOID INFINITE LOOP\n console.error(error, ev);\n }\n },\n });\n\n protected readonly uiRoute = $serve({\n path: \"/devtools\",\n root: join(fileURLToPath(import.meta.url), \"../../../assets/devtools\"),\n historyApiFallback: true,\n });\n\n protected readonly metadataRoute = $route({\n method: \"GET\",\n path: \"/devtools/api/metadata\",\n silent: true,\n schema: {\n response: devMetadataSchema,\n },\n handler: () => {\n return this.devCollectorProvider.getMetadata();\n },\n });\n\n protected readonly logsRoute = $route({\n method: \"GET\",\n path: \"/devtools/api/logs\",\n silent: true,\n schema: {\n query: t.extend(pageQuerySchema, {\n search: t.optional(t.string()),\n }),\n response: t.page(logs.schema),\n },\n handler: ({ query }) => {\n query.sort ??= \"-timestamp\";\n return this.logs.paginate(\n query,\n query.search\n ? {\n where: parseQueryString(query.search),\n }\n : {},\n {\n count: true,\n },\n );\n },\n });\n\n protected readonly updateAtomRoute = $route({\n method: \"POST\",\n path: \"/devtools/api/atoms\",\n silent: true,\n schema: {\n body: t.object({\n name: t.text(),\n value: t.any(),\n }),\n response: t.object({\n success: t.boolean(),\n }),\n },\n handler: ({ body }) => {\n const atoms = this.alepha.store.getAtoms(false);\n const atomEntry = atoms.find((a) => a.atom.key === body.name);\n\n if (atomEntry) {\n this.alepha.store.set(atomEntry.atom, body.value);\n return { success: true };\n }\n\n return { success: false };\n },\n });\n}\n","import { $module } from \"alepha\";\nimport { DevToolsProvider } from \"./api/DevToolsProvider.ts\";\nimport { DevToolsDatabaseProvider } from \"./api/providers/DevToolsDatabaseProvider.ts\";\nimport { DevToolsMetadataProvider } from \"./api/providers/DevToolsMetadataProvider.ts\";\nimport { LogRepository } from \"./api/repositories/LogRepository.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./api/providers/DevToolsMetadataProvider.ts\";\nexport * from \"./api/schemas/DevActionMetadata.ts\";\nexport * from \"./api/schemas/DevBucketMetadata.ts\";\nexport * from \"./api/schemas/DevCacheMetadata.ts\";\nexport * from \"./api/schemas/DevCommandMetadata.ts\";\nexport * from \"./api/schemas/DevEntityMetadata.ts\";\nexport * from \"./api/schemas/DevMetadata.ts\";\nexport * from \"./api/schemas/DevModuleMetadata.ts\";\nexport * from \"./api/schemas/DevPageMetadata.ts\";\nexport * from \"./api/schemas/DevProviderMetadata.ts\";\nexport * from \"./api/schemas/DevQueueMetadata.ts\";\nexport * from \"./api/schemas/DevRealmMetadata.ts\";\nexport * from \"./api/schemas/DevRouteMetadata.ts\";\nexport * from \"./api/schemas/DevSchedulerMetadata.ts\";\nexport * from \"./api/schemas/DevTopicMetadata.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Developer tools module for monitoring and debugging Alepha applications.\n *\n * This module provides comprehensive data collection capabilities for tracking application behavior,\n * performance metrics, and debugging information in real-time.\n *\n * @see {@link DevToolsMetadataProvider}\n * @module alepha.devtools\n */\nexport const AlephaDevtools = $module({\n name: \"alepha.devtools\",\n primitives: [],\n services: [\n DevToolsMetadataProvider,\n DevToolsProvider,\n DevToolsDatabaseProvider,\n LogRepository,\n ],\n register: (alepha) => {\n alepha.with(DevToolsProvider);\n alepha.with(DevToolsDatabaseProvider);\n alepha.with(DevToolsMetadataProvider);\n alepha.store.push(\"alepha.build.assets\", \"@alepha/devtools\");\n },\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@alepha/devtools",
3
3
  "description": "Developer tools for monitoring and debugging Alepha applications.",
4
4
  "author": "Nicolas Foures",
5
- "version": "0.15.0",
5
+ "version": "0.15.1",
6
6
  "type": "module",
7
7
  "engines": {
8
8
  "node": ">=22.0.0"
@@ -16,22 +16,22 @@
16
16
  "assets"
17
17
  ],
18
18
  "devDependencies": {
19
- "@alepha/react": "0.15.0",
20
- "@alepha/ui": "0.15.0",
21
- "@biomejs/biome": "^2.3.11",
22
- "@mantine/core": "^8.3.12",
23
- "@mantine/hooks": "^8.3.12",
19
+ "@alepha/react": "0.15.1",
20
+ "@alepha/ui": "0.15.1",
21
+ "@biomejs/biome": "^2.3.12",
22
+ "@mantine/core": "^8.3.13",
23
+ "@mantine/hooks": "^8.3.13",
24
24
  "@tabler/icons-react": "^3.36.1",
25
25
  "@xyflow/react": "^12.10.0",
26
- "alepha": "0.15.0",
26
+ "alepha": "0.15.1",
27
27
  "react": "^19.2.3",
28
- "tsdown": "^0.20.0-beta.3",
28
+ "tsdown": "^0.20.1",
29
29
  "typescript": "^5.9.3",
30
30
  "vite": "^7.3.1",
31
- "vitest": "^4.0.17"
31
+ "vitest": "^4.0.18"
32
32
  },
33
33
  "peerDependencies": {
34
- "alepha": "0.15.0"
34
+ "alepha": "0.15.1"
35
35
  },
36
36
  "scripts": {
37
37
  "lint": "alepha lint",
@@ -2,8 +2,7 @@ import { Repository } from "alepha/orm";
2
2
  import { logs } from "../entities/logs.ts";
3
3
  import { DevToolsDatabaseProvider } from "../providers/DevToolsDatabaseProvider.ts";
4
4
 
5
- export class LogRepository extends Repository<typeof logs.schema> {
6
- constructor() {
7
- super(logs, DevToolsDatabaseProvider);
8
- }
9
- }
5
+ export class LogRepository extends Repository.of(
6
+ logs,
7
+ DevToolsDatabaseProvider,
8
+ ) {}
@@ -1 +0,0 @@
1
- j d�f�/��S"�D>l�?�|��b��S�<0���NŠ��_��8LN��G��[�>��C��x�Gxś�QB��!��h�O��� ��o+��#����~��%h3l��~"F�}M��툂B�dB 1 R v?c,�׿�k-%vP�s��Λ��]�y���lc�ʩ�)�}HzaQ�\0�xizQ��5�y�'43�c��r�ۈ.�'4]q:�>����N�j`h6ĵ��Z��1����{Z�x4G��O�an�x�N ��U��ht�b y=��8!�d)�������� R�%F�@P�h�&O5鶿��E���ë�f̛x�C<3"4�{��8k�
@@ -1 +0,0 @@
1
- import{r as m,f as E,b as A,q as se,t as re,j as i,B as L,w as ee,v as oe,c as Eo,aC as me,b8 as jo,b9 as Ue,ah as ge,bc as Po,s as fe,$ as te,aJ as Ke,e as Ce,ay as Ro,U as To,a0 as we,b7 as qe,ak as We,al as Ze,aH as $o,ad as Vo,d as Mo,ax as zo,a2 as Je,x as ye}from"./entry.BdraBs_7.js";import{I as Bo,a as Fo,b as Lo}from"./chunk.KNtbB1xL.js";import{P as he}from"./chunk.Dwq9t2Dl.js";function Go(e){const o=m.useRef(void 0);return m.useEffect(()=>{o.current=e},[e]),o.current}function be(e,o=document){const t=o.querySelector(e);if(t)return t;const s=o.querySelectorAll("*");for(let r=0;r<s.length;r+=1){const a=s[r];if(a.shadowRoot){const n=be(e,a.shadowRoot);if(n)return n}}return null}function U(e,o=document){const t=[],s=o.querySelectorAll(e);t.push(...Array.from(s));const r=o.querySelectorAll("*");for(let a=0;a<r.length;a+=1){const n=r[a];if(n.shadowRoot){const l=U(e,n.shadowRoot);t.push(...l)}}return t}function K(e){if(!e)return document;const o=e.getRootNode();return o instanceof ShadowRoot||o instanceof Document?o:document}function Qe(e){return typeof e=="string"?{value:e,label:e}:"value"in e&&!("label"in e)?{value:e.value,label:e.value,disabled:e.disabled}:typeof e=="number"?{value:e.toString(),label:e.toString()}:"group"in e?{group:e.group,items:e.items.map(o=>Qe(o))}:e}function Ho(e){return e?e.map(o=>Qe(o)):[]}function Xe(e){return e.reduce((o,t)=>"group"in t?{...o,...Xe(t.items)}:(o[t.value]=t,o),{})}var P={dropdown:"m_88b62a41",search:"m_985517d8",options:"m_b2821a6e",option:"m_92253aa5",empty:"m_2530cd1d",header:"m_858f94bd",footer:"m_82b967cb",group:"m_254f3e4f",groupLabel:"m_2bb2e9e5",chevron:"m_2943220b",optionsDropdownOption:"m_390b5f4",optionsDropdownCheckIcon:"m_8ee53fc2",optionsDropdownCheckPlaceholder:"m_a530ee0a"};const Ko={error:null},Uo=re((e,{size:o,color:t})=>({chevron:{"--combobox-chevron-size":oe(o,"combobox-chevron-size"),"--combobox-chevron-color":t?ee(t,e):void 0}})),ke=E((e,o)=>{const t=A("ComboboxChevron",Ko,e),{size:s,error:r,style:a,className:n,classNames:l,styles:c,unstyled:d,vars:p,mod:u,...b}=t,x=se({name:"ComboboxChevron",classes:P,props:t,style:a,className:n,classNames:l,styles:c,unstyled:d,vars:p,varsResolver:Uo,rootSelector:"chevron"});return i.jsx(L,{component:"svg",...b,...x("chevron"),size:s,viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",mod:["combobox-chevron",{error:r},u],ref:o,children:i.jsx("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})});ke.classes=P;ke.displayName="@mantine/core/ComboboxChevron";const[qo,M]=Eo("Combobox component was not found in tree"),Ye=m.forwardRef(({size:e,onMouseDown:o,onClick:t,onClear:s,...r},a)=>i.jsx(me.ClearButton,{ref:a,tabIndex:-1,"aria-hidden":!0,...r,onMouseDown:n=>{n.preventDefault(),o?.(n)},onClick:n=>{s(),t?.(n)}}));Ye.displayName="@mantine/core/ComboboxClearButton";const Se=E((e,o)=>{const{classNames:t,styles:s,className:r,style:a,hidden:n,...l}=A("ComboboxDropdown",null,e),c=M();return i.jsx(he.Dropdown,{...l,ref:o,role:"presentation","data-hidden":n||void 0,...c.getStyles("dropdown",{className:r,style:a,classNames:t,styles:s})})});Se.classes=P;Se.displayName="@mantine/core/ComboboxDropdown";const Wo={refProp:"ref"},eo=E((e,o)=>{const{children:t,refProp:s}=A("ComboboxDropdownTarget",Wo,e);if(M(),!jo(t))throw new Error("Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return i.jsx(he.Target,{ref:o,refProp:s,children:t})});eo.displayName="@mantine/core/ComboboxDropdownTarget";const Oe=E((e,o)=>{const{classNames:t,className:s,style:r,styles:a,vars:n,...l}=A("ComboboxEmpty",null,e),c=M();return i.jsx(L,{ref:o,...c.getStyles("empty",{className:s,classNames:t,styles:a,style:r}),...l})});Oe.classes=P;Oe.displayName="@mantine/core/ComboboxEmpty";function De({onKeyDown:e,withKeyboardNavigation:o,withAriaAttributes:t,withExpandedAttribute:s,targetType:r,autoComplete:a}){const n=M(),[l,c]=m.useState(null),d=u=>{if(e?.(u),!n.readOnly&&o){if(u.nativeEvent.isComposing)return;if(u.nativeEvent.code==="ArrowDown"&&(u.preventDefault(),n.store.dropdownOpened?c(n.store.selectNextOption()):(n.store.openDropdown("keyboard"),c(n.store.selectActiveOption()),n.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),u.nativeEvent.code==="ArrowUp"&&(u.preventDefault(),n.store.dropdownOpened?c(n.store.selectPreviousOption()):(n.store.openDropdown("keyboard"),c(n.store.selectActiveOption()),n.store.updateSelectedOptionIndex("selected",{scrollIntoView:!0}))),u.nativeEvent.code==="Enter"||u.nativeEvent.code==="NumpadEnter"){if(u.nativeEvent.keyCode===229)return;const b=n.store.getSelectedOptionIndex();n.store.dropdownOpened&&b!==-1?(u.preventDefault(),n.store.clickSelectedOption()):r==="button"&&(u.preventDefault(),n.store.openDropdown("keyboard"))}u.key==="Escape"&&n.store.closeDropdown("keyboard"),u.nativeEvent.code==="Space"&&r==="button"&&(u.preventDefault(),n.store.toggleDropdown("keyboard"))}};return{...t?{"aria-haspopup":"listbox","aria-expanded":s?!!(n.store.listId&&n.store.dropdownOpened):void 0,"aria-controls":n.store.dropdownOpened&&n.store.listId?n.store.listId:void 0,"aria-activedescendant":n.store.dropdownOpened&&l||void 0,autoComplete:a,"data-expanded":n.store.dropdownOpened||void 0,"data-mantine-stop-propagation":n.store.dropdownOpened||void 0}:{},onKeyDown:d}}const Zo={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},oo=E((e,o)=>{const{children:t,refProp:s,withKeyboardNavigation:r,withAriaAttributes:a,withExpandedAttribute:n,targetType:l,autoComplete:c,...d}=A("ComboboxEventsTarget",Zo,e),p=Ue(t);if(!p)throw new Error("Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const u=M(),b=De({targetType:l,withAriaAttributes:a,withKeyboardNavigation:r,withExpandedAttribute:n,onKeyDown:p.props.onKeyDown,autoComplete:c});return m.cloneElement(p,{...b,...d,[s]:ge(o,u.store.targetRef,Po(p))})});oo.displayName="@mantine/core/ComboboxEventsTarget";const _e=E((e,o)=>{const{classNames:t,className:s,style:r,styles:a,vars:n,...l}=A("ComboboxFooter",null,e),c=M();return i.jsx(L,{ref:o,...c.getStyles("footer",{className:s,classNames:t,style:r,styles:a}),...l,onMouseDown:d=>{d.preventDefault()}})});_e.classes=P;_e.displayName="@mantine/core/ComboboxFooter";const Ne=E((e,o)=>{const{classNames:t,className:s,style:r,styles:a,vars:n,children:l,label:c,id:d,...p}=A("ComboboxGroup",null,e),u=M(),b=fe(d);return i.jsxs(L,{ref:o,role:"group","aria-labelledby":c?b:void 0,...u.getStyles("group",{className:s,classNames:t,style:r,styles:a}),...p,children:[c&&i.jsx("div",{id:b,...u.getStyles("groupLabel",{classNames:t,styles:a}),children:c}),l]})});Ne.classes=P;Ne.displayName="@mantine/core/ComboboxGroup";const Ie=E((e,o)=>{const{classNames:t,className:s,style:r,styles:a,vars:n,...l}=A("ComboboxHeader",null,e),c=M();return i.jsx(L,{ref:o,...c.getStyles("header",{className:s,classNames:t,style:r,styles:a}),...l,onMouseDown:d=>{d.preventDefault()}})});Ie.classes=P;Ie.displayName="@mantine/core/ComboboxHeader";function to({value:e,valuesDivider:o=",",...t}){return i.jsx("input",{type:"hidden",value:Array.isArray(e)?e.join(o):e||"",...t})}to.displayName="@mantine/core/ComboboxHiddenInput";const Ae=E((e,o)=>{const t=A("ComboboxOption",null,e),{classNames:s,className:r,style:a,styles:n,vars:l,onClick:c,id:d,active:p,onMouseDown:u,onMouseOver:b,disabled:x,selected:k,mod:g,...w}=t,S=M(),D=m.useId(),_=d||D;return i.jsx(L,{...S.getStyles("option",{className:r,classNames:s,styles:n,style:a}),...w,ref:o,id:_,mod:["combobox-option",{"combobox-active":p,"combobox-disabled":x,"combobox-selected":k},g],role:"option",onClick:h=>{x?h.preventDefault():(S.onOptionSubmit?.(t.value,t),c?.(h))},onMouseDown:h=>{h.preventDefault(),u?.(h)},onMouseOver:h=>{S.resetSelectionOnOptionHover&&S.store.resetSelectedOption(),b?.(h)}})});Ae.classes=P;Ae.displayName="@mantine/core/ComboboxOption";const Ee=E((e,o)=>{const t=A("ComboboxOptions",null,e),{classNames:s,className:r,style:a,styles:n,id:l,onMouseDown:c,labelledBy:d,...p}=t,u=M(),b=fe(l);return m.useEffect(()=>{u.store.setListId(b)},[b]),i.jsx(L,{ref:o,...u.getStyles("options",{className:r,style:a,classNames:s,styles:n}),...p,id:b,role:"listbox","aria-labelledby":d,onMouseDown:x=>{x.preventDefault(),c?.(x)}})});Ee.classes=P;Ee.displayName="@mantine/core/ComboboxOptions";const Jo={withAriaAttributes:!0,withKeyboardNavigation:!0},je=E((e,o)=>{const t=A("ComboboxSearch",Jo,e),{classNames:s,styles:r,unstyled:a,vars:n,withAriaAttributes:l,onKeyDown:c,withKeyboardNavigation:d,size:p,...u}=t,b=M(),x=b.getStyles("search"),k=De({targetType:"input",withAriaAttributes:l,withKeyboardNavigation:d,withExpandedAttribute:!1,onKeyDown:c,autoComplete:"off"});return i.jsx(me,{ref:ge(o,b.store.searchRef),classNames:[{input:x.className},s],styles:[{input:x.style},r],size:p||b.size,...k,...u,__staticSelector:"Combobox"})});je.classes=P;je.displayName="@mantine/core/ComboboxSearch";const Qo={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},no=E((e,o)=>{const{children:t,refProp:s,withKeyboardNavigation:r,withAriaAttributes:a,withExpandedAttribute:n,targetType:l,autoComplete:c,...d}=A("ComboboxTarget",Qo,e),p=Ue(t);if(!p)throw new Error("Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const u=M(),b=De({targetType:l,withAriaAttributes:a,withKeyboardNavigation:r,withExpandedAttribute:n,onKeyDown:p.props.onKeyDown,autoComplete:c}),x=m.cloneElement(p,{...b,...d});return i.jsx(he.Target,{ref:ge(o,u.store.targetRef),children:x})});no.displayName="@mantine/core/ComboboxTarget";function Xo(e,o,t){for(let s=e-1;s>=0;s-=1)if(!o[s].hasAttribute("data-combobox-disabled"))return s;if(t){for(let s=o.length-1;s>-1;s-=1)if(!o[s].hasAttribute("data-combobox-disabled"))return s}return e}function Yo(e,o,t){for(let s=e+1;s<o.length;s+=1)if(!o[s].hasAttribute("data-combobox-disabled"))return s;if(t){for(let s=0;s<o.length;s+=1)if(!o[s].hasAttribute("data-combobox-disabled"))return s}return e}function et(e){for(let o=0;o<e.length;o+=1)if(!e[o].hasAttribute("data-combobox-disabled"))return o;return-1}function so({defaultOpened:e,opened:o,onOpenedChange:t,onDropdownClose:s,onDropdownOpen:r,loop:a=!0,scrollBehavior:n="instant"}={}){const[l,c]=te({value:o,defaultValue:e,finalValue:!1,onChange:t}),d=m.useRef(null),p=m.useRef(-1),u=m.useRef(null),b=m.useRef(null),x=m.useRef(-1),k=m.useRef(-1),g=m.useRef(-1),w=m.useCallback((f="unknown")=>{l||(c(!0),r?.(f))},[c,r,l]),S=m.useCallback((f="unknown")=>{l&&(c(!1),s?.(f))},[c,s,l]),D=m.useCallback((f="unknown")=>{l?S(f):w(f)},[S,w,l]),_=m.useCallback(()=>{const f=K(b.current),O=be(`#${d.current} [data-combobox-selected]`,f);O?.removeAttribute("data-combobox-selected"),O?.removeAttribute("aria-selected")},[]),h=m.useCallback(f=>{const O=K(b.current),B=be(`#${d.current}`,O),N=B?U("[data-combobox-option]",B):null;if(!N)return null;const I=f>=N.length?0:f<0?N.length-1:f;return p.current=I,N?.[I]&&!N[I].hasAttribute("data-combobox-disabled")?(_(),N[I].setAttribute("data-combobox-selected","true"),N[I].setAttribute("aria-selected","true"),N[I].scrollIntoView({block:"nearest",behavior:n}),N[I].id):null},[n,_]),C=m.useCallback(()=>{const f=K(b.current),O=be(`#${d.current} [data-combobox-active]`,f);if(O){const N=U(`#${d.current} [data-combobox-option]`,f).findIndex(I=>I===O);return h(N)}return h(0)},[h]),j=m.useCallback(()=>{const f=K(b.current),O=U(`#${d.current} [data-combobox-option]`,f);return h(Yo(p.current,O,a))},[h,a]),R=m.useCallback(()=>{const f=K(b.current),O=U(`#${d.current} [data-combobox-option]`,f);return h(Xo(p.current,O,a))},[h,a]),ce=m.useCallback(()=>{const f=K(b.current),O=U(`#${d.current} [data-combobox-option]`,f);return h(et(O))},[h]),J=m.useCallback((f="selected",O)=>{g.current=window.setTimeout(()=>{const B=K(b.current),N=U(`#${d.current} [data-combobox-option]`,B),I=N.findIndex(Y=>Y.hasAttribute(`data-combobox-${f}`));p.current=I,O?.scrollIntoView&&N[I]?.scrollIntoView({block:"nearest",behavior:n})},0)},[]),le=m.useCallback(()=>{p.current=-1,_()},[_]),q=m.useCallback(()=>{const f=K(b.current);U(`#${d.current} [data-combobox-option]`,f)?.[p.current]?.click()},[]),z=m.useCallback(f=>{d.current=f},[]),Q=m.useCallback(()=>{x.current=window.setTimeout(()=>u.current?.focus(),0)},[]),H=m.useCallback(()=>{k.current=window.setTimeout(()=>b.current?.focus(),0)},[]),X=m.useCallback(()=>p.current,[]);return m.useEffect(()=>()=>{window.clearTimeout(x.current),window.clearTimeout(k.current),window.clearTimeout(g.current)},[]),{dropdownOpened:l,openDropdown:w,closeDropdown:S,toggleDropdown:D,selectedOptionIndex:p.current,getSelectedOptionIndex:X,selectOption:h,selectFirstOption:ce,selectActiveOption:C,selectNextOption:j,selectPreviousOption:R,resetSelectedOption:le,updateSelectedOptionIndex:J,listId:d.current,setListId:z,clickSelectedOption:q,searchRef:u,focusSearchInput:Q,targetRef:b,focusTarget:H}}const ot={keepMounted:!0,withinPortal:!0,resetSelectionOnOptionHover:!1,width:"target",transitionProps:{transition:"fade",duration:0},size:"sm"},tt=re((e,{size:o,dropdownPadding:t})=>({options:{"--combobox-option-fz":Ke(o),"--combobox-option-padding":oe(o,"combobox-option-padding")},dropdown:{"--combobox-padding":t===void 0?void 0:Ce(t),"--combobox-option-fz":Ke(o),"--combobox-option-padding":oe(o,"combobox-option-padding")}}));function v(e){const o=A("Combobox",ot,e),{classNames:t,styles:s,unstyled:r,children:a,store:n,vars:l,onOptionSubmit:c,onClose:d,size:p,dropdownPadding:u,resetSelectionOnOptionHover:b,__staticSelector:x,readOnly:k,attributes:g,...w}=o,S=so(),D=n||S,_=se({name:x||"Combobox",classes:P,props:o,classNames:t,styles:s,unstyled:r,attributes:g,vars:l,varsResolver:tt}),h=()=>{d?.(),D.closeDropdown()};return i.jsx(qo,{value:{getStyles:_,store:D,onOptionSubmit:c,size:p,resetSelectionOnOptionHover:b,readOnly:k},children:i.jsx(he,{opened:D.dropdownOpened,preventPositionChangeWhenVisible:!1,...w,onChange:C=>!C&&h(),withRoles:!1,unstyled:r,children:a})})}const nt=e=>e;v.extend=nt;v.classes=P;v.displayName="@mantine/core/Combobox";v.Target=no;v.Dropdown=Se;v.Options=Ee;v.Option=Ae;v.Search=je;v.Empty=Oe;v.Chevron=ke;v.Footer=_e;v.Header=Ie;v.EventsTarget=oo;v.DropdownTarget=eo;v.Group=Ne;v.ClearButton=Ye;v.HiddenInput=to;var ro={root:"m_bf2d988c",inner:"m_26062bec",input:"m_26063560",icon:"m_bf295423","input--outline":"m_215c4542"};const ao=m.createContext(null),st=ao.Provider,co=()=>m.useContext(ao),[rt,at]=Ro();var lo={card:"m_26775b0a"};const ct={withBorder:!0},lt=re((e,{radius:o})=>({card:{"--card-radius":we(o)}})),Pe=E((e,o)=>{const t=A("CheckboxCard",ct,e),{classNames:s,className:r,style:a,styles:n,unstyled:l,vars:c,checked:d,mod:p,withBorder:u,value:b,onClick:x,defaultChecked:k,onChange:g,attributes:w,...S}=t,D=se({name:"CheckboxCard",classes:lo,props:t,className:r,style:a,classNames:s,styles:n,unstyled:l,attributes:w,vars:c,varsResolver:lt,rootSelector:"card"}),_=co(),h=typeof d=="boolean"?d:_?_.value.includes(b||""):void 0,[C,j]=te({value:h,defaultValue:k,finalValue:!1,onChange:g});return i.jsx(rt,{value:{checked:C},children:i.jsx(To,{ref:o,mod:[{"with-border":u,checked:C},p],...D("card"),...S,role:"checkbox","aria-checked":C,onClick:R=>{x?.(R),_?.onChange(b||""),j(!C)}})})});Pe.displayName="@mantine/core/CheckboxCard";Pe.classes=lo;const Re=E((e,o)=>{const{value:t,defaultValue:s,onChange:r,size:a,wrapperProps:n,children:l,readOnly:c,disabled:d,...p}=A("CheckboxGroup",null,e),[u,b]=te({value:t,defaultValue:s,finalValue:[],onChange:r}),x=k=>{const g=typeof k=="string"?k:k.currentTarget.value;!c&&b(u.includes(g)?u.filter(w=>w!==g):[...u,g])};return i.jsx(st,{value:{value:u,onChange:x,size:a,disabled:d},children:i.jsx(me.Wrapper,{size:a,ref:o,...n,...p,labelElement:"div",__staticSelector:"CheckboxGroup",children:i.jsx(Bo,{role:"group",children:l})})})});Re.classes=me.Wrapper.classes;Re.displayName="@mantine/core/CheckboxGroup";function io({size:e,style:o,...t}){const s=e!==void 0?{width:Ce(e),height:Ce(e),...o}:o;return i.jsx("svg",{viewBox:"0 0 10 7",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:s,"aria-hidden":!0,...t,children:i.jsx("path",{d:"M4 4.586L1.707 2.293A1 1 0 1 0 .293 3.707l3 3a.997.997 0 0 0 1.414 0l5-5A1 1 0 1 0 8.293.293L4 4.586z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}function uo({indeterminate:e,...o}){return e?i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 32 6","aria-hidden":!0,...o,children:i.jsx("rect",{width:"32",height:"6",fill:"currentColor",rx:"3"})}):i.jsx(io,{...o})}var po={indicator:"m_5e5256ee",icon:"m_1b1c543a","indicator--outline":"m_76e20374"};const it={icon:uo,variant:"filled"},dt=re((e,{radius:o,color:t,size:s,iconColor:r,variant:a,autoContrast:n})=>{const l=qe({color:t||e.primaryColor,theme:e}),c=l.isThemeColor&&l.shade===void 0?`var(--mantine-color-${l.color}-outline)`:l.color;return{indicator:{"--checkbox-size":oe(s,"checkbox-size"),"--checkbox-radius":o===void 0?void 0:we(o),"--checkbox-color":a==="outline"?c:ee(t,e),"--checkbox-icon-color":r?ee(r,e):Ze(n,e)?We({color:t,theme:e,autoContrast:n}):void 0}}}),Te=E((e,o)=>{const t=A("CheckboxIndicator",it,e),{classNames:s,className:r,style:a,styles:n,unstyled:l,vars:c,icon:d,indeterminate:p,radius:u,color:b,iconColor:x,autoContrast:k,checked:g,mod:w,variant:S,disabled:D,attributes:_,...h}=t,C=se({name:"CheckboxIndicator",classes:po,props:t,className:r,style:a,classNames:s,styles:n,unstyled:l,attributes:_,vars:c,varsResolver:dt,rootSelector:"indicator"}),j=at(),R=typeof g=="boolean"||typeof p=="boolean"?g||p:j?.checked||!1;return i.jsx(L,{ref:o,...C("indicator",{variant:S}),variant:S,mod:[{checked:R,disabled:D},w],...h,children:i.jsx(d,{indeterminate:p,...C("icon")})})});Te.displayName="@mantine/core/CheckboxIndicator";Te.classes=po;const ut={labelPosition:"right",icon:uo,variant:"filled"},pt=re((e,{radius:o,color:t,size:s,iconColor:r,variant:a,autoContrast:n})=>{const l=qe({color:t||e.primaryColor,theme:e}),c=l.isThemeColor&&l.shade===void 0?`var(--mantine-color-${l.color}-outline)`:l.color;return{root:{"--checkbox-size":oe(s,"checkbox-size"),"--checkbox-radius":o===void 0?void 0:we(o),"--checkbox-color":a==="outline"?c:ee(t,e),"--checkbox-icon-color":r?ee(r,e):Ze(n,e)?We({color:t,theme:e,autoContrast:n}):void 0}}}),ae=E((e,o)=>{const t=A("Checkbox",ut,e),{classNames:s,className:r,style:a,styles:n,unstyled:l,vars:c,color:d,label:p,id:u,size:b,radius:x,wrapperProps:k,checked:g,labelPosition:w,description:S,error:D,disabled:_,variant:h,indeterminate:C,icon:j,rootRef:R,iconColor:ce,onChange:J,autoContrast:le,mod:q,attributes:z,...Q}=t,H=co(),X=b||H?.size,f=se({name:"Checkbox",props:t,classes:ro,className:r,style:a,classNames:s,styles:n,unstyled:l,attributes:z,vars:c,varsResolver:pt}),{styleProps:O,rest:B}=$o(Q),N=fe(u),I={checked:H?.value.includes(B.value)??g,onChange:ie=>{H?.onChange(ie),J?.(ie)},disabled:H?.disabled??_},Y=m.useRef(null),F=o||Y;return m.useEffect(()=>{F&&"current"in F&&F.current&&(F.current.indeterminate=C||!1,C?F.current.setAttribute("data-indeterminate","true"):F.current.removeAttribute("data-indeterminate"))},[C,F]),i.jsx(Fo,{...f("root"),__staticSelector:"Checkbox",__stylesApiProps:t,id:N,size:X,labelPosition:w,label:p,description:S,error:D,disabled:I.disabled,classNames:s,styles:n,unstyled:l,"data-checked":I.checked||g||void 0,variant:h,ref:R,mod:q,...O,...k,children:i.jsxs(L,{...f("inner"),mod:{"data-label-position":w},children:[i.jsx(L,{component:"input",id:N,ref:F,mod:{error:!!D},...f("input",{focusable:!0,variant:h}),...B,...I,type:"checkbox"}),i.jsx(j,{indeterminate:C,...f("icon")})]})})});ae.classes={...ro,...Lo};ae.displayName="@mantine/core/Checkbox";ae.Group=Re;ae.Indicator=Te;ae.Card=Pe;function ne(e){return"group"in e}function bo({options:e,search:o,limit:t}){const s=o.trim().toLowerCase(),r=[];for(let a=0;a<e.length;a+=1){const n=e[a];if(r.length===t)return r;ne(n)&&r.push({group:n.group,items:bo({options:n.items,search:o,limit:t-r.length})}),ne(n)||n.label.toLowerCase().includes(s)&&r.push(n)}return r}function bt(e){if(e.length===0)return!0;for(const o of e)if(!("group"in o)||o.items.length>0)return!1;return!0}function mo(e,o=new Set){if(Array.isArray(e))for(const t of e)if(ne(t))mo(t.items,o);else{if(typeof t.value>"u")throw new Error("[@mantine/core] Each option must have value property");if(typeof t.value!="string")throw new Error(`[@mantine/core] Option value must be a string, other data formats are not supported, got ${typeof t.value}`);if(o.has(t.value))throw new Error(`[@mantine/core] Duplicate options are not supported. Option with value "${t.value}" was provided more than once`);o.add(t.value)}}function mt(e,o){return Array.isArray(e)?e.includes(o):e===o}function fo({data:e,withCheckIcon:o,withAlignedLabels:t,value:s,checkIconPosition:r,unstyled:a,renderOption:n}){if(!ne(e)){const c=mt(s,e.value),d=o&&(c?i.jsx(io,{className:P.optionsDropdownCheckIcon}):t?i.jsx("div",{className:P.optionsDropdownCheckPlaceholder}):null),p=i.jsxs(i.Fragment,{children:[r==="left"&&d,i.jsx("span",{children:e.label}),r==="right"&&d]});return i.jsx(v.Option,{value:e.value,disabled:e.disabled,className:Mo({[P.optionsDropdownOption]:!a}),"data-reverse":r==="right"||void 0,"data-checked":c||void 0,"aria-selected":c,active:c,children:typeof n=="function"?n({option:e,checked:c}):p})}const l=e.items.map(c=>i.jsx(fo,{data:c,value:s,unstyled:a,withCheckIcon:o,withAlignedLabels:t,checkIconPosition:r,renderOption:n},c.value));return i.jsx(v.Group,{label:e.group,children:l})}function ft({data:e,hidden:o,hiddenWhenEmpty:t,filter:s,search:r,limit:a,maxDropdownHeight:n,withScrollArea:l=!0,filterOptions:c=!0,withCheckIcon:d=!1,withAlignedLabels:p=!1,value:u,checkIconPosition:b,nothingFoundMessage:x,unstyled:k,labelId:g,renderOption:w,scrollAreaProps:S,"aria-label":D}){mo(e);const h=typeof r=="string"?(s||bo)({options:e,search:c?r:"",limit:a??1/0}):e,C=bt(h),j=h.map(R=>i.jsx(fo,{data:R,withCheckIcon:d,withAlignedLabels:p,value:u,checkIconPosition:b,unstyled:k,renderOption:w},ne(R)?R.group:R.value));return i.jsx(v.Dropdown,{hidden:o||t&&C,"data-composed":!0,children:i.jsxs(v.Options,{labelledBy:g,"aria-label":D,children:[l?i.jsx(Vo.Autosize,{mah:n??220,type:"scroll",scrollbarSize:"var(--combobox-padding)",offsetScrollbars:"y",...S,children:j}):j,C&&x&&i.jsx(v.Empty,{children:x})]})})}const ht={withCheckIcon:!0,allowDeselect:!0,checkIconPosition:"left"},ho=E((e,o)=>{const t=A("Select",ht,e),{classNames:s,styles:r,unstyled:a,vars:n,dropdownOpened:l,defaultDropdownOpened:c,onDropdownClose:d,onDropdownOpen:p,onFocus:u,onBlur:b,onClick:x,onChange:k,data:g,value:w,defaultValue:S,selectFirstOptionOnChange:D,onOptionSubmit:_,comboboxProps:h,readOnly:C,disabled:j,filter:R,limit:ce,withScrollArea:J,maxDropdownHeight:le,size:q,searchable:z,rightSection:Q,checkIconPosition:H,withCheckIcon:X,withAlignedLabels:f,nothingFoundMessage:O,name:B,form:N,searchValue:I,defaultSearchValue:Y,onSearchChange:F,allowDeselect:ie,error:$e,rightSectionPointerEvents:xo,id:vo,clearable:Co,clearButtonProps:go,hiddenInputProps:wo,renderOption:yo,onClear:ko,autoComplete:So,scrollAreaProps:Oo,__defaultRightSection:gt,__clearSection:wt,__clearable:yt,chevronColor:Do,autoSelectOnBlur:Ve,attributes:Me,...de}=t,xe=m.useMemo(()=>Ho(g),[g]),ue=m.useRef({}),$=m.useMemo(()=>Xe(xe),[xe]),ze=fe(vo),[y,Be,Fe]=te({value:w,defaultValue:S,finalValue:null,onChange:k}),G=typeof y=="string"?y in $?$[y]:ue.current[y]:void 0,Le=Go(G),[pe,_o,No]=te({value:I,defaultValue:Y,finalValue:G?G.label:"",onChange:F}),V=so({opened:l,defaultOpened:c,onDropdownOpen:()=>{p?.(),V.updateSelectedOptionIndex("active",{scrollIntoView:!0})},onDropdownClose:()=>{d?.(),setTimeout(V.resetSelectedOption,0)}}),W=T=>{_o(T),V.resetSelectedOption()},{resolvedClassNames:Ge,resolvedStyles:He}=zo({props:t,styles:r,classNames:s});m.useEffect(()=>{D&&V.selectFirstOption()},[D,pe]),m.useEffect(()=>{w===null&&W(""),typeof w=="string"&&G&&(Le?.value!==G.value||Le?.label!==G.label)&&W(G.label)},[w,G]),m.useEffect(()=>{!Fe&&!No&&W(typeof y=="string"?y in $?$[y]?.label:ue.current[y]?.label||"":"")},[$,y]),m.useEffect(()=>{y&&y in $&&(ue.current[y]=$[y])},[$,y]);const Io=i.jsx(v.ClearButton,{...go,onClear:()=>{Be(null,null),W(""),ko?.()}}),Ao=Co&&!!y&&!j&&!C;return i.jsxs(i.Fragment,{children:[i.jsxs(v,{store:V,__staticSelector:"Select",classNames:Ge,styles:He,unstyled:a,readOnly:C,size:q,attributes:Me,keepMounted:Ve,onOptionSubmit:T=>{_?.(T);const Z=ie&&$[T].value===y?null:$[T],ve=Z?Z.value:null;ve!==y&&Be(ve,Z),!Fe&&W(typeof ve=="string"&&Z?.label||""),V.closeDropdown()},...h,children:[i.jsx(v.Target,{targetType:z?"input":"button",autoComplete:So,children:i.jsx(Je,{id:ze,ref:o,__defaultRightSection:i.jsx(v.Chevron,{size:q,error:$e,unstyled:a,color:Do}),__clearSection:Io,__clearable:Ao,rightSection:Q,rightSectionPointerEvents:xo||"none",...de,size:q,__staticSelector:"Select",disabled:j,readOnly:C||!z,value:pe,onChange:T=>{W(T.currentTarget.value),V.openDropdown(),D&&V.selectFirstOption()},onFocus:T=>{z&&V.openDropdown(),u?.(T)},onBlur:T=>{Ve&&V.clickSelectedOption(),z&&V.closeDropdown();const Z=typeof y=="string"&&(y in $?$[y]:ue.current[y]);W(Z&&Z.label||""),b?.(T)},onClick:T=>{z?V.openDropdown():V.toggleDropdown(),x?.(T)},classNames:Ge,styles:He,unstyled:a,pointer:!z,error:$e,attributes:Me})}),i.jsx(ft,{data:xe,hidden:C||j,filter:R,search:pe,limit:ce,hiddenWhenEmpty:!O,withScrollArea:J,maxDropdownHeight:le,filterOptions:!!z&&G?.label!==pe,value:y,checkIconPosition:H,withCheckIcon:X,withAlignedLabels:f,nothingFoundMessage:O,unstyled:a,labelId:de.label?`${ze}-label`:void 0,"aria-label":de.label?void 0:de["aria-label"],renderOption:yo,scrollAreaProps:Oo})]}),i.jsx(v.HiddenInput,{value:y,name:B,form:N,disabled:j,...wo})]})});ho.classes={...Je.classes,...v.classes};ho.displayName="@mantine/core/Select";const xt=[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]],Dt=ye("outline","arrow-down","ArrowDown",xt);const vt=[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]],_t=ye("outline","arrow-up","ArrowUp",vt);const Ct=[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]],Nt=ye("outline","plus","Plus",Ct);export{ae as C,Dt as I,ft as O,ho as S,_t as a,Nt as b,Xe as c,v as d,io as e,Ho as g,ne as i,so as u};