@pylonts/dsl 1.0.5 → 1.0.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/dist/dto.d.ts +4 -2
- package/dist/dto.js +4 -5
- package/dist/typebox-driver.js +8 -2
- package/package.json +1 -1
- package/src/dto.ts +7 -7
- package/src/typebox-driver.ts +6 -2
package/dist/dto.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export interface ImportRef {
|
|
|
21
21
|
export type DtoArrayFieldDef = BaseField & {
|
|
22
22
|
type: 'array';
|
|
23
23
|
jsType: 'array';
|
|
24
|
-
|
|
24
|
+
/** Element type: inline DtoField, or a reference to an existing DTO (rendered by name) */
|
|
25
|
+
items: DtoField | DtoMessage;
|
|
25
26
|
};
|
|
26
27
|
export type DtoObjectFieldDef = BaseField & {
|
|
27
28
|
type: 'object';
|
|
@@ -58,7 +59,8 @@ export declare class DtoField implements SchemaBase {
|
|
|
58
59
|
}
|
|
59
60
|
export declare class DtoArrayField extends DtoField {
|
|
60
61
|
field: DtoArrayFieldDef;
|
|
61
|
-
|
|
62
|
+
/** Element type: inline DtoField or a referenced DtoMessage (rendered by name). */
|
|
63
|
+
items(): DtoField | DtoMessage;
|
|
62
64
|
}
|
|
63
65
|
export declare class DtoObjectField extends DtoField {
|
|
64
66
|
field: DtoObjectFieldDef;
|
package/dist/dto.js
CHANGED
|
@@ -66,6 +66,7 @@ class DtoField {
|
|
|
66
66
|
}
|
|
67
67
|
exports.DtoField = DtoField;
|
|
68
68
|
class DtoArrayField extends DtoField {
|
|
69
|
+
/** Element type: inline DtoField or a referenced DtoMessage (rendered by name). */
|
|
69
70
|
items() {
|
|
70
71
|
return this.field.items;
|
|
71
72
|
}
|
|
@@ -110,11 +111,9 @@ function dtoField(field) {
|
|
|
110
111
|
return new DtoField(field);
|
|
111
112
|
}
|
|
112
113
|
function dtoArrayField(def) {
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
: def.items;
|
|
117
|
-
return new DtoArrayField({ name: '', type: 'array', jsType: 'array', ...def, items });
|
|
114
|
+
// Items stay as-is: an inline DtoField is rendered inline, a DtoMessage is
|
|
115
|
+
// referenced by name (the driver renders Type.Array(<DtoName>)).
|
|
116
|
+
return new DtoArrayField({ name: '', type: 'array', jsType: 'array', ...def });
|
|
118
117
|
}
|
|
119
118
|
function dtoObjectField(def) {
|
|
120
119
|
return new DtoObjectField({ name: '', type: 'object', jsType: 'object', ...def });
|
package/dist/typebox-driver.js
CHANGED
|
@@ -84,7 +84,11 @@ function renderField(f, indent, resolver) {
|
|
|
84
84
|
}
|
|
85
85
|
function renderValue(f, indent, resolver) {
|
|
86
86
|
if (f instanceof dto_1.DtoArrayField) {
|
|
87
|
-
|
|
87
|
+
const items = f.items();
|
|
88
|
+
// Referenced DTO element — render by name (same-file export), not expanded.
|
|
89
|
+
if (items instanceof dto_1.DtoMessage)
|
|
90
|
+
return `Type.Array(${items.name})`;
|
|
91
|
+
return `Type.Array(${renderField(items, indent + 1, resolver)})`;
|
|
88
92
|
}
|
|
89
93
|
if (f instanceof dto_1.DtoObjectField) {
|
|
90
94
|
return renderObject(f.properties(), indent + 1, resolver);
|
|
@@ -97,7 +101,9 @@ function renderValue(f, indent, resolver) {
|
|
|
97
101
|
}
|
|
98
102
|
function collectEnumImports(f, resolver, out) {
|
|
99
103
|
if (f instanceof dto_1.DtoArrayField) {
|
|
100
|
-
|
|
104
|
+
const items = f.items();
|
|
105
|
+
if (!(items instanceof dto_1.DtoMessage))
|
|
106
|
+
collectEnumImports(items, resolver, out);
|
|
101
107
|
return;
|
|
102
108
|
}
|
|
103
109
|
if (f instanceof dto_1.DtoObjectField) {
|
package/package.json
CHANGED
package/src/dto.ts
CHANGED
|
@@ -29,7 +29,8 @@ export interface ImportRef {
|
|
|
29
29
|
export type DtoArrayFieldDef = BaseField & {
|
|
30
30
|
type: 'array';
|
|
31
31
|
jsType: 'array';
|
|
32
|
-
|
|
32
|
+
/** Element type: inline DtoField, or a reference to an existing DTO (rendered by name) */
|
|
33
|
+
items: DtoField | DtoMessage;
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
export type DtoObjectFieldDef = BaseField & {
|
|
@@ -104,7 +105,8 @@ export class DtoField implements SchemaBase {
|
|
|
104
105
|
export class DtoArrayField extends DtoField {
|
|
105
106
|
declare field: DtoArrayFieldDef;
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
/** Element type: inline DtoField or a referenced DtoMessage (rendered by name). */
|
|
109
|
+
items(): DtoField | DtoMessage {
|
|
108
110
|
return this.field.items;
|
|
109
111
|
}
|
|
110
112
|
}
|
|
@@ -153,11 +155,9 @@ export function dtoField(field: Field): DtoField {
|
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
export function dtoArrayField(def: { items: DtoField | DtoMessage } & Omit<BaseField, 'name'>): DtoArrayField {
|
|
156
|
-
//
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
: def.items;
|
|
160
|
-
return new DtoArrayField({ name: '', type: 'array', jsType: 'array', ...def, items });
|
|
158
|
+
// Items stay as-is: an inline DtoField is rendered inline, a DtoMessage is
|
|
159
|
+
// referenced by name (the driver renders Type.Array(<DtoName>)).
|
|
160
|
+
return new DtoArrayField({ name: '', type: 'array', jsType: 'array', ...def });
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
export function dtoObjectField(def: { properties: Record<string, DtoField> } & Omit<BaseField, 'name'>): DtoObjectField {
|
package/src/typebox-driver.ts
CHANGED
|
@@ -95,7 +95,10 @@ function renderField(f: DtoField, indent: number, resolver: EnumResolver | undef
|
|
|
95
95
|
|
|
96
96
|
function renderValue(f: DtoField, indent: number, resolver: EnumResolver | undefined): string {
|
|
97
97
|
if (f instanceof DtoArrayField) {
|
|
98
|
-
|
|
98
|
+
const items = f.items();
|
|
99
|
+
// Referenced DTO element — render by name (same-file export), not expanded.
|
|
100
|
+
if (items instanceof DtoMessage) return `Type.Array(${items.name})`;
|
|
101
|
+
return `Type.Array(${renderField(items, indent + 1, resolver)})`;
|
|
99
102
|
}
|
|
100
103
|
if (f instanceof DtoObjectField) {
|
|
101
104
|
return renderObject(f.properties(), indent + 1, resolver);
|
|
@@ -113,7 +116,8 @@ function collectEnumImports(
|
|
|
113
116
|
out: Map<string, ImportRef>,
|
|
114
117
|
): void {
|
|
115
118
|
if (f instanceof DtoArrayField) {
|
|
116
|
-
|
|
119
|
+
const items = f.items();
|
|
120
|
+
if (!(items instanceof DtoMessage)) collectEnumImports(items, resolver, out);
|
|
117
121
|
return;
|
|
118
122
|
}
|
|
119
123
|
if (f instanceof DtoObjectField) {
|