@vegamo/loom 0.1.5 → 0.1.7
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 +21 -3
- package/dist/agents/core/agent.d.ts.map +1 -1
- package/dist/agents/core/agent.js +3 -1
- package/dist/agents/core/agent.js.map +1 -1
- package/dist/agents/core/prompt.d.ts +2 -1
- package/dist/agents/core/prompt.d.ts.map +1 -1
- package/dist/agents/core/prompt.js +3 -2
- package/dist/agents/core/prompt.js.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/llm/client.js +1 -1
- package/dist/llm/client.js.map +1 -1
- package/dist/mocks/router.d.ts.map +1 -1
- package/dist/mocks/router.js +16 -2
- package/dist/mocks/router.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +2 -0
- package/dist/serve.js.map +1 -1
- package/dist/shared/config-wizard.d.ts +1 -1
- package/dist/shared/config-wizard.d.ts.map +1 -1
- package/dist/shared/config-wizard.js +11 -12
- package/dist/shared/config-wizard.js.map +1 -1
- package/dist/shared/config.d.ts +15 -10
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +29 -15
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/mock-store.d.ts +59 -0
- package/dist/shared/mock-store.d.ts.map +1 -0
- package/dist/shared/mock-store.js +146 -0
- package/dist/shared/mock-store.js.map +1 -0
- package/dist/shared/mock-template.d.ts +11 -0
- package/dist/shared/mock-template.d.ts.map +1 -0
- package/dist/shared/mock-template.js +21 -0
- package/dist/shared/mock-template.js.map +1 -0
- package/dist/shared/requirement.d.ts +27 -0
- package/dist/shared/requirement.d.ts.map +1 -0
- package/dist/shared/requirement.js +70 -0
- package/dist/shared/requirement.js.map +1 -0
- package/dist/shared/schema-utils.d.ts.map +1 -1
- package/dist/shared/schema-utils.js +3 -1
- package/dist/shared/schema-utils.js.map +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +18 -0
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/Input.d.ts.map +1 -1
- package/dist/tui/components/Input.js +1 -0
- package/dist/tui/components/Input.js.map +1 -1
- package/dist/view/public/bundle.js +705 -327
- package/dist/view/public/bundle.js.map +4 -4
- package/dist/view/routes/mocks.d.ts +19 -0
- package/dist/view/routes/mocks.d.ts.map +1 -0
- package/dist/view/routes/mocks.js +165 -0
- package/dist/view/routes/mocks.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mocks API 路由
|
|
3
|
+
*
|
|
4
|
+
* GET /api/mocks/:filename/:method/*?status=200
|
|
5
|
+
* 返回当前 mock 数据。如果存档里没有, 用 generator 生成默认值,
|
|
6
|
+
* 并在响应里标记 isDefault: true。
|
|
7
|
+
*
|
|
8
|
+
* PUT /api/mocks/:filename/:method/*?status=200
|
|
9
|
+
* 保存 mock 数据 (写到 docs/<filename>.mock.json)。
|
|
10
|
+
* body: { data: <任意 JSON> }
|
|
11
|
+
*
|
|
12
|
+
* DELETE /api/mocks/:filename/:method/*?status=200
|
|
13
|
+
* 删除存档, 让 endpoint 回退到 generator 默认。
|
|
14
|
+
*/
|
|
15
|
+
import type { FastifyInstance } from 'fastify';
|
|
16
|
+
export declare function mockRoutes(fastify: FastifyInstance, opts: {
|
|
17
|
+
docsDir: string;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=mocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/view/routes/mocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwG/C,wBAAsB,UAAU,CAC9B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mocks API 路由
|
|
3
|
+
*
|
|
4
|
+
* GET /api/mocks/:filename/:method/*?status=200
|
|
5
|
+
* 返回当前 mock 数据。如果存档里没有, 用 generator 生成默认值,
|
|
6
|
+
* 并在响应里标记 isDefault: true。
|
|
7
|
+
*
|
|
8
|
+
* PUT /api/mocks/:filename/:method/*?status=200
|
|
9
|
+
* 保存 mock 数据 (写到 docs/<filename>.mock.json)。
|
|
10
|
+
* body: { data: <任意 JSON> }
|
|
11
|
+
*
|
|
12
|
+
* DELETE /api/mocks/:filename/:method/*?status=200
|
|
13
|
+
* 删除存档, 让 endpoint 回退到 generator 默认。
|
|
14
|
+
*/
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
import { readSchemaFile } from '../../shared/schema-utils.js';
|
|
17
|
+
import { generateMockData } from '../../mocks/generator.js';
|
|
18
|
+
import { expandMockTemplate } from '../../shared/mock-template.js';
|
|
19
|
+
import { getMockOverride, setMockOverride, deleteMockOverride, getActiveMockOverride, } from '../../shared/mock-store.js';
|
|
20
|
+
function asObject(v) {
|
|
21
|
+
if (v && typeof v === 'object' && !Array.isArray(v))
|
|
22
|
+
return v;
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 用 endpoint 的 request schema 构造一条示例 curl:
|
|
27
|
+
* - request.params → 替换路径里的 :name 占位
|
|
28
|
+
* - request.query → 拼成 ?k=v&...
|
|
29
|
+
* - request.headers→ 多条 -H
|
|
30
|
+
* - request.body → -d '<json>' (并加 Content-Type: application/json)
|
|
31
|
+
*/
|
|
32
|
+
function buildCurlExample(origin, method, endpointPath, endpoint) {
|
|
33
|
+
const req = endpoint.request || {};
|
|
34
|
+
// 1. path params
|
|
35
|
+
let pathFilled = endpointPath;
|
|
36
|
+
const paramsObj = asObject(generateMockData(req.params || {}));
|
|
37
|
+
if (paramsObj) {
|
|
38
|
+
for (const [k, v] of Object.entries(paramsObj)) {
|
|
39
|
+
pathFilled = pathFilled.replace(new RegExp(':' + k + '(?![A-Za-z0-9_])', 'g'), encodeURIComponent(String(v)));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// 2. query string
|
|
43
|
+
const queryObj = asObject(generateMockData(req.query || {}));
|
|
44
|
+
let qs = '';
|
|
45
|
+
if (queryObj && Object.keys(queryObj).length > 0) {
|
|
46
|
+
qs =
|
|
47
|
+
'?' +
|
|
48
|
+
Object.entries(queryObj)
|
|
49
|
+
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
|
|
50
|
+
.join('&');
|
|
51
|
+
}
|
|
52
|
+
const url = `${origin}/mock${pathFilled}${qs}`;
|
|
53
|
+
const lines = [`curl -i -X ${method.toUpperCase()} '${url}'`];
|
|
54
|
+
// 3. headers
|
|
55
|
+
const headersObj = asObject(generateMockData(req.headers || {}));
|
|
56
|
+
const hasHeaders = headersObj && Object.keys(headersObj).length > 0;
|
|
57
|
+
if (hasHeaders) {
|
|
58
|
+
for (const [k, v] of Object.entries(headersObj)) {
|
|
59
|
+
lines.push(`-H '${k}: ${String(v)}'`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// 4. body (POST/PUT/PATCH)
|
|
63
|
+
const upper = method.toUpperCase();
|
|
64
|
+
const allowsBody = upper !== 'GET' && upper !== 'HEAD' && upper !== 'DELETE';
|
|
65
|
+
if (allowsBody && req.body) {
|
|
66
|
+
const sample = generateMockData(req.body);
|
|
67
|
+
const ctAlready = hasHeaders &&
|
|
68
|
+
Object.keys(headersObj).some((k) => k.toLowerCase() === 'content-type');
|
|
69
|
+
if (!ctAlready)
|
|
70
|
+
lines.push(`-H 'Content-Type: application/json'`);
|
|
71
|
+
// 单引号包裹 + 转义内嵌单引号
|
|
72
|
+
const bodyStr = JSON.stringify(sample).replace(/'/g, `'\\''`);
|
|
73
|
+
lines.push(`-d '${bodyStr}'`);
|
|
74
|
+
}
|
|
75
|
+
return lines.join(' \\\n ');
|
|
76
|
+
}
|
|
77
|
+
function findEndpoint(docsDir, filename, method, endpointPath) {
|
|
78
|
+
const filepath = path.join(docsDir, filename);
|
|
79
|
+
const doc = readSchemaFile(filepath);
|
|
80
|
+
return doc.endpoints.find((e) => e.method.toUpperCase() === method.toUpperCase() && e.path === endpointPath);
|
|
81
|
+
}
|
|
82
|
+
export async function mockRoutes(fastify, opts) {
|
|
83
|
+
const { docsDir } = opts;
|
|
84
|
+
fastify.get('/api/mocks/:filename/:method/*', async (request, reply) => {
|
|
85
|
+
const { filename, method } = request.params;
|
|
86
|
+
const endpointPath = decodeURIComponent('/' + (request.params['*'] || ''));
|
|
87
|
+
const requestedStatus = request.query.status;
|
|
88
|
+
let endpoint;
|
|
89
|
+
try {
|
|
90
|
+
endpoint = findEndpoint(docsDir, filename, method, endpointPath);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return reply.status(404).send({ error: `Schema "${filename}" not found` });
|
|
94
|
+
}
|
|
95
|
+
if (!endpoint) {
|
|
96
|
+
return reply.status(404).send({ error: 'Endpoint not found in schema' });
|
|
97
|
+
}
|
|
98
|
+
// 列出该 endpoint 所有声明过的 status, 标记是否有 saved override
|
|
99
|
+
const availableStatuses = {};
|
|
100
|
+
for (const code of Object.keys(endpoint.response)) {
|
|
101
|
+
const has = getMockOverride(docsDir, filename, method, endpointPath, code);
|
|
102
|
+
availableStatuses[code] = has !== undefined ? 'override' : 'default';
|
|
103
|
+
}
|
|
104
|
+
// 选择实际返回的 status:
|
|
105
|
+
// 1. URL 显式指定且 schema 里存在 → 用它
|
|
106
|
+
// 2. 否则用当前 active override 的 status (一个 endpoint 唯一)
|
|
107
|
+
// 3. 否则第一个 2xx, 再否则任意第一个
|
|
108
|
+
const codes = Object.keys(endpoint.response);
|
|
109
|
+
const active = getActiveMockOverride(docsDir, filename, method, endpointPath);
|
|
110
|
+
const first2xx = codes.find((c) => c.startsWith('2'));
|
|
111
|
+
const successStatus = (requestedStatus && requestedStatus in endpoint.response && requestedStatus) ||
|
|
112
|
+
(active && active.statusCode in endpoint.response ? active.statusCode : undefined) ||
|
|
113
|
+
first2xx ||
|
|
114
|
+
codes[0] ||
|
|
115
|
+
'200';
|
|
116
|
+
const override = getMockOverride(docsDir, filename, method, endpointPath, successStatus);
|
|
117
|
+
// 用请求自身的 host:port 拼 curl, 同源 /mock 在 loom serve 下可用
|
|
118
|
+
const proto = request.headers['x-forwarded-proto'] || 'http';
|
|
119
|
+
const host = request.headers.host || 'localhost';
|
|
120
|
+
const origin = `${proto}://${host}`;
|
|
121
|
+
const curl = buildCurlExample(origin, method, endpointPath, endpoint);
|
|
122
|
+
if (override !== undefined) {
|
|
123
|
+
return {
|
|
124
|
+
status: successStatus,
|
|
125
|
+
isDefault: false,
|
|
126
|
+
data: expandMockTemplate(override),
|
|
127
|
+
template: override,
|
|
128
|
+
availableStatuses,
|
|
129
|
+
curl,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const responseSchema = endpoint.response[successStatus];
|
|
133
|
+
const data = responseSchema ? generateMockData(responseSchema) : { message: 'ok' };
|
|
134
|
+
return { status: successStatus, isDefault: true, data, template: data, availableStatuses, curl };
|
|
135
|
+
});
|
|
136
|
+
fastify.put('/api/mocks/:filename/:method/*', async (request, reply) => {
|
|
137
|
+
const { filename, method } = request.params;
|
|
138
|
+
const endpointPath = decodeURIComponent('/' + (request.params['*'] || ''));
|
|
139
|
+
const status = request.query.status || '200';
|
|
140
|
+
const body = request.body;
|
|
141
|
+
if (!body || !('data' in body)) {
|
|
142
|
+
return reply.status(400).send({ error: 'Body must be { data: <value> }' });
|
|
143
|
+
}
|
|
144
|
+
let endpoint;
|
|
145
|
+
try {
|
|
146
|
+
endpoint = findEndpoint(docsDir, filename, method, endpointPath);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return reply.status(404).send({ error: `Schema "${filename}" not found` });
|
|
150
|
+
}
|
|
151
|
+
if (!endpoint) {
|
|
152
|
+
return reply.status(404).send({ error: 'Endpoint not found in schema' });
|
|
153
|
+
}
|
|
154
|
+
setMockOverride(docsDir, filename, method, endpointPath, status, body.data);
|
|
155
|
+
return { ok: true, status, data: body.data };
|
|
156
|
+
});
|
|
157
|
+
fastify.delete('/api/mocks/:filename/:method/*', async (request) => {
|
|
158
|
+
const { filename, method } = request.params;
|
|
159
|
+
const endpointPath = decodeURIComponent('/' + (request.params['*'] || ''));
|
|
160
|
+
const status = request.query.status || '200';
|
|
161
|
+
deleteMockOverride(docsDir, filename, method, endpointPath, status);
|
|
162
|
+
return { ok: true };
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=mocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../src/view/routes/mocks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vegamo/loom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "AI-powered JSON Schema document generator with TUI, web viewer and mock server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@fastify/cors": "^11.2.0",
|
|
55
55
|
"@fastify/static": "^9.0.0",
|
|
56
|
+
"@types/mockjs": "^1.0.10",
|
|
56
57
|
"ajv": "^8.18.0",
|
|
57
58
|
"chalk": "^5.6.2",
|
|
58
59
|
"commander": "^14.0.3",
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
"ink-spinner": "^5.0.0",
|
|
63
64
|
"ink-text-input": "^6.0.0",
|
|
64
65
|
"mock-json-schema": "^1.1.2",
|
|
66
|
+
"mockjs": "^1.1.0",
|
|
65
67
|
"openai": "^6.32.0"
|
|
66
68
|
},
|
|
67
69
|
"devDependencies": {
|