@goast/typescript 0.5.3 → 0.6.0-beta.1
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/LICENSE +21 -21
- package/esm/src/file-builder.d.ts.map +1 -1
- package/esm/src/file-builder.js +2 -5
- package/esm/src/generators/models/model-generator.d.ts.map +1 -1
- package/esm/src/generators/models/model-generator.js +6 -2
- package/esm/src/generators/services/k6-clients/k6-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/k6-clients/k6-client-generator.js +2 -1
- package/package.json +3 -3
- package/script/src/file-builder.d.ts.map +1 -1
- package/script/src/file-builder.js +1 -5
- package/script/src/generators/models/model-generator.d.ts.map +1 -1
- package/script/src/generators/models/model-generator.js +5 -1
- package/script/src/generators/services/k6-clients/k6-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/k6-clients/k6-client-generator.js +2 -1
- package/src/mod.ts +0 -7
- package/src/src/assets.ts +0 -9
- package/src/src/ast/_index.ts +0 -54
- package/src/src/ast/common.ts +0 -1
- package/src/src/ast/index.ts +0 -1
- package/src/src/ast/node.ts +0 -10
- package/src/src/ast/nodes/argument.ts +0 -40
- package/src/src/ast/nodes/array-type.ts +0 -49
- package/src/src/ast/nodes/arrow-function.ts +0 -91
- package/src/src/ast/nodes/call.ts +0 -55
- package/src/src/ast/nodes/class.ts +0 -133
- package/src/src/ast/nodes/constructor-parameter.ts +0 -70
- package/src/src/ast/nodes/constructor.ts +0 -77
- package/src/src/ast/nodes/decorator.ts +0 -76
- package/src/src/ast/nodes/doc-tag.ts +0 -291
- package/src/src/ast/nodes/doc.ts +0 -102
- package/src/src/ast/nodes/enum-value.ts +0 -72
- package/src/src/ast/nodes/enum.ts +0 -77
- package/src/src/ast/nodes/export.ts +0 -54
- package/src/src/ast/nodes/function-type.ts +0 -60
- package/src/src/ast/nodes/function.ts +0 -107
- package/src/src/ast/nodes/generic-parameter.ts +0 -71
- package/src/src/ast/nodes/indexer.ts +0 -60
- package/src/src/ast/nodes/interface.ts +0 -117
- package/src/src/ast/nodes/intersection-type.ts +0 -67
- package/src/src/ast/nodes/lookup-type.ts +0 -53
- package/src/src/ast/nodes/method.ts +0 -138
- package/src/src/ast/nodes/object-type.ts +0 -52
- package/src/src/ast/nodes/object.ts +0 -48
- package/src/src/ast/nodes/parameter.ts +0 -85
- package/src/src/ast/nodes/property-accessor.ts +0 -173
- package/src/src/ast/nodes/property.ts +0 -192
- package/src/src/ast/nodes/reference.ts +0 -194
- package/src/src/ast/nodes/string.ts +0 -49
- package/src/src/ast/nodes/tuple.ts +0 -53
- package/src/src/ast/nodes/type-alias.ts +0 -75
- package/src/src/ast/nodes/typeof.ts +0 -42
- package/src/src/ast/nodes/types.ts +0 -40
- package/src/src/ast/nodes/union-type.ts +0 -62
- package/src/src/ast/nodes/variable.ts +0 -73
- package/src/src/ast/references/angular.ts +0 -24
- package/src/src/ast/references/easy-network-stub.ts +0 -21
- package/src/src/ast/references/index.ts +0 -5
- package/src/src/ast/references/k6.ts +0 -8
- package/src/src/ast/references/rxjs.ts +0 -7
- package/src/src/ast/references/typescript.ts +0 -35
- package/src/src/ast/utils/get-type-script-builder-options.ts +0 -19
- package/src/src/ast/utils/to-ts-node.ts +0 -27
- package/src/src/ast/utils/write-ts-generic-parameters.ts +0 -25
- package/src/src/ast/utils/write-ts-members.ts +0 -28
- package/src/src/ast/utils/write-ts-nodes.ts +0 -35
- package/src/src/ast/utils/write-ts-parameters.ts +0 -25
- package/src/src/common-results.ts +0 -26
- package/src/src/config.ts +0 -89
- package/src/src/file-builder.ts +0 -136
- package/src/src/generators/file-generator.ts +0 -15
- package/src/src/generators/index.ts +0 -6
- package/src/src/generators/models/index.ts +0 -3
- package/src/src/generators/models/model-generator.ts +0 -469
- package/src/src/generators/models/models-generator.ts +0 -108
- package/src/src/generators/models/models.ts +0 -121
- package/src/src/generators/services/angular-services/angular-service-generator.ts +0 -406
- package/src/src/generators/services/angular-services/angular-services-generator.ts +0 -295
- package/src/src/generators/services/angular-services/index.ts +0 -3
- package/src/src/generators/services/angular-services/models.ts +0 -277
- package/src/src/generators/services/angular-services/refs.ts +0 -54
- package/src/src/generators/services/easy-network-stub/easy-network-stub-generator.ts +0 -242
- package/src/src/generators/services/easy-network-stub/easy-network-stubs-generator.ts +0 -211
- package/src/src/generators/services/easy-network-stub/index.ts +0 -3
- package/src/src/generators/services/easy-network-stub/models.ts +0 -124
- package/src/src/generators/services/easy-network-stub/refs.ts +0 -45
- package/src/src/generators/services/fetch-clients/fetch-client-generator.ts +0 -275
- package/src/src/generators/services/fetch-clients/fetch-clients-generator.ts +0 -163
- package/src/src/generators/services/fetch-clients/index.ts +0 -3
- package/src/src/generators/services/fetch-clients/models.ts +0 -130
- package/src/src/generators/services/fetch-clients/refs.ts +0 -21
- package/src/src/generators/services/k6-clients/index.ts +0 -3
- package/src/src/generators/services/k6-clients/k6-client-generator.ts +0 -465
- package/src/src/generators/services/k6-clients/k6-clients-generator.ts +0 -171
- package/src/src/generators/services/k6-clients/models.ts +0 -247
- package/src/src/generators/services/k6-clients/refs.ts +0 -16
- package/src/src/import-collection.ts +0 -236
- package/src/src/utils.ts +0 -72
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { type AppendValue, type AstNodeOptions, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { TsAccessModifier } from '../common.js';
|
|
4
|
-
import { TsNode } from '../node.js';
|
|
5
|
-
import { writeTsNode } from '../utils/write-ts-nodes.js';
|
|
6
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
7
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
8
|
-
import type { TsProperty } from './property.js';
|
|
9
|
-
import type { TsType } from './types.js';
|
|
10
|
-
|
|
11
|
-
type Injects = never;
|
|
12
|
-
|
|
13
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
14
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
15
|
-
{
|
|
16
|
-
propertyName?: Nullable<string>;
|
|
17
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
18
|
-
type?: Nullable<TsType<TBuilder>>;
|
|
19
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
20
|
-
body?: Nullable<AppendValue<TBuilder>>;
|
|
21
|
-
accessModifier?: Nullable<TsAccessModifier>;
|
|
22
|
-
static?: Nullable<boolean>;
|
|
23
|
-
abstract?: Nullable<boolean>;
|
|
24
|
-
override?: Nullable<boolean>;
|
|
25
|
-
}
|
|
26
|
-
>;
|
|
27
|
-
|
|
28
|
-
abstract class TsPropertyAccessor<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
29
|
-
TBuilder,
|
|
30
|
-
TInjects | Injects
|
|
31
|
-
> {
|
|
32
|
-
private _propertyName: string | null;
|
|
33
|
-
private _type: TsType<TBuilder> | null;
|
|
34
|
-
private _accessModifier: TsAccessModifier | null;
|
|
35
|
-
private _static: boolean;
|
|
36
|
-
private _abstract: boolean;
|
|
37
|
-
private _override: boolean;
|
|
38
|
-
|
|
39
|
-
public doc: TsDoc<TBuilder> | null;
|
|
40
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
41
|
-
public body: AppendValue<TBuilder> | null;
|
|
42
|
-
|
|
43
|
-
public get propertyName(): string {
|
|
44
|
-
return this.property?.name ?? this._propertyName ?? 'someProperty';
|
|
45
|
-
}
|
|
46
|
-
public set propertyName(value: string | null) {
|
|
47
|
-
this._propertyName = value;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public get type(): TsType<TBuilder> | null {
|
|
51
|
-
return this.property?.type ?? this._type;
|
|
52
|
-
}
|
|
53
|
-
public set type(value: TsType<TBuilder> | null) {
|
|
54
|
-
this._type = value;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public get accessModifier(): TsAccessModifier | null {
|
|
58
|
-
return this.property?.accessModifier ?? this._accessModifier;
|
|
59
|
-
}
|
|
60
|
-
public set accessModifier(value: TsAccessModifier | null) {
|
|
61
|
-
this._accessModifier = value;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public get static(): boolean {
|
|
65
|
-
return this.property?.static ?? this._static;
|
|
66
|
-
}
|
|
67
|
-
public set static(value: boolean) {
|
|
68
|
-
this._static = value;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
public get abstract(): boolean {
|
|
72
|
-
return this.property?.abstract ?? this._abstract;
|
|
73
|
-
}
|
|
74
|
-
public set abstract(value: boolean) {
|
|
75
|
-
this._abstract = value;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public get override(): boolean {
|
|
79
|
-
return this.property?.override ?? this._override;
|
|
80
|
-
}
|
|
81
|
-
public set override(value: boolean) {
|
|
82
|
-
this._override = value;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
protected property?: TsProperty<TBuilder>;
|
|
86
|
-
|
|
87
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
88
|
-
super(options);
|
|
89
|
-
this._propertyName = options.propertyName ?? null;
|
|
90
|
-
this.doc = options.doc ?? null;
|
|
91
|
-
this._type = options.type ?? null;
|
|
92
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
93
|
-
this.body = options.body ?? null;
|
|
94
|
-
this._accessModifier = options.accessModifier ?? null;
|
|
95
|
-
this._static = options.static ?? false;
|
|
96
|
-
this._abstract = options.abstract ?? false;
|
|
97
|
-
this._override = options.override ?? false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export class TsPropertySetter<TBuilder extends SourceBuilder, TInjects extends string = never>
|
|
102
|
-
extends TsPropertyAccessor<
|
|
103
|
-
TBuilder,
|
|
104
|
-
TInjects
|
|
105
|
-
> {
|
|
106
|
-
protected override onWrite(builder: TBuilder): void {
|
|
107
|
-
tsDoc.write(builder, this.doc);
|
|
108
|
-
tsDecorator.write(builder, this.decorators);
|
|
109
|
-
|
|
110
|
-
if (this.accessModifier) builder.append(this.accessModifier, ' ');
|
|
111
|
-
if (this.static) builder.append('static ');
|
|
112
|
-
if (this.abstract) builder.append('abstract ');
|
|
113
|
-
if (this.override) builder.append('override ');
|
|
114
|
-
|
|
115
|
-
builder.append('set ', this.propertyName);
|
|
116
|
-
builder.parenthesize('()', (b) => {
|
|
117
|
-
b.append('value');
|
|
118
|
-
if (this.type !== null) {
|
|
119
|
-
b.append(': ');
|
|
120
|
-
writeTsNode(b, this.type);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
if (this.body !== null) {
|
|
125
|
-
builder.append(' ');
|
|
126
|
-
builder.parenthesize('{}', this.body, { multiline: true });
|
|
127
|
-
} else {
|
|
128
|
-
builder.append(';');
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
builder.appendLine();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export class TsPropertyGetter<TBuilder extends SourceBuilder, TInjects extends string = never>
|
|
136
|
-
extends TsPropertyAccessor<
|
|
137
|
-
TBuilder,
|
|
138
|
-
TInjects
|
|
139
|
-
> {
|
|
140
|
-
protected override onWrite(builder: TBuilder): void {
|
|
141
|
-
tsDoc.write(builder, this.doc);
|
|
142
|
-
tsDecorator.write(builder, this.decorators);
|
|
143
|
-
|
|
144
|
-
if (this.accessModifier) builder.append(this.accessModifier, ' ');
|
|
145
|
-
if (this.static) builder.append('static ');
|
|
146
|
-
if (this.abstract) builder.append('abstract ');
|
|
147
|
-
if (this.override) builder.append('override ');
|
|
148
|
-
|
|
149
|
-
builder.append('get ', this.propertyName, '()');
|
|
150
|
-
|
|
151
|
-
if (this.type) {
|
|
152
|
-
builder.append(': ');
|
|
153
|
-
writeTsNode(builder, this.type);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (this.body !== null) {
|
|
157
|
-
builder.append(' ');
|
|
158
|
-
builder.parenthesize('{}', this.body, { multiline: true });
|
|
159
|
-
} else {
|
|
160
|
-
builder.append(';');
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
builder.appendLine();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export const createPropertySetter = <TBuilder extends SourceBuilder>(
|
|
168
|
-
options?: Options<TBuilder>,
|
|
169
|
-
): TsPropertySetter<TBuilder> => new TsPropertySetter<TBuilder>(options ?? {});
|
|
170
|
-
|
|
171
|
-
export const createPropertyGetter = <TBuilder extends SourceBuilder>(
|
|
172
|
-
options?: Options<TBuilder>,
|
|
173
|
-
): TsPropertyGetter<TBuilder> => new TsPropertyGetter<TBuilder>(options ?? {});
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { type AstNodeOptions, notNullish, type Nullable, type Prettify, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { TsAccessModifier } from '../common.js';
|
|
4
|
-
import { TsNode } from '../node.js';
|
|
5
|
-
import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
6
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
7
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
8
|
-
import { TsObject } from './object.js';
|
|
9
|
-
import {
|
|
10
|
-
createPropertyGetter,
|
|
11
|
-
createPropertySetter,
|
|
12
|
-
type TsPropertyGetter,
|
|
13
|
-
type TsPropertySetter,
|
|
14
|
-
} from './property-accessor.js';
|
|
15
|
-
import { tsString } from './string.js';
|
|
16
|
-
import type { TsType, TsValue } from './types.js';
|
|
17
|
-
|
|
18
|
-
type BaseInjects = never;
|
|
19
|
-
|
|
20
|
-
type BaseOptions<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
21
|
-
typeof TsNode<TBuilder, TInjects | BaseInjects>,
|
|
22
|
-
{
|
|
23
|
-
name: string;
|
|
24
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
25
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
26
|
-
type?: Nullable<TsType<TBuilder>>;
|
|
27
|
-
accessModifier?: Nullable<TsAccessModifier>;
|
|
28
|
-
static?: Nullable<boolean>;
|
|
29
|
-
abstract?: Nullable<boolean>;
|
|
30
|
-
override?: Nullable<boolean>;
|
|
31
|
-
}
|
|
32
|
-
>;
|
|
33
|
-
|
|
34
|
-
type SimpleOptions<TBuilder extends SourceBuilder, TInjects extends string = never> =
|
|
35
|
-
& BaseOptions<TBuilder, TInjects>
|
|
36
|
-
& {
|
|
37
|
-
value?: Nullable<TsValue<TBuilder>>;
|
|
38
|
-
readonly?: Nullable<boolean>;
|
|
39
|
-
optional?: Nullable<boolean>;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
type AccessorOptions<TBuilder extends SourceBuilder, TInjects extends string = never> =
|
|
43
|
-
& BaseOptions<TBuilder, TInjects>
|
|
44
|
-
& {
|
|
45
|
-
get?: Nullable<TsPropertyGetter<TBuilder>>;
|
|
46
|
-
set?: Nullable<TsPropertySetter<TBuilder>>;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export abstract class TsProperty<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
50
|
-
TBuilder,
|
|
51
|
-
TInjects | BaseInjects
|
|
52
|
-
> {
|
|
53
|
-
public name: string;
|
|
54
|
-
public doc: TsDoc<TBuilder> | null;
|
|
55
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
56
|
-
public type: TsType<TBuilder> | null;
|
|
57
|
-
public accessModifier: TsAccessModifier | null;
|
|
58
|
-
public static: boolean | null;
|
|
59
|
-
public abstract: boolean | null;
|
|
60
|
-
public override: boolean | null;
|
|
61
|
-
|
|
62
|
-
constructor(options: BaseOptions<TBuilder, TInjects>) {
|
|
63
|
-
super(options);
|
|
64
|
-
this.name = options.name;
|
|
65
|
-
this.doc = options.doc ?? null;
|
|
66
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
67
|
-
this.type = options.type ?? null;
|
|
68
|
-
this.accessModifier = options.accessModifier ?? null;
|
|
69
|
-
this.static = options.static ?? null;
|
|
70
|
-
this.abstract = options.abstract ?? null;
|
|
71
|
-
this.override = options.override ?? null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export class TsSimpleProperty<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsProperty<
|
|
76
|
-
TBuilder,
|
|
77
|
-
TInjects
|
|
78
|
-
> {
|
|
79
|
-
public value: TsValue<TBuilder> | null;
|
|
80
|
-
public readonly: boolean;
|
|
81
|
-
public optional: boolean;
|
|
82
|
-
|
|
83
|
-
constructor(options: SimpleOptions<TBuilder, TInjects>) {
|
|
84
|
-
super(options);
|
|
85
|
-
this.value = options.value ?? null;
|
|
86
|
-
this.readonly = options.readonly ?? false;
|
|
87
|
-
this.optional = options.optional ?? false;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
protected override onWrite(builder: TBuilder): void {
|
|
91
|
-
const isInObjectDeclaration = this.getParentNode(builder) instanceof TsObject;
|
|
92
|
-
|
|
93
|
-
tsDoc.write(builder, this.doc);
|
|
94
|
-
tsDecorator.write(builder, this.decorators);
|
|
95
|
-
|
|
96
|
-
if (this.accessModifier) builder.append(this.accessModifier, ' ');
|
|
97
|
-
if (this.static) builder.append('static ');
|
|
98
|
-
if (this.abstract) builder.append('abstract ');
|
|
99
|
-
if (this.override) builder.append('override ');
|
|
100
|
-
if (this.readonly) builder.append('readonly ');
|
|
101
|
-
|
|
102
|
-
writeTsNode(builder, /^([a-zA-Z_$][a-zA-Z_$0-9]*|[0-9]+)$/.test(this.name) ? this.name : tsString(this.name));
|
|
103
|
-
if (this.optional) builder.append('?');
|
|
104
|
-
|
|
105
|
-
if (this.type && !isInObjectDeclaration) {
|
|
106
|
-
builder.append(': ');
|
|
107
|
-
writeTsNode(builder, this.type);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (this.value) {
|
|
111
|
-
builder.append(isInObjectDeclaration ? ': ' : ' = ');
|
|
112
|
-
writeTsNode(builder, this.value);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
builder.append(isInObjectDeclaration ? ',' : ';');
|
|
116
|
-
|
|
117
|
-
builder.appendLine();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export class TsAccessorProperty<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsProperty<
|
|
122
|
-
TBuilder,
|
|
123
|
-
TInjects
|
|
124
|
-
> {
|
|
125
|
-
private _get: TsPropertyGetter<TBuilder> | null = null;
|
|
126
|
-
private _set: TsPropertySetter<TBuilder> | null = null;
|
|
127
|
-
|
|
128
|
-
public get get(): TsPropertyGetter<TBuilder> | null {
|
|
129
|
-
return this._get;
|
|
130
|
-
}
|
|
131
|
-
public set get(value: TsPropertyGetter<TBuilder> | null) {
|
|
132
|
-
if (value) {
|
|
133
|
-
value['property'] = this;
|
|
134
|
-
}
|
|
135
|
-
if (this._get) {
|
|
136
|
-
this._get['property'] = undefined;
|
|
137
|
-
}
|
|
138
|
-
this._get = value;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public get set(): TsPropertySetter<TBuilder> | null {
|
|
142
|
-
return this._set;
|
|
143
|
-
}
|
|
144
|
-
public set set(value: TsPropertySetter<TBuilder> | null) {
|
|
145
|
-
if (value) {
|
|
146
|
-
value['property'] = this;
|
|
147
|
-
}
|
|
148
|
-
if (this._set) {
|
|
149
|
-
this._set['property'] = undefined;
|
|
150
|
-
}
|
|
151
|
-
this._set = value;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
constructor(options: AccessorOptions<TBuilder, TInjects>) {
|
|
155
|
-
super(options);
|
|
156
|
-
this.get = options.get ?? null;
|
|
157
|
-
this.set = options.set ?? null;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
protected override onWrite(builder: TBuilder): void {
|
|
161
|
-
builder.append(
|
|
162
|
-
(b) => tsDoc.write(b, this.doc),
|
|
163
|
-
(b) => tsDecorator.write(b, this.decorators),
|
|
164
|
-
);
|
|
165
|
-
if (this.get) {
|
|
166
|
-
this.get.write(builder);
|
|
167
|
-
}
|
|
168
|
-
if (this.set) {
|
|
169
|
-
this.set.write(builder);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const createProperty = <TBuilder extends SourceBuilder>(
|
|
175
|
-
name: BaseOptions<TBuilder>['name'],
|
|
176
|
-
options?: Prettify<Omit<SimpleOptions<TBuilder>, 'name'>> | Prettify<Omit<AccessorOptions<TBuilder>, 'name'>>,
|
|
177
|
-
): TsProperty<TBuilder> => {
|
|
178
|
-
if (options && ('get' in options || 'set' in options)) {
|
|
179
|
-
return new TsAccessorProperty({ ...options, name });
|
|
180
|
-
}
|
|
181
|
-
return new TsSimpleProperty({ ...options, name });
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
export const tsProperty: typeof createProperty & {
|
|
185
|
-
write: typeof writeTsNodes;
|
|
186
|
-
getter: typeof createPropertyGetter;
|
|
187
|
-
setter: typeof createPropertySetter;
|
|
188
|
-
} = Object.assign(createProperty, {
|
|
189
|
-
write: writeTsNodes,
|
|
190
|
-
getter: createPropertyGetter,
|
|
191
|
-
setter: createPropertySetter,
|
|
192
|
-
});
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AstNodeOptions,
|
|
3
|
-
notNullish,
|
|
4
|
-
type Nullable,
|
|
5
|
-
type Prettify,
|
|
6
|
-
type SourceBuilder,
|
|
7
|
-
type TupleWithCount,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import type { TypeScriptImportType } from '../../common-results.js';
|
|
11
|
-
import { TypeScriptFileBuilder } from '../../file-builder.js';
|
|
12
|
-
import { TsNode } from '../node.js';
|
|
13
|
-
import { writeTsGenericParameters } from '../utils/write-ts-generic-parameters.js';
|
|
14
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
15
|
-
import type { TsType } from './types.js';
|
|
16
|
-
|
|
17
|
-
type Injects = never;
|
|
18
|
-
|
|
19
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
20
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
21
|
-
{
|
|
22
|
-
name: string;
|
|
23
|
-
moduleNameOrfilePath?: Nullable<string>;
|
|
24
|
-
generics?: Nullable<Nullable<TsType<TBuilder>>[]>;
|
|
25
|
-
importType?: Nullable<TypeScriptImportType>;
|
|
26
|
-
}
|
|
27
|
-
>;
|
|
28
|
-
type FactoryOptions<TBuilder extends SourceBuilder> = {
|
|
29
|
-
importType?: Nullable<TypeScriptImportType>;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
type _AddImportHandler<T> = {
|
|
33
|
-
// deno-lint-ignore no-explicit-any
|
|
34
|
-
builderClass: abstract new (...args: any[]) => T;
|
|
35
|
-
// deno-lint-ignore no-explicit-any
|
|
36
|
-
handler: (builder: T, reference: TsReference<any>) => void;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export class TsReference<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
40
|
-
TBuilder,
|
|
41
|
-
TInjects | Injects
|
|
42
|
-
> {
|
|
43
|
-
// deno-lint-ignore no-explicit-any
|
|
44
|
-
private static readonly addImportHandlers: _AddImportHandler<any>[] = [
|
|
45
|
-
{
|
|
46
|
-
builderClass: TypeScriptFileBuilder,
|
|
47
|
-
handler: (builder: TypeScriptFileBuilder, reference) => {
|
|
48
|
-
if (reference.moduleNameOrfilePath) {
|
|
49
|
-
builder.addImport(reference.name, reference.moduleNameOrfilePath, { type: reference.importType });
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
public name: string;
|
|
56
|
-
public moduleNameOrfilePath: string | null;
|
|
57
|
-
public generics: TsType<TBuilder>[];
|
|
58
|
-
public importType: TypeScriptImportType;
|
|
59
|
-
|
|
60
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
61
|
-
super(options);
|
|
62
|
-
this.name = options.name;
|
|
63
|
-
this.moduleNameOrfilePath = options.moduleNameOrfilePath ?? null;
|
|
64
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
65
|
-
this.importType = options.importType ?? 'import';
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
protected override onWrite(builder: TBuilder): void {
|
|
69
|
-
builder.append(this.name);
|
|
70
|
-
writeTsGenericParameters(builder, this.generics);
|
|
71
|
-
if (this.moduleNameOrfilePath) {
|
|
72
|
-
const handler = TsReference.addImportHandlers.find((h) => builder instanceof h.builderClass);
|
|
73
|
-
if (handler) {
|
|
74
|
-
handler.handler(builder, this);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public static registerAddImportHandler<TBuilder extends SourceBuilder>(
|
|
80
|
-
builderClass: _AddImportHandler<TBuilder>['builderClass'],
|
|
81
|
-
handler: _AddImportHandler<TBuilder>['handler'],
|
|
82
|
-
): void {
|
|
83
|
-
TsReference.addImportHandlers.push({ builderClass, handler });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const createReference = <TBuilder extends SourceBuilder>(
|
|
88
|
-
name: Options<TBuilder>['name'],
|
|
89
|
-
moduleNameOrfilePath?: Options<TBuilder>['moduleNameOrfilePath'],
|
|
90
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name' | 'moduleNameOrfilePath'>>,
|
|
91
|
-
): TsReference<TBuilder> => new TsReference<TBuilder>({ ...options, name, moduleNameOrfilePath });
|
|
92
|
-
|
|
93
|
-
export type TsReferenceFactory =
|
|
94
|
-
& (<TBuilder extends SourceBuilder>(options?: FactoryOptions<TBuilder>) => TsReference<TBuilder>)
|
|
95
|
-
& {
|
|
96
|
-
refName: string;
|
|
97
|
-
moduleNameOrfilePath: Nullable<string>;
|
|
98
|
-
};
|
|
99
|
-
export type TsModuleReferenceFactory = TsReferenceFactory & {
|
|
100
|
-
moduleNameOrfilePath: string;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
export type TsGenericReferenceFactory<TGenericCount extends number | number[]> =
|
|
104
|
-
& (<TBuilder extends SourceBuilder>(
|
|
105
|
-
generics: TupleWithCount<TsType<TBuilder>, TGenericCount>,
|
|
106
|
-
options?: FactoryOptions<TBuilder>,
|
|
107
|
-
) => TsReference<TBuilder>)
|
|
108
|
-
& {
|
|
109
|
-
refName: string;
|
|
110
|
-
moduleNameOrfilePath: Nullable<string>;
|
|
111
|
-
infer: <TBuilder extends SourceBuilder>() => TsReference<TBuilder>;
|
|
112
|
-
};
|
|
113
|
-
export type TsGenericModuleReferenceFactory<TGenericCount extends number | number[]> =
|
|
114
|
-
& TsGenericReferenceFactory<TGenericCount>
|
|
115
|
-
& {
|
|
116
|
-
moduleNameOrfilePath: string;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
function _createFactory(
|
|
120
|
-
name: string,
|
|
121
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
122
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
123
|
-
): TsReferenceFactory {
|
|
124
|
-
return Object.assign(
|
|
125
|
-
<TBuilder extends SourceBuilder>(options?: FactoryOptions<TBuilder>) =>
|
|
126
|
-
createReference<TBuilder>(name, moduleNameOrfilePath, { ...defaultOptions, ...options }),
|
|
127
|
-
{
|
|
128
|
-
refName: name,
|
|
129
|
-
moduleNameOrfilePath,
|
|
130
|
-
},
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
function createFactory(
|
|
134
|
-
name: string,
|
|
135
|
-
moduleNameOrfilePath: string,
|
|
136
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
137
|
-
): TsModuleReferenceFactory;
|
|
138
|
-
function createFactory(
|
|
139
|
-
name: string,
|
|
140
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
141
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
142
|
-
): TsReferenceFactory;
|
|
143
|
-
function createFactory(
|
|
144
|
-
name: string,
|
|
145
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
146
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
147
|
-
): TsReferenceFactory {
|
|
148
|
-
return _createFactory(name, moduleNameOrfilePath, defaultOptions);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
function _createGenericFactory<TGenericCount extends number | number[]>(
|
|
152
|
-
name: string,
|
|
153
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
154
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
155
|
-
): TsGenericReferenceFactory<TGenericCount> {
|
|
156
|
-
return Object.assign(
|
|
157
|
-
<TBuilder extends SourceBuilder>(
|
|
158
|
-
generics: TupleWithCount<TsType<TBuilder>, TGenericCount>,
|
|
159
|
-
options?: FactoryOptions<TBuilder>,
|
|
160
|
-
) => createReference<TBuilder>(name, moduleNameOrfilePath, { ...defaultOptions, ...options, generics }),
|
|
161
|
-
{
|
|
162
|
-
refName: name,
|
|
163
|
-
moduleNameOrfilePath,
|
|
164
|
-
infer: <TBuilder extends SourceBuilder>() => createReference<TBuilder>(name, moduleNameOrfilePath),
|
|
165
|
-
},
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
function createGenericFactory<TGenericCount extends number | number[]>(
|
|
169
|
-
name: string,
|
|
170
|
-
moduleNameOrfilePath: string,
|
|
171
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
172
|
-
): TsGenericModuleReferenceFactory<TGenericCount>;
|
|
173
|
-
function createGenericFactory<TGenericCount extends number | number[]>(
|
|
174
|
-
name: string,
|
|
175
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
176
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
177
|
-
): TsGenericReferenceFactory<TGenericCount>;
|
|
178
|
-
function createGenericFactory<TGenericCount extends number | number[]>(
|
|
179
|
-
name: string,
|
|
180
|
-
moduleNameOrfilePath?: Nullable<string>,
|
|
181
|
-
defaultOptions?: { importType?: Nullable<TypeScriptImportType> },
|
|
182
|
-
): TsGenericReferenceFactory<TGenericCount> {
|
|
183
|
-
return _createGenericFactory<TGenericCount>(name, moduleNameOrfilePath, defaultOptions);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export const tsReference: typeof createReference & {
|
|
187
|
-
factory: typeof createFactory;
|
|
188
|
-
genericFactory: typeof createGenericFactory;
|
|
189
|
-
write: typeof writeTsNodes;
|
|
190
|
-
} = Object.assign(createReference, {
|
|
191
|
-
factory: createFactory,
|
|
192
|
-
genericFactory: createGenericFactory,
|
|
193
|
-
write: writeTsNodes,
|
|
194
|
-
});
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { getTypeScriptBuilderOptions } from '../utils/get-type-script-builder-options.js';
|
|
5
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
6
|
-
|
|
7
|
-
type Injects = never;
|
|
8
|
-
|
|
9
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
10
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
11
|
-
{
|
|
12
|
-
value: string;
|
|
13
|
-
template?: Nullable<boolean>;
|
|
14
|
-
}
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
export class TsString<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
18
|
-
TBuilder,
|
|
19
|
-
TInjects | Injects
|
|
20
|
-
> {
|
|
21
|
-
public value: string;
|
|
22
|
-
public template: boolean;
|
|
23
|
-
|
|
24
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
25
|
-
super(options);
|
|
26
|
-
this.value = options.value;
|
|
27
|
-
this.template = options.template ?? false;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected override onWrite(builder: TBuilder): void {
|
|
31
|
-
const builderOptions = getTypeScriptBuilderOptions(builder);
|
|
32
|
-
let value = JSON.stringify(this.value);
|
|
33
|
-
if (this.template) {
|
|
34
|
-
value = `\`${value.slice(1, -1).replace(/`/g, '\\`')}\``;
|
|
35
|
-
} else if (builderOptions.useSingleQuotes) {
|
|
36
|
-
value = `'${value.slice(1, -1).replace(/'/g, "\\'")}'`;
|
|
37
|
-
}
|
|
38
|
-
builder.append(value);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const createString = <TBuilder extends SourceBuilder>(
|
|
43
|
-
value: Options<TBuilder>['value'],
|
|
44
|
-
options?: Prettify<Omit<Options<TBuilder>, 'value'>>,
|
|
45
|
-
): TsString<TBuilder> => new TsString<TBuilder>({ ...options, value });
|
|
46
|
-
|
|
47
|
-
export const tsString: typeof createString & { write: typeof writeTsNodes } = Object.assign(createString, {
|
|
48
|
-
write: writeTsNodes,
|
|
49
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { type AstNodeOptions, notNullish, type Nullable, type Prettify, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import type { TsType, TsValue } from './types.js';
|
|
6
|
-
|
|
7
|
-
type Injects = never;
|
|
8
|
-
|
|
9
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
10
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
11
|
-
{
|
|
12
|
-
elements: Nullable<TsType<TBuilder> | TsValue<TBuilder>>[];
|
|
13
|
-
asConst?: Nullable<boolean>;
|
|
14
|
-
}
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
export class TsTuple<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
18
|
-
TBuilder,
|
|
19
|
-
TInjects | Injects
|
|
20
|
-
> {
|
|
21
|
-
public elements: (TsType<TBuilder> | TsValue<TBuilder>)[];
|
|
22
|
-
public asConst: boolean;
|
|
23
|
-
|
|
24
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
25
|
-
super(options);
|
|
26
|
-
this.elements = options.elements.filter(notNullish);
|
|
27
|
-
this.asConst = options.asConst ?? false;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected override onWrite(builder: TBuilder): void {
|
|
31
|
-
if (this.elements.length === 0) {
|
|
32
|
-
builder.append('[]');
|
|
33
|
-
} else {
|
|
34
|
-
const multiline = this.elements.length > 3;
|
|
35
|
-
builder.parenthesize('[]', (b) => writeTsNodes(b, this.elements, { separator: multiline ? ',\n' : ', ' }), {
|
|
36
|
-
multiline,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (this.asConst) {
|
|
41
|
-
builder.append(' as const');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const createTuple = <TBuilder extends SourceBuilder>(
|
|
47
|
-
elements: Options<TBuilder>['elements'],
|
|
48
|
-
options?: Prettify<Omit<Options<TBuilder>, 'elements'>>,
|
|
49
|
-
): TsTuple<TBuilder> => new TsTuple<TBuilder>({ ...options, elements });
|
|
50
|
-
|
|
51
|
-
export const tsTuple: typeof createTuple & { write: typeof writeTsNodes } = Object.assign(createTuple, {
|
|
52
|
-
write: writeTsNodes,
|
|
53
|
-
});
|