@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.
- package/bin/manta.mjs +20 -0
- package/bin/manta.ts +13 -0
- package/dist/admin/generate-admin-config.d.ts +8 -0
- package/dist/admin/generate-admin-config.d.ts.map +1 -0
- package/dist/admin/generate-admin-config.js +127 -0
- package/dist/admin/generate-admin-config.js.map +1 -0
- package/dist/ai/chat-handler.d.ts +10 -0
- package/dist/ai/chat-handler.d.ts.map +1 -0
- package/dist/ai/chat-handler.js +1353 -0
- package/dist/ai/chat-handler.js.map +1 -0
- package/dist/bootstrap/boot.d.ts +25 -0
- package/dist/bootstrap/boot.d.ts.map +1 -0
- package/dist/bootstrap/boot.js +344 -0
- package/dist/bootstrap/boot.js.map +1 -0
- package/dist/bootstrap/bootstrap-app.d.ts +71 -0
- package/dist/bootstrap/bootstrap-app.d.ts.map +1 -0
- package/dist/bootstrap/bootstrap-app.js +308 -0
- package/dist/bootstrap/bootstrap-app.js.map +1 -0
- package/dist/bootstrap/bootstrap-context.d.ts +76 -0
- package/dist/bootstrap/bootstrap-context.d.ts.map +1 -0
- package/dist/bootstrap/bootstrap-context.js +4 -0
- package/dist/bootstrap/bootstrap-context.js.map +1 -0
- package/dist/bootstrap/bootstrap-helpers.d.ts +71 -0
- package/dist/bootstrap/bootstrap-helpers.d.ts.map +1 -0
- package/dist/bootstrap/bootstrap-helpers.js +373 -0
- package/dist/bootstrap/bootstrap-helpers.js.map +1 -0
- package/dist/bootstrap/generate-types.d.ts +7 -0
- package/dist/bootstrap/generate-types.d.ts.map +1 -0
- package/dist/bootstrap/generate-types.js +832 -0
- package/dist/bootstrap/generate-types.js.map +1 -0
- package/dist/bootstrap/phases/assemble/index.d.ts +5 -0
- package/dist/bootstrap/phases/assemble/index.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble/index.js +5 -0
- package/dist/bootstrap/phases/assemble/index.js.map +1 -0
- package/dist/bootstrap/phases/assemble/load-links.d.ts +3 -0
- package/dist/bootstrap/phases/assemble/load-links.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble/load-links.js +160 -0
- package/dist/bootstrap/phases/assemble/load-links.js.map +1 -0
- package/dist/bootstrap/phases/assemble/load-modules.d.ts +3 -0
- package/dist/bootstrap/phases/assemble/load-modules.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble/load-modules.js +163 -0
- package/dist/bootstrap/phases/assemble/load-modules.js.map +1 -0
- package/dist/bootstrap/phases/assemble/load-resources.d.ts +3 -0
- package/dist/bootstrap/phases/assemble/load-resources.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble/load-resources.js +270 -0
- package/dist/bootstrap/phases/assemble/load-resources.js.map +1 -0
- package/dist/bootstrap/phases/assemble/wire-commands.d.ts +3 -0
- package/dist/bootstrap/phases/assemble/wire-commands.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble/wire-commands.js +408 -0
- package/dist/bootstrap/phases/assemble/wire-commands.js.map +1 -0
- package/dist/bootstrap/phases/assemble-modules.d.ts +3 -0
- package/dist/bootstrap/phases/assemble-modules.d.ts.map +1 -0
- package/dist/bootstrap/phases/assemble-modules.js +14 -0
- package/dist/bootstrap/phases/assemble-modules.js.map +1 -0
- package/dist/bootstrap/phases/build-app.d.ts +3 -0
- package/dist/bootstrap/phases/build-app.d.ts.map +1 -0
- package/dist/bootstrap/phases/build-app.js +15 -0
- package/dist/bootstrap/phases/build-app.js.map +1 -0
- package/dist/bootstrap/phases/discover-resources.d.ts +3 -0
- package/dist/bootstrap/phases/discover-resources.d.ts.map +1 -0
- package/dist/bootstrap/phases/discover-resources.js +60 -0
- package/dist/bootstrap/phases/discover-resources.js.map +1 -0
- package/dist/bootstrap/phases/index.d.ts +7 -0
- package/dist/bootstrap/phases/index.d.ts.map +1 -0
- package/dist/bootstrap/phases/index.js +7 -0
- package/dist/bootstrap/phases/index.js.map +1 -0
- package/dist/bootstrap/phases/init-infra.d.ts +3 -0
- package/dist/bootstrap/phases/init-infra.d.ts.map +1 -0
- package/dist/bootstrap/phases/init-infra.js +193 -0
- package/dist/bootstrap/phases/init-infra.js.map +1 -0
- package/dist/bootstrap/phases/seed-dev-users.d.ts +3 -0
- package/dist/bootstrap/phases/seed-dev-users.d.ts.map +1 -0
- package/dist/bootstrap/phases/seed-dev-users.js +93 -0
- package/dist/bootstrap/phases/seed-dev-users.js.map +1 -0
- package/dist/bootstrap/phases/wire/auth-helpers.d.ts +12 -0
- package/dist/bootstrap/phases/wire/auth-helpers.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/auth-helpers.js +25 -0
- package/dist/bootstrap/phases/wire/auth-helpers.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts +4 -0
- package/dist/bootstrap/phases/wire/contexts/context-registry.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/context-registry.js +96 -0
- package/dist/bootstrap/phases/wire/contexts/context-registry.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts +3 -0
- package/dist/bootstrap/phases/wire/contexts/cqrs-routes.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js +138 -0
- package/dist/bootstrap/phases/wire/contexts/cqrs-routes.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/index.d.ts +6 -0
- package/dist/bootstrap/phases/wire/contexts/index.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/index.js +6 -0
- package/dist/bootstrap/phases/wire/contexts/index.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts +3 -0
- package/dist/bootstrap/phases/wire/contexts/query-endpoints.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/query-endpoints.js +116 -0
- package/dist/bootstrap/phases/wire/contexts/query-endpoints.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts +3 -0
- package/dist/bootstrap/phases/wire/contexts/spa-warnings.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/spa-warnings.js +17 -0
- package/dist/bootstrap/phases/wire/contexts/spa-warnings.js.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts +3 -0
- package/dist/bootstrap/phases/wire/contexts/user-routes.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/contexts/user-routes.js +83 -0
- package/dist/bootstrap/phases/wire/contexts/user-routes.js.map +1 -0
- package/dist/bootstrap/phases/wire/index.d.ts +5 -0
- package/dist/bootstrap/phases/wire/index.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/index.js +5 -0
- package/dist/bootstrap/phases/wire/index.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-adapter.d.ts +12 -0
- package/dist/bootstrap/phases/wire/wire-adapter.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-adapter.js +156 -0
- package/dist/bootstrap/phases/wire/wire-adapter.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-auth.d.ts +3 -0
- package/dist/bootstrap/phases/wire/wire-auth.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-auth.js +46 -0
- package/dist/bootstrap/phases/wire/wire-auth.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-contexts.d.ts +3 -0
- package/dist/bootstrap/phases/wire/wire-contexts.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-contexts.js +15 -0
- package/dist/bootstrap/phases/wire/wire-contexts.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts +3 -0
- package/dist/bootstrap/phases/wire/wire-cron-routes.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-cron-routes.js +102 -0
- package/dist/bootstrap/phases/wire/wire-cron-routes.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-extras.d.ts +3 -0
- package/dist/bootstrap/phases/wire/wire-extras.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-extras.js +305 -0
- package/dist/bootstrap/phases/wire/wire-extras.js.map +1 -0
- package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts +3 -0
- package/dist/bootstrap/phases/wire/wire-workflow-routes.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire/wire-workflow-routes.js +212 -0
- package/dist/bootstrap/phases/wire/wire-workflow-routes.js.map +1 -0
- package/dist/bootstrap/phases/wire-http.d.ts +3 -0
- package/dist/bootstrap/phases/wire-http.d.ts.map +1 -0
- package/dist/bootstrap/phases/wire-http.js +10 -0
- package/dist/bootstrap/phases/wire-http.js.map +1 -0
- package/dist/bootstrap/validate-generated-ts.d.ts +6 -0
- package/dist/bootstrap/validate-generated-ts.d.ts.map +1 -0
- package/dist/bootstrap/validate-generated-ts.js +26 -0
- package/dist/bootstrap/validate-generated-ts.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +10 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +138 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +421 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/build.d.ts +21 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +399 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/db/create.d.ts +17 -0
- package/dist/commands/db/create.d.ts.map +1 -0
- package/dist/commands/db/create.js +94 -0
- package/dist/commands/db/create.js.map +1 -0
- package/dist/commands/db/diff.d.ts +39 -0
- package/dist/commands/db/diff.d.ts.map +1 -0
- package/dist/commands/db/diff.js +81 -0
- package/dist/commands/db/diff.js.map +1 -0
- package/dist/commands/db/generate.d.ts +58 -0
- package/dist/commands/db/generate.d.ts.map +1 -0
- package/dist/commands/db/generate.js +138 -0
- package/dist/commands/db/generate.js.map +1 -0
- package/dist/commands/db/migrate.d.ts +29 -0
- package/dist/commands/db/migrate.d.ts.map +1 -0
- package/dist/commands/db/migrate.js +118 -0
- package/dist/commands/db/migrate.js.map +1 -0
- package/dist/commands/db/pg-deps.d.ts +30 -0
- package/dist/commands/db/pg-deps.d.ts.map +1 -0
- package/dist/commands/db/pg-deps.js +178 -0
- package/dist/commands/db/pg-deps.js.map +1 -0
- package/dist/commands/db/rollback.d.ts +21 -0
- package/dist/commands/db/rollback.d.ts.map +1 -0
- package/dist/commands/db/rollback.js +85 -0
- package/dist/commands/db/rollback.js.map +1 -0
- package/dist/commands/db/types.d.ts +113 -0
- package/dist/commands/db/types.d.ts.map +1 -0
- package/dist/commands/db/types.js +4 -0
- package/dist/commands/db/types.js.map +1 -0
- package/dist/commands/dev.d.ts +12 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +79 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/exec.d.ts +21 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +148 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/generate.d.ts +11 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +19 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +476 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/start.d.ts +15 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +121 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/user.d.ts +19 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +125 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/config/load-config.d.ts +23 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/load-config.js +105 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/load-env.d.ts +11 -0
- package/dist/config/load-env.d.ts.map +1 -0
- package/dist/config/load-env.js +61 -0
- package/dist/config/load-env.js.map +1 -0
- package/dist/config/resolve-adapters.d.ts +23 -0
- package/dist/config/resolve-adapters.d.ts.map +1 -0
- package/dist/config/resolve-adapters.js +96 -0
- package/dist/config/resolve-adapters.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/jiti.d.ts +2 -0
- package/dist/jiti.d.ts.map +1 -0
- package/dist/jiti.js +2 -0
- package/dist/jiti.js.map +1 -0
- package/dist/openapi/generate-spec.d.ts +56 -0
- package/dist/openapi/generate-spec.d.ts.map +1 -0
- package/dist/openapi/generate-spec.js +491 -0
- package/dist/openapi/generate-spec.js.map +1 -0
- package/dist/openapi/index.d.ts +4 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +3 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/swagger-html.d.ts +2 -0
- package/dist/openapi/swagger-html.d.ts.map +1 -0
- package/dist/openapi/swagger-html.js +29 -0
- package/dist/openapi/swagger-html.js.map +1 -0
- package/dist/plugins/merge-resources.d.ts +18 -0
- package/dist/plugins/merge-resources.d.ts.map +1 -0
- package/dist/plugins/merge-resources.js +76 -0
- package/dist/plugins/merge-resources.js.map +1 -0
- package/dist/plugins/resolve-plugins.d.ts +14 -0
- package/dist/plugins/resolve-plugins.d.ts.map +1 -0
- package/dist/plugins/resolve-plugins.js +73 -0
- package/dist/plugins/resolve-plugins.js.map +1 -0
- package/dist/resource-loader.d.ts +151 -0
- package/dist/resource-loader.d.ts.map +1 -0
- package/dist/resource-loader.js +456 -0
- package/dist/resource-loader.js.map +1 -0
- package/dist/route-discovery.d.ts +33 -0
- package/dist/route-discovery.d.ts.map +1 -0
- package/dist/route-discovery.js +69 -0
- package/dist/route-discovery.js.map +1 -0
- package/dist/server-bootstrap.d.ts +38 -0
- package/dist/server-bootstrap.d.ts.map +1 -0
- package/dist/server-bootstrap.js +21 -0
- package/dist/server-bootstrap.js.map +1 -0
- package/dist/spa/generate-spa.d.ts +15 -0
- package/dist/spa/generate-spa.d.ts.map +1 -0
- package/dist/spa/generate-spa.js +357 -0
- package/dist/spa/generate-spa.js.map +1 -0
- package/dist/templates/agent/nextjs.md +129 -0
- package/dist/templates/agent/nuxt.md +98 -0
- package/dist/templates/agent/standalone.md +498 -0
- package/dist/types.d.ts +145 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/colors.d.ts +7 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +8 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompts.d.ts +6 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +28 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/spinner.d.ts +7 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +20 -0
- package/dist/utils/spinner.js.map +1 -0
- 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 @@
|
|
|
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":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAqB,EAAE,MAAc;IACxE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;IAE1F,qCAAqC;IACrC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAChD,IAAI,CAAC,QAAQ;gBAAE,SAAQ;YAEvB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,CAAA;YAClF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,EAAE,kBAAkB,SAAS,CAAC,OAAO,iCAAiC,CAAC,CAAA;gBACvG,SAAQ;YACV,CAAC;YAED,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;gBACtF,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;oBAChD,MAAM,SAAS,GAA4B,EAAE,CAAA;oBAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;wBACtD,IAAI,KAAK,KAAK,MAAM;4BAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;6BACtC,IAAI,KAAK,KAAK,OAAO;4BAAE,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;6BAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;4BAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;4BACvD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;oBAC7B,CAAC;oBAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;oBAE3C,MAAM,UAAU,GAAuC,EAAE,CAAA;oBACzD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBAC3B,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;oBACnB,CAAC,CAAC,CAAA;oBAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;oBAC7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;wBAC3C,KAAK,EAAE,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;wBAC9C,GAAG,EAAE,MAAM;wBACX,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,UAAU;qBACpB,CAAC,CAAA;oBACF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAK,GAAyB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACnD,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAG,GAA4B,CAAC,MAAM,EAAE,EACrG,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;oBACH,CAAC;oBACD,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,CAAA;oBACtC,MAAM,CAAC,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAA;oBACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;YACxE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,2BAA2B,CAAC,CAAA;gBAC1E,SAAQ;YACV,CAAC;YAED,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,QAAQ,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;gBAC7E,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAQ9B,GAAG,CAAC,CAAA;oBAEP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;oBAChG,CAAC;oBAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;oBAE3C,MAAM,QAAQ,GAAG,QAAmE,CAAA;oBACpF,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACpE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;wBAC1B,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,MAAM,qCAAqC,EAAE,EAC3F,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;oBACH,CAAC;oBAED,MAAM,aAAa,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA;oBAE1E,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC7D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;wBACzD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,MAAM,CAAC,IAAI,CAAC,gBAAgB,OAAO,eAAe,GAAG,qCAAqC,CAAC,CAAA;4BAC3F,OAAO,KAAK,CAAA;wBACd,CAAC;wBACD,OAAO,IAAI,CAAA;oBACb,CAAC,CAAC,CAAA;oBAEF,8EAA8E;oBAC9E,MAAM,YAAY,GAAG,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAC,cAAc,CAAQ,CAAA;oBACnE,MAAM,WAAW,GAAG;wBAClB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;wBAC1E,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;wBAC1G,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;wBAC9E,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;wBACrE,CAAC,EAAE,IAAI,CAAC,CAAC;qBACV,CAAA;oBAED,wEAAwE;oBACxE,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,YAAY,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;wBACxE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;wBACnE,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;oBACvC,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;oBACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,CAAA;oBACtC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,KAAK,OAAO,EAAE,CAAC,CAAA;oBACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,IAAI,CAAC,QAAQ,WAAY,QAAoE,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAE,QAAoE,CAAC,MAAM,CAAC,CAAC,MAAM,WAAW,GAAG,CACpQ,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|