@mantajs/cli 0.2.0-beta.0

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 (282) hide show
  1. package/bin/manta.mjs +20 -0
  2. package/bin/manta.ts +13 -0
  3. package/dist/admin/generate-admin-config.d.ts +8 -0
  4. package/dist/admin/generate-admin-config.d.ts.map +1 -0
  5. package/dist/admin/generate-admin-config.js +127 -0
  6. package/dist/admin/generate-admin-config.js.map +1 -0
  7. package/dist/ai/chat-handler.d.ts +10 -0
  8. package/dist/ai/chat-handler.d.ts.map +1 -0
  9. package/dist/ai/chat-handler.js +1353 -0
  10. package/dist/ai/chat-handler.js.map +1 -0
  11. package/dist/bootstrap/boot.d.ts +25 -0
  12. package/dist/bootstrap/boot.d.ts.map +1 -0
  13. package/dist/bootstrap/boot.js +344 -0
  14. package/dist/bootstrap/boot.js.map +1 -0
  15. package/dist/bootstrap/bootstrap-app.d.ts +71 -0
  16. package/dist/bootstrap/bootstrap-app.d.ts.map +1 -0
  17. package/dist/bootstrap/bootstrap-app.js +308 -0
  18. package/dist/bootstrap/bootstrap-app.js.map +1 -0
  19. package/dist/bootstrap/bootstrap-context.d.ts +76 -0
  20. package/dist/bootstrap/bootstrap-context.d.ts.map +1 -0
  21. package/dist/bootstrap/bootstrap-context.js +4 -0
  22. package/dist/bootstrap/bootstrap-context.js.map +1 -0
  23. package/dist/bootstrap/bootstrap-helpers.d.ts +71 -0
  24. package/dist/bootstrap/bootstrap-helpers.d.ts.map +1 -0
  25. package/dist/bootstrap/bootstrap-helpers.js +373 -0
  26. package/dist/bootstrap/bootstrap-helpers.js.map +1 -0
  27. package/dist/bootstrap/generate-types.d.ts +7 -0
  28. package/dist/bootstrap/generate-types.d.ts.map +1 -0
  29. package/dist/bootstrap/generate-types.js +832 -0
  30. package/dist/bootstrap/generate-types.js.map +1 -0
  31. package/dist/bootstrap/phases/assemble/index.d.ts +5 -0
  32. package/dist/bootstrap/phases/assemble/index.d.ts.map +1 -0
  33. package/dist/bootstrap/phases/assemble/index.js +5 -0
  34. package/dist/bootstrap/phases/assemble/index.js.map +1 -0
  35. package/dist/bootstrap/phases/assemble/load-links.d.ts +3 -0
  36. package/dist/bootstrap/phases/assemble/load-links.d.ts.map +1 -0
  37. package/dist/bootstrap/phases/assemble/load-links.js +160 -0
  38. package/dist/bootstrap/phases/assemble/load-links.js.map +1 -0
  39. package/dist/bootstrap/phases/assemble/load-modules.d.ts +3 -0
  40. package/dist/bootstrap/phases/assemble/load-modules.d.ts.map +1 -0
  41. package/dist/bootstrap/phases/assemble/load-modules.js +163 -0
  42. package/dist/bootstrap/phases/assemble/load-modules.js.map +1 -0
  43. package/dist/bootstrap/phases/assemble/load-resources.d.ts +3 -0
  44. package/dist/bootstrap/phases/assemble/load-resources.d.ts.map +1 -0
  45. package/dist/bootstrap/phases/assemble/load-resources.js +270 -0
  46. package/dist/bootstrap/phases/assemble/load-resources.js.map +1 -0
  47. package/dist/bootstrap/phases/assemble/wire-commands.d.ts +3 -0
  48. package/dist/bootstrap/phases/assemble/wire-commands.d.ts.map +1 -0
  49. package/dist/bootstrap/phases/assemble/wire-commands.js +408 -0
  50. package/dist/bootstrap/phases/assemble/wire-commands.js.map +1 -0
  51. package/dist/bootstrap/phases/assemble-modules.d.ts +3 -0
  52. package/dist/bootstrap/phases/assemble-modules.d.ts.map +1 -0
  53. package/dist/bootstrap/phases/assemble-modules.js +14 -0
  54. package/dist/bootstrap/phases/assemble-modules.js.map +1 -0
  55. package/dist/bootstrap/phases/build-app.d.ts +3 -0
  56. package/dist/bootstrap/phases/build-app.d.ts.map +1 -0
  57. package/dist/bootstrap/phases/build-app.js +15 -0
  58. package/dist/bootstrap/phases/build-app.js.map +1 -0
  59. package/dist/bootstrap/phases/discover-resources.d.ts +3 -0
  60. package/dist/bootstrap/phases/discover-resources.d.ts.map +1 -0
  61. package/dist/bootstrap/phases/discover-resources.js +60 -0
  62. package/dist/bootstrap/phases/discover-resources.js.map +1 -0
  63. package/dist/bootstrap/phases/index.d.ts +7 -0
  64. package/dist/bootstrap/phases/index.d.ts.map +1 -0
  65. package/dist/bootstrap/phases/index.js +7 -0
  66. package/dist/bootstrap/phases/index.js.map +1 -0
  67. package/dist/bootstrap/phases/init-infra.d.ts +3 -0
  68. package/dist/bootstrap/phases/init-infra.d.ts.map +1 -0
  69. package/dist/bootstrap/phases/init-infra.js +193 -0
  70. package/dist/bootstrap/phases/init-infra.js.map +1 -0
  71. package/dist/bootstrap/phases/seed-dev-users.d.ts +3 -0
  72. package/dist/bootstrap/phases/seed-dev-users.d.ts.map +1 -0
  73. package/dist/bootstrap/phases/seed-dev-users.js +93 -0
  74. package/dist/bootstrap/phases/seed-dev-users.js.map +1 -0
  75. package/dist/bootstrap/phases/wire/auth-helpers.d.ts +12 -0
  76. package/dist/bootstrap/phases/wire/auth-helpers.d.ts.map +1 -0
  77. package/dist/bootstrap/phases/wire/auth-helpers.js +25 -0
  78. package/dist/bootstrap/phases/wire/auth-helpers.js.map +1 -0
  79. package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts +4 -0
  80. package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts.map +1 -0
  81. package/dist/bootstrap/phases/wire/contexts/context-registry.js +96 -0
  82. package/dist/bootstrap/phases/wire/contexts/context-registry.js.map +1 -0
  83. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts +3 -0
  84. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts.map +1 -0
  85. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js +138 -0
  86. package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js.map +1 -0
  87. package/dist/bootstrap/phases/wire/contexts/index.d.ts +6 -0
  88. package/dist/bootstrap/phases/wire/contexts/index.d.ts.map +1 -0
  89. package/dist/bootstrap/phases/wire/contexts/index.js +6 -0
  90. package/dist/bootstrap/phases/wire/contexts/index.js.map +1 -0
  91. package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts +3 -0
  92. package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts.map +1 -0
  93. package/dist/bootstrap/phases/wire/contexts/query-endpoints.js +116 -0
  94. package/dist/bootstrap/phases/wire/contexts/query-endpoints.js.map +1 -0
  95. package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts +3 -0
  96. package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts.map +1 -0
  97. package/dist/bootstrap/phases/wire/contexts/spa-warnings.js +17 -0
  98. package/dist/bootstrap/phases/wire/contexts/spa-warnings.js.map +1 -0
  99. package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts +3 -0
  100. package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts.map +1 -0
  101. package/dist/bootstrap/phases/wire/contexts/user-routes.js +83 -0
  102. package/dist/bootstrap/phases/wire/contexts/user-routes.js.map +1 -0
  103. package/dist/bootstrap/phases/wire/index.d.ts +5 -0
  104. package/dist/bootstrap/phases/wire/index.d.ts.map +1 -0
  105. package/dist/bootstrap/phases/wire/index.js +5 -0
  106. package/dist/bootstrap/phases/wire/index.js.map +1 -0
  107. package/dist/bootstrap/phases/wire/wire-adapter.d.ts +12 -0
  108. package/dist/bootstrap/phases/wire/wire-adapter.d.ts.map +1 -0
  109. package/dist/bootstrap/phases/wire/wire-adapter.js +156 -0
  110. package/dist/bootstrap/phases/wire/wire-adapter.js.map +1 -0
  111. package/dist/bootstrap/phases/wire/wire-auth.d.ts +3 -0
  112. package/dist/bootstrap/phases/wire/wire-auth.d.ts.map +1 -0
  113. package/dist/bootstrap/phases/wire/wire-auth.js +46 -0
  114. package/dist/bootstrap/phases/wire/wire-auth.js.map +1 -0
  115. package/dist/bootstrap/phases/wire/wire-contexts.d.ts +3 -0
  116. package/dist/bootstrap/phases/wire/wire-contexts.d.ts.map +1 -0
  117. package/dist/bootstrap/phases/wire/wire-contexts.js +15 -0
  118. package/dist/bootstrap/phases/wire/wire-contexts.js.map +1 -0
  119. package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts +3 -0
  120. package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts.map +1 -0
  121. package/dist/bootstrap/phases/wire/wire-cron-routes.js +102 -0
  122. package/dist/bootstrap/phases/wire/wire-cron-routes.js.map +1 -0
  123. package/dist/bootstrap/phases/wire/wire-extras.d.ts +3 -0
  124. package/dist/bootstrap/phases/wire/wire-extras.d.ts.map +1 -0
  125. package/dist/bootstrap/phases/wire/wire-extras.js +305 -0
  126. package/dist/bootstrap/phases/wire/wire-extras.js.map +1 -0
  127. package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts +3 -0
  128. package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts.map +1 -0
  129. package/dist/bootstrap/phases/wire/wire-workflow-routes.js +212 -0
  130. package/dist/bootstrap/phases/wire/wire-workflow-routes.js.map +1 -0
  131. package/dist/bootstrap/phases/wire-http.d.ts +3 -0
  132. package/dist/bootstrap/phases/wire-http.d.ts.map +1 -0
  133. package/dist/bootstrap/phases/wire-http.js +10 -0
  134. package/dist/bootstrap/phases/wire-http.js.map +1 -0
  135. package/dist/bootstrap/validate-generated-ts.d.ts +6 -0
  136. package/dist/bootstrap/validate-generated-ts.d.ts.map +1 -0
  137. package/dist/bootstrap/validate-generated-ts.js +26 -0
  138. package/dist/bootstrap/validate-generated-ts.js.map +1 -0
  139. package/dist/build/generate-manifest.d.ts +10 -0
  140. package/dist/build/generate-manifest.d.ts.map +1 -0
  141. package/dist/build/generate-manifest.js +138 -0
  142. package/dist/build/generate-manifest.js.map +1 -0
  143. package/dist/cli.d.ts +3 -0
  144. package/dist/cli.d.ts.map +1 -0
  145. package/dist/cli.js +421 -0
  146. package/dist/cli.js.map +1 -0
  147. package/dist/commands/build.d.ts +21 -0
  148. package/dist/commands/build.d.ts.map +1 -0
  149. package/dist/commands/build.js +399 -0
  150. package/dist/commands/build.js.map +1 -0
  151. package/dist/commands/db/create.d.ts +17 -0
  152. package/dist/commands/db/create.d.ts.map +1 -0
  153. package/dist/commands/db/create.js +94 -0
  154. package/dist/commands/db/create.js.map +1 -0
  155. package/dist/commands/db/diff.d.ts +39 -0
  156. package/dist/commands/db/diff.d.ts.map +1 -0
  157. package/dist/commands/db/diff.js +81 -0
  158. package/dist/commands/db/diff.js.map +1 -0
  159. package/dist/commands/db/generate.d.ts +58 -0
  160. package/dist/commands/db/generate.d.ts.map +1 -0
  161. package/dist/commands/db/generate.js +138 -0
  162. package/dist/commands/db/generate.js.map +1 -0
  163. package/dist/commands/db/migrate.d.ts +29 -0
  164. package/dist/commands/db/migrate.d.ts.map +1 -0
  165. package/dist/commands/db/migrate.js +118 -0
  166. package/dist/commands/db/migrate.js.map +1 -0
  167. package/dist/commands/db/pg-deps.d.ts +30 -0
  168. package/dist/commands/db/pg-deps.d.ts.map +1 -0
  169. package/dist/commands/db/pg-deps.js +178 -0
  170. package/dist/commands/db/pg-deps.js.map +1 -0
  171. package/dist/commands/db/rollback.d.ts +21 -0
  172. package/dist/commands/db/rollback.d.ts.map +1 -0
  173. package/dist/commands/db/rollback.js +85 -0
  174. package/dist/commands/db/rollback.js.map +1 -0
  175. package/dist/commands/db/types.d.ts +113 -0
  176. package/dist/commands/db/types.d.ts.map +1 -0
  177. package/dist/commands/db/types.js +4 -0
  178. package/dist/commands/db/types.js.map +1 -0
  179. package/dist/commands/dev.d.ts +12 -0
  180. package/dist/commands/dev.d.ts.map +1 -0
  181. package/dist/commands/dev.js +79 -0
  182. package/dist/commands/dev.js.map +1 -0
  183. package/dist/commands/exec.d.ts +21 -0
  184. package/dist/commands/exec.d.ts.map +1 -0
  185. package/dist/commands/exec.js +148 -0
  186. package/dist/commands/exec.js.map +1 -0
  187. package/dist/commands/generate.d.ts +11 -0
  188. package/dist/commands/generate.d.ts.map +1 -0
  189. package/dist/commands/generate.js +19 -0
  190. package/dist/commands/generate.js.map +1 -0
  191. package/dist/commands/init.d.ts +14 -0
  192. package/dist/commands/init.d.ts.map +1 -0
  193. package/dist/commands/init.js +476 -0
  194. package/dist/commands/init.js.map +1 -0
  195. package/dist/commands/start.d.ts +15 -0
  196. package/dist/commands/start.d.ts.map +1 -0
  197. package/dist/commands/start.js +121 -0
  198. package/dist/commands/start.js.map +1 -0
  199. package/dist/commands/user.d.ts +19 -0
  200. package/dist/commands/user.d.ts.map +1 -0
  201. package/dist/commands/user.js +125 -0
  202. package/dist/commands/user.js.map +1 -0
  203. package/dist/config/load-config.d.ts +23 -0
  204. package/dist/config/load-config.d.ts.map +1 -0
  205. package/dist/config/load-config.js +105 -0
  206. package/dist/config/load-config.js.map +1 -0
  207. package/dist/config/load-env.d.ts +11 -0
  208. package/dist/config/load-env.d.ts.map +1 -0
  209. package/dist/config/load-env.js +61 -0
  210. package/dist/config/load-env.js.map +1 -0
  211. package/dist/config/resolve-adapters.d.ts +23 -0
  212. package/dist/config/resolve-adapters.d.ts.map +1 -0
  213. package/dist/config/resolve-adapters.js +96 -0
  214. package/dist/config/resolve-adapters.js.map +1 -0
  215. package/dist/index.d.ts +18 -0
  216. package/dist/index.d.ts.map +1 -0
  217. package/dist/index.js +19 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/jiti.d.ts +2 -0
  220. package/dist/jiti.d.ts.map +1 -0
  221. package/dist/jiti.js +2 -0
  222. package/dist/jiti.js.map +1 -0
  223. package/dist/openapi/generate-spec.d.ts +56 -0
  224. package/dist/openapi/generate-spec.d.ts.map +1 -0
  225. package/dist/openapi/generate-spec.js +491 -0
  226. package/dist/openapi/generate-spec.js.map +1 -0
  227. package/dist/openapi/index.d.ts +4 -0
  228. package/dist/openapi/index.d.ts.map +1 -0
  229. package/dist/openapi/index.js +3 -0
  230. package/dist/openapi/index.js.map +1 -0
  231. package/dist/openapi/swagger-html.d.ts +2 -0
  232. package/dist/openapi/swagger-html.d.ts.map +1 -0
  233. package/dist/openapi/swagger-html.js +29 -0
  234. package/dist/openapi/swagger-html.js.map +1 -0
  235. package/dist/plugins/merge-resources.d.ts +18 -0
  236. package/dist/plugins/merge-resources.d.ts.map +1 -0
  237. package/dist/plugins/merge-resources.js +76 -0
  238. package/dist/plugins/merge-resources.js.map +1 -0
  239. package/dist/plugins/resolve-plugins.d.ts +14 -0
  240. package/dist/plugins/resolve-plugins.d.ts.map +1 -0
  241. package/dist/plugins/resolve-plugins.js +73 -0
  242. package/dist/plugins/resolve-plugins.js.map +1 -0
  243. package/dist/resource-loader.d.ts +151 -0
  244. package/dist/resource-loader.d.ts.map +1 -0
  245. package/dist/resource-loader.js +456 -0
  246. package/dist/resource-loader.js.map +1 -0
  247. package/dist/route-discovery.d.ts +33 -0
  248. package/dist/route-discovery.d.ts.map +1 -0
  249. package/dist/route-discovery.js +69 -0
  250. package/dist/route-discovery.js.map +1 -0
  251. package/dist/server-bootstrap.d.ts +38 -0
  252. package/dist/server-bootstrap.d.ts.map +1 -0
  253. package/dist/server-bootstrap.js +21 -0
  254. package/dist/server-bootstrap.js.map +1 -0
  255. package/dist/spa/generate-spa.d.ts +15 -0
  256. package/dist/spa/generate-spa.d.ts.map +1 -0
  257. package/dist/spa/generate-spa.js +357 -0
  258. package/dist/spa/generate-spa.js.map +1 -0
  259. package/dist/templates/agent/nextjs.md +129 -0
  260. package/dist/templates/agent/nuxt.md +98 -0
  261. package/dist/templates/agent/standalone.md +498 -0
  262. package/dist/types.d.ts +145 -0
  263. package/dist/types.d.ts.map +1 -0
  264. package/dist/types.js +3 -0
  265. package/dist/types.js.map +1 -0
  266. package/dist/utils/colors.d.ts +7 -0
  267. package/dist/utils/colors.d.ts.map +1 -0
  268. package/dist/utils/colors.js +8 -0
  269. package/dist/utils/colors.js.map +1 -0
  270. package/dist/utils/logger.d.ts +10 -0
  271. package/dist/utils/logger.d.ts.map +1 -0
  272. package/dist/utils/logger.js +27 -0
  273. package/dist/utils/logger.js.map +1 -0
  274. package/dist/utils/prompts.d.ts +6 -0
  275. package/dist/utils/prompts.d.ts.map +1 -0
  276. package/dist/utils/prompts.js +28 -0
  277. package/dist/utils/prompts.js.map +1 -0
  278. package/dist/utils/spinner.d.ts +7 -0
  279. package/dist/utils/spinner.d.ts.map +1 -0
  280. package/dist/utils/spinner.js +20 -0
  281. package/dist/utils/spinner.js.map +1 -0
  282. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrs-routes.js","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/cqrs-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { buildContextRegistry } from './context-registry';
