@alepha/devtools 0.16.1 → 0.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +1 -5
  2. package/dist/index.browser.js +224 -0
  3. package/dist/index.browser.js.map +1 -0
  4. package/dist/index.d.ts +351 -323
  5. package/dist/index.js +350 -186
  6. package/dist/index.js.map +1 -1
  7. package/package.json +33 -25
  8. package/src/assets.ts +6 -0
  9. package/src/{api/entities → entities}/logs.ts +2 -2
  10. package/src/index.browser.ts +11 -0
  11. package/src/index.shared.ts +15 -0
  12. package/src/index.ts +11 -37
  13. package/src/{api/providers → providers}/DevToolsMetadataProvider.ts +84 -47
  14. package/src/providers/DevToolsProvider.ts +394 -0
  15. package/src/{api/schemas → schemas}/DevActionMetadata.ts +8 -0
  16. package/src/{api/schemas → schemas}/DevEntityMetadata.ts +3 -0
  17. package/src/{api/schemas → schemas}/DevMetadata.ts +13 -2
  18. package/src/{api/schemas → schemas}/DevPageMetadata.ts +3 -0
  19. package/src/{api/schemas → schemas}/DevTopicMetadata.ts +1 -0
  20. package/src/ui/AppRouter.tsx +73 -59
  21. package/src/ui/components/DevLayout.tsx +103 -84
  22. package/src/ui/components/configuration/ConfigAtoms.page.tsx +5 -0
  23. package/src/ui/components/configuration/ConfigAtoms.tsx +511 -0
  24. package/src/ui/components/configuration/ConfigEnv.page.tsx +5 -0
  25. package/src/ui/components/configuration/ConfigEnv.tsx +230 -0
  26. package/src/ui/components/configuration/DevConfiguration.tsx +36 -0
  27. package/src/ui/components/configuration/index.ts +3 -0
  28. package/src/ui/components/dashboard/DevDashboard.tsx +501 -0
  29. package/src/ui/components/database/DatabaseEditor.page.tsx +23 -0
  30. package/src/ui/components/database/DatabaseEditor.tsx +402 -0
  31. package/src/ui/components/database/DatabaseErd.page.tsx +28 -0
  32. package/src/ui/components/database/DatabaseErd.tsx +107 -0
  33. package/src/ui/components/database/DevDatabase.tsx +36 -0
  34. package/src/ui/components/database/EntityNode.tsx +83 -0
  35. package/src/ui/components/emails/DevEmails.tsx +250 -0
  36. package/src/ui/components/explorer/DevExplorer.tsx +351 -0
  37. package/src/ui/components/explorer/ExplorerTree.tsx +178 -0
  38. package/src/ui/components/explorer/panels/DevPanelAction.tsx +499 -0
  39. package/src/ui/components/explorer/panels/DevPanelCache.tsx +73 -0
  40. package/src/ui/components/explorer/panels/DevPanelPage.tsx +96 -0
  41. package/src/ui/components/explorer/panels/DevPanelQueue.tsx +51 -0
  42. package/src/ui/components/explorer/panels/DevPanelTopic.tsx +56 -0
  43. package/src/ui/components/explorer/panels/index.ts +5 -0
  44. package/src/ui/components/graph/DevDependencyGraph.tsx +35 -60
  45. package/src/ui/components/graph/GraphControls.tsx +10 -11
  46. package/src/ui/components/graph/NodeDetails.tsx +22 -29
  47. package/src/ui/components/graph/ProviderNode.tsx +4 -4
  48. package/src/ui/components/graph/helpers.ts +1 -1
  49. package/src/ui/components/logs/DevLogs.tsx +661 -0
  50. package/src/ui/components/logs/index.ts +1 -0
  51. package/src/ui/components/shared/TreeView.tsx +189 -0
  52. package/src/ui/components/sms/DevSms.tsx +225 -0
  53. package/src/ui/main.css +17 -0
  54. package/src/ui/main.ts +2 -6
  55. package/LICENSE +0 -21
  56. package/assets/devtools/actions.html +0 -21
  57. package/assets/devtools/actions.html.br +0 -0
  58. package/assets/devtools/actions.html.gz +0 -0
  59. package/assets/devtools/asset.BZV40eAE.css +0 -1
  60. package/assets/devtools/asset.BZV40eAE.css.br +0 -0
  61. package/assets/devtools/asset.BZV40eAE.css.gz +0 -0
  62. package/assets/devtools/asset.CBnMq2vO.css +0 -1
  63. package/assets/devtools/asset.CBnMq2vO.css.br +0 -0
  64. package/assets/devtools/asset.CBnMq2vO.css.gz +0 -0
  65. package/assets/devtools/atoms.html +0 -21
  66. package/assets/devtools/atoms.html.br +0 -0
  67. package/assets/devtools/atoms.html.gz +0 -0
  68. package/assets/devtools/caches.html +0 -21
  69. package/assets/devtools/caches.html.br +0 -0
  70. package/assets/devtools/caches.html.gz +0 -0
  71. package/assets/devtools/chunk.6INqNjF0.js +0 -1
  72. package/assets/devtools/chunk.6INqNjF0.js.br +0 -0
  73. package/assets/devtools/chunk.6INqNjF0.js.gz +0 -0
  74. package/assets/devtools/chunk.9vpWpXSF.js +0 -1
  75. package/assets/devtools/chunk.9vpWpXSF.js.br +0 -0
  76. package/assets/devtools/chunk.9vpWpXSF.js.gz +0 -0
  77. package/assets/devtools/chunk.B4peH6PS.js +0 -1
  78. package/assets/devtools/chunk.B4peH6PS.js.br +0 -0
  79. package/assets/devtools/chunk.B4peH6PS.js.gz +0 -0
  80. package/assets/devtools/chunk.B8CNjZzU.js +0 -1
  81. package/assets/devtools/chunk.B8CNjZzU.js.br +0 -0
  82. package/assets/devtools/chunk.B8CNjZzU.js.gz +0 -0
  83. package/assets/devtools/chunk.Bgd10SVI.js +0 -1
  84. package/assets/devtools/chunk.Bgd10SVI.js.br +0 -0
  85. package/assets/devtools/chunk.Bgd10SVI.js.gz +0 -0
  86. package/assets/devtools/chunk.BjFrJKj1.js +0 -1
  87. package/assets/devtools/chunk.BjFrJKj1.js.br +0 -2
  88. package/assets/devtools/chunk.BjFrJKj1.js.gz +0 -0
  89. package/assets/devtools/chunk.BlqFPyLh.js +0 -1
  90. package/assets/devtools/chunk.BlqFPyLh.js.br +0 -0
  91. package/assets/devtools/chunk.BlqFPyLh.js.gz +0 -0
  92. package/assets/devtools/chunk.BqBNmfN9.js +0 -1
  93. package/assets/devtools/chunk.BqBNmfN9.js.br +0 -0
  94. package/assets/devtools/chunk.BqBNmfN9.js.gz +0 -0
  95. package/assets/devtools/chunk.Bt0_vkJm.js +0 -2
  96. package/assets/devtools/chunk.Bt0_vkJm.js.br +0 -0
  97. package/assets/devtools/chunk.Bt0_vkJm.js.gz +0 -0
  98. package/assets/devtools/chunk.C3GuU4pz.js +0 -2
  99. package/assets/devtools/chunk.C3GuU4pz.js.br +0 -0
  100. package/assets/devtools/chunk.C3GuU4pz.js.gz +0 -0
  101. package/assets/devtools/chunk.CGwoN_Mo.js +0 -1
  102. package/assets/devtools/chunk.CGwoN_Mo.js.br +0 -0
  103. package/assets/devtools/chunk.CGwoN_Mo.js.gz +0 -0
  104. package/assets/devtools/chunk.CJCvhHA7.js +0 -1
  105. package/assets/devtools/chunk.CJCvhHA7.js.br +0 -2
  106. package/assets/devtools/chunk.CJCvhHA7.js.gz +0 -0
  107. package/assets/devtools/chunk.CKr2VE6v.js +0 -1
  108. package/assets/devtools/chunk.CKr2VE6v.js.br +0 -0
  109. package/assets/devtools/chunk.CKr2VE6v.js.gz +0 -0
  110. package/assets/devtools/chunk.CLvTwbkw.js +0 -1
  111. package/assets/devtools/chunk.CLvTwbkw.js.br +0 -0
  112. package/assets/devtools/chunk.CLvTwbkw.js.gz +0 -0
  113. package/assets/devtools/chunk.CR13dZhE.js +0 -7
  114. package/assets/devtools/chunk.CR13dZhE.js.br +0 -0
  115. package/assets/devtools/chunk.CR13dZhE.js.gz +0 -0
  116. package/assets/devtools/chunk.C_C-cVqs.js +0 -1
  117. package/assets/devtools/chunk.C_C-cVqs.js.br +0 -1
  118. package/assets/devtools/chunk.C_C-cVqs.js.gz +0 -0
  119. package/assets/devtools/chunk.CjevPbPy.js +0 -1
  120. package/assets/devtools/chunk.CjevPbPy.js.br +0 -0
  121. package/assets/devtools/chunk.CjevPbPy.js.gz +0 -0
  122. package/assets/devtools/chunk.CkNMZqAe.js +0 -1
  123. package/assets/devtools/chunk.CkNMZqAe.js.br +0 -0
  124. package/assets/devtools/chunk.CkNMZqAe.js.gz +0 -0
  125. package/assets/devtools/chunk.Cl1Mlnqx.js +0 -1
  126. package/assets/devtools/chunk.Cl1Mlnqx.js.br +0 -0
  127. package/assets/devtools/chunk.Cl1Mlnqx.js.gz +0 -0
  128. package/assets/devtools/chunk.CyY8OGdZ.js +0 -1
  129. package/assets/devtools/chunk.CyY8OGdZ.js.br +0 -0
  130. package/assets/devtools/chunk.CyY8OGdZ.js.gz +0 -0
  131. package/assets/devtools/chunk.Cyx9kLqD.js +0 -1
  132. package/assets/devtools/chunk.Cyx9kLqD.js.br +0 -0
  133. package/assets/devtools/chunk.Cyx9kLqD.js.gz +0 -0
  134. package/assets/devtools/chunk.D1MGgxUI.js +0 -1
  135. package/assets/devtools/chunk.D1MGgxUI.js.br +0 -0
  136. package/assets/devtools/chunk.D1MGgxUI.js.gz +0 -0
  137. package/assets/devtools/chunk.D5Ci-dwk.js +0 -1
  138. package/assets/devtools/chunk.D5Ci-dwk.js.br +0 -0
  139. package/assets/devtools/chunk.D5Ci-dwk.js.gz +0 -0
  140. package/assets/devtools/chunk.DFrWQW5x.js +0 -9
  141. package/assets/devtools/chunk.DFrWQW5x.js.br +0 -0
  142. package/assets/devtools/chunk.DFrWQW5x.js.gz +0 -0
  143. package/assets/devtools/chunk.DaVlli3f.js +0 -1
  144. package/assets/devtools/chunk.DaVlli3f.js.br +0 -0
  145. package/assets/devtools/chunk.DaVlli3f.js.gz +0 -0
  146. package/assets/devtools/chunk.DdyBCs50.js +0 -1
  147. package/assets/devtools/chunk.DdyBCs50.js.br +0 -0
  148. package/assets/devtools/chunk.DdyBCs50.js.gz +0 -0
  149. package/assets/devtools/chunk.Dl0THvrP.js +0 -1
  150. package/assets/devtools/chunk.Dl0THvrP.js.br +0 -0
  151. package/assets/devtools/chunk.Dl0THvrP.js.gz +0 -0
  152. package/assets/devtools/chunk.DwUNDm68.js +0 -1
  153. package/assets/devtools/chunk.DwUNDm68.js.br +0 -0
  154. package/assets/devtools/chunk.DwUNDm68.js.gz +0 -0
  155. package/assets/devtools/chunk.DzDkh4C6.js +0 -1
  156. package/assets/devtools/chunk.DzDkh4C6.js.br +0 -0
  157. package/assets/devtools/chunk.DzDkh4C6.js.gz +0 -0
  158. package/assets/devtools/chunk.QTExp4CY.js +0 -1
  159. package/assets/devtools/chunk.QTExp4CY.js.br +0 -0
  160. package/assets/devtools/chunk.QTExp4CY.js.gz +0 -0
  161. package/assets/devtools/chunk.ReCPcJln.js +0 -1
  162. package/assets/devtools/chunk.ReCPcJln.js.br +0 -0
  163. package/assets/devtools/chunk.ReCPcJln.js.gz +0 -0
  164. package/assets/devtools/chunk.UEhIKOMY.js +0 -1
  165. package/assets/devtools/chunk.UEhIKOMY.js.br +0 -0
  166. package/assets/devtools/chunk.UEhIKOMY.js.gz +0 -0
  167. package/assets/devtools/chunk.mWQqK3dU.js +0 -1
  168. package/assets/devtools/chunk.mWQqK3dU.js.br +0 -0
  169. package/assets/devtools/chunk.mWQqK3dU.js.gz +0 -0
  170. package/assets/devtools/chunk.uyVen0u2.js +0 -1
  171. package/assets/devtools/chunk.uyVen0u2.js.br +0 -0
  172. package/assets/devtools/chunk.uyVen0u2.js.gz +0 -0
  173. package/assets/devtools/chunk.yLRX_cUF.js +0 -1
  174. package/assets/devtools/chunk.yLRX_cUF.js.br +0 -0
  175. package/assets/devtools/chunk.yLRX_cUF.js.gz +0 -0
  176. package/assets/devtools/chunk.zuZxBYZg.js +0 -1
  177. package/assets/devtools/chunk.zuZxBYZg.js.br +0 -0
  178. package/assets/devtools/chunk.zuZxBYZg.js.gz +0 -0
  179. package/assets/devtools/db.html +0 -21
  180. package/assets/devtools/db.html.br +0 -0
  181. package/assets/devtools/db.html.gz +0 -0
  182. package/assets/devtools/entry.Cry3rxEI.js +0 -79
  183. package/assets/devtools/entry.Cry3rxEI.js.br +0 -0
  184. package/assets/devtools/entry.Cry3rxEI.js.gz +0 -0
  185. package/assets/devtools/env.html +0 -21
  186. package/assets/devtools/env.html.br +0 -0
  187. package/assets/devtools/env.html.gz +0 -0
  188. package/assets/devtools/graph.html +0 -22
  189. package/assets/devtools/graph.html.br +0 -0
  190. package/assets/devtools/graph.html.gz +0 -0
  191. package/assets/devtools/index.html +0 -21
  192. package/assets/devtools/index.html.br +0 -0
  193. package/assets/devtools/index.html.gz +0 -0
  194. package/assets/devtools/logs.html +0 -21
  195. package/assets/devtools/logs.html.br +0 -0
  196. package/assets/devtools/logs.html.gz +0 -0
  197. package/assets/devtools/queues.html +0 -21
  198. package/assets/devtools/queues.html.br +0 -0
  199. package/assets/devtools/queues.html.gz +0 -0
  200. package/assets/devtools/topics.html +0 -21
  201. package/assets/devtools/topics.html.br +0 -0
  202. package/assets/devtools/topics.html.gz +0 -0
  203. package/src/api/DevToolsProvider.ts +0 -157
  204. package/src/api/providers/DevToolsDatabaseProvider.ts +0 -27
  205. package/src/api/repositories/LogRepository.ts +0 -8
  206. package/src/api/schemas/DevCommandMetadata.ts +0 -9
  207. package/src/ui/components/DevAtomsViewer.tsx +0 -637
  208. package/src/ui/components/DevCacheInspector.tsx +0 -423
  209. package/src/ui/components/DevDashboard.tsx +0 -38
  210. package/src/ui/components/DevEnvExplorer.tsx +0 -462
  211. package/src/ui/components/DevLogViewer.tsx +0 -252
  212. package/src/ui/components/DevQueueMonitor.tsx +0 -51
  213. package/src/ui/components/DevTopicsViewer.tsx +0 -686
  214. package/src/ui/components/actions/ActionGroup.tsx +0 -37
  215. package/src/ui/components/actions/ActionItem.tsx +0 -138
  216. package/src/ui/components/actions/DevActionsExplorer.tsx +0 -132
  217. package/src/ui/components/actions/MethodBadge.tsx +0 -18
  218. package/src/ui/components/actions/SchemaViewer.tsx +0 -21
  219. package/src/ui/components/actions/TryItPanel.tsx +0 -140
  220. package/src/ui/components/actions/constants.ts +0 -7
  221. package/src/ui/components/actions/helpers.ts +0 -18
  222. package/src/ui/components/actions/index.ts +0 -8
  223. package/src/ui/components/db/ColumnBadge.tsx +0 -55
  224. package/src/ui/components/db/DevDbStudio.tsx +0 -485
  225. package/src/ui/components/db/constants.ts +0 -11
  226. package/src/ui/components/db/index.ts +0 -4
  227. package/src/ui/components/db/types.ts +0 -7
  228. package/src/ui/styles.css +0 -1
  229. /package/src/{api/schemas → schemas}/DevAtomMetadata.ts +0 -0
  230. /package/src/{api/schemas → schemas}/DevBucketMetadata.ts +0 -0
  231. /package/src/{api/schemas → schemas}/DevCacheMetadata.ts +0 -0
  232. /package/src/{api/schemas → schemas}/DevEnvMetadata.ts +0 -0
  233. /package/src/{api/schemas → schemas}/DevModuleMetadata.ts +0 -0
  234. /package/src/{api/schemas → schemas}/DevProviderMetadata.ts +0 -0
  235. /package/src/{api/schemas → schemas}/DevQueueMetadata.ts +0 -0
  236. /package/src/{api/schemas → schemas}/DevRealmMetadata.ts +0 -0
  237. /package/src/{api/schemas → schemas}/DevRouteMetadata.ts +0 -0
  238. /package/src/{api/schemas → schemas}/DevSchedulerMetadata.ts +0 -0
