@goast/typescript 0.5.3 → 0.6.0-beta.2
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 +8 -3
- package/esm/src/generators/services/angular-services/angular-service-generator.d.ts.map +1 -1
- package/esm/src/generators/services/angular-services/angular-service-generator.js +7 -2
- package/esm/src/generators/services/easy-network-stub/easy-network-stub-generator.d.ts.map +1 -1
- package/esm/src/generators/services/easy-network-stub/easy-network-stub-generator.js +7 -2
- package/esm/src/generators/services/fetch-clients/fetch-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/fetch-clients/fetch-client-generator.js +7 -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 +9 -3
- 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 +7 -2
- package/script/src/generators/services/angular-services/angular-service-generator.d.ts.map +1 -1
- package/script/src/generators/services/angular-services/angular-service-generator.js +6 -1
- package/script/src/generators/services/easy-network-stub/easy-network-stub-generator.d.ts.map +1 -1
- package/script/src/generators/services/easy-network-stub/easy-network-stub-generator.js +6 -1
- package/script/src/generators/services/fetch-clients/fetch-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/fetch-clients/fetch-client-generator.js +6 -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 +8 -2
- 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
package/src/src/ast/node.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AstNode, type AstNodeOptions, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
export abstract class TsNode<TBuilder extends SourceBuilder, TInjects extends string = never> extends AstNode<
|
|
4
|
-
TBuilder,
|
|
5
|
-
TInjects
|
|
6
|
-
> {
|
|
7
|
-
constructor(options: AstNodeOptions<typeof AstNode<TBuilder, TInjects>>) {
|
|
8
|
-
super(options);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { writeTsNode } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import { writeTsParameters } from '../utils/write-ts-parameters.js';
|
|
6
|
-
import type { TsValue } from './types.js';
|
|
7
|
-
|
|
8
|
-
type Injects = never;
|
|
9
|
-
|
|
10
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
11
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
12
|
-
{
|
|
13
|
-
value: TsValue<TBuilder>;
|
|
14
|
-
}
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
export class TsArgument<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
18
|
-
TBuilder,
|
|
19
|
-
TInjects | Injects
|
|
20
|
-
> {
|
|
21
|
-
public value: TsValue<TBuilder>;
|
|
22
|
-
|
|
23
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
24
|
-
super(options);
|
|
25
|
-
this.value = options.value;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected override onWrite(builder: TBuilder): void {
|
|
29
|
-
writeTsNode(builder, this.value);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const createArgument = <TBuilder extends SourceBuilder>(
|
|
34
|
-
value: Options<TBuilder>['value'],
|
|
35
|
-
options?: Prettify<Omit<Options<TBuilder>, 'value'>>,
|
|
36
|
-
): TsArgument<TBuilder> => new TsArgument<TBuilder>({ ...options, value });
|
|
37
|
-
|
|
38
|
-
export const tsArgument: typeof createArgument & { write: typeof writeTsParameters } = Object.assign(createArgument, {
|
|
39
|
-
write: writeTsParameters,
|
|
40
|
-
});
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import type { TsType } from './types.js';
|
|
6
|
-
|
|
7
|
-
type Injects = 'type';
|
|
8
|
-
|
|
9
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
10
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
11
|
-
{
|
|
12
|
-
readonly?: Nullable<boolean>;
|
|
13
|
-
type: TsType<TBuilder>;
|
|
14
|
-
}
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
export class TsArrayType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
18
|
-
TBuilder,
|
|
19
|
-
TInjects | Injects
|
|
20
|
-
> {
|
|
21
|
-
public readonly: boolean;
|
|
22
|
-
public type: TsType<TBuilder>;
|
|
23
|
-
|
|
24
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
25
|
-
super(options);
|
|
26
|
-
this.readonly = options.readonly ?? false;
|
|
27
|
-
this.type = options.type;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected override onWrite(builder: TBuilder): void {
|
|
31
|
-
if (this.readonly) builder.append('readonly ');
|
|
32
|
-
|
|
33
|
-
builder
|
|
34
|
-
.append(this.inject.beforeType)
|
|
35
|
-
.parenthesize('()', (b) => writeTsNode(b, this.type))
|
|
36
|
-
.append(this.inject.afterType);
|
|
37
|
-
|
|
38
|
-
builder.append('[]');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const createArrayType = <TBuilder extends SourceBuilder>(
|
|
43
|
-
type: Options<TBuilder>['type'],
|
|
44
|
-
options?: Prettify<Omit<Options<TBuilder>, 'type'>>,
|
|
45
|
-
): TsArrayType<TBuilder> => new TsArrayType<TBuilder>({ ...options, type });
|
|
46
|
-
|
|
47
|
-
export const tsArrayType: typeof createArrayType & { write: typeof writeTsNodes } = Object.assign(createArrayType, {
|
|
48
|
-
write: writeTsNodes,
|
|
49
|
-
});
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
3
|
-
type AstNodeOptions,
|
|
4
|
-
type BasicAppendValue,
|
|
5
|
-
notNullish,
|
|
6
|
-
type Nullable,
|
|
7
|
-
type SourceBuilder,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import { TsNode } from '../node.js';
|
|
11
|
-
import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
12
|
-
import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
|
|
13
|
-
import { type TsParameter, tsParameter } from './parameter.js';
|
|
14
|
-
import type { TsType } from './types.js';
|
|
15
|
-
|
|
16
|
-
type Injects = 'generics' | 'params' | 'returnType' | 'body';
|
|
17
|
-
|
|
18
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
19
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
20
|
-
{
|
|
21
|
-
async?: Nullable<boolean>;
|
|
22
|
-
generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
23
|
-
parameters?: Nullable<Nullable<TsParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
24
|
-
returnType?: Nullable<TsType<TBuilder>>;
|
|
25
|
-
singleExpression?: Nullable<boolean>;
|
|
26
|
-
body?: Nullable<AppendValue<TBuilder>>;
|
|
27
|
-
}
|
|
28
|
-
>;
|
|
29
|
-
|
|
30
|
-
export class TsArrowFunction<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
31
|
-
TBuilder,
|
|
32
|
-
TInjects | Injects
|
|
33
|
-
> {
|
|
34
|
-
public async: boolean;
|
|
35
|
-
public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
36
|
-
public parameters: (TsParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
37
|
-
public returnType: TsType<TBuilder> | null;
|
|
38
|
-
public singleExpression: boolean;
|
|
39
|
-
public body: AppendValue<TBuilder> | null;
|
|
40
|
-
|
|
41
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
42
|
-
super(options);
|
|
43
|
-
this.async = options.async ?? false;
|
|
44
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
45
|
-
this.parameters = options.parameters?.filter(notNullish) ?? [];
|
|
46
|
-
this.returnType = options.returnType ?? null;
|
|
47
|
-
this.singleExpression = options.singleExpression ?? false;
|
|
48
|
-
this.body = options.body ?? null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
protected override onWrite(builder: TBuilder): void {
|
|
52
|
-
if (this.async) {
|
|
53
|
-
builder.append('async ');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
builder.append(this.inject.beforeGenerics);
|
|
57
|
-
tsGenericParameter.write(builder, this.generics);
|
|
58
|
-
builder.append(this.inject.afterGenerics);
|
|
59
|
-
|
|
60
|
-
builder.append(this.inject.beforeParams);
|
|
61
|
-
tsParameter.write(builder, this.parameters);
|
|
62
|
-
builder.append(this.inject.afterParams);
|
|
63
|
-
|
|
64
|
-
if (this.returnType) {
|
|
65
|
-
builder.append(': ');
|
|
66
|
-
builder.append(this.inject.beforeReturnType);
|
|
67
|
-
writeTsNode(builder, this.returnType);
|
|
68
|
-
builder.append(this.inject.afterReturnType);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
builder.append(' => ');
|
|
72
|
-
|
|
73
|
-
builder.append(this.inject.beforeBody);
|
|
74
|
-
if (this.singleExpression && this.body) {
|
|
75
|
-
builder.append(this.body);
|
|
76
|
-
} else {
|
|
77
|
-
builder.parenthesize('{}', this.body, { multiline: !!this.body });
|
|
78
|
-
}
|
|
79
|
-
builder.append(this.inject.afterBody);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const createArrowFunction = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsArrowFunction<TBuilder> =>
|
|
84
|
-
new TsArrowFunction<TBuilder>(options ?? {});
|
|
85
|
-
|
|
86
|
-
export const tsArrowFunction: typeof createArrowFunction & { write: typeof writeTsNodes } = Object.assign(
|
|
87
|
-
createArrowFunction,
|
|
88
|
-
{
|
|
89
|
-
write: writeTsNodes,
|
|
90
|
-
},
|
|
91
|
-
);
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ArrayItem,
|
|
3
|
-
type AstNodeOptions,
|
|
4
|
-
notNullish,
|
|
5
|
-
type Nullable,
|
|
6
|
-
type Prettify,
|
|
7
|
-
type SourceBuilder,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import { TsNode } from '../node.js';
|
|
11
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
12
|
-
import { type TsArgument, tsArgument } from './argument.js';
|
|
13
|
-
import type { TsType, TsValue } from './types.js';
|
|
14
|
-
|
|
15
|
-
type Injects = never;
|
|
16
|
-
|
|
17
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
18
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
19
|
-
{
|
|
20
|
-
path: Nullable<TsType<TBuilder> | TsValue<TBuilder>>[];
|
|
21
|
-
arguments?: Nullable<Nullable<TsArgument<TBuilder> | TsValue<TBuilder>>[]>;
|
|
22
|
-
}
|
|
23
|
-
>;
|
|
24
|
-
|
|
25
|
-
export class TsCall<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
26
|
-
TBuilder,
|
|
27
|
-
TInjects | Injects
|
|
28
|
-
> {
|
|
29
|
-
public path: (TsType<TBuilder> | TsValue<TBuilder>)[];
|
|
30
|
-
public arguments: (TsArgument<TBuilder> | TsValue<TBuilder>)[] | null;
|
|
31
|
-
|
|
32
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
33
|
-
super(options);
|
|
34
|
-
this.path = options.path.filter(notNullish);
|
|
35
|
-
this.arguments = options.arguments?.filter(notNullish) ?? null;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected override onWrite(builder: TBuilder): void {
|
|
39
|
-
writeTsNodes(builder, this.path, { separator: '.' });
|
|
40
|
-
|
|
41
|
-
if (this.arguments) {
|
|
42
|
-
tsArgument.write(builder, this.arguments);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const createCall = <TBuilder extends SourceBuilder>(
|
|
48
|
-
path: Options<TBuilder>['path'] | ArrayItem<Options<TBuilder>['path']>,
|
|
49
|
-
args?: Options<TBuilder>['arguments'],
|
|
50
|
-
options?: Prettify<Omit<Options<TBuilder>, 'path' | 'arguments'>>,
|
|
51
|
-
): TsCall<TBuilder> => new TsCall<TBuilder>({ ...options, path: Array.isArray(path) ? path : [path], arguments: args });
|
|
52
|
-
|
|
53
|
-
export const tsCall: typeof createCall & { write: typeof writeTsNodes } = Object.assign(createCall, {
|
|
54
|
-
write: writeTsNodes,
|
|
55
|
-
});
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AstNodeOptions,
|
|
3
|
-
type BasicAppendValue,
|
|
4
|
-
notNullish,
|
|
5
|
-
type Nullable,
|
|
6
|
-
type Prettify,
|
|
7
|
-
type SourceBuilder,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import { TsNode } from '../node.js';
|
|
11
|
-
import { writeTsMembers } from '../utils/write-ts-members.js';
|
|
12
|
-
import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
13
|
-
import type { TsConstructor } from './constructor.js';
|
|
14
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
15
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
16
|
-
import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
|
|
17
|
-
import type { TsIndexer } from './indexer.js';
|
|
18
|
-
import type { TsMethod } from './method.js';
|
|
19
|
-
import type { TsProperty } from './property.js';
|
|
20
|
-
import type { TsReference } from './reference.js';
|
|
21
|
-
|
|
22
|
-
type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'extends' | 'implements' | 'body' | 'members';
|
|
23
|
-
|
|
24
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
25
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
26
|
-
{
|
|
27
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
28
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
29
|
-
export?: Nullable<boolean>;
|
|
30
|
-
abstract?: Nullable<boolean>;
|
|
31
|
-
name: string;
|
|
32
|
-
generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
33
|
-
extends?: Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>;
|
|
34
|
-
implements?: Nullable<Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
35
|
-
members?: Nullable<Nullable<Member<TBuilder>>[]>;
|
|
36
|
-
}
|
|
37
|
-
>;
|
|
38
|
-
|
|
39
|
-
type Member<TBuilder extends SourceBuilder> =
|
|
40
|
-
| TsProperty<TBuilder>
|
|
41
|
-
| TsMethod<TBuilder>
|
|
42
|
-
| TsIndexer<TBuilder>
|
|
43
|
-
| TsConstructor<TBuilder>
|
|
44
|
-
| BasicAppendValue<TBuilder>;
|
|
45
|
-
|
|
46
|
-
export class TsClass<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
47
|
-
TBuilder,
|
|
48
|
-
TInjects | Injects
|
|
49
|
-
> {
|
|
50
|
-
public doc: TsDoc<TBuilder> | null;
|
|
51
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
52
|
-
public export: boolean;
|
|
53
|
-
public abstract: boolean;
|
|
54
|
-
public name: string;
|
|
55
|
-
public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
56
|
-
public extends: TsReference<TBuilder> | BasicAppendValue<TBuilder> | null;
|
|
57
|
-
public implements: (TsReference<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
58
|
-
public members: Member<TBuilder>[];
|
|
59
|
-
|
|
60
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
61
|
-
super(options);
|
|
62
|
-
this.doc = options.doc ?? null;
|
|
63
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
64
|
-
this.export = options.export ?? false;
|
|
65
|
-
this.abstract = options.abstract ?? false;
|
|
66
|
-
this.name = options.name;
|
|
67
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
68
|
-
this.extends = options.extends ?? null;
|
|
69
|
-
this.implements = options.implements?.filter(notNullish) ?? [];
|
|
70
|
-
this.members = options.members?.filter(notNullish) ?? [];
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
protected override onWrite(builder: TBuilder): void {
|
|
74
|
-
builder.append(this.inject.beforeDoc);
|
|
75
|
-
tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics }));
|
|
76
|
-
builder.append(this.inject.afterDoc);
|
|
77
|
-
|
|
78
|
-
builder.append(this.inject.beforeDecorators);
|
|
79
|
-
tsDecorator.write(builder, this.decorators, { multiline: true });
|
|
80
|
-
builder.append(this.inject.afterDecorators);
|
|
81
|
-
|
|
82
|
-
builder.append(this.inject.beforeModifiers);
|
|
83
|
-
if (this.export) builder.append('export ');
|
|
84
|
-
if (this.abstract) builder.append('abstract ');
|
|
85
|
-
builder.append(this.inject.afterModifiers);
|
|
86
|
-
|
|
87
|
-
builder.append('class ');
|
|
88
|
-
builder.append(this.inject.beforeName, this.name, this.inject.afterName);
|
|
89
|
-
|
|
90
|
-
builder.append(this.inject.beforeGenerics);
|
|
91
|
-
tsGenericParameter.write(builder, this.generics);
|
|
92
|
-
builder.append(this.inject.afterGenerics);
|
|
93
|
-
|
|
94
|
-
if (this.extends) {
|
|
95
|
-
builder.append(' extends ');
|
|
96
|
-
builder.append(this.inject.beforeExtends);
|
|
97
|
-
writeTsNode(builder, this.extends);
|
|
98
|
-
builder.append(this.inject.afterExtends);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (this.implements.length > 0) {
|
|
102
|
-
builder.append(' implements ');
|
|
103
|
-
builder.append(this.inject.beforeImplements);
|
|
104
|
-
writeTsNodes(builder, this.implements, { separator: ', ' });
|
|
105
|
-
builder.append(this.inject.afterImplements);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
builder.append(' ');
|
|
109
|
-
|
|
110
|
-
builder.append(this.inject.beforeBody);
|
|
111
|
-
builder.parenthesize(
|
|
112
|
-
'{}',
|
|
113
|
-
(b) => {
|
|
114
|
-
b.append(this.inject.beforeMembers);
|
|
115
|
-
writeTsMembers(b, this.members);
|
|
116
|
-
b.append(this.inject.afterMembers);
|
|
117
|
-
},
|
|
118
|
-
{ multiline: this.members.length > 0 },
|
|
119
|
-
);
|
|
120
|
-
builder.append(this.inject.afterBody);
|
|
121
|
-
|
|
122
|
-
builder.appendLine();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
const createClass = <TBuilder extends SourceBuilder>(
|
|
127
|
-
name: Options<TBuilder>['name'],
|
|
128
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
|
|
129
|
-
): TsClass<TBuilder> => new TsClass<TBuilder>({ ...options, name });
|
|
130
|
-
|
|
131
|
-
export const tsClass: typeof createClass & { write: typeof writeTsNodes } = Object.assign(createClass, {
|
|
132
|
-
write: writeTsNodes,
|
|
133
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { TsAccessModifier } from '../common.js';
|
|
4
|
-
import { writeTsNode } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import { writeTsParameters } from '../utils/write-ts-parameters.js';
|
|
6
|
-
import { tsDecorator } from './decorator.js';
|
|
7
|
-
import { TsParameter } from './parameter.js';
|
|
8
|
-
|
|
9
|
-
type Injects = 'modifiers';
|
|
10
|
-
|
|
11
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
12
|
-
typeof TsParameter<TBuilder, TInjects | Injects>,
|
|
13
|
-
{
|
|
14
|
-
accessModifier?: Nullable<TsAccessModifier>;
|
|
15
|
-
readonly?: Nullable<boolean>;
|
|
16
|
-
}
|
|
17
|
-
>;
|
|
18
|
-
|
|
19
|
-
export class TsConstructorParameter<TBuilder extends SourceBuilder, TInjects extends string = never>
|
|
20
|
-
extends TsParameter<
|
|
21
|
-
TBuilder,
|
|
22
|
-
TInjects | Injects
|
|
23
|
-
> {
|
|
24
|
-
public accessModifier: TsAccessModifier | null;
|
|
25
|
-
public readonly: boolean;
|
|
26
|
-
|
|
27
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
28
|
-
super(options);
|
|
29
|
-
this.accessModifier = options.accessModifier ?? null;
|
|
30
|
-
this.readonly = options.readonly ?? false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
protected override onWrite(builder: TBuilder): void {
|
|
34
|
-
builder.append(this.inject.beforeDecorators);
|
|
35
|
-
tsDecorator.write(builder, this.decorators);
|
|
36
|
-
builder.append(this.inject.afterDecorators);
|
|
37
|
-
|
|
38
|
-
builder.append(this.inject.beforeModifiers);
|
|
39
|
-
if (this.accessModifier) builder.append(this.accessModifier, ' ');
|
|
40
|
-
if (this.readonly) builder.append('readonly ');
|
|
41
|
-
builder.append(this.inject.afterModifiers);
|
|
42
|
-
|
|
43
|
-
builder.append(this.inject.beforeName, this.name, this.inject.afterName);
|
|
44
|
-
if (this.optional) builder.append('?');
|
|
45
|
-
|
|
46
|
-
if (this.type) {
|
|
47
|
-
builder.append(': ');
|
|
48
|
-
builder.append(this.inject.beforeType);
|
|
49
|
-
writeTsNode(builder, this.type);
|
|
50
|
-
builder.append(this.inject.afterType);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (this.default) {
|
|
54
|
-
builder.append(' = ');
|
|
55
|
-
builder.append(this.inject.beforeDefault);
|
|
56
|
-
writeTsNode(builder, this.default);
|
|
57
|
-
builder.append(this.inject.afterDefault);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const createConstructorParameter = <TBuilder extends SourceBuilder>(
|
|
63
|
-
name: Options<TBuilder>['name'],
|
|
64
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
|
|
65
|
-
): TsConstructorParameter<TBuilder> => new TsConstructorParameter<TBuilder>({ ...options, name });
|
|
66
|
-
|
|
67
|
-
export const tsConstructorParameter: typeof createConstructorParameter & { write: typeof writeTsParameters } = Object
|
|
68
|
-
.assign(createConstructorParameter, {
|
|
69
|
-
write: writeTsParameters,
|
|
70
|
-
});
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
3
|
-
type AstNodeOptions,
|
|
4
|
-
type BasicAppendValue,
|
|
5
|
-
notNullish,
|
|
6
|
-
type Nullable,
|
|
7
|
-
type SourceBuilder,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import { TsNode } from '../node.js';
|
|
11
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
12
|
-
import type { TsConstructorParameter } from './constructor-parameter.js';
|
|
13
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
14
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
15
|
-
import { tsParameter } from './parameter.js';
|
|
16
|
-
|
|
17
|
-
type Injects = 'params' | 'doc' | 'decorators' | 'body';
|
|
18
|
-
|
|
19
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
20
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
21
|
-
{
|
|
22
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
23
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
24
|
-
parameters?: Nullable<Nullable<TsConstructorParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
25
|
-
body?: Nullable<AppendValue<TBuilder>>;
|
|
26
|
-
}
|
|
27
|
-
>;
|
|
28
|
-
|
|
29
|
-
export class TsConstructor<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
30
|
-
TBuilder,
|
|
31
|
-
TInjects | Injects
|
|
32
|
-
> {
|
|
33
|
-
public doc: TsDoc<TBuilder> | null;
|
|
34
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
35
|
-
public parameters: (TsConstructorParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
36
|
-
public body: AppendValue<TBuilder> | null;
|
|
37
|
-
|
|
38
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
39
|
-
super(options);
|
|
40
|
-
this.doc = options.doc ?? null;
|
|
41
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
42
|
-
this.parameters = options.parameters?.filter(notNullish) ?? [];
|
|
43
|
-
this.body = options.body ?? null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected override onWrite(builder: TBuilder): void {
|
|
47
|
-
builder.append(this.inject.beforeDoc);
|
|
48
|
-
tsDoc.get(this.doc, { parameters: this.parameters })?.write(builder);
|
|
49
|
-
builder.append(this.inject.afterDoc);
|
|
50
|
-
|
|
51
|
-
builder.append(this.inject.beforeDecorators);
|
|
52
|
-
tsDecorator.write(builder, this.decorators, { multiline: true });
|
|
53
|
-
builder.append(this.inject.afterDecorators);
|
|
54
|
-
|
|
55
|
-
builder.append('constructor');
|
|
56
|
-
builder.append(this.inject.beforeParams);
|
|
57
|
-
tsParameter.write(builder, this.parameters);
|
|
58
|
-
builder.append(this.inject.afterParams);
|
|
59
|
-
builder.append(' ');
|
|
60
|
-
|
|
61
|
-
builder.append(this.inject.beforeBody);
|
|
62
|
-
builder.parenthesize('{}', this.body, { multiline: !!this.body });
|
|
63
|
-
builder.append(this.inject.afterBody);
|
|
64
|
-
|
|
65
|
-
builder.appendLine();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const createConstructor = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsConstructor<TBuilder> =>
|
|
70
|
-
new TsConstructor<TBuilder>(options ?? {});
|
|
71
|
-
|
|
72
|
-
export const tsConstructor: typeof createConstructor & { write: typeof writeTsNodes } = Object.assign(
|
|
73
|
-
createConstructor,
|
|
74
|
-
{
|
|
75
|
-
write: writeTsNodes,
|
|
76
|
-
},
|
|
77
|
-
);
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
3
|
-
type AstNodeOptions,
|
|
4
|
-
type BasicAppendValue,
|
|
5
|
-
notNullish,
|
|
6
|
-
type Nullable,
|
|
7
|
-
type Prettify,
|
|
8
|
-
type SingleOrMultiple,
|
|
9
|
-
type SourceBuilder,
|
|
10
|
-
toArray,
|
|
11
|
-
} from '@goast/core';
|
|
12
|
-
|
|
13
|
-
import { TsNode } from '../node.js';
|
|
14
|
-
import { writeTsNode } from '../utils/write-ts-nodes.js';
|
|
15
|
-
import { type TsArgument, tsArgument } from './argument.js';
|
|
16
|
-
import type { TsReference } from './reference.js';
|
|
17
|
-
import type { TsValue } from './types.js';
|
|
18
|
-
|
|
19
|
-
type Injects = 'function' | 'arguments';
|
|
20
|
-
|
|
21
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
22
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
23
|
-
{
|
|
24
|
-
function: TsReference<TBuilder> | BasicAppendValue<TBuilder>;
|
|
25
|
-
arguments?: Nullable<Nullable<TsArgument<TBuilder> | TsValue<TBuilder>>[]>;
|
|
26
|
-
}
|
|
27
|
-
>;
|
|
28
|
-
|
|
29
|
-
export class TsDecorator<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
30
|
-
TBuilder,
|
|
31
|
-
TInjects | Injects
|
|
32
|
-
> {
|
|
33
|
-
public function: TsReference<TBuilder> | BasicAppendValue<TBuilder>;
|
|
34
|
-
public arguments: (TsArgument<TBuilder> | TsValue<TBuilder>)[] | null;
|
|
35
|
-
|
|
36
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
37
|
-
super(options);
|
|
38
|
-
this.function = options.function;
|
|
39
|
-
this.arguments = options.arguments?.filter(notNullish) ?? null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
protected override onWrite(builder: TBuilder): void {
|
|
43
|
-
builder.append('@');
|
|
44
|
-
builder.append(this.inject.beforeFunction);
|
|
45
|
-
writeTsNode(builder, this.function);
|
|
46
|
-
builder.append(this.inject.afterFunction);
|
|
47
|
-
|
|
48
|
-
if (this.arguments) {
|
|
49
|
-
builder.append(this.inject.beforeArguments);
|
|
50
|
-
tsArgument.write(builder, this.arguments);
|
|
51
|
-
builder.append(this.inject.afterArguments);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const createDecorator = <TBuilder extends SourceBuilder>(
|
|
57
|
-
fn: Options<TBuilder>['function'],
|
|
58
|
-
args?: Options<TBuilder>['arguments'],
|
|
59
|
-
options?: Prettify<Omit<Options<TBuilder>, 'function' | 'arguments'>>,
|
|
60
|
-
): TsDecorator<TBuilder> => new TsDecorator<TBuilder>({ ...options, function: fn, arguments: args });
|
|
61
|
-
|
|
62
|
-
const writeDecorators = <TBuilder extends SourceBuilder>(
|
|
63
|
-
builder: TBuilder,
|
|
64
|
-
nodes: SingleOrMultiple<Nullable<TsDecorator<TBuilder> | AppendValue<TBuilder>>>,
|
|
65
|
-
options?: { multiline?: boolean },
|
|
66
|
-
): void => {
|
|
67
|
-
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
68
|
-
builder.forEach(filteredNodes, (b, d) => {
|
|
69
|
-
writeTsNode(b, d);
|
|
70
|
-
b.append(options?.multiline ? '\n' : ' ');
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export const tsDecorator: typeof createDecorator & { write: typeof writeDecorators } = Object.assign(createDecorator, {
|
|
75
|
-
write: writeDecorators,
|
|
76
|
-
});
|