2
+ export { cqrsRoutes } from './cqrs-routes';
3
+ export { queryEndpoints } from './query-endpoints';
4
+ export { spaWarnings } from './spa-warnings';
5
+ export { userRoutes } from './user-routes';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { buildContextRegistry } from './context-registry';
2
+ export { cqrsRoutes } from './cqrs-routes';
3
+ export { queryEndpoints } from './query-endpoints';
4
+ export { spaWarnings } from './spa-warnings';
5
+ export { userRoutes } from './user-routes';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../../bootstrap-context';
2
+ export declare function queryEndpoints(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=query-endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-endpoints.d.ts","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/query-endpoints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG1E,wBAAsB,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyIzF"}
@@ -0,0 +1,116 @@
1
+ // [13f] V2 query endpoints + [13g] Query graph endpoints.
2
+ import { getEntityFilter } from '@mantajs/core';
3
+ import { getRequestBody } from '../../../../server-bootstrap';
4
+ import { parseBearer } from '../auth-helpers';
5
+ export async function queryEndpoints(ctx, appRef) {
6
+ const { logger, resources, queryRegistry, queryGraphDefs, adapter, contextRegistry } = ctx;
7
+ // [13f] V2: Register query endpoints
8
+ if (resources.queries.length > 0) {
9
+ for (const queryInfo of resources.queries) {
10
+ const queryDef = queryRegistry.get(queryInfo.id);
11
+ if (!queryDef)
12
+ continue;
13
+ const ctx2 = contextRegistry.list().find((c) => c.name === queryInfo.context);
14
+ if (!ctx2) {
15
+ logger.warn(`Query '${queryInfo.id}' has context '${queryInfo.context}' but no matching context found`);
16
+ continue;
17
+ }
18
+ adapter.registerRoute('GET', `${ctx2.basePath}/${queryInfo.id}`, async (req) => {
19
+ try {
20
+ const url = new URL(req.url, 'http://localhost');
21
+ const rawParams = {};
22
+ for (const [key, value] of url.searchParams.entries()) {
23
+ if (value === 'true')
24
+ rawParams[key] = true;
25
+ else if (value === 'false')
26
+ rawParams[key] = false;
27
+ else if (/^\d+$/.test(value))
28
+ rawParams[key] = Number(value);
29
+ else
30
+ rawParams[key] = value;
31
+ }
32
+ const authCtx = await parseBearer(ctx, req);
33
+ const reqHeaders = {};
34
+ req.headers.forEach((v, k) => {
35
+ reqHeaders[k] = v;
36
+ });
37
+ const input = queryDef.input.parse(rawParams);
38
+ const result = await queryDef.handler(input, {
39
+ query: appRef.current.resolve('queryService'),
40
+ log: logger,
41
+ auth: authCtx,
42
+ headers: reqHeaders,
43
+ });
44
+ return Response.json({ data: result });
45
+ }
46
+ catch (err) {
47
+ if (err.name === 'ZodError') {
48
+ return Response.json({ type: 'INVALID_DATA', message: 'Validation failed', details: err.issues }, { status: 400 });
49
+ }
50
+ const message = err.message;
51
+ logger.error(`[query] ${queryInfo.id}: ${message}`);
52
+ return Response.json({ type: 'UNEXPECTED_STATE', message }, { status: 500 });
53
+ }
54
+ });
55
+ logger.info(` Query endpoint: GET ${ctx2.basePath}/${queryInfo.id}`);
56
+ }
57
+ }
58
+ // [13g] Register query graph endpoints — POST {basePath}/graph
59
+ if (queryGraphDefs.size > 0) {
60
+ for (const [ctxName, graphDef] of queryGraphDefs) {
61
+ const ctx2 = contextRegistry.list().find((c) => c.name === ctxName);
62
+ if (!ctx2) {
63
+ logger.warn(`QueryGraph for context '${ctxName}' has no matching context`);
64
+ continue;
65
+ }
66
+ adapter.registerRoute('POST', `${ctx2.basePath}/graph`, async (req) => {
67
+ try {
68
+ const body = await getRequestBody(req);
69
+ if (!body.entity) {
70
+ return Response.json({ type: 'INVALID_DATA', message: 'entity is required' }, { status: 400 });
71
+ }
72
+ const authCtx = await parseBearer(ctx, req);
73
+ const typedDef = graphDef;
74
+ const entityFilter = getEntityFilter(typedDef, body.entity, authCtx);
75
+ if (entityFilter === null) {
76
+ return Response.json({ type: 'FORBIDDEN', message: `Entity "${body.entity}" is not accessible in this context` }, { status: 403 });
77
+ }
78
+ const mergedFilters = { ...(body.filters ?? {}), ...(entityFilter ?? {}) };
79
+ const allowedRelations = (body.relations ?? []).filter((rel) => {
80
+ const relFilter = getEntityFilter(typedDef, rel, authCtx);
81
+ if (relFilter === null) {
82
+ logger.warn(`[query-graph:${ctxName}] Relation "${rel}" not allowed — stripped from query`);
83
+ return false;
84
+ }
85
+ return true;
86
+ });
87
+ // biome-ignore lint/suspicious/noExplicitAny: queryService.graph config shape
88
+ const queryService = appRef.current.resolve('queryService');
89
+ const graphConfig = {
90
+ entity: body.entity,
91
+ filters: Object.keys(mergedFilters).length > 0 ? mergedFilters : undefined,
92
+ pagination: body.pagination ? { limit: body.pagination.limit, offset: body.pagination.offset } : undefined,
93
+ sort: body.sort ? { [body.sort.field]: body.sort.order ?? 'asc' } : undefined,
94
+ fields: body.fields,
95
+ relations: allowedRelations.length > 0 ? allowedRelations : undefined,
96
+ q: body.q,
97
+ };
98
+ // Use graphAndCount when pagination is requested, to return total count
99
+ if (body.pagination && typeof queryService.graphAndCount === 'function') {
100
+ const [data, count] = await queryService.graphAndCount(graphConfig);
101
+ return Response.json({ data, count });
102
+ }
103
+ const result = await queryService.graph(graphConfig);
104
+ return Response.json({ data: result });
105
+ }
106
+ catch (err) {
107
+ const message = err.message;
108
+ logger.error(`[query-graph:${ctxName}] ${message}`);
109
+ return Response.json({ type: 'UNEXPECTED_STATE', message }, { status: 500 });
110
+ }
111
+ });
112
+ logger.info(` QueryGraph: POST ${ctx2.basePath}/graph (${graphDef.access === '*' ? 'wildcard' : `${Object.keys(graphDef.access).length} entities`})`);
113
+ }
114
+ }
115
+ }
116
+ //# sourceMappingURL=query-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-endpoints.js","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/query-endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../../bootstrap-context';
2
+ export declare function spaWarnings(ctx: BootstrapContext, _appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=spa-warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-warnings.d.ts","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/spa-warnings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE1E,wBAAsB,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvF"}
@@ -0,0 +1,17 @@
1
+ // [13b-v2] SPA warnings.
2
+ export async function spaWarnings(ctx, _appRef) {
3
+ const { logger, resources, userDefinitions } = ctx;
4
+ // [13b-v2] SPA warnings
5
+ if (resources.spas.length > 0) {
6
+ const userContexts = new Set(userDefinitions.map((u) => u.contextName));
7
+ for (const spa of resources.spas) {
8
+ if (!userContexts.has(spa.name) && spa.name !== 'public') {
9
+ logger.warn(`SPA "${spa.name}" has no defineUserModel('${spa.name}') — no one can login to /${spa.name}`);
10
+ }
11
+ else {
12
+ logger.info(` SPA: /${spa.name} (from src/spa/${spa.name}/)`);
13
+ }
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=spa-warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-warnings.js","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/spa-warnings.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAIzB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAqB,EAAE,OAAe;IACtE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;IAElD,wBAAwB;IACxB,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QAC5E,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,6BAA6B,GAAG,CAAC,IAAI,6BAA6B,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3G,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../../bootstrap-context';
2
+ export declare function userRoutes(ctx: BootstrapContext, _appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=user-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-routes.d.ts","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/user-routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG1E,wBAAsB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GtF"}
@@ -0,0 +1,83 @@
1
+ // [13c] User routes — auth routes + middleware registration per user context.
2
+ // Dev user seeding moved to the dedicated seed-dev-users phase.
3
+ import { generateAllUserRoutes, getPublicPaths } from '@mantajs/core';
4
+ import { ensureEntityTables } from '../../../bootstrap-helpers';
5
+ export async function userRoutes(ctx, _appRef) {
6
+ const { logger, db, infraMap, repoFactory, resources, doImport, generatedTables, userDefinitions, generatePgTableFromDml, adapter, authService, jwtSecret, } = ctx;
7
+ // Load context middleware overrides (src/middleware/{ctx}.ts)
8
+ const contextMiddlewareMap = new Map();
9
+ for (const mw of resources.contextMiddlewares) {
10
+ try {
11
+ const imported = await doImport(mw.path);
12
+ // biome-ignore lint/suspicious/noExplicitAny: middleware def shape varies
13
+ const def = imported.default;
14
+ if (def?.__type === 'middleware' && typeof def.handler === 'function') {
15
+ contextMiddlewareMap.set(mw.context, def.handler);
16
+ logger.info(` Middleware override: ${mw.context} (${mw.path})`);
17
+ }
18
+ }
19
+ catch (err) {
20
+ logger.warn(`Failed to load middleware '${mw.context}': ${err instanceof Error ? err.message : String(err)}`);
21
+ }
22
+ }
23
+ if (userDefinitions.length > 0) {
24
+ for (const { contextName, def } of userDefinitions) {
25
+ try {
26
+ const userDmlEntity = def.model;
27
+ const inviteDmlEntity = def.inviteModel;
28
+ // biome-ignore lint/suspicious/noExplicitAny: repo type varies between DrizzleRepository and InMemoryRepository
29
+ let userRepo;
30
+ // biome-ignore lint/suspicious/noExplicitAny: repo type varies
31
+ let inviteRepo;
32
+ let userRepoKey = userDmlEntity?.name?.toLowerCase() ?? contextName;
33
+ let inviteRepoKey = inviteDmlEntity?.name?.toLowerCase() ?? `${contextName}_invite`;
34
+ if (db && userDmlEntity && inviteDmlEntity) {
35
+ const userTable = generatePgTableFromDml(userDmlEntity);
36
+ const inviteTable = generatePgTableFromDml(inviteDmlEntity);
37
+ userRepoKey = userTable.tableName;
38
+ inviteRepoKey = inviteTable.tableName;
39
+ generatedTables.set(userTable.tableName, userTable.table);
40
+ generatedTables.set(inviteTable.tableName, inviteTable.table);
41
+ repoFactory.registerTable(userTable.tableName, userTable.table);
42
+ repoFactory.registerTable(inviteTable.tableName, inviteTable.table);
43
+ await ensureEntityTables(db.getPool(), [
44
+ { name: userDmlEntity.name, schema: userDmlEntity.schema },
45
+ { name: inviteDmlEntity.name, schema: inviteDmlEntity.schema },
46
+ ], [], logger);
47
+ }
48
+ userRepo = repoFactory.createRepository(userRepoKey);
49
+ inviteRepo = repoFactory.createRepository(inviteRepoKey);
50
+ const routes = generateAllUserRoutes({
51
+ userDef: def,
52
+ authService: authService,
53
+ userRepo,
54
+ inviteRepo,
55
+ cache: infraMap.get('ICachePort'),
56
+ logger,
57
+ jwtSecret,
58
+ notification: infraMap.get('INotificationPort'),
59
+ baseUrl: process.env.ADMIN_BASE_URL ?? process.env.MANTA_BASE_URL,
60
+ publicPathPrefix: `/${contextName}`,
61
+ });
62
+ const overriddenNames = new Set(resources.commands.filter((c) => c.context === contextName).map((c) => c.id));
63
+ for (const route of routes) {
64
+ const routeName = route.path.split('/').pop() ?? '';
65
+ if (overriddenNames.has(routeName)) {
66
+ logger.info(` Route ${route.path} overridden by commands/${contextName}/${routeName}.ts`);
67
+ continue;
68
+ }
69
+ adapter.registerRoute(route.method, route.path, route.handler);
70
+ }
71
+ const publicPaths = getPublicPaths(contextName);
72
+ // biome-ignore lint/suspicious/noExplicitAny: middleware handler types vary
73
+ const customMw = contextMiddlewareMap.get(contextName);
74
+ adapter.registerContextAuth(contextName, def.actorType, publicPaths, customMw ?? undefined);
75
+ logger.info(` User routes: ${contextName} (login, me, CRUD, invite) on /api/${contextName}/`);
76
+ }
77
+ catch (err) {
78
+ logger.warn(`Failed to wire user routes for '${contextName}': ${err instanceof Error ? err.message : String(err)}`);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=user-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-routes.js","sourceRoot":"","sources":["../../../../../src/bootstrap/phases/wire/contexts/user-routes.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gEAAgE;AAEhE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAqB,EAAE,OAAe;IACrE,MAAM,EACJ,MAAM,EACN,EAAE,EACF,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,OAAO,EACP,WAAW,EACX,SAAS,GACV,GAAG,GAAG,CAAA;IAEP,8DAA8D;IAC9D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAgE,CAAA;IACpG,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACxC,0EAA0E;YAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAc,CAAA;YACnC,IAAI,GAAG,EAAE,MAAM,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACtE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;gBACjD,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,OAAO,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/G,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAA;gBAC/B,MAAM,eAAe,GAAG,GAAG,CAAC,WAAW,CAAA;gBAEvC,gHAAgH;gBAChH,IAAI,QAAa,CAAA;gBACjB,+DAA+D;gBAC/D,IAAI,UAAe,CAAA;gBAEnB,IAAI,WAAW,GAAG,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,WAAW,CAAA;gBACnE,IAAI,aAAa,GAAG,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,WAAW,SAAS,CAAA;gBACnF,IAAI,EAAE,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;oBAC3C,MAAM,SAAS,GAAG,sBAAsB,CACtC,aAAwE,CACzE,CAAA;oBACD,MAAM,WAAW,GAAG,sBAAsB,CACxC,eAA0E,CAC3E,CAAA;oBACD,WAAW,GAAG,SAAS,CAAC,SAAS,CAAA;oBACjC,aAAa,GAAG,WAAW,CAAC,SAAS,CAAA;oBACrC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;oBACzD,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;oBAC7D,WAAW,CAAC,aAAc,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;oBAChE,WAAW,CAAC,aAAc,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;oBACpE,MAAM,kBAAkB,CACtB,EAAE,CAAC,OAAO,EAAE,EACZ;wBACE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAG,aAAqB,CAAC,MAAM,EAAE;wBACnE,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAG,eAAuB,CAAC,MAAM,EAAE;qBACxE,EACD,EAAE,EACF,MAAM,CACP,CAAA;gBACH,CAAC;gBACD,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;gBACpD,UAAU,GAAG,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;gBAExD,MAAM,MAAM,GAAG,qBAAqB,CAAC;oBACnC,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,WAAoF;oBACjG,QAAQ;oBACR,UAAU;oBACV,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe;oBAC/C,MAAM;oBACN,SAAS;oBACT,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAkC;oBAChF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;oBACjE,gBAAgB,EAAE,IAAI,WAAW,EAAE;iBACpC,CAAC,CAAA;gBAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACvF,CAAA;gBAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;oBACnD,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,2BAA2B,WAAW,IAAI,SAAS,KAAK,CAAC,CAAA;wBAC5F,SAAQ;oBACV,CAAC;oBACD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBAChE,CAAC;gBAED,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;gBAC/C,4EAA4E;gBAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAQ,CAAA;gBAC7D,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAA;gBAE3F,MAAM,CAAC,IAAI,CAAC,kBAAkB,WAAW,sCAAsC,WAAW,GAAG,CAAC,CAAA;YAChG,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CACT,mCAAmC,WAAW,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACvG,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { wireAdapter } from './wire-adapter';
2
+ export { wireAuth } from './wire-auth';
3
+ export { wireContexts } from './wire-contexts';
4
+ export { wireExtras } from './wire-extras';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { wireAdapter } from './wire-adapter';
2
+ export { wireAuth } from './wire-auth';
3
+ export { wireContexts } from './wire-contexts';
4
+ export { wireExtras } from './wire-extras';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ interface QueryHandlerOptions {
3
+ contextName: string;
4
+ exposedModules: Set<string>;
5
+ logger?: {
6
+ warn: (msg: string) => void;
7
+ };
8
+ }
9
+ export declare function handleQueryRequest(service: Record<string, unknown>, entity: string, body: Record<string, unknown>, options?: QueryHandlerOptions): Promise<Response>;
10
+ export declare function wireAdapter(ctx: BootstrapContext, _appRef: AppRef): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=wire-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-adapter.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAKvE,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CACzC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAmInB;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvF"}
@@ -0,0 +1,156 @@
1
+ // Phase 5b: H3 adapter creation + auth verifier wiring.
2
+ // Also exports the shared `handleQueryRequest` helper used by context-aware CQRS endpoints.
3
+ import { H3Adapter } from '@mantajs/adapter-h3';
4
+ export async function handleQueryRequest(service, entity, body, options) {
5
+ const { id, fields, filters, limit, offset, order, q } = body;
6
+ // Strip relation fields pointing to unmounted modules + collect warnings
7
+ const warnings = [];
8
+ let filteredFields = fields;
9
+ if (fields && options?.exposedModules) {
10
+ const allowed = [];
11
+ for (const f of fields) {
12
+ if (f.includes('.')) {
13
+ const relationModule = f.split('.')[0];
14
+ if (!options.exposedModules.has(relationModule)) {
15
+ warnings.push(`relation '${relationModule}' unavailable in context '${options.contextName}' — module '${relationModule}' not mounted`);
16
+ options.logger?.warn(`[query] Stripped relation '${relationModule}' from ${entity} query — not mounted in context '${options.contextName}'`);
17
+ continue;
18
+ }
19
+ }
20
+ allowed.push(f);
21
+ }
22
+ filteredFields = allowed;
23
+ }
24
+ // Detail query
25
+ if (id) {
26
+ if (typeof service.findById !== 'function') {
27
+ return Response.json({ type: 'NOT_FOUND', message: `Entity "${entity}" does not support findById` }, { status: 404 });
28
+ }
29
+ const item = await service.findById(id);
30
+ if (!item)
31
+ return Response.json({ type: 'NOT_FOUND', message: `${entity} "${id}" not found` }, { status: 404 });
32
+ const response = { data: item };
33
+ if (warnings.length > 0)
34
+ response.warnings = warnings;
35
+ return Response.json(response);
36
+ }
37
+ // List query
38
+ if (typeof service.list !== 'function') {
39
+ return Response.json({ type: 'NOT_FOUND', message: `Entity "${entity}" does not support list` }, { status: 404 });
40
+ }
41
+ let data = (await service.list());
42
+ // Search
43
+ if (q) {
44
+ const lower = q.toLowerCase();
45
+ data = data.filter((item) => String(item.title ?? '')
46
+ .toLowerCase()
47
+ .includes(lower) ||
48
+ String(item.description ?? '')
49
+ .toLowerCase()
50
+ .includes(lower) ||
51
+ String(item.sku ?? '')
52
+ .toLowerCase()
53
+ .includes(lower));
54
+ }
55
+ // Filters
56
+ if (filters) {
57
+ for (const [key, value] of Object.entries(filters)) {
58
+ if (Array.isArray(value)) {
59
+ data = data.filter((item) => value.includes(String(item[key])));
60
+ }
61
+ else {
62
+ data = data.filter((item) => String(item[key]) === String(value));
63
+ }
64
+ }
65
+ }
66
+ // Ordering
67
+ if (order) {
68
+ let field;
69
+ let descending;
70
+ if (order.startsWith('-')) {
71
+ field = order.slice(1);
72
+ descending = true;
73
+ }
74
+ else if (order.includes(':')) {
75
+ const [f, d] = order.split(':');
76
+ field = f;
77
+ descending = d === 'desc';
78
+ }
79
+ else {
80
+ field = order;
81
+ descending = false;
82
+ }
83
+ data.sort((a, b) => {
84
+ const rawA = a[field] ?? '';
85
+ const rawB = b[field] ?? '';
86
+ if (typeof rawA === 'number' && typeof rawB === 'number')
87
+ return descending ? rawB - rawA : rawA - rawB;
88
+ if (field.endsWith('_at')) {
89
+ const ta = new Date(rawA).getTime();
90
+ const tb = new Date(rawB).getTime();
91
+ return descending ? tb - ta : ta - tb;
92
+ }
93
+ const sa = String(rawA).toLowerCase();
94
+ const sb = String(rawB).toLowerCase();
95
+ return descending ? sb.localeCompare(sa) : sa.localeCompare(sb);
96
+ });
97
+ }
98
+ // Paginate + field selection
99
+ const count = data.length;
100
+ const sliced = data.slice(offset ?? 0, (offset ?? 0) + (limit ?? 100));
101
+ let result = sliced;
102
+ if (filteredFields && filteredFields.length > 0) {
103
+ result = sliced.map((item) => {
104
+ const picked = {};
105
+ for (const f of filteredFields)
106
+ picked[f] = item[f];
107
+ return picked;
108
+ });
109
+ }
110
+ const response = { data: result, count, limit: limit ?? 100, offset: offset ?? 0 };
111
+ if (warnings.length > 0)
112
+ response.warnings = warnings;
113
+ return Response.json(response);
114
+ }
115
+ export async function wireAdapter(ctx, _appRef) {
116
+ const { logger, mode, jwtSecret, authService, infraMap } = ctx;
117
+ // [13] Create H3 adapter and register CQRS endpoints
118
+ // BC-F22 — Build readiness probes from the ports actually registered in
119
+ // infraMap. Absent ports are simply omitted (so e.g. a dev project without
120
+ // an external cache reports only {db, eventbus}). The database port exposes
121
+ // healthCheck() directly; cache / eventbus ports expose an optional ping().
122
+ const readinessProbes = {};
123
+ const db = infraMap.get('IDatabasePort');
124
+ if (db) {
125
+ readinessProbes.db = () => db.healthCheck();
126
+ }
127
+ const cache = infraMap.get('ICachePort');
128
+ if (cache && typeof cache.ping === 'function') {
129
+ readinessProbes.cache = () => cache.ping();
130
+ }
131
+ const eventBus = infraMap.get('IEventBusPort');
132
+ if (eventBus && typeof eventBus.ping === 'function') {
133
+ readinessProbes.eventbus = () => eventBus.ping();
134
+ }
135
+ const adapter = new H3Adapter({ port: 0, isDev: mode === 'dev', readinessProbes });
136
+ ctx.adapter = adapter;
137
+ // Wire auth verifier
138
+ adapter.setAuthVerifier(async (token) => {
139
+ try {
140
+ const payload = await authService.verifyToken(token, jwtSecret);
141
+ const meta = payload.metadata ?? payload.app_metadata ?? {};
142
+ return {
143
+ id: (payload.id ?? payload.actor_id),
144
+ type: (payload.type ?? payload.actor_type),
145
+ auth_identity_id: payload.auth_identity_id,
146
+ email: meta.email ?? undefined,
147
+ metadata: meta,
148
+ };
149
+ }
150
+ catch (err) {
151
+ logger.warn(`[auth] Token verification failed: ${err.message}`);
152
+ return null;
153
+ }
154
+ });
155
+ }
156
+ //# sourceMappingURL=wire-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-adapter.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ export declare function wireAuth(ctx: BootstrapContext, _appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=wire-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-auth.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAGvE,wBAAsB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDpF"}
@@ -0,0 +1,46 @@
1
+ // Phase 5a: Auth wiring — AuthModuleService, EmailpassAuthProvider, JWT secret.
2
+ import { MantaError } from '@mantajs/core';
3
+ import { AuthIdentity, AuthModuleService, EmailpassAuthProvider, ProviderIdentity } from '@mantajs/core/auth';
4
+ import { ensureEntityTables } from '../../bootstrap-helpers';
5
+ export async function wireAuth(ctx, _appRef) {
6
+ const { logger, db, infraMap, repoFactory, mode, generatedTables, generatePgTableFromDml } = ctx;
7
+ // [12b] Wire AuthModuleService + auth verifier
8
+ // biome-ignore lint/suspicious/noExplicitAny: repos assigned from different adapter paths
9
+ let authIdentityRepo;
10
+ // biome-ignore lint/suspicious/noExplicitAny: repos assigned from different adapter paths
11
+ let providerIdentityRepo;
12
+ let authIdentityTableName = 'auth_identity';
13
+ let providerIdentityTableName = 'provider_identity';
14
+ if (db) {
15
+ const aiTable = generatePgTableFromDml(AuthIdentity);
16
+ const piTable = generatePgTableFromDml(ProviderIdentity);
17
+ authIdentityTableName = aiTable.tableName;
18
+ providerIdentityTableName = piTable.tableName;
19
+ generatedTables.set(aiTable.tableName, aiTable.table);
20
+ generatedTables.set(piTable.tableName, piTable.table);
21
+ repoFactory.registerTable(aiTable.tableName, aiTable.table);
22
+ repoFactory.registerTable(piTable.tableName, piTable.table);
23
+ await ensureEntityTables(db.getPool(), [
24
+ { name: AuthIdentity.name, schema: AuthIdentity.schema },
25
+ { name: ProviderIdentity.name, schema: ProviderIdentity.schema },
26
+ ], [], logger);
27
+ logger.info('[auth] Auth tables generated (Drizzle — persisted)');
28
+ }
29
+ authIdentityRepo = repoFactory.createRepository(authIdentityTableName);
30
+ providerIdentityRepo = repoFactory.createRepository(providerIdentityTableName);
31
+ const authService = new AuthModuleService({
32
+ baseRepository: authIdentityRepo,
33
+ authIdentityRepository: authIdentityRepo,
34
+ providerIdentityRepository: providerIdentityRepo,
35
+ cache: infraMap.get('ICachePort'),
36
+ });
37
+ authService.registerProvider('emailpass', new EmailpassAuthProvider());
38
+ ctx.authService = authService;
39
+ // JWT secret: required in prod, fallback in dev
40
+ if (mode === 'prod' && !process.env.JWT_SECRET) {
41
+ throw new MantaError('INVALID_STATE', '[auth] JWT_SECRET environment variable is required in production. Set it before deploying.');
42
+ }
43
+ const jwtSecret = process.env.JWT_SECRET ?? 'manta-dev-secret';
44
+ ctx.jwtSecret = jwtSecret;
45
+ }
46
+ //# sourceMappingURL=wire-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-auth.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-auth.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAqB,EAAE,OAAe;IACnE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,GAAG,CAAA;IAEhG,+CAA+C;IAC/C,0FAA0F;IAC1F,IAAI,gBAAqB,CAAA;IACzB,0FAA0F;IAC1F,IAAI,oBAAyB,CAAA;IAC7B,IAAI,qBAAqB,GAAG,eAAe,CAAA;IAC3C,IAAI,yBAAyB,GAAG,mBAAmB,CAAA;IACnD,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;QACxD,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAA;QACzC,yBAAyB,GAAG,OAAO,CAAC,SAAS,CAAA;QAC7C,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACrD,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACrD,WAAW,CAAC,aAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5D,WAAW,CAAC,aAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5D,MAAM,kBAAkB,CACtB,EAAE,CAAC,OAAO,EAAE,EACZ;YACE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAG,YAAoB,CAAC,MAAM,EAAE;YACjE,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAG,gBAAwB,CAAC,MAAM,EAAE;SAC1E,EACD,EAAE,EACF,MAAM,CACP,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IACnE,CAAC;IACD,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAA;IACtE,oBAAoB,GAAG,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAA;IAE9E,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;QACxC,cAAc,EAAE,gBAAgB;QAChC,sBAAsB,EAAE,gBAAgB;QACxC,0BAA0B,EAAE,oBAAoB;QAChD,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe;KAChD,CAAC,CAAA;IACF,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAA;IACtE,GAAG,CAAC,WAAW,GAAG,WAAW,CAAA;IAE7B,gDAAgD;IAChD,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAClB,eAAe,EACf,4FAA4F,CAC7F,CAAA;IACH,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAA;IAC9D,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AppRef, BootstrapContext } from '../../bootstrap-context';
2
+ export declare function wireContexts(ctx: BootstrapContext, appRef: AppRef): Promise<void>;
3
+ //# sourceMappingURL=wire-contexts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-contexts.d.ts","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-contexts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAGvE,wBAAsB,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASvF"}
@@ -0,0 +1,15 @@
1
+ // Phase 5c: Contexts, user routes, context-aware CQRS, SPA warnings.
2
+ // Covers [13b-v2] SPA warnings, [13c] user routes, [13d] context registry,
3
+ // [13e] context-aware CQRS, [13f] V2 query endpoints, [13g] query graph endpoints.
4
+ import { buildContextRegistry, cqrsRoutes, queryEndpoints, spaWarnings, userRoutes } from './contexts';
5
+ export async function wireContexts(ctx, appRef) {
6
+ await spaWarnings(ctx, appRef);
7
+ await userRoutes(ctx, appRef);
8
+ // Build the context registry explicitly, then thread it onto ctx for downstream sub-phases.
9
+ // Downstream phases still read ctx.contextRegistry for backward compatibility within the pipeline.
10
+ ctx.contextRegistry = await buildContextRegistry(ctx, appRef);
11
+ await cqrsRoutes(ctx, appRef);
12
+ await queryEndpoints(ctx, appRef);
13
+ ctx.logger.info('[cqrs] Context-aware endpoints registered');
14
+ }
15
+ //# sourceMappingURL=wire-contexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-contexts.js","sourceRoot":"","sources":["../../../../src/bootstrap/phases/wire/wire-contexts.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,2EAA2E;AAC3E,mFAAmF;AAGnF,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAqB,EAAE,MAAc;IACtE,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC7B,4FAA4F;IAC5F,mGAAmG;IACnG,GAAG,CAAC,eAAe,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC7B,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACjC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;AAC9D,CAAC"}