package/dist/index.js CHANGED
@@ -1,46 +1,27 @@
1
- import { $context, $hook, $inject, $module, Alepha, pageQuerySchema, t } from "alepha";
2
- import { join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { $batch } from "alepha/batch";
5
- import { $logger, JsonFormatterProvider } from "alepha/logger";
6
- import { $entity, PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, Repository, RepositoryProvider, SqliteProvider, parseQueryString, pg } from "alepha/orm";
7
- import { $action, $route, ServerProvider } from "alepha/server";
8
- import { $serve } from "alepha/server/static";
1
+ import { $hook, $inject, $module, $state, Alepha, t } from "alepha";
2
+ import { $action, $route, AlephaServer, ServerProvider } from "alepha/server";
3
+ import { $serve, AlephaServerStatic } from "alepha/server/static";
9
4
  import { $bucket } from "alepha/bucket";
10
5
  import { $cache } from "alepha/cache";
11
- import { $command } from "alepha/command";
6
+ import { DateTimeProvider } from "alepha/datetime";
7
+ import { $logger, MemoryDestinationProvider } from "alepha/logger";
8
+ import { PG_CREATED_AT, PG_DEFAULT, PG_DELETED_AT, PG_IDENTITY, PG_PRIMARY_KEY, PG_REF, PG_SERIAL, PG_UPDATED_AT, PG_VERSION, RepositoryProvider } from "alepha/orm";
12
9
  import { $queue } from "alepha/queue";
10
+ import { $page } from "alepha/react/router";
13
11
  import { $scheduler } from "alepha/scheduler";
14
12
  import { $issuer } from "alepha/security";
15
13
  import { $topic } from "alepha/topic";
16
-
17
- //#region src/api/entities/logs.ts
18
- const logs = $entity({
19
- name: "logs",
20
- schema: t.object({
21
- id: pg.primaryKey(),
22
- level: t.enum([
23
- "TRACE",
24
- "DEBUG",
25
- "INFO",
26
- "WARN",
27
- "ERROR"
28
- ]),
29
- message: t.text({ size: "rich" }),
30
- service: t.text(),
31
- module: t.text(),
32
- context: t.optional(t.text()),
33
- app: t.optional(t.text()),
34
- data: t.optional(t.json()),
35
- timestamp: t.integer()
36
- })
37
- });
38
-
39
- //#endregion
40
- //#region src/api/providers/DevToolsMetadataProvider.ts
14
+ import { localEmailOptions } from "alepha/email";
15
+ import { FileSystemProvider } from "alepha/system";
16
+ import { join } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+ //#region src/providers/DevToolsMetadataProvider.ts
41
19
  var DevToolsMetadataProvider = class {
42
20
  alepha = $inject(Alepha);
21
+ dateTime = $inject(DateTimeProvider);
43
22
  log = $logger();
23
+ serverProvider = $inject(ServerProvider);
24
+ startedAt = this.dateTime.nowMillis();
44
25
  getActions() {
45
26
  return this.alepha.primitives($action).map((action) => {
46
27
  const schema = action.schema;
@@ -55,13 +36,14 @@ var DevToolsMetadataProvider = class {
55
36
  description: action.options.description,
56
37
  summary: options.summary,
57
38
  disabled: action.options.disabled,
58
- secure: options.secure,
39
+ secure: action.middlewares.some((m) => m?.name === "$secure") || void 0,
59
40
  hide: options.hide,
60
41
  body: schema?.body,
61
42
  params: schema?.params,
62
43
  query: schema?.query,
63
44
  response: schema?.response,
64
- bodyContentType: action.getBodyContentType()
45
+ bodyContentType: action.getBodyContentType(),
46
+ middlewares: action.middlewares.filter(Boolean).length ? action.middlewares.filter(Boolean) : void 0
65
47
  };
66
48
  });
67
49
  }
@@ -83,12 +65,20 @@ var DevToolsMetadataProvider = class {
83
65
  }));
