@agentlang/cli 0.6.6

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/out/docs.js ADDED
@@ -0,0 +1,296 @@
1
+ import { z } from 'zod';
2
+ import yaml from 'yaml';
3
+ import { OpenApiGeneratorV3, OpenAPIRegistry, extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';
4
+ import { getUserModuleNames, fetchModule } from 'agentlang/out/runtime/module.js';
5
+ import * as fs from 'node:fs/promises';
6
+ import * as path from 'node:path';
7
+ import Converter from 'openapi-to-postmanv2';
8
+ import { execSync } from 'child_process';
9
+ extendZodWithOpenApi(z);
10
+ const registry = new OpenAPIRegistry();
11
+ const bearerAuth = registry.registerComponent('securitySchemes', 'bearerAuth', {
12
+ type: 'http',
13
+ scheme: 'bearer',
14
+ bearerFormat: 'JWT',
15
+ });
16
+ function getOpenApiDocumentation(registry, name, version) {
17
+ const generator = new OpenApiGeneratorV3(registry.definitions);
18
+ return generator.generateDocument({
19
+ openapi: '3.0.0',
20
+ info: {
21
+ version,
22
+ title: name,
23
+ description: 'This is the API',
24
+ },
25
+ servers: [{ url: 'v1' }],
26
+ });
27
+ }
28
+ function writeDocumentation(registry, docDir, name, version) {
29
+ const docs = getOpenApiDocumentation(registry, name, version);
30
+ const fileContent = yaml.stringify(docs);
31
+ void fs.mkdir(path.join(docDir, 'docs'), { recursive: true });
32
+ void fs.writeFile(`${docDir}/docs/openapi.yml`, fileContent, {
33
+ encoding: 'utf-8',
34
+ });
35
+ }
36
+ function findRelationshipPaths(moduleName, entityName) {
37
+ const module = fetchModule(moduleName);
38
+ const relationships = module.getContainsRelationshipEntries();
39
+ function findPathsRecursive(currentEntity, visited, currentPath) {
40
+ const matchingRels = relationships.filter(rel => rel.node2.origName === currentEntity);
41
+ if (matchingRels.length === 0) {
42
+ return currentPath.length > 0 ? [currentPath] : [];
43
+ }
44
+ let allPaths = [];
45
+ for (const rel of matchingRels) {
46
+ const node1Entity = rel.node1.origName;
47
+ if (visited.has(node1Entity)) {
48
+ continue;
49
+ }
50
+ const newVisited = new Set(visited);
51
+ newVisited.add(node1Entity);
52
+ const newPath = [...currentPath, rel.name, `{${node1Entity.toLowerCase()}}`, node1Entity];
53
+ const paths = findPathsRecursive(node1Entity, newVisited, newPath);
54
+ allPaths = allPaths.concat(paths);
55
+ }
56
+ return allPaths;
57
+ }
58
+ const visited = new Set([entityName]);
59
+ return findPathsRecursive(entityName, visited, [entityName]);
60
+ }
61
+ function getOneOfValues(properties) {
62
+ const oneOf = properties.get('one-of') || new Set();
63
+ return Array.from(oneOf);
64
+ }
65
+ function createZodSchemaFromEntitySchema(schema) {
66
+ return z.object(Object.fromEntries(Array.from(schema.entries()).map(([key, value]) => {
67
+ const k = key;
68
+ let v = value.properties && value.properties.get('one-of')
69
+ ? z.enum(getOneOfValues(value.properties))
70
+ : value.type === 'String'
71
+ ? z.string()
72
+ : value.type === 'Int'
73
+ ? z.number()
74
+ : value.type === 'Number'
75
+ ? z.number()
76
+ : value.type === 'Email'
77
+ ? z.string()
78
+ : value.type === 'Date'
79
+ ? z.string()
80
+ : value.type === 'Time'
81
+ ? z.string()
82
+ : value.type === 'DateTime'
83
+ ? z.string()
84
+ : value.type === 'Boolean'
85
+ ? z.boolean()
86
+ : value.type === 'UUID'
87
+ ? z.string().uuid()
88
+ : value.type === 'URL'
89
+ ? z.string()
90
+ : value.type === 'Path'
91
+ ? z.string()
92
+ : value.type === 'Map'
93
+ ? z.object({})
94
+ : value.type === 'Any'
95
+ ? z.any()
96
+ : z.any();
97
+ if (value.properties && value.properties.get('optional')) {
98
+ v = v.optional();
99
+ }
100
+ if (value.properties && value.properties.get('default')) {
101
+ const deflt = value.properties.get('default');
102
+ switch (deflt) {
103
+ case 'uuid()':
104
+ v = z.string().uuid().optional();
105
+ break;
106
+ case 'now()':
107
+ v = z.date().optional();
108
+ break;
109
+ default:
110
+ v = v.default(deflt);
111
+ }
112
+ }
113
+ return [k, v];
114
+ })));
115
+ }
116
+ function registerEntityEndpoint(method, path, tags, filterPaths, entitySchema) {
117
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
+ const endpointConfig = {
119
+ method,
120
+ path,
121
+ security: [{ [bearerAuth.name]: [] }],
122
+ tags,
123
+ responses: {
124
+ 200: {
125
+ description: 'Success',
126
+ content: {
127
+ 'application/json': {
128
+ schema: method === 'get' ? z.array(entitySchema) : entitySchema,
129
+ },
130
+ },
131
+ },
132
+ 404: {
133
+ description: 'Not Found',
134
+ },
135
+ 500: {
136
+ description: 'Internal Server Error',
137
+ },
138
+ },
139
+ };
140
+ if (method === 'post' || method === 'put') {
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
142
+ endpointConfig.request = {
143
+ body: {
144
+ content: {
145
+ 'application/json': {
146
+ schema: entitySchema,
147
+ },
148
+ },
149
+ },
150
+ };
151
+ }
152
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
153
+ endpointConfig.parameters = filterPaths.map(path => {
154
+ return {
155
+ name: path,
156
+ in: 'path',
157
+ required: true,
158
+ schema: { type: 'string' },
159
+ };
160
+ });
161
+ if (method === 'post') {
162
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
163
+ delete endpointConfig.responses['404'];
164
+ }
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
166
+ registry.registerPath(endpointConfig);
167
+ }
168
+ function generateEntitiesEntries() {
169
+ const modules = getUserModuleNames();
170
+ return modules.map((moduleName) => {
171
+ const module = fetchModule(moduleName);
172
+ const entities = module.getEntityEntries();
173
+ return entities.map((entity) => {
174
+ const entityPath = `${moduleName}/${entity.name}`;
175
+ const relatinotionshipPaths = findRelationshipPaths(moduleName, entity.name);
176
+ const entitySchema = createZodSchemaFromEntitySchema(entity.schema).openapi(`${entity.name}Schema`);
177
+ registerEntityEndpoint('post', `/${entityPath}`, [entity.name], [], entitySchema);
178
+ registerEntityEndpoint('get', `/${entityPath}`, [entity.name], [], entitySchema);
179
+ registerEntityEndpoint('put', `/${entityPath}/{id}`, [entity.name], ['id'], entitySchema);
180
+ registerEntityEndpoint('delete', `/${entityPath}/{id}`, [entity.name], ['id'], entitySchema);
181
+ if (relatinotionshipPaths.length > 1) {
182
+ relatinotionshipPaths.forEach(path => {
183
+ const relationshipPath = path.reverse().join('/');
184
+ const filterPaths = path
185
+ .filter(segment => segment.startsWith('{') && segment.endsWith('}'))
186
+ .map(segment => segment.slice(1, -1));
187
+ registerEntityEndpoint('post', `/${relationshipPath}`, [`${entity.name} (${path[path.length - 2]})`], filterPaths, entitySchema);
188
+ registerEntityEndpoint('get', `/${relationshipPath}`, [`${entity.name} (${path[path.length - 2]})`], filterPaths, entitySchema);
189
+ registerEntityEndpoint('put', `/${relationshipPath}/{id}`, [`${entity.name} (${path[path.length - 2]})`], filterPaths.concat(['id']), entitySchema);
190
+ registerEntityEndpoint('delete', `/${relationshipPath}/{id}`, [`${entity.name} (${path[path.length - 2]})`], filterPaths.concat(['id']), entitySchema);
191
+ });
192
+ }
193
+ });
194
+ });
195
+ }
196
+ function generateEventsEntries() {
197
+ const modules = getUserModuleNames();
198
+ return modules.map((moduleName) => {
199
+ const module = fetchModule(moduleName);
200
+ const events = module.getEventEntries();
201
+ return events.map((event) => {
202
+ const eventPath = `${moduleName}/${event.name}`;
203
+ const eventSchema = createZodSchemaFromEntitySchema(event.schema).openapi(`${event.name}Schema`);
204
+ const sc = z.object({
205
+ [eventPath]: eventSchema,
206
+ });
207
+ registry.registerPath({
208
+ method: 'post',
209
+ path: `/${eventPath}`,
210
+ security: [{ [bearerAuth.name]: [] }],
211
+ tags: ['Events'],
212
+ request: {
213
+ body: {
214
+ content: {
215
+ 'application/json': {
216
+ schema: sc,
217
+ },
218
+ },
219
+ },
220
+ },
221
+ responses: {
222
+ 200: {
223
+ description: 'Success',
224
+ },
225
+ 404: {
226
+ description: 'Not Found',
227
+ },
228
+ 500: {
229
+ description: 'Internal Server Error',
230
+ },
231
+ },
232
+ });
233
+ return {
234
+ path: eventPath,
235
+ name: event.name,
236
+ schema: event.schema,
237
+ };
238
+ });
239
+ });
240
+ }
241
+ export const generateSwaggerDoc = async (fileName, options) => {
242
+ // eslint-disable-next-line no-console
243
+ console.log('Generating documentation...');
244
+ const docDir = path.dirname(fileName) === '.' ? process.cwd() : path.resolve(process.cwd(), fileName);
245
+ const packagePath = path.join(docDir, 'package.json');
246
+ const packageContent = await fs.readFile(packagePath, 'utf-8');
247
+ const pkg = JSON.parse(packageContent);
248
+ const name = pkg.name || 'app';
249
+ const version = pkg.version || '0.0.1';
250
+ generateEntitiesEntries();
251
+ generateEventsEntries();
252
+ writeDocumentation(registry, docDir, name, version);
253
+ if (options === null || options === void 0 ? void 0 : options.outputHtml) {
254
+ await generateHtmlDocumentation(registry, docDir, name, version);
255
+ }
256
+ if (options === null || options === void 0 ? void 0 : options.outputPostman) {
257
+ await generatePostmanCollection(registry, docDir, name, version);
258
+ }
259
+ };
260
+ async function generateHtmlDocumentation(registry, docDir, _name, _version) {
261
+ const outputPath = `${docDir}/docs/index.html`;
262
+ const yamlContent = await fs.readFile(`${docDir}/docs/openapi.yml`, 'utf8');
263
+ const jsonContent = JSON.stringify(yaml.parse(yamlContent), null, 2);
264
+ await fs.writeFile(`${docDir}/docs/openapi.json`, jsonContent, { encoding: 'utf-8' });
265
+ // eslint-disable-next-line no-console
266
+ console.log('OpenAPI JSON generated: docs/openapi.json');
267
+ try {
268
+ execSync(`redocly build-docs ${docDir}/docs/openapi.json -o ${outputPath}`);
269
+ // eslint-disable-next-line no-console
270
+ console.log('HTML documentation generated: docs/index.html');
271
+ }
272
+ catch (error) {
273
+ // eslint-disable-next-line no-console
274
+ console.error('Failed to generate HTML documentation:', error);
275
+ }
276
+ }
277
+ async function generatePostmanCollection(registry, docDir, _name, _version) {
278
+ const openapiData = await fs.readFile(`${docDir}/docs/openapi.yml`, 'utf8');
279
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+ Converter.convert({ type: 'string', data: openapiData }, {}, (err, conversionResult) => {
281
+ var _a, _b;
282
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
283
+ if (!conversionResult.result) {
284
+ // eslint-disable-next-line no-console, @typescript-eslint/no-unsafe-member-access
285
+ console.log('Could not convert', conversionResult.reason);
286
+ }
287
+ else {
288
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
289
+ const collection = (_b = (_a = conversionResult.output) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data;
290
+ void fs.writeFile(`${docDir}/docs/postman.json`, JSON.stringify(collection, null, 2), { encoding: 'utf-8' });
291
+ // eslint-disable-next-line no-console
292
+ console.log('Postman collection generated: docs/postman.json');
293
+ }
294
+ });
295
+ }
296
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}