vitek-plugin 0.2.0-beta → 0.2.2-beta
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/README.md +1 -1
- package/dist/adapters/dispatch/http-webhook.d.ts +10 -0
- package/dist/adapters/dispatch/http-webhook.d.ts.map +1 -0
- package/dist/adapters/dispatch/http-webhook.js +38 -0
- package/dist/adapters/node/console-structured-request-logger.d.ts +6 -0
- package/dist/adapters/node/console-structured-request-logger.d.ts.map +1 -0
- package/dist/adapters/node/console-structured-request-logger.js +31 -0
- package/dist/build/build-api-bundle.d.ts.map +1 -1
- package/dist/build/build-api-bundle.js +11 -0
- package/dist/build/build-sockets-bundle.d.ts.map +1 -1
- package/dist/build/build-sockets-bundle.js +11 -0
- package/dist/cli/contract.d.ts +11 -0
- package/dist/cli/contract.d.ts.map +1 -0
- package/dist/cli/contract.js +143 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +70 -0
- package/dist/cli/generate.d.ts +2 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +56 -0
- package/dist/cli/mcp-docs.d.ts +2 -0
- package/dist/cli/mcp-docs.d.ts.map +1 -0
- package/dist/cli/mcp-docs.js +4 -0
- package/dist/cli/mcp-project-write-tools.d.ts +4 -0
- package/dist/cli/mcp-project-write-tools.d.ts.map +1 -0
- package/dist/cli/mcp-project-write-tools.js +64 -0
- package/dist/cli/schedule.d.ts +2 -0
- package/dist/cli/schedule.d.ts.map +1 -0
- package/dist/cli/schedule.js +66 -0
- package/dist/core/contract/compare-asyncapi.d.ts +3 -0
- package/dist/core/contract/compare-asyncapi.d.ts.map +1 -0
- package/dist/core/contract/compare-asyncapi.js +45 -0
- package/dist/core/contract/compare-openapi.d.ts +3 -0
- package/dist/core/contract/compare-openapi.d.ts.map +1 -0
- package/dist/core/contract/compare-openapi.js +116 -0
- package/dist/core/contract/http-methods.d.ts +2 -0
- package/dist/core/contract/http-methods.d.ts.map +1 -0
- package/dist/core/contract/http-methods.js +2 -0
- package/dist/core/contract/index.d.ts +9 -0
- package/dist/core/contract/index.d.ts.map +1 -0
- package/dist/core/contract/index.js +7 -0
- package/dist/core/contract/project-specs.d.ts +12 -0
- package/dist/core/contract/project-specs.d.ts.map +1 -0
- package/dist/core/contract/project-specs.js +27 -0
- package/dist/core/contract/sort-json.d.ts +2 -0
- package/dist/core/contract/sort-json.d.ts.map +1 -0
- package/dist/core/contract/sort-json.js +14 -0
- package/dist/core/contract/types.d.ts +7 -0
- package/dist/core/contract/types.d.ts.map +1 -0
- package/dist/core/contract/types.js +1 -0
- package/dist/core/dispatch/dispatchers.d.ts +4 -0
- package/dist/core/dispatch/dispatchers.d.ts.map +1 -0
- package/dist/core/dispatch/dispatchers.js +16 -0
- package/dist/core/dispatch/emit-safe.d.ts +3 -0
- package/dist/core/dispatch/emit-safe.d.ts.map +1 -0
- package/dist/core/dispatch/emit-safe.js +10 -0
- package/dist/core/dispatch/index.d.ts +4 -0
- package/dist/core/dispatch/index.d.ts.map +1 -0
- package/dist/core/dispatch/index.js +2 -0
- package/dist/core/dispatch/types.d.ts +22 -0
- package/dist/core/dispatch/types.d.ts.map +1 -0
- package/dist/core/dispatch/types.js +1 -0
- package/dist/core/doctor/index.d.ts +3 -0
- package/dist/core/doctor/index.d.ts.map +1 -0
- package/dist/core/doctor/index.js +1 -0
- package/dist/core/doctor/report.d.ts +4 -0
- package/dist/core/doctor/report.d.ts.map +1 -0
- package/dist/core/doctor/report.js +166 -0
- package/dist/core/doctor/scan.d.ts +3 -0
- package/dist/core/doctor/scan.d.ts.map +1 -0
- package/dist/core/doctor/scan.js +23 -0
- package/dist/core/doctor/types.d.ts +12 -0
- package/dist/core/doctor/types.d.ts.map +1 -0
- package/dist/core/doctor/types.js +1 -0
- package/dist/core/events/event-bus.d.ts +8 -0
- package/dist/core/events/event-bus.d.ts.map +1 -0
- package/dist/core/events/event-bus.js +26 -0
- package/dist/core/events/index.d.ts +3 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/events/index.js +1 -0
- package/dist/core/generators/adapters/drizzle.d.ts +3 -0
- package/dist/core/generators/adapters/drizzle.d.ts.map +1 -0
- package/dist/core/generators/adapters/drizzle.js +26 -0
- package/dist/core/generators/adapters/prisma.d.ts +3 -0
- package/dist/core/generators/adapters/prisma.d.ts.map +1 -0
- package/dist/core/generators/adapters/prisma.js +136 -0
- package/dist/core/generators/adapters/sql.d.ts +3 -0
- package/dist/core/generators/adapters/sql.d.ts.map +1 -0
- package/dist/core/generators/adapters/sql.js +26 -0
- package/dist/core/generators/generate-crud.d.ts +8 -0
- package/dist/core/generators/generate-crud.d.ts.map +1 -0
- package/dist/core/generators/generate-crud.js +17 -0
- package/dist/core/generators/index.d.ts +3 -0
- package/dist/core/generators/index.d.ts.map +1 -0
- package/dist/core/generators/index.js +1 -0
- package/dist/core/generators/types.d.ts +16 -0
- package/dist/core/generators/types.d.ts.map +1 -0
- package/dist/core/generators/types.js +1 -0
- package/dist/core/generators/utils.d.ts +3 -0
- package/dist/core/generators/utils.d.ts.map +1 -0
- package/dist/core/generators/utils.js +10 -0
- package/dist/core/observability/with-span.d.ts +5 -0
- package/dist/core/observability/with-span.d.ts.map +1 -0
- package/dist/core/observability/with-span.js +7 -0
- package/dist/core/scheduler/define-schedule.d.ts +3 -0
- package/dist/core/scheduler/define-schedule.d.ts.map +1 -0
- package/dist/core/scheduler/define-schedule.js +3 -0
- package/dist/core/scheduler/in-memory-lock.d.ts +6 -0
- package/dist/core/scheduler/in-memory-lock.d.ts.map +1 -0
- package/dist/core/scheduler/in-memory-lock.js +12 -0
- package/dist/core/scheduler/index.d.ts +5 -0
- package/dist/core/scheduler/index.d.ts.map +1 -0
- package/dist/core/scheduler/index.js +3 -0
- package/dist/core/scheduler/runner.d.ts +6 -0
- package/dist/core/scheduler/runner.d.ts.map +1 -0
- package/dist/core/scheduler/runner.js +37 -0
- package/dist/core/scheduler/types.d.ts +21 -0
- package/dist/core/scheduler/types.d.ts.map +1 -0
- package/dist/core/scheduler/types.js +1 -0
- package/dist/core/server/request-log-meta.d.ts +5 -0
- package/dist/core/server/request-log-meta.d.ts.map +1 -0
- package/dist/core/server/request-log-meta.js +1 -0
- package/dist/mcp/write/apply-guard.d.ts +7 -0
- package/dist/mcp/write/apply-guard.d.ts.map +1 -0
- package/dist/mcp/write/apply-guard.js +22 -0
- package/dist/mcp/write/openapi-jsdoc.d.ts +2 -0
- package/dist/mcp/write/openapi-jsdoc.d.ts.map +1 -0
- package/dist/mcp/write/openapi-jsdoc.js +15 -0
- package/dist/mcp/write/project-write-handlers.d.ts +46 -0
- package/dist/mcp/write/project-write-handlers.d.ts.map +1 -0
- package/dist/mcp/write/project-write-handlers.js +304 -0
- package/dist/mcp/write/risks.d.ts +3 -0
- package/dist/mcp/write/risks.d.ts.map +1 -0
- package/dist/mcp/write/risks.js +20 -0
- package/dist/mcp/write/route-snippet.d.ts +5 -0
- package/dist/mcp/write/route-snippet.d.ts.map +1 -0
- package/dist/mcp/write/route-snippet.js +46 -0
- package/dist/mcp/write/safe-path.d.ts +3 -0
- package/dist/mcp/write/safe-path.d.ts.map +1 -0
- package/dist/mcp/write/safe-path.js +16 -0
- package/dist/mcp/write/test-file-content.d.ts +8 -0
- package/dist/mcp/write/test-file-content.d.ts.map +1 -0
- package/dist/mcp/write/test-file-content.js +31 -0
- package/dist/mcp/write/unified-diff.d.ts +2 -0
- package/dist/mcp/write/unified-diff.d.ts.map +1 -0
- package/dist/mcp/write/unified-diff.js +19 -0
- package/dist/mcp/write/validation-scaffold.d.ts +2 -0
- package/dist/mcp/write/validation-scaffold.d.ts.map +1 -0
- package/dist/mcp/write/validation-scaffold.js +31 -0
- package/dist/mcp-docs-server/resources/configuration.d.ts +3 -0
- package/dist/mcp-docs-server/resources/configuration.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/configuration.js +25 -0
- package/dist/mcp-docs-server/resources/context.d.ts +3 -0
- package/dist/mcp-docs-server/resources/context.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/context.js +34 -0
- package/dist/mcp-docs-server/resources/errors.d.ts +3 -0
- package/dist/mcp-docs-server/resources/errors.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/errors.js +27 -0
- package/dist/mcp-docs-server/resources/introspection.d.ts +3 -0
- package/dist/mcp-docs-server/resources/introspection.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/introspection.js +24 -0
- package/dist/mcp-docs-server/resources/middlewares.d.ts +3 -0
- package/dist/mcp-docs-server/resources/middlewares.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/middlewares.js +36 -0
- package/dist/mcp-docs-server/resources/plugin-api.d.ts +3 -0
- package/dist/mcp-docs-server/resources/plugin-api.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/plugin-api.js +32 -0
- package/dist/mcp-docs-server/resources/response.d.ts +3 -0
- package/dist/mcp-docs-server/resources/response.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/response.js +39 -0
- package/dist/mcp-docs-server/resources/routing.d.ts +3 -0
- package/dist/mcp-docs-server/resources/routing.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/routing.js +47 -0
- package/dist/mcp-docs-server/resources/validation.d.ts +3 -0
- package/dist/mcp-docs-server/resources/validation.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/validation.js +37 -0
- package/dist/mcp-docs-server/resources/websockets.d.ts +3 -0
- package/dist/mcp-docs-server/resources/websockets.d.ts.map +1 -0
- package/dist/mcp-docs-server/resources/websockets.js +42 -0
- package/dist/mcp-docs-server/start-mcp-docs-server.d.ts +2 -0
- package/dist/mcp-docs-server/start-mcp-docs-server.d.ts.map +1 -0
- package/dist/mcp-docs-server/start-mcp-docs-server.js +171 -0
- package/dist/mcp-docs-server/tools/create-middleware.d.ts +5 -0
- package/dist/mcp-docs-server/tools/create-middleware.d.ts.map +1 -0
- package/dist/mcp-docs-server/tools/create-middleware.js +29 -0
- package/dist/mcp-docs-server/tools/create-route.d.ts +5 -0
- package/dist/mcp-docs-server/tools/create-route.d.ts.map +1 -0
- package/dist/mcp-docs-server/tools/create-route.js +44 -0
- package/dist/mcp-docs-server/tools/create-socket.d.ts +5 -0
- package/dist/mcp-docs-server/tools/create-socket.d.ts.map +1 -0
- package/dist/mcp-docs-server/tools/create-socket.js +39 -0
- package/dist/mcp-docs-server/tools/suggest-vite-config.d.ts +11 -0
- package/dist/mcp-docs-server/tools/suggest-vite-config.d.ts.map +1 -0
- package/dist/mcp-docs-server/tools/suggest-vite-config.js +30 -0
- package/dist/mcp-docs-server/tools/validate-convention.d.ts +21 -0
- package/dist/mcp-docs-server/tools/validate-convention.d.ts.map +1 -0
- package/dist/mcp-docs-server/tools/validate-convention.js +48 -0
- package/dist/platform/config.d.ts +30 -0
- package/dist/platform/config.d.ts.map +1 -0
- package/dist/platform/config.js +85 -0
- package/dist/platform/correlation.d.ts +5 -0
- package/dist/platform/correlation.d.ts.map +1 -0
- package/dist/platform/correlation.js +19 -0
- package/dist/platform/index.d.ts +5 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +3 -0
- package/dist/platform/redaction.d.ts +6 -0
- package/dist/platform/redaction.d.ts.map +1 -0
- package/dist/platform/redaction.js +40 -0
- package/dist/plugin/mode.d.ts +5 -0
- package/dist/plugin/mode.d.ts.map +1 -0
- package/dist/plugin/mode.js +7 -0
- package/dist/plugin/vitek-resolve.d.ts.map +1 -1
- package/dist/plugin/vitek-resolve.js +4 -3
- package/dist/plugin/vitek-transform.d.ts +1 -1
- package/dist/plugin/vitek-transform.d.ts.map +1 -1
- package/dist/plugin/vitek-transform.js +30 -5
- package/dist/public/dispatch.d.ts +3 -0
- package/dist/public/dispatch.d.ts.map +1 -0
- package/dist/public/dispatch.js +1 -0
- package/dist/public/doctor.d.ts +3 -0
- package/dist/public/doctor.d.ts.map +1 -0
- package/dist/public/doctor.js +1 -0
- package/dist/public/errors.d.ts +2 -0
- package/dist/public/errors.d.ts.map +1 -0
- package/dist/public/errors.js +1 -0
- package/dist/public/events.d.ts +3 -0
- package/dist/public/events.d.ts.map +1 -0
- package/dist/public/events.js +1 -0
- package/dist/public/generators.d.ts +3 -0
- package/dist/public/generators.d.ts.map +1 -0
- package/dist/public/generators.js +1 -0
- package/dist/public/introspection.d.ts +3 -0
- package/dist/public/introspection.d.ts.map +1 -0
- package/dist/public/introspection.js +1 -0
- package/dist/public/observability.d.ts +3 -0
- package/dist/public/observability.d.ts.map +1 -0
- package/dist/public/observability.js +1 -0
- package/dist/public/platform.d.ts +3 -0
- package/dist/public/platform.d.ts.map +1 -0
- package/dist/public/platform.js +1 -0
- package/dist/public/plugin.d.ts +3 -0
- package/dist/public/plugin.d.ts.map +1 -0
- package/dist/public/plugin.js +1 -0
- package/dist/public/response.d.ts +2 -0
- package/dist/public/response.d.ts.map +1 -0
- package/dist/public/response.js +1 -0
- package/dist/public/scheduler.d.ts +3 -0
- package/dist/public/scheduler.d.ts.map +1 -0
- package/dist/public/scheduler.js +1 -0
- package/dist/public/testing.d.ts +3 -0
- package/dist/public/testing.d.ts.map +1 -0
- package/dist/public/testing.js +1 -0
- package/dist/public/validation.d.ts +3 -0
- package/dist/public/validation.d.ts.map +1 -0
- package/dist/public/validation.js +1 -0
- package/dist/shared/mode.d.ts +5 -0
- package/dist/shared/mode.d.ts.map +1 -0
- package/dist/shared/mode.js +7 -0
- package/dist/testing/testing.d.ts +15 -0
- package/dist/testing/testing.d.ts.map +1 -0
- package/dist/testing/testing.js +51 -0
- package/package.json +23 -21
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function createEventBus() {
|
|
2
|
+
const handlers = new Map();
|
|
3
|
+
return {
|
|
4
|
+
on(event, handler) {
|
|
5
|
+
const set = handlers.get(event) ?? new Set();
|
|
6
|
+
set.add(handler);
|
|
7
|
+
handlers.set(event, set);
|
|
8
|
+
return () => {
|
|
9
|
+
const current = handlers.get(event);
|
|
10
|
+
if (!current)
|
|
11
|
+
return;
|
|
12
|
+
current.delete(handler);
|
|
13
|
+
if (current.size === 0)
|
|
14
|
+
handlers.delete(event);
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
async emit(event, payload) {
|
|
18
|
+
const set = handlers.get(event);
|
|
19
|
+
if (!set || set.size === 0)
|
|
20
|
+
return;
|
|
21
|
+
for (const handler of Array.from(set)) {
|
|
22
|
+
await Promise.resolve(handler(payload));
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/events/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createEventBus } from './event-bus.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/adapters/drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAmB3F,eAAO,MAAM,oBAAoB,EAAE,oBASlC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toPascalCase } from '../utils.js';
|
|
2
|
+
function createTemplate(model) {
|
|
3
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
4
|
+
import { ok } from "vitek-plugin/response";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @summary Drizzle CRUD template for ${model}
|
|
8
|
+
* @tag ${model}
|
|
9
|
+
*/
|
|
10
|
+
export default async function handler(_context: VitekContext) {
|
|
11
|
+
return ok({
|
|
12
|
+
message: "Drizzle adapter template generated. Implement DB queries for ${model}.",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
}
|
|
17
|
+
export const drizzleCrudGenerator = {
|
|
18
|
+
name: 'drizzle',
|
|
19
|
+
generateCrud(input) {
|
|
20
|
+
const model = toPascalCase(input.model);
|
|
21
|
+
return [
|
|
22
|
+
{ path: `${input.outDir}/index.get.ts`, content: createTemplate(model) },
|
|
23
|
+
{ path: `${input.outDir}/crud.generated.test.ts`, content: 'import { describe, it, expect } from "vitest";\ndescribe("drizzle scaffold", () => { it("is generated", () => { expect(true).toBe(true); }); });\n' },
|
|
24
|
+
];
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/adapters/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAiI3F,eAAO,MAAM,mBAAmB,EAAE,oBAejC,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { toCamelCase, toPascalCase } from '../utils.js';
|
|
2
|
+
function createListRoute(model, modelVar) {
|
|
3
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
4
|
+
import { ok } from "vitek-plugin/response";
|
|
5
|
+
import { validateQuery } from "vitek-plugin/validation";
|
|
6
|
+
|
|
7
|
+
declare const prisma: any;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @summary List ${model}
|
|
11
|
+
* @tag ${model}
|
|
12
|
+
*/
|
|
13
|
+
export default async function handler(context: VitekContext) {
|
|
14
|
+
const query = validateQuery<{ take?: string; skip?: string }>(context.query, {
|
|
15
|
+
take: { type: "string", required: false },
|
|
16
|
+
skip: { type: "string", required: false },
|
|
17
|
+
});
|
|
18
|
+
const take = query.take ? Number(query.take) : undefined;
|
|
19
|
+
const skip = query.skip ? Number(query.skip) : undefined;
|
|
20
|
+
const data = await prisma.${modelVar}.findMany({ take, skip });
|
|
21
|
+
return ok({ data });
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
}
|
|
25
|
+
function createCreateRoute(model, modelVar) {
|
|
26
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
27
|
+
import { created } from "vitek-plugin/response";
|
|
28
|
+
import { validateBody } from "vitek-plugin/validation";
|
|
29
|
+
|
|
30
|
+
declare const prisma: any;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @summary Create ${model}
|
|
34
|
+
* @tag ${model}
|
|
35
|
+
*/
|
|
36
|
+
export default async function handler(context: VitekContext) {
|
|
37
|
+
const body = validateBody<Record<string, unknown>>(context.body, {});
|
|
38
|
+
const data = await prisma.${modelVar}.create({ data: body });
|
|
39
|
+
return created({ data });
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
function createGetByIdRoute(model, modelVar) {
|
|
44
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
45
|
+
import { notFound, ok } from "vitek-plugin/response";
|
|
46
|
+
|
|
47
|
+
declare const prisma: any;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @summary Get ${model} by id
|
|
51
|
+
* @tag ${model}
|
|
52
|
+
*/
|
|
53
|
+
export default async function handler(context: VitekContext) {
|
|
54
|
+
const id = Number(context.params.id);
|
|
55
|
+
const data = await prisma.${modelVar}.findUnique({ where: { id } });
|
|
56
|
+
if (!data) return notFound({ error: "${model} not found" });
|
|
57
|
+
return ok({ data });
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
function createPatchByIdRoute(model, modelVar) {
|
|
62
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
63
|
+
import { notFound, ok } from "vitek-plugin/response";
|
|
64
|
+
import { validateBody } from "vitek-plugin/validation";
|
|
65
|
+
|
|
66
|
+
declare const prisma: any;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @summary Update ${model} by id
|
|
70
|
+
* @tag ${model}
|
|
71
|
+
*/
|
|
72
|
+
export default async function handler(context: VitekContext) {
|
|
73
|
+
const id = Number(context.params.id);
|
|
74
|
+
const body = validateBody<Record<string, unknown>>(context.body, {});
|
|
75
|
+
const current = await prisma.${modelVar}.findUnique({ where: { id } });
|
|
76
|
+
if (!current) return notFound({ error: "${model} not found" });
|
|
77
|
+
const data = await prisma.${modelVar}.update({ where: { id }, data: body });
|
|
78
|
+
return ok({ data });
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
}
|
|
82
|
+
function createDeleteByIdRoute(model, modelVar) {
|
|
83
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
84
|
+
import { noContent, notFound } from "vitek-plugin/response";
|
|
85
|
+
|
|
86
|
+
declare const prisma: any;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @summary Delete ${model} by id
|
|
90
|
+
* @tag ${model}
|
|
91
|
+
*/
|
|
92
|
+
export default async function handler(context: VitekContext) {
|
|
93
|
+
const id = Number(context.params.id);
|
|
94
|
+
const current = await prisma.${modelVar}.findUnique({ where: { id } });
|
|
95
|
+
if (!current) return notFound({ error: "${model} not found" });
|
|
96
|
+
await prisma.${modelVar}.delete({ where: { id } });
|
|
97
|
+
return noContent();
|
|
98
|
+
}
|
|
99
|
+
`;
|
|
100
|
+
}
|
|
101
|
+
function createUnitTest(outDir, model) {
|
|
102
|
+
return `import { describe, it, expect } from "vitest";
|
|
103
|
+
|
|
104
|
+
describe("${model} generated routes", () => {
|
|
105
|
+
it("keeps generated files under ${outDir}", () => {
|
|
106
|
+
expect(true).toBe(true);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
`;
|
|
110
|
+
}
|
|
111
|
+
function createContractTest(model) {
|
|
112
|
+
return `import { describe, it, expect } from "vitest";
|
|
113
|
+
|
|
114
|
+
describe("${model} contract scaffold", () => {
|
|
115
|
+
it("placeholder for post-build contract assertion", () => {
|
|
116
|
+
expect(true).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
export const prismaCrudGenerator = {
|
|
122
|
+
name: 'prisma',
|
|
123
|
+
generateCrud(input) {
|
|
124
|
+
const model = toPascalCase(input.model);
|
|
125
|
+
const modelVar = toCamelCase(model);
|
|
126
|
+
return [
|
|
127
|
+
{ path: `${input.outDir}/index.get.ts`, content: createListRoute(model, modelVar) },
|
|
128
|
+
{ path: `${input.outDir}/index.post.ts`, content: createCreateRoute(model, modelVar) },
|
|
129
|
+
{ path: `${input.outDir}/[id].get.ts`, content: createGetByIdRoute(model, modelVar) },
|
|
130
|
+
{ path: `${input.outDir}/[id].patch.ts`, content: createPatchByIdRoute(model, modelVar) },
|
|
131
|
+
{ path: `${input.outDir}/[id].delete.ts`, content: createDeleteByIdRoute(model, modelVar) },
|
|
132
|
+
{ path: `${input.outDir}/crud.generated.test.ts`, content: createUnitTest(input.outDir, model) },
|
|
133
|
+
{ path: `${input.outDir}/crud.contract.test.ts`, content: createContractTest(model) },
|
|
134
|
+
];
|
|
135
|
+
},
|
|
136
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/adapters/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAmB3F,eAAO,MAAM,gBAAgB,EAAE,oBAS9B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toPascalCase } from '../utils.js';
|
|
2
|
+
function createTemplate(model) {
|
|
3
|
+
return `import type { VitekContext } from "vitek-plugin";
|
|
4
|
+
import { ok } from "vitek-plugin/response";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @summary SQL-first CRUD template for ${model}
|
|
8
|
+
* @tag ${model}
|
|
9
|
+
*/
|
|
10
|
+
export default async function handler(_context: VitekContext) {
|
|
11
|
+
return ok({
|
|
12
|
+
message: "SQL-first adapter template generated. Implement SQL queries for ${model}.",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
}
|
|
17
|
+
export const sqlCrudGenerator = {
|
|
18
|
+
name: 'sql',
|
|
19
|
+
generateCrud(input) {
|
|
20
|
+
const model = toPascalCase(input.model);
|
|
21
|
+
return [
|
|
22
|
+
{ path: `${input.outDir}/index.get.ts`, content: createTemplate(model) },
|
|
23
|
+
{ path: `${input.outDir}/crud.generated.test.ts`, content: 'import { describe, it, expect } from "vitest";\ndescribe("sql scaffold", () => { it("is generated", () => { expect(true).toBe(true); }); });\n' },
|
|
24
|
+
];
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-crud.d.ts","sourceRoot":"","sources":["../../../src/core/generators/generate-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAWvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,aAAa,EAAE,CAQlB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { prismaCrudGenerator } from './adapters/prisma.js';
|
|
2
|
+
import { drizzleCrudGenerator } from './adapters/drizzle.js';
|
|
3
|
+
import { sqlCrudGenerator } from './adapters/sql.js';
|
|
4
|
+
const generators = {
|
|
5
|
+
prisma: prismaCrudGenerator,
|
|
6
|
+
drizzle: drizzleCrudGenerator,
|
|
7
|
+
sql: sqlCrudGenerator,
|
|
8
|
+
};
|
|
9
|
+
export function generateCrudFiles(opts) {
|
|
10
|
+
const generator = generators[opts.adapter];
|
|
11
|
+
return generator.generateCrud({
|
|
12
|
+
adapter: opts.adapter,
|
|
13
|
+
model: opts.model,
|
|
14
|
+
outDir: opts.outDir,
|
|
15
|
+
root: opts.root,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/generators/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { generateCrudFiles } from './generate-crud.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type DataAdapterName = 'prisma' | 'drizzle' | 'sql';
|
|
2
|
+
export interface GeneratedFile {
|
|
3
|
+
path: string;
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CrudGeneratorInput {
|
|
7
|
+
adapter: DataAdapterName;
|
|
8
|
+
model: string;
|
|
9
|
+
outDir: string;
|
|
10
|
+
root: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DataAdapterGenerator {
|
|
13
|
+
name: DataAdapterName;
|
|
14
|
+
generateCrud(input: CrudGeneratorInput): GeneratedFile[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/generators/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/core/generators/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-span.d.ts","sourceRoot":"","sources":["../../../src/core/observability/with-span.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACnE;AAMD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-schedule.d.ts","sourceRoot":"","sources":["../../../src/core/scheduler/define-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CAEjF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SchedulerLockProvider } from './types.js';
|
|
2
|
+
export declare class InMemoryLockProvider implements SchedulerLockProvider {
|
|
3
|
+
private readonly locks;
|
|
4
|
+
acquire(taskName: string): Promise<(() => void) | null>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=in-memory-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-lock.d.ts","sourceRoot":"","sources":["../../../src/core/scheduler/in-memory-lock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAErC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CAS9D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { ScheduleTask, ScheduleDefinition, TaskRunResult, ScheduleRunResult, SchedulerLockProvider, } from './types.js';
|
|
2
|
+
export { defineSchedule } from './define-schedule.js';
|
|
3
|
+
export { InMemoryLockProvider } from './in-memory-lock.js';
|
|
4
|
+
export { runScheduleOnce } from './runner.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/scheduler/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleDefinition, ScheduleRunResult, SchedulerLockProvider } from './types.js';
|
|
2
|
+
export interface RunScheduleOptions {
|
|
3
|
+
lockProvider?: SchedulerLockProvider;
|
|
4
|
+
}
|
|
5
|
+
export declare function runScheduleOnce(definition: ScheduleDefinition, options?: RunScheduleOptions): Promise<ScheduleRunResult>;
|
|
6
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/scheduler/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAmC5B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { InMemoryLockProvider } from './in-memory-lock.js';
|
|
2
|
+
export async function runScheduleOnce(definition, options = {}) {
|
|
3
|
+
const lockProvider = options.lockProvider ?? new InMemoryLockProvider();
|
|
4
|
+
const results = [];
|
|
5
|
+
for (const task of definition.tasks) {
|
|
6
|
+
const release = await lockProvider.acquire(task.name);
|
|
7
|
+
if (!release) {
|
|
8
|
+
results.push({
|
|
9
|
+
name: task.name,
|
|
10
|
+
cron: task.cron,
|
|
11
|
+
ok: false,
|
|
12
|
+
error: 'Task lock not acquired',
|
|
13
|
+
});
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
await Promise.resolve(task.run());
|
|
18
|
+
results.push({
|
|
19
|
+
name: task.name,
|
|
20
|
+
cron: task.cron,
|
|
21
|
+
ok: true,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
results.push({
|
|
26
|
+
name: task.name,
|
|
27
|
+
cron: task.cron,
|
|
28
|
+
ok: false,
|
|
29
|
+
error: error instanceof Error ? error.message : String(error),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
release();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { tasks: results };
|
|
37
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ScheduleTask {
|
|
2
|
+
name: string;
|
|
3
|
+
cron: string;
|
|
4
|
+
run: () => void | Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export interface ScheduleDefinition {
|
|
7
|
+
tasks: ScheduleTask[];
|
|
8
|
+
}
|
|
9
|
+
export interface TaskRunResult {
|
|
10
|
+
name: string;
|
|
11
|
+
cron: string;
|
|
12
|
+
ok: boolean;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ScheduleRunResult {
|
|
16
|
+
tasks: TaskRunResult[];
|
|
17
|
+
}
|
|
18
|
+
export interface SchedulerLockProvider {
|
|
19
|
+
acquire(taskName: string): Promise<(() => void) | null>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/scheduler/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-log-meta.d.ts","sourceRoot":"","sources":["../../../src/core/server/request-log-meta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-guard.d.ts","sourceRoot":"","sources":["../../../src/mcp/write/apply-guard.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,eAAe,CAqB/F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { loadPlatformConfig, isFeatureEnabled } from '../../platform/config.js';
|
|
2
|
+
export function resolveApplyMode(root, apply, dryRun) {
|
|
3
|
+
if (!apply) {
|
|
4
|
+
return { dryRun: true, writeAllowed: false };
|
|
5
|
+
}
|
|
6
|
+
if (dryRun) {
|
|
7
|
+
return {
|
|
8
|
+
dryRun: true,
|
|
9
|
+
writeAllowed: false,
|
|
10
|
+
rejectReason: 'Pass dryRun: false together with apply: true to confirm writing to disk.',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const cfg = loadPlatformConfig(root);
|
|
14
|
+
if (!isFeatureEnabled(cfg, 'mcpWriteTools')) {
|
|
15
|
+
return {
|
|
16
|
+
dryRun: true,
|
|
17
|
+
writeAllowed: false,
|
|
18
|
+
rejectReason: 'Set features.mcpWriteTools: true in vitek.platform.json, then call with apply: true and dryRun: false.',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return { dryRun: false, writeAllowed: true };
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-jsdoc.d.ts","sourceRoot":"","sources":["../../../src/mcp/write/openapi-jsdoc.ts"],"names":[],"mappings":"AAAA,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAazF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function applyOpenApiSummaryToFileContent(content, summary) {
|
|
2
|
+
const re = /(\/\*\*[\s\S]*?\*\/)(\s*\n)(export\s+default)/;
|
|
3
|
+
const m = content.match(re);
|
|
4
|
+
if (!m) {
|
|
5
|
+
return `/**\n * @summary ${summary}\n */\n\n${content}`;
|
|
6
|
+
}
|
|
7
|
+
let jsdoc = m[1];
|
|
8
|
+
if (/\* @summary /m.test(jsdoc)) {
|
|
9
|
+
jsdoc = jsdoc.replace(/\* @summary [^\n]*/m, `* @summary ${summary}`);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
jsdoc = jsdoc.replace(/\/\*\*\s*/, `/**\n * @summary ${summary}\n`);
|
|
13
|
+
}
|
|
14
|
+
return content.replace(re, `${jsdoc}${m[2]}${m[3]}`);
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface McpWriteToolResult {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
dryRun: boolean;
|
|
4
|
+
written?: boolean;
|
|
5
|
+
diff: string;
|
|
6
|
+
risk: string[];
|
|
7
|
+
next: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
rejectReason?: string;
|
|
10
|
+
filePath?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface McpProjectPaths {
|
|
13
|
+
root: string;
|
|
14
|
+
apiDir: string;
|
|
15
|
+
apiBasePath: string;
|
|
16
|
+
baseUrl: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function handleVitekRouteCreate(ctx: McpProjectPaths, input: {
|
|
19
|
+
routePath: string;
|
|
20
|
+
method: string;
|
|
21
|
+
extension?: 'ts' | 'js';
|
|
22
|
+
dryRun?: boolean;
|
|
23
|
+
apply?: boolean;
|
|
24
|
+
}): McpWriteToolResult;
|
|
25
|
+
export declare function handleVitekRouteUpdate(ctx: McpProjectPaths, input: {
|
|
26
|
+
filePath: string;
|
|
27
|
+
content: string;
|
|
28
|
+
dryRun?: boolean;
|
|
29
|
+
apply?: boolean;
|
|
30
|
+
}): McpWriteToolResult;
|
|
31
|
+
export declare function handleVitekValidationSuggest(ctx: McpProjectPaths, input: {
|
|
32
|
+
filePath: string;
|
|
33
|
+
dryRun?: boolean;
|
|
34
|
+
apply?: boolean;
|
|
35
|
+
}): McpWriteToolResult;
|
|
36
|
+
export declare function handleVitekTestGenerate(ctx: McpProjectPaths, input: {
|
|
37
|
+
routeFilePath: string;
|
|
38
|
+
dryRun?: boolean;
|
|
39
|
+
apply?: boolean;
|
|
40
|
+
}): McpWriteToolResult;
|
|
41
|
+
export declare function handleVitekOpenapiSync(ctx: McpProjectPaths, input: {
|
|
42
|
+
filePath: string;
|
|
43
|
+
dryRun?: boolean;
|
|
44
|
+
apply?: boolean;
|
|
45
|
+
}): McpWriteToolResult;
|
|
46
|
+
//# sourceMappingURL=project-write-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-write-handlers.d.ts","sourceRoot":"","sources":["../../../src/mcp/write/project-write-handlers.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,kBAAkB,CAuDpB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9E,kBAAkB,CA2CpB;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,kBAAkB,CAwDpB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAClE,kBAAkB,CA6DpB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,kBAAkB,CA2DpB"}
|