@andrezz/openapimd 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/dist/cli/args.d.ts +10 -0
  4. package/dist/cli/args.d.ts.map +1 -0
  5. package/dist/cli/args.js +56 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/help.d.ts +4 -0
  8. package/dist/cli/help.d.ts.map +1 -0
  9. package/dist/cli/help.js +25 -0
  10. package/dist/cli/help.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +6 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/convert.d.ts +17 -0
  16. package/dist/convert.d.ts.map +1 -0
  17. package/dist/convert.js +36 -0
  18. package/dist/convert.js.map +1 -0
  19. package/dist/errors.d.ts +18 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +22 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +4 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/loaders/file-loader.d.ts +6 -0
  28. package/dist/loaders/file-loader.d.ts.map +1 -0
  29. package/dist/loaders/file-loader.js +20 -0
  30. package/dist/loaders/file-loader.js.map +1 -0
  31. package/dist/loaders/loader.d.ts +15 -0
  32. package/dist/loaders/loader.d.ts.map +1 -0
  33. package/dist/loaders/loader.js +21 -0
  34. package/dist/loaders/loader.js.map +1 -0
  35. package/dist/loaders/url-loader.d.ts +12 -0
  36. package/dist/loaders/url-loader.d.ts.map +1 -0
  37. package/dist/loaders/url-loader.js +42 -0
  38. package/dist/loaders/url-loader.js.map +1 -0
  39. package/dist/parsers/json-parser.d.ts +6 -0
  40. package/dist/parsers/json-parser.d.ts.map +1 -0
  41. package/dist/parsers/json-parser.js +12 -0
  42. package/dist/parsers/json-parser.js.map +1 -0
  43. package/dist/parsers/parser.d.ts +11 -0
  44. package/dist/parsers/parser.d.ts.map +1 -0
  45. package/dist/parsers/parser.js +47 -0
  46. package/dist/parsers/parser.js.map +1 -0
  47. package/dist/parsers/yaml-parser.d.ts +6 -0
  48. package/dist/parsers/yaml-parser.d.ts.map +1 -0
  49. package/dist/parsers/yaml-parser.js +13 -0
  50. package/dist/parsers/yaml-parser.js.map +1 -0
  51. package/dist/renderers/document-renderer.d.ts +12 -0
  52. package/dist/renderers/document-renderer.d.ts.map +1 -0
  53. package/dist/renderers/document-renderer.js +76 -0
  54. package/dist/renderers/document-renderer.js.map +1 -0
  55. package/dist/renderers/markdown.d.ts +10 -0
  56. package/dist/renderers/markdown.d.ts.map +1 -0
  57. package/dist/renderers/markdown.js +46 -0
  58. package/dist/renderers/markdown.js.map +1 -0
  59. package/dist/renderers/renderer.d.ts +16 -0
  60. package/dist/renderers/renderer.d.ts.map +1 -0
  61. package/dist/renderers/renderer.js +12 -0
  62. package/dist/renderers/renderer.js.map +1 -0
  63. package/dist/renderers/sections.d.ts +22 -0
  64. package/dist/renderers/sections.d.ts.map +1 -0
  65. package/dist/renderers/sections.js +209 -0
  66. package/dist/renderers/sections.js.map +1 -0
  67. package/dist/renderers/single-renderer.d.ts +8 -0
  68. package/dist/renderers/single-renderer.d.ts.map +1 -0
  69. package/dist/renderers/single-renderer.js +23 -0
  70. package/dist/renderers/single-renderer.js.map +1 -0
  71. package/dist/run.d.ts +2 -0
  72. package/dist/run.d.ts.map +1 -0
  73. package/dist/run.js +52 -0
  74. package/dist/run.js.map +1 -0
  75. package/dist/template.d.ts +6 -0
  76. package/dist/template.d.ts.map +1 -0
  77. package/dist/template.js +11 -0
  78. package/dist/template.js.map +1 -0
  79. package/dist/types.d.ts +159 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/utils.d.ts +5 -0
  84. package/dist/utils.d.ts.map +1 -0
  85. package/dist/utils.js +11 -0
  86. package/dist/utils.js.map +1 -0
  87. package/dist/version.d.ts +2 -0
  88. package/dist/version.d.ts.map +1 -0
  89. package/dist/version.js +2 -0
  90. package/dist/version.js.map +1 -0
  91. package/dist/writers/writer.d.ts +8 -0
  92. package/dist/writers/writer.d.ts.map +1 -0
  93. package/dist/writers/writer.js +15 -0
  94. package/dist/writers/writer.js.map +1 -0
  95. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAgB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;CACrC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAS7D;AAYD,qBAAa,UAAW,YAAW,UAAU;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAMlC;CACF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAWxE"}