84
66
  }
85
67
  getTopics() {
86
- return this.alepha.primitives($topic).map((topic) => ({
87
- name: topic.name,
88
- description: topic.options.description,
89
- schema: topic.options.schema,
90
- provider: this.getProviderName(topic.options.provider)
91
- }));
68
+ const topicPrimitives = this.alepha.primitives($topic);
69
+ const topicMap = /* @__PURE__ */ new Map();
70
+ for (const topic of topicPrimitives) {
71
+ const existing = topicMap.get(topic.name);
72
+ if (existing) existing.subscribers++;
73
+ else topicMap.set(topic.name, {
74
+ name: topic.name,
75
+ description: topic.options.description,
76
+ schema: topic.options.schema,
77
+ provider: this.getProviderName(topic.options.provider),
78
+ subscribers: 1
79
+ });
80
+ }
81
+ return Array.from(topicMap.values());
92
82
  }
93
83
  getBuckets() {
94
84
  return this.alepha.primitives($bucket).map((bucket) => ({
@@ -123,7 +113,30 @@ var DevToolsMetadataProvider = class {
123
113
  }));
124
114
  }
125
115
  getPages() {
126
- return [];
116
+ return this.alepha.primitives($page).map((page) => {
117
+ const children = typeof page.options.children === "function" ? page.options.children() : page.options.children;
118
+ const childrenNames = Array.isArray(children) ? children.map((c) => c.name).filter(Boolean) : void 0;
119
+ return {
120
+ name: page.name,
121
+ label: page.options.label,
122
+ description: page.options.description,
123
+ path: page.options.path,
124
+ parentName: page.options.parent?.name,
125
+ params: page.options.schema?.params,
126
+ query: page.options.schema?.query,
127
+ hasComponent: !!page.options.component,
128
+ hasLazy: !!page.options.lazy,
129
+ hasResolve: !!page.options.resolve,
130
+ childrenNames: childrenNames?.length ? childrenNames : void 0,
131
+ hasChildren: !!page.options.children,
132
+ hasParent: !!page.options.parent,
133
+ hasErrorHandler: !!page.options.errorHandler,
134
+ static: typeof page.options.static === "boolean" ? page.options.static : !!page.options.static,
135
+ cache: page.options.cache,
136
+ client: page.options.client,
137
+ animation: page.options.animation
138
+ };
139
+ });
127
140
  }
128
141
  getProviders() {
129
142
  const graph = this.alepha.graph();
@@ -203,7 +216,10 @@ var DevToolsMetadataProvider = class {
203
216
  columns,
204
217
  indexes,
205
218
  foreignKeys,
206
- constraints
219
+ constraints,
220
+ schema: entity.schema,
221
+ insertSchema: entity.insertSchema,
222
+ updateSchema: entity.updateSchema
207
223
  };
208
224
  });
