@contractkit/prettier-plugin 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/print-dto.js DELETED
@@ -1,100 +0,0 @@
1
- import { printField, printInlineObjectExpanded, extractTrailingInlineObject, printType } from './print-type.js';
2
- const INDENT = ' ';
3
- function groupComments(entries) {
4
- const blocks = [];
5
- let current = null;
6
- for (const { line, text } of entries) {
7
- if (current && line === current.startLine + current.lines.length) {
8
- current.lines.push(text);
9
- } else {
10
- if (current) blocks.push(current);
11
- current = { startLine: line, lines: [text] };
12
- }
13
- }
14
- if (current) blocks.push(current);
15
- return blocks;
16
- }
17
- function flushBlocks(out, blocks, idx, beforeLine) {
18
- while (idx.value < blocks.length && blocks[idx.value].startLine < beforeLine) {
19
- for (const l of blocks[idx.value].lines) out.push(l);
20
- idx.value++;
21
- }
22
- }
23
- // ─── DTO file printer ────────────────────────────────────────────────────────
24
- export function printDto(ast) {
25
- const parts = [];
26
- const blocks = groupComments(ast.orphanComments ?? []);
27
- const idx = { value: 0 };
28
- if (Object.keys(ast.meta).length > 0) {
29
- parts.push(printFrontMatter(ast.meta));
30
- }
31
- for (const model of ast.models) {
32
- const pending = [];
33
- flushBlocks(pending, blocks, idx, model.loc.line);
34
- for (const l of pending) {
35
- if (parts.length > 0 || l) parts.push(l);
36
- }
37
- if (parts.length > 0) parts.push('');
38
- parts.push(printModelDecl(model));
39
- }
40
- // Emit remaining blocks after the last model
41
- const trailing = [];
42
- flushBlocks(trailing, blocks, idx, Infinity);
43
- for (const l of trailing) {
44
- parts.push('');
45
- parts.push(l);
46
- }
47
- return parts.join('\n') + '\n';
48
- }
49
- // ─── Front matter ────────────────────────────────────────────────────────────
50
- function printFrontMatter(meta) {
51
- const lines = ['---'];
52
- for (const [key, value] of Object.entries(meta)) {
53
- lines.push(`${key}: ${printMetaValue(value)}`);
54
- }
55
- lines.push('---');
56
- return lines.join('\n');
57
- }
58
- function printMetaValue(value) {
59
- // Values starting with # or containing spaces need quoting.
60
- if (value.startsWith('#') || value.includes(' ')) return `"${value}"`;
61
- return value;
62
- }
63
- // ─── Model declaration ───────────────────────────────────────────────────────
64
- function printModelDecl(model) {
65
- // Type alias form: Name : typeExpression
66
- if (model.type !== undefined) {
67
- return printTypeAlias(model);
68
- }
69
- // Regular model with fields (possibly inherited)
70
- const commentSuffix = model.description ? ` # ${model.description}` : '';
71
- const modifiers = [model.camelCase ? 'camel' : '', model.mode ?? ''].filter(Boolean).join(' ');
72
- const modePrefix = modifiers ? `${modifiers} ` : '';
73
- const header = model.base ? `${modePrefix}${model.name}: ${model.base} {${commentSuffix}` : `${modePrefix}${model.name}: {${commentSuffix}`;
74
- const lines = [header];
75
- for (const field of model.fields) {
76
- lines.push(printField(field, INDENT));
77
- }
78
- lines.push('}');
79
- return lines.join('\n');
80
- }
81
- function printTypeAlias(model) {
82
- const type = model.type;
83
- const commentSuffix = model.description ? ` # ${model.description}` : '';
84
- const modifiers = [model.camelCase ? 'camel' : '', model.mode ?? ''].filter(Boolean).join(' ');
85
- const modePrefix = modifiers ? `${modifiers} ` : '';
86
- // If the type ends with an inline brace object, expand it as a pseudo-model block.
87
- const trailing = extractTrailingInlineObject(type);
88
- if (trailing) {
89
- const { prefix, inlineObj } = trailing;
90
- const modePart = inlineObj.mode ? `${inlineObj.mode} ` : '';
91
- const header = prefix
92
- ? `${modePrefix}${model.name}: ${prefix} & ${modePart}{${commentSuffix}`
93
- : `${modePrefix}${model.name}: ${modePart}{${commentSuffix}`;
94
- const lines = [header, ...printInlineObjectExpanded(inlineObj, INDENT), '}'];
95
- return lines.join('\n');
96
- }
97
- // Simple type alias — single line.
98
- return `${modePrefix}${model.name}: ${printType(type)}${commentSuffix}`;
99
- }
100
- //# sourceMappingURL=print-dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-dto.js","sourceRoot":"","sources":["../src/print-dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhH,MAAM,MAAM,GAAG,MAAM,CAAC;AAOtB,SAAS,aAAa,CAAC,OAAuB;IAC5C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACrC,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,GAAa,EAAE,MAAsB,EAAE,GAAsB,EAAE,UAAkB;IACpG,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;QAC9E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,QAAQ,CAAC,GAAgB;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEzB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,6CAA6C;IAC7C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,gFAAgF;AAEhF,SAAS,gBAAgB,CAAC,IAA4B;IACpD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,4DAA4D;IAC5D,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,KAAK,GAAG,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAEhF,SAAS,cAAc,CAAC,KAAgB;IACtC,yCAAyC;IACzC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,iDAAiD;IACjD,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,MAAM,aAAa,EAAE,CAAC;IAE5I,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAK,CAAC;IACzB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,mFAAmF;IACnF,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,MAAM,QAAQ,IAAI,aAAa,EAAE;YACxE,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAa,CAAC,MAAM,EAAE,GAAG,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,mCAAmC;IACnC,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;AAC1E,CAAC"}
@@ -1,24 +0,0 @@
1
- import type { OpRouteNode, SecurityNode } from '@maroonedsoftware/contractkit';
2
- type CommentEntry = {
3
- line: number;
4
- text: string;
5
- };
6
- export type CommentBlock = {
7
- startLine: number;
8
- lines: string[];
9
- };
10
- /** Group sorted orphan comment entries into consecutive-line blocks. */
11
- export declare function groupComments(entries: CommentEntry[]): CommentBlock[];
12
- /**
13
- * Emit any comment blocks whose startLine is < beforeLine.
14
- * Lines are emitted verbatim — they already carry their original indentation.
15
- */
16
- export declare function flushBlocks(out: string[], blocks: CommentBlock[], idx: {
17
- value: number;
18
- }, beforeLine: number, _indent?: string): void;
19
- export declare function printRoute(route: OpRouteNode, blocks: CommentBlock[], idx: {
20
- value: number;
21
- }, nextRouteStart: number): string;
22
- export declare function printSecurity(security: SecurityNode, indent?: string, innerIndent?: string): string[];
23
- export {};
24
- //# sourceMappingURL=print-op.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-op.d.ts","sourceRoot":"","sources":["../src/print-op.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EAIX,YAAY,EAIf,MAAM,+BAA+B,CAAC;AAYvC,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAElE,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAarE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,SAAK,QAK1H;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAwB7H;AAkED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAK,EAAE,WAAW,SAAK,GAAG,MAAM,EAAE,CAU7F"}
package/dist/print-op.js DELETED
@@ -1,224 +0,0 @@
1
- import { SECURITY_NONE } from '@maroonedsoftware/contractkit';
2
- import { printType, formatDefault } from './print-type.js';
3
- const I1 = ' ';
4
- const I2 = ' ';
5
- const I3 = ' ';
6
- const I4 = ' ';
7
- /** Group sorted orphan comment entries into consecutive-line blocks. */
8
- function groupComments(entries) {
9
- const blocks = [];
10
- let current = null;
11
- for (const { line, text } of entries) {
12
- if (current && line === current.startLine + current.lines.length) {
13
- current.lines.push(text);
14
- } else {
15
- if (current) blocks.push(current);
16
- current = { startLine: line, lines: [text] };
17
- }
18
- }
19
- if (current) blocks.push(current);
20
- return blocks;
21
- }
22
- /**
23
- * Emit any comment blocks whose startLine is < beforeLine.
24
- * Lines are emitted verbatim — they already carry their original indentation.
25
- */
26
- function flushBlocks(out, blocks, idx, beforeLine, _indent = '') {
27
- while (idx.value < blocks.length && blocks[idx.value].startLine < beforeLine) {
28
- for (const l of blocks[idx.value].lines) out.push(l);
29
- idx.value++;
30
- }
31
- }
32
- // ─── OP file printer ────────────────────────────────────────────────────────
33
- export function printOp(ast) {
34
- const parts = [];
35
- const blocks = groupComments(ast.orphanComments ?? []);
36
- const idx = { value: 0 };
37
- if (Object.keys(ast.meta).length > 0) {
38
- parts.push(printFrontMatter(ast.meta));
39
- }
40
- if (ast.security !== undefined) {
41
- if (parts.length > 0) parts.push('');
42
- parts.push(...printSecurity(ast.security, '', I1));
43
- }
44
- for (let i = 0; i < ast.routes.length; i++) {
45
- const route = ast.routes[i];
46
- const nextRouteStart = ast.routes[i + 1]?.loc.line ?? Infinity;
47
- // Emit orphan blocks that appear before this route
48
- const pending = [];
49
- flushBlocks(pending, blocks, idx, route.loc.line);
50
- for (const l of pending) {
51
- if (parts.length > 0 || l) parts.push(l);
52
- }
53
- if (parts.length > 0) parts.push('');
54
- parts.push(printRoute(route, blocks, idx, nextRouteStart));
55
- }
56
- // Emit any remaining blocks after the last route
57
- const trailing = [];
58
- flushBlocks(trailing, blocks, idx, Infinity);
59
- for (const l of trailing) {
60
- parts.push('');
61
- parts.push(l);
62
- }
63
- return parts.join('\n') + '\n';
64
- }
65
- // ─── Front matter ────────────────────────────────────────────────────────────
66
- function printFrontMatter(meta) {
67
- const lines = ['---'];
68
- for (const [key, value] of Object.entries(meta)) {
69
- lines.push(`${key}: ${printMetaValue(value)}`);
70
- }
71
- lines.push('---');
72
- return lines.join('\n');
73
- }
74
- function printMetaValue(value) {
75
- if (value.startsWith('#') || value.includes(' ')) return `"${value}"`;
76
- return value;
77
- }
78
- // ─── Route ───────────────────────────────────────────────────────────────────
79
- function printRoute(route, blocks, idx, nextRouteStart) {
80
- const lines = [];
81
- const commentSuffix = route.description ? ` # ${route.description}` : '';
82
- const modifiersPart = route.modifiers?.length ? `: ${route.modifiers.join(' ')}` : '';
83
- lines.push(`${route.path}${modifiersPart} {${commentSuffix}`);
84
- if (route.params !== undefined) {
85
- lines.push(...printParamsBlock(route.params, I1, route.paramsMode));
86
- }
87
- if (route.security !== undefined) {
88
- lines.push(...printSecurity(route.security, I1, I2));
89
- }
90
- for (const op of route.operations) {
91
- // Flush comment blocks that appear before this operation (inside the route)
92
- flushBlocks(lines, blocks, idx, op.loc.line, I1);
93
- lines.push(...printOperation(op));
94
- }
95
- // Flush comment blocks between last operation and the next route
96
- flushBlocks(lines, blocks, idx, nextRouteStart, I1);
97
- lines.push('}');
98
- return lines.join('\n');
99
- }
100
- // ─── Params block ────────────────────────────────────────────────────────────
101
- function printParamsBlock(source, indent, mode) {
102
- const prefix = mode ? `${mode} ` : '';
103
- if (typeof source === 'string') {
104
- return [`${indent}${prefix}params: ${source}`];
105
- }
106
- if (Array.isArray(source)) {
107
- const lines = [`${indent}${prefix}params: {`];
108
- const inner = indent + ' ';
109
- for (const p of source) {
110
- const opt = p.optional ? '?' : '';
111
- let t = printType(p.type);
112
- if (p.nullable) t += ' | null';
113
- const def = p.default !== undefined ? ` = ${formatDefault(p.default)}` : '';
114
- const comment = p.description ? ` # ${p.description}` : '';
115
- lines.push(`${inner}${p.name}${opt}: ${t}${def}${comment}`);
116
- }
117
- lines.push(`${indent}}`);
118
- return lines;
119
- }
120
- // DtoTypeNode
121
- return [`${indent}${prefix}params: ${printType(source)}`];
122
- }
123
- // ─── HTTP operation ──────────────────────────────────────────────────────────
124
- function printOperation(op) {
125
- const lines = [];
126
- const commentSuffix = op.description ? ` # ${op.description}` : '';
127
- const modifiersPart = op.modifiers?.length ? ` ${op.modifiers.join(' ')}` : '';
128
- lines.push(`${I1}${op.method}:${modifiersPart} {${commentSuffix}`);
129
- if (op.service) lines.push(`${I2}service: ${op.service}`);
130
- if (op.sdk) lines.push(`${I2}sdk: ${op.sdk}`);
131
- if (op.signature) {
132
- const comment = op.signatureDescription ? ` # ${op.signatureDescription}` : '';
133
- lines.push(`${I2}signature: ${formatSignatureValue(op.signature)}${comment}`);
134
- }
135
- if (op.security !== undefined) lines.push(...printSecurity(op.security));
136
- if (op.query !== undefined) lines.push(...printQueryOrHeaders('query', op.query, op.queryMode));
137
- if (op.headers !== undefined) lines.push(...printQueryOrHeaders('headers', op.headers, op.headersMode));
138
- if (op.request) {
139
- lines.push(`${I2}request: {`);
140
- lines.push(...printContentTypeLine(op.request.contentType, op.request.bodyType, I3));
141
- lines.push(`${I2}}`);
142
- }
143
- if (op.responses.length > 0) {
144
- lines.push(...printResponseBlock(op.responses));
145
- }
146
- lines.push(`${I1}}`);
147
- return lines;
148
- }
149
- // ─── Security ────────────────────────────────────────────────────────────────
150
- /** Print a signature key: unquoted when it's a plain identifier, quoted otherwise. */
151
- function formatSignatureValue(value) {
152
- return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(value) ? value : `"${value}"`;
153
- }
154
- // indent: indentation for the `security` keyword line
155
- // innerIndent: indentation for field lines inside the block
156
- function printSecurity(security, indent = I2, innerIndent = I3) {
157
- if (security === SECURITY_NONE) return [`${indent}security: none`];
158
- const fields = security;
159
- const hasRoles = fields.roles && fields.roles.length > 0;
160
- if (!hasRoles) return [];
161
- const lines = [`${indent}security: {`];
162
- const comment = fields.rolesDescription ? ` # ${fields.rolesDescription}` : '';
163
- lines.push(`${innerIndent}roles: ${fields.roles.join(' ')}${comment}`);
164
- lines.push(`${indent}}`);
165
- return lines;
166
- }
167
- // ─── Query / headers ─────────────────────────────────────────────────────────
168
- function printQueryOrHeaders(keyword, source, mode) {
169
- const prefix = mode ? `${mode} ` : '';
170
- if (typeof source === 'string') {
171
- return [`${I2}${prefix}${keyword}: ${source}`];
172
- }
173
- if (Array.isArray(source)) {
174
- if (source.length === 0) return [];
175
- const lines = [`${I2}${prefix}${keyword}: {`];
176
- for (const p of source) {
177
- const opt = p.optional ? '?' : '';
178
- let t = printType(p.type);
179
- if (p.nullable) t += ' | null';
180
- const def = p.default !== undefined ? ` = ${formatDefault(p.default)}` : '';
181
- const comment = p.description ? ` # ${p.description}` : '';
182
- lines.push(`${I3}${p.name}${opt}: ${t}${def}${comment}`);
183
- }
184
- lines.push(`${I2}}`);
185
- return lines;
186
- }
187
- // DtoTypeNode (e.g. intersection)
188
- return [`${I2}${prefix}${keyword}: ${printType(source)}`];
189
- }
190
- // ─── Content-type line ───────────────────────────────────────────────────────
191
- /** Print a `contentType: bodyType` line, expanding inline brace objects onto separate lines. */
192
- function printContentTypeLine(contentType, bodyType, lineIndent) {
193
- if (bodyType.kind === 'inlineObject') {
194
- const fieldIndent = lineIndent + ' ';
195
- const lines = [`${lineIndent}${contentType}: {`];
196
- for (const f of bodyType.fields) {
197
- const opt = f.optional ? '?' : '';
198
- let t = printType(f.type);
199
- if (f.nullable) t += ' | null';
200
- const def = f.default !== undefined ? ` = ${formatDefault(f.default)}` : '';
201
- const comment = f.description ? ` # ${f.description}` : '';
202
- lines.push(`${fieldIndent}${f.name}${opt}: ${t}${def}${comment}`);
203
- }
204
- lines.push(`${lineIndent}}`);
205
- return lines;
206
- }
207
- return [`${lineIndent}${contentType}: ${printType(bodyType)}`];
208
- }
209
- // ─── Response block ──────────────────────────────────────────────────────────
210
- function printResponseBlock(responses) {
211
- const lines = [`${I2}response: {`];
212
- for (const resp of responses) {
213
- if (resp.contentType && resp.bodyType) {
214
- lines.push(`${I3}${resp.statusCode}: {`);
215
- lines.push(...printContentTypeLine(resp.contentType, resp.bodyType, I4));
216
- lines.push(`${I3}}`);
217
- } else {
218
- lines.push(`${I3}${resp.statusCode}:`);
219
- }
220
- }
221
- lines.push(`${I2}}`);
222
- return lines;
223
- }
224
- //# sourceMappingURL=print-op.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-op.js","sourceRoot":"","sources":["../src/print-op.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- // ─── Type expression printer ────────────────────────────────────────────────
2
- export function printType(type) {
3
- switch (type.kind) {
4
- case 'scalar': {
5
- const constraints = [];
6
- if (type.format !== undefined) {
7
- // Print unquoted when format contains only safe chars; quote otherwise
8
- const fmt = type.format;
9
- constraints.push(/^[a-zA-Z0-9\-.:\/]+$/.test(fmt) ? fmt : `"${fmt}"`);
10
- }
11
- if (type.min !== undefined) constraints.push(`min=${type.min}`);
12
- if (type.max !== undefined) constraints.push(`max=${type.max}`);
13
- if (type.len !== undefined) constraints.push(`len=${type.len}`);
14
- if (type.regex !== undefined) constraints.push(`regex=/${type.regex}/`);
15
- return constraints.length > 0 ? `${type.name}(${constraints.join(', ')})` : type.name;
16
- }
17
- case 'array': {
18
- const args = [printType(type.item)];
19
- if (type.min !== undefined) args.push(`min=${type.min}`);
20
- if (type.max !== undefined) args.push(`max=${type.max}`);
21
- return `array(${args.join(', ')})`;
22
- }
23
- case 'tuple':
24
- return `tuple(${type.items.map(printType).join(', ')})`;
25
- case 'record':
26
- return `record(${printType(type.key)}, ${printType(type.value)})`;
27
- case 'enum':
28
- return `enum(${type.values.join(', ')})`;
29
- case 'literal':
30
- return typeof type.value === 'string' ? `literal("${type.value}")` : `literal(${type.value})`;
31
- case 'union':
32
- return type.members.map(printType).join(' | ');
33
- case 'intersection':
34
- return type.members.map(printType).join(' & ');
35
- case 'ref':
36
- return type.name;
37
- case 'inlineObject':
38
- return printInlineObjectCompact(type);
39
- case 'lazy':
40
- return `lazy(${printType(type.inner)})`;
41
- }
42
- }
43
- /** Compact single-line form — used when inline object appears nested inside another type. */
44
- function printInlineObjectCompact(obj) {
45
- const prefix = obj.mode ? `${obj.mode} ` : '';
46
- if (obj.fields.length === 0) return `${prefix}{}`;
47
- const parts = obj.fields.map(f => {
48
- const opt = f.optional ? '?' : '';
49
- let t = printType(f.type);
50
- if (f.nullable) t += ' | null';
51
- return `${f.name}${opt}: ${t}`;
52
- });
53
- return `${prefix}{ ${parts.join(', ')} }`;
54
- }
55
- // ─── Field printer ──────────────────────────────────────────────────────────
56
- /** Print a full field declaration, including visibility, default, and inline comment. */
57
- export function printField(field, indent) {
58
- const opt = field.optional ? '?' : '';
59
- const vis = field.visibility !== 'normal' ? `${field.visibility} ` : '';
60
- const def = field.default !== undefined ? ` = ${formatDefault(field.default)}` : '';
61
- const comment = field.description ? ` # ${field.description}` : '';
62
- const innerIndent = indent + ' ';
63
- // Expand inline object types to multi-line — same rule as type aliases.
64
- // Only when there's no default and no nullable union (those can't split cleanly).
65
- if (!field.nullable && field.default === undefined) {
66
- const trailing = extractTrailingInlineObject(field.type);
67
- if (trailing) {
68
- const { prefix, inlineObj } = trailing;
69
- const modePart = inlineObj.mode ? `${inlineObj.mode} ` : '';
70
- const header = prefix
71
- ? `${indent}${field.name}${opt}: ${vis}${prefix} & ${modePart}{${comment}`
72
- : `${indent}${field.name}${opt}: ${vis}${modePart}{${comment}`;
73
- return [header, ...printInlineObjectExpanded(inlineObj, innerIndent), `${indent}}`].join('\n');
74
- }
75
- }
76
- let typeStr = printType(field.type);
77
- if (field.nullable) typeStr += ' | null';
78
- return `${indent}${field.name}${opt}: ${vis}${typeStr}${def}${comment}`;
79
- }
80
- /** Print inline-object fields expanded (used when an inline brace object trails a type alias). */
81
- export function printInlineObjectExpanded(obj, indent) {
82
- return obj.fields.map(f => printField(f, indent));
83
- }
84
- // ─── Helpers ────────────────────────────────────────────────────────────────
85
- /** Format a default value: quote strings that aren't valid bare identifiers. */
86
- export function formatDefault(val) {
87
- if (typeof val === 'number' || typeof val === 'boolean') return String(val);
88
- // If it looks like a bare identifier (enum value, unquoted token), keep it bare.
89
- if (/^[a-zA-Z_$][a-zA-Z0-9_$\-.]*$/.test(val)) return val;
90
- return `"${val}"`;
91
- }
92
- /**
93
- * Detect whether the last member of a type is an inline brace object, and if so
94
- * return the prefix type string and the inline object for expanded printing.
95
- * Returns null if the type doesn't end with an inline object.
96
- */
97
- export function extractTrailingInlineObject(type) {
98
- if (type.kind === 'inlineObject') {
99
- return { prefix: null, inlineObj: type };
100
- }
101
- if (type.kind === 'intersection') {
102
- const last = type.members[type.members.length - 1];
103
- if (last?.kind === 'inlineObject') {
104
- const prefixStr = type.members.slice(0, -1).map(printType).join(' & ');
105
- return { prefix: prefixStr, inlineObj: last };
106
- }
107
- }
108
- return null;
109
- }
110
- //# sourceMappingURL=print-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-type.js","sourceRoot":"","sources":["../src/print-type.ts"],"names":[],"mappings":"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"}