@@ -0,0 +1,47 @@
1
+ import { InvalidSpecError, ParseError } from '../errors.js';
2
+ import { isObject } from '../utils.js';
3
+ import { JsonParser } from './json-parser.js';
4
+ import { YamlParser } from './yaml-parser.js';
5
+ export function parseSource(source) {
6
+ try {
7
+ return validate(pickParser(source.format).parse(source.content), source.sourceName);
8
+ }
9
+ catch (error) {
10
+ if (error instanceof ParseError || error instanceof InvalidSpecError) {
11
+ throw error;
12
+ }
13
+ throw new ParseError(`Unable to parse "${source.sourceName}": ${error.message}`);
14
+ }
15
+ }
16
+ function pickParser(format) {
17
+ if (format === 'json') {
18
+ return new JsonParser();
19
+ }
20
+ if (format === 'yaml') {
21
+ return new YamlParser();
22
+ }
23
+ return new AutoParser();
24
+ }
25
+ export class AutoParser {
26
+ parse(content) {
27
+ try {
28
+ return new JsonParser().parse(content);
29
+ }
30
+ catch {
31
+ return new YamlParser().parse(content);
32
+ }
33
+ }
34
+ }
35
+ export function validate(value, sourceName) {
36
+ if (!isObject(value)) {
37
+ throw new InvalidSpecError(`"${sourceName}" does not contain a valid OpenAPI object.`);
38
+ }
39
+ if (!isObject(value.info)) {
40
+ throw new InvalidSpecError(`"${sourceName}" is missing a valid "info" object.`);
41
+ }
42
+ if (!isObject(value.paths)) {
43
+ throw new InvalidSpecError(`"${sourceName}" is missing a valid "paths" object.`);
44
+ }
45
+ return value;
46
+ }
47
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACrE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,oBAAoB,MAAM,CAAC,UAAU,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAgC;IAClD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,UAAU,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,UAAU;IACrB,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,UAAkB;IACzD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,gBAAgB,CAAC,IAAI,UAAU,4CAA4C,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,IAAI,UAAU,qCAAqC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,gBAAgB,CAAC,IAAI,UAAU,sCAAsC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAA+B,CAAC;AACzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { OpenApiSpec } from '../types.js';
2
+ import { SpecParser } from './parser.js';
3
+ export declare class YamlParser implements SpecParser {
4
+ parse(content: string): OpenApiSpec;
5
+ }
6
+ //# sourceMappingURL=yaml-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/yaml-parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,qBAAa,UAAW,YAAW,UAAU;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAMlC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { parse as parseYaml } from 'yaml';
2
+ import { ParseError } from '../errors.js';
3
+ export class YamlParser {
4
+ parse(content) {
5
+ try {
6
+ return parseYaml(content);
7
+ }
8
+ catch (error) {
9
+ throw new ParseError(`Invalid YAML: ${error.message}`);
10
+ }
11
+ }
12
+ }
13
+ //# sourceMappingURL=yaml-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-parser.js","sourceRoot":"","sources":["../../src/parsers/yaml-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,OAAO,UAAU;IACrB,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,OAAO,CAAgB,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { OpenApiSpec } from '../types.js';
2
+ import { RenderedFile, Renderer } from './renderer.js';
3
+ export declare class DocumentRenderer implements Renderer {
4
+ render(spec: OpenApiSpec): RenderedFile[];
5
+ private buildTagFiles;
6
+ private tagFileName;
7
+ private renderIndex;
8
+ private renderTagFile;
9
+ private renderSchemasFile;
10
+ private hasSchemas;
11
+ }
12
+ //# sourceMappingURL=document-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/document-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBvD,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CAexC;IAED,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,76 @@
1
+ import { heading, inlineCode, joinBlocks, link, slugify, table } from './markdown.js';
2
+ import { collectOperations, groupByTag, renderInfo, renderOperation, renderSchema, renderSecurity, renderServers, } from './sections.js';
3
+ const SPEC_DIR = 'spec';
4
+ export class DocumentRenderer {
5
+ render(spec) {
6
+ const files = [];
7
+ const tagFiles = this.buildTagFiles(spec);
8
+ files.push({ path: 'index.md', content: this.renderIndex(spec, tagFiles) });
9
+ for (const tagFile of tagFiles) {
10
+ files.push({ path: tagFile.path, content: this.renderTagFile(tagFile) });
11
+ }
12
+ files.push({
13
+ path: `${SPEC_DIR}/schemas.md`,
14
+ content: this.renderSchemasFile(spec.components),
15
+ });
16
+ return files;
17
+ }
18
+ buildTagFiles(spec) {
19
+ const operations = collectOperations(spec.paths);
20
+ const groups = groupByTag(operations);
21
+ return Array.from(groups, ([tag, entries]) => ({
22
+ path: `${SPEC_DIR}/${this.tagFileName(tag)}`,
23
+ title: tag,
24
+ entries,
25
+ }));
26
+ }
27
+ tagFileName(tag) {
28
+ return `${slugify(tag) || 'default'}.md`;
29
+ }
30
+ renderIndex(spec, tagFiles) {
31
+ const blocks = [
32
+ renderInfo(spec.info),
33
+ renderServers(spec.servers),
34
+ renderSecurity(spec.components),
35
+ ];
36
+ if (tagFiles.length > 0) {
37
+ blocks.push(heading(2, 'Endpoints'));
38
+ for (const tagFile of tagFiles) {
39
+ blocks.push(heading(3, tagFile.title));
40
+ const rows = tagFile.entries.map((entry) => [
41
+ inlineCode(entry.method.toUpperCase()),
42
+ entry.path,
43
+ entry.operation.summary ?? '',
44
+ link('view', tagFile.path),
45
+ ]);
46
+ blocks.push(table(['Method', 'Path', 'Summary', 'Details'], rows));
47
+ }
48
+ }
49
+ if (this.hasSchemas(spec.components)) {
50
+ blocks.push(heading(2, 'Schemas'), `See ${link('schemas', `${SPEC_DIR}/schemas.md`)} for the data models.`);
51
+ }
52
+ return `${joinBlocks(blocks)}\n`;
53
+ }
54
+ renderTagFile(tagFile) {
55
+ const blocks = [
56
+ heading(1, tagFile.title),
57
+ ...tagFile.entries.map(renderOperation),
58
+ ];
59
+ return `${joinBlocks(blocks)}\n`;
60
+ }
61
+ renderSchemasFile(components) {
62
+ const schemas = components?.schemas;
63
+ if (!schemas || Object.keys(schemas).length === 0) {
64
+ return `${heading(1, 'Schemas')}\n\n_No schemas defined._\n`;
65
+ }
66
+ const blocks = [
67
+ heading(1, 'Schemas'),
68
+ ...Object.entries(schemas).map(([name, schema]) => renderSchema(name, schema)),
69
+ ];
70
+ return `${joinBlocks(blocks)}\n`;
71
+ }
72
+ hasSchemas(components) {
73
+ return Boolean(components?.schemas && Object.keys(components.schemas).length > 0);
74
+ }
75
+ }
76
+ //# sourceMappingURL=document-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-renderer.js","sourceRoot":"","sources":["../../src/renderers/document-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function heading(level: number, text: string): string;
2
+ export declare function bold(text: string): string;
3
+ export declare function inlineCode(text: string): string;
4
+ export declare function link(text: string, target: string): string;
5
+ export declare function codeBlock(code: string, language?: string): string;
6
+ export declare function table(headers: string[], rows: Array<Array<unknown>>): string;
7
+ export declare function escapeCell(value: string): string;
8
+ export declare function slugify(value: string): string;
9
+ export declare function joinBlocks(blocks: Array<string | undefined>): string;
10
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/renderers/markdown.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAE7D;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAK5E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAIpE"}
@@ -0,0 +1,46 @@
1
+ export function heading(level, text) {
2
+ return `${'#'.repeat(level)} ${text}`;
3
+ }
4
+ export function bold(text) {
5
+ return `**${text}**`;
6
+ }
7
+ export function inlineCode(text) {
8
+ return `\`${text}\``;
9
+ }
10
+ export function link(text, target) {
11
+ return `[${text}](${target})`;
12
+ }
13
+ export function codeBlock(code, language = '') {
14
+ return ['```' + language, code, '```'].join('\n');
15
+ }
16
+ export function table(headers, rows) {
17
+ const headerLine = `| ${headers.join(' | ')} |`;
18
+ const dividerLine = `| ${headers.map(() => '---').join(' | ')} |`;
19
+ const bodyLines = rows.map((row) => `| ${row.map((cell) => escapeCell(stringify(cell))).join(' | ')} |`);
20
+ return [headerLine, dividerLine, ...bodyLines].join('\n');
21
+ }
22
+ export function escapeCell(value) {
23
+ return value.replace(/\|/g, '\\|').replace(/\r?\n/g, '<br>');
24
+ }
25
+ export function slugify(value) {
26
+ return value
27
+ .toLowerCase()
28
+ .trim()
29
+ .replace(/[^a-z0-9]+/g, '-')
30
+ .replace(/^-+|-+$/g, '');
31
+ }
32
+ export function joinBlocks(blocks) {
33
+ return blocks
34
+ .filter((block) => typeof block === 'string' && block.length > 0)
35
+ .join('\n\n');
36
+ }
37
+ function stringify(value) {
38
+ if (value === undefined || value === null) {
39
+ return '';
40
+ }
41
+ if (typeof value === 'boolean') {
42
+ return value ? 'yes' : 'no';
43
+ }
44
+ return String(value);
45
+ }
46
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/renderers/markdown.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,IAAY;IACjD,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,MAAc;IAC/C,OAAO,IAAI,IAAI,KAAK,MAAM,GAAG,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAQ,GAAG,EAAE;IACnD,OAAO,CAAC,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAiB,EAAE,IAA2B;IAClE,MAAM,UAAU,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzG,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiC;IAC1D,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACjF,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { TemplateType } from '../template.js';
2
+ import { OpenApiSpec } from '../types.js';
3
+ export interface RenderedFile {
4
+ path: string;
5
+ content: string;
6
+ }
7
+ export interface Renderer {
8
+ render(spec: OpenApiSpec): RenderedFile[];
9
+ }
10
+ export interface RendererOptions {
11
+ fileName?: string;
12
+ }
13
+ export declare class RendererFactory {
14
+ static create(template: TemplateType, options?: RendererOptions): Renderer;
15
+ }
16
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAK7E;CACF"}
@@ -0,0 +1,12 @@
1
+ import { TEMPLATE_SINGLE } from '../template.js';
2
+ import { DocumentRenderer } from './document-renderer.js';
3
+ import { SingleRenderer } from './single-renderer.js';
4
+ export class RendererFactory {
5
+ static create(template, options = {}) {
6
+ if (template === TEMPLATE_SINGLE) {
7
+ return new SingleRenderer(options.fileName ?? 'openapi.md');
8
+ }
9
+ return new DocumentRenderer();
10
+ }
11
+ }
12
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/renderers/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAgB,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAetD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,MAAM,CAAC,QAAsB,EAAE,OAAO,GAAoB,EAAE;QACjE,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YACjC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { ComponentsObject, InfoObject, OperationObject, ParameterObject, PathsObject, ReferenceObject, RequestBodyObject, ResponsesObject, SchemaObject, ServerObject } from '../types.js';
2
+ export declare const HTTP_METHODS: readonly ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'];
3
+ export type HttpMethod = (typeof HTTP_METHODS)[number];
4
+ export interface OperationEntry {
5
+ method: HttpMethod;
6
+ path: string;
7
+ operation: OperationObject;
8
+ }
9
+ export declare function collectOperations(paths?: PathsObject): OperationEntry[];
10
+ export declare function groupByTag(entries: OperationEntry[]): Map<string, OperationEntry[]>;
11
+ export declare function renderInfo(info: InfoObject): string;
12
+ export declare function renderServers(servers?: ServerObject[]): string | undefined;
13
+ export declare function renderSecurity(components?: ComponentsObject): string | undefined;
14
+ export declare function renderOperation(entry: OperationEntry): string;
15
+ export declare function renderParameters(parameters?: Array<ParameterObject | ReferenceObject>): string | undefined;
16
+ export declare function renderRequestBody(requestBody?: RequestBodyObject | ReferenceObject): string | undefined;
17
+ export declare function renderResponses(responses?: ResponsesObject): string | undefined;
18
+ export declare function describeSchema(schema?: SchemaObject | ReferenceObject): string;
19
+ export declare function renderSchemas(components?: ComponentsObject): string | undefined;
20
+ export declare function renderSchema(name: string, schema: SchemaObject | ReferenceObject): string;
21
+ export declare function renderPropertiesTable(schema: SchemaObject): string | undefined;
22
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../src/renderers/sections.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,EACf,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EAEb,MAAM,aAAa,CAAC;AAIrB,eAAO,MAAM,YAAY,YACvB,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,CACC,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,WAAgB,GAAG,cAAc,EAAE,CAW3E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CASnF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA2BnD;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,YAAY,EAAO,GAAG,MAAM,GAAG,SAAS,CAM9E;AAED,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAahF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAuB7D;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC,GACpD,MAAM,GAAG,SAAS,CAqBpB;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAChD,MAAM,GAAG,SAAS,CAiBpB;AAED,wBAAgB,eAAe,CAAC,SAAS,GAAE,eAAoB,GAAG,MAAM,GAAG,SAAS,CAanF;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,CA2B9E;AAED,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAO/E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,CAWzF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAW9E"}
@@ -0,0 +1,209 @@
1
+ import { isReference, resolveRefName } from '../utils.js';
2
+ import { bold, heading, inlineCode, joinBlocks, table } from './markdown.js';
3
+ export const HTTP_METHODS = [
4
+ 'get',
5
+ 'put',
6
+ 'post',
7
+ 'delete',
8
+ 'options',
9
+ 'head',
10
+ 'patch',
11
+ 'trace',
12
+ ];
13
+ export function collectOperations(paths = {}) {
14
+ const entries = [];
15
+ for (const [path, pathItem] of Object.entries(paths)) {
16
+ for (const method of HTTP_METHODS) {
17
+ const operation = pathItem[method];
18
+ if (operation) {
19
+ entries.push({ method, path, operation });
20
+ }
21
+ }
22
+ }
23
+ return entries;
24
+ }
25
+ export function groupByTag(entries) {
26
+ const groups = new Map();
27
+ for (const entry of entries) {
28
+ const tag = entry.operation.tags?.[0] ?? 'default';
29
+ const list = groups.get(tag) ?? [];
30
+ list.push(entry);
31
+ groups.set(tag, list);
32
+ }
33
+ return groups;
34
+ }
35
+ export function renderInfo(info) {
36
+ const blocks = [heading(1, info.title)];
37
+ const meta = [];
38
+ if (info.version) {
39
+ meta.push(`${bold('Version:')} ${info.version}`);
40
+ }
41
+ if (info.license?.name) {
42
+ meta.push(`${bold('License:')} ${info.license.name}`);
43
+ }
44
+ if (meta.length > 0) {
45
+ blocks.push(meta.join(' | '));
46
+ }
47
+ blocks.push(info.description);
48
+ if (info.termsOfService) {
49
+ blocks.push(`${bold('Terms of Service:')} ${info.termsOfService}`);
50
+ }
51
+ if (info.contact) {
52
+ const contact = [info.contact.name, info.contact.email, info.contact.url]
53
+ .filter(Boolean)
54
+ .join(' · ');
55
+ if (contact) {
56
+ blocks.push(`${bold('Contact:')} ${contact}`);
57
+ }
58
+ }
59
+ return joinBlocks(blocks);
60
+ }
61
+ export function renderServers(servers = []) {
62
+ if (servers.length === 0) {
63
+ return undefined;
64
+ }
65
+ const rows = servers.map((server) => [server.url, server.description ?? '']);
66
+ return joinBlocks([heading(2, 'Servers'), table(['URL', 'Description'], rows)]);
67
+ }
68
+ export function renderSecurity(components) {
69
+ const schemes = components?.securitySchemes;
70
+ if (!schemes || Object.keys(schemes).length === 0) {
71
+ return undefined;
72
+ }
73
+ const rows = Object.entries(schemes).map(([name, scheme]) => {
74
+ if (isReference(scheme)) {
75
+ return [name, inlineCode(resolveRefName(scheme.$ref)), ''];
76
+ }
77
+ const resolved = scheme;
78
+ return [name, resolved.type, resolved.description ?? ''];
79
+ });
80
+ return joinBlocks([heading(2, 'Authentication'), table(['Scheme', 'Type', 'Description'], rows)]);
81
+ }
82
+ export function renderOperation(entry) {
83
+ const { method, path, operation } = entry;
84
+ const blocks = [
85
+ heading(3, `${inlineCode(method.toUpperCase())} ${path}`),
86
+ operation.summary,
87
+ ];
88
+ if (operation.deprecated) {
89
+ blocks.push('> **Deprecated**');
90
+ }
91
+ blocks.push(operation.description);
92
+ if (operation.operationId) {
93
+ blocks.push(`${bold('Operation ID:')} ${inlineCode(operation.operationId)}`);
94
+ }
95
+ blocks.push(renderParameters(operation.parameters), renderRequestBody(operation.requestBody), renderResponses(operation.responses));
96
+ return joinBlocks(blocks);
97
+ }
98
+ export function renderParameters(parameters) {
99
+ if (!parameters || parameters.length === 0) {
100
+ return undefined;
101
+ }
102
+ const rows = parameters.map((parameter) => {
103
+ if (isReference(parameter)) {
104
+ return [inlineCode(resolveRefName(parameter.$ref)), '', '', '', ''];
105
+ }
106
+ const resolved = parameter;
107
+ return [
108
+ resolved.name,
109
+ resolved.in,
110
+ resolved.required ? 'yes' : 'no',
111
+ describeSchema(resolved.schema),
112
+ resolved.description ?? '',
113
+ ];
114
+ });
115
+ return joinBlocks([
116
+ bold('Parameters'),
117
+ table(['Name', 'In', 'Required', 'Type', 'Description'], rows),
118
+ ]);
119
+ }
120
+ export function renderRequestBody(requestBody) {
121
+ if (!requestBody) {
122
+ return undefined;
123
+ }
124
+ if (isReference(requestBody)) {
125
+ return `${bold('Request Body:')} ${inlineCode(resolveRefName(requestBody.$ref))}`;
126
+ }
127
+ const resolved = requestBody;
128
+ const lines = [
129
+ bold('Request Body') + (resolved.required ? ' (required)' : ''),
130
+ resolved.description,
131
+ ];
132
+ const contentTypes = Object.keys(resolved.content ?? {});
133
+ if (contentTypes.length > 0) {
134
+ lines.push(`Content types: ${contentTypes.map(inlineCode).join(', ')}`);
135
+ }
136
+ return joinBlocks(lines);
137
+ }
138
+ export function renderResponses(responses = {}) {
139
+ const statusCodes = Object.keys(responses);
140
+ if (statusCodes.length === 0) {
141
+ return undefined;
142
+ }
143
+ const rows = statusCodes.map((statusCode) => {
144
+ const response = responses[statusCode];
145
+ if (isReference(response)) {
146
+ return [statusCode, inlineCode(resolveRefName(response.$ref))];
147
+ }
148
+ return [statusCode, response?.description ?? ''];
149
+ });
150
+ return joinBlocks([bold('Responses'), table(['Status', 'Description'], rows)]);
151
+ }
152
+ export function describeSchema(schema) {
153
+ if (!schema) {
154
+ return '';
155
+ }
156
+ if (isReference(schema)) {
157
+ return inlineCode(resolveRefName(schema.$ref));
158
+ }
159
+ const resolved = schema;
160
+ if (resolved.type === 'array') {
161
+ const itemType = describeSchema(resolved.items);
162
+ return itemType ? `array of ${itemType}` : 'array';
163
+ }
164
+ const base = resolved.format ? `${resolved.type} (${resolved.format})` : (resolved.type ?? '');
165
+ const enumPart = resolved.enum ? `enum: ${resolved.enum.map(String).join(', ')}` : '';
166
+ if (base && enumPart) {
167
+ return `${base} (${enumPart})`;
168
+ }
169
+ if (base) {
170
+ return base;
171
+ }
172
+ if (enumPart) {
173
+ return enumPart;
174
+ }
175
+ return 'any';
176
+ }
177
+ export function renderSchemas(components) {
178
+ const schemas = components?.schemas;
179
+ if (!schemas || Object.keys(schemas).length === 0) {
180
+ return undefined;
181
+ }
182
+ const blocks = Object.entries(schemas).map(([name, schema]) => renderSchema(name, schema));
183
+ return joinBlocks([heading(2, 'Schemas'), ...blocks]);
184
+ }
185
+ export function renderSchema(name, schema) {
186
+ if (isReference(schema)) {
187
+ return heading(3, name);
188
+ }
189
+ const resolved = schema;
190
+ const blocks = [heading(3, name), resolved.description];
191
+ const properties = renderPropertiesTable(resolved);
192
+ if (properties) {
193
+ blocks.push(properties);
194
+ }
195
+ return joinBlocks(blocks);
196
+ }
197
+ export function renderPropertiesTable(schema) {
198
+ const properties = schema.properties;
199
+ if (!properties || Object.keys(properties).length === 0) {
200
+ return undefined;
201
+ }
202
+ const required = new Set(schema.required ?? []);
203
+ const rows = Object.entries(properties).map(([name, property]) => {
204
+ const description = isReference(property) ? '' : property.description ?? '';
205
+ return [name, describeSchema(property), required.has(name) ? 'yes' : 'no', description];
206
+ });
207
+ return joinBlocks([bold('Properties'), table(['Property', 'Type', 'Required', 'Description'], rows)]);
208
+ }
209
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/renderers/sections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { OpenApiSpec } from '../types.js';
2
+ import { RenderedFile, Renderer } from './renderer.js';
3
+ export declare class SingleRenderer implements Renderer {
4
+ private readonly fileName;
5
+ constructor(fileName: string);
6
+ render(spec: OpenApiSpec): RenderedFile[];
7
+ }
8
+ //# sourceMappingURL=single-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/single-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUvD,qBAAa,cAAe,YAAW,QAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,MAAM,EAAI;IAEjD,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CAgBxC;CACF"}
@@ -0,0 +1,23 @@
1
+ import { heading, joinBlocks } from './markdown.js';
2
+ import { collectOperations, renderInfo, renderOperation, renderSchemas, renderSecurity, renderServers, } from './sections.js';
3
+ export class SingleRenderer {
4
+ fileName;
5
+ constructor(fileName) {
6
+ this.fileName = fileName;
7
+ }
8
+ render(spec) {
9
+ const blocks = [
10
+ renderInfo(spec.info),
11
+ renderServers(spec.servers),
12
+ renderSecurity(spec.components),
13
+ ];
14
+ const operations = collectOperations(spec.paths);
15
+ if (operations.length > 0) {
16
+ blocks.push(heading(2, 'Endpoints'));
17
+ blocks.push(...operations.map(renderOperation));
18
+ }
19
+ blocks.push(renderSchemas(spec.components));
20
+ return [{ path: this.fileName, content: `${joinBlocks(blocks)}\n` }];
21
+ }
22
+ }
23
+ //# sourceMappingURL=single-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-renderer.js","sourceRoot":"","sources":["../../src/renderers/single-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,MAAM,OAAO,cAAc;IACI,QAAQ;IAArC,YAA6B,QAAgB;wBAAhB,QAAQ;IAAW,CAAC;IAEjD,MAAM,CAAC,IAAiB;QACtB,MAAM,MAAM,GAA8B;YACxC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;SAChC,CAAC;QAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5C,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function run(argv: string[]): Promise<number>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAMA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCzD"}