209
225
  } catch {
@@ -237,13 +253,6 @@ var DevToolsMetadataProvider = class {
237
253
  if (t.schema.isUnion(field) && field.anyOf) return field.anyOf.some((type) => t.schema.isNull(type));
238
254
  return false;
239
255
  }
240
- getCommands() {
241
- return this.alepha.primitives($command).filter((cmd) => !cmd.options.hide).map((command) => ({
242
- name: command.name,
243
- description: command.options.description,
244
- hidden: command.options.hide
245
- }));
246
- }
247
256
  getRoutes() {
248
257
  return [];
249
258
  }
@@ -264,8 +273,22 @@ var DevToolsMetadataProvider = class {
264
273
  currentValue: value
265
274
  }));
266
275
  }
276
+ getSystem() {
277
+ const isBun = typeof globalThis.Bun !== "undefined";
278
+ const port = Number(this.alepha.env.SERVER_PORT) || 3e3;
279
+ return {
280
+ alephaVersion: String(this.alepha.env.npm_package_version ?? "unknown"),
281
+ nodeVersion: isBun ? globalThis.Bun?.version ?? "unknown" : process.version,
282
+ runtime: isBun ? "bun" : "node",
283
+ mode: this.alepha.isProduction() ? "production" : "development",
284
+ port,
285
+ uptime: (this.dateTime.nowMillis() - this.startedAt) / 1e3,
286
+ memoryUsage: process.memoryUsage?.()?.heapUsed ?? 0
287
+ };
288
+ }
267
289
  getMetadata() {
268
290
  return {
291
+ system: this.getSystem(),
269
292
  actions: this.getActions(),
270
293
  queues: this.getQueues(),
271
294
  schedulers: this.getSchedulers(),
@@ -277,7 +300,6 @@ var DevToolsMetadataProvider = class {
277
300
  providers: this.getProviders(),
278
301
  modules: this.getModules(),
279
302
  entities: this.getEntities(),
280
- commands: this.getCommands(),
281
303
  routes: this.getRoutes(),
282
304
  envs: this.getEnvs(),
283
305
  atoms: this.getAtoms()
@@ -289,37 +311,11 @@ var DevToolsMetadataProvider = class {
289
311
  return provider.name || "custom";
290
312
  }
291
313
  };
292
-
293
- //#endregion
294
- //#region src/api/providers/DevToolsDatabaseProvider.ts
295
- var DevToolsDatabaseProvider = class extends SqliteProvider {
296
- get name() {
297
- return "";
298
- }
299
- options = { path: ":memory:" };
300
- async migrate() {
301
- this.sqlite.exec(`
302
- CREATE TABLE IF NOT EXISTS logs (
303
- id INTEGER PRIMARY KEY AUTOINCREMENT,
304
- level TEXT NOT NULL,
305
- message TEXT,
306
- service TEXT,
307
- module TEXT,
308
- context TEXT,
309
- app TEXT,
310
- data TEXT,
311
- timestamp INTEGER NOT NULL
312
- )
313
- `);
314
- }
315
- };
316
-
317
314
  //#endregion
318
- //#region src/api/repositories/LogRepository.ts
319
- var LogRepository = class extends Repository.of(logs, DevToolsDatabaseProvider) {};
320
-
315
+ //#region src/assets.ts
316
+ const devtoolsAssets = { ui: join(fileURLToPath(import.meta.url), "../../assets/ui") };
321
317
  //#endregion
322
- //#region src/api/schemas/DevActionMetadata.ts
318
+ //#region src/schemas/DevActionMetadata.ts
323
319
  const devActionMetadataSchema = t.object({
324
320
  name: t.text(),
325
321
  group: t.text(),
@@ -336,11 +332,14 @@ const devActionMetadataSchema = t.object({
336
332
  params: t.optional(t.any()),
337
333
  query: t.optional(t.any()),
338
334
  response: t.optional(t.any()),
339
- bodyContentType: t.optional(t.text())
335
+ bodyContentType: t.optional(t.text()),
336
+ middlewares: t.optional(t.array(t.object({
337
+ name: t.text(),
338
+ options: t.optional(t.any())
339
+ })))
340
340
  });
341
-
342
341
  //#endregion
343
- //#region src/api/schemas/DevAtomMetadata.ts
342
+ //#region src/schemas/DevAtomMetadata.ts
344
343
  const devAtomMetadataSchema = t.object({
345
344
  name: t.text(),
346
345
  description: t.optional(t.text()),
@@ -348,9 +347,8 @@ const devAtomMetadataSchema = t.object({
348
347
  defaultValue: t.optional(t.any()),
349
348
  currentValue: t.optional(t.any())
350
349
  });
351
-
352
350
  //#endregion
353
- //#region src/api/schemas/DevBucketMetadata.ts
351
+ //#region src/schemas/DevBucketMetadata.ts
354
352
  const devBucketMetadataSchema = t.object({
355
353
  name: t.text(),
356
354
  description: t.optional(t.text()),
@@ -358,26 +356,16 @@ const devBucketMetadataSchema = t.object({
358
356
  maxSize: t.optional(t.number()),
359
357
  provider: t.text()
360
358
  });
361
-
362
359
  //#endregion
363
- //#region src/api/schemas/DevCacheMetadata.ts
360
+ //#region src/schemas/DevCacheMetadata.ts
364
361
  const devCacheMetadataSchema = t.object({
365
362
  name: t.text(),
366
363
  ttl: t.optional(t.any()),
367
364
  disabled: t.optional(t.boolean()),
368
365
  provider: t.text()
369
366
  });
370
-
371
367
  //#endregion
372
- //#region src/api/schemas/DevCommandMetadata.ts
373
- const devCommandMetadataSchema = t.object({
374
- name: t.text(),
375
- description: t.optional(t.text()),
376
- hidden: t.optional(t.boolean())
377
- });
378
-
379
- //#endregion
380
- //#region src/api/schemas/DevEntityMetadata.ts
368
+ //#region src/schemas/DevEntityMetadata.ts
381
369
  const devEntityColumnSchema = t.object({
382
370
  name: t.text(),
383
371
  type: t.text(),
@@ -419,36 +407,39 @@ const devEntityMetadataSchema = t.object({
419
407
  columns: t.array(devEntityColumnSchema),
420
408
  indexes: t.array(devEntityIndexSchema),
421
409
  foreignKeys: t.array(devEntityForeignKeySchema),
422
- constraints: t.array(devEntityConstraintSchema)
410
+ constraints: t.array(devEntityConstraintSchema),
411
+ schema: t.optional(t.any()),
412
+ insertSchema: t.optional(t.any()),
413
+ updateSchema: t.optional(t.any())
423
414
  });
424
-
425
415
  //#endregion
426
- //#region src/api/schemas/DevEnvMetadata.ts
416
+ //#region src/schemas/DevEnvMetadata.ts
427
417
  const devEnvMetadataSchema = t.object({
428
418
  propertyKey: t.text(),
429
419
  schema: t.any(),
430
420
  values: t.record(t.text(), t.any()),
431
421
  serviceName: t.optional(t.text())
432
422
  });
433
-
434
423
  //#endregion
435
- //#region src/api/schemas/DevModuleMetadata.ts
424
+ //#region src/schemas/DevModuleMetadata.ts
436
425
  const devModuleMetadataSchema = t.object({
437
426
  name: t.text(),
438
427
  providers: t.array(t.text())
439
428
  });
440
-
441
429
  //#endregion
442
- //#region src/api/schemas/DevPageMetadata.ts
430
+ //#region src/schemas/DevPageMetadata.ts
443
431
  const devPageMetadataSchema = t.object({
444
432
  name: t.text(),
433
+ label: t.optional(t.text()),
445
434
  description: t.optional(t.text()),
446
435
  path: t.optional(t.text()),
436
+ parentName: t.optional(t.text()),
447
437
  params: t.optional(t.any()),
448
438
  query: t.optional(t.any()),
449
439
  hasComponent: t.boolean(),
450
440
  hasLazy: t.boolean(),
451
441
  hasResolve: t.boolean(),
442
+ childrenNames: t.optional(t.array(t.text())),
452
443
  hasChildren: t.boolean(),
453
444
  hasParent: t.boolean(),
454
445
  hasErrorHandler: t.boolean(),
@@ -457,27 +448,24 @@ const devPageMetadataSchema = t.object({
457
448
  client: t.optional(t.any()),
458
449
  animation: t.optional(t.any())
459
450
  });
460
-
461
451
  //#endregion
462
- //#region src/api/schemas/DevProviderMetadata.ts
452
+ //#region src/schemas/DevProviderMetadata.ts
463
453
  const devProviderMetadataSchema = t.object({
464
454
  name: t.text(),
465
455
  module: t.optional(t.text()),
466
456
  dependencies: t.array(t.text()),
467
457
  aliases: t.optional(t.array(t.text()))
468
458
  });
469
-
470
459
  //#endregion
471
- //#region src/api/schemas/DevQueueMetadata.ts
460
+ //#region src/schemas/DevQueueMetadata.ts
472
461
  const devQueueMetadataSchema = t.object({
473
462
  name: t.text(),
474
463
  description: t.optional(t.text()),
475
464
  schema: t.optional(t.any()),
476
465
  provider: t.text()
477
466
  });
478
-
479
467
  //#endregion
480
- //#region src/api/schemas/DevRealmMetadata.ts
468
+ //#region src/schemas/DevRealmMetadata.ts
481
469
  const devRealmMetadataSchema = t.object({
482
470
  name: t.text(),
483
471
  description: t.optional(t.text()),
@@ -491,16 +479,14 @@ const devRealmMetadataSchema = t.object({
491
479
  hasOnDeleteSession: t.boolean()
492
480
  }))
493
481
  });
494
-
495
482
  //#endregion
496
- //#region src/api/schemas/DevRouteMetadata.ts
483
+ //#region src/schemas/DevRouteMetadata.ts
497
484
  const devRouteMetadataSchema = t.object({
498
485
  method: t.text(),
499
486
  path: t.text()
500
487
  });
501
-
502
488
  //#endregion
503
- //#region src/api/schemas/DevSchedulerMetadata.ts
489
+ //#region src/schemas/DevSchedulerMetadata.ts
504
490
  const devSchedulerMetadataSchema = t.object({
505
491
  name: t.text(),
506
492
  description: t.optional(t.text()),
@@ -508,19 +494,28 @@ const devSchedulerMetadataSchema = t.object({
508
494
  interval: t.optional(t.any()),
509
495
  lock: t.optional(t.boolean())
510
496
  });
511
-
512
497
  //#endregion
513
- //#region src/api/schemas/DevTopicMetadata.ts
498
+ //#region src/schemas/DevTopicMetadata.ts
514
499
  const devTopicMetadataSchema = t.object({
515
500
  name: t.text(),
516
501
  description: t.optional(t.text()),
517
502
  schema: t.optional(t.any()),
518
- provider: t.text()
503
+ provider: t.text(),
504
+ subscribers: t.integer()
519
505
  });
520
-
521
506
  //#endregion
522
- //#region src/api/schemas/DevMetadata.ts
507
+ //#region src/schemas/DevMetadata.ts
508
+ const devSystemSchema = t.object({
509
+ alephaVersion: t.text(),
510
+ nodeVersion: t.text(),
511
+ runtime: t.enum(["node", "bun"]),
512
+ mode: t.enum(["development", "production"]),
513
+ port: t.integer(),
514
+ uptime: t.number(),
515
+ memoryUsage: t.number()
516
+ });
523
517
  const devMetadataSchema = t.object({
518
+ system: devSystemSchema,
524
519
  actions: t.array(devActionMetadataSchema),
525
520
  queues: t.array(devQueueMetadataSchema),
526
521
  schedulers: t.array(devSchedulerMetadataSchema),
@@ -532,84 +527,55 @@ const devMetadataSchema = t.object({
532
527
  providers: t.array(devProviderMetadataSchema),
533
528
  modules: t.array(devModuleMetadataSchema),
534
529
  entities: t.array(devEntityMetadataSchema),
535
- commands: t.array(devCommandMetadataSchema),
536
530
  routes: t.array(devRouteMetadataSchema),
537
531
  envs: t.array(devEnvMetadataSchema),
538
532
  atoms: t.array(devAtomMetadataSchema)
539
533
  });
540
-
541
534
  //#endregion
542
- //#region src/api/DevToolsProvider.ts
535
+ //#region src/providers/DevToolsProvider.ts
543
536
  var DevToolsProvider = class {
544
537
  log = $logger();
545
538
  alepha = $inject(Alepha);
546
539
  serverProvider = $inject(ServerProvider);
547
- jsonFormatter = $inject(JsonFormatterProvider);
548
- logs = $inject(LogRepository);
549
540
  devCollectorProvider = $inject(DevToolsMetadataProvider);
541
+ memoryDestination = $inject(MemoryDestinationProvider);
542
+ fs = $inject(FileSystemProvider);
543
+ emailOptions = $state(localEmailOptions);
550
544
  onStart = $hook({
551
545
  on: "start",
552
546
  handler: () => {
553
- this.log.info("Devtools OK", { url: `${this.serverProvider.hostname}/devtools/` });
554
- }
555
- });
556
- batchLogs = $batch({
557
- maxSize: 50,
558
- maxDuration: [10, "seconds"],
559
- schema: logs.insertSchema,
560
- handler: async (entries) => {
561
- await this.logs.createMany(entries);
547
+ this.log.info("Devtools OK", { url: `${this.serverProvider.hostname}/__devtools/` });
562
548
  }
563
549
  });
550
+ /**
551
+ * Capture all logs into memory so the devtools UI can display them.
552
+ * In dev mode, LogDestinationProvider is bound to ConsoleDestinationProvider,
553
+ * so MemoryDestinationProvider would otherwise never receive writes.
554
+ */
564
555
  onLog = $hook({
565
556
  on: "log",
566
- handler: async (ev) => {
567
- try {
568
- if (!this.alepha.isStarted()) return;
569
- ev.entry.message = ev.entry.message?.slice(0, 2e3);
570
- if (ev.entry.module === "alepha.devtools") return;
571
- if (ev.entry.level === "TRACE" && ev.entry.module === "alepha.batch") return;
572
- if (this.alepha.isProduction() && ev.entry.level === "TRACE") return;
573
- const entry = {
574
- ...ev.entry,
575
- data: ev.entry.data instanceof Error ? this.jsonFormatter.formatJsonError(ev.entry.data) : typeof ev.entry.data === "object" && !Array.isArray(ev.entry.data) ? ev.entry.data : { data: ev.entry.data }
576
- };
577
- await this.batchLogs.push(entry);
578
- } catch (error) {
579
- console.error(error, ev);
580
- }
557
+ handler: ({ entry }) => {
558
+ this.memoryDestination.write("", entry);
581
559
  }
582
560
  });
583
561
  uiRoute = $serve({
584
- path: "/devtools",
585
- root: join(fileURLToPath(import.meta.url), "../../../assets/devtools"),
586
- historyApiFallback: true
562
+ path: "/__devtools",
563
+ root: devtoolsAssets.ui,
564
+ historyApiFallback: true,
565
+ silent: true
587
566
  });
588
567
  metadataRoute = $route({
589
568
  method: "GET",
590
- path: "/devtools/api/metadata",
569
+ path: "/__devtools/api/metadata",
591
570
  silent: true,
592
571
  schema: { response: devMetadataSchema },
593
572
  handler: () => {
594
573
  return this.devCollectorProvider.getMetadata();
595
574
  }
596
575
  });
597
- logsRoute = $route({
598
- method: "GET",
599
- path: "/devtools/api/logs",
600
- silent: true,
601
- schema: {
602
- query: t.extend(pageQuerySchema, { search: t.optional(t.string()) }),
603
- response: t.page(logs.schema)
604
- },
605
- handler: ({ query }) => {
606
- query.sort ??= "-timestamp";
607
- return this.logs.paginate(query, query.search ? { where: parseQueryString(query.search) } : {}, { count: true });
608
- }
609
- });
610
576
  updateAtomRoute = $route({
611
577
  method: "POST",
612
- path: "/devtools/api/atoms",
578
+ path: "/__devtools/api/atoms",
613
579
  silent: true,
614
580
  schema: {
615
581
  body: t.object({
@@ -627,15 +593,221 @@ var DevToolsProvider = class {
627
593
  return { success: false };
628
594
  }
629
595
  });
596
+ logsRoute = $route({
597
+ method: "GET",
598
+ path: "/__devtools/api/logs",
599
+ silent: true,
600
+ schema: {
601
+ query: t.object({
602
+ level: t.optional(t.text()),
603
+ type: t.optional(t.text()),
604
+ module: t.optional(t.text()),
605
+ search: t.optional(t.text()),
606
+ since: t.optional(t.text()),
607
+ limit: t.optional(t.text()),
608
+ offset: t.optional(t.text())
609
+ }),
610
+ response: t.object({
611
+ logs: t.array(t.any()),
612
+ total: t.integer()
613
+ })
614
+ },
615
+ handler: ({ query }) => {
616
+ const levelOrder = [
617
+ "TRACE",
618
+ "DEBUG",
619
+ "INFO",
620
+ "WARN",
621
+ "ERROR"
622
+ ];
623
+ let entries = this.memoryDestination.logs;
624
+ if (query.level) {
625
+ const minIndex = levelOrder.indexOf(query.level.toUpperCase());
626
+ if (minIndex >= 0) entries = entries.filter((e) => levelOrder.indexOf(e.level) >= minIndex);
627
+ }
628
+ if (query.type) {
629
+ const types = query.type.split(",").map((t) => t.trim());
630
+ entries = entries.filter((e) => {
631
+ if (!e.data || typeof e.data !== "object") return false;
632
+ const d = e.data;
633
+ for (const t of types) if (t === "http" || t === "http:request") {
634
+ if (d.status && d.method && d.path && d.duration) return true;
635
+ } else if (t === "db" || t === "db:query") {
636
+ if (d.type === "db:query") return true;
637
+ } else if (d.type === t) return true;
638
+ return false;
639
+ });
640
+ }
641
+ if (query.module) entries = entries.filter((e) => e.module === query.module);
642
+ if (query.search) {
643
+ const terms = query.search.toLowerCase().split(/\s+/);
644
+ entries = entries.filter((e) => {
645
+ const text = `${e.message} ${e.module} ${e.service}`.toLowerCase();
646
+ return terms.every((term) => text.includes(term));
647
+ });
648
+ }
649
+ if (query.since) {
650
+ const since = Number(query.since);
651
+ if (!Number.isNaN(since)) entries = entries.filter((e) => e.timestamp >= since);
652
+ }
653
+ const total = entries.length;
654
+ entries = entries.reverse();
655
+ const offset = query.offset ? Number(query.offset) : 0;
656
+ const limit = query.limit ? Number(query.limit) : 100;
657
+ entries = entries.slice(offset, offset + limit);
658
+ return {
659
+ logs: entries,
660
+ total
661
+ };
662
+ }
663
+ });
664
+ emailsRoute = $route({
665
+ method: "GET",
666
+ path: "/__devtools/api/emails",
667
+ silent: true,
668
+ schema: { response: t.object({ emails: t.array(t.object({
669
+ to: t.text(),
670
+ subject: t.text(),
671
+ body: t.string(),
672
+ sentAt: t.text()
673
+ })) }) },
674
+ handler: async () => {
675
+ try {
676
+ const dir = this.emailOptions.directory;
677
+ if (!await this.fs.exists(dir)) return { emails: [] };
678
+ const emailFiles = (await this.fs.ls(dir)).filter((f) => f.endsWith(".eml.json"));
679
+ const emails = [];
680
+ for (const file of emailFiles) try {
681
+ const data = await this.fs.readJsonFile(this.fs.join(dir, file));
682
+ emails.push(data);
683
+ } catch {}
684
+ emails.sort((a, b) => b.sentAt.localeCompare(a.sentAt));
685
+ return { emails };
686
+ } catch {
687
+ return { emails: [] };
688
+ }
689
+ }
690
+ });
691
+ smsRoute = $route({
692
+ method: "GET",
693
+ path: "/__devtools/api/sms",
694
+ silent: true,
695
+ schema: { response: t.object({ messages: t.array(t.object({
696
+ to: t.text(),
697
+ message: t.string(),
698
+ sentAt: t.text()
699
+ })) }) },
700
+ handler: async () => {
701
+ try {
702
+ const dir = "node_modules/.alepha/sms";
703
+ if (!await this.fs.exists(dir)) return { messages: [] };
704
+ const smsFiles = (await this.fs.ls(dir)).filter((f) => f.endsWith(".sms.json"));
705
+ const messages = [];
706
+ for (const file of smsFiles) try {
707
+ const data = await this.fs.readJsonFile(this.fs.join(dir, file));
708
+ messages.push(data);
709
+ } catch {}
710
+ messages.sort((a, b) => b.sentAt.localeCompare(a.sentAt));
711
+ return { messages };
712
+ } catch {
713
+ return { messages: [] };
714
+ }
715
+ }
716
+ });
717
+ dbListRoute = $route({
718
+ method: "GET",
719
+ path: "/__devtools/api/db/:entity/records",
720
+ silent: true,
721
+ schema: {
722
+ params: t.object({ entity: t.text() }),
723
+ query: t.object({
724
+ page: t.optional(t.text()),
725
+ size: t.optional(t.text()),
726
+ sort: t.optional(t.text())
727
+ }),
728
+ response: t.record(t.text(), t.any())
729
+ },
730
+ handler: async ({ params, query }) => {
731
+ const repo = this.getRepository(params.entity);
732
+ if (!repo) return {
733
+ content: [],
734
+ page: { totalElements: 0 }
735
+ };
736
+ return repo.paginate({
737
+ page: query.page ? Number(query.page) : 0,
738
+ size: query.size ? Number(query.size) : 50,
739
+ sort: query.sort || void 0
740
+ }, {}, { count: true });
741
+ }
742
+ });
743
+ dbCreateRoute = $route({
744
+ method: "POST",
745
+ path: "/__devtools/api/db/:entity/records",
746
+ silent: true,
747
+ schema: {
748
+ params: t.object({ entity: t.text() }),
749
+ body: t.record(t.text(), t.any()),
750
+ response: t.record(t.text(), t.any())
751
+ },
752
+ handler: async ({ params, body }) => {
753
+ const repo = this.getRepository(params.entity);
754
+ if (!repo) return { error: "Entity not found" };
755
+ return repo.create(body);
756
+ }
757
+ });
758
+ dbUpdateRoute = $route({
759
+ method: "PUT",
760
+ path: "/__devtools/api/db/:entity/records/:id",
761
+ silent: true,
762
+ schema: {
763
+ params: t.object({
764
+ entity: t.text(),
765
+ id: t.text()
766
+ }),
767
+ body: t.record(t.text(), t.any()),
768
+ response: t.record(t.text(), t.any())
769
+ },
770
+ handler: async ({ params, body }) => {
771
+ const repo = this.getRepository(params.entity);
772
+ if (!repo) return { error: "Entity not found" };
773
+ const idValue = this.parseId(repo, params.id);
774
+ return repo.updateById(idValue, body);
775
+ }
776
+ });
777
+ dbDeleteRoute = $route({
778
+ method: "DELETE",
779
+ path: "/__devtools/api/db/:entity/records/:id",
780
+ silent: true,
781
+ schema: {
782
+ params: t.object({
783
+ entity: t.text(),
784
+ id: t.text()
785
+ }),
786
+ response: t.record(t.text(), t.any())
787
+ },
788
+ handler: async ({ params }) => {
789
+ const repo = this.getRepository(params.entity);
790
+ if (!repo) return { error: "Entity not found" };
791
+ const idValue = this.parseId(repo, params.id);
792
+ return repo.deleteById(idValue);
793
+ }
794
+ });
795
+ getRepository(entityName) {
796
+ try {
797
+ return this.alepha.inject(RepositoryProvider).getRepositories().find((r) => r.entity.name === entityName);
798
+ } catch {
799
+ return;
800
+ }
801
+ }
802
+ parseId(repo, rawId) {
803
+ const idType = repo.id.type;
804
+ if (idType?.type === "integer" || idType?.type === "number") return Number(rawId);
805
+ return rawId;
806
+ }
630
807
  };
631
-
632
808
  //#endregion
633
809
  //#region src/index.ts
634
810
  /**
635
- * | type | quality | stability |
636
- * |------|---------|-----------|
637
- * | tooling | rare | experimental |
638
- *
639
811
  * Runtime inspection and debugging UI.
640
812
  *
641
813
  * **Features:**
@@ -652,24 +824,16 @@ var DevToolsProvider = class {
652
824
  const AlephaDevtools = $module({
653
825
  name: "alepha.devtools",
654
826
  primitives: [],
655
- services: [
656
- DevToolsMetadataProvider,
657
- DevToolsProvider,
658
- DevToolsDatabaseProvider,
659
- LogRepository
660
- ],
827
+ services: [DevToolsMetadataProvider, DevToolsProvider],
661
828
  register: (alepha) => {
829
+ alepha.with(AlephaServer);
830
+ alepha.with(AlephaServerStatic);
662
831
  alepha.with(DevToolsProvider);
663
- alepha.with(DevToolsDatabaseProvider);
664
832
  alepha.with(DevToolsMetadataProvider);
665
- alepha.store.push("alepha.build.assets", "@alepha/devtools");
833
+ alepha.store.push("alepha.build.assets", "alepha");
666
834
  }
667
835
  });
668
- const $devtools = () => {
669
- $context().alepha.with(AlephaDevtools);
670
- return {};
671
- };
672
-
673
836
  //#endregion
674
- export { $devtools, AlephaDevtools, DevToolsMetadataProvider, devActionMetadataSchema, devBucketMetadataSchema, devCacheMetadataSchema, devCommandMetadataSchema, devEntityColumnSchema, devEntityConstraintSchema, devEntityForeignKeySchema, devEntityIndexSchema, devEntityMetadataSchema, devMetadataSchema, devModuleMetadataSchema, devPageMetadataSchema, devProviderMetadataSchema, devQueueMetadataSchema, devRealmMetadataSchema, devRouteMetadataSchema, devSchedulerMetadataSchema, devTopicMetadataSchema };
837
+ export { AlephaDevtools, DevToolsMetadataProvider, devActionMetadataSchema, devAtomMetadataSchema, devBucketMetadataSchema, devCacheMetadataSchema, devEntityColumnSchema, devEntityConstraintSchema, devEntityForeignKeySchema, devEntityIndexSchema, devEntityMetadataSchema, devEnvMetadataSchema, devMetadataSchema, devModuleMetadataSchema, devPageMetadataSchema, devProviderMetadataSchema, devQueueMetadataSchema, devRealmMetadataSchema, devRouteMetadataSchema, devSchedulerMetadataSchema, devSystemSchema, devTopicMetadataSchema };
838
+
675
839
  //# sourceMappingURL=index.js.map